Skip to content

アーキテクチャとMixinの解説 (MC 26.1.2)

本書では、Minecraft 26.1.2 における Item Clumps の内部パッケージ構成、クラス階層、Mixin対象、Shadowメンバー、注入ポイントを解説します。


🌳 パッケージ階層とクラス図

net.instantgratification.item_clumps

├── ItemClumpsFabric.java                   [Main Entrypoint / GameRules Registration]

├── config/
│   ├── ItemClumpsConfig.java               [Configuration POJO / Gson Persistence]
│   ├── ModMenuIntegration.java             [ModMenuApi Provider / Cloth Config Factory]
│   └── ClothConfigScreenHelper.java        [Cloth Config v2 Screen Factory]

└── mixin/
    ├── HopperBlockEntityMixin.java         [Hopper Drip Extraction Mixin]
    └── ItemEntityMixin.java                [Mega-Stack Aggregation & Smart Pickup Mixin]

🛠️ Mixinターゲットと注入箇所の完全解説

1. ItemEntityMixin.java

  • 対象クラス: net.minecraft.world.entity.item.ItemEntity
  • 親クラス拡張: extends net.minecraft.world.entity.Entity
メンバー / メソッドアノテーション注入ポイント役割
getItem()@Shadowなしアイテムスタックを取得。
setItem(ItemStack)@Shadowなしスタックを変更しトラッカー情報を更新。
target@Shadowなし対象プレイヤーのUUID。
pickupDelay@Shadowなし拾得遅延タイマーのティック数。
age@Shadowなし消滅寿命タイマーのティック数 ($0$ 〜 $6000$)。
tick@Inject@At("HEAD")ネームタグの表示状態を動的に更新。
setItem@Inject@At("TAIL")スタック変更時にネームタグ更新を起動。
isMergable@Inject@At("HEAD"), cancellable = trueスタック判定を max_clump_size ルールで上書き。
mergeWithNeighbours@ModifyArgsINVOKE -> AABB.inflate(DDD)水平方向引数 ($0$ と $2$) を merge_radius に適合。
tryToMerge@Inject@At("HEAD"), cancellable = true結合計算と最新寿命の継承を実行。
playerTouch@Inject@At("HEAD"), cancellable = trueクリーンなバニラスタックで分割インベントリ分配。

2. HopperBlockEntityMixin.java

  • 対象クラス: net.minecraft.world.level.block.entity.HopperBlockEntity
メソッドアノテーション注入ポイント役割
addItem(Container, ItemEntity)@Inject@At("HEAD"), cancellable = trueホッパーにメガスタックから1個ずつ ($2.5$ 個/秒) 抽出。

🔗 関連ドキュメント (MC 26.1.2)

Official documentation & web portal for Dasik Igaijinn mods.