Блокировка установки блоком перед своим кастомным блоком

Версия Minecraft
1.7.10
37
0
Здравствуйте, мне нужно сделать так, чтоб игрок не мог поставить блок перед определенной стороной моего кастомного блока, (что-то на подобии сундука)
К примеру у меня есть свой блок "Тумбочка" и мне нужно сделать так, чтоб перед ней нельзя было ставить блок ни рукой, ни поршнем.
Возможно ли это сделать и как ?
 
5,018
47
783
Так в сундуке и посмотри... :unsure:
В чем проблема то?)
Сюда вопросы надо писать, когда ты посмотрел везде где только можно и ничего не нашел.
 
5,018
47
783
7,099
324
1,510
onBlockPlaced в ItemBlock сундука
 
3,005
192
592
canPlaceAt метод, вроде.
В 1.12 вроде это в блоке.
В 1.7 - надо смотреть.
 
37
0
canPlaceAt метод, вроде.
В 1.12 вроде это в блоке.
В 1.7 - надо смотреть.
Нашел, только в 1.7.10 называется canPlaceBlockAt и там я не совсем могу понять как что происходит, можешь объяснить, вот код -
Код:
public boolean canPlaceBlockAt(World p_149742_1_, int p_149742_2_, int p_149742_3_, int p_149742_4_)
    {
        int l = 0;

        if (p_149742_1_.getBlock(p_149742_2_ - 1, p_149742_3_, p_149742_4_) == this)
        {
            ++l;
        }

        if (p_149742_1_.getBlock(p_149742_2_ + 1, p_149742_3_, p_149742_4_) == this)
        {
            ++l;
        }

        if (p_149742_1_.getBlock(p_149742_2_, p_149742_3_, p_149742_4_ - 1) == this)
        {
            ++l;
        }

        if (p_149742_1_.getBlock(p_149742_2_, p_149742_3_, p_149742_4_ + 1) == this)
        {
            ++l;
        }

        return l > 1 ? false : (this.func_149952_n(p_149742_1_, p_149742_2_ - 1, p_149742_3_, p_149742_4_) ? false : (this.func_149952_n(p_149742_1_, p_149742_2_ + 1, p_149742_3_, p_149742_4_) ? false : (this.func_149952_n(p_149742_1_, p_149742_2_, p_149742_3_, p_149742_4_ - 1) ? false : !this.func_149952_n(p_149742_1_, p_149742_2_, p_149742_3_, p_149742_4_ + 1))));
    }
 
7,099
324
1,510
EnumFacing глянь. В твоей задаче перед определяется положением игрока или только сторон света?
 
Последнее редактирование:
3,005
192
592
Сторона показывается метой в 1.7.
Получай мету в зависимости от нее - делай что-либо.
Например - вычисли, что это "личико".
 
37
0
Сторона показывается метой в 1.7.
Получай мету в зависимости от нее - делай что-либо.
Например - вычисли, что это "личико".
Ну как достать мету я знаю, в принципе могу присвоить переменной "личико" значение меты и в зависимости от того, где она находиться блокировать установку блока (с помощью условия if). Я правильно понял ?
 
37
0
В твоей задаче перед определяется положением игрока или только сторон света?
То есть, ты имеешь ввиду где будет "личико" моего блока ? Если это, то он у меня при установки всегда на игрока смотрит, то есть он не ставиться только одной стороной.
 
7,099
324
1,510
Тогда вектор смещения из EnumFacing нужно будет еще вращать в зависимости от лицевой стороны блока
 
37
0
Я тут никак не могу сделать, может кто-то кинуть как заблокировать установки блоку возле своего блока только с одной стороны, без того, что она будет меняться, просто чтоб постоянно нельзя было ставить блок с определенной стороны. Мне так проще разобраться будет.
 
3,005
192
592
Код:
public boolean canPlaceBlockAt(World p_149742_1_, int p_149742_2_, int p_149742_3_, int p_149742_4_)
    {

        if (p_149742_1_.getBlock(p_149742_2_, p_149742_3_ -1, p_149742_4_) == Blocks.chest)
        {
            return false;
        }

        return (this.func_149952_n(p_149742_1_, p_149742_2_ - 1, p_149742_3_, p_149742_4_) ? false : (this.func_149952_n(p_149742_1_, p_149742_2_ + 1, p_149742_3_, p_149742_4_) ? false : (this.func_149952_n(p_149742_1_, p_149742_2_, p_149742_3_, p_149742_4_ - 1) ? false : !this.func_149952_n(p_149742_1_, p_149742_2_, p_149742_3_, p_149742_4_ + 1))));
    }
Нельзя поставить над сундуком.
 
Последнее редактирование:
7,099
324
1,510
3,005
192
592
Сверху