Вопрос по блоку, а может и не только. (от новичка)

Версия Minecraft
1.7.10
8
2
Всем привет. Решил я зачем-то попробовать сделать мод на майн. Оказалось, что это не так уж и легко (Кто бы сомневался). Долго лазил по инету, пытался изучать что да как. Потренировался то в одном, то в другом (т.е. кусочно изучал разные места), и решил, что можно и полноценный мод сделать. Но тут снова вылезли проблемы, которые мне без помощи добрых форумчан уже не решить. Предупреждаю, вы должны быть готовы разъяснять мне все как идиоту(что, я думаю, не далеко от истины). Перейду к вопросу:
Я сделал блок с кастомной моделью. Настроил ей анимацию. До клика по блоку выглядит одним образом, а после - другим. Повторный клик возвращает все на место. И все бы хорошо, но, если сделать 1 клик(т.е. чтоб произошли изменения), то после перезахода в мир изменения сбрасываются. Пришел я к выводу, что после клика нужно как-то сохранить изменения(кэп), а именно- просто значения переменных после всех манипуляций. Как я понял, идеальный вариант- использовать NBT. Но я, после очень большого к-ва попыток, так и не разобрался как правильно с ним работать. Так вот, посоветуйте, а лучше подробно объясните мне идиоту, как правильно сохранить эти изменения. И да, знаю что обычно нужно еще скинуть свой код, но т.к. он "кровь из глаз и куча критики" , я его не скинул. Да и не надо это вроде. Вопрос то как-то обобщен, любой пример сойдет(или я идиот(много самокритики в тексте)).
P.s. Если в данном случае проблема решается без NBT, то, пожалуйста, и про NBT тоже поясните. Буду оооооооооочень благодарен.
 
Последнее редактирование:
1,976
68
220
Если хочешь рассказать свою историю, прошу в *эту тему*
1. В свой блок implements ITileEntityProvider
2. В методе createTileEntity возвращаешь новый экземпляр своего class MyTile extends TileEntity
3. В нём делаешь public boolean changetype = false;
4. В onBlockActivated своего блока через world.getTileEntity(x, y, z) получаешь свой тайл, из него получаешь эту переменную и меняешь её значение changetype = !changetype
5. В рендере точно так же проверяешь её и меняешь модель в зависимости true там или false
6. Сохранять переменную в методе writeToNBT (в тайле) через nbt.setBoolean("MyFlag", changetype)
7. Загружать в readFromNBT - changetype = nbt.getBoolean("MyFlag")
8. ???????
9. Profit!
 
  • Like
Реакции: _Oz_
8
2
Мда. Жмякнул на кнопку "лучший ответ". А головой и не подумал, что дальше произойдет. Ладно. Ну, я сделать то сделал. Но нужного результата нет, т.к. не могу понять, как должны срабатывать writeToNBT и readFromNBT.
 
эмм.. writeToNBT записывает твои переменные в нбт, readFromNBT читатет нбт, и присваивает твоим переменным значение, которое они имели при записе. Эти методы вызываются автоматически, когда это нужно.
 
8
2
Спасибо. "Эти методы вызываются автоматически, когда это нужно." - это ключевая фраза. Как понять автоматически, когда нужно? Т.е. для их работы мне просто нужно влиять на саму переменную changetype?
 
Т.е. для их работы мне просто нужно влиять на саму переменную changetype?
Если ты методы написал - они уже работают. теперь изменяй переменную, как хочешь. после перезахода она сохраниться. Только надо еще тайл зарегистрировать.
 
Сверху