Java Bukkit正在创建一个自定义方法。问题
我正在尝试创建一种方法,使我可以更轻松地添加项目和创建库存。这是我的密码。 问题是,每当我右键单击我的glowstone dust时,它就会抛出一个eventexception错误,我不知道为什么。下面是它应该做的,只要有人右键点击萤光石灰尘,它就会打开一个名为“Gadgets”的绿色目录。库存中有一个名为“隐藏层”的项目 错误 GadgetCore.JavaJava Bukkit正在创建一个自定义方法。问题,java,minecraft,bukkit,Java,Minecraft,Bukkit,我正在尝试创建一种方法,使我可以更轻松地添加项目和创建库存。这是我的密码。 问题是,每当我右键单击我的glowstone dust时,它就会抛出一个eventexception错误,我不知道为什么。下面是它应该做的,只要有人右键点击萤光石灰尘,它就会打开一个名为“Gadgets”的绿色目录。库存中有一个名为“隐藏层”的项目 错误 GadgetCore.Java private Core Plugin; public GadgetCore(Core p){ this.Plugin = p; }
private Core Plugin;
public GadgetCore(Core p){ this.Plugin = p; }
//Inventories
public Inventory GadgetMenu;
// Simple Inventory Creation
public Inventory KInventoryCreate( int slots, String invname ) throws IOException {
return Bukkit.createInventory(null, slots, invname);
}
// Simple Gadget Creation
public void AddGadget(Player player,int position ,String permission, ItemStack item, String GadgetItemName, String lore) throws IOException {
GadgetMenu = KInventoryCreate(10, ChatColor.GREEN + "Gadgets");
if ( !player.hasPermission(permission) ) {
player.sendMessage( ChatColor.RED + GadgetItemName.toUpperCase() + ChatColor.YELLOW + " can only be used by specific Ranks");
return;
}
GadgetMenu.setItem(position, Plugin.applyLore(item, GadgetItemName, lore));
}
@EventHandler
public void Interact(PlayerInteractEvent e) throws IOException{
Player p = e.getPlayer();
ItemStack item = p.getItemInHand();
if ( e.getAction().equals(Action.RIGHT_CLICK_AIR) || e.getAction().equals(Action.RIGHT_CLICK_BLOCK) ) {
if ( item.getType().equals(Material.GLOWSTONE_DUST)) {
e.setCancelled(true);
AddGadget(p, 3, "gadget.hide", new ItemStack(Material.GLOWSTONE_DUST), "HidePlayers", ChatColor.GRAY + "d");
p.openInventory(GadgetMenu);
p.sendMessage("Debug");
}
}
}
@EventHandler
public void Debug(PlayerInteractEvent e) throws IOException{
Player p = e.getPlayer();
ItemStack item = p.getItemInHand();
if ( e.getAction().equals(Action.RIGHT_CLICK_AIR) || e.getAction().equals(Action.RIGHT_CLICK_BLOCK) ) {
if ( item.getType().equals(Material.REDSTONE) ) {
e.setCancelled(true);
p.openInventory(GadgetMenu);
p.sendMessage("Debug");
}
}
}
Java
public class Core extends JavaPlugin implements Listener {
public Core plugin;
public GadgetCore gc;
public ItemStack applyLore(ItemStack stack, String name, String lore1){
ItemMeta meta = stack.getItemMeta();
meta.setDisplayName(name);
ArrayList<String> lore = new ArrayList<String>();
lore.add(lore1);
meta.setLore(lore);
stack.setItemMeta(meta);
return stack;
}
public void onEnable(){
Bukkit.getConsoleSender().sendMessage(ChatColor.YELLOW + "[KnoxHub] created by 2hash");
// Bukkit.getPluginManager().registerEvents(new );
getServer().getPluginManager().registerEvents(new GadgetCore(this), this);
}
}
public类核心扩展JavaPlugin实现监听器{
公共核心插件;
公共核心gc;
public ItemStack applyLore(ItemStack堆栈,字符串名称,字符串1){
ItemMeta=stack.getItemMeta();
meta.setDisplayName(名称);
ArrayList lore=新的ArrayList();
知识添加(知识1);
梅塔·塞洛尔(lore);
stack.setItemMeta(meta);
返回栈;
}
public void onEnable(){
Bukkit.getConsoleSender().sendMessage(ChatColor.YELLOW+“[KnoxHub]由2hash创建”);
//Bukkit.getPluginManager().registerEvents(新);
getServer().getPluginManager().registerEvents(新的GadgetCore(这个),这个);
}
}
在堆栈跟踪中:
原因:java.lang.IllegalArgumentException:箱子的大小必须为
9的倍数代码>
他们是你的朋友!如果您想了解如何理解错误消息并自行调试,请阅读以下内容:
不过,为了解决您的具体问题,您可能只需将AddGadget
方法这一行中的10
更改为9
或数字的另一个倍数,因为库存总是有九列,因此创建一个大小为9的库存将使一行有9列,如果有18个插槽,它将是9x2,27将是9x3,依此类推
GadgetMenu=KInventoryCreate(10,ChatColor.GREEN+“Gadgets”)代码>
不过更好的是,只需修改您的KInventoryCreate
方法并返回类似以下内容Bukkit.createInventory(null,9*rows,invname)代码>而不是原始插槽号,这样您就不会再次犯同样的错误 非常感谢你。我似乎总是一次又一次地犯同样的错误,9*行刚刚解决了这个问题!
public class Core extends JavaPlugin implements Listener {
public Core plugin;
public GadgetCore gc;
public ItemStack applyLore(ItemStack stack, String name, String lore1){
ItemMeta meta = stack.getItemMeta();
meta.setDisplayName(name);
ArrayList<String> lore = new ArrayList<String>();
lore.add(lore1);
meta.setLore(lore);
stack.setItemMeta(meta);
return stack;
}
public void onEnable(){
Bukkit.getConsoleSender().sendMessage(ChatColor.YELLOW + "[KnoxHub] created by 2hash");
// Bukkit.getPluginManager().registerEvents(new );
getServer().getPluginManager().registerEvents(new GadgetCore(this), this);
}
}