Architektur & Mixin-Übersicht (MC 26.1.2)
Dieses Dokument beschreibt die interne Paketstruktur, Klassenhierarchie, Mixin-Ziele, Shadow-Member und Injektionspunkte für Item Clumps auf Minecraft 26.1.2.
🌳 Pakethierarchie & Klassendiagramm
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]🛠️ Vollständige Mixin-Ziele & Injektionsübersicht
1. ItemEntityMixin.java
- Zielklasse:
net.minecraft.world.entity.item.ItemEntity - Oberklassen-Erweiterung:
extends net.minecraft.world.entity.Entity
| Member / Methode | Annotation | Injektionspunkt | Zweck |
|---|---|---|---|
getItem() | @Shadow | N/A | Greift auf den Item-Stapel zu. |
setItem(ItemStack) | @Shadow | N/A | Ändert den Item-Stapel und aktualisiert Tracker-Daten. |
target | @Shadow | N/A | UUID des Zielspielers. |
pickupDelay | @Shadow | N/A | Ticks des Aufhebeverzögerungs-Timers. |
age | @Shadow | N/A | Ticks des Despawn-Alters-Timers ($0\text{ bis }6000$). |
tick | @Inject | @At("HEAD") | Aktualisiert die Sichtbarkeit des Namensschilds dynamisch. |
setItem | @Inject | @At("TAIL") | Aktualisiert das Namensschild bei Änderung des Stapels. |
isMergable | @Inject | @At("HEAD"), cancellable = true | Überschreibt Max-Stapel-Prüfung durch max_clump_size-GameRule. |
mergeWithNeighbours | @ModifyArgs | INVOKE -> AABB.inflate(DDD) | Passt horizontale Inflations-Argumente ($0$ und $2$) an merge_radius an. |
tryToMerge | @Inject | @At("HEAD"), cancellable = true | Führt Verschmelzungsberechnung und Altersvererbung aus. |
playerTouch | @Inject | @At("HEAD"), cancellable = true | Übergibt Items paketiert als saubere Vanilla-Stapel ins Inventar. |
2. HopperBlockEntityMixin.java
- Zielklasse:
net.minecraft.world.level.block.entity.HopperBlockEntity
| Methode | Annotation | Injektionspunkt | Zweck |
|---|---|---|---|
addItem(Container, ItemEntity) | @Inject | @At("HEAD"), cancellable = true | Zieht 1-Item-Portionen ($2.5\text{ Items/s}$) aus Mega-Stapeln in Trichter. |
