package pneumaticCraft.client.model;
import net.minecraft.client.model.ModelBase;
import net.minecraft.client.model.ModelRenderer;
import net.minecraft.client.renderer.entity.RenderItem;
import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraft.entity.Entity;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ResourceLocation;
import org.lwjgl.opengl.GL11;
import pneumaticCraft.common.item.ItemMachineUpgrade;
import pneumaticCraft.common.tileentity.TileEntityChargingStation;
import pneumaticCraft.lib.Textures;
public class ModelChargingStation extends ModelBase implements IBaseModel{
private final RenderItem customRenderItem;
private final ModelChargingStationPad chargePad = new ModelChargingStationPad();
ModelRenderer Back1;
ModelRenderer Back2;
ModelRenderer Back3;
ModelRenderer Back4;
ModelRenderer Base;
ModelRenderer Platform;
ModelRenderer InputSmall1;
ModelRenderer InputSmall2;
ModelRenderer InputSmall3;
ModelRenderer InputSmall4;
ModelRenderer Shape1;
ModelRenderer Shape2;
ModelRenderer Shape3;
ModelRenderer Shape4;
ModelRenderer Leg1;
ModelRenderer Leg2;
ModelRenderer Leg3;
ModelRenderer Leg4;
public ModelChargingStation(){
textureWidth = 64;
textureHeight = 32;
Back1 = new ModelRenderer(this, 0, 0);
Back1.addBox(0F, 0F, 0F, 2, 1, 4);
Back1.setRotationPoint(-1F, 14F, 4F);
Back1.setTextureSize(64, 32);
Back1.mirror = true;
setRotation(Back1, 0F, 0F, 0F);
Back2 = new ModelRenderer(this, 0, 0);
Back2.addBox(0F, 0F, 0F, 2, 1, 4);
Back2.setRotationPoint(-1F, 17F, 4F);
Back2.setTextureSize(64, 32);
Back2.mirror = true;
setRotation(Back2, 0F, 0F, 0F);
Back3 = new ModelRenderer(this, 0, 0);
Back3.addBox(0F, 0F, 0F, 1, 2, 4);
Back3.setRotationPoint(1F, 15F, 4F);
Back3.setTextureSize(64, 32);
Back3.mirror = true;
setRotation(Back3, 0F, 0F, 0F);
Back4 = new ModelRenderer(this, 0, 0);
Back4.addBox(0F, 0F, 0F, 1, 2, 4);
Back4.setRotationPoint(-2F, 15F, 4F);
Back4.setTextureSize(64, 32);
Back4.mirror = true;
setRotation(Back4, 0F, 0F, 0F);
Base = new ModelRenderer(this, 0, 17);
Base.addBox(0F, 0F, 0F, 14, 1, 14);
Base.setRotationPoint(-7F, 23F, -7F);
Base.setTextureSize(64, 32);
Base.mirror = true;
setRotation(Base, 0F, 0F, 0F);
Platform = new ModelRenderer(this, 0, 8);
Platform.addBox(0F, 0F, 0F, 8, 1, 8);
Platform.setRotationPoint(-4F, 18F, -4F);
Platform.setTextureSize(64, 32);
Platform.mirror = true;
setRotation(Platform, 0F, 0F, 0F);
InputSmall1 = new ModelRenderer(this, 0, 0);
InputSmall1.addBox(0F, 0F, 0F, 1, 1, 3);
InputSmall1.setRotationPoint(-0.5F, 14.5F, 1F);
InputSmall1.setTextureSize(64, 32);
InputSmall1.mirror = true;
setRotation(InputSmall1, 0F, 0F, 0F);
InputSmall2 = new ModelRenderer(this, 0, 0);
InputSmall2.addBox(0F, 0F, 0F, 1, 1, 3);
InputSmall2.setRotationPoint(0.5F, 15.5F, 1F);
InputSmall2.setTextureSize(64, 32);
InputSmall2.mirror = true;
setRotation(InputSmall2, 0F, 0F, 0F);
InputSmall3 = new ModelRenderer(this, 0, 0);
InputSmall3.addBox(0F, 0F, 0F, 1, 1, 3);
InputSmall3.setRotationPoint(-0.5F, 16.5F, 1F);
InputSmall3.setTextureSize(64, 32);
InputSmall3.mirror = true;
setRotation(InputSmall3, 0F, 0F, 0F);
InputSmall4 = new ModelRenderer(this, 0, 0);
InputSmall4.addBox(0F, 0F, 0F, 1, 1, 3);
InputSmall4.setRotationPoint(-1.5F, 15.5F, 1F);
InputSmall4.setTextureSize(64, 32);
InputSmall4.mirror = true;
setRotation(InputSmall4, 0F, 0F, 0F);
Shape1 = new ModelRenderer(this, 0, 0);
Shape1.addBox(0F, 0F, 0F, 1, 1, 1);
Shape1.setRotationPoint(-1.5F, 14.5F, 3F);
Shape1.setTextureSize(64, 32);
Shape1.mirror = true;
setRotation(Shape1, 0F, 0F, 0F);
Shape2 = new ModelRenderer(this, 0, 0);
Shape2.addBox(0F, 0F, 0F, 1, 1, 1);
Shape2.setRotationPoint(0.5F, 14.5F, 3F);
Shape2.setTextureSize(64, 32);
Shape2.mirror = true;
setRotation(Shape2, 0F, 0F, 0F);
Shape3 = new ModelRenderer(this, 0, 0);
Shape3.addBox(0F, 0F, 0F, 1, 1, 1);
Shape3.setRotationPoint(0.5F, 16.5F, 3F);
Shape3.setTextureSize(64, 32);
Shape3.mirror = true;
setRotation(Shape3, 0F, 0F, 0F);
Shape4 = new ModelRenderer(this, 0, 0);
Shape4.addBox(0F, 0F, 0F, 1, 1, 1);
Shape4.setRotationPoint(-1.5F, 16.5F, 3F);
Shape4.setTextureSize(64, 32);
Shape4.mirror = true;
setRotation(Shape4, 0F, 0F, 0F);
Leg1 = new ModelRenderer(this, 15, 0);
Leg1.addBox(0F, 0F, 0F, 1, 6, 1);
Leg1.setRotationPoint(2.3F, 18F, -3F);
Leg1.setTextureSize(64, 32);
Leg1.mirror = true;
setRotation(Leg1, -0.5585054F, -0.7853982F, 0F);
Leg2 = new ModelRenderer(this, 15, 0);
Leg2.addBox(0F, 0F, 0F, 1, 6, 1);
Leg2.setRotationPoint(-3F, 18F, -2.3F);
Leg2.setTextureSize(64, 32);
Leg2.mirror = true;
setRotation(Leg2, -0.5585054F, 0.7853982F, 0F);
Leg3 = new ModelRenderer(this, 15, 0);
Leg3.addBox(0F, 0F, 0F, 1, 6, 1);
Leg3.setRotationPoint(3F, 18F, 2.3F);
Leg3.setTextureSize(64, 32);
Leg3.mirror = true;
setRotation(Leg3, -0.5585054F, -2.356194F, 0F);
Leg4 = new ModelRenderer(this, 15, 0);
Leg4.addBox(0F, 0F, 0F, 1, 6, 1);
Leg4.setRotationPoint(-2.3F, 18F, 3F);
Leg4.setTextureSize(64, 32);
Leg4.mirror = true;
setRotation(Leg4, -0.5585054F, 2.356194F, 0F);
customRenderItem = new RenderItem(){
@Override
public boolean shouldBob(){
return false;
};
};
customRenderItem.setRenderManager(RenderManager.instance);
}
@Override
public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5){
super.render(entity, f, f1, f2, f3, f4, f5);
setRotationAngles(f, f1, f2, f3, f4, f5, entity);
Back1.render(f5);
Back2.render(f5);
Back3.render(f5);
Back4.render(f5);
Base.render(f5);
Platform.render(f5);
InputSmall1.render(f5);
InputSmall2.render(f5);
InputSmall3.render(f5);
InputSmall4.render(f5);
Shape1.render(f5);
Shape2.render(f5);
Shape3.render(f5);
Shape4.render(f5);
Leg1.render(f5);
Leg2.render(f5);
Leg3.render(f5);
Leg4.render(f5);
}
@Override
public void renderStatic(float size, TileEntity te){
renderModel(size);
if(te instanceof TileEntityChargingStation) {
TileEntityChargingStation tile = (TileEntityChargingStation)te;
if(tile.getUpgrades(ItemMachineUpgrade.UPGRADE_DISPENSER_DAMAGE) > 0) {
RenderManager.instance.renderEngine.bindTexture(Textures.MODEL_CHARGING_STATION_PAD);
chargePad.renderModel(size);
}
if(tile.getStackInSlot(TileEntityChargingStation.CHARGE_INVENTORY_INDEX) != null) {
float scaleFactor = 0.7F;
EntityItem ghostEntityItem = new EntityItem(tile.getWorldObj());
ghostEntityItem.hoverStart = 0.0F;
ghostEntityItem.setEntityItemStack(tile.getStackInSlot(TileEntityChargingStation.CHARGE_INVENTORY_INDEX));
GL11.glTranslated(0, 1, 0);
GL11.glScalef(scaleFactor, scaleFactor, scaleFactor);
GL11.glScalef(1.0F, -1F, -1F);
boolean fancySetting = RenderManager.instance.options.fancyGraphics;
RenderManager.instance.options.fancyGraphics = true;
customRenderItem.doRender(ghostEntityItem, 0, 0, 0, 0, 0);
RenderManager.instance.options.fancyGraphics = fancySetting;
}
}
}
@Override
public void renderDynamic(float size, TileEntity te, float partialTicks){
}
public void renderModel(float size){
Back1.render(size);
Back2.render(size);
Back3.render(size);
Back4.render(size);
Base.render(size);
Platform.render(size);
InputSmall1.render(size);
InputSmall2.render(size);
InputSmall3.render(size);
InputSmall4.render(size);
Shape1.render(size);
Shape2.render(size);
Shape3.render(size);
Shape4.render(size);
Leg1.render(size);
Leg2.render(size);
Leg3.render(size);
Leg4.render(size);
}
private void setRotation(ModelRenderer model, float x, float y, float z){
model.rotateAngleX = x;
model.rotateAngleY = y;
model.rotateAngleZ = z;
}
@Override
public ResourceLocation getModelTexture(TileEntity tile){
return Textures.MODEL_CHARGING_STATION;
}
@Override
public boolean rotateModelBasedOnBlockMeta(){
return true;
}
}