本帖最后由 nanmenyangde 于 2022-6-30 10:58 编辑
Bukkit插件怎样通过箱子的Location修改箱子内物品?
Bukkit插件怎样通过箱子的Location修改箱子内物品?
首先getblock,然后getBlockInventory(),不就可以随便改了
也就是大箱子分左右需要注意下
也就是大箱子分左右需要注意下
本帖最后由 nanmenyangde 于 2022-6-29 21:34 编辑
我没有找到getBlockInventory()这个方法啊
我做的是1.19的paper插件,也许这个方法删了?
更新:我在Chest类里面找到了这个方法,但是Chest类没有直接或间接继承Block类,我想知道怎么得到这个Location的Chest实例
OOTW_Z 发表于 2022-6-29 21:01
首先getblock,然后getBlockInventory(),不就可以随便改了
也就是大箱子分左右需要注意下
...
我没有找到getBlockInventory()这个方法啊
我做的是1.19的paper插件,也许这个方法删了?
更新:我在Chest类里面找到了这个方法,但是Chest类没有直接或间接继承Block类,我想知道怎么得到这个Location的Chest实例
本帖最后由 OOTW_Z 于 2022-6-29 22:13 编辑
((Chest)Bukkit.getWorld("world").getBlockAt(l)).getBlockInventory().addItem(new ItemStack(Material.FISHING_ROD));
虽然我不知道能不能加进去物品,但是没有报错
https://bukkit.windit.net/javado ... ackage-summary.html
Inventory是个大对象,一般是引用形式的,所以按道理上面那行就是可以给箱子加物品了
((Chest)Bukkit.getWorld("world").getBlockAt(l)).getBlockInventory().addItem(new ItemStack(Material.FISHING_ROD));
虽然我不知道能不能加进去物品,但是没有报错
https://bukkit.windit.net/javado ... ackage-summary.html
Inventory是个大对象,一般是引用形式的,所以按道理上面那行就是可以给箱子加物品了
获取该位置的 block 然后获取 block的blockstate 强转为 Chest 使用getBlockInventory()方法
https://bukkit.windit.net/javadoc/org/bukkit/block/Chest.html
https://bukkit.windit.net/javadoc/org/bukkit/block/Chest.html
强转之前记得checkinstance一下,如果对象不属于Chest就getLogger().error一下,省的ClassCastException崩了端
teddyxlandlee 发表于 2022-7-2 16:16
强转之前记得checkinstance一下,如果对象不属于Chest就getLogger().error一下,省的ClassCastException崩 ...
bukkit插件不会崩服,顶多崩了自己的插件(
aiusyudiyab 发表于 2022-7-2 17:52
bukkit插件不会崩服,顶多崩了自己的插件(
看来bukkit这点防护挺不错