-
Notifications
You must be signed in to change notification settings - Fork 72
Expand file tree
/
Copy pathDecoTankItemRenderer.java
More file actions
120 lines (105 loc) · 3.94 KB
/
DecoTankItemRenderer.java
File metadata and controls
120 lines (105 loc) · 3.94 KB
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
/*******************************************************************************
* @author Reika Kalseki
*
* Copyright 2017
*
* All rights reserved.
* Distribution of the software in any form is only allowed with
* explicit, prior permission from the owner.
******************************************************************************/
package Reika.RotaryCraft;
import org.lwjgl.opengl.GL11;
import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.RenderBlocks;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.util.IIcon;
import net.minecraft.util.MathHelper;
import net.minecraftforge.client.IItemRenderer;
import net.minecraftforge.fluids.Fluid;
import Reika.DragonAPI.Libraries.ReikaNBTHelper;
import Reika.DragonAPI.Libraries.IO.ReikaTextureHelper;
import Reika.DragonAPI.Libraries.Java.ReikaGLHelper.BlendMode;
import Reika.DragonAPI.Libraries.Rendering.ReikaLiquidRenderer;
import Reika.RotaryCraft.Registry.BlockRegistry;
import Reika.RotaryCraft.TileEntities.TileEntityDecoTank.TankFlags;
public class DecoTankItemRenderer implements IItemRenderer {
@Override
public boolean handleRenderType(ItemStack item, ItemRenderType type) {
return true;
}
@Override
public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) {
return true;
}
@Override
public void renderItem(ItemRenderType type, ItemStack item, Object... data) {
RenderBlocks rb = (RenderBlocks)data[0];
GL11.glPushAttrib(GL11.GL_ALL_ATTRIB_BITS);
GL11.glEnable(GL11.GL_BLEND);
BlendMode.DEFAULT.apply();
GL11.glColor4f(1, 1, 1, 1);
ReikaTextureHelper.bindTerrainTexture();
//GL11.glDisable(GL11.GL_CULL_FACE);
Block b = BlockRegistry.DECOTANK.getBlockInstance();
if (item.stackTagCompound != null) {
Fluid f = ReikaNBTHelper.getFluidFromNBT(item.stackTagCompound);
if (f != null) {
IIcon ico = ReikaLiquidRenderer.getFluidIconSafe(f);
if (f.getLuminosity() == 15 || TankFlags.LIGHTED.apply(item))
GL11.glDisable(GL11.GL_LIGHTING);
float u = ico.getMinU();
float du = ico.getMaxU();
float v = ico.getMinV();
float dv = ico.getMaxV();
Tessellator v5 = Tessellator.instance;
float dx = -0.5F, dy = -0.5F, dz = -0.5F;
v5.startDrawingQuads();
v5.addTranslation(dx, dy, dz);
if (TankFlags.NOCOLOR.apply(item))
v5.setColorOpaque_I(0xffffff);
else {
int c = f.getColor();
if (c == 0xffffff && f.canBePlacedInWorld()) {
EntityPlayer ep = Minecraft.getMinecraft().thePlayer;
if (ep != null) {
c = f.getBlock().colorMultiplier(ep.worldObj, MathHelper.floor_double(ep.posX), MathHelper.floor_double(ep.posY), MathHelper.floor_double(ep.posZ));
}
}
v5.setColorOpaque_I(c);
}
v5.setBrightness(240);
v5.addVertexWithUV(0, 1, 1, u, dv);
v5.addVertexWithUV(1, 1, 1, du, dv);
v5.addVertexWithUV(1, 1, 0, du, v);
v5.addVertexWithUV(0, 1, 0, u, v);
v5.addVertexWithUV(0, 0, 0, u, v);
v5.addVertexWithUV(1, 0, 0, du, v);
v5.addVertexWithUV(1, 0, 1, du, dv);
v5.addVertexWithUV(0, 0, 1, u, dv);
v5.addVertexWithUV(0, 0, 1, u, dv);
v5.addVertexWithUV(0, 1, 1, du, dv);
v5.addVertexWithUV(0, 1, 0, du, v);
v5.addVertexWithUV(0, 0, 0, u, v);
v5.addVertexWithUV(1, 0, 0, u, v);
v5.addVertexWithUV(1, 1, 0, du, v);
v5.addVertexWithUV(1, 1, 1, du, dv);
v5.addVertexWithUV(1, 0, 1, u, dv);
v5.addVertexWithUV(0, 0, 1, u, v);
v5.addVertexWithUV(1, 0, 1, du, v);
v5.addVertexWithUV(1, 1, 1, du, dv);
v5.addVertexWithUV(0, 1, 1, u, dv);
v5.addVertexWithUV(0, 1, 0, u, dv);
v5.addVertexWithUV(1, 1, 0, du, dv);
v5.addVertexWithUV(1, 0, 0, du, v);
v5.addVertexWithUV(0, 0, 0, u, v);
v5.addTranslation(-dx, -dy, -dz);
v5.draw();
}
}
rb.renderBlockAsItem(b, item.getItemDamage(), 1);
GL11.glPopAttrib();
}
}