我的 Minecraft 插件中的 ID 有问题

发布时间:2021-03-08 15:40

我想创建一个随机化插件。我需要我改组后的 ArrayList 的 ID。问题是,无论出于何种原因,我都无法获得块的 ID。

错误信息:

<块引用>

无法将事件 BlockBreakEvent 传递给 MyPlugin org.bukkit.event.EventException: null at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:319) ~[spigot-1.16.2.jar:git-Spigot-379750e-43c7ff9] at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[spigot-1.16.2.jar:git-Spigot-379750e-43c7ff9] at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:589) ~[spigot-1.16.2.jar:git-Spigot-379750e-43c7ff9] at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:576) ~[spigot-1.16.2.jar:git-Spigot-379750e-43c7ff9] at net.minecraft.server.v1_16_R2.PlayerInteractManager.breakBlock(PlayerInteractManager.java:309) ~[spigot-1.16.2.jar:git-Spigot-379750e-43c7ff9] at net.minecraft.server.v1_16_R2.PlayerInteractManager.a(PlayerInteractManager.java:268) ~[spigot-1.16.2.jar:git-Spigot-379750e-43c7ff9] at net.minecraft.server.v1_16_R2.PlayerInteractManager.a(PlayerInteractManager.java:213) ~[spigot-1.16.2.jar:git-Spigot-379750e-43c7ff9] at net.minecraft.server.v1_16_R2.PlayerConnection.a(PlayerConnection.java:1219) ~[spigot-1.16.2.jar:git-Spigot-379750e-43c7ff9] at net.minecraft.server.v1_16_R2.PacketPlayInBlockDig.a(SourceFile:40) ~[spigot-1.16.2.jar:git-Spigot-379750e-43c7ff9] at net.minecraft.server.v1_16_R2.PacketPlayInBlockDig.a(SourceFile:10) ~[spigot-1.16.2.jar:git-Spigot-379750e-43c7ff9] at net.minecraft.server.v1_16_R2.PlayerConnectionUtils.lambda$0(PlayerConnectionUtils.java:19) ~[spigot-1.16.2.jar:git-Spigot-379750e-43c7ff9] at net.minecraft.server.v1_16_R2.TickTask.run(SourceFile:18) ~[spigot-1.16.2.jar:git-Spigot-379750e-43c7ff9] at net.minecraft.server.v1_16_R2.IAsyncTaskHandler.executeTask(SourceFile:144) ~[spigot-1.16.2.jar:git-Spigot-379750e-43c7ff9] at net.minecraft.server.v1_16_R2.IAsyncTaskHandlerReentrant.executeTask(SourceFile:23) ~[spigot-1.16.2.jar:git-Spigot-379750e-43c7ff9] at net.minecraft.server.v1_16_R2.IAsyncTaskHandler.executeNext(SourceFile:118) ~[spigot-1.16.2.jar:git-Spigot-379750e-43c7ff9] at net.minecraft.server.v1_16_R2.MinecraftServer.ba(MinecraftServer.java:941) ~[spigot-1.16.2.jar:git-Spigot-379750e-43c7ff9] at net.minecraft.server.v1_16_R2.MinecraftServer.executeNext(MinecraftServer.java:934) ~[spigot-1.16.2.jar:git-Spigot-379750e-43c7ff9] at net.minecraft.server.v1_16_R2.IAsyncTaskHandler.awaitTasks(SourceFile:127) ~[spigot-1.16.2.jar:git-Spigot-379750e-43c7ff9] at net.minecraft.server.v1_16_R2.MinecraftServer.sleepForTick(MinecraftServer.java:918) ~[spigot-1.16.2.jar:git-Spigot-379750e-43c7ff9] at net.minecraft.server.v1_16_R2.MinecraftServer.w(MinecraftServer.java:850) ~[spigot-1.16.2.jar:git-Spigot-379750e-43c7ff9] at net.minecraft.server.v1_16_R2.MinecraftServer.lambda$0(MinecraftServer.java:164) ~[spigot-1.16.2.jar:git-Spigot-379750e-43c7ff9] at java.lang.Thread.run(Unknown Source) [?:1.8.0_271] 引起: java.lang.IllegalArgumentException:无法获取现代材料的 ID 在 org.apache.commons.lang.Validate.isTrue(Validate.java:136) ~[spigot-1.16.2.jar:git-Spigot-379750e-43c7ff9] at org.bukkit.Material.getId(Material.java:3576) ~[spigot-1.16.2.jar:git-Spigot-379750e-43c7ff9] at en.me.myplugin.listeners.Listeners.onBlockBreakEvent(Listeners.java:100) ~[?:?] 在 sun.reflect.GeneratedMethodAccessor216.invoke(Unknown 来源)~[?:?] 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(来源不明) ~[?:1.8.0_271] 在 java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_271] 在 org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:315) ~[spigot-1.16.2.jar:git-Spigot-379750e-43c7ff9] ... 21 更多

代码:

event.getBlock().getWorld().dropItemNaturally(event.getBlock().getLocation(), new ItemStack(randomizer.randomize.get(event.getBlock().getType().getId())));

getId() 已弃用。

回答1

我会评论,但因为我不能:

只需阅读错误,它们就很简单。此外,您或许应该将其发布在 spigot 论坛之类的内容上,而不是在这里发布。同样仅仅因为它被弃用并不意味着它不会工作。

此外,您还应该向我们展示您的 randomizer.randomize 类/数组/列表。