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

结冰的离季
首先你得知道箱子的位置 Location 或者 (x,y,z) ,使用 World::getBlockAt方法获取该位置的Block 对象 ,然后 将block 转为 org.bukkit.block.Chest 类型(注意先进行类型判断) ,然后使用 Chest::getBlockInventory() 获取该箱子的Inventory。

你这问题让我想起以前看过一个不使用nbt来保存物品,而是创建一个世界,里面放满箱子的方式来保存物品(为了兼容mod)的插件


阿易
结冰的离季 发表于 2022-4-15 15:19
首先你得知道箱子的位置 Location 或者 (x,y,z) ,使用 World::getBlockAt方法获取该位置的Block 对象 ,然 ...

大佬你看我这样获取对吗 ?
  1. Block block = YanewxunMain.getMain().getServer().getWorld("世界名").getBlockAt(location);
复制代码
  1. Chest chest = (Chest) block;
复制代码


但是这样会报错
  1. java.lang.ClassCastException: org.bukkit.craftbukkit.v1_16_R3.block.CraftBlock cannot be cast to org.bukkit.block.Chest
复制代码

我也不知道 到底怎么才能正确的 获取并且转换为 chest

美味的曲奇
微笑大人 发表于 2022-4-19 17:59
大佬你看我这样获取对吗 ?

你想打开的是工作台吧...
方块是箱子要类转箱子,工作台类转箱子哪行,转成工作台呀

阿易
本帖最后由 微笑大人 于 2022-4-19 18:57 编辑
美味的曲奇 发表于 2022-4-19 18:29
你想打开的是工作台吧...
方块是箱子要类转箱子,工作台类转箱子哪行,转成工作台呀 ...

额 那到底是哪里的问题 我真看不出来 ..
而且我位置放置的是 箱子啊
那个 block 我getType 出的也是 Chest


美味的曲奇
本帖最后由 美味的曲奇 于 2022-4-19 19:11 编辑
微笑大人 发表于 2022-4-19 18:48
额 那到底是哪里的问题 我真看不出来 ..

很明显
你获取到的方块不是箱子,而是工作台!
好像不是方块类型的问题
好像丢人了XD

第一页 上一页 下一页 最后一页