[1.7.10]Коллизии для блоков с определенными NBT тегами

156
0
Вечер добрый всем! Сразу перейду к вопросу. Делаю кастомную коллизию для блока с определенным NBT тегом. Пока что у меня в классе блока прописано это:
Код:
@Override
    public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) {
        TileEntityRoof_Con_Int tile = (TileEntityRoof_Con_Int) world.getTileEntity(x, y, z);
        if(tile.getPosition() == 2) {
            this.setBlockBounds(0.0F, 0.5F, 0.0F, 1.0F, 1.0F, 1.0F);
        }
        else {
            this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
        }
    }
TileEntityRoof_Con_Int - это тайл энтити блока.
getPosition() - функция из класса тайла, возвращающая переменную, которую я предварительно записываю в нбт теги и считываю.
При заходе в игру у блока обычная коллизия, но если повторно поставить его - коллизия становится кастомной. Как можно решить эту проблему?
P.S. И да, не надо предлагать мне делать коллизии с помощью метадат, в данной ситуации мне выгоднее было бы использовать NBT теги.
 
Agravaine написал(а):
Фиг его, ты же для всех блоков задаешь.
Да, но для тайлэнтити с определенными тегами задаю кастомную коллизию. Жалко, что нельзя никак через экземпляр класса блока вызвать привязанную к нему сущность.
 
Для коллизии отдельный метод, в твоем случае

Код:
public void addCollisionBoxesToList(World world, int x, int y, int z, AxisAlignedBB axisAlignedBB, List list, Entity entity) { 
    TileEntityRoof_Con_Int tile = (TileEntityRoof_Con_Int) world.getTileEntity(x, y, z);
        if(tile.getPosition() == 2) {
            this.setBlockBounds(0.0F, 0.5F, 0.0F, 1.0F, 1.0F, 1.0F);
            super.addCollisionBoxesToList(world, x, y, z, axisAlignedBB, list, entity);
        }
        else {
            this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
            super.addCollisionBoxesToList(world, x, y, z, axisAlignedBB, list, entity);
        }
}

подробнее можешь посмотреть в заборе
 
Назад
Сверху