Как сделать, чтобы Bukkit не сохранял чанки автоматически в любое время

Bukkit автоматически сохраняется каждые несколько минут, а также сохраняется при выключении.

Мне нужен способ не сохранять куски, потому что мне нужна система, чтобы моя карта мини-игры была полностью свежей при перезапуске сервера для следующего раунда мини-карты.

Что я пытался сделать:

  • Отключение автоматического сохранения в server.properties;
  • Выполните следующее, чтобы попытаться завершить работу без сохранения:
Bukkit.getServer().unloadWorld(getServer().getWorlds().get(0), false);
Bukkit.shutdown();

person LeoColman    schedule 03.12.2014    source источник
comment
Я не буду называть это ответом, потому что он игнорирует вопрос заголовка, но как насчет того, чтобы вместо изменения игры так, чтобы она не сохранялась, вы просто создаете резервную копию карты, как вы хотите, чтобы она была в начале игру, а затем написать простой пакетный/шелл-скрипт, который удалит карту, скопирует резервную карту на ее место, а затем запустит сервер?   -  person MrLore    schedule 04.12.2014
comment
Если проще просто заставить Bukkit не сохраняться, а вместо этого перезагружать карту, мне было бы намного проще, но если это единственная возможность, то я, вероятно, так и сделаю...   -  person LeoColman    schedule 04.12.2014
comment
Существует метод (если я правильно помню) для World, который устанавливает предпочтение для сохранения фрагментов. Однако я давно не связывался с Bukkit.   -  person CoderMusgrove    schedule 04.12.2014
comment
@CoderMusgrove Метод Bukkit.getServer().getWorlds().get(0).setAutoSave(false); Но это не работает.   -  person LeoColman    schedule 04.12.2014
comment
Это не работает, потому что мир сохраняется при выключении.   -  person spongebob    schedule 05.12.2014
comment
@Joiner Да, а как сделать, чтобы не сохранялось?   -  person LeoColman    schedule 05.12.2014
comment
Я уже ответил на него здесь.   -  person spongebob    schedule 18.12.2014


Ответы (1)


То, что вы пробовали, является правильным способом сделать это. Проблема в том, что вы не можете выгрузить миры по умолчанию (это Верхний мир, Нижний мир и Конец). Вы должны создать новый.

Вам нужен объект WorldCreator.

WorldCreator seed = new WorldCreator("arena");
World arena = seed.createWorld();

Это пользовательский мир: регионы сохраняются (если не указано иное), но Bukkit не узнает об этом после перезагрузки сервера. Таким образом, вы должны запустить приведенный выше код в первый раз, чтобы сгенерировать файлы, а затем загрузить их с диска, если они будут найдены.

person spongebob    schedule 04.12.2014
comment
Да, но My World является пользовательским, а не основанным на семенах, хотя я не знаю, понял ли я вас. - person LeoColman; 04.12.2014
comment
@Kerooker Это невозможно, потому что Server.getWorlds().get(0) всегда возвращает Верхний мир. - person spongebob; 04.12.2014
comment
Да, я получил 0, чтобы попытаться сделать так, чтобы Overworld не сохранялся, но он все еще сохраняется. - person LeoColman; 04.12.2014
comment
@Kerooker На самом деле! Вы читали мой ответ? Вы не можете выгружать миры по умолчанию. - person spongebob; 05.12.2014
comment
Но разве использование семени не создаст мир, отличный от того, что есть в моем файле? - person LeoColman; 05.12.2014
comment
@Kerooker Я назвал его seed, но он не представляет собой начальное число. Смотрите редактирование. - person spongebob; 05.12.2014