Иконка ресурса

Перевод Аннотации конфигурации

Версия(и) Minecraft
1.12.x
Источник
https://mcforge.readthedocs.io/en/1.12.x/config/annotations/
СобакаConfig

Аннотация @Config является альтернативой Configuration.

Содержание
  • Основы
  • Использование @Config
  • Использование @Comment
  • Использование @name
  • Использование @RangeInt
  • Использование @RangeDouble
  • Использование @LangKey
  • Использование @RequiresMcRestart
  • Использование @RequiresWorldRestart
  • Подкатегории
  • @Ignore
Основы
Поля класса, помеченного @Config будут преобразованные в свойства конфигурации. Конкретные поля можно помечать для добавления информации, используя подмножество аннотаций, предоставляемых в @Config.

Примечание
Конфигурационные значения enum генерируют комментарий длиной в столько строк, сколько enum имеет значения.



Хорошим примером использования является Forge's Test

Использование @Config
Эта аннотация используется для обозначения класса как контейнера для параметров конфигурации.

Код:
Параметр  |  Тип     |  Значение по умолчанию  |  Описание
modid     |  String  |  N/A                    |  Идентификатор мода связанного с этим конфигом
name      |  String  |  modid                  |  Имя для файла конфига
type      |  Type    |  Type.INSTANCE          |  Сейчас имеется только один вариант значения, в будущем че-то еще сделают
category  |  String  |  "general"              |  Категория корневого элемента. Если пустая строка, то корневая категория отключена.
Важно
Если вы отключите корневую категорию, это вызовет проблемы, если вы не создадите подкатегории.

Использование @Comment
Добавление этой аннотации к свойству будет добавлять комментарий в конфиге

Код:
Параметр  |  Тип              |  Значение по умолчанию  |  Описание
value     |  String[]/String  |  N/A                    |  Множество строк комментариев, либо одна строка

Пример
Java:
@Comment({
  "You can add comments using this",
  "and if you supply an array it will be multi-line"
})
public static boolean doTheThing = true;
Это создало бы следующий конфиг
Код:
# You can add comments using this
# and if you supply an array it will be multi-line
B:doTheThing=true

@name
Позволяет вам давать красивые, читаемые имена вашим свойствам в конфиге

Код:
Параметр  |  Тип                  |  Значение по умолчанию  |  Описание
value     |  String               |  N/A

Пример
Java:
@Name("FE/T for the thing")
public static int thingFE = 50;
Это создало бы следующий конфиг
Код:
I:"FE/T for the thing"=50

@RangeInt
Позволяет вам задавать пределы в которых могут находить значения свойства типа int

Код:
Параметр  |  Тип                  |  Значение по умолчанию  |  Описание
min       |  int                  |  Integer.MIN_VALUE
max       |  int                  |  Integer.MAX_VALUE

Пример
Java:
@RangeInt(min = 0)
public static int thingFECapped = 50;
Это создало бы следующий конфиг
Код:
# Min: 0
# Max: 2147483647
I:thingFECapped=50

@RangeDouble
Позволяет вам задавать пределы в которых могут находить значения свойства типа double

Код:
Параметр  |  Тип     |  Значение по умолчанию  |  Описание
min       |  double  |  Double.MIN_VALUE
max       |  double  |  Double.MAX_VALUE

Пример
Java:
@RangeDouble(min = 0, max = Math.PI)
public static double chanceToDrop = 2;
Это создало бы следующий конфиг
Код:
# Min: 0.0
# Max: 3.141592653589793
D:chanceToDrop=2.0
Примечание
В 1.12.2 не существует @RangedFloat или @RangedLong или любого другого варианта диапазона

@LangKey
Если вы хотите добавить перевод для вашего конфига в меню настроек мода, добавьте к полю конфига @LangKey.

Код:
Параметр  |  Тип        |  Значение по умолчанию  |  Описание
value     |  String     |  N/A

@RequiresMcRestart
Помеченные этой аннотацией свойства будут обновляться только при рестарте игры.
Это также будет требовать рестарт игры, если значение изменяется в меню конфигурации.

Пример
Java:
@RequiresMcRestart
public static boolean overlayEnabled = false;
@RequiresWorldRestart
Это заставит мир перезагрузиться, если свойство конфига измениется через меню настроек мода.

Пример
Java:
@RequiresWorldRestart
public static boolean someOtherworldlyThing = false;

Подкатегории
Подкатегория — это способ группировки определенных (обычно связанных) конфигурационных параметров вместе, и он должен использоваться, чтобы облегчить навигацию по конфигурационному файлу. Чтобы создать подкатегорию нужно сделать объект и добавить его в качестве статического поля в классе родительской категории. Его поля станут свойствами конфигурации в этой подкатегории.

Пример
Java:
@Config(modid = "modid")
public class Configs {
  public static SubCategory subcat = new SubCategory();

  public static class SubCategory {
    public boolean someBool;

    public int relatedInt;
  }
}
В конфигурационном файле это сделает следующее
Код:
subcat {
  B:someBool=false

  I:relatedInt=0
}

@Ignore
Добавление этой аннотации к свойству в классе конфига приведет к тому, что ConfigManager пропустит его при обработке файла конфигурации

Примечание
Это будет работать только на Forge версии 1.12.2-14.23.1.2602 и позже, так как функция была добавлена в этом обновлении

(Если вам нужно отследить изменение полей конфига, то используйте эти события: Таблица событий - MC Modding Учебник п.п.)
Автор
hohserg
Просмотры
2,172
Первый выпуск
Обновление
Оценка
0.00 звёзд 0 оценок

Другие ресурсы пользователя hohserg

Последние обновления

  1. Исправлен пример подкатегории

    Оказывается, не имеет большого смысла, если класс подкатегории приватный
Сверху