小军a
本帖最后由 tdiant 于 2023-2-7 21:36 编辑

怎么判断箱子里是否有东西如果有禁止挖除

鳕鱼丶
我没有具体试过,但是有一个思路。通过事件获取点击到的方块是否是箱子,如果是则强转为Chest,然后通过getBlockInventory()方法获取到箱子类型的物品栏,就可以进行判断了。

2000000
我已经在注释内详细的告诉了您现在这样做的意义是什么,此代码运行正常,但请理解它,否则它只是无意义的代码投喂
    @EventHandler
    public void blockBreakEvent(BlockBreakEvent event) {
        Block block = event.getBlock();

        // 确定这个方块是否为箱子,如果不是则不执行下面的代码
        if (block.getType() != Material.CHEST) return;

        // 如果是箱子则转为 Chest,通过 getBlockInventory 获得这个方块的 Inventory
        // 您需要将方块状态转换为 Chest,而不是方块本身,所以您需要使用 getState 而不是直接进行转换
        Chest chest = (Chest) block.getState();
        Inventory inventory = chest.getBlockInventory();

        // 随后只需要使用 fori 进行遍历物品,通过 inventory.getSize 来获得这个箱子的具体大小
        // 如果获取的物品不为 null 则取消,并且退出 for 循环
        for (int i = 0; i < inventory.getSize(); i++) if (inventory.getItem(i) != null) { event.setCancelled(true); return; }
    }



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