[1.7.10] MJUtils

1,200
37
237
То есть, ты написал вещь, что в случае неудачи записи объекта, создаст новый из класса-образца?

Только зачем в write методе (у тебя build) возвращать сам объект?
 
2,505
81
397
Ой, не write, а read. Опечатался :)


Аналог write -> rewrite
 
1,200
37
237
Ну.. тогда, вроде, понял. То есть, твой read при неудаче просто вернёт стандартный (созданный какой-то там вещью, а не новым объектом) объект?
 
2,505
81
397
MJaroslav написал(а):
класса-образца
Это не класс-образец. Это лямбда. Обычно использую конструктор целевого класса.


Например есть класс

Код:
public class TestClass
{}

Тогда можно сделать так:
Код:
Supplier<TestClass> factory = TestClass::new;


А можно ничего не указывать. Тогда объект попытается создаться рефлексией из конструктора по-умолчанию.
 
1,200
37
237
Dahaka написал(а):
MJaroslav написал(а):
класса-образца
Это не класс-образец. Это лямбда. Обычно использую конструктор целевого класса.

Лямбда? Тут звучит как оскорбление. Ну.. я имел в виду, что factory создает объект из класса, который получается ещё при создании JSONReader'а


Ладно, задам вопрос иначе: 'А в чОм прикол?'. Просто защита от фейла при неудачи чтения?
 
1,111
47
420
Эх видел бы ты мои обертки которые я пишу в плагинах. Помнится на 1.5к строк зафигачил однажды. Включу ее в свою библиотеку потом.
 

CumingSoon

Местный стендапер
1,634
12
269
Больше не равно лучше. Я видел рендерер в 400 строк Сишного кода. И он был прост и понятен
 
1,111
47
420
Нет ну как. Там много интересных фишек. Я вроде не совсем говно кодер.
 
1,200
37
237
Обновил, но лень было написать:

Код почищен @CoomingSoon'ом (будет в следующем релизе);
Завершены примеры (на GitHub);
Изменена ветка версий (сменаверсииигры.новыйконтент.багофиксы);
Переработаны утилиты рецептов наковальни;
Добавлен возможность добавления блоков в список тех, от ломания которых будут злится свинозомби;
Добавлена интеграция с Thaumcraft.
 
1,200
37
237
Когда будет не лень допилить до цивильного состояния, то можно будет юзать обработчик инициализации так:
Java:
// Инстанс конфигурации, но по прежнему можно использовать класс-наследник от ConfigurationBase.
public static ConfigurationHandler config = new ConfigurationHandler(MODID, "пакет.к.классу.с.полями.конфигурации");
// Прокси, должны наследовать ProxyBase.
@SidedProxy(clientSide = CLINTPROXY, serverSide = COMMONPROXY)
public static ProxyClassName proxy = new ProxyClassName();
// Сам обработчик инициализации, теперь в него можно будет поставить конфигурацию и прокси.
private static ModInitHandler initHandler = new ModInitHandler(MODID, config, proxy);
А сама инициализация в главно классе выглядит так:
Java:
@EventHandler
public void preInit(FMLPreInitializationEvent event) {
    initHandler.preInit(event);
}

@EventHandler
public void init(FMLInitializationEvent event) {
    initHandler.init(event);
}

@EventHandler
public void postInit(FMLPostInitializationEvent event) {
    initHandler.postInit(event);
}

@EventHandler
public void constr(FMLConstructionEvent event) {
    initHandler.findModules(event);
}
Класс с полями конфигурации выглядит так, все нужные поля должны быть public static и иметь аннотацию ConfigField (в ней же все остальные параметры для поля).
Java:
package пакет.к.классу.с.полями.конфигурации;

import mjaroslav.mcmods.mjutils.common.objects.ConfigField;

public class ConfigFields {
    // String поле, стандартная значение "hehehe", комментарий "String value".
    @ConfigField(defaultString = "hehehe", comment = "String value")
    public static String test0;

    // Float поле, стандартное значение не указано, будет использовано 0F.
    @ConfigField(comment = "Float value")
    public static float test1;

    // Int array поле.
    @ConfigField(defaultIntArray = { 4, 3, 2, 1 }, comment = "Int array value")
    public static int[] test2;
}

На данный момент, конечно, всё сыровато, буду редачить, дебажить и пытаться оптимизировать. Также есть задумка для dependencies поля в аннотации Mod.
 
Сверху