mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
finished heat exchanger, fixed remaining fluid API mistakes, mug
This commit is contained in:
parent
49ac34ddba
commit
c38323ff5e
@ -1,18 +1,24 @@
|
|||||||
package com.hbm.blocks.machine;
|
package com.hbm.blocks.machine;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import com.hbm.blocks.BlockDummyable;
|
import com.hbm.blocks.BlockDummyable;
|
||||||
|
import com.hbm.blocks.ILookOverlay;
|
||||||
import com.hbm.blocks.ITooltipProvider;
|
import com.hbm.blocks.ITooltipProvider;
|
||||||
|
import com.hbm.tileentity.TileEntityProxyCombo;
|
||||||
import com.hbm.tileentity.machine.TileEntityHeaterHeatex;
|
import com.hbm.tileentity.machine.TileEntityHeaterHeatex;
|
||||||
|
import com.hbm.util.I18nUtil;
|
||||||
|
|
||||||
import net.minecraft.block.material.Material;
|
import net.minecraft.block.material.Material;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre;
|
||||||
|
import net.minecraftforge.common.util.ForgeDirection;
|
||||||
|
|
||||||
public class HeaterHeatex extends BlockDummyable implements ITooltipProvider {
|
public class HeaterHeatex extends BlockDummyable implements ILookOverlay, ITooltipProvider {
|
||||||
|
|
||||||
public HeaterHeatex() {
|
public HeaterHeatex() {
|
||||||
super(Material.iron);
|
super(Material.iron);
|
||||||
@ -21,8 +27,8 @@ public class HeaterHeatex extends BlockDummyable implements ITooltipProvider {
|
|||||||
@Override
|
@Override
|
||||||
public TileEntity createNewTileEntity(World world, int meta) {
|
public TileEntity createNewTileEntity(World world, int meta) {
|
||||||
|
|
||||||
if(meta >= 12)
|
if(meta >= 12) return new TileEntityHeaterHeatex();
|
||||||
return new TileEntityHeaterHeatex();
|
if(hasExtra(meta)) return new TileEntityProxyCombo().fluid();
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -41,6 +47,39 @@ public class HeaterHeatex extends BlockDummyable implements ITooltipProvider {
|
|||||||
return this.standardOpenBehavior(world, x, y, z, player, 0);
|
return this.standardOpenBehavior(world, x, y, z, player, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void printHook(Pre event, World world, int x, int y, int z) {
|
||||||
|
|
||||||
|
int[] pos = this.findCore(world, x, y, z);
|
||||||
|
|
||||||
|
if(pos == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
TileEntity te = world.getTileEntity(pos[0], pos[1], pos[2]);
|
||||||
|
|
||||||
|
if(!(te instanceof TileEntityHeaterHeatex))
|
||||||
|
return;
|
||||||
|
|
||||||
|
TileEntityHeaterHeatex heater = (TileEntityHeaterHeatex) te;
|
||||||
|
|
||||||
|
List<String> text = new ArrayList();
|
||||||
|
text.add(String.format("%,d", heater.heatEnergy) + " TU");
|
||||||
|
ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) {
|
||||||
|
super.fillSpace(world, x, y, z, dir, o);
|
||||||
|
|
||||||
|
x += dir.offsetX * o;
|
||||||
|
z += dir.offsetZ * o;
|
||||||
|
|
||||||
|
this.makeExtra(world, x + 1, y, z + 1);
|
||||||
|
this.makeExtra(world, x + 1, y, z - 1);
|
||||||
|
this.makeExtra(world, x - 1, y, z + 1);
|
||||||
|
this.makeExtra(world, x - 1, y, z - 1);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) {
|
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) {
|
||||||
this.addStandardInfo(stack, player, list, ext);
|
this.addStandardInfo(stack, player, list, ext);
|
||||||
|
|||||||
@ -1,15 +1,11 @@
|
|||||||
package com.hbm.blocks.machine.pile;
|
package com.hbm.blocks.machine.pile;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
|
|
||||||
import com.hbm.blocks.ModBlocks;
|
import com.hbm.blocks.ModBlocks;
|
||||||
import com.hbm.items.ModItems;
|
import com.hbm.items.ModItems;
|
||||||
import com.hbm.lib.RefStrings;
|
import com.hbm.lib.RefStrings;
|
||||||
import com.hbm.tileentity.machine.pile.TileEntityPileBreedingFuel;
|
import com.hbm.tileentity.machine.pile.TileEntityPileBreedingFuel;
|
||||||
import com.hbm.tileentity.machine.pile.TileEntityPileFuel;
|
|
||||||
|
|
||||||
import api.hbm.block.IToolable;
|
import api.hbm.block.IToolable;
|
||||||
import api.hbm.block.IToolable.ToolType;
|
|
||||||
import cpw.mods.fml.relauncher.Side;
|
import cpw.mods.fml.relauncher.Side;
|
||||||
import cpw.mods.fml.relauncher.SideOnly;
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
import net.minecraft.client.renderer.texture.IIconRegister;
|
import net.minecraft.client.renderer.texture.IIconRegister;
|
||||||
|
|||||||
@ -1,19 +1,13 @@
|
|||||||
package com.hbm.blocks.machine.pile;
|
package com.hbm.blocks.machine.pile;
|
||||||
|
|
||||||
import com.hbm.blocks.ModBlocks;
|
|
||||||
import com.hbm.items.ModItems;
|
import com.hbm.items.ModItems;
|
||||||
import com.hbm.lib.RefStrings;
|
import com.hbm.lib.RefStrings;
|
||||||
|
|
||||||
import api.hbm.block.IToolable;
|
import api.hbm.block.IToolable;
|
||||||
import api.hbm.block.IToolable.ToolType;
|
|
||||||
import cpw.mods.fml.relauncher.Side;
|
import cpw.mods.fml.relauncher.Side;
|
||||||
import cpw.mods.fml.relauncher.SideOnly;
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
import net.minecraft.client.renderer.texture.IIconRegister;
|
import net.minecraft.client.renderer.texture.IIconRegister;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
|
||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
import net.minecraft.item.ItemStack;
|
|
||||||
import net.minecraft.world.World;
|
|
||||||
import net.minecraftforge.common.util.ForgeDirection;
|
|
||||||
|
|
||||||
public class BlockGraphiteBreedingProduct extends BlockGraphiteDrilledBase implements IToolable {
|
public class BlockGraphiteBreedingProduct extends BlockGraphiteDrilledBase implements IToolable {
|
||||||
|
|
||||||
|
|||||||
@ -4,7 +4,6 @@ import com.hbm.blocks.ModBlocks;
|
|||||||
import com.hbm.items.ModItems;
|
import com.hbm.items.ModItems;
|
||||||
|
|
||||||
import api.hbm.block.IToolable;
|
import api.hbm.block.IToolable;
|
||||||
import api.hbm.block.IToolable.ToolType;
|
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
|
|||||||
@ -9,7 +9,6 @@ import com.hbm.items.ModItems;
|
|||||||
import com.hbm.lib.RefStrings;
|
import com.hbm.lib.RefStrings;
|
||||||
|
|
||||||
import api.hbm.block.IToolable;
|
import api.hbm.block.IToolable;
|
||||||
import api.hbm.block.IToolable.ToolType;
|
|
||||||
import cpw.mods.fml.relauncher.Side;
|
import cpw.mods.fml.relauncher.Side;
|
||||||
import cpw.mods.fml.relauncher.SideOnly;
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
|
|||||||
@ -1,14 +1,10 @@
|
|||||||
package com.hbm.blocks.machine.pile;
|
package com.hbm.blocks.machine.pile;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import com.hbm.blocks.ModBlocks;
|
import com.hbm.blocks.ModBlocks;
|
||||||
import com.hbm.items.ModItems;
|
import com.hbm.items.ModItems;
|
||||||
import com.hbm.lib.RefStrings;
|
import com.hbm.lib.RefStrings;
|
||||||
import com.hbm.tileentity.machine.pile.TileEntityPileFuel;
|
|
||||||
import com.hbm.tileentity.machine.pile.TileEntityPileNeutronDetector;
|
import com.hbm.tileentity.machine.pile.TileEntityPileNeutronDetector;
|
||||||
|
|
||||||
import api.hbm.block.IToolable.ToolType;
|
|
||||||
import cpw.mods.fml.relauncher.Side;
|
import cpw.mods.fml.relauncher.Side;
|
||||||
import cpw.mods.fml.relauncher.SideOnly;
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
import net.minecraft.client.renderer.texture.IIconRegister;
|
import net.minecraft.client.renderer.texture.IIconRegister;
|
||||||
|
|||||||
@ -11,7 +11,6 @@ import com.hbm.tileentity.machine.rbmk.RBMKDials;
|
|||||||
import com.hbm.tileentity.machine.rbmk.TileEntityRBMKBase;
|
import com.hbm.tileentity.machine.rbmk.TileEntityRBMKBase;
|
||||||
|
|
||||||
import api.hbm.block.IToolable;
|
import api.hbm.block.IToolable;
|
||||||
import api.hbm.block.IToolable.ToolType;
|
|
||||||
import cpw.mods.fml.client.registry.RenderingRegistry;
|
import cpw.mods.fml.client.registry.RenderingRegistry;
|
||||||
import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
|
import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
|
||||||
import cpw.mods.fml.relauncher.Side;
|
import cpw.mods.fml.relauncher.Side;
|
||||||
|
|||||||
@ -1,29 +1,13 @@
|
|||||||
package com.hbm.blocks.machine.rbmk;
|
package com.hbm.blocks.machine.rbmk;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import com.hbm.blocks.ILookOverlay;
|
|
||||||
import com.hbm.inventory.fluid.FluidType;
|
|
||||||
import com.hbm.inventory.fluid.Fluids;
|
|
||||||
import com.hbm.inventory.fluid.tank.FluidTank;
|
|
||||||
import com.hbm.items.machine.IItemFluidIdentifier;
|
|
||||||
import com.hbm.tileentity.machine.rbmk.TileEntityHeatex;
|
import com.hbm.tileentity.machine.rbmk.TileEntityHeatex;
|
||||||
import com.hbm.tileentity.machine.rbmk.TileEntityRBMKHeater;
|
|
||||||
import com.hbm.util.I18nUtil;
|
|
||||||
|
|
||||||
import net.minecraft.block.BlockContainer;
|
import net.minecraft.block.BlockContainer;
|
||||||
import net.minecraft.block.material.Material;
|
import net.minecraft.block.material.Material;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
import net.minecraft.util.ChatComponentText;
|
|
||||||
import net.minecraft.util.ChatComponentTranslation;
|
|
||||||
import net.minecraft.util.ChatStyle;
|
|
||||||
import net.minecraft.util.EnumChatFormatting;
|
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre;
|
|
||||||
|
|
||||||
public class RBMKHeatex extends BlockContainer implements ILookOverlay {
|
public class RBMKHeatex extends BlockContainer {
|
||||||
|
|
||||||
public RBMKHeatex(Material mat) {
|
public RBMKHeatex(Material mat) {
|
||||||
super(mat);
|
super(mat);
|
||||||
@ -33,54 +17,4 @@ public class RBMKHeatex extends BlockContainer implements ILookOverlay {
|
|||||||
public TileEntity createNewTileEntity(World world, int meta) {
|
public TileEntity createNewTileEntity(World world, int meta) {
|
||||||
return new TileEntityHeatex();
|
return new TileEntityHeatex();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float fX, float fY, float fZ) {
|
|
||||||
|
|
||||||
if(world.isRemote)
|
|
||||||
return true;
|
|
||||||
|
|
||||||
if(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof IItemFluidIdentifier) {
|
|
||||||
IItemFluidIdentifier id = (IItemFluidIdentifier) player.getHeldItem().getItem();
|
|
||||||
FluidType type = id.getType(world, x, y, z, player.getHeldItem());
|
|
||||||
FluidType convert = TileEntityRBMKHeater.getConversion(type);
|
|
||||||
|
|
||||||
if(!player.isSneaking() && convert != Fluids.NONE) {
|
|
||||||
|
|
||||||
TileEntity te = world.getTileEntity(x, y, z);
|
|
||||||
|
|
||||||
if(te instanceof TileEntityHeatex) {
|
|
||||||
TileEntityHeatex heatex = (TileEntityHeatex) te;
|
|
||||||
heatex.coolantIn.setTankType(convert);
|
|
||||||
heatex.coolantOut.setTankType(type);
|
|
||||||
heatex.markDirty();
|
|
||||||
player.addChatComponentMessage(new ChatComponentText("Changed type to ").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW)).appendSibling(new ChatComponentTranslation("hbmfluid." + type.getName().toLowerCase())).appendSibling(new ChatComponentText("!")));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void printHook(Pre event, World world, int x, int y, int z) {
|
|
||||||
|
|
||||||
TileEntity te = world.getTileEntity(x, y, z);
|
|
||||||
|
|
||||||
if(!(te instanceof TileEntityHeatex))
|
|
||||||
return;
|
|
||||||
|
|
||||||
TileEntityHeatex extractor = (TileEntityHeatex) te;
|
|
||||||
|
|
||||||
List<String> text = new ArrayList();
|
|
||||||
addLine(text, extractor.coolantIn, true);
|
|
||||||
addLine(text, extractor.waterIn, true);
|
|
||||||
addLine(text, extractor.coolantOut, false);
|
|
||||||
addLine(text, extractor.waterOut, false);
|
|
||||||
ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void addLine(List<String> text, FluidTank tank, boolean in) {
|
|
||||||
text.add((in ? (EnumChatFormatting.GREEN + "-> ") : (EnumChatFormatting.RED + "<- ")) + EnumChatFormatting.RESET + I18nUtil.resolveKey("hbmfluid." + tank.getTankType().getName().toLowerCase()) + ": " + tank.getFill() + "/" + tank.getMaxFill() + "mB");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -15,7 +15,7 @@ public class ContainerHeaterHeatex extends Container {
|
|||||||
public ContainerHeaterHeatex(InventoryPlayer invPlayer, TileEntityHeaterHeatex tedf) {
|
public ContainerHeaterHeatex(InventoryPlayer invPlayer, TileEntityHeaterHeatex tedf) {
|
||||||
heater = tedf;
|
heater = tedf;
|
||||||
|
|
||||||
this.addSlotToContainer(new Slot(tedf, 0, 71, 73));
|
this.addSlotToContainer(new Slot(tedf, 0, 80, 72));
|
||||||
|
|
||||||
for(int i = 0; i < 3; i++) {
|
for(int i = 0; i < 3; i++) {
|
||||||
for(int j = 0; j < 9; j++) {
|
for(int j = 0; j < 9; j++) {
|
||||||
|
|||||||
@ -328,6 +328,12 @@ public class Fluids {
|
|||||||
HOTOIL.addTraits(new FT_Coolable(OIL, 1, 1, 10).setEff(CoolingType.HEATEXCHANGER, 1.0D));
|
HOTOIL.addTraits(new FT_Coolable(OIL, 1, 1, 10).setEff(CoolingType.HEATEXCHANGER, 1.0D));
|
||||||
HOTCRACKOIL.addTraits(new FT_Coolable(CRACKOIL, 1, 1, 10).setEff(CoolingType.HEATEXCHANGER, 1.0D));
|
HOTCRACKOIL.addTraits(new FT_Coolable(CRACKOIL, 1, 1, 10).setEff(CoolingType.HEATEXCHANGER, 1.0D));
|
||||||
|
|
||||||
|
COOLANT.addTraits(new FT_Heatable().setEff(HeatingType.HEATEXCHANGER, 1.0D).addStep(300, 1, COOLANT_HOT, 1));
|
||||||
|
COOLANT_HOT.addTraits(new FT_Coolable(COOLANT, 1, 1, 300).setEff(CoolingType.HEATEXCHANGER, 1.0D));
|
||||||
|
|
||||||
|
MUG.addTraits(new FT_Heatable().setEff(HeatingType.HEATEXCHANGER, 1.0D).addStep(400, 1, MUG_HOT, 1));
|
||||||
|
MUG_HOT.addTraits(new FT_Coolable(MUG, 1, 1, 400).setEff(CoolingType.HEATEXCHANGER, 1.0D));
|
||||||
|
|
||||||
if(idMapping.size() != metaOrder.size()) {
|
if(idMapping.size() != metaOrder.size()) {
|
||||||
throw new IllegalStateException("A severe error has occoured during NTM's fluid registering process! The MetaOrder and Mappings are inconsistent! Mapping size: " + idMapping.size()+ " / MetaOrder size: " + metaOrder.size());
|
throw new IllegalStateException("A severe error has occoured during NTM's fluid registering process! The MetaOrder and Mappings are inconsistent! Mapping size: " + idMapping.size()+ " / MetaOrder size: " + metaOrder.size());
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,16 +1,22 @@
|
|||||||
package com.hbm.inventory.gui;
|
package com.hbm.inventory.gui;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
|
||||||
|
import org.apache.commons.lang3.math.NumberUtils;
|
||||||
import org.lwjgl.input.Keyboard;
|
import org.lwjgl.input.Keyboard;
|
||||||
import org.lwjgl.opengl.GL11;
|
import org.lwjgl.opengl.GL11;
|
||||||
|
|
||||||
import com.hbm.inventory.container.ContainerHeaterHeatex;
|
import com.hbm.inventory.container.ContainerHeaterHeatex;
|
||||||
import com.hbm.lib.RefStrings;
|
import com.hbm.lib.RefStrings;
|
||||||
|
import com.hbm.packet.NBTControlPacket;
|
||||||
|
import com.hbm.packet.PacketDispatcher;
|
||||||
import com.hbm.tileentity.machine.TileEntityHeaterHeatex;
|
import com.hbm.tileentity.machine.TileEntityHeaterHeatex;
|
||||||
|
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.client.gui.GuiTextField;
|
import net.minecraft.client.gui.GuiTextField;
|
||||||
import net.minecraft.client.resources.I18n;
|
import net.minecraft.client.resources.I18n;
|
||||||
import net.minecraft.entity.player.InventoryPlayer;
|
import net.minecraft.entity.player.InventoryPlayer;
|
||||||
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.util.ResourceLocation;
|
import net.minecraft.util.ResourceLocation;
|
||||||
|
|
||||||
public class GUIHeaterHeatex extends GuiInfoContainer {
|
public class GUIHeaterHeatex extends GuiInfoContainer {
|
||||||
@ -33,11 +39,11 @@ public class GUIHeaterHeatex extends GuiInfoContainer {
|
|||||||
super.initGui();
|
super.initGui();
|
||||||
|
|
||||||
Keyboard.enableRepeatEvents(true);
|
Keyboard.enableRepeatEvents(true);
|
||||||
this.fieldCycles = new GuiTextField(this.fontRendererObj, guiLeft + 74, guiTop + 21, 28, 10);
|
this.fieldCycles = new GuiTextField(this.fontRendererObj, guiLeft + 74, guiTop + 31, 28, 10);
|
||||||
initText(this.fieldCycles);
|
initText(this.fieldCycles);
|
||||||
this.fieldCycles.setText(String.valueOf(heater.amountToCool));
|
this.fieldCycles.setText(String.valueOf(heater.amountToCool));
|
||||||
|
|
||||||
this.fieldDelay = new GuiTextField(this.fontRendererObj, guiLeft + 74, guiTop + 39, 28, 10);
|
this.fieldDelay = new GuiTextField(this.fontRendererObj, guiLeft + 74, guiTop + 49, 28, 10);
|
||||||
initText(this.fieldDelay);
|
initText(this.fieldDelay);
|
||||||
this.fieldDelay.setText(String.valueOf(heater.tickDelay));
|
this.fieldDelay.setText(String.valueOf(heater.tickDelay));
|
||||||
}
|
}
|
||||||
@ -50,11 +56,18 @@ public class GUIHeaterHeatex extends GuiInfoContainer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void drawScreen(int mouseX, int mouseY, float f) {
|
public void drawScreen(int x, int y, float f) {
|
||||||
super.drawScreen(mouseX, mouseY, f);
|
super.drawScreen(x, y, f);
|
||||||
|
|
||||||
heater.tanks[0].renderTankInfo(this, mouseX, mouseY, guiLeft + 44, guiTop + 36, 16, 52);
|
heater.tanks[0].renderTankInfo(this, x, y, guiLeft + 44, guiTop + 36, 16, 52);
|
||||||
heater.tanks[1].renderTankInfo(this, mouseX, mouseY, guiLeft + 116, guiTop + 36, 16, 52);
|
heater.tanks[1].renderTankInfo(this, x, y, guiLeft + 116, guiTop + 36, 16, 52);
|
||||||
|
|
||||||
|
if(guiLeft + 70 <= x && guiLeft + 70 + 36 > x && guiTop + 26 < y && guiTop + 26 + 18 >= y) {
|
||||||
|
func_146283_a(Arrays.asList(new String[] { "Amount per cycle" }), x, y);
|
||||||
|
}
|
||||||
|
if(guiLeft + 70 <= x && guiLeft + 70 + 36 > x && guiTop + 44 < y && guiTop + 44 + 18 >= y) {
|
||||||
|
func_146283_a(Arrays.asList(new String[] { "Cycle tick delay" }), x, y);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -72,13 +85,36 @@ public class GUIHeaterHeatex extends GuiInfoContainer {
|
|||||||
|
|
||||||
heater.tanks[0].renderTank(guiLeft + 44, guiTop + 88, this.zLevel, 16, 52);
|
heater.tanks[0].renderTank(guiLeft + 44, guiTop + 88, this.zLevel, 16, 52);
|
||||||
heater.tanks[1].renderTank(guiLeft + 116, guiTop + 88, this.zLevel, 16, 52);
|
heater.tanks[1].renderTank(guiLeft + 116, guiTop + 88, this.zLevel, 16, 52);
|
||||||
|
|
||||||
|
this.fieldCycles.drawTextBox();
|
||||||
|
this.fieldDelay.drawTextBox();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void mouseClicked(int x, int y, int i) {
|
||||||
|
super.mouseClicked(x, y, i);
|
||||||
|
|
||||||
|
this.fieldCycles.mouseClicked(x, y, i);
|
||||||
|
this.fieldDelay.mouseClicked(x, y, i);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void keyTyped(char c, int i) {
|
protected void keyTyped(char c, int i) {
|
||||||
|
|
||||||
if(this.fieldCycles.textboxKeyTyped(c, i)) return;
|
if(this.fieldCycles.textboxKeyTyped(c, i)) {
|
||||||
if(this.fieldDelay.textboxKeyTyped(c, i)) return;
|
int cyc = Math.max(NumberUtils.toInt(this.fieldCycles.getText()), 1);
|
||||||
|
NBTTagCompound data = new NBTTagCompound();
|
||||||
|
data.setInteger("toCool", cyc);
|
||||||
|
PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, heater.xCoord, heater.yCoord, heater.zCoord));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if(this.fieldDelay.textboxKeyTyped(c, i)) {
|
||||||
|
int delay = Math.max(NumberUtils.toInt(this.fieldDelay.getText()), 1);
|
||||||
|
NBTTagCompound data = new NBTTagCompound();
|
||||||
|
data.setInteger("delay", delay);
|
||||||
|
PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, heater.xCoord, heater.yCoord, heater.zCoord));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
super.keyTyped(c, i);
|
super.keyTyped(c, i);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -25,6 +25,7 @@ public abstract class TileEntityMachineBase extends TileEntityLoadedBase impleme
|
|||||||
slots = new ItemStack[scount];
|
slots = new ItemStack[scount];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** The "chunks is modified, pls don't forget to save me" effect of markDirty, minus the block updates */
|
||||||
public void markChanged() {
|
public void markChanged() {
|
||||||
this.worldObj.markTileEntityChunkModified(this.xCoord, this.yCoord, this.zCoord, this);
|
this.worldObj.markTileEntityChunkModified(this.xCoord, this.yCoord, this.zCoord, this);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,7 +1,9 @@
|
|||||||
package com.hbm.tileentity.machine;
|
package com.hbm.tileentity.machine;
|
||||||
|
|
||||||
import com.hbm.blocks.BlockDummyable;
|
import com.hbm.blocks.BlockDummyable;
|
||||||
|
import com.hbm.interfaces.IControlReceiver;
|
||||||
import com.hbm.inventory.container.ContainerHeaterHeatex;
|
import com.hbm.inventory.container.ContainerHeaterHeatex;
|
||||||
|
import com.hbm.inventory.fluid.FluidType;
|
||||||
import com.hbm.inventory.fluid.Fluids;
|
import com.hbm.inventory.fluid.Fluids;
|
||||||
import com.hbm.inventory.fluid.tank.FluidTank;
|
import com.hbm.inventory.fluid.tank.FluidTank;
|
||||||
import com.hbm.inventory.fluid.trait.FT_Coolable;
|
import com.hbm.inventory.fluid.trait.FT_Coolable;
|
||||||
@ -24,7 +26,7 @@ import net.minecraft.util.AxisAlignedBB;
|
|||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import net.minecraftforge.common.util.ForgeDirection;
|
import net.minecraftforge.common.util.ForgeDirection;
|
||||||
|
|
||||||
public class TileEntityHeaterHeatex extends TileEntityMachineBase implements IHeatSource, INBTPacketReceiver, IFluidStandardTransceiver, IGUIProvider {
|
public class TileEntityHeaterHeatex extends TileEntityMachineBase implements IHeatSource, INBTPacketReceiver, IFluidStandardTransceiver, IGUIProvider, IControlReceiver {
|
||||||
|
|
||||||
public FluidTank[] tanks;
|
public FluidTank[] tanks;
|
||||||
public int amountToCool = 1;
|
public int amountToCool = 1;
|
||||||
@ -47,15 +49,24 @@ public class TileEntityHeaterHeatex extends TileEntityMachineBase implements IHe
|
|||||||
public void updateEntity() {
|
public void updateEntity() {
|
||||||
|
|
||||||
if(!worldObj.isRemote) {
|
if(!worldObj.isRemote) {
|
||||||
|
this.tanks[0].setType(0, slots);
|
||||||
this.setupTanks();
|
this.setupTanks();
|
||||||
this.updateConnections();
|
this.updateConnections();
|
||||||
|
|
||||||
|
this.heatEnergy *= 0.999;
|
||||||
|
|
||||||
NBTTagCompound data = new NBTTagCompound();
|
NBTTagCompound data = new NBTTagCompound();
|
||||||
tanks[0].writeToNBT(data, "0");
|
tanks[0].writeToNBT(data, "0");
|
||||||
this.tryConvert();
|
this.tryConvert();
|
||||||
tanks[1].writeToNBT(data, "1");
|
tanks[1].writeToNBT(data, "1");
|
||||||
data.setInteger("heat", heatEnergy);
|
data.setInteger("heat", heatEnergy);
|
||||||
|
data.setInteger("toCool", amountToCool);
|
||||||
|
data.setInteger("delay", tickDelay);
|
||||||
INBTPacketReceiver.networkPack(this, data, 25);
|
INBTPacketReceiver.networkPack(this, data, 25);
|
||||||
|
|
||||||
|
for(DirPos pos : getConPos()) {
|
||||||
|
if(this.tanks[1].getFill() > 0) this.sendFluid(tanks[1].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -64,6 +75,8 @@ public class TileEntityHeaterHeatex extends TileEntityMachineBase implements IHe
|
|||||||
tanks[0].readFromNBT(nbt, "0");
|
tanks[0].readFromNBT(nbt, "0");
|
||||||
tanks[1].readFromNBT(nbt, "1");
|
tanks[1].readFromNBT(nbt, "1");
|
||||||
this.heatEnergy = nbt.getInteger("heat");
|
this.heatEnergy = nbt.getInteger("heat");
|
||||||
|
this.amountToCool = nbt.getInteger("toCool");
|
||||||
|
this.tickDelay = nbt.getInteger("delay");
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void setupTanks() {
|
protected void setupTanks() {
|
||||||
@ -102,7 +115,7 @@ public class TileEntityHeaterHeatex extends TileEntityMachineBase implements IHe
|
|||||||
int ops = Math.min(inputOps, Math.min(outputOps, opCap));
|
int ops = Math.min(inputOps, Math.min(outputOps, opCap));
|
||||||
tanks[0].setFill(tanks[0].getFill() - trait.amountReq * ops);
|
tanks[0].setFill(tanks[0].getFill() - trait.amountReq * ops);
|
||||||
tanks[1].setFill(tanks[1].getFill() + trait.amountProduced * ops);
|
tanks[1].setFill(tanks[1].getFill() + trait.amountProduced * ops);
|
||||||
this.heatEnergy += trait.heatEnergy * ops;
|
this.heatEnergy += trait.heatEnergy * ops * trait.getEfficiency(CoolingType.HEATEXCHANGER);
|
||||||
this.markChanged();
|
this.markChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -117,6 +130,28 @@ public class TileEntityHeaterHeatex extends TileEntityMachineBase implements IHe
|
|||||||
new DirPos(xCoord - dir.offsetX * 2 - rot.offsetX, yCoord, zCoord - dir.offsetZ * 2 - rot.offsetZ, dir.getOpposite())
|
new DirPos(xCoord - dir.offsetX * 2 - rot.offsetX, yCoord, zCoord - dir.offsetZ * 2 - rot.offsetZ, dir.getOpposite())
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void readFromNBT(NBTTagCompound nbt) {
|
||||||
|
super.readFromNBT(nbt);
|
||||||
|
|
||||||
|
this.tanks[0].readFromNBT(nbt, "0");
|
||||||
|
this.tanks[1].readFromNBT(nbt, "1");
|
||||||
|
this.heatEnergy = nbt.getInteger("heatEnergy");
|
||||||
|
this.amountToCool = nbt.getInteger("toCool");
|
||||||
|
this.tickDelay = nbt.getInteger("delay");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void writeToNBT(NBTTagCompound nbt) {
|
||||||
|
super.writeToNBT(nbt);
|
||||||
|
|
||||||
|
this.tanks[0].writeToNBT(nbt, "0");
|
||||||
|
this.tanks[1].writeToNBT(nbt, "1");
|
||||||
|
nbt.setInteger("heatEnergy", heatEnergy);
|
||||||
|
nbt.setInteger("toCool", amountToCool);
|
||||||
|
nbt.setInteger("delay", tickDelay);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getHeatStored() {
|
public int getHeatStored() {
|
||||||
@ -143,6 +178,12 @@ public class TileEntityHeaterHeatex extends TileEntityMachineBase implements IHe
|
|||||||
return new FluidTank[] {tanks[0]};
|
return new FluidTank[] {tanks[0]};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean canConnect(FluidType type, ForgeDirection dir) {
|
||||||
|
ForgeDirection facing = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset);
|
||||||
|
return dir == facing || dir == facing.getOpposite();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) {
|
public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) {
|
||||||
return new ContainerHeaterHeatex(player.inventory, this);
|
return new ContainerHeaterHeatex(player.inventory, this);
|
||||||
@ -178,4 +219,17 @@ public class TileEntityHeaterHeatex extends TileEntityMachineBase implements IHe
|
|||||||
public double getMaxRenderDistanceSquared() {
|
public double getMaxRenderDistanceSquared() {
|
||||||
return 65536.0D;
|
return 65536.0D;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasPermission(EntityPlayer player) {
|
||||||
|
return player.getDistance(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5) < 16;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void receiveControl(NBTTagCompound data) {
|
||||||
|
if(data.hasKey("toCool")) this.amountToCool = Math.max(data.getInteger("toCool"), 1);
|
||||||
|
if(data.hasKey("delay")) this.tickDelay = Math.max(data.getInteger("delay"), 1);
|
||||||
|
|
||||||
|
this.markChanged();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,6 +3,7 @@ package com.hbm.tileentity.machine;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import com.hbm.blocks.BlockDummyable;
|
||||||
import com.hbm.blocks.ModBlocks;
|
import com.hbm.blocks.ModBlocks;
|
||||||
import com.hbm.blocks.machine.MachineITER;
|
import com.hbm.blocks.machine.MachineITER;
|
||||||
import com.hbm.explosion.ExplosionLarge;
|
import com.hbm.explosion.ExplosionLarge;
|
||||||
@ -23,6 +24,7 @@ import com.hbm.main.MainRegistry;
|
|||||||
import com.hbm.packet.AuxParticlePacketNT;
|
import com.hbm.packet.AuxParticlePacketNT;
|
||||||
import com.hbm.packet.PacketDispatcher;
|
import com.hbm.packet.PacketDispatcher;
|
||||||
import com.hbm.tileentity.TileEntityMachineBase;
|
import com.hbm.tileentity.TileEntityMachineBase;
|
||||||
|
import com.hbm.util.fauxpointtwelve.DirPos;
|
||||||
|
|
||||||
import api.hbm.energy.IEnergyUser;
|
import api.hbm.energy.IEnergyUser;
|
||||||
import api.hbm.fluid.IFluidStandardTransceiver;
|
import api.hbm.fluid.IFluidStandardTransceiver;
|
||||||
@ -147,6 +149,12 @@ public class TileEntityITER extends TileEntityMachineBase implements IEnergyUser
|
|||||||
tanks[i].updateTank(xCoord, yCoord, zCoord, worldObj.provider.dimensionId);
|
tanks[i].updateTank(xCoord, yCoord, zCoord, worldObj.provider.dimensionId);
|
||||||
plasma.updateTank(xCoord, yCoord, zCoord, worldObj.provider.dimensionId);
|
plasma.updateTank(xCoord, yCoord, zCoord, worldObj.provider.dimensionId);
|
||||||
|
|
||||||
|
for(DirPos pos : getConPos()) {
|
||||||
|
if(tanks[1].getFill() > 0) {
|
||||||
|
this.sendFluid(tanks[1].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
NBTTagCompound data = new NBTTagCompound();
|
NBTTagCompound data = new NBTTagCompound();
|
||||||
data.setBoolean("isOn", isOn);
|
data.setBoolean("isOn", isOn);
|
||||||
data.setLong("power", power);
|
data.setLong("power", power);
|
||||||
@ -183,18 +191,34 @@ public class TileEntityITER extends TileEntityMachineBase implements IEnergyUser
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected List<DirPos> connections;
|
||||||
|
|
||||||
private void updateConnections() {
|
private void updateConnections() {
|
||||||
|
|
||||||
|
for(DirPos pos : getConPos()) {
|
||||||
|
this.trySubscribe(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir());
|
||||||
|
this.trySubscribe(tanks[0].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected List<DirPos> getConPos() {
|
||||||
|
if(connections != null && !connections.isEmpty())
|
||||||
|
return connections;
|
||||||
|
|
||||||
|
connections = new ArrayList();
|
||||||
|
|
||||||
this.trySubscribe(worldObj, xCoord, yCoord + 3, zCoord, ForgeDirection.UP);
|
connections.add(new DirPos(xCoord, yCoord + 3, zCoord, ForgeDirection.UP));
|
||||||
this.trySubscribe(worldObj, xCoord, yCoord - 3, zCoord, ForgeDirection.DOWN);
|
connections.add(new DirPos(xCoord, yCoord - 3, zCoord, ForgeDirection.DOWN));
|
||||||
|
|
||||||
Vec3 vec = Vec3.createVectorHelper(5.75, 0, 0);
|
Vec3 vec = Vec3.createVectorHelper(5.75, 0, 0);
|
||||||
|
|
||||||
for(int i = 0; i < 16; i++) {
|
for(int i = 0; i < 16; i++) {
|
||||||
vec.rotateAroundY((float) (Math.PI / 8));
|
vec.rotateAroundY((float) (Math.PI / 8));
|
||||||
this.trySubscribe(worldObj, xCoord + (int)vec.xCoord, yCoord + 3, zCoord + (int)vec.zCoord, ForgeDirection.UP);
|
connections.add(new DirPos(xCoord + (int)vec.xCoord, yCoord + 3, zCoord + (int)vec.zCoord, ForgeDirection.UP));
|
||||||
this.trySubscribe(worldObj, xCoord + (int)vec.xCoord, yCoord - 3, zCoord + (int)vec.zCoord, ForgeDirection.DOWN);
|
connections.add(new DirPos(xCoord + (int)vec.xCoord, yCoord - 3, zCoord + (int)vec.zCoord, ForgeDirection.DOWN));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return connections;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void explode() {
|
private void explode() {
|
||||||
@ -548,4 +572,14 @@ public class TileEntityITER extends TileEntityMachineBase implements IEnergyUser
|
|||||||
public FluidTank[] getAllTanks() {
|
public FluidTank[] getAllTanks() {
|
||||||
return tanks;
|
return tanks;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean canConnect(ForgeDirection dir) {
|
||||||
|
return dir == ForgeDirection.UP || dir == ForgeDirection.DOWN;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean canConnect(FluidType type, ForgeDirection dir) {
|
||||||
|
return dir == ForgeDirection.UP || dir == ForgeDirection.DOWN;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -72,7 +72,7 @@ public class TileEntityStirling extends TileEntityLoadedBase implements INBTPack
|
|||||||
ForgeDirection rot = dir.getRotation(ForgeDirection.DOWN);
|
ForgeDirection rot = dir.getRotation(ForgeDirection.DOWN);
|
||||||
|
|
||||||
cog.motionX = rot.offsetX;
|
cog.motionX = rot.offsetX;
|
||||||
cog.motionY = 1;
|
cog.motionY = 1 + (heat - maxHeat()) * 0.0001D;
|
||||||
cog.motionZ = rot.offsetZ;
|
cog.motionZ = rot.offsetZ;
|
||||||
worldObj.spawnEntityInWorld(cog);
|
worldObj.spawnEntityInWorld(cog);
|
||||||
|
|
||||||
|
|||||||
@ -132,6 +132,14 @@ public class TileEntityMachineRefinery extends TileEntityMachineBase implements
|
|||||||
tanks[i].updateTank(xCoord, yCoord, zCoord, worldObj.provider.dimensionId);
|
tanks[i].updateTank(xCoord, yCoord, zCoord, worldObj.provider.dimensionId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for(DirPos pos : getConPos()) {
|
||||||
|
for(int i = 1; i < 5; i++) {
|
||||||
|
if(tanks[i].getFill() > 0) {
|
||||||
|
this.sendFluid(tanks[i].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
NBTTagCompound data = new NBTTagCompound();
|
NBTTagCompound data = new NBTTagCompound();
|
||||||
data.setLong("power", this.power);
|
data.setLong("power", this.power);
|
||||||
this.networkPack(data, 50);
|
this.networkPack(data, 50);
|
||||||
|
|||||||
@ -106,6 +106,11 @@ public abstract class TileEntityOilDrillBase extends TileEntityMachineBase imple
|
|||||||
if(this.worldObj.getTotalWorldTime() % 10 == 5)
|
if(this.worldObj.getTotalWorldTime() % 10 == 5)
|
||||||
this.fillFluidInit(tanks[1].getTankType());
|
this.fillFluidInit(tanks[1].getTankType());
|
||||||
|
|
||||||
|
for(DirPos pos : getConPos()) {
|
||||||
|
if(tanks[0].getFill() > 0) this.sendFluid(tanks[0].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir());
|
||||||
|
if(tanks[1].getFill() > 0) this.sendFluid(tanks[1].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir());
|
||||||
|
}
|
||||||
|
|
||||||
if(this.power >= this.getPowerReqEff() && this.tanks[0].getFill() < this.tanks[0].getMaxFill() && this.tanks[1].getFill() < this.tanks[1].getMaxFill()) {
|
if(this.power >= this.getPowerReqEff() && this.tanks[0].getFill() < this.tanks[0].getMaxFill() && this.tanks[1].getFill() < this.tanks[1].getMaxFill()) {
|
||||||
|
|
||||||
this.power -= this.getPowerReqEff();
|
this.power -= this.getPowerReqEff();
|
||||||
|
|||||||
@ -11,6 +11,9 @@ import com.hbm.interfaces.IFluidSource;
|
|||||||
import com.hbm.inventory.fluid.FluidType;
|
import com.hbm.inventory.fluid.FluidType;
|
||||||
import com.hbm.inventory.fluid.Fluids;
|
import com.hbm.inventory.fluid.Fluids;
|
||||||
import com.hbm.inventory.fluid.tank.FluidTank;
|
import com.hbm.inventory.fluid.tank.FluidTank;
|
||||||
|
import com.hbm.inventory.fluid.trait.FT_Heatable;
|
||||||
|
import com.hbm.inventory.fluid.trait.FT_Heatable.HeatingStep;
|
||||||
|
import com.hbm.inventory.fluid.trait.FT_Heatable.HeatingType;
|
||||||
import com.hbm.lib.Library;
|
import com.hbm.lib.Library;
|
||||||
import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole.ColumnType;
|
import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole.ColumnType;
|
||||||
import com.hbm.util.fauxpointtwelve.DirPos;
|
import com.hbm.util.fauxpointtwelve.DirPos;
|
||||||
@ -40,23 +43,30 @@ public class TileEntityRBMKHeater extends TileEntityRBMKSlottedBase implements I
|
|||||||
if(!worldObj.isRemote) {
|
if(!worldObj.isRemote) {
|
||||||
|
|
||||||
feed.setType(0, slots);
|
feed.setType(0, slots);
|
||||||
steam.setTankType(getConversion(feed.getTankType()));
|
|
||||||
|
|
||||||
feed.updateTank(xCoord, yCoord, zCoord, worldObj.provider.dimensionId);
|
feed.updateTank(xCoord, yCoord, zCoord, worldObj.provider.dimensionId);
|
||||||
steam.updateTank(xCoord, yCoord, zCoord, worldObj.provider.dimensionId);
|
steam.updateTank(xCoord, yCoord, zCoord, worldObj.provider.dimensionId);
|
||||||
|
|
||||||
double heatCap = this.getConversionHeat(feed.getTankType());
|
if(feed.getTankType().hasTrait(FT_Heatable.class)) {
|
||||||
double heatProvided = this.heat - heatCap;
|
FT_Heatable trait = feed.getTankType().getTrait(FT_Heatable.class);
|
||||||
|
HeatingStep step = trait.getFirstStep();
|
||||||
if(heatProvided > 0 && steam.getTankType() != Fluids.NONE) {
|
steam.setTankType(step.typeProduced);
|
||||||
|
double tempRange = this.heat - steam.getTankType().temperature;
|
||||||
|
|
||||||
double capacity = feed.getTankType().heatCap;
|
if(tempRange > 0) {
|
||||||
int converted = (int)Math.floor(heatProvided / capacity);
|
double TU_PER_DEGREE = 2_000D; //based on 1mB of water absorbing 200 TU as well as 0.1°C from an RBMK column
|
||||||
converted = Math.min(converted, feed.getFill());
|
int inputOps = feed.getFill() / step.amountReq;
|
||||||
converted = Math.min(converted, steam.getMaxFill() - steam.getFill());
|
int outputOps = (steam.getMaxFill() - steam.getFill()) / step.amountProduced;
|
||||||
feed.setFill(feed.getFill() - converted);
|
int tempOps = (int) Math.floor((tempRange * TU_PER_DEGREE) / step.heatReq);
|
||||||
steam.setFill(steam.getFill() + converted);
|
int ops = Math.min(inputOps, Math.min(outputOps, tempOps));
|
||||||
this.heat -= converted * capacity;
|
|
||||||
|
feed.setFill(feed.getFill() - step.amountReq * ops);
|
||||||
|
steam.setFill(steam.getFill() + step.amountProduced * ops);
|
||||||
|
this.heat -= (step.heatReq * ops / TU_PER_DEGREE) * trait.getEfficiency(HeatingType.HEATEXCHANGER);
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
steam.setTankType(Fluids.NONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
fillFluidInit(steam.getTankType());
|
fillFluidInit(steam.getTankType());
|
||||||
@ -96,16 +106,6 @@ public class TileEntityRBMKHeater extends TileEntityRBMKSlottedBase implements I
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static double getConversionHeat(FluidType type) {
|
|
||||||
return getConversion(type).temperature;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static FluidType getConversion(FluidType type) {
|
|
||||||
if(type == Fluids.MUG) return Fluids.MUG_HOT;
|
|
||||||
if(type == Fluids.COOLANT) return Fluids.COOLANT_HOT;
|
|
||||||
return Fluids.NONE;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void fillFluidInit(FluidType type) {
|
public void fillFluidInit(FluidType type) {
|
||||||
|
|||||||
@ -3594,6 +3594,8 @@ tile.heater_electric.name=Elektrische Heizung
|
|||||||
tile.heater_electric.desc=Erzeugt Wärme aus Strom.$Nimmt von unten Wärme mit 85%% Effizienz auf.$Kann mit einem Schraubenzeiher konfiguriert werden.
|
tile.heater_electric.desc=Erzeugt Wärme aus Strom.$Nimmt von unten Wärme mit 85%% Effizienz auf.$Kann mit einem Schraubenzeiher konfiguriert werden.
|
||||||
tile.heater_firebox.name=Feuerbüchse
|
tile.heater_firebox.name=Feuerbüchse
|
||||||
tile.heater_firebox.desc=Erzeugt Wärme aus Festbrennstoff.
|
tile.heater_firebox.desc=Erzeugt Wärme aus Festbrennstoff.
|
||||||
|
tile.heater_heatex.name=Wärmetauschender Heizer
|
||||||
|
tile.heater_heatex.desc=Erzeugt Wärme aus heißen Flüssigkeiten.
|
||||||
tile.heater_oilburner.name=Brenner
|
tile.heater_oilburner.name=Brenner
|
||||||
tile.heater_oilburner.desc=Erzäuft Wärme aus fluiden Brennstoffen.
|
tile.heater_oilburner.desc=Erzäuft Wärme aus fluiden Brennstoffen.
|
||||||
tile.heater_oven.name=Heizofen
|
tile.heater_oven.name=Heizofen
|
||||||
|
|||||||
@ -4122,6 +4122,8 @@ tile.heater_electric.name=Electric Heater
|
|||||||
tile.heater_electric.desc=Uses energy to produce heat.$Accepts heat from the bottom with 85%% efficiency.$Can be configured with a screwdriver.
|
tile.heater_electric.desc=Uses energy to produce heat.$Accepts heat from the bottom with 85%% efficiency.$Can be configured with a screwdriver.
|
||||||
tile.heater_firebox.name=Firebox
|
tile.heater_firebox.name=Firebox
|
||||||
tile.heater_firebox.desc=Burns solid fuel to produce heat.
|
tile.heater_firebox.desc=Burns solid fuel to produce heat.
|
||||||
|
tile.heater_heatex.name=Heat Exchanging Heater
|
||||||
|
tile.heater_heatex.desc=Produces heat from hot fluids.
|
||||||
tile.heater_oilburner.name=Fluid Burner
|
tile.heater_oilburner.name=Fluid Burner
|
||||||
tile.heater_oilburner.desc=Burns fluids to produce heat.
|
tile.heater_oilburner.desc=Burns fluids to produce heat.
|
||||||
tile.heater_oven.name=Heating Oven
|
tile.heater_oven.name=Heating Oven
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
15488
src/main/resources/assets/hbm/models/machines/combustion_engine.obj
Normal file
15488
src/main/resources/assets/hbm/models/machines/combustion_engine.obj
Normal file
File diff suppressed because it is too large
Load Diff
Binary file not shown.
|
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 2.0 KiB |
Loading…
x
Reference in New Issue
Block a user