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

Помогите Не меняются переменные в строке

Тема в разделе "Разработка плагинов для новичков", создана пользователем WayderTM, 30 июл 2020.

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

    WayderTM Активный участник

    Баллы:
    61
    Имя в Minecraft:
    WayderTM
    Здравствуйте, пишу свой плагин и у меня появилась проблемы с переменными по типу %chototam%
    Они заменяются, но после повторной попытки не хочет меняться на новые данные

    Вот участок кода:


    Код:
    public void giveSpawner(Player player , EntityType mob, int lvl, int amount) {
            int value = plugin.getConfig().getInt("Settings.value");
            
            if(!plugin.getConfig().getConfigurationSection("data").contains(player.getName())) {
                plugin.getConfig().createSection("data." + player.getName());
                value++;
                plugin.getConfig().createSection("data." + player.getName() + "." + plugin.getConfig().getInt("Settings.value"));
                plugin.getConfig().addDefault("data." + player.getName() + "." + Integer.toString(plugin.getConfig().getInt("Settings.value")) + ".spawnerlvl", lvl);
                plugin.getConfig().addDefault("data." + player.getName() + "." + Integer.toString(plugin.getConfig().getInt("Settings.value")) + ".spawnermob", mob.toString());
                plugin.getConfig().set("Settings.value", value);
                plugin.saveConfig();
            }
            else {
                value++;
                plugin.getConfig().createSection("data." + player.getName() + "." + plugin.getConfig().getInt("Settings.value"));
                plugin.getConfig().set("data." + player.getName() + "." + Integer.toString(plugin.getConfig().getInt("Settings.value")) + ".spawnerlvl", lvl);
                plugin.getConfig().set("data." + player.getName() + "." + Integer.toString(plugin.getConfig().getInt("Settings.value")) + ".spawnermob", mob.toString());
                plugin.getConfig().set("Settings.value", value);
                plugin.saveConfig();
            }
            spawnerlore.replaceAll((str) -> str.replace('&', '§').replace("%value%", Integer.toString(plugin.getConfig().getInt("Settings.value"))).replace("%lvl%", Integer.toString(lvl).replace("%mob%", mob.toString())));
            Inventory inv = player.getInventory();
            ItemStack item = ItemUtil.createSpawner(spawnerTitle.replace("%player%", player.getName()), spawnerlore, amount);
            //.replaceAll("%value%", Integer.toString(value))
            inv.addItem(item);
            
        }
    После выдачи спавнера %value% меняется на 1 например и после повторной выдачи value становиться 2, но %value% ставит 1. После перезапуска уже нормально меняется на 2. В чем может быть проблема?

    Вот если надо главный класс: https://pastebin.com/KyfjcmQR
     
  2. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Тебе нужно повторно получить гетером.
     
  3. Автор темы
    WayderTM

    WayderTM Активный участник

    Баллы:
    61
    Имя в Minecraft:
    WayderTM
    Тоесть мне нужно получить value через:
    Код:
    public int getValue() {
            return value;
        }
    и потом опять прописать после строки замены:
    Код:
    spawnerlore.replaceAll((str) -> str.replace('&', '§').replace("%value%", Integer.toString(getValue()));
    Я так понял?
     
  4. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Где то тут наверное plugin.getConfig().getInt("Settings.value") от сюда получаешь же?
     
  5. Автор темы
    WayderTM

    WayderTM Активный участник

    Баллы:
    61
    Имя в Minecraft:
    WayderTM
    Сделал так и вывел в чат getValue() и меняется, но в lore я не могу второй раз заменить ибо оно уже стало цифрой и нет больше %value%
     
  6. Автор темы
    WayderTM

    WayderTM Активный участник

    Баллы:
    61
    Имя в Minecraft:
    WayderTM
    Решил проблему тем что переместил получение лора с конфига не в enable а в метод и заработало. Спасибо за помощь
     
Статус темы:
Закрыта.

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