Mobile wallpaper 1
291 字
1 分钟
主动掉落物品时显示"Cannot drop air"

主动掉落物品时显示”Cannot drop air”#

那天我试着开发一款限制服务器内的高频红石的插件。具体做法是:

  1. 检测高频闪烁的红石粉
  2. 闪烁次数到达一定次数后将它掉落出来

于是理所当然的写下了下面的代码:

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);

部分信息可能已经过时

封面
Sample Song
Sample Artist
封面
Sample Song
Sample Artist
0:00 / 0:00