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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
|
package gregtech.common.render.items;
import net.minecraft.client.renderer.ItemRenderer;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.item.ItemStack;
import net.minecraft.util.IIcon;
import net.minecraftforge.client.IItemRenderer;
import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.fluids.FluidStack;
import org.lwjgl.opengl.GL11;
import codechicken.lib.render.TextureUtils;
import gregtech.GT_Mod;
import gregtech.api.interfaces.IGT_ItemWithMaterialRenderer;
import gregtech.api.util.GT_Util;
public class TranscendentMetalRenderer extends GT_GeneratedMaterial_Renderer {
@Override
protected void renderRegularItem(ItemRenderType type, ItemStack itemStack, IIcon icon,
boolean shouldModulateColor) {
if (!(itemStack.getItem() instanceof final IGT_ItemWithMaterialRenderer itemRenderer)) return;
GL11.glPushMatrix();
applyEffect(type, itemRenderer.getRGBa(itemStack), shouldModulateColor);
if (shouldModulateColor) {
short[] tModulation = itemRenderer.getRGBa(itemStack);
GL11.glColor3f(tModulation[0] / 255.0F, tModulation[1] / 255.0F, tModulation[2] / 255.0F);
}
if (type.equals(IItemRenderer.ItemRenderType.INVENTORY)) {
GL11.glScalef(16, 16, 32);
}
ItemRenderer.renderItemIn2D(
Tessellator.instance,
icon.getMaxU(),
icon.getMinV(),
icon.getMinU(),
icon.getMaxV(),
icon.getIconWidth(),
icon.getIconHeight(),
0.0625F);
GL11.glPopMatrix();
}
@Override
protected void renderContainedFluid(ItemRenderType type, FluidStack fluidStack, IIcon fluidIcon) {
GL11.glPushMatrix();
Fluid fluid = fluidStack.getFluid();
applyEffect(type, GT_Util.getRGBaArray(fluid.getColor()), true);
TextureUtils.bindAtlas(fluid.getSpriteNumber());
GL11.glDepthFunc(GL11.GL_EQUAL);
if (type.equals(IItemRenderer.ItemRenderType.INVENTORY)) {
GL11.glScalef(16, 16, 32);
}
ItemRenderer.renderItemIn2D(
Tessellator.instance,
fluidIcon.getMaxU(),
fluidIcon.getMinV(),
fluidIcon.getMinU(),
fluidIcon.getMaxV(),
fluidIcon.getIconWidth(),
fluidIcon.getIconHeight(),
0.0625F);
GL11.glDepthFunc(GL11.GL_LEQUAL);
GL11.glPopMatrix();
}
@Override
protected void renderItemOverlay(ItemRenderType type, IIcon overlay) {
GL11.glPushMatrix();
applyEffect(type, null, false);
if (type.equals(IItemRenderer.ItemRenderType.INVENTORY)) {
GL11.glScalef(16, 16, 32);
}
ItemRenderer.renderItemIn2D(
Tessellator.instance,
overlay.getMaxU(),
overlay.getMinV(),
overlay.getMinU(),
overlay.getMaxV(),
overlay.getIconWidth(),
overlay.getIconHeight(),
0.0625F);
GL11.glPopMatrix();
}
private void applyEffect(ItemRenderType type, short[] modulation, boolean shouldModulateColor) {
if (type.equals(IItemRenderer.ItemRenderType.INVENTORY)) {
GL11.glTranslatef(8f, 8f, 0f);
} else {
GL11.glTranslatef(0.5f, 0.5f, 0.0f);
}
GL11.glRotatef((GT_Mod.gregtechproxy.getAnimationTicks() * 3.5f) % 360, 0.3f, 0.5f, 0.2f);
GL11.glRotatef(180, 0.5f, 0.0f, 0.0f);
if (type.equals(IItemRenderer.ItemRenderType.INVENTORY)) {
GL11.glTranslatef(-8f, -8f, 0f);
} else {
GL11.glTranslatef(-0.5f, -0.5f, 0.0f);
}
if (shouldModulateColor) {
GL11.glColor4f(modulation[0] / 255.0F, modulation[1] / 255.0F, modulation[2] / 255.0F, 255);
} else {
GL11.glColor4f(1f, 1f, 1f, 255);
}
}
}
|