Holografische Beschriftungen & Schwellenwerte (MC 26.2)
Dieses Dokument beschreibt das schwebende Mengenkennzeichnungssystem, die label_min_count-Schwellenwertsteuerung und das native Namensschild-Rendering in Item Clumps für Minecraft 26.2.
📊 Feature-Infobox
| Eigenschaft | Spezifikation |
|---|---|
| Systemname | Serverseitiger Provider für Namensschilder |
| Rendering-Strategie | Native Vanilla-Namensschilder (setCustomName / setCustomNameVisible) |
| Client-Mod erforderlich? | Nein (wird zu 100 % von normalen Vanilla-Clients dargestellt) |
| Formatmuster | <item_name> x<anzahl> (z. B. Diamant x128, Eichenstamm x500) |
| Schwellenwert-GameRule | item_clumps:label_min_count (Standard: -1, nutzt DataComponents.MAX_STACK_SIZE) |
| Anzeige-Umschalt-GameRule | item_clumps:render_labels (Standard: true) |
| Tick-Overhead | $0.00\text{ ms}$ (Wird ausschließlich bei setItem()-Mutation ausgelöst) |
🏷️ Darstellung schwebender Beschriftungen auf Vanilla-Clients
Anstatt eine clientseitige Mod zu erfordern oder eigene OpenGL-Rendering-Pakete zu senden, nutzt Item Clumps das native Namensschild-Rendering von Vanilla 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! │
└───────────────────────────┘⚙️ Schwellenwert-Anpassung (label_min_count)
In Minecraft 26.2 können Administratoren über die GameRule item_clumps:label_min_count genau anpassen, wann Beschriftungen erscheinen:
Wert von label_min_count | Schwellenwert-Verhalten |
|---|---|
-1 (Standard) | Vanilla-Stapelgröße: Beschriftungen erscheinen erst bei Überschreiten des maximalen Stapels ($> 64$ für Bruchstein, $> 16$ für Perlen, $> 1$ für Schwerter). |
0 | Immer sichtbar: Jedes gedroppte Item in der Welt zeigt seine Menge (z. B. Erde x1). |
100 | Mega-Stapel-Filter: Beschriftungen bleiben verborgen, bis ein Stapel $101+$ Items erreicht. |
1000 | Ultra-High-Yield-Modus: Nur riesige Lagerstapel zeigen Beschriftungen. |
💻 Reale Java-Quellcode-Implementierung
Aus ItemEntityMixin.java in 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();
}
}