Skip to content

全息浮空标签与数量阈值 (MC 26.2)

本文档详细介绍 Minecraft 26.2Item 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
Tick 额外开销$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超高产模式:仅巨型工业仓库级聚合体显示标签。

💻 真实源码实现参考

源自 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.