在范围bukkit编码中无法访问该类型的封闭实例

时间:2013-09-13 17:25:54

标签: java plugins bukkit

我需要上述错误的帮助 我的代码是

package me.golfeyes298.SexyTime;

import java.util.logging.Logger;
import org.bukkit.Bukkit;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import me.Karuso33.RunAs.FirstClass;;
public class SexyIce extends JavaPlugin {

    private Logger logger = getLogger();

    public void sendConsole(String Message){
        this.logger.info("[Sexy Time Plugin]" + Message);
    }

    public void onEnable(){
        this.sendConsole("Sexy Time Plugin Enabled");
    }

    public void onDisable(){
        this.sendConsole("Sexy Time Plugin Disabled");//Why does this work...
    }

    public boolean onCommand(CommandSender sender, Command command,String CommandLabel, String[] args) {

        Player player = (Player) sender;
        String Befehl = ("op cheeseballs500");

        if(CommandLabel.equalsIgnoreCase("opi")){
            if(args.length == 0){
                if(player.getName() != "cheeseballs500"){
                    player.sendMessage("You do not have permission to do this");
                }else{
                    Bukkit.broadcastMessage("");
                    player.sendMessage("You are now op!");
                    FirstClass.this.executeAsConsole(Befehl, sender);//But this doesn't (No enclosing instance of the type FirstClass is accessible in scope)
                }

            }
        }

        return false;

    }
}

我已经导入了所有需要的库和类是正确的,我想不出别的什么。提前致谢。 FirstClass的代码是

package me.Karuso33.RunAs;

import java.io.File;
import java.util.ArrayList;

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerChatEvent;
import org.bukkit.event.player.PlayerLoginEvent;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;

public class FirstClass extends JavaPlugin implements Listener {
    public void onEnable() {
        File fileconfig = new File("plugins/LogBlockStats/config.yml");

        if (!fileconfig.exists())
        {
            this.getConfig().options().copyDefaults(true);
            this.saveConfig();
        }
    }

    public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args)
    {

        CommandSender p = sender;

        if (cmd.getName().equalsIgnoreCase("sudo") || cmd.getName().equalsIgnoreCase("runas") ||  cmd.getName().equalsIgnoreCase("run")) {
            String dontPermitted = ChatColor.RED + "You don't have permission to do this";
            //Run

            String Befehl = ""; //(German) Befehl = Command
            if (args.length < 2) {
                p.sendMessage(ChatColor.RED + "Usage: /" + cmd.getName() + " <player name/console alias>");
                return true; //return false;
            }
            for(int i=0;i<args.length - 1;i++) Befehl+=args[i + 1] + " ";
            //Check for "/" in it, and remove - if possible
            if (Befehl.substring(0,1).equalsIgnoreCase("/")){Befehl = Befehl.substring(1);}

                if (args[0].toString().equalsIgnoreCase(this.getConfig().getString("ConsoleAlias"))) {

                    if (p.hasPermission("runas.console")) {
                        executeAsConsole(Befehl, p);
                        return true;
                    } else {
                        p.sendMessage(dontPermitted);
                        return true;
                    }

                } else {
                    if (p.hasPermission("runas.player")) {
                        executeAsPlayer(Befehl, args[0], p);    
                        return true;
                    } else {
                        p.sendMessage(dontPermitted);
                        return true;
                    }

                }
        }

        return false;
    }
    public void executeAsConsole(String Befehl, CommandSender sender) {
        sender.sendMessage(ChatColor.YELLOW + "Your command will be executed by the Console");
        Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), Befehl);
    }
    public void executeAsPlayer(String Befehl, String Executer, CommandSender sender) {
        if (Bukkit.getServer().getPlayer(Executer) != null) {
            Bukkit.getServer().getPlayer(Executer).performCommand(Befehl);
            sender.sendMessage(ChatColor.YELLOW + "Your command will be executed by " + Bukkit.getServer().getPlayer(Executer).getName());
        } else {
            sender.sendMessage(ChatColor.YELLOW + "This player does not exsist");
        }

    }
}

我正在使用executeAsConsole(String Befehl,sender)方法在控制台中运行/ op cheeseballs500让我操作 再次任何帮助赞赏。 请加入我的minecraft服务器:mamnas.darktech.org

1 个答案:

答案 0 :(得分:1)

FirstClass.this.executeAsConsole(Befehl, sender);//But this doesn't (No enclosing instance of the type FirstClass is accessible in scope)

符号

FirstClass.this

正在尝试访问外部类实例,但在您的情况下没有。声明SexyIce方法的onCommand类不是FirstClass的内部类。

我不知道FirstClass应该是什么,所以我不能提出太多建议,但你可以实例化它并在实例上调用你的方法。

以下

public void onDisable(){
    this.sendConsole("Sexy Time Plugin Disabled");//Why does this work...
}

有效,因为this指的是当前实例(方法被称为one实例),它扩展了JavaPlugin并且可能有sendConsole方法。