Замена блока

Версия Minecraft
1.7.10
API
Forge
21
1
2
Привет! Я ищу способ сделать блок который при нахождении НА портали ИЗ енда и нажатия ПКМ удалялся портал. Я искал способ замени блока и наткнулся на вот ету строку:
world.setBlock(x, y, z, block, meta, 3);
Не могби Ви пояснить как можно ет правильно мне ето сделать пожаааалуустаааа.
 
Решение
Просто тогда нужно обойти максимальный параллелепипед где может полностью содержаться портал. Работает только если твой блок стоит на самом блоке портала. Если я не забыл размеры то он 5х4х5, если что - подправить ну очень просто
Java:
@Override
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int p_149727_6_, float hitX, float hitY, float hitZ) {
    if (!world.isRemote) {
        // проверка что блок снизу является порталом Края
        if (world.getBlock(x, y - 1, z) instanceof BlockEndPortal) {
            // проходимся по всевозможным вариантам нахождения блока портала и заменяем на воздух
            for (int i = -2; i < 3; i++) {
                for (int j = -2; j < 3; j++) {...
19
3
7
Для стандартного портала 3х3:
Замена блоков портала:
@Override
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int p_149727_6_, float hitX, float hitY, float hitZ) {
    if (!world.isRemote) {
        // проверка что блок снизу является порталом в Край
        if (world.getBlock(x, y-1, z) instanceof BlockEndPortal) {
            // проходимся по всевозможным вариантам нахождения блока портала и заменяем на воздух
            // f - рамка портала, p - сам блок портала
            //  fffff
            //  fpppf
            //  fpppf
            //  fpppf
            //  fffff
            for (int i = -2; i < 3; i++) {
                for (int j = -2; j < 3; j++) {
                    if (world.getBlock(x+i, y-1, z+j) instanceof BlockEndPortal) {
                        world.setBlock(x+i, y-1, z+j, Blocks.air);
                    }
                }
            }
            return true;
        }
        return false;
    }
    return true;
}
 
19
3
7
Просто тогда нужно обойти максимальный параллелепипед где может полностью содержаться портал. Работает только если твой блок стоит на самом блоке портала. Если я не забыл размеры то он 5х4х5, если что - подправить ну очень просто
Java:
@Override
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int p_149727_6_, float hitX, float hitY, float hitZ) {
    if (!world.isRemote) {
        // проверка что блок снизу является порталом Края
        if (world.getBlock(x, y - 1, z) instanceof BlockEndPortal) {
            // проходимся по всевозможным вариантам нахождения блока портала и заменяем на воздух
            for (int i = -2; i < 3; i++) {
                for (int j = -2; j < 3; j++) {
                    for (int k = -2; k < 3; k++) {
                        Block block = world.getBlock(x + i, y - 1 + k, z + j);

                        if (block == null) {
                            continue;
                        }

                        if (block instanceof BlockEndPortal || block.getUnlocalizedName().equals("bedrock")) {
                            world.setBlock(x + i, y - 1 + k, z + j, Blocks.air);
                        }
                    }
                }
            }
            return true;
        }
        return false;
    }
    return true;
}
 
Последнее редактирование:
Сверху