Json Config. как? 1.7.10

107
0
В моде есть два Модуля. Первый из из них работает на сервере и на клиенте, а второй только на сервере.
У этих модулей разные конфиги. Как создать разные конфиги? 
И вопрос. как конфигам задать свои имена?
Создаю конфиг так: 
Код:
Configuration config = new Configuration(this.configFile);
        config.load();
        Записываю и беру из конфига....
        config.save();
preInit:
Код:
client = Config.InitClient(event.getSuggestedConfigurationFile());
InitClient
Код:
    public static boolean InitClient(File config) {
        instance = new Config(config);
        boolean result = instance.Load();
        return result;
     }
 

timaxa007

Модератор
5,831
409
672
К примеру можно так:
Код:
    @Mod.EventHandler
    public void preInit(cpw.mods.fml.common.event.FMLPreInitializationEvent event) {

        Configuration config1 = new Configuration(new File(event.getModConfigurationDirectory(), "/primary.cfg"));
        config1.load();

        config1.save();
        
        Configuration config2 = new Configuration(new File(event.getModConfigurationDirectory(), "/secondary.cfg"));
        config2.load();

        config2.save();
        
    }
 

timaxa007

Модератор
5,831
409
672
Возможно, использовать ProxySide. В каждом прокси использовать свои конфиги.
 
107
0
timaxa007 написал(а):
Возможно, использовать ProxySide. В каждом прокси использовать свои конфиги.
Ох. Я Прокси не понял. до конца. 
Знаю что есть два файла отдельных, один за сервер отвечает и другой за клиент. но как с ними работать не пойму. 
Может знаешь гайд годный?
 

timaxa007

Модератор
5,831
409
672
Эм... Как-бы годного гайда я не находил.
[merge_posts_bbcode]Добавлено: 30.03.2016 11:24:37[/merge_posts_bbcode]

Код:
@Mod(modid = YourMod.MODID, name = YourMod.NAME, version = YourMod.VERSION)
public class YourMod {

    public static final String
    MODID = "MODID",
    NAME = "NAME",
    VERSION = "0.001";

    @Mod.Instance(MODID) public static YourMod instance;

    @SidedProxy(modId = MODID, serverSide = "path.ProxyCommon", clientSide = "path.ProxyClient")
    public static ProxyCommon proxy;

    @Mod.EventHandler
    public void preInit(cpw.mods.fml.common.event.FMLPreInitializationEvent event) {
        proxy.config(event.getModConfigurationDirectory());
    }

}
Код:
public class ProxyCommon {

    public void config(File file) {
        Configuration config1 = new Configuration(new File(file, "/server.cfg"));
        config1.load();

        config1.save();
    }

}
Код:
public class ProxyClient extends ProxyCommon {

    public void config(File file) {
        Configuration config1 = new Configuration(new File(file, "/client.cfg"));
        config1.load();

        config1.save();
    }

}
 

timaxa007

Модератор
5,831
409
672
Код:
serverSide = "path.ProxyCommon"
Нужно указать 'абсолютный путь до класса' который будет работать на серверной стороне.

Код:
clientSide = "path.ProxyClient"
Нужно указать 'абсолютный путь до класса' который будет работать на клиентской стороне.

Код:
public static ProxyCommon proxy;
(Если не ошибаюсь) Где-то какой ASM (или рефлексия) будет менять этот класс на 'абсолютный путь до класса' серверной или клиентской стороны. Но как правило должно стоять класс серверной стороны.

Код:
proxy.config(event.getModConfigurationDirectory());
Используем переменную прокси и используем метод из прокси-класов (которое нужно будет создать, если этого метода нету в них).

Код:
event.getModConfigurationDirectory()
Путь до директории с конфиг-файлами.

Код:
new File(file, "/client.cfg")
Первый аргумент путь до директории, второй аргумент путь до файла. (Можно одним аргументом обойтись, просто соединив путь через "+".)
[merge_posts_bbcode]Добавлено: 30.03.2016 11:56:36[/merge_posts_bbcode]

Tsyklop написал(а):
буду разбираться.
Удачи. Есть урок только о её создании, а не о её работа способности.

Tsyklop написал(а):
Спасибо большое
Пожалуйста.
 
107
0
timaxa007, Появился такой вопрос. 
Вот в конфигах есть штуки как список, тобишь туда вписываешь допустим блоки(mod:id) и они что-то делают. 
Вопрос как такое сделать? Записывать в ArrayList?
Есть ли где-то такая реализация?
 

timaxa007

Модератор
5,831
409
672
Tsyklop написал(а):
Вопрос как такое сделать?
Основы по созданию своего файла с текстом. Проверять строки на пропуски, затем нужно текст из файла подвергаться различным действиями. Разделения текста, типа того:
Код:
String[] sp = "test=test".split("=");
Много чего делаеться

Tsyklop написал(а):
Записывать в ArrayList?
Кто как будет использовать.

Tsyklop написал(а):
Есть ли где-то такая реализация?
В самом Configuration'е, вроде как есть.
 
107
0
timaxa007 написал(а):
Основы по созданию своего файла с текстом. Проверять строки на пропуски, затем нужно текст из файла подвергаться различным действиями. Разделения текста, типа того:
Ну вот допустим. 
Есть такое:
Код:
Blocks{
minecraft:cobblestone-1
}

Такое сложно сделать?
 

timaxa007

Модератор
5,831
409
672
Tsyklop, точно сказать не смогу, по идеи не сложно. Я пока-что не создавал чтение/запись файлы с другими элементами текста.
 
1,137
5
3
class ABC{
public ABC(int a,String f){
f=a;
a=f;
}
int f;
String a;
}
...
ABC abc=new ABC(1,"hi");
Gson gson = new GsonBuilder().setPrettyPrinting(true).create();
gson.toJson(abc);
out:
{
  "f":1,
  "a": "hi"
}

Обратно
abc = gson.fromJson(str, ABC.class);

Все методы навскидку, не особо помню названия. а посмотреть не могу
 
Сверху