Skip to content

홀로그램 라벨 및 수량 임계값 (MC 26.2)

이 문서는 Minecraft 26.2 버전의 Item Clumps에 대한 부유 수량 표시 시스템, label_min_count 임계값 제어 및 순수 바닐라 클라이언트 이름표 렌더링에 대해 다룹니다.


📊 기능 정보 상자

속성세부 정보
시스템 이름서버 측 홀로그램 이름표 제공 시스템
렌더링 방식바닐라 기본 사용자 정의 이름표 (setCustomName / setCustomNameVisible)
클라이언트 모드 필요 여부불필요 (순정 바닐라 클라이언트에서 100% 렌더링)
라벨 형식<아이템 이름> x<수량> (예: 다이아몬드 x128, 참나무 원목 x500)
임계값 게임 규칙item_clumps:label_min_count (기본값: -1, DataComponents.MAX_STACK_SIZE 사용)
라벨 표시 전환 규칙item_clumps:render_labels (기본값: true)
틱 연산 부하$0.00\text{ ms}$ (setItem() 변경 시에만 엄격히 트리거)

🏷️ 바닐라 클라이언트에서의 부유 라벨 렌더링 방식

Item Clumps는 클라이언트 전용 모드나 OpenGL 렌더링 패킷을 요구하지 않고 바닐라 Minecraft에 기본 내장된 엔티티 사용자 지정 이름표 렌더링을 활용합니다:

                      ┌───────────────────────────────┐
                      │ Ground Item Stack Size Changes│
                      │      (ItemEntity.setItem)     │
                      └───────────────┬───────────────┘


                      ┌───────────────────────────────┐
                      │  Is render_labels Enabled?    │
                      │  Does count > maxStack?       │
                      └───────────────┬───────────────┘

                     ┌────────────────┴────────────────┐
                     │ (Yes)                           │ (No)
                     ▼                                 ▼
       ┌───────────────────────────┐     ┌───────────────────────────┐
       │ Set Entity Custom Name    │     │ Clear Entity Custom Name  │
       │ setCustomName(name xCount)│     │ setCustomName(null)       │
       │ setCustomNameVisible(true)│     │ setCustomNameVisible(false│
       └─────────────┬─────────────┘     └───────────────────────────┘


       ┌───────────────────────────┐
       │ SyncedEntityData Packet   │
       │ Sent to all nearby clients│
       └─────────────┬─────────────┘


       ┌───────────────────────────┐
       │ Vanilla Client Renders    │
       │ Clean Floating Name Tag!  │
       └───────────────────────────┘

⚙️ 임계값 커스터마이징 (label_min_count)

Minecraft 26.2에서 관리자는 item_clumps:label_min_count 게임 규칙을 사용하여 라벨이 표시되는 조건을 설정할 수 있습니다:

label_min_count임계값 동작
-1 (기본값)바닐라 스택 크기: 뭉치가 기본 최대 스택 크기를 초과할 때만 라벨이 표시됩니다 (조약돌 $> 64$, 진주 $> 16$, 검 $> 1$).
0항상 표시: 월드의 모든 바닥 아이템 엔티티에 수량 라벨이 표시됩니다 (예: 흙 x1).
100대형 뭉치 필터: 뭉치가 $101$개 이상에 도달할 때까지 라벨이 숨겨집니다.
1000초고효율 모드: 초대형 저장 뭉치에만 라벨이 표시됩니다.

💻 실제 Java 소스 코드 구현

Minecraft 26.2의 ItemEntityMixin.java 출처:

java
private void item_clumps$updateVanillaNameTag() {
    if (this.level() == null || this.level().isClientSide()) return;
    ItemStack stack = this.getItem();
    if (stack.isEmpty()) {
        this.setCustomName(null);
        this.setCustomNameVisible(false);
        return;
    }

    int count = stack.getCount();
    int labelMin = DynamicGameRuleManager.getInt(this.level(), ItemClumpsFabric.LABEL_MIN_COUNT);
    int maxStack = (labelMin == -1) ? stack.getOrDefault(DataComponents.MAX_STACK_SIZE, 1) : labelMin;
    
    if (DynamicGameRuleManager.getBoolean(this.level(), ItemClumpsFabric.RENDER_LABELS) && count > maxStack) {
        Component name = stack.getItemName().copy().append(" x" + count);
        if (!this.hasCustomName() || !this.getCustomName().getString().equals(name.getString())) {
            this.setCustomName(name);
            this.setCustomNameVisible(true);
        }
    } else {
        if (this.hasCustomName()) {
            this.setCustomName(null);
            this.setCustomNameVisible(false);
        }
    }
}

@Inject(method = "setItem", at = @At("TAIL"))
private void item_clumps$onSetItem(ItemStack itemStack, CallbackInfo ci) {
    if (!this.level().isClientSide()) {
        this.item_clumps$updateVanillaNameTag();
    }
}

🔗 관련 문서 (MC 26.2)

Official documentation & web portal for Dasik Igaijinn mods.