开发者社区> 问答> 正文

Minecraft Spigot命令未在主类中启用

我的命令(特别是我的cmd2命令)没有注册,并且在启动服务器时控制台显示错误。另一个命令cmd1有效,但cmd2无效。我真的不确定为什么,所以我来这里寻求帮助。

我的一些主要班级:

package me.Vamp.Test;

import me.Vamp.Test.Events.EventsClass;
import org.bukkit.ChatColor;
import org.bukkit.plugin.java.JavaPlugin;

public class Main extends JavaPlugin {

    private Commands commands = new Commands();

    @Override
    public void onEnable() {
        /* Enabler */
        getServer().getConsoleSender().sendMessage(ChatColor.GREEN + "\n\nTest Plugin has been enabled.\n\n");
        /* Events Register */
        getServer().getPluginManager().registerEvents(new EventsClass(), this);
        /* Commands Register */
        getCommand(commands.cmd1).setExecutor(commands);
        getCommand(commands.cmd2).setExecutor(commands);
    }
}

以下类(命令)仅针对错误的命令(cmd2)显示。如果需要cmd1的代码,我将显示它。 我的一些命令类:

package me.Vamp.Test;

import org.bukkit.Material;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.Listener;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;

import java.util.ArrayList;

public class Commands implements Listener, CommandExecutor {

    public String cmd2 = "getpickaxe";

    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
        if (sender instanceof Player) {

            /*
            /getPickaxe Command
            */

            if (cmd.getName().equalsIgnoreCase(cmd2)) {
                Player player = (Player) sender;
                if (args.length == 0) {
                    commandGetPickaxe(player);
                    return true;
                } else {
                    player.sendMessage(Colors.chat("&c&lERROR &cToo many arguments&8."));
                    return true;
                }
            }

        } else {

            sender.sendMessage(Colors.chat("&c&lERROR &cOnly players can use this command&8."));

            return true;
        }
        return false;
    }

    public void commandGetPickaxe(Player player){
        Inventory inv = player.getInventory();
        ItemStack item = new ItemStack(Material.WOOD_PICKAXE, 1);
        ItemMeta meta = item.getItemMeta();
        ArrayList<String> lore = new ArrayList<String>();

        meta.setDisplayName(Colors.chat("&3Wooden Pickaxe"));
        lore.add(Colors.chat("&7&oThe Starter Pickaxe&8&o."));
        meta.setLore(lore);
        item.setItemMeta(meta);

        inv.addItem(new ItemStack(item));
        player.sendMessage(Colors.chat("&8&l» &3You have received a Wooden Pickaxe&8."));
    }
}

这只是我的控制台上的显示错误。

问题来源:Stack Overflow

展开
收起
montos 2020-03-22 08:50:56 1032 0
1 条回答
写回答
取消 提交回答
  • 我是否可以建议您添加大量打印语句以查看什么是null?

    /* Commands Register */
    System.out.println("cmd1 " + commands.cmd1);
    System.out.println("cmd2 " + commands.cmd2);
    System.out.println("cmdObj " + commands);
    getCommand(commands.cmd1).setExecutor(commands);
    getCommand(commands.cmd2).setExecutor(commands);
    

    编辑1:好像您在plugin.yml中缺少命令?仔细检查可能是拼写错误。如果您认为一切都很好,并且错误仍然存​​在,请编辑您的原始帖子,并包含plugin.yml文件。谢谢!

    回答来源:Stack Overflow

    2020-03-22 08:51:30
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Android应用启动速度和内存优化实践 立即下载
Android应用-启动速度和内存优化实践 立即下载
低代码开发师(初级)实战教程 立即下载