Detalhamento de Arquitetura e Mixins (MC 26.1.2)
Este documento detalha a estrutura interna de pacotes, hierarquia de classes, alvos de Mixin, membros shadow e pontos de injeção para o Item Clumps no Minecraft 26.1.2.
🌳 Hierarquia de Pacotes e Diagrama de Classes
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]🛠️ Alvos Completos de Mixin e Detalhamento de Injeções
1. ItemEntityMixin.java
- Classe Alvo:
net.minecraft.world.entity.item.ItemEntity - Extensão de Superclasse:
extends net.minecraft.world.entity.Entity
| Membro / Método | Anotação | Ponto de Injeção | Finalidade |
|---|---|---|---|
getItem() | @Shadow | N/D | Acessa a pilha de itens. |
setItem(ItemStack) | @Shadow | N/D | Altera a pilha de itens e atualiza os dados do rastreador. |
target | @Shadow | N/D | UUID do jogador alvo. |
pickupDelay | @Shadow | N/D | Ticks do temporizador de atraso de coleta. |
age | @Shadow | N/D | Ticks do temporizador de idade de despawn ($0\text{ a }6000$). |
tick | @Inject | @At("HEAD") | Atualiza dinamicamente a visibilidade da etiqueta de nome. |
setItem | @Inject | @At("TAIL") | Aciona a atualização da etiqueta quando a pilha muda. |
isMergable | @Inject | @At("HEAD"), cancellable = true | Substitui verificação de pilha máxima pela GameRule max_clump_size. |
mergeWithNeighbours | @ModifyArgs | INVOKE -> AABB.inflate(DDD) | Modifica argumentos de expansão horizontal ($0$ e $2$) para coincidir com merge_radius. |
tryToMerge | @Inject | @At("HEAD"), cancellable = true | Executa cálculo de fusão e herança da idade mais jovem. |
playerTouch | @Inject | @At("HEAD"), cancellable = true | Despacha entrada no inventário em lotes em pilhas vanilla limpas. |
2. HopperBlockEntityMixin.java
- Classe Alvo:
net.minecraft.world.level.block.entity.HopperBlockEntity
| Método | Anotação | Ponto de Injeção | Finalidade |
|---|---|---|---|
addItem(Container, ItemEntity) | @Inject | @At("HEAD"), cancellable = true | Extrai fatias de 1 item de mega-agrupamentos ($2.5\text{ itens/s}$) para funis. |
