1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

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

Тема в разделе "Разработка плагинов для новичков", создана пользователем 4ebur, 14 дек 2023.

Статус темы:
Закрыта.
  1. Автор темы
    4ebur

    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
      Размер файла:
      210,4 КБ
      Просмотров:
      1
    Последнее редактирование: 14 дек 2023
Статус темы:
Закрыта.

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