⚙️ Arsitektur Konfigurasi Dua Tingkat
Agrarian Reform menerapkan sistem konfigurasi dua tingkat yang memadukan template file JSON global dan GameRule aktif di dunia.
🏗️ Gambaran Umum Arsitektur
TEMPLATE KONFIGURASI GLOBAL (Skema v2)
config/agrarian-reform.json
│
▼ (Startup Server / Dunia Terintegrasi)
DYNAMIC GAMERULE MANAGER
Mendaftarkan GameRule dunia & mendeteksi tanaman baru
│
▼ (Runtime Administration)
GUI KLIEN MODMENU & YACL v3 (3 TAB) <---> PERINTAH /gamerule DALAM GAME
│
▼ (Penyimpanan Otomatis Saat Unload / Save)
THREAD-SAFE DIRTY-TRACKING PERSISTENCE1. Template JSON Global (config/agrarian-reform.json)
File ini menyimpan nilai standar yang diterapkan pada dunia baru. Mengedit file ini tidak mengubah GameRule dunia yang sudah ada.
2. GameRule Dunia Aktif (agrarian_reform:*)
Dunia yang berjalan mengelola pengaturan melalui GameRule asli Minecraft. Perubahan lewat GUI atau perintah langsung berlaku seketika.
3. Dirty-Tracking Aman Antar-Thread & Ketahanan Mod
- Penyimpanan Asinkron Berkala: Tanaman baru yang terdeteksi ditandai
dirty = truedan disimpan ke disk pada waktu save rutin dunia. - Keamanan Penghapusan Mod: Data tanaman disimpan sebagai teks biasa sehingga pelepasan mod tidak menyebabkan error parsing.
📜 Bawaan config/agrarian-reform.json (Schema v2)
{
"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
}
}🖥️ Integrasi GUI Klien Opsional (ModMenu & YACL v3)
Saat ModMenu dan YetAnotherConfigLib v3 (YACL) terpasang di klien, menu konfigurasi 3 tab interaktif dapat dibuka:
- Tab Opsi Umum: Pengatur radius pengairan ($0 \to 32$), air murni, akselerasi hujan ($0 \to 10$), biodiversitas, panen klik kanan, dan tepung tulang.
- Tab Imersi & Estetika: Anti-injak tanah garapan, pembatasan pemain/hewan jinak, tanah selalu basah, suara gesekan tanaman, dan partikel berkilau.
- Tab Pengali Tiap Tanaman: Daftar alfabetis dinamis semua tanaman dengan kolom angka ($-1 = \text{beku}$, $0 = \text{warisi global}$, $\ge 100 = \text{kecepatan khusus}$).
public class ModMenuIntegration implements ModMenuApi {
@Override
public ConfigScreenFactory<?> getModConfigScreenFactory() {
if (FabricLoader.getInstance().isModLoaded("yet-another-config-lib")) {
return YaclScreenHelper::createScreen;
}
return parent -> null;
}
}🛡️ Keamanan Server Dedicated: Layar GUI YACL diisolasi di dalam
YaclScreenHelpersehingga server dedicated tidak akan memuat class klien!
See also: Aturan Permainan (GameRules), Registri Tanaman & Tanaman Universal, and Pengaturan Pengembang & Kompilasi.
