gpt4 book ai didi

java - Minecraft - 漂浮元素消失了这个代码?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:21:08 24 4
gpt4 key购买 nike

使用这个小插件,存储在数组列表“FLOATING”中的项目不应消失,但它们仍然会消失?

我试过同时使用 ItemDespawnEvent 和 EntityDeathEvent,但都不起作用

    public void itemVanish2(ItemDespawnEvent e) {
if(e.getEntity().getType() == EntityType.DROPPED_ITEM) {
ItemStack i = (ItemStack) e.getEntity();

if(i.getItemMeta().getLore().contains("FLOATING"))
e.getEntity().getWorld().dropItem(e.getEntity().getLocation(), i);
} else {
return;
}
}
    public void itemVanish(EntityDeathEvent e) {
if (e.getEntity().getType() == EntityType.DROPPED_ITEM) {
ItemStack i = (ItemStack) e.getEntity();

if (i.getItemMeta().getLore().contains("FLOATING"))
e.getEntity().getWorld().dropItem(e.getEntity().getLocation(), i);

} else {
return;
}
}

我正在寻找不会消失的元素,但在控制台中它抛出一个错误,然后元素消失了。

这是它抛出的错误:

[06:49:03] [Server thread/ERROR]: Could not pass event ItemDespawnEvent to FloatingShopItems v1.0.0
org.bukkit.event.EventException: null
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:320) ~[spigot-1.14.2.jar:git-Spigot-093165d-ba575a5]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[spigot-1.14.2.jar:git-Spigot-093165d-ba575a5]
at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:520) ~[spigot-1.14.2.jar:git-Spigot-093165d-ba575a5]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:505) ~[spigot-1.14.2.jar:git-Spigot-093165d-ba575a5]
at org.bukkit.craftbukkit.v1_14_R1.event.CraftEventFactory.callItemDespawnEvent(CraftEventFactory.java:621) ~[spigot-1.14.2.jar:git-Spigot-093165d-ba575a5]
at net.minecraft.server.v1_14_R1.EntityItem.tick(EntityItem.java:129) ~[spigot-1.14.2.jar:git-Spigot-093165d-ba575a5]
at net.minecraft.server.v1_14_R1.WorldServer.entityJoinedWorld(WorldServer.java:570) ~[spigot-1.14.2.jar:git-Spigot-093165d-ba575a5]
at net.minecraft.server.v1_14_R1.World.a(World.java:745) [spigot-1.14.2.jar:git-Spigot-093165d-ba575a5]
at net.minecraft.server.v1_14_R1.WorldServer.doTick(WorldServer.java:346) [spigot-1.14.2.jar:git-Spigot-093165d-ba575a5]
at net.minecraft.server.v1_14_R1.MinecraftServer.b(MinecraftServer.java:1057) [spigot-1.14.2.jar:git-Spigot-093165d-ba575a5]
at net.minecraft.server.v1_14_R1.DedicatedServer.b(DedicatedServer.java:396) [spigot-1.14.2.jar:git-Spigot-093165d-ba575a5]
at net.minecraft.server.v1_14_R1.MinecraftServer.a(MinecraftServer.java:956) [spigot-1.14.2.jar:git-Spigot-093165d-ba575a5]
at net.minecraft.server.v1_14_R1.MinecraftServer.run(MinecraftServer.java:801) [spigot-1.14.2.jar:git-Spigot-093165d-ba575a5]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_212]
Caused by: java.lang.ClassCastException: org.bukkit.craftbukkit.v1_14_R1.entity.CraftItem cannot be cast to org.bukkit.inventory.ItemStack
at mad.madster.floatingitems.FloatingItems.itemVanish2(FloatingItems.java:138) ~[?:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_212]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_212]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_212]
at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_212]
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:316) ~[spigot-1.14.2.jar:git-Spigot-093165d-ba575a5]

最佳答案

event.getEntity() 返回一个 Item(实体)而不是 ItemStack。它们是有区别的。 Item 是掉落物本身,您会看到它漂浮在周围,一个 Item 有一个 ItemStack。 ItemStack 是您库存中的元素,它包含诸如元素类型和数量等数据。

这就是您遇到 ClassCastException 的原因,您根本不必转换实体,它是一个具有方法 getItemStack() 的项目可用于检索“真实”项目。

如果您只想禁用消失,请不要丢弃新元素,那样只会需要更多资源并可能导致重复。 Bukkit 的事件结构允许您禁用大部分事件,包括 ItemDespawnEvent,这意味着您可以阻止它消失。

生成的代码应该是这样的:

@EventHandler
public void itemVanish2(ItemDespawnEvent e) {
ItemStack i = e.getEntity().getItemStack();

if(i.getItemMeta().getLore().contains("FLOATING"))
event.setCancelled(true); // cancel the event, so item does not despawn
}
}

请注意,检查一个项目的知识可能不是识别它的最佳解决方案。如果 itemStack 没有 itemMeta 或 lore 怎么办?如果用户可以编辑知识怎么办?这将使他们能够制作不可消除的元素,这是解决问题的简单途径。我建议改用元数据,这样只有你的插件才能制作这些项目

关于java - Minecraft - 漂浮元素消失了这个代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56521805/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com