Skip to content

Label Holografis (MC 26.1.2)

Dokumen ini menjelaskan sistem indikator jumlah melayang dan rendering name tag klien vanilla murni dari Item Clumps untuk Minecraft 26.1.2.


📊 Kotak Info Fitur

PropertiSpesifikasi
Nama SistemPenyedia Name Tag Holografis Sisi Server
Strategi RenderingName Tag Kustom Bawaan Vanilla (setCustomName / setCustomNameVisible)
Butuh Mod Klien?Tidak (100% dirender oleh klien vanilla tanpa mod)
Pola Format Label<nama_item> x<jumlah> (misal: Intan x128, Kayu Ek x500)
Aturan Ambang BatasDitampilkan jika $\text{count} > \text{maxStackSize}$ (misal: $> 64$ untuk batu bulat)
GameRule Sakelar Tampilanitem_clumps:render_labels (Bawaan: true)

🏷️ Cara Label Melayang Dirender pada Klien Vanilla

Item Clumps memanfaatkan rendering name tag bawaan Minecraft:

                      ┌───────────────────────────────┐
                      │ Ground Item Stack Size Changes│
                      └───────────────┬───────────────┘


                      ┌───────────────────────────────┐
                      │  Is render_labels Enabled?    │
                      │  Does count > maxStackSize?   │
                      └───────────────┬───────────────┘

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

💻 Implementasi Kode Sumber Java Asli

Dari ItemEntityMixin.java di Minecraft 26.1.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 maxStack = stack.getMaxStackSize();
    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 = "tick", at = @At("HEAD"))
private void item_clumps$onTick(CallbackInfo ci) {
    if (!this.level().isClientSide()) {
        this.item_clumps$updateVanillaNameTag();
    }
}

@Inject(method = "setItem", at = @At("TAIL"))
private void item_clumps$onSetItem(ItemStack itemStack, CallbackInfo ci) {
    if (!this.level().isClientSide()) {
        this.item_clumps$updateVanillaNameTag();
    }
}

🔗 Dokumentasi Terkait (MC 26.1.2)

Official documentation & web portal for Dasik Igaijinn mods.