1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите как достать строку из конфига правильно

Тема в разделе "Разработка плагинов для новичков", создана пользователем TorwaldOswarld, 19 фев 2018.

Статус темы:
Закрыта.
  1. Автор темы
    TorwaldOswarld

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

    Баллы:
    78
    Имя в Minecraft:
    PuxTa4
    Всем привет.Нужно достать строку ,но при условии того ,что строка равна аргументу команды.выдает такую ошибку ОШИБКА(Клик)
    Ругается на эту строку
    Код:
    List<String> rules = Main.instance.getSuperConfig().getStringList(args[1]);
    Вот код
    Код:
                List<String> rules = Main.instance.getSuperConfig().getStringList(args[1]);
                for(String rule : rules){
                    String type = Main.instance.getSuperConfig().getString(rule + ".reason");
                    if(type.equals("ban")){
                        Bukkit.dispatchCommand(Bukkit.getConsoleSender(),"say test" );
                    }
                }
    Вот конфиг
    Код:
    1.1:
        type: ban
        reason: 'причина'
     
  2. Cool_boy

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

    Баллы:
    96
    Имя в Minecraft:
    prettydude
    args[0]?
     
  3. Автор темы
    TorwaldOswarld

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

    Баллы:
    78
    Имя в Minecraft:
    PuxTa4
    Чёт затупил ... Спасибо
     
  4. Автор темы
    TorwaldOswarld

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

    Баллы:
    78
    Имя в Minecraft:
    PuxTa4
    Открыл снова ,нужна помощь.
    Как правильно получить строку type? В консоль пишет null. Вот код
    Код:
                String rules = Main.instance.getSuperConfig().getString(args[0]);
                String type = Main.instance.getSuperConfig().getString(rules + ".type");
    Вот конфиг
    Код:
    1.1:
      type: ban
     
  5. alexandrage

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

    Баллы:
    173
    Посмотри в моем примере.
    https://github.com/alexandrage/Example/blob/master/src/Example/sfg/StackList.java
    https://github.com/alexandrage/Example/blob/master/src/Example/sfg/Stack.java
     
  6. alexandrage

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

    Баллы:
    173
    Код:
    package Example.sfg;
    
    import java.util.HashMap;
    import java.util.Map;
    
    import org.bukkit.configuration.file.FileConfiguration;
    
    public class Bans {
        private Map<String, Ban> bans = new HashMap<String, Ban>();
    
        public Bans(FileConfiguration cfgs) {
            for (String cfg : cfgs.getKeys(false)) {
                bans.put(cfg, new Ban(cfgs.getConfigurationSection(cfg)));
            }
        }
        
        public Ban getBan(String name) {
            return bans.get(name);
        }
    }

    Код:
    package Example.sfg;
    
    import org.bukkit.configuration.ConfigurationSection;
    
    public class Ban {
        private String type;
        private String reason;
        
        public Ban(ConfigurationSection config) {
            this.type = config.getString("type");
            this.reason = config.getString("reason");
        }
        
        public String getType() {
            return this.type;
        }
        
        public String getReason() {
            return this.reason;
        }
    }

    Код:
            Bans bans = new Bans(this.getConfig());
            bans.getBan("1").getType();
            bans.getBan("1").getReason();
     
  7. alexandrage

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

    Баллы:
    173
    P.s ключи с точками лучше не делай.
     
  8. Автор темы
    TorwaldOswarld

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

    Баллы:
    78
    Имя в Minecraft:
    PuxTa4
    Спасибо большое
     
  9. Автор темы
    TorwaldOswarld

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

    Баллы:
    78
    Имя в Minecraft:
    PuxTa4
    Ещё такой вопрос , как при таком условии должен выглядеть конфиг и как доставать значение , которые равно значению аргумента команды .
     
  10. alexandrage

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

    Баллы:
    173
    Код:
    1:
        type: ban
        reason: 'причина'
    2:
        type: ban
        reason: 'причина'
    Bans bans = new Bans(this.getConfig());
    Ban ban = bans.getBan("1") bans.getBan("2")
     
  11. Автор темы
    TorwaldOswarld

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

    Баллы:
    78
    Имя в Minecraft:
    PuxTa4
    Выдает ошибку. http://prntscr.com/ih9k0j
    bans
    Код:
    bans.put(cfg, new Ban(cfgs.getConfigurationSection(cfg)));
    ban
    Код:
    this.type = config.getString("type");
    commands
    Код:
               
    Bans bans = new Bans(Main.instance.getConfig());
    
     
    Последнее редактирование: 20 фев 2018
  12. Автор темы
    TorwaldOswarld

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

    Баллы:
    78
    Имя в Minecraft:
    PuxTa4
    Не могу создать объект Bans и передать ему параметр getConfig
     
  13. alexandrage

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

    Баллы:
    173
    Bans bans = new Bans(this.getConfig());
     
  14. alexandrage

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

    Баллы:
    173
    Вариант с конструктором.

    Код:
        FileConfiguration cfgs;
        public CommandListener(FileConfiguration cfgs) {
            this.cfgs = cfgs;
        }
    
        @Override
        public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
            Bans bans = new Bans(this.cfgs);
        }
     
  15. Автор темы
    TorwaldOswarld

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

    Баллы:
    78
    Имя в Minecraft:
    PuxTa4
    Спасибо , попробую.
     
  16. Автор темы
    TorwaldOswarld

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

    Баллы:
    78
    Имя в Minecraft:
    PuxTa4
    Не помогло,такая же ошибка.Вариант с конструктором не помог.
     
  17. alexandrage

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

    Баллы:
    173
    Не может такого быть.
     
  18. Автор темы
    TorwaldOswarld

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

    Баллы:
    78
    Имя в Minecraft:
    PuxTa4
    По позже буду дома ,скину ошибку и весь плагин полностью.
     
  19. Автор темы
    TorwaldOswarld

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

    Баллы:
    78
    Имя в Minecraft:
    PuxTa4
    Вот ошибка https://prnt.sc/ihfl4p
    Main
    Код:
    package ru.OneJaverts.Main;
    
    import java.io.File;
    
    import org.bukkit.configuration.file.FileConfiguration;
    import org.bukkit.configuration.file.YamlConfiguration;
    import org.bukkit.plugin.java.JavaPlugin;
    
    public class Main extends JavaPlugin {
        public static Main instance = null;
        String permissions = "banandmute";
        String no_permission = "&4 Не достаточно привилегий";
    
        public void onLoad(){
            instance = this;
        }
    
        FileConfiguration cfgs;
    
        public void onEnable()
        {
            saveDefaultConfig();
            this.permissions = getConfig().getString("permission");
            this.no_permission = getConfig().getString("No_PermissionMessage");
            getCommand("p").setExecutor(new Commands(this.cfgs));
        }
    }
    
    Ban
    Код:
    package ru.OneJaverts.Main;
    
    import org.bukkit.configuration.ConfigurationSection;
    
    public class Ban {
    
        private String type;
        private String reason;
        private String time;
    
    
        public Ban(ConfigurationSection config) {
            this.type = config.getString("type");
    //        this.time = config.getString("time");
            this.reason = config.getString("reason");
        }
    
        public String getType() {
            return this.type;
        }
    
        public String getReason() {
            return this.reason;
        }
    //
        public String getTime() {
            return time;
        }
    
    }
    
    Bans
    Код:
    package ru.OneJaverts.Main;
    
    import org.bukkit.configuration.file.FileConfiguration;
    
    import java.util.HashMap;
    import java.util.Map;
    
    public class Bans {
    
        private Map<String, Ban> bans = new HashMap<String, Ban>();
    
        public Bans(FileConfiguration cfgs) {
            for (String cfg : cfgs.getKeys(false)) {
                bans.put(cfg, new Ban(cfgs.getConfigurationSection(cfg)));
            }
        }
    
        public Ban getBan(String name) {
            return bans.get(name);
        }
    
    
    }
    
    Commands
    Код:
    package ru.OneJaverts.Main;
    
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandExecutor;
    import org.bukkit.command.CommandSender;
    import org.bukkit.configuration.file.FileConfiguration;
    
    public class Commands implements CommandExecutor {
    
    
        FileConfiguration cfgs;
    
        public Commands(FileConfiguration cfgs) {
            this.cfgs = cfgs;
        }
        @Override
        public boolean onCommand(CommandSender sender, Command command, String s, String[] args) {
            if (!sender.hasPermission(Main.instance.permissions)) {
                sender.sendMessage(ChatColor.translateAlternateColorCodes('&', Main.instance.no_permission));
                return true;
            }
            if ((command.getName().equalsIgnoreCase("p")) && (args.length >= 0)) {
                if (args.length != 1) {
                    sender.sendMessage(ChatColor.RED + "Недостаточно аргументов!");
                    return true;
                }
                String name = args [0];
                Bans bans = new Bans(this.cfgs);
                    sender.sendMessage("Работает!");
                    bans.getBan("1");
                    bans.getBan("2");
                    sender.sendMessage(bans.getBan("1").getType());
                        if (bans.getBan("rules").getType() == null) {
                            sender.sendMessage("type null");
                        } else sender.sendMessage("Type " + bans.getBan("rules").getType());
                    }
            return true;
        }
    }
    
     
  20. Slavkaa

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

    Баллы:
    76
    Имя в Minecraft:
    Slavok2001
    cfgs в Main равен null
     
Статус темы:
Закрыта.

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