Вопрос Получения значения из конфига

Версия Minecraft
1.20.X

cbpH

Пользователь
Сообщения
50
Создал файл конфига

Код:
if (!getDataFolder().exists()) {

            getDataFolder().mkdirs();

        }
        file = new File(getDataFolder(), "config.yml");
        yamlConfiguration = YamlConfiguration.loadConfiguration(file);
        if (!file.exists()) {
            try {
                file.createNewFile();
                yamlConfiguration.set("effect-type", "SPEED");
                yamlConfiguration.save(file);
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
        }



Есть код который выдает эффект игроку при заходе на сервер

Код:
public void onJoin(PlayerJoinEvent e) {
        Player player = e.getPlayer();
        player.addPotionEffect(new PotionEffect(PotionEffectType.SPEED, -1, 9999));
}

Как сделать так, чтобы эффект который нужно выдать брался из конфига?
 
yamlConfiguration.getString("effect-type") - получит значение этого поля из конфига

а чтобы создать из строки эффект:

PotionEffectType.valueOf(эта строка.toUpperCase())
Код:
    public void onJoin(PlayerJoinEvent e) {
        Player player = e.getPlayer();
        player.addPotionEffect(new PotionEffect(PotionEffectType.valueOf(yamlConfiguration.getString("effect-type")), -1, 9999));
    }



Вот так должно выглядеть? Если так, то у меня 2 ошибки

Cannot resolve method 'valueOf' in 'PotionEffectType'
Cannot resolve symbol 'yamlConfiguration'

Полагаю это из-за того что реализация конфига и выдачи эффекта в разных классах находятся?
 
Полагаю это из-за того что реализация конфига и выдачи эффекта в разных классах находятся?
Да. Передавайте конфиг в класс со слушателем события входа (через конструктор, например).
 
Да. Передавайте конфиг в класс со слушателем события входа (через конструктор, например).
На конфиг теперь не ругается, осталась одна новая ошибка "cannot find symbol" , идея подчеркивает красным valueOf
Код:
player.addPotionEffect(new PotionEffect(PotionEffectType.valueOf(Basic.yamlConfiguration.getString("effect-type")), -1, 9999));
 
Создал файл конфига

Код:
if (!getDataFolder().exists()) {

            getDataFolder().mkdirs();

        }
        file = new File(getDataFolder(), "config.yml");
        yamlConfiguration = YamlConfiguration.loadConfiguration(file);
        if (!file.exists()) {
            try {
                file.createNewFile();
                yamlConfiguration.set("effect-type", "SPEED");
                yamlConfiguration.save(file);
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
        }



Есть код который выдает эффект игроку при заходе на сервер

Код:
public void onJoin(PlayerJoinEvent e) {
        Player player = e.getPlayer();
        player.addPotionEffect(new PotionEffect(PotionEffectType.SPEED, -1, 9999));
}

Как сделать так, чтобы эффект который нужно выдать брался из конфига?
Создай файл config.yml в resources, туда добавь effect-type: "SPEED"
Если ты собираешься использовать только config.yml, то достаточно при onEnable() плагина прописать saveDefaultConfig();

Выдать игроку эффект можно след. образом в onJoin:
player.addPotionEffect(new PotionEffect(PotionEffectType.getByName(getConfig().getString("effect-type"), -1, 9999));
 
Создай файл config.yml в resources, туда добавь effect-type: "SPEED"
Если ты собираешься использовать только config.yml, то достаточно при onEnable() плагина прописать saveDefaultConfig();

Выдать игроку эффект можно след. образом в onJoin:
player.addPotionEffect(new PotionEffect(PotionEffectType.getByName(getConfig().getString("effect-type"), -1, 9999));
Код:
player.addPotionEffect(new PotionEffect(PotionEffectType.getByName(Basic.getYamlConfiguration().getString("effect-type"), -1, 9999));

Выдает ошибку:

getByName(java.lang.String)' in 'org.bukkit.potion.PotionEffectType' cannot be applied to '(java.lang.String, int, int)
 
Код:
player.addPotionEffect(new PotionEffect(PotionEffectType.getByName(Basic.getYamlConfiguration().getString("effect-type"), -1, 9999));

Выдает ошибку:

getByName(java.lang.String)' in 'org.bukkit.potion.PotionEffectType' cannot be applied to '(java.lang.String, int, int)
Скобки не хватает
 
Назад
Сверху Снизу