- 40
- 1
- 0
Пытаюсь сделать инструмент, ломающий блоки 3х3.
При EntityClientPlayerMP блоки ломаются визуально, но они не ломаются на самом деле, то есть в это место невозможно пройти и если попытаться туда что-то поставить, то блок вернётся обратно.
При EntityPlayerMP sideHit вообще не отображается правильно, берётся просто позиция игрока относительно блока.
Помогите, пожалуйста, что нужно исправить?
При EntityClientPlayerMP блоки ломаются визуально, но они не ломаются на самом деле, то есть в это место невозможно пройти и если попытаться туда что-то поставить, то блок вернётся обратно.
При EntityPlayerMP sideHit вообще не отображается правильно, берётся просто позиция игрока относительно блока.
Помогите, пожалуйста, что нужно исправить?
Код:
public boolean onBlockDestroyed(ItemStack is, World world, Block block, int x, int y, int z, EntityLivingBase entity) {
if (block.getMaterial() == Material.rock) {
if (!(entity instanceof EntityClientPlayerMP )) return false;
if (!entity.isSneaking()) return false;
int side = Minecraft.getMinecraft().objectMouseOver.sideHit;
int rx = side == 4 || side == 5 ? 0 : 1;
int ry = side == 0 || side == 1 ? 0 : 1;
int rz = side == 2 || side == 3 ? 0 : 1;
//System.out.println(side);
//System.out.println(entity);
for (int ax = -rx; ax <= rx; ax++) {
for (int ay = -ry; ay <= ry; ay++) {
for (int az = -rz; az <= rz; az++) {
int bx = x + ax, by = y + ay, bz = z + az;
if (world.isAirBlock(bx, by, bz)) continue;
if (world.getBlock(bx, by, bz).getMaterial() != block.getMaterial()) continue;
//System.out.println(bx + " " + by + " " + bz);
world.func_147480_a(bx, by, bz, true);
//world.getBlock(bx, by, bz).dropBlockAsItem(world, bx, by, bz, 0, 0);
//world.setBlock(bx, by, bz, Blocks.air);
}
}
}
}
return true;
}