Skip to content

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

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


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

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]

🛠️ 전체 믹스인 대상 및 주입 지점 분석

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$).
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$개/초) 깔때기 보관함으로 추출합니다.

🔗 관련 문서 (MC 26.1.2)

Official documentation & web portal for Dasik Igaijinn mods.