[1.7.10] Направление игрока !?

Версия Minecraft
1.7.10
Я делаю некий бур который копает 3 на 3 , но есть проблема , он копает по мировым координатам а не относительно игрока .
Что то слышал про ForgeDirection или что то подобное , но подробностей не нашёл .

В общем вопрос таков как вытащить направление игрока ?

Код :
Java:
    public int convertBlockDrops(List<ItemStack> aDrops, ItemStack aStack, EntityPlayer aPlayer, Block aBlock, int aX, int aY, int aZ, byte aMetaData, int aFortune, boolean aSilkTouch, BlockEvent.HarvestDropsEvent aEvent) {
        int rConversions = 0;
        if ((this.sIsHarvestingRightNow.get() == null) && ((aPlayer instanceof EntityPlayerMP))) {
            this.sIsHarvestingRightNow.set(this);
            for (int i = -1; i < 2; i++) {
                for (int j = -1; j < 2; j++) {
                    for (int k = -1; k < 1; k++) {
                        if (aEvent.world.getBlock(aX + i, aY + j , aZ + k) == net.minecraft.init.Blocks.bedrock) {
                        } else {
                                if (((i != 0) || (j != 0) || (k != 0)) && (aStack.getItem().getDigSpeed(aStack, aPlayer.worldObj.getBlock(aX + i, aY + j, aZ + k), aPlayer.worldObj.getBlockMetadata(aX + i, aY + j, aZ + k)) > 0.0F) && (((EntityPlayerMP) aPlayer).theItemInWorldManager.tryHarvestBlock(aX + i, aY + j, aZ))) {
                                    rConversions++;
                            }
                        }
                    }
                }
            }
            this.sIsHarvestingRightNow.set(null);
        }
        return rConversions;
    }
 
Решение
Java:
@Override
    public boolean onBlockDestroyed(ItemStack is, World world, Block block, int x, int y, int z, EntityLivingBase entity) {
        if (entity instanceof EntityPlayer) {
            EntityPlayer player = (EntityPlayer) entity;
            for (int osX = -1; osX <= 1; ++osX) {
            for (int osY = -1; osY <= 1; ++osY) {
            for (int osZ = -1; osZ <= 1; ++osZ) {

                if (world.isAirBlock(x + osX, y + osY, z + osZ)) continue;

                Block block2 = world.getBlock(x + osX, y + osX, z + osX);//Берём блок по координатам
                int metadata = world.getBlockMetadata(x + osX, y + osX, z + osX);//Берём метадату блока по координатам

                if (toolMaterial.getHarvestLevel() >=...
2,932
44
598
Java:
@Override
    public boolean onBlockDestroyed(ItemStack is, World world, Block block, int x, int y, int z, EntityLivingBase entity) {
        if (entity instanceof EntityPlayer) {
            EntityPlayer player = (EntityPlayer) entity;
            for (int osX = -1; osX <= 1; ++osX) {
            for (int osY = -1; osY <= 1; ++osY) {
            for (int osZ = -1; osZ <= 1; ++osZ) {

                if (world.isAirBlock(x + osX, y + osY, z + osZ)) continue;

                Block block2 = world.getBlock(x + osX, y + osX, z + osX);//Берём блок по координатам
                int metadata = world.getBlockMetadata(x + osX, y + osX, z + osX);//Берём метадату блока по координатам

                if (toolMaterial.getHarvestLevel() >= block2.getHarvestLevel(metadata)) {

                    //Узнаём твёрдость блока по координатам и если она равно -1F,
                    if (block2.getBlockHardness(world, x + osX, y + osX, z + osX) == -1F) continue;

                    BlockEvent.BreakEvent event = new BlockEvent.BreakEvent(x + osX, y + osX, z + osX, world, block2, metadata, player);
                    MinecraftForge.EVENT_BUS.post(event);
                    //Если в эвенте будет setCanceled(true),
                    //то идёт возвращение и код дальше не будет выполняться.
                    if (event.isCanceled()) return false;

                    //Выпадения опыта из блока.
                    block2.dropXpOnBlockBreak(world, x + osX, y + osX, z + osX, block2.getExpDrop(world, metadata, 0));
                    //Выпадения дропа из блока от имени игрока.
                    block2.harvestBlock(world, player, x + osX, y + osX, z + osX, metadata);
                    //Разрушаем блок с партиклами разрушения и со звуком разрушения,
                    //а так-же блок замениться на воздух.
                    //Аргумент false не даст выпасть (стандартный) дроп блока (он выпадает не от имени игрока).
                    world.func_147480_a(x + osX, y + osX, z + osX, false);
                    is.damageItem(1, entity);
                }
            }
            }
            }
        }
        return true;
    }
 

timaxa007

Модератор
5,831
409
672
У амерекосов есть гайды где они делают печки которые при установке становятся лицом к игроку , в общем надо денёк попотеть над этим , ну и как я раньше сказал порыскать в чужик кодах где есть такие же 3 на 3 инструменты . Спасибо за помощь !
 
Сверху