Skip to content

아키텍처 및 믹스인 분석 (MC 26.2)

이 문서는 Minecraft 26.2 버전의 Item Clumps에 대한 내부 패키지 구조, 클래스 계층, 믹스인 대상 분석, 섀도우 멤버 및 주입 지점에 대해 다룹니다.


🌳 패키지 계층 구조 및 클래스 다이어그램

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$ ~ $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 = true64비트 합산 연산, 최신 수명 계승 및 자석 검사를 수행합니다.
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$개/초) 깔때기 보관함으로 추출합니다.

📄 믹스인 설정 (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.