Изменение TileEntitySpecialRenderer для определённого блока

Версия Minecraft
1.7.10
API
Forge
451
13
34
Всем привет.
На данный момент я реализовываю анимацию предмета относительно блока (именно так мне и нужно, никак иначе).
У меня имеется класс, который походит от TileEntitySpecialRenderer, где я собственно всё и рисую.
Мне требуется сделать так, что рендер будет происходить только в том случае, если boolean будет равняться true.
Я думал отправлять пакет при изменение каком-либо в onBlockActivated, но в таком случае переменная будет указываться и для всех последующих блоков, что мне вовсе не надо.
Какой есть способ изменять рендер для определённого блока при каком-либо действие в игре?
 
Заводишь свой boolean в самом TileEntity. При взаимодействии игрока с блоком тебе передаются координаты блока; по ним ты можешь найти конкретный тайл, методом world.getTileEntity. Находишь его и сетишь нужный тебе булеан, эффективно оповещая тайл про взаимодействие с игроком. Не забываешь что булеан нужно синхронизировать.
 
Java:
    public void renderTileEntityAt(TileEntitySpawner tile, double x, double y, double z, float partialTicks, Entity entity) {
        if (tile.isItemInside()) {
              // render
        }
    }

Java:
    @Override
    public void renderTileEntityAt(TileEntity te, double x, double y, double z, float partialTicks) {
        renderTileEntityAt((TileEntitySpawner) te, x, y, z, partialTicks, entityList[0]);
    }

(рендер там имеется рабочий)

При этом значение переменной boolean = true, когда блок активирован, я дебажил
tEntitySpawner.setItemInsideBoolean(true);

TileEntity:
    public void setItemInsideBoolean(boolean isItemInside) { this.isItemInside= true; }

    public boolean isItemInside() { return this.isItemInside; }

    @Override
    public void writeToNBT(NBTTagCompound compound) {
        super.writeToNBT(compound);
        compound.setInteger("timer", this.timer);
        compound.setBoolean("isItemInside", this.isItemInside);
    }

    @Override
    public void readFromNBT(NBTTagCompound compound) {
        super.readFromNBT(compound);
        compound.getInteger("timer");
        compound.getBoolean("isItemInside");
    }
 
Назад
Сверху