Skip to content

Разбор архитектуры и миксинов (MC 26.2)

Этот документ подробно описывает структуру пакетов, иерархию классов, цели миксинов, shadow-поля и точки внедрения для Item Clumps в Minecraft 26.2.


🌳 Иерархия пакетов и диаграмма классов

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]

🛠️ Полный разбор миксинов и точек внедрения

1. ItemEntityMixin.java

  • Целевой класс: net.minecraft.world.entity.item.ItemEntity
  • Расширение суперкласса: extends net.minecraft.world.entity.Entity
Элемент / МетодАннотацияТочка внедренияНазначение
getItem()@ShadowН/ДДоступ к стаку предметов.
setItem(ItemStack)@ShadowН/ДИзменяет стак и обновляет данные трекера.
target@ShadowН/ДUUID целевого игрока (для безопасного броска).
pickupDelay@ShadowН/ДТики таймера задержки подбора.
age@ShadowН/ДТики возраста исчезновения ($0\text{–}6000$).
setItem@Inject@At("TAIL")Обновляет бирку имени при изменении количества.
isMergable@Inject@At("HEAD"), cancellable = trueЗаменяет проверку размера стака правилом max_clump_size.
mergeWithNeighbours@RedirectINVOKE -> AABB.inflate(DDD)Расширение радиуса поиска ($r \in [1, 10]$) без аллокаций.
tryToMerge@Inject@At("HEAD"), cancellable = trueВыполняет 64-битное сложение, перенос возраста и проверку магнита.
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{ предм/с}$) в контейнеры воронок.

📄 Конфигурация миксинов (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
    }
}

🔗 Связанная документация (MC 26.2)

Official documentation & web portal for Dasik Igaijinn mods.