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
122
123
124
125
126
127
128
129
130
|
package gregtech.common.render;
import net.minecraft.block.Block;
import net.minecraft.client.renderer.RenderBlocks;
import net.minecraft.util.IIcon;
import net.minecraftforge.common.util.ForgeDirection;
import gregtech.api.interfaces.IBlockContainer;
import gregtech.api.interfaces.ITexture;
import gregtech.api.util.GT_RenderingWorld;
import gregtech.api.util.LightingHelper;
class GT_CopiedCTMBlockTexture extends GT_TextureBase implements ITexture, IBlockContainer {
private final Block mBlock;
private final byte mSide, mMeta;
GT_CopiedCTMBlockTexture(Block aBlock, int aSide, int aMeta, short[] aRGBa, boolean allowAlpha) {
if (aRGBa.length != 4)
throw new IllegalArgumentException("RGBa doesn't have 4 Values @ GT_CopiedCTMBlockTexture");
mBlock = aBlock;
mSide = (byte) aSide;
mMeta = (byte) aMeta;
}
@Override
public boolean isOldTexture() {
return false;
}
private IIcon getIcon(int aSide, int aX, int aY, int aZ, RenderBlocks aRenderer) {
final int tSide = mSide == 6 ? aSide : mSide;
return mBlock.getIcon(getBlockAccess(aRenderer), aX, aY, aZ, tSide);
}
private GT_RenderingWorld getBlockAccess(RenderBlocks aRenderer) {
return GT_RenderingWorld.getInstance(aRenderer.blockAccess);
}
@Override
public void renderXPos(RenderBlocks aRenderer, Block aBlock, int aX, int aY, int aZ) {
final IIcon aIcon = getIcon(ForgeDirection.EAST.ordinal(), aX, aY, aZ, aRenderer);
aRenderer.field_152631_f = true;
startDrawingQuads(aRenderer, 1.0f, 0.0f, 0.0f);
new LightingHelper(aRenderer).setupLightingXPos(aBlock, aX, aY, aZ)
.setupColor(
ForgeDirection.EAST.ordinal(),
mBlock.colorMultiplier(getBlockAccess(aRenderer), aX, aY, aZ));
aRenderer.renderFaceXPos(aBlock, aX, aY, aZ, aIcon);
draw(aRenderer);
aRenderer.field_152631_f = false;
}
@Override
public void renderXNeg(RenderBlocks aRenderer, Block aBlock, int aX, int aY, int aZ) {
startDrawingQuads(aRenderer, -1.0f, 0.0f, 0.0f);
final IIcon aIcon = getIcon(ForgeDirection.WEST.ordinal(), aX, aY, aZ, aRenderer);
new LightingHelper(aRenderer).setupLightingXNeg(aBlock, aX, aY, aZ)
.setupColor(
ForgeDirection.WEST.ordinal(),
mBlock.colorMultiplier(getBlockAccess(aRenderer), aX, aY, aZ));
aRenderer.renderFaceXNeg(aBlock, aX, aY, aZ, aIcon);
draw(aRenderer);
}
@Override
public void renderYPos(RenderBlocks aRenderer, Block aBlock, int aX, int aY, int aZ) {
startDrawingQuads(aRenderer, 0.0f, 1.0f, 0.0f);
final IIcon aIcon = getIcon(ForgeDirection.UP.ordinal(), aX, aY, aZ, aRenderer);
new LightingHelper(aRenderer).setupLightingYPos(aBlock, aX, aY, aZ)
.setupColor(
ForgeDirection.UP.ordinal(),
mBlock.colorMultiplier(getBlockAccess(aRenderer), aX, aY, aZ));
aRenderer.renderFaceYPos(aBlock, aX, aY, aZ, aIcon);
draw(aRenderer);
}
@Override
public void renderYNeg(RenderBlocks aRenderer, Block aBlock, int aX, int aY, int aZ) {
startDrawingQuads(aRenderer, 0.0f, -1.0f, 0.0f);
final IIcon aIcon = getIcon(ForgeDirection.DOWN.ordinal(), aX, aY, aZ, aRenderer);
new LightingHelper(aRenderer).setupLightingYNeg(aBlock, aX, aY, aZ)
.setupColor(
ForgeDirection.DOWN.ordinal(),
mBlock.colorMultiplier(getBlockAccess(aRenderer), aX, aY, aZ));
aRenderer.renderFaceYNeg(aBlock, aX, aY, aZ, aIcon);
draw(aRenderer);
}
@Override
public void renderZPos(RenderBlocks aRenderer, Block aBlock, int aX, int aY, int aZ) {
startDrawingQuads(aRenderer, 0.0f, 0.0f, 1.0f);
final IIcon aIcon = getIcon(ForgeDirection.SOUTH.ordinal(), aX, aY, aZ, aRenderer);
new LightingHelper(aRenderer).setupLightingZPos(aBlock, aX, aY, aZ)
.setupColor(
ForgeDirection.SOUTH.ordinal(),
mBlock.colorMultiplier(getBlockAccess(aRenderer), aX, aY, aZ));
aRenderer.renderFaceZPos(aBlock, aX, aY, aZ, aIcon);
draw(aRenderer);
}
@Override
public void renderZNeg(RenderBlocks aRenderer, Block aBlock, int aX, int aY, int aZ) {
startDrawingQuads(aRenderer, 0.0f, 0.0f, -1.0f);
final IIcon aIcon = getIcon(ForgeDirection.NORTH.ordinal(), aX, aY, aZ, aRenderer);
aRenderer.field_152631_f = true;
new LightingHelper(aRenderer).setupLightingZNeg(aBlock, aX, aY, aZ)
.setupColor(
ForgeDirection.NORTH.ordinal(),
mBlock.colorMultiplier(getBlockAccess(aRenderer), aX, aY, aZ));
aRenderer.renderFaceZNeg(aBlock, aX, aY, aZ, aIcon);
draw(aRenderer);
aRenderer.field_152631_f = false;
}
@Override
public boolean isValidTexture() {
return mBlock != null;
}
@Override
public Block getBlock() {
return mBlock;
}
@Override
public byte getMeta() {
return mMeta;
}
}
|