[1.7.10]Смена текстуры модели печи при работе в ней

156
0
Всем доброго утра. Перейду сразу к вопросу. Просматривая код ванильной печи (Furnace), обнаружил, что загрузка текстур происходит через класс блока. У меня есть кастомная печь с измененными инвентарем и рецептами, и для загрузки текстуры я использую рендерер для тайл энтити печи. Можно ли как нибудь сменить текстуру печи с помощью рендерера во время игры?
 
Да. В тайле можно создать проверку (если конечно изменения переменных не только на сервере), в котором будет проверяться работает печка или нет. Если - да, то текстура одна, если - нет, то текстура другая.
 
timaxa007 написал(а):
Да. В тайле можно создать проверку (если конечно изменения переменных не только на сервере), в котором будет проверяться работает печка или нет. Если - да, то текстура одна, если - нет, то текстура другая.
То есть рендерер и тайл один и тот же, просто текстура меняется в зависимости от состояния печки?
 
Именно. Хотя можешь пойти по "стопам" ваниллы и набыдлокодить замену блока с уже готовой текстурой :D
 
AlexSocol написал(а):
Именно. Хотя можешь пойти по "стопам" ваниллы и набыдлокодить замену блока с уже готовой текстурой :D
Я тоже об этом думал, но в связи с тем, что тайл печи прицеплен к одному блоку, то при смене блока с новой текстурой инвентарь печи просто пропадет
[merge_posts_bbcode]Добавлено: 10.02.2016 11:38:57[/merge_posts_bbcode]

Собственно, сделал я проверку в классе рендерера на рабочее состояние печи с заменой текстуры. Это работает, но только при заходе в инвентарь. То есть, если я захожу в игру и печь по идее уже работает (до этого туда положили уголь), то текстура должна была сразу замениться, но нет. она заменяется после того, как я зайду в инвентарь печи. Я так понимаю нужно работать с нбт тегами?
 
Liahim написал(а):
Посмотри, как сделано в ванильке. Если не ошибаюсь, в методе дисплей тик блока.Там стоит проверка и тайл просто копируется на новый блок. И ничего никуда не пропадает.
Либо я слепой, либо в этом коде нет ничего, связанного с тайл энтити.
 
Значит я ошибся.
Глянь в методе updateFurnaceBlockState... Как-то так он звучит.
Конкретно строчки
Код:
      if(tileentity != null)
        {
            tileentity.validate();
            world.setBlockTileEntity(i, j, k, tileentity);
        }
Вроде как, это и есть присвоение тайла блоку.
 
Liahim написал(а):
Значит я ошибся.
Глянь в методе updateFurnaceBlockState... Как-то так он звучит.
Конкретно строчки
Код:
      if(tileentity != null)
        {
            tileentity.validate();
            world.setBlockTileEntity(i, j, k, tileentity);
        }
Вроде как, это и есть присвоение тайла блоку.
Вся проблема в булевой функции, которая определена в тайл энтити для отслеживания, работает на данный момент печь или нет. Я решил сделать отладку. Сначала эта функция возвращала только true, но потом, после полной загрузки мира функция стала выдавать попеременно false и true
 
Назад
Сверху