aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/render
diff options
context:
space:
mode:
authorkekzdealer <kekzdealer@gmail.com>2019-12-10 11:36:39 +0100
committerkekzdealer <kekzdealer@gmail.com>2019-12-10 11:36:39 +0100
commitc7329fe829f69f4585837a5f483dab064d57774f (patch)
tree73d512a3afa641f989df2c155949296dbfd383f0 /src/main/java/render
parentf9eac626254ed31477925618a45af5005e4628ac (diff)
downloadGT5-Unofficial-c7329fe829f69f4585837a5f483dab064d57774f.tar.gz
GT5-Unofficial-c7329fe829f69f4585837a5f483dab064d57774f.tar.bz2
GT5-Unofficial-c7329fe829f69f4585837a5f483dab064d57774f.zip
visiting Lucy~
Diffstat (limited to 'src/main/java/render')
-rw-r--r--src/main/java/render/ConduitRenderer.java83
1 files changed, 83 insertions, 0 deletions
diff --git a/src/main/java/render/ConduitRenderer.java b/src/main/java/render/ConduitRenderer.java
new file mode 100644
index 0000000000..241dd18647
--- /dev/null
+++ b/src/main/java/render/ConduitRenderer.java
@@ -0,0 +1,83 @@
+package render;
+
+import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler;
+import cpw.mods.fml.client.registry.RenderingRegistry;
+import net.minecraft.block.Block;
+import net.minecraft.client.renderer.RenderBlocks;
+import net.minecraft.client.renderer.Tessellator;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.util.IIcon;
+import net.minecraft.world.IBlockAccess;
+import net.minecraftforge.common.util.ForgeDirection;
+import tileentities.TE_ItemProxyCable;
+
+public class ConduitRenderer implements ISimpleBlockRenderingHandler {
+
+ private static final ConduitRenderer instance = new ConduitRenderer();
+ private final int renderID = RenderingRegistry.getNextAvailableRenderId();
+
+ private ConduitRenderer() {
+
+ }
+
+ public static ConduitRenderer getInstance() {
+ return instance;
+ }
+
+ public void registerRenderer() {
+ RenderingRegistry.registerBlockHandler(this);
+ }
+
+ @Override
+ public int getRenderId() {
+ return renderID;
+ }
+
+ @Override
+ public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) {
+
+ }
+
+ @Override
+ public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId,
+ RenderBlocks renderer) {
+ System.out.println("custom renderer");
+ final TileEntity te = world.getTileEntity(x, y, z);
+ if(te instanceof TE_ItemProxyCable) {
+ final TE_ItemProxyCable cable = (TE_ItemProxyCable) te;
+
+ final float thickness = TE_ItemProxyCable.getThickness();
+ final float space = (1.0f - thickness) / 2.0f;
+
+ if(cable.getConnections() == 63) { // No need to render a center cube if it's hidden anyways
+ block.setBlockBounds(0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f);
+ renderer.setRenderBounds(0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f);
+ } else if (cable.getConnections() == 0) { // Only center cube required
+ block.setBlockBounds(space, space, space, space + thickness, space + thickness, space + thickness);
+ renderer.setRenderBounds(space, space, space, space + thickness, space + thickness, space + thickness);
+ }
+
+ final Tessellator f = Tessellator.instance;
+ f.startDrawingQuads();
+ IIcon icon = block.getIcon(0, 0);
+ // South face
+ if(cable.isConnected(ForgeDirection.SOUTH)) {
+ System.out.println("tesselating");
+ f.addVertexWithUV(x + space + thickness, y + space, z + 1, icon.getMaxU(), icon.getMaxV());
+ f.addVertexWithUV(x + space + thickness, y + space + thickness, z + 1, icon.getMaxU(), icon.getMinV());
+ f.addVertexWithUV(x + space, y + space + thickness, z + 1, icon.getMinU(), icon.getMinV());
+ f.addVertexWithUV(x + space, y + space, z + 1, icon.getMinU(), icon.getMaxV());
+ }
+
+ f.draw();
+ }
+
+ return false;
+ }
+
+ @Override
+ public boolean shouldRender3DInInventory(int modelId) {
+ return false;
+ }
+
+}