如题
我想做一个类似全球市场的插件,但是致命的一点在于
每次上架的货品 玩家卖出后 都需要 重新上架
于是我打算 让玩家可以设定 一个 箱子作为仓库
插件将会自动 获取箱子里的东西 发货
于是乎就有两个问题
1. 如何获取某世界某位置的箱子
2. 如何监听玩家打开了某世界某位置的箱子
大佬救助
我想做一个类似全球市场的插件,但是致命的一点在于
每次上架的货品 玩家卖出后 都需要 重新上架
于是我打算 让玩家可以设定 一个 箱子作为仓库
插件将会自动 获取箱子里的东西 发货
于是乎就有两个问题
1. 如何获取某世界某位置的箱子
2. 如何监听玩家打开了某世界某位置的箱子

首先你得知道箱子的位置 Location 或者 (x,y,z) ,使用 World::getBlockAt方法获取该位置的Block 对象 ,然后 将block 转为 org.bukkit.block.Chest 类型(注意先进行类型判断) ,然后使用 Chest::getBlockInventory() 获取该箱子的Inventory。
你这问题让我想起以前看过一个不使用nbt来保存物品,而是创建一个世界,里面放满箱子的方式来保存物品(为了兼容mod)的插件
你这问题让我想起以前看过一个不使用nbt来保存物品,而是创建一个世界,里面放满箱子的方式来保存物品(为了兼容mod)的插件
结冰的离季 发表于 2022-4-15 15:19
首先你得知道箱子的位置 Location 或者 (x,y,z) ,使用 World::getBlockAt方法获取该位置的Block 对象 ,然 ...
大佬你看我这样获取对吗 ?
- Block block = YanewxunMain.getMain().getServer().getWorld("世界名").getBlockAt(location);
- Chest chest = (Chest) block;
但是这样会报错
- java.lang.ClassCastException: org.bukkit.craftbukkit.v1_16_R3.block.CraftBlock cannot be cast to org.bukkit.block.Chest
我也不知道 到底怎么才能正确的 获取并且转换为 chest

本帖最后由 微笑大人 于 2022-4-19 18:57 编辑
额 那到底是哪里的问题 我真看不出来 ..
而且我位置放置的是 箱子啊
那个 block 我getType 出的也是 Chest
美味的曲奇 发表于 2022-4-19 18:29
你想打开的是工作台吧...
方块是箱子要类转箱子,工作台类转箱子哪行,转成工作台呀 ...
额 那到底是哪里的问题 我真看不出来 ..
而且我位置放置的是 箱子啊
那个 block 我getType 出的也是 Chest
本帖最后由 美味的曲奇 于 2022-4-19 19:11 编辑
很明显
你获取到的方块不是箱子,而是工作台!好像不是方块类型的问题
好像丢人了XD
微笑大人 发表于 2022-4-19 18:48
额 那到底是哪里的问题 我真看不出来 ..
很明显