代码:
public static AnvilInventory createAnvilInventory(InventoryHolder invd) {
AnvilInventory inv = (AnvilInventory) Bukkit.createInventory(invd, InventoryType.ANVIL);
inv.setItem(0, APILibrary.getTargetItem(4));
inv.setItem(2, APILibrary.getTargetItem(5));
return inv;
}
错误:
java.lang.ClassCastException: class org.bukkit.craftbukkit.v1_18_R2.inventory.CraftInventoryCustom cannot be cast to class org.bukkit.inventory.AnvilInventory (org.bukkit.craftbukkit.v1_18_R2.inventory.CraftInventoryCustom and org.bukkit.inventory.AnvilInventory are in unnamed module of loader java.net.URLClassLoader @5eb5c224)
at com.sixfivetwo.sftfinance.APILibrary.createAnvilInventory(APILibrary.java:235) ~[SFTFinance-Release1.6.1-jar-with-dependencies.jar:?]
at com.sixfivetwo.sftfinance.SFTCommand.lambda$onCommand$0(SFTCommand.java:134) ~[SFTFinance-Release1.6.1-jar-with-dependencies.jar:?]
at org.bukkit.craftbukkit.v1_18_R2.scheduler.CraftTask.run(CraftTask.java:101) ~[purpur-1.18.2.jar:git-Purpur-1612]
at org.bukkit.craftbukkit.v1_18_R2.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:483) ~[purpur-1.18.2.jar:git-Purpur-1612]
at net.minecraft.server.MinecraftServer.tickChildren(MinecraftServer.java:1558) ~[purpur-1.18.2.jar:git-Purpur-1612]
at net.minecraft.server.dedicated.DedicatedServer.tickChildren(DedicatedServer.java:522) ~[purpur-1.18.2.jar:git-Purpur-1612]
at net.minecraft.server.MinecraftServer.tickServer(MinecraftServer.java:1482) ~[purpur-1.18.2.jar:git-Purpur-1612]
at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1246) ~[purpur-1.18.2.jar:git-Purpur-1612]
at net.minecraft.server.MinecraftServer.lambda$spin$1(MinecraftServer.java:320) ~[purpur-1.18.2.jar:git-Purpur-1612]
public static AnvilInventory createAnvilInventory(InventoryHolder invd) {
AnvilInventory inv = (AnvilInventory) Bukkit.createInventory(invd, InventoryType.ANVIL);
inv.setItem(0, APILibrary.getTargetItem(4));
inv.setItem(2, APILibrary.getTargetItem(5));
return inv;
}
错误:
java.lang.ClassCastException: class org.bukkit.craftbukkit.v1_18_R2.inventory.CraftInventoryCustom cannot be cast to class org.bukkit.inventory.AnvilInventory (org.bukkit.craftbukkit.v1_18_R2.inventory.CraftInventoryCustom and org.bukkit.inventory.AnvilInventory are in unnamed module of loader java.net.URLClassLoader @5eb5c224)
at com.sixfivetwo.sftfinance.APILibrary.createAnvilInventory(APILibrary.java:235) ~[SFTFinance-Release1.6.1-jar-with-dependencies.jar:?]
at com.sixfivetwo.sftfinance.SFTCommand.lambda$onCommand$0(SFTCommand.java:134) ~[SFTFinance-Release1.6.1-jar-with-dependencies.jar:?]
at org.bukkit.craftbukkit.v1_18_R2.scheduler.CraftTask.run(CraftTask.java:101) ~[purpur-1.18.2.jar:git-Purpur-1612]
at org.bukkit.craftbukkit.v1_18_R2.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:483) ~[purpur-1.18.2.jar:git-Purpur-1612]
at net.minecraft.server.MinecraftServer.tickChildren(MinecraftServer.java:1558) ~[purpur-1.18.2.jar:git-Purpur-1612]
at net.minecraft.server.dedicated.DedicatedServer.tickChildren(DedicatedServer.java:522) ~[purpur-1.18.2.jar:git-Purpur-1612]
at net.minecraft.server.MinecraftServer.tickServer(MinecraftServer.java:1482) ~[purpur-1.18.2.jar:git-Purpur-1612]
at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1246) ~[purpur-1.18.2.jar:git-Purpur-1612]
at net.minecraft.server.MinecraftServer.lambda$spin$1(MinecraftServer.java:320) ~[purpur-1.18.2.jar:git-Purpur-1612]
因为得用nms ,如果你只是设置物品,可以不用转为AnvilInventory
要用其他AnvilInventory 的方法的话建议用这个库或者提取它的代码:https://github.com/WesJD/AnvilGUI
要用其他AnvilInventory 的方法的话建议用这个库或者提取它的代码:https://github.com/WesJD/AnvilGUI
结冰的离季 发表于 2022-5-4 11:13
因为得用nms ,如果你只是设置物品,可以不用转为AnvilInventory
要用其他AnvilInventory 的方法的话建议用 ...
哦哦哦谢谢. 如果不用 AnvilInventory 的话
我该怎么获取目标玩家打开铁砧往那个命名框里面输入的东西
在 AnvilInventory 里面是有 getRenameText 方法的
Minecraft_652 发表于 2022-5-4 11:40
哦哦哦谢谢. 如果不用 AnvilInventory 的话
我该怎么获取目标玩家打开铁砧往那个命名框里面输入的东西
在 ...
用API的onComplete(BiFunction<Player, String, AnvilGUI.Response>)方法
结冰的离季 发表于 2022-5-4 12:01
用API的onComplete(BiFunction)方法
等等. 我不太清楚这个API该怎么用
我想做到的仅仅是打开一个 铁砧GUI 并且放进去物品 这个已经没问题了
我现在监听这个物品有没有被点击, 被点击了就获取那个铁砧框里的字符串
但是AnvilInventory不能被Cast, 问题出在这里
我不知道这个API该怎么实现它
Minecraft_652 发表于 2022-5-4 11:40
哦哦哦谢谢. 如果不用 AnvilInventory 的话
我该怎么获取目标玩家打开铁砧往那个命名框里面输入的东西
在 ...
用event不更好吗
Minecraft_652 发表于 2022-5-4 13:03
等等. 我不太清楚这个API该怎么用
我想做到的仅仅是打开一个 铁砧GUI 并且放进去物品 这个已经没问题了
...
原版的铁砧可以,但是你自己创建的铁砧无法得到,只能通过nms,nms的代码都在 我发的github API里