当前位置: 首页 > 知识库问答 >
问题:

我的minecraft插件有一个错误,我甚至不知道这是什么意思

陈富
2023-03-14

这是我的插件,但错误似乎在“this.plugin=plugin;”我不知道这是什么意思,但它说“对变量插件的赋值没有影响”请告诉我,如果你明白这是什么意思

package me.amxyargaming.helloworld.command;

import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;

import me.amxyargaming.helloworld.Main;

public class HelloCommand implements CommandExecutor {

    private Main plugin;
    
    public HelloCommand(Main Plugin){
        this.plugin = plugin;
        plugin.getCommand("hello").setExecutor(this);
    }
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
    if (!(sender instanceof Player)) {
            sender.sendMessage("Only players may execute this command");
            return true;
        
        }
    
        Player p = (Player) sender;
        
        if (p.hasPermission("hello.use")) {
            p.sendMessage("hi!!");
            return true;
        } else{
            p.sendMessage("You do not have permission to execute this command");
            
        }
        return false;
    }
}

共有1个答案

岳俊晖
2023-03-14

Java是区分大小写的。

您的参数称为plugin;因此,在this.plugin=plugin;的RHS上的“plugin”不是指参数,而是指字段plugin,您在LHS上也将其称为this.plugin

您的代码与以下代码相同:

plugin = plugin;
// or
this.plugin = this.plugin;
this.plugin = Plugin;
public HelloCommand(Main plugin){
    this.plugin = plugin;
    // ...
}

你其实并不需要这个领域。如果您所做的只是设置一个“东西”来执行给定的命令,那么您可以简单地执行:

HelloCommand hc = new HelloCommand(); // No parameters required.
plugin.getCommand("hello").setExecutor(hc);
 类似资料: