Skip to content

架構設計与 Mixin 解析 (MC 26.1.2)

本文件深入解析 Minecraft 26.1.2Item Clumps 的内部包布局、类繼承体系、Mixin 注入目標清單与影子成員細節。


🌳 包层级結構与類別圖

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()@ShadowN/A访问實體内部的物品堆栈。
setItem(ItemStack)@ShadowN/A修改物品堆栈并同步更新追蹤器数据。
target@ShadowN/A目標玩家的 UUID。
pickupDelay@ShadowN/A拾取冷卻计时器 ticks。
age@ShadowN/A消失年龄计时器 ticks ($0\text{ 至 }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\text{ 个/秒}$) 存入漏斗。

🔗 相关文件 (MC 26.1.2)

Official documentation & web portal for Dasik Igaijinn mods.