É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ème | Fournisseur 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 Seuil | item_clumps:label_min_count (Défaut : -1, utilise DataComponents.MAX_STACK_SIZE) |
| GameRule d'Affichage | item_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_count | Comportement 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). |
0 | Toujours Visible : Chaque entité d'item au sol affiche son étiquette de quantité (ex. Terre x1). |
100 | Filtre de Méga-Amas : Les étiquettes sont masquées jusqu'à ce qu'un amas atteigne $101+$ items. |
1000 | Mode 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();
}
}