Skip to content

Détail de l'Architecture & Mixins (MC 26.2)

Ce document détaille l'organisation des paquets, la hiérarchie des classes, les cibles Mixin, membres shadow et points d'injection pour Item Clumps sur Minecraft 26.2.


🌳 Hiérarchie des Paquets & Diagramme de Classes

net.instantgratification.item_clumps

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

├── config/
│   ├── ItemClumpsConfig.java               [Configuration POJO / ConfigHelper Persistence]
│   ├── ModMenuIntegration.java             [ModMenuApi Provider / Safe GUI Factory]
│   └── YaclScreenHelper.java               [YetAnotherConfigLib v3 Screen Factory]

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

└── util/
    └── ModVersionGuard.java                [Knot ClassLoader Runtime Safety Guard]

🛠️ Cibles Complètes de Mixin & Analyse des Injections

1. ItemEntityMixin.java

  • Classe Cible : net.minecraft.world.entity.item.ItemEntity
  • Extension de Superclasse : extends net.minecraft.world.entity.Entity
Membre / MéthodeAnnotationPoint d'InjectionRôle
getItem()@ShadowN/AAccède à la pile d'items.
setItem(ItemStack)@ShadowN/AModifie la pile d'items et met à jour les données.
target@ShadowN/AUUID du joueur ciblé (sécurité de jet d'item).
pickupDelay@ShadowN/ATicks du délai de ramassage.
age@ShadowN/ATicks de durée de vie avant disparition ($0\text{ à }6000$).
setItem@Inject@At("TAIL")Déclenche la mise à jour de l'étiquette quand la quantité change.
isMergable@Inject@At("HEAD"), cancellable = trueRemplace la limite de pile par la GameRule max_clump_size.
mergeWithNeighbours@RedirectINVOKE -> AABB.inflate(DDD)Élargissement sans allocation du rayon de recherche ($r \in [1, 10]$).
tryToMerge@Inject@At("HEAD"), cancellable = trueExécute la somme 64 bits, l'héritage d'âge et la vérification de l'aimant.
playerTouch@Inject@At("HEAD"), cancellable = trueInjecte en lot unique sous forme de piles vanilla propres.

2. HopperBlockEntityMixin.java

  • Classe Cible : net.minecraft.world.level.block.entity.HopperBlockEntity
MéthodeAnnotationPoint d'InjectionRôle
addItem(Container, ItemEntity)@Inject@At("HEAD"), cancellable = truePrélève des portions de 1 item ($2.5\text{ items/s}$) vers les entonnoirs.

📄 Configuration des Mixins (item-clumps.mixins.json)

json
{
    "required": true,
    "package": "net.instantgratification.item_clumps.mixin",
    "compatibilityLevel": "JAVA_25",
    "refmap": "item-clumps-refmap.json",
    "mixins": [
        "HopperBlockEntityMixin",
        "ItemEntityMixin"
    ],
    "injectors": {
        "defaultRequire": 1
    }
}

🔗 Documentation Associée (MC 26.2)

Official documentation & web portal for Dasik Igaijinn mods.