134 lines
No EOL
4.1 KiB
Java
134 lines
No EOL
4.1 KiB
Java
package resonantinduction.old.client.render;
|
|
|
|
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
|
|
import net.minecraft.tileentity.TileEntity;
|
|
import net.minecraft.util.ResourceLocation;
|
|
|
|
import org.lwjgl.opengl.GL11;
|
|
|
|
import resonantinduction.core.Reference;
|
|
import resonantinduction.mechanical.belt.TileConveyorBelt;
|
|
import resonantinduction.mechanical.belt.TileConveyorBelt.SlantType;
|
|
import resonantinduction.old.client.model.ModelAngledBelt;
|
|
import resonantinduction.old.client.model.ModelConveyorBelt;
|
|
import cpw.mods.fml.relauncher.Side;
|
|
import cpw.mods.fml.relauncher.SideOnly;
|
|
|
|
@SideOnly(Side.CLIENT)
|
|
public class RenderConveyorBelt extends TileEntitySpecialRenderer
|
|
{
|
|
public static final ModelConveyorBelt MODEL = new ModelConveyorBelt();
|
|
public static final ModelAngledBelt MODEL2 = new ModelAngledBelt();
|
|
|
|
@Override
|
|
public void renderTileEntityAt(TileEntity t, double x, double y, double z, float f)
|
|
{
|
|
TileConveyorBelt tileEntity = (TileConveyorBelt) t;
|
|
SlantType slantType = tileEntity.getSlant();
|
|
int face = tileEntity.getDirection().ordinal();
|
|
|
|
GL11.glPushMatrix();
|
|
GL11.glTranslatef((float) x + 0.5F, (float) y + 1.5F, (float) z + 0.5F);
|
|
GL11.glRotatef(180f, 0f, 0f, 1f);
|
|
|
|
int frame = tileEntity.getAnimationFrame();
|
|
|
|
if (slantType != null && slantType != SlantType.NONE)
|
|
{
|
|
switch (face)
|
|
{
|
|
case 2:
|
|
GL11.glRotatef(180f, 0f, 1f, 0f);
|
|
break;
|
|
case 3:
|
|
GL11.glRotatef(0f, 0f, 1f, 0f);
|
|
break;
|
|
case 4:
|
|
GL11.glRotatef(90f, 0f, 1f, 0f);
|
|
break;
|
|
case 5:
|
|
GL11.glRotatef(-90f, 0f, 1f, 0f);
|
|
break;
|
|
}
|
|
|
|
if (slantType == SlantType.UP)
|
|
{
|
|
ResourceLocation name = new ResourceLocation(Reference.DOMAIN, Reference.MODEL_PATH + "slantedbelt/frame" + frame + ".png");
|
|
bindTexture(name);
|
|
|
|
GL11.glTranslatef(0f, 0.8f, -0.8f);
|
|
GL11.glRotatef(180f, 0f, 1f, 1f);
|
|
boolean slantAdjust = false;
|
|
TileEntity test = tileEntity.worldObj.getBlockTileEntity(tileEntity.xCoord + tileEntity.getDirection().offsetX, tileEntity.yCoord, tileEntity.zCoord + tileEntity.getDirection().offsetZ);
|
|
if (test != null)
|
|
{
|
|
if (test instanceof TileConveyorBelt)
|
|
{
|
|
if (((TileConveyorBelt) test).getSlant() == SlantType.TOP)
|
|
{
|
|
GL11.glRotatef(10f, 1f, 0f, 0f);
|
|
slantAdjust = true;
|
|
}
|
|
}
|
|
}
|
|
MODEL2.render(0.0625F, true);
|
|
}
|
|
else if (slantType == SlantType.DOWN)
|
|
{
|
|
ResourceLocation name = new ResourceLocation(Reference.DOMAIN, Reference.MODEL_PATH + "slantedbelt/frame" + frame + ".png");
|
|
bindTexture(name);
|
|
GL11.glRotatef(180f, 0f, 1f, 0f);
|
|
boolean slantAdjust = false;
|
|
TileEntity test = tileEntity.worldObj.getBlockTileEntity(tileEntity.xCoord - tileEntity.getDirection().offsetX, tileEntity.yCoord, tileEntity.zCoord - tileEntity.getDirection().offsetZ);
|
|
if (test != null)
|
|
{
|
|
if (test instanceof TileConveyorBelt)
|
|
{
|
|
if (((TileConveyorBelt) test).getSlant() == SlantType.TOP)
|
|
{
|
|
GL11.glRotatef(-10f, 1f, 0f, 0f);
|
|
GL11.glTranslatef(0f, 0.25f, 0f);
|
|
slantAdjust = true;
|
|
}
|
|
}
|
|
}
|
|
MODEL2.render(0.0625F, slantAdjust);
|
|
}
|
|
else
|
|
{
|
|
ResourceLocation name = new ResourceLocation(Reference.DOMAIN, Reference.MODEL_PATH + "belt/frame" + frame + ".png");
|
|
bindTexture(name);
|
|
GL11.glRotatef(180, 0f, 1f, 0f);
|
|
GL11.glTranslatef(0f, -0.68f, 0f);
|
|
MODEL.render(0.0625f, (float) Math.toRadians(tileEntity.wheelRotation), false, false, false, false);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
switch (face)
|
|
{
|
|
case 2:
|
|
GL11.glRotatef(0f, 0f, 1f, 0f);
|
|
break;
|
|
case 3:
|
|
GL11.glRotatef(180f, 0f, 1f, 0f);
|
|
break;
|
|
case 4:
|
|
GL11.glRotatef(-90f, 0f, 1f, 0f);
|
|
break;
|
|
case 5:
|
|
GL11.glRotatef(90f, 0f, 1f, 0f);
|
|
break;
|
|
}
|
|
ResourceLocation name = new ResourceLocation(Reference.DOMAIN, Reference.MODEL_PATH + "belt/frame" + frame + ".png");
|
|
bindTexture(name);
|
|
MODEL.render(0.0625F, (float) Math.toRadians(tileEntity.wheelRotation), false, false, false, true);
|
|
|
|
}
|
|
|
|
int ent = tileEntity.worldObj.getBlockId(tileEntity.xCoord, tileEntity.yCoord, tileEntity.zCoord);
|
|
|
|
GL11.glPopMatrix();
|
|
|
|
}
|
|
} |