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

Статус
Закрыто для дальнейших ответов.

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: 'причина'
 
Открыл снова ,нужна помощь.
Как правильно получить строку type? В консоль пишет null. Вот код
Код:
            String rules = Main.instance.getSuperConfig().getString(args[0]);
            String type = Main.instance.getSuperConfig().getString(rules + ".type");
Вот конфиг
Код:
1.1:
  type: ban
 
Открыл снова ,нужна помощь.
Как правильно получить строку type? В консоль пишет null. Вот код
Код:
            String rules = Main.instance.getSuperConfig().getString(args[0]);
            String type = Main.instance.getSuperConfig().getString(rules + ".type");
Вот конфиг
Код:
1.1:
  type: ban
Посмотри в моем примере.
https://github.com/alexandrage/Example/blob/master/src/Example/sfg/StackList.java
https://github.com/alexandrage/Example/blob/master/src/Example/sfg/Stack.java
 
Код:
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();
 
P.s ключи с точками лучше не делай.
Ещё такой вопрос , как при таком условии должен выглядеть конфиг и как доставать значение , которые равно значению аргумента команды .
 
Ещё такой вопрос , как при таком условии должен выглядеть конфиг и как доставать значение , которые равно значению аргумента команды .
Код:
1:
    type: ban
    reason: 'причина'
2:
    type: ban
    reason: 'причина'

Bans bans = new Bans(this.getConfig());
Ban ban = bans.getBan("1") bans.getBan("2")
 
Последнее редактирование:
Вариант с конструктором.

Код:
    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);
    }
 
Вариант с конструктором.

Код:
    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);
    }
Спасибо , попробую.
 
Вариант с конструктором.

Код:
    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);
    }
Не помогло,такая же ошибка.Вариант с конструктором не помог.
 
Не может такого быть.
Вот ошибка 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;
    }
}
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх