Skip to content

⚙️ Двухуровневая архитектура конфигурации

Agrarian Reform реализует двухуровневую систему настроек, объединяющую шаблоны JSON, правила игры GameRules и отслеживание модовых культур.


🏗️ Обзор архитектуры

                      ШАБЛОН ГЛОБАЛЬНОГО КОНФИГА (Схема v2)
                         config/agrarian-reform.json

                                     ▼ (Запуск сервера / встроенного мира)
                         МЕНЕДЖЕР ДИНАМИЧЕСКИХ ПРАВИЛ
                   Регистрирует правила по умолчанию и обнаруживает культуры

                                     ▼ (Runtime Administration)
        ИНТЕРФЕЙС MODMENU & YACL v3 (3 ВКЛАДКИ) <---> КОМАНДЫ /gamerule

                                     ▼ (Автосохранение при выгрузке / событии сохранения)
                       THREAD-SAFE DIRTY-TRACKING PERSISTENCE

1. Шаблон глобальной конфигурации (config/agrarian-reform.json)

Файл JSON содержит начальные настройки для новых миров. Изменение config/agrarian-reform.json не влияет на уже существующие миры.

2. Активные правила мира (agrarian_reform:*)

Текущие миры управляются напрямую правилами игры Minecraft. Изменения через интерфейс или /gamerule применяются мгновенно.

3. Потокобезопасное сохранение и устойчивость к удалению модов

  • Асинхронное сохранение: При обнаружении культур память помечается флагом dirty = true. Запись на диск происходит планово во время сохранения мира.
  • Безопасность удаления: Идентификаторы культур хранятся в виде строк. Удаление мода не вызывает ошибок разбора и не повреждает файл сохранения.

📜 Файл по умолчанию config/agrarian-reform.json (Schema v2)

json
{
  "configVersion": 2,
  "hydrationSourceRange": 8,
  "hydrationFlowingRange": 4,
  "pureWaterHydrationOnly": false,
  "rainGrowthAcceleration": 1,
  "growthBiodiversityBonus": true,
  "totalTrampleImmunity": false,
  "trampleImmunityPlayersOnly": false,
  "alwaysWetFarmland": false,
  "seedsGrowGrass": true,
  "rightClickHarvest": true,
  "universalBonemeal": true,
  "globalGrowthMultiplier": 100,
  "ambientCropRustle": true,
  "ambientVitalityParticles": true,
  "forcedCrops": [
    "minecraft:wheat",
    "minecraft:carrots",
    "minecraft:potatoes",
    "minecraft:beetroots"
  ],
  "forcedGrowthMultipliers": {
    "minecraft:wheat": 0,
    "minecraft:carrots": 0,
    "minecraft:potatoes": 0,
    "minecraft:beetroots": 0
  }
}

🖥️ Опциональный клиентский GUI (ModMenu и YACL v3)

При наличии ModMenu и YACL v3 доступно графическое меню настроек с 3 вкладками:

  1. Общие параметры: Ползунки радиуса увлажнения ($0 \to 32$), чистая вода, ускорение в дождь ($0 \to 10$), биоразнообразие, сбор урожая ПКМ и костная мука.
  2. Атмосфера и эффекты: Защита от вытаптывания, ограничение игроками/питомцами, постоянная влажность почвы, шелест растений и частицы радости.
  3. Множители культур: Список всех культур по алфавиту с настройкой скорости ($-1 = \text{заморожено}$, $0 = \text{глобальная}$, $\ge 100 = \text{пользовательская}$).
java
public class ModMenuIntegration implements ModMenuApi {
    @Override
    public ConfigScreenFactory<?> getModConfigScreenFactory() {
        if (FabricLoader.getInstance().isModLoaded("yet-another-config-lib")) {
            return YaclScreenHelper::createScreen;
        }
        return parent -> null;
    }
}

🛡️ Безопасность на сервере: Код интерфейса YACL полностью изолирован в YaclScreenHelper и никогда не вызывается на выделенном сервере!


See also: Игровые правила (GameRules), Реестр растений и универсальные культуры, and Настройка среды разработки и сборка.

Official documentation & web portal for Dasik Igaijinn mods.