WorldSaveData

Версия Minecraft
1.7.10
124
1
0
Здравствуйте. У меня есть некий массив данных, которые необходимо сохранить в сам мир (таблица участков светофоров для жд). Создал класс - наследник от WorldSaveData, в readFromNBT и writeToNBT прописал запись всех данных в NBT. Как мне загрузить эти данные при входе на карту или сервер и сохранить в нужный мне момент?
 

timaxa007

Модератор
5,831
409
672
Как мне загрузить эти данные при входе на карту или сервер
Он как-бы использовать эвент
Java:
@SubscribeEvent
public void handleWorldLoad(WorldEvent.Load event) {

}
В нём (или отдельным методом) как-бы пишем:
Java:
if (world.mapStorage == null) return null;

ChunkPower data = (ChunkPower)world.mapStorage.loadData(ChunkPower.class, TAG);

if (data == null) {
    data = new ChunkPower(TAG);
    data.markDirty();
    world.mapStorage.setData(TAG, data);
}
data.setWorld(world);
(world = event.world)
ChunkPower - это наш класс в котором унаследовали от WorldSavedData.
TAG - это объект String он как-бы отвечает под каким именем сохранять или под каким именем файл загружать (где как-то ранее были сохранены данные). У меня TAG это константа:
Java:
public static final String TAG = "ChunkPower";
---
сохранить в нужный мне момент?
Вроде как (твой)WorldSavedData#markDirty();, но по идеи он сам как-бы делает так чтобы сохраниться в нужный момент, но не когда внезапно останавливается процесс игры или сервера.
 
Последнее редактирование:
Сверху