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

Помогите Работа с конфигом

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

  1. Автор темы
    Elias

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

    Баллы:
    76
    Имя в Minecraft:
    Elias
    Шалом, руведровцы!

    Пишу плагин.
    Его задача: брать значения из конфига( в конфиг значения мы добавляем вручную(список ников)) и если имя игрока, разрушившего блок, есть в конфиге, то блок ломается.

    Собсно, из кода все станет понятно:
    Код:
    package tut;
    
    import org.bukkit.Material;
    import org.bukkit.configuration.file.FileConfiguration;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.block.BlockBreakEvent;
    import org.bukkit.plugin.java.JavaPlugin;
    
    public class mainClass extends JavaPlugin implements Listener {
    
         private FileConfiguration config;
       
        
        
        
        
         @EventHandler
         public void onBlockBreak(BlockBreakEvent e) {
             Player p = e.getPlayer();
            
             // Только шахтеры:
             if(p.getItemInHand().getType() == Material.IRON_PICKAXE && config.getString("Miners") != p.getName() ) {
                 e.setCancelled(true);
                 p.sendMessage("Вы не обладает шахтерскими навыками");
             }
            
        }
        
        
        
        
        
        
        
        
        //при включении плагина выводит в командую строку сообщение
        public void onEnable()
       
        {
           
            getLogger().info("ELLADIA Enable");
           
            getServer().getPluginManager().registerEvents(this, this);
            config = getConfig();
           
           
            getLogger().info(config.getString("Miners"));
           
           
           
        }
    
         
    
       
    //при выключении плагина выводит в командую строку сообщение
        public void onDisable()
        {
            getLogger().info("ELLADIA Disable");
            saveConfig();
           
        }
       
    }

    Но почему-то не работает. Хотя я и не разобрался, как достать значение правильно. :)
     
  2. Хостинг MineCraft
    <
  3. Mr_RoboMan

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

    Баллы:
    123
    Ну... Насколько я смотрю, ты пытаешся вытащить СПИСОК (с никами) используя getString()
    лучше бы юзать getStringList() и проверять содержит ли он ник..
     
  4. Автор темы
    Elias

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

    Баллы:
    76
    Имя в Minecraft:
    Elias
    о, спасиб. Сейчас попробую![DOUBLEPOST=1459692372,1459689914][/DOUBLEPOST]
    Попробовал, но почему-то не хочет работать. Наверное, я не правильно записываю конфиг. Сам конфиг скину.
    Код:
    package tut;
    
    import org.bukkit.Material;
    import org.bukkit.configuration.file.FileConfiguration;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.block.BlockBreakEvent;
    import org.bukkit.plugin.java.JavaPlugin;
    
    public class mainClass extends JavaPlugin implements Listener {
    
         private FileConfiguration config;
         private int J;
        
        
        
        
         @EventHandler
         public void onBlockBreak(BlockBreakEvent e) {
             Player p = e.getPlayer();
             //дебаг
             p.sendMessage("I");
            
             /* Дебаг
            * for(String s: config.getStringList("Miners")) {
            *     p.sendMessage(s);
            * }
             */
            
            
             // Только шахтеры:
             if(p.getItemInHand().getType() == Material.IRON_PICKAXE ) {
                 //дебаг
                 p.sendMessage("Test1");
                 for(String s: config.getStringList("Miners")) {
                     if(s == p.getName()) {
                         J = 1;
                     }
                    
                     if(J == 1) {
                         e.setCancelled(true);
                         p.sendMessage("Вы не обладает шахтерскими навыками");
                         J = 0;
                         }
                 }
                
               
             }
            
            
        }
        
        
        
        
        
        
        
        
        //при включении плагина выводит в командую строку сообщение
        public void onEnable()
       
        {
           
            getLogger().info("ELLADIA Enable");
           
            getServer().getPluginManager().registerEvents(this, this);
            config = getConfig();
           
           
       
       
           
           
           
        }
    
         
    
       
    //при выключении плагина выводит в командую строку сообщение
        public void onDisable()
        {
            getLogger().info("ELLADIA Disable");
            saveConfig();
           
        }
       
    }
    

    Конфиг :
    Код:
    Miners: EliasGreen Nanka Royalll Eva Gosha
     
  5. MrElitePro

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

    Баллы:
    46
    Имя в Minecraft:
    MrElitePro
    надо Miners:
    - ник1
    - ник2
    - ник3
     
  6. Автор темы
    Elias

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

    Баллы:
    76
    Имя в Minecraft:
    Elias
    Спасибо!

    Я еще забыл, что надо через equals сравнивать строки:)

    Все работает!
     
  7. MrElitePro

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

    Баллы:
    46
    Имя в Minecraft:
    MrElitePro
    Пожалуйста
     
  8. AxmeD

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

    Баллы:
    103
    Skype:
    ahmed136323
    Чтобы правильно записывать StringList в конфиг надо:
    List<String> list = config.getStringList("miners");
    list.add("player");
    config.set("miners", list);
    saveConfig();

    Писал с телефона, так что могут быть ошибки
     

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