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

Помогите Встроенный конфиг плохо запоминает

Статус
Закрыто для дальнейших ответов.

4ebur

Активный участник
Баллы
61
Имя в Minecraft
__4eburashka__
Версия : 1.20.1
Хочу сделать следующее: когда игрок появляется в пустом мире на блоке травы он ставит определённый блок, вследствие чего появляются блоки от бедрока до 319 высоты вкл. по координатам где игрок поставил сам блок.
У меня уже есть пустой мир и связный с ним обычный мир (откуда берутся сами блоки).

НО вся проблемы начинается как раз когда я приплетаю сюда конфиг, я в него запихиваю лист со всеми координатами поставленных блоков, чтобы игрок допустим, сломав алмазы снова не создал чанк с этими же алмазами в том же месте.

Лог консоли в описании, где выводится "NULL", там я удалял весь конфиг, чтобы проверить. Там где пишет "NON NULL" просто ещё раз ставил блок

для примечания \/
public final ChunkPlugin plugin = this;

код ивента в котором я всё делаю *фото*\/
upload_2023-12-14_12-34-41.png
в письменном виде \/
@EventHandler
public void onBlockPlace(BlockPlaceEvent event) {
List<String> list; // лист в котором будут все координаты поставленных блоков
Location WMLocation;
if (event.getItemInHand().getItemMeta().equals(MediumCBMeta)) {
WMLocation = event.getBlockPlaced().getLocation();
WMLocation.setWorld(getServer().getWorld("world_main")); //изменяю локацию на другой мир
event.getBlockPlaced().getLocation().getBlock().setType(Material.AIR); // сразу убираю поставленный блок
int num = 0; // создаю счётчик поставленных блоков
plugin.reloadConfig();
if (plugin.getConfig().getStringList("PlacedBlocks").isEmpty()) {
getLogger().info("NULL");
list = new ArrayList<>();
} else {
getLogger().info("NON NULL");
list = plugin.getConfig().getStringList("PlacedBlocks");
}
for (int i = -64; i < 320; i++) { //начинаю проверять все блоки от -64 до 319 высоты
WMLocation.setY(i);
Block block = new Location(getServer().getWorld("world"), WMLocation.getX(), WMLocation.getY(), WMLocation.getZ()).getBlock();
if (block.getType() == Material.AIR) { // чтобы не заменять постройки блоками
if (!list.contains(WMLocation)) { // ВОТ САМА ПРОВЕРКА НА СОДЕРЖАНИЕ ЛИСТА ЭТОЙ ЛОКАЦИИ, в логе он всегда пишет "FILL".
getLogger().info("FILL");
num++;
block.setType(WMLocation.getBlock().getType());
String str = WMLocation.getX() + "/" + WMLocation.getY() + "/" + WMLocation.getZ(); // лист не поддерживает лист локаций, так что выкручиваюсь
list.add(str);
}else{getLogger().info("INDEX" + String.valueOf(list.indexOf(WMLocation)));}
}
}
plugin.getConfig().set("PlacedBlocks", list);
plugin.saveConfig();
if (num == 0) { // если чанк уже был заполнен ранее
event.getPlayer().sendMessage("Whoops, no place to blocks!");
event.setCancelled(true);
}
}
}
 

Вложения:

  • latest log.txt
    latest log.txt
    Размер файла
    210,4 КБ
    Просмотров
    1
Последнее редактирование:
Статус
Закрыто для дальнейших ответов.

Поделиться этой страницей

Назад
Верх