package mods.eln.transparentnode.heatfurnace; import mods.eln.Eln; import mods.eln.misc.Obj3D; import mods.eln.misc.Obj3D.Obj3DPart; import mods.eln.misc.Utils; import mods.eln.misc.VoltageLevelColor; import mods.eln.node.transparent.TransparentNodeDescriptor; import mods.eln.sim.FurnaceProcess; import mods.eln.sim.ThermalLoad; import mods.eln.sim.ThermalLoadInitializerByPowerDrop; import mods.eln.wiki.Data; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import java.util.List; import static mods.eln.i18n.I18N.tr; public class HeatFurnaceDescriptor extends TransparentNodeDescriptor { Obj3D obj; Obj3DPart tiroir, main; float alphaClose, alphaOpen; double nominalPower; double nominalCombustibleEnergy; int combustionChamberMax; double combustionChamberPower; ThermalLoadInitializerByPowerDrop thermal; double flameStartX, flameStartY, flameStartZ; double flameEndX, flameEndY, flameEndZ; double flameDeltaX, flameDeltaY, flameDeltaZ; double flamePopRate; public HeatFurnaceDescriptor(String name, String modelName, double nominalPower, double nominalCombustibleEnergy, int combustionChamberMax, double combustionChamberPower, ThermalLoadInitializerByPowerDrop thermal) { super(name, HeatFurnaceElement.class, HeatFurnaceRender.class); this.thermal = thermal; this.nominalCombustibleEnergy = nominalCombustibleEnergy; this.combustionChamberMax = combustionChamberMax; this.combustionChamberPower = combustionChamberPower; this.nominalPower = nominalPower; obj = Eln.obj.getObj(modelName); if (obj != null) { tiroir = obj.getPart("tiroir"); main = obj.getPart("main"); if (tiroir != null) { alphaClose = tiroir.getFloat("alphaClose"); alphaOpen = tiroir.getFloat("alphaOpen"); } if (main != null) { flameStartX = main.getFloat("flameStartX"); flameStartY = main.getFloat("flameStartY"); flameStartZ = main.getFloat("flameStartZ"); flameEndX = main.getFloat("flameEndX"); flameEndY = main.getFloat("flameEndY"); flameEndZ = main.getFloat("flameEndZ"); flameDeltaX = flameEndX - flameStartX; flameDeltaY = flameEndY - flameStartY; flameDeltaZ = flameEndZ - flameStartZ; flamePopRate = main.getFloat("flamePopRate"); } } thermal.setMaximalPower(nominalPower); voltageLevelColor = VoltageLevelColor.Thermal; } @Override public void setParent(Item item, int damage) { super.setParent(item, damage); Data.addThermal(newItemStack()); } public void applyTo(ThermalLoad load) { thermal.applyTo(load); } public void applyTo(FurnaceProcess process) { process.nominalCombustibleEnergy = nominalCombustibleEnergy; process.nominalPower = nominalPower; } void draw(float tiroirFactor) { //GL11.glDisable(GL11.GL_T4$5EXTURE_2D); //GL11.glDisable(GL11.GL_CULL_FACE); //GL11.glColor4f(1.0f, 1.0f, 1.0f, 0.5f); // GL11.glColor3f(0.5f, 0.5f, 0.5f); if (main != null) main.draw(); if (tiroir != null) tiroir.draw(alphaClose + tiroirFactor * (alphaOpen - alphaClose), 0f, 0f, 1f); //GL11.glEnable(GL11.GL_TEXTURE_2D); //GL11.glCullFace(GL11.GL_BACK); } @Override public boolean handleRenderType(ItemStack item, ItemRenderType type) { return true; } @Override public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { return type != ItemRenderType.INVENTORY; } @Override public void renderItem(ItemRenderType type, ItemStack item, Object... data) { if (type == ItemRenderType.INVENTORY) { super.renderItem(type, item, data); } else { draw(1.0f); } } @Override public void addInformation(ItemStack itemStack, EntityPlayer entityPlayer, List list, boolean par4) { super.addInformation(itemStack, entityPlayer, list, par4); list.add(tr("Generates heat when supplied with fuel.")); list.add(" " + tr("Nominal power: %1$W", Utils.plotValue(nominalPower))); list.add(" " + tr("Max. temperature: %1$°C", Utils.plotValue(thermal.warmLimit))); } }