Войти или зарегистрироваться

Помогите Нужно чтобы действие делалось только после удаления конфига или строки в нем

Lite-craft

Активный участник
Пользователь
Баллы
46
Имя в Minecraft
shiroihana
config.set("message", "Привет это сообщение можно изменить в конфигурации");
saveConfig();
Как сделать так чтобы это действие срабатывало только после удаления конфига или удаления этой строки (message), возможно ли?
 
Если строки или файл удаляется не программно(плагином), а вручную(через Проводник или текстовые редакторы), то тогда файл нужно генерировать(если был удален) со стандартными настройками или проверять файл на валидность(полноту) и дополнять при необходимости.
Для этого обычно создают отдельный класс - (Some)Config - (Какой-то)Конфиг.

Пример:
Java:
public class Config
{
    private File path;
  
    //config vars(стандарнтые значения конфига)
  
    private int someInteger = 10;
    private String someString = "someString";
  
    //etc...
  
    public Config(File path)
    {
        this.path = path;
    }
  
    //Загружает файл. Если файл не создан, генерируется новый со стандартными значениями
    //Если поле отсутствует в конфиге, оно будет создано со стандартным значением
    public void Load()
    {
        FileConfiguration config = YamlConfiguration.loadConfiguration(path);
      
        someInteger = config.getInt("some.int", someInteger);
        someString = config.getString("some.str", someString);
      
        //etc...
      
        Save();
    }
  
    public void Save()
    {
        //do save
    }

    //get\set-методы для переменных
}
 
Если строки или файл удаляется не программно(плагином), а вручную(через Проводник или текстовые редакторы), то тогда файл нужно генерировать(если был удален) со стандартными настройками или проверять файл на валидность(полноту) и дополнять при необходимости.
Для этого обычно создают отдельный класс - (Some)Config - (Какой-то)Конфиг.

Пример:
Java:
public class Config
{
    private File path;

    //config vars(стандарнтые значения конфига)

    private int someInteger = 10;
    private String someString = "someString";

    //etc...

    public Config(File path)
    {
        this.path = path;
    }

    //Загружает файл. Если файл не создан, генерируется новый со стандартными значениями
    //Если поле отсутствует в конфиге, оно будет создано со стандартным значением
    public void Load()
    {
        FileConfiguration config = YamlConfiguration.loadConfiguration(path);
    
        someInteger = config.getInt("some.int", someInteger);
        someString = config.getString("some.str", someString);
    
        //etc...
    
        Save();
    }

    public void Save()
    {
        //do save
    }

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




@EventHandler
public void playerInteractApple(PlayerInteractEvent ap) {
Player gap = ap.getPlayer();
if (gap.getItemInHand().getType() != Material.GOLDEN_APPLE)return;
int var = 10;
Bukkit.getScheduler().scheduleSyncRepeatingTask(this, new Runnable() {
@Override
public void run() {
gap.sendMessage("Отчет до 200 кончился выполнение кода");
if(var == 0) {
gap.sendMessage("12345678");
getServer().getScheduler().cancelTask(10);
}
}}, 200L, 0L);
}
}
 
И еще, я тут пытаюсь кулдаун для яблок создать а как определить кол-во яблок и потом это все вытащить из него
Теперь на него эклипс ругается
Вот весь код




@EventHandler
public void playerInterackApple(PlayerInteractEvent ap) {
Player gap = ap.getPlayer();
if (gap.getItemInHand().getType() != Material.GOLDEN_APPLE)return;
config.set("countApple", ap.getPlayer().getItemInHand().getType());
saveConfig();
int var = 10;
Bukkit.getScheduler().runtaskLater (this, new Runnable() {
@Override
public void run() {
if(var == 0) {
gap.sendMessage("12345678");
getServer().getScheduler().cancelTask(10);
}
}}, 200L, 0L);
}
}
 
Назад
Верх