Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

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

Тема в разделе "Разработка плагинов для новичков", создана пользователем Lite-craft, 15 мар 2016.

  1. Автор темы
    Lite-craft

    Lite-craft Активный участник Пользователь

    Баллы:
    46
    Имя в Minecraft:
    shiroihana
    config.set("message", "Привет это сообщение можно изменить в конфигурации");
    saveConfig();
    Как сделать так чтобы это действие срабатывало только после удаления конфига или удаления этой строки (message), возможно ли?
     
  2. Хостинг MineCraft
    <
  3. fall.us

    fall.us Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    fallus
    Если строки или файл удаляется не программно(плагином), а вручную(через Проводник или текстовые редакторы), то тогда файл нужно генерировать(если был удален) со стандартными настройками или проверять файл на валидность(полноту) и дополнять при необходимости.
    Для этого обычно создают отдельный класс - (Some)Config - (Какой-то)Конфиг.

    Пример:
    Код:
    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-методы для переменных
    }
    
     
  4. Автор темы
    Lite-craft

    Lite-craft Активный участник Пользователь

    Баллы:
    46
    Имя в Minecraft:
    shiroihana
    Можешь помочь с шедулером у меня он останавливаться не хочет, ну не работает код выполняется каждый тик как его отключить чтобы сообщение было только один раз




    @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);
    }
    }
     
  5. slavik123123123

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

    Баллы:
    143
    Имя в Minecraft:
    Leymooooooooooo
    scheduleSyncRepeatingTask ==> runTaskLater
     
  6. Автор темы
    Lite-craft

    Lite-craft Активный участник Пользователь

    Баллы:
    46
    Имя в Minecraft:
    shiroihana
    Это куда в мой код пастить?
     
  7. slavik123123123

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

    Баллы:
    143
    Имя в Minecraft:
    Leymooooooooooo
    вместо этого runTaskLater
     
  8. Автор темы
    Lite-craft

    Lite-craft Активный участник Пользователь

    Баллы:
    46
    Имя в Minecraft:
    shiroihana
    И еще, я тут пытаюсь кулдаун для яблок создать а как определить кол-во яблок и потом это все вытащить из него[DOUBLEPOST=1458058959,1458058764][/DOUBLEPOST]
    Теперь на него эклипс ругается[DOUBLEPOST=1458058999][/DOUBLEPOST]Вот весь код




    @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);
    }
    }
     

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