Art by takepon
291 字
1 分钟
主动掉落物品时显示"Cannot drop air"
主动掉落物品时显示”Cannot drop air”
那天我试着开发一款限制服务器内的高频红石的插件。具体做法是:
- 检测高频闪烁的红石粉
- 闪烁次数到达一定次数后将它掉落出来
于是理所当然的写下了下面的代码:
block.getWorld().dropItem(block.getLocation(), new ItemStack(block.getType())); block.setType(Material.AIR);其中,block是已满足条件的方块。
但是我在测试的时候,红石线一开始闪,瞬间服务器后台开始报”Cannot drop air”,一堆一堆的这样的红色提示刷屏。
为什么

而红石线是一种方块,它长这样:

红石线有没有对应的物品呢?高版本当然没有。
所以试图掉落红石线本身都会失败,因为根本不存在这个物品。据别人说,这和Bukkit API有关。我也不知道,也不敢瞎说。
所以正确的写法是:
Material type = block.getType(); if (type == Material.REDSTONE_WIRE) { type = Material.REDSTONE; } block.getWorld().dropItem(block.getLocation(), new ItemStack(type)); block.setType(Material.AIR);部分信息可能已经过时