Java 主类中未启用Minecraft插口命令
我的命令(特别是只有我的cmd2命令)未注册,当我启动服务器时,控制台显示错误。另一个命令cmd1起作用,但cmd2不起作用。我真的不知道为什么,所以我来这里寻求帮助 我的一些主课:Java 主类中未启用Minecraft插口命令,java,bukkit,Java,Bukkit,我的命令(特别是只有我的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 exten
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);
}
}
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."));
}
}
以下类(命令)仅针对出错的命令(cmd2)显示。如果需要cmd1的代码,我将显示它。
我的一些命令类:
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);
}
}
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."));
}
}
package me.Vamp.Test;
导入org.bukkit.Material;
导入org.bukkit.command.command;
导入org.bukkit.command.CommandExecutor;
导入org.bukkit.command.CommandSender;
导入org.bukkit.entity.Player;
导入org.bukkit.event.Listener;
导入org.bukkit.inventory.inventory;
导入org.bukkit.inventory.ItemStack;
导入org.bukkit.inventory.meta.ItemMeta;
导入java.util.ArrayList;
公共类命令实现侦听器、命令执行器{
公共字符串cmd2=“getpickaxe”;
@凌驾
公共布尔onCommand(CommandSender、Command cmd、字符串标签、字符串[]args){
if(播放机的发送方实例){
/*
/getPickaxe命令
*/
if(cmd.getName().equalsIgnoreCase(cmd2)){
玩家=(玩家)发送者;
如果(args.length==0){
命令鹤嘴锄(玩家);
返回true;
}否则{
player.sendMessage(Colors.chat(&c&lERROR&cToo-many-arguments&8.);
返回true;
}
}
}否则{
sender.sendMessage(Colors.chat(&c&lERROR&cOnly玩家可以使用这个命令&8”);
返回true;
}
返回false;
}
公共无效命令鹤嘴锄(玩家){
Inventory=player.getInventory();
ItemStack item=新ItemStack(Material.WOOD\u鹤嘴锄,1);
ItemMeta=item.getItemMeta();
ArrayList lore=新的ArrayList();
meta.setDisplayName(Colors.chat(&3woody pickex));
lore.add(Colors.chat(&7&other启动镐&8&o.));
梅塔·塞洛尔(lore);
item.setItemMeta(meta);
存货附加项(新项目堆栈(项目));
player.sendMessage(Colors.chat(&8&l»&3您收到了一把木制鹤嘴锄&8.);
}
}
这只是我的控制台上的显示错误
我的控制台:
我可以建议您添加大量打印语句以查看什么是空的吗
/* 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文件。谢谢 这回答了你的问题吗?对不起,但这与Bukkit或Minecraft无关。我敢肯定,这个错误与Bukkit代码有关。给你:[11:55:13信息]:cmd1 testplugin[11:55:13信息]:cmd2 getpickaxe[11:55:13信息]:cmdObj me.Vamp.Test。Commands@58d58c1c[11:55:13错误]:(与以前完全相同的错误)另外,命令1(cmd1)可以工作,它只是命令2(cmd2)尝试执行时出现问题。顺便说一句,我已成功复制了你的错误,现在让我找到一个修复@VampI认为我找到了答案,让我检查一下,我将在2秒钟内更新帖子:)谢谢回答我的问题!我完全忘了把它添加到plugin.yml中,所以谢谢你提醒我!:)