🏗️ アーキテクチャと Mixin 注入ターゲット一覧
本文書では、パッケージ構成、テストスイート、および Agrarian Reform の全 Java Mixin 注入先について解説します。
📦 パッケージ構造とディレクトリ階層
net.instantgratification.agrarianreform
├── AgrarianGameRules.java # 15 static GameRules & transient debug mode
├── AgrarianReformFabric.java # ModInitializer entrypoint, lifecycle hooks, 6D use-block
├── client
│ └── AgrarianReformClient.java # ClientModInitializer & morning moisture tint
├── config
│ ├── AgrarianConfig.java # Global JSON config template (Schema v2) & dirty-tracking
│ ├── ModMenuIntegration.java # ModMenu API integration
│ └── YaclScreenHelper.java # Isolated 3-tab YACL v3 client GUI builder
├── continuum
│ ├── ContinuumData.java # SavedDataType dimension persistence & 30-day pruning
│ ├── ContinuumManager.java # ServerChunkEvents listeners & 5-crops/tick queue
│ └── CropScanner.java # Sub-chunk palette pre-filtering & speed estimator
├── crop
│ └── AgrarianCropRules.java # O(1) universal crop auto-population & dynamic GameRules
├── mixin
│ ├── BlockColorsMixin.java # Client block color provider intercept
│ ├── BlockStateBaseMixin.java # Random tick speedup/slowdown & max-age early-break
│ ├── CropBlockMixin.java # Growth speed, rain spurt, rustle sound mixin
│ └── FarmlandBlockMixin.java # Soft Step trample & Chebyshev concentric hydration
├── util
│ ├── AgrarianTags.java # Datapack tag keys (#c:crops, #soft_step_boots)
│ ├── GrowthHelper.java # Concentric Chebyshev math, bare-foot trample logic
│ ├── ModVersionGuard.java # Startup API class check guard (Knot resolution)
│ └── SoundHelper.java # Audio debouncing & primitive Int2Long collectionsヘッドレス自動テスト構成 (src/test/java)
net.instantgratification.agrarianreform
├── config
│ └── AgrarianConfigTest.java # Schema stability, multiplier hierarchy, dirty tracking
└── continuum
└── ContinuumMathTest.java # Delta math, frozen scaling, 30-day pruning, Chebyshev geometry🎯 完全な Mixin 注入ターゲット対照表
| Mixin クラス | 対象 Minecraft クラス | アノテーションと注入箇所 | 役割 |
|---|---|---|---|
FarmlandBlockMixin | net.minecraft.world.level.block.FarmlandBlock | @Inject(method = "fallOn", at = @At("HEAD"), cancellable = true) | 踏み荒らしを検知し、素足スキップ、軽歩判定、およびプレイヤー限定免疫を制御。 |
FarmlandBlockMixin | net.minecraft.world.level.block.FarmlandBlock | @Inject(method = "isNearWater", at = @At("HEAD"), cancellable = true) | 4ブロックの水源判定を同心チェビシェフリング ($r=1 \to \text{maxRange}$) と純水源判定に置換。 |
CropBlockMixin | net.minecraft.world.level.block.CropBlock | @ModifyReturnValue(method = "getGrowthSpeed", at = @At("RETURN")) | 異なる種類の作物が隣接している場合に +10% の混作生物多様性ボーナスを適用。 |
CropBlockMixin | net.minecraft.world.level.block.CropBlock | @Inject(method = "randomTick", at = @At("HEAD"), cancellable = true) | 降雨時に作物の成長を加速させる事前判定。 |
CropBlockMixin | net.minecraft.world.level.block.CropBlock | @Inject(method = "randomTick", at = @At("RETURN")) | 成長段階が進行した際に緑色の祝福パーティクルを発生。 |
CropBlockMixin | net.minecraft.world.level.block.CropBlock | @Inject(method = "entityInside", at = @At("HEAD")) | 作物の擦れ音をクールダウン制御を伴って再生。 |
BlockStateBaseMixin | net.minecraft.world.level.block.state.BlockBehaviour$BlockStateBase | @Inject(method = "randomTick", at = @At("HEAD"), cancellable = true) | ランダム刻をフックして成長速度を調整し、最大段階達成時は早期終了。 |
BlockColorsMixin | net.minecraft.client.color.block.BlockColors | @Inject(method = "createDefault", at = @At("RETURN")) | 朝の土壌湿り気カラーを登録(ティック 23000 〜 2000)。 |
💾 ワールド永続化ストレージとチャンク NBT の分離
Agrarian Reform はタイムスタンプデータを個別のチャンクファイルから完全に分離して保持します:
┌─────────────────────────────────────────────────────────────┐
│ STORAGE SEPARATION │
├─────────────────────────────────────────────────────────────┤
│ 1. DIMENSION STORAGE (data/agrarian_reform_continuum.dat) │
│ ├── ContinuumData (SavedDataType) │
│ └── Stores Map<ChunkPos (Long), UnloadTimestamp (Long)> │
│ └── Auto-prunes entries older than 30 days on save │
│ └── Zero impact on chunk NBT or chunk dirty flags │
│ │
│ 2. CHUNK STORAGE (region/r.X.Z.mca) │
│ ├── LevelChunk NBT (Block States, Tile Entities) │
│ └── ChunkAccess.unsaved flag │
│ └── Only marked TRUE when setBlock() changes a state │
└─────────────────────────────────────────────────────────────┘See also: コンティニュアム (オフライン成長持続), パフォーマンスとキュー調整, and 開発環境の構築とビルド.
