Skip to main content
@Module(name="Item Tags", category="VISUAL", description="Simple Item Tags", defaultEnabled=true)
void meta(vm) {
    vm.registerSliderDouble("scale",  "Text Scale",  0.5, 3.0, 1.5, 0.1);
    vm.registerSliderDouble("offset", "Y Offset",    0.2, 2.0, 0.6, 0.1);
    vm.registerBoolean("shadow", "Text Shadow", true);
    vm.registerBoolean("show_count", "Show Count",  true);
}

@EventTarget(events="render_3d")
void onRender3D(event) {
    if (!render3d.isPost()) return;

    world = me.getWorld();
    if (world == null) return;

    items = world.getItemEntities();
    if (items.isEmpty()) return;

    render3d.clearDepth();

    for (ent : items) {
        if (!(ent instanceof ItemEntity)) continue;

        pos = render3d.interpolatedPos(ent);
        if (pos == null) continue;

        label = ent.getItemName();
        if (label == null || label.isEmpty()) label = "Item";
        if (me.getBool("show_count") && ent.getItemCount() > 1) {
            label = label + " x" + ent.getItemCount();
        }

        render3d.text(label,
                pos.x,
                pos.y + me.getNumber("offset"),
                pos.z,
                me.getNumber("scale"),
                me.getBool("shadow"));
    }
}

@OnEnable  
void onEnable()  { me.subChat("§a[Item Tags] on§r"); }

@OnDisable 
void onDisable() { me.subChat("§c[Item Tags] off§r"); }