Как сделать ,чтобы через модель нельзя было пройти

Версия Minecraft
1.7.10
516
11
39
У меня модель ,например столба и через него можно пройти,подскажите как сделать так чтобы нельзя было проходить
 
Решение
Если модель больше стандартного блока, то делай как сказал timaxa007 фантомные блоки. Сделай отдельный блок (типо невидимый), а в своем декор блоке ставь эти невидимые блоки где надо.

Код:
public void onBlockPlacedBy(World world, int i, int j, int k, EntityLivingBase en, ItemStack is) //
    {
        int rotation = MathHelper.floor_double((double)((en.rotationYaw * 4F) / 360F) + 2.5D) & 3; // ,   .
        meta = rotation;
        world.setBlockMetadataWithNotify(i, j, k, rotation, 1);

        if(rotation == 0)
        {
            world.setBlock(i, j, k + 1, Decore.model.blockID);
            world.setBlock(i, j, k - 1, Decore.model.blockID);
            world.setBlock(i, j, k - 2, Decore.model.blockID);

            world.setBlock(i...

timaxa007

Модератор
5,831
409
672
Хм... Обычно вопрос наоборот бывает.
Правильно установить setBlockBounds в конструктор блока, типа:
Java:
setBlockBounds(0.25F, 0F, 0.25F, 0.75F, 1F, 0.75F);
---
Если он больше размером с обычный блок, то тут лучше делать фантомные блоки.
 
49
3
3
Если модель больше стандартного блока, то делай как сказал timaxa007 фантомные блоки. Сделай отдельный блок (типо невидимый), а в своем декор блоке ставь эти невидимые блоки где надо.

Код:
public void onBlockPlacedBy(World world, int i, int j, int k, EntityLivingBase en, ItemStack is) //
    {
        int rotation = MathHelper.floor_double((double)((en.rotationYaw * 4F) / 360F) + 2.5D) & 3; // ,   .
        meta = rotation;
        world.setBlockMetadataWithNotify(i, j, k, rotation, 1);

        if(rotation == 0)
        {
            world.setBlock(i, j, k + 1, Decore.model.blockID);
            world.setBlock(i, j, k - 1, Decore.model.blockID);
            world.setBlock(i, j, k - 2, Decore.model.blockID);

            world.setBlock(i + 1, j, k + 1, Decore.model.blockID);
            world.setBlock(i + 1, j, k - 1, Decore.model.blockID);
            world.setBlock(i + 1, j, k - 2, Decore.model.blockID);
            world.setBlock(i + 1, j, k, Decore.model.blockID);

            world.setBlock(i, j + 1, k, Decore.modelSlab.blockID);
            world.setBlock(i + 1, j + 1, k, Decore.modelSlab.blockID);
        }
        else if(rotation == 1)
        {
            world.setBlock(i + 1, j, k, Decore.model.blockID);
            world.setBlock(i - 2, j, k, Decore.model.blockID);
            world.setBlock(i - 1, j, k, Decore.model.blockID);

            world.setBlock(i + 1, j, k - 1, Decore.model.blockID);
            world.setBlock(i - 2, j, k - 1, Decore.model.blockID);
            world.setBlock(i - 1, j, k - 1, Decore.model.blockID);
            world.setBlock(i, j, k - 1, Decore.model.blockID);

            world.setBlock(i , j + 1, k - 1, Decore.modelSlab.blockID);
            world.setBlock(i , j + 1, k, Decore.modelSlab.blockID);
        }
        else if(rotation == 2)
        {
            world.setBlock(i - 1, j, k + 2, Decore.model.blockID);
            world.setBlock(i - 1, j, k, Decore.model.blockID);
            world.setBlock(i - 1, j, k - 1, Decore.model.blockID);

            world.setBlock(i, j, k + 2, Decore.model.blockID);
            world.setBlock(i, j, k + 1, Decore.model.blockID);
            world.setBlock(i, j, k - 1, Decore.model.blockID);
            world.setBlock(i - 1, j, k + 1, Decore.model.blockID);

            world.setBlock(i - 1, j + 1, k, Decore.modelSlab.blockID);
            world.setBlock(i, j + 1, k, Decore.modelSlab.blockID);
        }
        else if(rotation == 3)
        {
            world.setBlock(i + 1, j, k, Decore.model.blockID);
            world.setBlock(i + 2, j, k, Decore.model.blockID);
            world.setBlock(i - 1, j, k, Decore.model.blockID);

            world.setBlock(i + 1, j, k + 1, Decore.model.blockID);
            world.setBlock(i + 2, j, k + 1, Decore.model.blockID);
            world.setBlock(i - 1, j, k + 1, Decore.model.blockID);
            world.setBlock(i, j, k + 1, Decore.model.blockID);

            world.setBlock(i , j + 1, k + 1, Decore.modelSlab.blockID);
            world.setBlock(i , j + 1, k, Decore.modelSlab.blockID);
        }


    }
    public void onBlockDestroyedByPlayer(World world, int i, int j, int k, int par5)
    {
        
        //int meta = world.getBlockMetadata(i, j, k);
        if(meta == 0)
        {
            world.setBlockToAir(i, j, k + 1);
            world.setBlockToAir(i, j, k - 1);
            world.setBlockToAir(i, j, k - 2);

            world.setBlockToAir(i + 1, j, k + 1);
            world.setBlockToAir(i + 1, j, k - 1);
            world.setBlockToAir(i + 1, j, k - 2);
            world.setBlockToAir(i + 1, j, k);
            world.setBlockToAir(i + 1, j + 1, k);
            world.setBlockToAir(i, j + 1, k);
        }
        else if(meta == 1)
        {
            world.setBlockToAir(i + 1, j, k);
            world.setBlockToAir(i - 2, j, k);
            world.setBlockToAir(i - 1, j, k);

            world.setBlockToAir(i + 1, j, k - 1);
            world.setBlockToAir(i - 2, j, k - 1);
            world.setBlockToAir(i - 1, j, k - 1);
            world.setBlockToAir(i, j, k - 1);

            world.setBlockToAir(i, j + 1, k - 1);
            world.setBlockToAir(i, j + 1, k);
        }
        else if(meta == 2)
        {
            world.setBlockToAir(i - 1, j, k + 2);
            world.setBlockToAir(i - 1, j, k);
            world.setBlockToAir(i - 1, j, k - 1);

            world.setBlockToAir(i, j, k + 2);
            world.setBlockToAir(i, j, k + 1);
            world.setBlockToAir(i, j, k - 1);
            world.setBlockToAir(i - 1, j, k + 1);
            
            world.setBlockToAir(i - 1, j + 1, k);
            world.setBlockToAir(i, j + 1, k);
        }
        else if(meta == 3)
        {
            world.setBlockToAir(i + 1, j, k);
            world.setBlockToAir(i + 2, j, k);
            world.setBlockToAir(i - 1, j, k);

            world.setBlockToAir(i + 1, j, k + 1);
            world.setBlockToAir(i + 2, j, k + 1);
            world.setBlockToAir(i - 1, j, k + 1);
            world.setBlockToAir(i, j, k + 1);

            world.setBlockToAir(i, j + 1, k + 1);
            world.setBlockToAir(i, j + 1, k);
        }
        


    }
 
Сверху