iMoonDay
我想通过postMine这个方法让工具挖掘方块之后直接把掉落物放进背包里,但是实际测试中它没办法找到刚刚挖掉方块的掉落物,只能找到挖掘之前已经存在的掉落物,所以他这是在方块掉落之前执行的方法吗?如果我想让他在方块掉落之后执行该怎么做呢?我的代码如下
  1. @Override
  2.     public boolean postMine(ItemStack stack, World world, BlockState state, BlockPos pos, LivingEntity miner) {
  3.         world.getOtherEntities(miner, new Box(pos.getX() + 3, pos.getY() + 3, pos.getZ() + 3, pos.getX() - 3, pos.getY() - 3, pos.getZ() - 3), e -> (e instanceof ItemEntity)).forEach(e -> {
  4.             boolean player = miner instanceof PlayerEntity;
  5.             if (player) {
  6.                 boolean hasSlot = ((PlayerEntity) miner).getInventory().getEmptySlot() != -1;
  7.                 if (hasSlot) {
  8.                     ((PlayerEntity) miner).giveItemStack(((ItemEntity) e).getStack());
  9.                     e.kill();
  10.                 } else {
  11.                     e.teleport(miner.getX(), miner.getY() + 1, miner.getZ());
  12.                 }
  13.             }
  14.         });
  15.         return super.postMine(stack, world, state, pos, miner);
复制代码



3061353149
可以尝试先进行注册挖掘方块检测事件,获取事件方块,通过getDrops方法获取掉落物,然后将凋落物加入玩家背包。取消挖掘事件,将这个方块的位置用空气方块代替

iMoonDay
3061353149 发表于 2023-2-18 11:46
可以尝试先进行注册挖掘方块检测事件,获取事件方块,通过getDrops方法获取掉落物,然后将凋落物加入玩家背 ...

getDrops方法能模拟玩家时运或者精准采集之类的吗

3061353149
iMoonDay 发表于 2023-2-18 15:52
getDrops方法能模拟玩家时运或者精准采集之类的吗

可以,但必须在getDrops()的括号里加入他手上的物品ItemStack

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