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

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

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: 'причина'
 
Пробовал в конструкторе создавать метод cfgs ,как и в commands ,плагин вообще не запускается
getCommand("example").setExecutor(new CommandListener(this.getConfig()));
Если ты пытался разделить конфиги и не знаешь как, то вот.
https://github.com/alexandrage/Example/blob/master/src/Example/sfg/CustomConfig.java
CustomConfig cfgs = new CustomConfig(this, "bans", false);
getCommand("example").setExecutor(new CommandListener(cfgs.getCfg()));
 
Последнее редактирование:
getCommand("example").setExecutor(new CommandListener(this.getConfig()));
Если ты пытался разделить конфиги и не знаешь как, то вот.
https://github.com/alexandrage/Example/blob/master/src/Example/sfg/CustomConfig.java
CustomConfig cfgs = new CustomConfig(this, "bans", false);
getCommand("example").setExecutor(new CommandListener(cfgs.getCfg()));
Спасибо,завтра отпишу ,получилось или нет.
 
Снова открыл . @alexandrage Подскажи ,как сделать чтобы файл bans.yml подгружался из самого плагина и не был пустым?
пробовал cfgs.reload,не загружает .
 
Открываю снова.Если значение в конфиге 1.1 ,то выдает ошибку. Если без точки,то все работает.
Код:
1.1:
   type: ban
   reason: 'причина!'
 
Открываю снова.Если значение в конфиге 1.1 ,то выдает ошибку. Если без точки,то все работает.
Код:
1.1:
   type: ban
   reason: 'причина!'
Ничего удивительного, в getString точка - переход на следующий уровень секции(не знаю как правильно описать)
 
Ничего удивительного, в getString точка - переход на следующий уровень секции(не знаю как правильно описать)
Я это понимаю ,что точка это переход,как сделать ,чтобы не было перехода ?
 
Вот могу предложить вариант с gson.

Код:
package Example;

import java.io.File;
import java.io.IOException;
import java.nio.charset.Charset;

import org.apache.commons.io.FileUtils;

import com.google.gson.Gson;

public class BanUtils {
    public static Bans setBans(String folder, String name) {
        Gson gson = new Gson();
        File file = getFile(folder, name);
        String s = "{}";
        try {
            s = FileUtils.readFileToString(file, Charset.defaultCharset());
        } catch (IOException e) {
            e.printStackTrace();
        }
        return gson.fromJson(s, Bans.class);
    }

    public static File getFile(String folder, String name) {
        File file = new File(folder, name);
        if (!file.exists()) {
            try {
                file.createNewFile();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return file;
    }
}

Код:
package Example;

import java.util.HashMap;
import java.util.Map;

public class Bans {
    private Map<String, Ban> ban = new HashMap<String, Ban>();

    public Ban getBan(String name) {
        return ban.get(name);
    }
}

Код:
package Example;

public class Ban {
    String type;
    String reason;

    Ban(String type, String reason) {
        this.type = type;
        this.reason = reason;
    }

    public String getType() {
        return this.type;
    }

    public String getReason() {
        return this.reason;
    }
}

Код:
        Bans bans =  BanUtils.setBans(this.getDataFolder().getAbsolutePath(), "ban.json");
        bans.getBan("1.1").getType();
        bans.getBan("1.1").getReason();
        bans.getBan("1.2").getType();
        bans.getBan("1.2").getReason();

Код:
{
  "ban": {
    "1.1": {
      "type": "тип",
      "reason": "причина"
    },
    "1.2": {
      "type": "тип",
      "reason": "причина"
    },
    "1.3": {
      "type": "тип",
      "reason": "причина"
    },
    "1.4": {
      "type": "тип",
      "reason": "причина"
    }
  }
}
 
Вот могу предложить вариант с gson.

Код:
package Example;

import java.io.File;
import java.io.IOException;
import java.nio.charset.Charset;

import org.apache.commons.io.FileUtils;

import com.google.gson.Gson;

public class BanUtils {
    public static Bans setBans(String folder, String name) {
        Gson gson = new Gson();
        File file = getFile(folder, name);
        String s = "{}";
        try {
            s = FileUtils.readFileToString(file, Charset.defaultCharset());
        } catch (IOException e) {
            e.printStackTrace();
        }
        return gson.fromJson(s, Bans.class);
    }

    public static File getFile(String folder, String name) {
        File file = new File(folder, name);
        if (!file.exists()) {
            try {
                file.createNewFile();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return file;
    }
}

Код:
package Example;

import java.util.HashMap;
import java.util.Map;

public class Bans {
    private Map<String, Ban> ban = new HashMap<String, Ban>();

    public Ban getBan(String name) {
        return ban.get(name);
    }
}

Код:
package Example;

public class Ban {
    String type;
    String reason;

    Ban(String type, String reason) {
        this.type = type;
        this.reason = reason;
    }

    public String getType() {
        return this.type;
    }

    public String getReason() {
        return this.reason;
    }
}

Код:
        Bans bans =  BanUtils.setBans(this.getDataFolder().getAbsolutePath(), "ban.json");
        bans.getBan("1.1").getType();
        bans.getBan("1.1").getReason();
        bans.getBan("1.2").getType();
        bans.getBan("1.2").getReason();
С gson не работал не разу.
 
Последнее редактирование:
Статус
Закрыто для дальнейших ответов.
Назад
Верх