Desglose de arquitectura y Mixins (MC 26.1.2)
Este documento detalla el diseño interno de paquetes, la jerarquía de clases, el desglose de objetivos Mixin, miembros shadow y puntos de inyección para Item Clumps en Minecraft 26.1.2.
🌳 Jerarquía de paquetes y diagrama de clases
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]🛠️ Objetivos completos de Mixin y desglose de inyecciones
1. ItemEntityMixin.java
- Clase objetivo:
net.minecraft.world.entity.item.ItemEntity - Extensión de superclase:
extends net.minecraft.world.entity.Entity
| Miembro / Método | Anotación | Punto de inyección | Propósito |
|---|---|---|---|
getItem() | @Shadow | N/A | Accede a la pila de objetos. |
setItem(ItemStack) | @Shadow | N/A | Modifica la pila de objetos y actualiza los datos del rastreador. |
target | @Shadow | N/A | UUID del jugador objetivo. |
pickupDelay | @Shadow | N/A | Ticks del temporizador de enfriamiento de recogida. |
age | @Shadow | N/A | Ticks del temporizador de desaparición ($0\text{ a }6000$). |
tick | @Inject | @At("HEAD") | Actualiza la visibilidad de la etiqueta de nombre de forma dinámica. |
setItem | @Inject | @At("TAIL") | Activa la actualización de la etiqueta de nombre cuando cambia la pila. |
isMergable | @Inject | @At("HEAD"), cancellable = true | Anula la verificación de stack máximo con la GameRule max_clump_size. |
mergeWithNeighbours | @ModifyArgs | INVOKE -> AABB.inflate(DDD) | Modifica argumentos de inflado horizontal ($0$ y $2$) para coincidir con merge_radius. |
tryToMerge | @Inject | @At("HEAD"), cancellable = true | Ejecuta cálculo de fusión y herencia de edad más reciente. |
playerTouch | @Inject | @At("HEAD"), cancellable = true | Despacha la absorción de inventario en fragmentos en pilas vanilla limpias. |
2. HopperBlockEntityMixin.java
- Clase objetivo:
net.minecraft.world.level.block.entity.HopperBlockEntity
| Método | Anotación | Punto de inyección | Propósito |
|---|---|---|---|
addItem(Container, ItemEntity) | @Inject | @At("HEAD"), cancellable = true | Extrae porciones de 1 objeto de mega-grupos ($2.5\text{ objetos/s}$) a contenedores de tolva. |
