itemstack提供nullpointerexception

jutyujz0  于 2021-06-30  发布在  Java
关注(0)|答案(0)|浏览(259)

所以,我在一个类中有一个定制的库存生成器,它构建了一个库存的基本模板并存储起来供以后使用。要做到这一点,建设者首先创建库存,然后用玻璃窗格填充它。然后创建两个自定义项,一个确认和一个取消按钮(具体块),并将它们添加到特定插槽中的库存中。
但是,当我尝试创建任何自定义按钮以添加到资源清册时,它会返回以下错误:

[16:31:29] [Server thread/ERROR]: Could not pass event PlayerInteractEvent to GameHandler v1.0-SNAPSHOT
org.bukkit.event.EventException: null
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:319) ~[spigot-1.16.2.jar:git-Spigot-379750e-9a9c223]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[spigot-1.16.2.jar:git-Spigot-379750e-9a9c223]
at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:589) ~[spigot-1.16.2.jar:git-Spigot-379750e-9a9c223]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:576) ~[spigot-1.16.2.jar:git-Spigot-379750e-9a9c223]
at org.bukkit.craftbukkit.v1_16_R2.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:482) ~[spigot-1.16.2.jar:git-Spigot-379750e-9a9c223]
at net.minecraft.server.v1_16_R2.PlayerInteractManager.a(PlayerInteractManager.java:444) ~[spigot-1.16.2.jar:git-Spigot-379750e-9a9c223]
at net.minecraft.server.v1_16_R2.PlayerConnection.a(PlayerConnection.java:1278) ~[spigot-1.16.2.jar:git-Spigot-379750e-9a9c223]
at net.minecraft.server.v1_16_R2.PacketPlayInUseItem.a(PacketPlayInUseItem.java:27) ~[spigot-1.16.2.jar:git-Spigot-379750e-9a9c223]
at net.minecraft.server.v1_16_R2.PacketPlayInUseItem.a(PacketPlayInUseItem.java:1) ~[spigot-1.16.2.jar:git-Spigot-379750e-9a9c223]
at net.minecraft.server.v1_16_R2.PlayerConnectionUtils.lambda$0(PlayerConnectionUtils.java:19) ~[spigot-1.16.2.jar:git-Spigot-379750e-9a9c223]
at net.minecraft.server.v1_16_R2.TickTask.run(SourceFile:18) ~[spigot-1.16.2.jar:git-Spigot-379750e-9a9c223]
at net.minecraft.server.v1_16_R2.IAsyncTaskHandler.executeTask(SourceFile:144) ~[spigot-1.16.2.jar:git-Spigot-379750e-9a9c223]
at net.minecraft.server.v1_16_R2.IAsyncTaskHandlerReentrant.executeTask(SourceFile:23) ~[spigot-1.16.2.jar:git-Spigot-379750e-9a9c223]
at net.minecraft.server.v1_16_R2.IAsyncTaskHandler.executeNext(SourceFile:118) ~[spigot-1.16.2.jar:git-Spigot-379750e-9a9c223]
at net.minecraft.server.v1_16_R2.MinecraftServer.ba(MinecraftServer.java:941) ~[spigot-1.16.2.jar:git-Spigot-379750e-9a9c223]
at net.minecraft.server.v1_16_R2.MinecraftServer.executeNext(MinecraftServer.java:934) ~[spigot-1.16.2.jar:git-Spigot-379750e-9a9c223]
at net.minecraft.server.v1_16_R2.IAsyncTaskHandler.awaitTasks(SourceFile:127) ~[spigot-1.16.2.jar:git-Spigot-379750e-9a9c223]
at net.minecraft.server.v1_16_R2.MinecraftServer.sleepForTick(MinecraftServer.java:918) ~[spigot-1.16.2.jar:git-Spigot-379750e-9a9c223]
at net.minecraft.server.v1_16_R2.MinecraftServer.w(MinecraftServer.java:850) ~[spigot-1.16.2.jar:git-Spigot-379750e-9a9c223]
at net.minecraft.server.v1_16_R2.MinecraftServer.lambda$0(MinecraftServer.java:164) ~[spigot-1.16.2.jar:git-Spigot-379750e-9a9c223]
at java.lang.Thread.run(Thread.java:834) [?:?]
Caused by: java.lang.NullPointerException
at io.github.gamehandler.catapults.CatapultCreator.newInventory(CatapultCreator.java:49) ~[?:?]
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
at io.github.gamehandler.events.WorldEvents.onPlayerInteract(WorldEvents.java:64) ~[?:?]
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:315) ~[spigot-1.16.2.jar:git-Spigot-379750e-9a9c223]
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
... 20 more

这两项都会发生错误。下面是两段代码:
库存生成器

public HashMap<String, Object> newInventory(UUID id) {
    if (id != null) {
        if (!storage.containsKey(id)) {
            HashMap<String, Object> tempMap = new HashMap<>();
            storage.put(id, tempMap);
        }

        // Create new inventory
        Inventory inv = Bukkit.createInventory(null, 45, "Catapult Creation Confirmation");
        // Add default items
        ItemStack grayGlassPane = new ItemStack(Material.GRAY_STAINED_GLASS_PANE, 1);
        for (int i = 0; i < inv.getSize(); i++) {
            inv.setItem(i, grayGlassPane);
        }
        // Create custom items and add to inventory
        List<String> confirmLore = new ArrayList<>();
        confirmLore.add("&7Confirms and &acreates &7a new &acatapult &7object to use");
        confirmLore.add("&7every time the map is &aloaded.");
        ItemStack confirm = customItems.createCustomItem(Material.LIME_CONCRETE, 1, "&a&lConfirm", confirmLore, false);
        inv.setItem(15, confirm);
        List<String> cancelLore = new ArrayList<>();
        cancelLore.add("&cCancels &7the creation of a new &ccatapult.");
        ItemStack cancel = customItems.createCustomItem(Material.RED_CONCRETE, 1, "&c&lCancel", cancelLore, false);
        inv.setItem(24, cancel);

        // Store new inventory
        storage.get(id).put("inventory", inv);

        // Return new data
        return storage.get(id);
    } else {
        return null;
    }
}

项目生成器

public class CustomItems {

    public ItemStack createCustomItem(Material type, int amount, String name, List<String> lore, Boolean enchanted) {
        ItemStack item = new ItemStack(type, amount);
        ItemMeta meta = item.getItemMeta();
        meta.setDisplayName(ChatColor.translateAlternateColorCodes('&', name));
        meta.setLore(this.colorItemLore(lore));

        if (enchanted == true) {
            item.addUnsafeEnchantment(Enchantment.PROTECTION_ENVIRONMENTAL, 1);
            meta.addItemFlags(ItemFlag.HIDE_ENCHANTS);
        }
        item.setItemMeta(meta);

        return item;
    }

    private List<String> colorItemLore(List<String> lore) {
        List<String> newLore = new ArrayList<>();
        for (String loreLine : lore) {
            newLore.add(ChatColor.translateAlternateColorCodes('&', loreLine));
        }

        return newLore;
    }
}

项生成器在任何其他情况下都可以很好地工作,并且可以创建自定义项。
如有任何帮助,我们将不胜感激,请提前感谢!

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题