首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spigot/Bukkit -获取箱子清单- Java

Spigot/Bukkit -获取箱子清单- Java
EN

Stack Overflow用户
提问于 2016-02-12 03:00:30
回答 2查看 2.4K关注 0票数 1

我试着保存一个Chest,所以我有一个BlockState和一个InventoryBlockState没有问题,但在Inventory中,他总是以ItemStack的大小保存0

代码语言:javascript
复制
if (BlockState instanceof Chest) {
    Chest chest = (Chest) bs;
    Inventory inv = chest.getBlockInventory();
    System.out.println(inv.getItem(0).getAmount());
}

在控制台中,当Chest如下所示时,也会打印0

编辑:现在我有了:

代码语言:javascript
复制
BlockState nbs = bs.getBlock().getState();
System.out.println(((Chest) nbs).getBlockInventory().getItem(0).getAmount());

但是现在我得到了这个错误:

代码语言:javascript
复制
[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这样的东西,这样我就可以选择块并更改它们。对于自己的/undo-和/redo-Command,我需要保存旧的块。我在HashMap中做这件事。我将BlockStates保存在ArrayList中的HashMap中。

感谢您的帮助,并为我糟糕的英语表示抱歉;)

EN

回答 2

Stack Overflow用户

发布于 2016-02-12 04:02:21

您可以使用自定义YAML文件并将值保存在其中,然后您可以将这些值放入清单中

如果您不知道如何处理,可以创建一个HashMap,然后将项目槽的编号放在值的一侧,将项目的类型放在值的另一侧,然后可以使用Microsoft Excel存储项目的类型和快捷方式名称,然后可以获得自定义配置文件,然后执行for循环将值存储在HashMap

如果这是对帖子有帮助的评论或为帖子投票,那么我知道我是有帮助的:D

票数 0
EN

Stack Overflow用户

发布于 2016-02-13 01:52:08

我现在通过将金额保存在另一个列表中来解决我的问题。它不是很优雅,但它是有效的:D

如果其他人有更好的想法,请把它贴出来!

非常感谢:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35347788

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档