mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
135 lines
3.6 KiB
Java
135 lines
3.6 KiB
Java
package com.hbm.tileentity.machine;
|
|
|
|
import java.io.IOException;
|
|
|
|
import com.google.gson.JsonObject;
|
|
import com.google.gson.stream.JsonWriter;
|
|
import com.hbm.inventory.container.ContainerFirebox;
|
|
import com.hbm.inventory.gui.GUIFirebox;
|
|
import com.hbm.lib.RefStrings;
|
|
import com.hbm.module.ModuleBurnTime;
|
|
import com.hbm.tileentity.IConfigurableMachine;
|
|
|
|
import api.hbm.tile.IHeatSource;
|
|
import cpw.mods.fml.relauncher.Side;
|
|
import cpw.mods.fml.relauncher.SideOnly;
|
|
import net.minecraft.client.gui.GuiScreen;
|
|
import net.minecraft.entity.player.EntityPlayer;
|
|
import net.minecraft.inventory.Container;
|
|
import net.minecraft.tileentity.TileEntity;
|
|
import net.minecraft.util.ResourceLocation;
|
|
import net.minecraft.world.World;
|
|
|
|
public class TileEntityHeaterOven extends TileEntityFireboxBase implements IConfigurableMachine {
|
|
|
|
public static int baseHeat = 500;
|
|
public static double timeMult = 0.125D;
|
|
public static int maxHeatEnergy = 500_000;
|
|
public static double heatEff = 0.5D;
|
|
public static ModuleBurnTime burnModule = new ModuleBurnTime()
|
|
.setLigniteTimeMod(1.25)
|
|
.setCoalTimeMod(1.25)
|
|
.setCokeTimeMod(1.25)
|
|
.setSolidTimeMod(1.5)
|
|
.setRocketTimeMod(1.5)
|
|
.setBalefireTimeMod(0.5)
|
|
|
|
.setLigniteHeatMod(2)
|
|
.setCoalHeatMod(2)
|
|
.setCokeHeatMod(2)
|
|
.setSolidHeatMod(3)
|
|
.setRocketHeatMod(5)
|
|
.setBalefireHeatMod(15);
|
|
|
|
public TileEntityHeaterOven() {
|
|
super();
|
|
}
|
|
|
|
@Override
|
|
public String getName() {
|
|
return "container.heaterOven";
|
|
}
|
|
|
|
@Override
|
|
public void updateEntity() {
|
|
|
|
if(!worldObj.isRemote) {
|
|
this.tryPullHeat();
|
|
}
|
|
|
|
super.updateEntity();
|
|
}
|
|
|
|
protected void tryPullHeat() {
|
|
TileEntity con = worldObj.getTileEntity(xCoord, yCoord - 1, zCoord);
|
|
|
|
if(con instanceof IHeatSource) {
|
|
IHeatSource source = (IHeatSource) con;
|
|
int toPull = Math.max(Math.min(source.getHeatStored(), this.getMaxHeat() - this.heatEnergy), 0);
|
|
this.heatEnergy += toPull * heatEff;
|
|
source.useUpHeat(toPull);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public ModuleBurnTime getModule() {
|
|
return burnModule;
|
|
}
|
|
|
|
@Override
|
|
public int getBaseHeat() {
|
|
return baseHeat;
|
|
}
|
|
|
|
@Override
|
|
public double getTimeMult() {
|
|
return timeMult;
|
|
}
|
|
|
|
@Override
|
|
public int getMaxHeat() {
|
|
return maxHeatEnergy;
|
|
}
|
|
|
|
@Override
|
|
public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) {
|
|
return new ContainerFirebox(player.inventory, this);
|
|
}
|
|
|
|
@SideOnly(Side.CLIENT) private ResourceLocation texture;
|
|
|
|
@Override
|
|
@SideOnly(Side.CLIENT)
|
|
public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) {
|
|
if(texture == null) texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/machine/gui_heating_oven.png");
|
|
return new GUIFirebox(player.inventory, this, texture);
|
|
}
|
|
|
|
@Override
|
|
public String getConfigName() {
|
|
return "heatingoven";
|
|
}
|
|
|
|
@Override
|
|
public void readIfPresent(JsonObject obj) {
|
|
baseHeat = IConfigurableMachine.grab(obj, "I:baseHeat", baseHeat);
|
|
timeMult = IConfigurableMachine.grab(obj, "D:burnTimeMult", timeMult);
|
|
heatEff = IConfigurableMachine.grab(obj, "D:heatPullEff", heatEff);
|
|
maxHeatEnergy = IConfigurableMachine.grab(obj, "I:heatCap", maxHeatEnergy);
|
|
if(obj.has("burnModule")) {
|
|
burnModule.readIfPresent(obj.get("M:burnModule").getAsJsonObject());
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void writeConfig(JsonWriter writer) throws IOException {
|
|
writer.name("I:baseHeat").value(baseHeat);
|
|
writer.name("D:burnTimeMult").value(timeMult);
|
|
writer.name("D:heatPullEff").value(heatEff);
|
|
writer.name("I:heatCap").value(maxHeatEnergy);
|
|
writer.name("M:burnModule").beginObject();
|
|
burnModule.writeConfig(writer);
|
|
writer.endObject();
|
|
}
|
|
}
|