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

  • Автор темы Автор темы 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();
       
    }
   
}


Но почему-то не работает. Хотя я и не разобрался, как достать значение правильно. 🙂
 
Ну... Насколько я смотрю, ты пытаешся вытащить СПИСОК (с никами) используя getString()
лучше бы юзать getStringList() и проверять содержит ли он ник..
 
Ну... Насколько я смотрю, ты пытаешся вытащить СПИСОК (с никами) используя getString()
лучше бы юзать getStringList() и проверять содержит ли он ник..
о, спасиб. Сейчас попробую!
Ну... Насколько я смотрю, ты пытаешся вытащить СПИСОК (с никами) используя getString()
лучше бы юзать getStringList() и проверять содержит ли он ник..

Попробовал, но почему-то не хочет работать. Наверное, я не правильно записываю конфиг. Сам конфиг скину.
Код:
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
 
о, спасиб. Сейчас попробую!


Попробовал, но почему-то не хочет работать. Наверное, я не правильно записываю конфиг. Сам конфиг скину.
Код:
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
надо Miners:
- ник1
- ник2
- ник3
 
Спасибо!

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

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

Писал с телефона, так что могут быть ошибки
 
Назад
Верх