Как получить FACING в TileEntity?

Сообщения
103
Лучшие ответы
2
Реакции
2
Версия Minecraft
1.15.2
Делаю ломатель блоков, ломает нормально, но ломает пока-что только над собой, как мне учитывать направление взгляда? EnumFacing на 1.15.2 отсутствует.
blockbreaker block:
public blockbreaker(){
        super(Properties.create(Material.IRON)
                        .hardnessAndResistance(2.0f)
                        .harvestLevel(2)
                        .harvestTool(ToolType.PICKAXE)
                        .sound(SoundType.METAL)
        );
        this.setDefaultState(this.stateContainer.getBaseState().with(FACING, Direction.NORTH));
    }

    @Override
    protected void fillStateContainer(StateContainer.Builder<Block, BlockState> builder) {
        builder.add(FACING);
    }

    public BlockState getStateForPlacement(BlockItemUseContext context) {
        return this.getDefaultState().with(FACING, context.getNearestLookingDirection().getOpposite().getOpposite());
    }
blockbreaker tileentity:
@Override
    public void tick(){
        if (!this.world.isRemote) {
            ItemStack itemstack = this.inventory.getStackInSlot(0);//Get ITEMSTACK from slot
            BlockPos blockp= pos.offset(Direction.UP,1);//Get XYZ block which need to break
            Block block=world.getBlockState(blockp).getBlock();//Get block which need to break
            System.out.print(block);

            ItemStack itemstack2 = new ItemStack(Item.getItemFromBlock(block));//Get ITEMSTACK from BLOCK which we break
            if (world.isAirBlock(blockp)==false && itemstack.getCount()<=63){//If block is not air and item stack dont equal 64
                if (itemstack.isEmpty()){//If slot don't have any item, then set itemstack from block
                    this.inventory.setStackInSlot(0, itemstack2.copy());//Set itemstack
                }else if (itemstack.getItem()==itemstack2.getItem()){//If slot have any item and block which we break equivalent block which contained in slot, then increase itemstack
                    itemstack.setCount(itemstack.getCount()+1);
                }
                world.destroyBlock(blockp,false);//just break the block
            }
        }
    }
 
Сообщения
71
Лучшие ответы
1
Реакции
11
Посмотри DispenserBlock. Тут вроде всё хорошо видно, параметр FACING в т.ч.
 
Сообщения
103
Лучшие ответы
2
Реакции
2
я смотрел диспенсер, я не понимаю в какой момент в TE передаётся facing и передаётся ли вообще.
 

tox1cozZ

aka Agravaine
Модератор
Сообщения
6,816
Лучшие ответы
412
Реакции
1,901
Из BlockState достать надо, ничего не передается.
world.getBlockState
 
Сообщения
103
Лучшие ответы
2
Реакции
2
Я с помощью
BlockState blocks = world.getBlockState(pos);
System.out.print(blocks);
вижу в консоли Block{allyouneed:block_breaker}[facing=north]
но как мне достать facing отсюда?
 
Сообщения
103
Лучшие ответы
2
Реакции
2
Я понял как получить лицо, я поменял код на такой:
get facing:
Direction direction = world.getBlockState(pos).get(FACING);
            BlockPos blockp= pos.offset(direction,1);
Тему можно закрывать.
 
Сверху