Skip to content

Étiquettes Holographiques & Seuils de Quantité (MC 26.2) ​

Ce document détaille le système d'indicateurs de quantité flottants, le filtre de seuil label_min_count et le rendu natif d'étiquettes de noms dans Item Clumps pour Minecraft 26.2.


📊 Fiche Technique de Fonctionnalité ​

PropriétéSpécification
Nom du SystèmeFournisseur d'Étiquettes Holographiques Côté Serveur
Stratégie d'AffichageÉtiquettes de noms vanilla natives (setCustomName / setCustomNameVisible)
Mod Client Requis ?Non (100 % géré par les clients vanilla non modifiés)
Format de l'Étiquette<nom_item> x<nombre> (ex. Diamant x128, Bûche de chêne x500)
GameRule de Seuilitem_clumps:label_min_count (Défaut : -1, utilise DataComponents.MAX_STACK_SIZE)
GameRule d'Affichageitem_clumps:render_labels (Défaut : true)
Surcharge par Tick$0.00\text{ ms}$ (Déclenché strictement lors de la mutation setItem())

🏷️ Affichage des Étiquettes Flottantes sur Clients Vanilla ​

Au lieu d'exiger un mod client ou d'envoyer des paquets de rendu OpenGL spécifiques, Item Clumps utilise le système natif de rendu des étiquettes de noms de Minecraft Vanilla :

                      ┌───────────────────────────────┐
                      │ 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!  │
       └───────────────────────────┘

⚙️ Personnalisation du Seuil (label_min_count) ​

Dans Minecraft 26.2, les administrateurs peuvent régler le seuil d'apparition des étiquettes via la règle item_clumps:label_min_count :

Valeur de label_min_countComportement du Seuil
-1 (Par Défaut)Taille de Pile Vanilla : Les étiquettes n'apparaissent qu'au-delà de la taille maximale native ($> 64$ pour la pierre, $> 16$ pour les perles, $> 1$ pour les épées).
0Toujours Visible : Chaque entité d'item au sol affiche son étiquette de quantité (ex. Terre x1).
100Filtre de Méga-Amas : Les étiquettes sont masquées jusqu'à ce qu'un amas atteigne $101+$ items.
1000Mode Très Haut Rendement : Seuls les très gros amas de stockage affichent une étiquette.

💻 Implémentation du Code Source Java Réel ​

Depuis ItemEntityMixin.java dans Minecraft 26.2 :

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();
    }
}

🔗 Documentation Associée (MC 26.2) ​

Official documentation & web portal for Dasik Igaijinn mods.