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.