我试图保存一个宝箱
,所以我有一个BlockState
和一个Inventory
。 BlockState
没有问题,但在 Inventory
中,他总是保存 0
作为 ItemStack
的数量。
if (BlockState instanceof Chest) {
Chest chest = (Chest) bs;
Inventory inv = chest.getBlockInventory();
System.out.println(inv.getItem(0).getAmount());
}
在控制台中,会打印 0
,当 Chest
如下所示时也是如此:
编辑: 现在我有这个:
BlockState nbs = bs.getBlock().getState();
System.out.println(((Chest) nbs).getBlockInventory().getItem(0).getAmount());
但现在我收到此错误:
[21:16:25 ERROR]: null
org.bukkit.command.CommandException: Unhandled exception executing command 'set' in plugin GlobalSystem vAlpha_0.0.1
at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[spigot.jar:git-Spigot-db6de12-07c3001]
at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) ~[spigot.jar:git-Spigot-db6de12-07c3001]
at org.bukkit.craftbukkit.v1_8_R3.CraftServer.dispatchCommand(CraftServer.java:641) ~[spigot.jar:git-Spigot-db6de12-07c3001]
at net.minecraft.server.v1_8_R3.PlayerConnection.handleCommand(PlayerConnection.java:1162) [spigot.jar:git-Spigot-db6de12-07c3001]
at net.minecraft.server.v1_8_R3.PlayerConnection.a(PlayerConnection.java:997) [spigot.jar:git-Spigot-db6de12-07c3001]
at net.minecraft.server.v1_8_R3.PacketPlayInChat.a(PacketPlayInChat.java:45) [spigot.jar:git-Spigot-db6de12-07c3001]
at net.minecraft.server.v1_8_R3.PacketPlayInChat.a(PacketPlayInChat.java:1) [spigot.jar:git-Spigot-db6de12-07c3001]
at net.minecraft.server.v1_8_R3.PlayerConnectionUtils$1.run(SourceFile:13) [spigot.jar:git-Spigot-db6de12-07c3001]
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_73]
at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_73]
at net.minecraft.server.v1_8_R3.SystemUtils.a(SourceFile:44) [spigot.jar:git-Spigot-db6de12-07c3001]
at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:715) [spigot.jar:git-Spigot-db6de12-07c3001]
at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:374) [spigot.jar:git-Spigot-db6de12-07c3001]
at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:654) [spigot.jar:git-Spigot-db6de12-07c3001]
at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:557) [spigot.jar:git-Spigot-db6de12-07c3001]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_73]
Caused by: java.lang.ClassCastException: org.bukkit.craftbukkit.v1_8_R3.block.CraftBlockState cannot be cast to org.bukkit.block.Chest
at me.Nightfighter001.GlobalSystem.Methoden.Undo.add(Undo.java:56) ~[?:?]
at me.Nightfighter001.GlobalSystem.Commands.setzen.onCommand(setzen.java:53) ~[?:?]
at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[spigot.jar:git-Spigot-db6de12-07c3001]
... 15 more
但我没有任何 CraftBlockState,我也从未导入过它!
如果我再解释一下,也许你会更容易理解:
我正在开发类似 WorldEdit 的东西,所以我可以选择 block 并更改它们。对于自己的 /undo
- 和 /redo
- 命令,我需要保存旧的 block 。我在 HashMap 中执行此操作。我将 BlockStates 保存在 HashMap 的 ArrayList 中。
感谢您的帮助,并对我的英语不好表示歉意;)
最佳答案
您可以使用自定义 YAML
文件并在其中保存值,然后当您这样做时,您可以将这些值放入库存中
如果您不知道该怎么做,您可以创建一个 HashMap
,然后将项目槽的编号放在一个值一侧,将其类型放在另一侧,您可以使用 Microsoft Excel 存储项目类型和快捷方式名称,然后您可以获得自定义配置文件,然后执行 for 循环将值存储在 HashMap
中
如果这对帖子有帮助,请评论或投票支持该帖子,这样我就知道我有所帮助:D
关于java - Spigot/Bukkit - 获取箱子库存 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35347788/