package micdoodle8.mods.galacticraft.core.client.render.tile;
import micdoodle8.mods.galacticraft.core.Constants;
import micdoodle8.mods.galacticraft.core.tile.TileEntityScreen;
import net.minecraft.client.renderer.GLAllocation;
import net.minecraft.client.renderer.texture.TextureManager;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.fml.client.FMLClientHandler;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import org.lwjgl.opengl.GL11;
import java.nio.FloatBuffer;
@SideOnly(Side.CLIENT)
public class TileEntityScreenRenderer extends TileEntitySpecialRenderer<TileEntityScreen>
{
public static final ResourceLocation blockTexture = new ResourceLocation(Constants.ASSET_PREFIX, "textures/blocks/screen_side.png");
private TextureManager renderEngine = FMLClientHandler.instance().getClient().renderEngine;
private static FloatBuffer colorBuffer = GLAllocation.createDirectFloatBuffer(16);
private float yPlane = 0.91F;
float frame = 0.098F;
@Override
public void renderTileEntityAt(TileEntityScreen screen, double par2, double par4, double par6, float partialTickTime, int par9)
{
GL11.glPushMatrix();
// Texture file
this.renderEngine.bindTexture(TileEntityScreenRenderer.blockTexture);
GL11.glTranslatef((float) par2, (float) par4, (float) par6);
int meta = screen.getBlockMetadata();
boolean screenData = (meta >= 8);
meta &= 7;
switch (meta)
{
case 0:
GL11.glRotatef(180, 1, 0, 0);
GL11.glTranslatef(0, -1.0F, -1.0F);
break;
case 1:
break;
case 2:
GL11.glTranslatef(0.0F, 0.0F, -0.87F);
GL11.glRotatef(90, 1.0F, 0, 0);
GL11.glTranslatef(0.0F, 0.0F, -1.0F);
break;
case 3:
GL11.glTranslatef(0.0F, 0.0F, 0.87F);
GL11.glRotatef(90, -1.0F, 0, 0);
GL11.glTranslatef(1.0F, -1.0F, 1.0F);
GL11.glRotatef(180, 0, -1.0F, 0);
break;
case 4:
GL11.glTranslatef(-0.87F, 0.0F, 0.0F);
GL11.glRotatef(90, 0, 0, -1.0F);
GL11.glTranslatef(-1.0F, 0.0F, 1.0F);
GL11.glRotatef(90, 0, 1.0F, 0);
break;
case 5:
GL11.glTranslatef(0.87F, 0.0F, 0.0F);
GL11.glRotatef(90, 0, 0, 1.0F);
GL11.glTranslatef(1.0F, -1.0F, 0.0F);
GL11.glRotatef(90, 0, -1.0F, 0);
break;
default:
break;
}
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
GL11.glTranslatef(-screen.screenOffsetx, this.yPlane, -screen.screenOffsetz);
GL11.glRotatef(90, 1F, 0F, 0F);
boolean cornerblock = false;
if (screen.connectionsLeft == 0 || screen.connectionsRight == 0)
{
cornerblock = (screen.connectionsUp == 0 || screen.connectionsDown == 0);
}
int totalLR = screen.connectionsLeft + screen.connectionsRight;
int totalUD = screen.connectionsUp + screen.connectionsDown;
if (totalLR > 1 && totalUD > 1 && !cornerblock)
{
//centre block
if (screen.connectionsLeft == screen.connectionsRight - (totalLR | 1))
{
if (screen.connectionsUp == screen.connectionsDown - (totalUD | 1))
{
cornerblock = true;
}
}
}
GL11.glRotatef(180, 0, 1, 0);
GL11.glTranslatef(-screen.screen.getScaleX(), 0.0F, 0.0F);
screen.screen.drawScreen(screen.imageType, partialTickTime + screen.getWorld().getWorldTime(), cornerblock);
GL11.glPopMatrix();
}
}