aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gtneioreplugin/plugin/renderer/ItemDimensionDisplayRenderer.java
blob: 547ad5295117f6d551045f7f0cf621f76189dce2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
package gtneioreplugin.plugin.renderer;

import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.renderer.entity.RenderItem;
import net.minecraft.item.ItemStack;
import net.minecraftforge.client.IItemRenderer;

import org.lwjgl.opengl.GL11;

import gtneioreplugin.plugin.item.ItemDimensionDisplay;

public class ItemDimensionDisplayRenderer implements IItemRenderer {

    private final RenderItem renderItem = new RenderItem();

    @Override
    public boolean handleRenderType(ItemStack item, ItemRenderType type) {
        return type == ItemRenderType.INVENTORY;
    }

    @Override
    public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) {
        return false;
    }

    // Renders the actual text on top of planet items.
    @Override
    public void renderItem(ItemRenderType type, ItemStack stack, Object... data) {
        String dimension = ItemDimensionDisplay.getDimension(stack);
        if (dimension == null) {
            return;
        }

        renderItem.renderItemIntoGUI(
            Minecraft.getMinecraft().fontRenderer,
            Minecraft.getMinecraft().renderEngine,
            stack,
            0,
            0,
            false);

        FontRenderer fontRender = Minecraft.getMinecraft().fontRenderer;
        float smallTextScale = 3F / 4F;

        GL11.glPushMatrix();
        GL11.glTranslatef(0, 0, 300);
        GL11.glScalef(smallTextScale, smallTextScale, 1.0f);

        long prefix = getPrefix(dimension);
        String tooltipPrefix = prefix != -1 ? "T" + prefix : "INVALID. Please, report this to the GTNH team";

        fontRender
            .drawString(tooltipPrefix, 0, (int) (16 / smallTextScale) - fontRender.FONT_HEIGHT + 1, 0xFFFFFF, true);

        GL11.glPopMatrix();

        GL11.glDisable(GL11.GL_ALPHA_TEST);
    }

    // See DimensionHelper.DimNameDisplayed for real names of these.
    public static long getPrefix(String dimName) {
        return switch (dimName) {
            case "Ow", "Ne", "TF", "ED", "VA", "EA" -> 0L;
            case "Mo" -> 1L;
            case "De", "Ma", "Ph" -> 2L;
            case "As", "Ca", "Ce", "Eu", "Ga", "Rb" -> 3L;
            case "Io", "Me", "Ve" -> 4L;
            case "En", "Mi", "Ob", "Ti", "Ra" -> 5L;
            case "Pr", "Tr" -> 6L;
            case "Ha", "KB", "MM", "Pl" -> 7L;
            case "BC", "BE", "BF", "CB", "TE", "VB" -> 8L;
            case "An", "Ho", "Np", "Mh", "MB", "Se" -> 9L;
            case "DD" -> 10L;
            default -> -1L;
        };
    }
}