⚙️ Двухуровневая архитектура конфигурации
Agrarian Reform реализует двухуровневую систему настроек, объединяющую шаблоны JSON, правила игры GameRules и отслеживание модовых культур.
🏗️ Обзор архитектуры
ШАБЛОН ГЛОБАЛЬНОГО КОНФИГА (Схема v2)
config/agrarian-reform.json
│
▼ (Запуск сервера / встроенного мира)
МЕНЕДЖЕР ДИНАМИЧЕСКИХ ПРАВИЛ
Регистрирует правила по умолчанию и обнаруживает культуры
│
▼ (Runtime Administration)
ИНТЕРФЕЙС MODMENU & YACL v3 (3 ВКЛАДКИ) <---> КОМАНДЫ /gamerule
│
▼ (Автосохранение при выгрузке / событии сохранения)
THREAD-SAFE DIRTY-TRACKING PERSISTENCE1. Шаблон глобальной конфигурации (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 вкладками:
- Общие параметры: Ползунки радиуса увлажнения ($0 \to 32$), чистая вода, ускорение в дождь ($0 \to 10$), биоразнообразие, сбор урожая ПКМ и костная мука.
- Атмосфера и эффекты: Защита от вытаптывания, ограничение игроками/питомцами, постоянная влажность почвы, шелест растений и частицы радости.
- Множители культур: Список всех культур по алфавиту с настройкой скорости ($-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 Настройка среды разработки и сборка.
