diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index c75cbf90e..7f093a977 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -1102,6 +1102,7 @@ public class ModBlocks { public static Block rbmk_outgasser; public static Block rbmk_storage; public static Block rbmk_cooler; + public static Block rbmk_heater; public static Block rbmk_console; public static Block rbmk_crane_console; public static final int guiID_rbmk_rod = 113; @@ -1114,6 +1115,7 @@ public class ModBlocks { public static Block rbmk_loader; public static Block rbmk_steam_inlet; public static Block rbmk_steam_outlet; + public static Block rbmk_heatex; public static Block pribris; public static Block pribris_burning; public static Block pribris_radiating; @@ -2067,11 +2069,13 @@ public class ModBlocks { rbmk_outgasser = new RBMKOutgasser().setBlockName("rbmk_outgasser").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_outgasser"); rbmk_storage = new RBMKStorage().setBlockName("rbmk_storage").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_storage"); rbmk_cooler = new RBMKCooler().setBlockName("rbmk_cooler").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_cooler"); + rbmk_heater = new RBMKHeater().setBlockName("rbmk_heater").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_heater"); rbmk_console = new RBMKConsole().setBlockName("rbmk_console").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_console"); rbmk_crane_console = new RBMKCraneConsole().setBlockName("rbmk_crane_console").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_crane_console"); rbmk_loader = new BlockGeneric(Material.iron).setBlockName("rbmk_loader").setCreativeTab(MainRegistry.machineTab).setHardness(50.0F).setResistance(60.0F).setBlockTextureName(RefStrings.MODID + ":rbmk_loader"); rbmk_steam_inlet = new RBMKInlet(Material.iron).setBlockName("rbmk_steam_inlet").setCreativeTab(MainRegistry.machineTab).setHardness(50.0F).setResistance(60.0F).setBlockTextureName(RefStrings.MODID + ":rbmk_steam_inlet"); rbmk_steam_outlet = new RBMKOutlet(Material.iron).setBlockName("rbmk_steam_outlet").setCreativeTab(MainRegistry.machineTab).setHardness(50.0F).setResistance(60.0F).setBlockTextureName(RefStrings.MODID + ":rbmk_steam_outlet"); + rbmk_heatex = new RBMKHeatex(Material.iron).setBlockName("rbmk_heatex").setCreativeTab(MainRegistry.machineTab).setHardness(50.0F).setResistance(60.0F).setBlockTextureName(RefStrings.MODID + ":rbmk_heatex"); pribris = new RBMKDebris().setBlockName("pribris").setCreativeTab(MainRegistry.machineTab).setHardness(50.0F).setResistance(600.0F).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_debris"); pribris_burning = new RBMKDebrisBurning().setBlockName("pribris_burning").setCreativeTab(MainRegistry.machineTab).setHardness(50.0F).setResistance(600.0F).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_debris_burning"); pribris_radiating = new RBMKDebrisRadiating().setBlockName("pribris_radiating").setCreativeTab(MainRegistry.machineTab).setHardness(50.0F).setResistance(600.0F).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_debris_radiating"); @@ -2983,11 +2987,13 @@ public class ModBlocks { GameRegistry.registerBlock(rbmk_outgasser, rbmk_outgasser.getUnlocalizedName()); GameRegistry.registerBlock(rbmk_storage, rbmk_storage.getUnlocalizedName()); GameRegistry.registerBlock(rbmk_cooler, rbmk_cooler.getUnlocalizedName()); + GameRegistry.registerBlock(rbmk_heater, rbmk_heater.getUnlocalizedName()); GameRegistry.registerBlock(rbmk_console, rbmk_console.getUnlocalizedName()); GameRegistry.registerBlock(rbmk_crane_console, rbmk_crane_console.getUnlocalizedName()); GameRegistry.registerBlock(rbmk_loader, rbmk_loader.getUnlocalizedName()); GameRegistry.registerBlock(rbmk_steam_inlet, rbmk_steam_inlet.getUnlocalizedName()); GameRegistry.registerBlock(rbmk_steam_outlet, rbmk_steam_outlet.getUnlocalizedName()); + GameRegistry.registerBlock(rbmk_heatex, rbmk_heatex.getUnlocalizedName()); GameRegistry.registerBlock(pribris, pribris.getUnlocalizedName()); GameRegistry.registerBlock(pribris_burning, pribris_burning.getUnlocalizedName()); GameRegistry.registerBlock(pribris_radiating, pribris_radiating.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/machine/rbmk/RBMKHeater.java b/src/main/java/com/hbm/blocks/machine/rbmk/RBMKHeater.java new file mode 100644 index 000000000..51e438f1c --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/rbmk/RBMKHeater.java @@ -0,0 +1,29 @@ +package com.hbm.blocks.machine.rbmk; + +import com.hbm.tileentity.machine.rbmk.TileEntityRBMKHeater; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +public class RBMKHeater extends RBMKBase { + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + + if(meta >= this.offset) + return new TileEntityRBMKHeater(); + + return null; + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + return openInv(world, x, y, z, player, 0); + } + + @Override + public int getRenderType(){ + return this.renderIDControl; + } +} diff --git a/src/main/java/com/hbm/blocks/machine/rbmk/RBMKHeatex.java b/src/main/java/com/hbm/blocks/machine/rbmk/RBMKHeatex.java new file mode 100644 index 000000000..a1a99bc8d --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/rbmk/RBMKHeatex.java @@ -0,0 +1,86 @@ +package com.hbm.blocks.machine.rbmk; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.blocks.ILookOverlay; +import com.hbm.inventory.FluidTank; +import com.hbm.inventory.fluid.FluidType; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.items.machine.IItemFluidIdentifier; +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.material.Material; +import net.minecraft.entity.player.EntityPlayer; +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.minecraftforge.client.event.RenderGameOverlayEvent.Pre; + +public class RBMKHeatex extends BlockContainer implements ILookOverlay { + + public RBMKHeatex(Material mat) { + super(mat); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + 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 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 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"); + } +} diff --git a/src/main/java/com/hbm/handler/GUIHandler.java b/src/main/java/com/hbm/handler/GUIHandler.java index 6f60d6d70..0df9f040f 100644 --- a/src/main/java/com/hbm/handler/GUIHandler.java +++ b/src/main/java/com/hbm/handler/GUIHandler.java @@ -32,6 +32,8 @@ public class GUIHandler implements IGuiHandler { if(entity instanceof TileEntityMachineRadiolysis) { return new ContainerRadiolysis(player.inventory, (TileEntityMachineRadiolysis) entity); } if(entity instanceof TileEntityMachineChemfac) { return new ContainerChemfac(player.inventory, (TileEntityMachineChemfac) entity); } if(entity instanceof TileEntityElectrolyser) { return new ContainerElectrolyser(player.inventory, (TileEntityElectrolyser) entity); } + + if(entity instanceof TileEntityRBMKHeater) { return new ContainerRBMKHeater(player.inventory, (TileEntityRBMKHeater) entity); } switch(ID) { case ModBlocks.guiID_test_difurnace: { @@ -778,7 +780,7 @@ public class GUIHandler implements IGuiHandler { case ModBlocks.guiID_rbmk_boiler: { if(entity instanceof TileEntityRBMKBoiler) { - return new ContainerRBMKBoiler(player.inventory, (TileEntityRBMKBoiler) entity); + return new ContainerRBMKGeneric(player.inventory); } return null; } @@ -874,6 +876,8 @@ public class GUIHandler implements IGuiHandler { if(entity instanceof TileEntityMachineRadiolysis) { return new GUIRadiolysis(player.inventory, (TileEntityMachineRadiolysis) entity); } if(entity instanceof TileEntityMachineChemfac) { return new GUIChemfac(player.inventory, (TileEntityMachineChemfac) entity); } if(entity instanceof TileEntityElectrolyser) { return new GUIElectrolyser(player.inventory, (TileEntityElectrolyser) entity); } + + if(entity instanceof TileEntityRBMKHeater) { return new GUIRBMKHeater(player.inventory, (TileEntityRBMKHeater) entity); } switch(ID) { case ModBlocks.guiID_test_difurnace: { diff --git a/src/main/java/com/hbm/inventory/container/ContainerRBMKBoiler.java b/src/main/java/com/hbm/inventory/container/ContainerRBMKGeneric.java similarity index 77% rename from src/main/java/com/hbm/inventory/container/ContainerRBMKBoiler.java rename to src/main/java/com/hbm/inventory/container/ContainerRBMKGeneric.java index 732f403c1..9fa297ea3 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerRBMKBoiler.java +++ b/src/main/java/com/hbm/inventory/container/ContainerRBMKGeneric.java @@ -1,19 +1,14 @@ package com.hbm.inventory.container; -import com.hbm.tileentity.machine.rbmk.TileEntityRBMKBoiler; - import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; -public class ContainerRBMKBoiler extends Container { +public class ContainerRBMKGeneric extends Container { - private TileEntityRBMKBoiler rbmk; - - public ContainerRBMKBoiler(InventoryPlayer invPlayer, TileEntityRBMKBoiler tedf) { - rbmk = tedf; + public ContainerRBMKGeneric(InventoryPlayer invPlayer) { for(int i = 0; i < 3; i++) { for(int j = 0; j < 9; j++) { diff --git a/src/main/java/com/hbm/inventory/container/ContainerRBMKHeater.java b/src/main/java/com/hbm/inventory/container/ContainerRBMKHeater.java new file mode 100644 index 000000000..8f448e702 --- /dev/null +++ b/src/main/java/com/hbm/inventory/container/ContainerRBMKHeater.java @@ -0,0 +1,62 @@ +package com.hbm.inventory.container; + +import com.hbm.tileentity.machine.rbmk.TileEntityRBMKHeater; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + +public class ContainerRBMKHeater extends Container { + + private TileEntityRBMKHeater rbmk; + + public ContainerRBMKHeater(InventoryPlayer invPlayer, TileEntityRBMKHeater tile) { + rbmk = tile; + + this.addSlotToContainer(new Slot(tile, 0, 41, 45)); + + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 9; j++) { + this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 84 + i * 18 + 20)); + } + } + + for(int i = 0; i < 9; i++) { + this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142 + 20)); + } + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2) { + ItemStack var3 = null; + Slot var4 = (Slot) this.inventorySlots.get(par2); + + if(var4 != null && var4.getHasStack()) { + ItemStack var5 = var4.getStack(); + var3 = var5.copy(); + + if(par2 <= rbmk.getSizeInventory() - 1) { + if(!this.mergeItemStack(var5, rbmk.getSizeInventory(), this.inventorySlots.size(), true)) { + return null; + } + } else if(!this.mergeItemStack(var5, 0, rbmk.getSizeInventory(), false)) { + return null; + } + + if(var5.stackSize == 0) { + var4.putStack((ItemStack) null); + } else { + var4.onSlotChanged(); + } + } + + return var3; + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return true; + } +} diff --git a/src/main/java/com/hbm/inventory/fluid/FluidType.java b/src/main/java/com/hbm/inventory/fluid/FluidType.java index fe8f94440..d7fa2ef07 100644 --- a/src/main/java/com/hbm/inventory/fluid/FluidType.java +++ b/src/main/java/com/hbm/inventory/fluid/FluidType.java @@ -29,6 +29,7 @@ public class FluidType { public int reactivity; public EnumSymbol symbol; public int temperature; + public double heatCap; public Set containers = new HashSet(); public List traits = new ArrayList(); private String stringId; @@ -61,6 +62,11 @@ public class FluidType { return this; } + public FluidType setHeatCap(double heatCap) { + this.heatCap = heatCap; + return this; + } + public FluidType addContainers(int color, ExtContainer... containers) { this.containerColor = color; Collections.addAll(this.containers, containers); diff --git a/src/main/java/com/hbm/inventory/fluid/Fluids.java b/src/main/java/com/hbm/inventory/fluid/Fluids.java index b3a6f77fc..f4697e7de 100644 --- a/src/main/java/com/hbm/inventory/fluid/Fluids.java +++ b/src/main/java/com/hbm/inventory/fluid/Fluids.java @@ -18,6 +18,7 @@ public class Fluids { public static FluidType SUPERHOTSTEAM; public static FluidType ULTRAHOTSTEAM; public static FluidType COOLANT; + public static FluidType COOLANT_HOT; public static FluidType LAVA; public static FluidType DEUTERIUM; public static FluidType TRITIUM; @@ -87,6 +88,8 @@ public class Fluids { public static FluidType XPJUICE; public static FluidType ENDERJUICE; public static FluidType SULFURIC_ACID; + public static FluidType MUG; + public static FluidType MUG_HOT; private static final HashMap idMapping = new HashMap(); private static final HashMap nameMapping = new HashMap(); @@ -113,7 +116,7 @@ public class Fluids { HOTSTEAM = new FluidType( "HOTSTEAM", 0xE7D6D6, 4, 0, 0, EnumSymbol.NONE).setTemp(300); SUPERHOTSTEAM = new FluidType( "SUPERHOTSTEAM", 0xE7B7B7, 4, 0, 0, EnumSymbol.NONE).setTemp(450); ULTRAHOTSTEAM = new FluidType( "ULTRAHOTSTEAM", 0xE39393, 4, 0, 0, EnumSymbol.NONE).setTemp(600); - COOLANT = new FluidType( "COOLANT", 0xd8fcff, 1, 0, 0, EnumSymbol.NONE); + COOLANT = new FluidType( "COOLANT", 0xd8fcff, 1, 0, 0, EnumSymbol.NONE).setHeatCap(0.25D); LAVA = new FluidType( "LAVA", 0xFF3300, 4, 0, 0, EnumSymbol.NOWATER).setTemp(1200); DEUTERIUM = new FluidTypeCombustible( "DEUTERIUM", 0x0000FF, 3, 4, 0, EnumSymbol.NONE).setCombustionEnergy(FuelGrade.HIGH, 10_000).setHeatEnergy(5_000); TRITIUM = new FluidTypeCombustible( "TRITIUM", 0x000099, 3, 4, 0, EnumSymbol.RADIATION).setCombustionEnergy(FuelGrade.HIGH, 10_000).setHeatEnergy(5_000); @@ -183,6 +186,9 @@ public class Fluids { GASOLINE_LEADED = new FluidTypeCombustible( "GASOLINE_LEADED", 0x445772, 1, 2, 0, EnumSymbol.NONE).setCombustionEnergy(FuelGrade.HIGH, 1_500_000).setHeatEnergy(((FluidTypeFlammable)GASOLINE).getHeatEnergy()); COALGAS_LEADED = new FluidTypeCombustible( "COALGAS_LEADED", 0x445772, 1, 2, 0, EnumSymbol.NONE).setCombustionEnergy(FuelGrade.MEDIUM, 250_000).setHeatEnergy(((FluidTypeFlammable)COALGAS).getHeatEnergy()); SULFURIC_ACID = new FluidType( "SULFURIC_ACID", 0xB0AA64, 3, 0, 2, EnumSymbol.ACID).addTraits(FluidTrait.CORROSIVE); + COOLANT_HOT = new FluidType( "COOLANT_HOT", 0x99525E, 1, 0, 0, EnumSymbol.NONE).setTemp(600).setHeatCap(STEAM.heatCap); + MUG = new FluidType( "MUG", 0x4B2D28, 0, 0, 0, EnumSymbol.NONE).setHeatCap(1D); + MUG_HOT = new FluidType( "MUG_HOT", 0x6B2A20, 0, 0, 0, EnumSymbol.NONE).setHeatCap(MUG.heatCap).setTemp(500); // ^ ^ ^ ^ ^ ^ ^ ^ @@ -205,7 +211,10 @@ public class Fluids { //coolants metaOrder.add(CARBONDIOXIDE); metaOrder.add(COOLANT); + metaOrder.add(COOLANT_HOT); metaOrder.add(CRYOGEL); + metaOrder.add(MUG); + metaOrder.add(MUG_HOT); //pure elements, cyogenic gasses metaOrder.add(HYDROGEN); metaOrder.add(DEUTERIUM); diff --git a/src/main/java/com/hbm/inventory/gui/GUIRBMKBoiler.java b/src/main/java/com/hbm/inventory/gui/GUIRBMKBoiler.java index ccb041d18..0b32f00e1 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIRBMKBoiler.java +++ b/src/main/java/com/hbm/inventory/gui/GUIRBMKBoiler.java @@ -2,7 +2,7 @@ package com.hbm.inventory.gui; import org.lwjgl.opengl.GL11; -import com.hbm.inventory.container.ContainerRBMKBoiler; +import com.hbm.inventory.container.ContainerRBMKGeneric; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.lib.RefStrings; @@ -22,9 +22,9 @@ public class GUIRBMKBoiler extends GuiInfoContainer { private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/reactors/gui_rbmk_boiler.png"); private TileEntityRBMKBoiler boiler; - public GUIRBMKBoiler(InventoryPlayer invPlayer, TileEntityRBMKBoiler tedf) { - super(new ContainerRBMKBoiler(invPlayer, tedf)); - boiler = tedf; + public GUIRBMKBoiler(InventoryPlayer invPlayer, TileEntityRBMKBoiler tile) { + super(new ContainerRBMKGeneric(invPlayer)); + boiler = tile; this.xSize = 176; this.ySize = 186; diff --git a/src/main/java/com/hbm/inventory/gui/GUIRBMKHeater.java b/src/main/java/com/hbm/inventory/gui/GUIRBMKHeater.java new file mode 100644 index 000000000..92d5cc380 --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUIRBMKHeater.java @@ -0,0 +1,57 @@ +package com.hbm.inventory.gui; + +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.container.ContainerRBMKHeater; +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.machine.rbmk.TileEntityRBMKHeater; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.util.ResourceLocation; + +public class GUIRBMKHeater extends GuiInfoContainer { + + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/reactors/gui_rbmk_heater.png"); + private TileEntityRBMKHeater rod; + + public GUIRBMKHeater(InventoryPlayer invPlayer, TileEntityRBMKHeater tedf) { + super(new ContainerRBMKHeater(invPlayer, tedf)); + rod = tedf; + + this.xSize = 176; + this.ySize = 186; + } + + @Override + public void drawScreen(int mouseX, int mouseY, float f) { + super.drawScreen(mouseX, mouseY, f); + + rod.feed.renderTankInfo(this, mouseX, mouseY, guiLeft + 68, guiTop + 24, 16, 58); + rod.steam.renderTankInfo(this, mouseX, mouseY, guiLeft + 126, guiTop + 24, 16, 58); + } + + @Override + protected void drawGuiContainerForegroundLayer(int i, int j) { + String name = this.rod.hasCustomInventoryName() ? this.rod.getInventoryName() : I18n.format(this.rod.getInventoryName()); + + this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + rod.feed.renderTank(guiLeft + 68, guiTop + 82, this.zLevel, 14, 58); + rod.steam.renderTank(guiLeft + 126, guiTop + 82, this.zLevel, 14, 58); + + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + + drawTexturedModalRect(guiLeft + 72, guiTop + 72, 176, 0, 10, 10); + drawTexturedModalRect(guiLeft + 130, guiTop + 72, 186, 0, 10, 10); + } +} diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 6634ff179..d7a767f00 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -5006,7 +5006,7 @@ public class ModItems { .setFall("hbm:step.iron_land") .addResistance("fall", 0).setUnlocalizedName("bj_helmet").setTextureName(RefStrings.MODID + ":bj_helmet"); bj_plate = new ArmorBJ(aMatBJ, 7, 1, RefStrings.MODID + ":textures/armor/starmetal_1.png", 10000000, 10000, 1000, 100).cloneStats((ArmorFSB) bj_helmet).setUnlocalizedName("bj_plate").setTextureName(RefStrings.MODID + ":bj_plate"); - bj_plate_jetpack = new ArmorBJJetpack(aMatBJ, 7, 1, RefStrings.MODID + ":textures/armor/starmetal_1.png", 10000000, 10000, 1000, 100).cloneStats((ArmorFSB) bj_helmet).hides(EnumPlayerPart.LEFT_ARM, EnumPlayerPart.RIGHT_ARM).setUnlocalizedName("bj_plate_jetpack").setTextureName(RefStrings.MODID + ":bj_plate_jetpack"); + bj_plate_jetpack = new ArmorBJJetpack(aMatBJ, 7, 1, RefStrings.MODID + ":textures/armor/starmetal_1.png", 10000000, 10000, 1000, 100).cloneStats((ArmorFSB) bj_helmet).setUnlocalizedName("bj_plate_jetpack").setTextureName(RefStrings.MODID + ":bj_plate_jetpack"); bj_legs = new ArmorBJ(aMatBJ, 7, 2, RefStrings.MODID + ":textures/armor/starmetal_2.png", 10000000, 10000, 1000, 100).cloneStats((ArmorFSB) bj_helmet).setUnlocalizedName("bj_legs").setTextureName(RefStrings.MODID + ":bj_legs"); bj_boots = new ArmorBJ(aMatBJ, 7, 3, RefStrings.MODID + ":textures/armor/starmetal_1.png", 10000000, 10000, 1000, 100).cloneStats((ArmorFSB) bj_helmet).setUnlocalizedName("bj_boots").setTextureName(RefStrings.MODID + ":bj_boots"); diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index c7dde902a..c98b15df3 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -292,6 +292,7 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKRodReaSim.class, new RenderRBMKLid()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKCooler.class, new RenderRBMKLid()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKStorage.class, new RenderRBMKLid()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKHeater.class, new RenderRBMKLid()); //ITER ClientRegistry.bindTileEntitySpecialRenderer(TileEntityITER.class, new RenderITER()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachinePlasmaHeater.class, new RenderPlasmaHeater()); diff --git a/src/main/java/com/hbm/main/ModEventHandlerRenderer.java b/src/main/java/com/hbm/main/ModEventHandlerRenderer.java index 30c29a402..cc2a0064a 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerRenderer.java +++ b/src/main/java/com/hbm/main/ModEventHandlerRenderer.java @@ -88,7 +88,7 @@ public class ModEventHandlerRenderer { @SubscribeEvent public void onOverlayRender(RenderGameOverlayEvent.Pre event) { - if(event.type == ElementType.AIR) { + if(event.type == ElementType.PORTAL) { Minecraft mc = Minecraft.getMinecraft(); diff --git a/src/main/java/com/hbm/render/model/ModelArmorBJ.java b/src/main/java/com/hbm/render/model/ModelArmorBJ.java index 4325e3ba0..8f07fd4c7 100644 --- a/src/main/java/com/hbm/render/model/ModelArmorBJ.java +++ b/src/main/java/com/hbm/render/model/ModelArmorBJ.java @@ -28,7 +28,6 @@ public class ModelArmorBJ extends ModelArmorBase { @Override public void render(Entity par1Entity, float par2, float par3, float par4, float par5, float par6, float par7) { - setRotationAngles(par2, par3, par4, par5, par6, par7, par1Entity); body.copyTo(jetpack); diff --git a/src/main/java/com/hbm/render/tileentity/RenderRBMKLid.java b/src/main/java/com/hbm/render/tileentity/RenderRBMKLid.java index aa9d60546..465c33e67 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderRBMKLid.java +++ b/src/main/java/com/hbm/render/tileentity/RenderRBMKLid.java @@ -7,6 +7,7 @@ import com.hbm.lib.RefStrings; import com.hbm.main.ResourceManager; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKBase; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKBoiler; +import com.hbm.tileentity.machine.rbmk.TileEntityRBMKHeater; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKRod; import net.minecraft.client.renderer.Tessellator; @@ -79,7 +80,7 @@ public class RenderRBMKLid extends TileEntitySpecialRenderer { cherenkov = false; } - if(control instanceof TileEntityRBMKBoiler && meta != RBMKBase.DIR_GLASS_LID.ordinal()) + if((control instanceof TileEntityRBMKBoiler || control instanceof TileEntityRBMKHeater) && meta != RBMKBase.DIR_GLASS_LID.ordinal()) ResourceManager.rbmk_rods.renderPart("Lid"); ResourceManager.rbmk_element.renderPart("Lid"); GL11.glPopMatrix(); diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index dd2d04436..10bac11a4 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -285,11 +285,13 @@ public class TileMappings { put(TileEntityRBMKModerator.class, "tileentity_rbmk_moderator"); put(TileEntityRBMKOutgasser.class, "tileentity_rbmk_outgasser"); put(TileEntityRBMKCooler.class, "tileentity_rbmk_cooler"); + put(TileEntityRBMKHeater.class, "tileentity_rbmk_heater"); put(TileEntityRBMKStorage.class, "tileentity_rbmk_storage"); put(TileEntityCraneConsole.class, "tileentity_rbmk_crane_console"); put(TileEntityRBMKConsole.class, "tileentity_rbmk_console"); put(TileEntityRBMKInlet.class, "tileentity_rbmk_inlet"); put(TileEntityRBMKOutlet.class, "tileentity_rbmk_outlet"); + put(TileEntityHeatex.class, "tileentity_rbmk_heatex"); } private static void putNetwork() { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadiolysis.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadiolysis.java index 02a497dc7..054533238 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadiolysis.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadiolysis.java @@ -127,7 +127,7 @@ public class TileEntityMachineRadiolysis extends TileEntityMachineBase implement setupTanks(); if(heat > 100) { - int crackTime = (int) Math.min(-0.1 * (heat - 100) + 30, 5); + int crackTime = (int) Math.max(-0.1 * (heat - 100) + 30, 5); if(worldObj.getTotalWorldTime() % crackTime == 0) crack(); diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityHeatex.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityHeatex.java new file mode 100644 index 000000000..5a8eeed9e --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityHeatex.java @@ -0,0 +1,167 @@ +package com.hbm.tileentity.machine.rbmk; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.interfaces.IFluidAcceptor; +import com.hbm.interfaces.IFluidSource; +import com.hbm.inventory.FluidTank; +import com.hbm.inventory.fluid.FluidType; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.lib.Library; + +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.common.util.ForgeDirection; + +public class TileEntityHeatex extends TileEntity implements IFluidAcceptor, IFluidSource { + + public List coolantList = new ArrayList(); + public List waterList = new ArrayList(); + public FluidTank coolantIn; + public FluidTank coolantOut; + public FluidTank waterIn; + public FluidTank waterOut; + public double heatBuffer; + public static final double maxHeat = 10_000; + + public TileEntityHeatex() { + coolantIn = new FluidTank(Fluids.COOLANT_HOT, 1000, 0); + coolantOut = new FluidTank(Fluids.COOLANT, 1000, 1); + waterIn = new FluidTank(Fluids.WATER, 1000, 2); + waterOut = new FluidTank(Fluids.SUPERHOTSTEAM, 1000, 3); + } + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + + /* Cool input */ + double heatCap = maxHeat - heatBuffer; + int fillCap = coolantOut.getMaxFill() - coolantOut.getFill(); + double deltaT = coolantIn.getTankType().temperature - coolantOut.getTankType().temperature; + double heatPot = coolantIn.getFill() * coolantIn.getTankType().heatCap * deltaT; + double heatEff = Math.min(heatCap, heatPot); + int convertMax = (int) (heatEff / (coolantIn.getTankType().heatCap * deltaT)); + int convertEff = Math.min(convertMax, fillCap); + + coolantIn.setFill(coolantIn.getFill() - convertEff); + coolantOut.setFill(coolantOut.getFill() + convertEff); + this.heatBuffer += convertEff * coolantIn.getTankType().heatCap * deltaT; + + double HEAT_PER_MB_WATER = RBMKDials.getBoilerHeatConsumption(worldObj); + + /* Heat water */ + int waterCap = waterOut.getMaxFill() - waterOut.getFill(); + int maxBoil = (int) Math.min(waterIn.getFill(), heatBuffer / HEAT_PER_MB_WATER); + int boilEff = Math.min(maxBoil, waterCap); + + waterIn.setFill(waterIn.getFill() - boilEff); + waterOut.setFill(waterOut.getFill() + boilEff); + this.heatBuffer -= boilEff * HEAT_PER_MB_WATER; + + coolantIn.updateTank(this, 15); + coolantOut.updateTank(this, 15); + waterIn.updateTank(this, 15); + waterOut.updateTank(this, 15); + + this.fillFluidInit(coolantOut.getTankType()); + this.fillFluidInit(waterOut.getTankType()); + } + } + + public static FluidType getConversion(FluidType type) { + if(type == Fluids.MUG_HOT) return Fluids.MUG; + if(type == Fluids.COOLANT_HOT) return Fluids.COOLANT; + return Fluids.NONE; + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + this.coolantIn.readFromNBT(nbt, "cI"); + this.coolantOut.readFromNBT(nbt, "cO"); + this.waterIn.readFromNBT(nbt, "wI"); + this.waterOut.readFromNBT(nbt, "wO"); + this.heatBuffer = nbt.getDouble("heat"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + this.coolantIn.writeToNBT(nbt, "cI"); + this.coolantOut.writeToNBT(nbt, "cO"); + this.waterIn.writeToNBT(nbt, "wI"); + this.waterOut.writeToNBT(nbt, "wO"); + nbt.setDouble("heat", this.heatBuffer); + } + + @Override + public void setFillForSync(int fill, int index) { + if(index == 0) coolantIn.setFill(fill); + if(index == 1) coolantOut.setFill(fill); + if(index == 2) waterIn.setFill(fill); + if(index == 3) waterOut.setFill(fill); + } + + @Override + public void setFluidFill(int fill, FluidType type) { + if(type == coolantIn.getTankType()) coolantIn.setFill(fill); + if(type == coolantOut.getTankType()) coolantOut.setFill(fill); + if(type == waterIn.getTankType()) waterIn.setFill(fill); + if(type == waterOut.getTankType()) waterOut.setFill(fill); + } + + @Override + public void setTypeForSync(FluidType type, int index) { + if(index == 0) coolantIn.setTankType(type); + if(index == 1) coolantOut.setTankType(type); + if(index == 2) waterIn.setTankType(type); + if(index == 3) waterOut.setTankType(type); + } + + @Override + public int getFluidFill(FluidType type) { + if(type == coolantIn.getTankType()) return coolantIn.getFill(); + if(type == coolantOut.getTankType()) return coolantOut.getFill(); + if(type == waterIn.getTankType()) return waterIn.getFill(); + if(type == waterOut.getTankType()) return waterOut.getFill(); + return 0; + } + + @Override + public void fillFluidInit(FluidType type) { + for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) + fillFluid(this.xCoord + dir.offsetX, this.yCoord + dir.offsetY, this.zCoord + dir.offsetZ, getTact(), type); + } + + @Override + public void fillFluid(int x, int y, int z, boolean newTact, FluidType type) { + Library.transmitFluid(x, y, z, newTact, this, worldObj, type); + } + + @Override + @Deprecated + public boolean getTact() { return worldObj.getTotalWorldTime() % 2 == 0; } + + @Override + public List getFluidList(FluidType type) { + if(type == coolantOut.getTankType()) return this.coolantList; + if(type == waterOut.getTankType()) return this.waterList; + return new ArrayList(); + } + + @Override + public void clearFluidList(FluidType type) { + if(type == coolantOut.getTankType()) this.coolantList.clear(); + if(type == waterOut.getTankType()) this.waterList.clear(); + } + + @Override + public int getMaxFluidFill(FluidType type) { + if(type == coolantIn.getTankType()) return coolantIn.getMaxFill(); + if(type == waterIn.getTankType()) return waterIn.getMaxFill(); + return 0; + } +} diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java index 848287a7b..f73271f66 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java @@ -57,7 +57,7 @@ public class TileEntityRBMKBoiler extends TileEntityRBMKSlottedBase implements I steam.setFill(steam.getMaxFill()); } - this.heat -= waterUsed * RBMKDials.getBoilerHeatConsumption(worldObj); + this.heat -= waterUsed * feed.getTankType().heatCap; } fillFluidInit(steam.getTankType()); @@ -66,7 +66,7 @@ public class TileEntityRBMKBoiler extends TileEntityRBMKSlottedBase implements I super.updateEntity(); } - public double getHeatFromSteam(FluidType type) { + public static double getHeatFromSteam(FluidType type) { if(type == Fluids.STEAM) return 100D; if(type == Fluids.HOTSTEAM) return 300D; if(type == Fluids.SUPERHOTSTEAM) return 450D; @@ -74,7 +74,7 @@ public class TileEntityRBMKBoiler extends TileEntityRBMKSlottedBase implements I return 0D; } - public double getFactorFromSteam(FluidType type) { + public static double getFactorFromSteam(FluidType type) { if(type == Fluids.STEAM) return 1D; if(type == Fluids.HOTSTEAM) return 10D; if(type == Fluids.SUPERHOTSTEAM) return 100D; @@ -202,10 +202,10 @@ public class TileEntityRBMKBoiler extends TileEntityRBMKSlottedBase implements I if(data.hasKey("compression")) { FluidType type = steam.getTankType(); - if(type == Fluids.STEAM) { steam.setTankType(Fluids.HOTSTEAM); steam.setFill(steam.getFill() / 10); } - if(type == Fluids.HOTSTEAM) { steam.setTankType(Fluids.SUPERHOTSTEAM); steam.setFill(steam.getFill() / 10); } - if(type == Fluids.SUPERHOTSTEAM) { steam.setTankType(Fluids.ULTRAHOTSTEAM); steam.setFill(steam.getFill() / 10); } - if(type == Fluids.ULTRAHOTSTEAM) { steam.setTankType(Fluids.STEAM); steam.setFill(Math.min(steam.getFill() * 1000, steam.getMaxFill())); } + if(type == Fluids.STEAM) { steam.setTankType(Fluids.HOTSTEAM); steam.setFill(steam.getFill() / 10); } + if(type == Fluids.HOTSTEAM) { steam.setTankType(Fluids.SUPERHOTSTEAM); steam.setFill(steam.getFill() / 10); } + if(type == Fluids.SUPERHOTSTEAM) { steam.setTankType(Fluids.ULTRAHOTSTEAM); steam.setFill(steam.getFill() / 10); } + if(type == Fluids.ULTRAHOTSTEAM) { steam.setTankType(Fluids.STEAM); steam.setFill(Math.min(steam.getFill() * 1000, steam.getMaxFill())); } this.markDirty(); } diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKConsole.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKConsole.java index fc2c8b022..78150cdd7 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKConsole.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKConsole.java @@ -276,7 +276,8 @@ public class TileEntityRBMKConsole extends TileEntityMachineBase implements ICon OUTGASSER(80), BREEDER(100), STORAGE(110), - COOLER(120); + COOLER(120), + HEATEX(130); public int offset; diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKHeater.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKHeater.java new file mode 100644 index 000000000..1dd6fb692 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKHeater.java @@ -0,0 +1,169 @@ +package com.hbm.tileentity.machine.rbmk; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.blocks.ModBlocks; +import com.hbm.interfaces.IFluidAcceptor; +import com.hbm.interfaces.IFluidSource; +import com.hbm.inventory.FluidTank; +import com.hbm.inventory.fluid.FluidType; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.lib.Library; +import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole.ColumnType; + +public class TileEntityRBMKHeater extends TileEntityRBMKSlottedBase implements IFluidAcceptor, IFluidSource { + + public FluidTank feed; + public FluidTank steam; + public List list = new ArrayList(); + + public TileEntityRBMKHeater() { + super(1); + this.feed = new FluidTank(Fluids.COOLANT, 16_000, 0); + this.steam = new FluidTank(Fluids.COOLANT_HOT, 16_000, 1); + } + + @Override + public String getName() { + return "container.rbmkHeater"; + } + + @Override + public ColumnType getConsoleType() { + return ColumnType.HEATEX; + } + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + + feed.setType(0, slots); + steam.setTankType(getConversion(feed.getTankType())); + + feed.updateTank(xCoord, yCoord, zCoord, worldObj.provider.dimensionId); + steam.updateTank(xCoord, yCoord, zCoord, worldObj.provider.dimensionId); + + double heatCap = this.getConversionHeat(feed.getTankType()); + double heatProvided = this.heat - heatCap; + + if(heatProvided > 0) { + + int converted = (int)Math.floor(heatProvided / RBMKDials.getBoilerHeatConsumption(worldObj)); + converted = Math.min(converted, feed.getFill()); + converted = Math.min(converted, steam.getMaxFill() - steam.getFill()); + feed.setFill(feed.getFill() - converted); + steam.setFill(steam.getFill() + converted); + this.heat -= converted * RBMKDials.getBoilerHeatConsumption(worldObj); + } + + fillFluidInit(steam.getTankType()); + } + + super.updateEntity(); + } + + 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 + public void fillFluidInit(FluidType type) { + + fillFluid(this.xCoord, this.yCoord + RBMKDials.getColumnHeight(worldObj) + 1, this.zCoord, getTact(), type); + + if(worldObj.getBlock(xCoord, yCoord - 1, zCoord) == ModBlocks.rbmk_loader) { + + fillFluid(this.xCoord + 1, this.yCoord - 1, this.zCoord, getTact(), type); + fillFluid(this.xCoord - 1, this.yCoord - 1, this.zCoord, getTact(), type); + fillFluid(this.xCoord, this.yCoord - 1, this.zCoord + 1, getTact(), type); + fillFluid(this.xCoord, this.yCoord - 1, this.zCoord - 1, getTact(), type); + fillFluid(this.xCoord, this.yCoord - 2, this.zCoord, getTact(), type); + } + + if(worldObj.getBlock(xCoord, yCoord - 2, zCoord) == ModBlocks.rbmk_loader) { + + fillFluid(this.xCoord + 1, this.yCoord - 2, this.zCoord, getTact(), type); + fillFluid(this.xCoord - 1, this.yCoord - 2, this.zCoord, getTact(), type); + fillFluid(this.xCoord, this.yCoord - 2, this.zCoord + 1, getTact(), type); + fillFluid(this.xCoord, this.yCoord - 2, this.zCoord - 1, getTact(), type); + fillFluid(this.xCoord, this.yCoord - 1, this.zCoord, getTact(), type); + fillFluid(this.xCoord, this.yCoord - 3, this.zCoord, getTact(), type); + } + } + + @Override + public void fillFluid(int x, int y, int z, boolean newTact, FluidType type) { + Library.transmitFluid(x, y, z, newTact, this, worldObj, type); + } + + @Override + @Deprecated //why are we still doing this? + public boolean getTact() { return worldObj.getTotalWorldTime() % 2 == 0; } + + @Override + public void setFluidFill(int i, FluidType type) { + + if(type == feed.getTankType()) + feed.setFill(i); + else if(type == steam.getTankType()) + steam.setFill(i); + } + + @Override + public int getFluidFill(FluidType type) { + + if(type == feed.getTankType()) + return feed.getFill(); + else if(type == steam.getTankType()) + return steam.getFill(); + + return 0; + } + + @Override + public int getMaxFluidFill(FluidType type) { + + if(type == feed.getTankType()) + return feed.getMaxFill(); + else if(type == steam.getTankType()) + return steam.getMaxFill(); + + return 0; + } + + @Override + public void setFillForSync(int fill, int index) { + + if(index == 0) + feed.setFill(fill); + else if(index == 1) + steam.setFill(fill); + } + + @Override + public void setTypeForSync(FluidType type, int index) { + + if(index == 0) + feed.setTankType(type); + else if(index == 1) + steam.setTankType(type); + } + + @Override + public List getFluidList(FluidType type) { + return list; + } + + @Override + public void clearFluidList(FluidType type) { + list.clear(); + } +} diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKInlet.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKInlet.java index 05dd8300a..cb91c1deb 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKInlet.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKInlet.java @@ -1,7 +1,5 @@ package com.hbm.tileentity.machine.rbmk; -import java.util.List; - import com.hbm.blocks.machine.rbmk.RBMKBase; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.inventory.FluidTank; @@ -12,7 +10,6 @@ import net.minecraft.block.Block; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.util.ForgeDirection; -import scala.actors.threadpool.Arrays; public class TileEntityRBMKInlet extends TileEntity implements IFluidAcceptor { diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 80ac65a75..71e056b3a 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -288,6 +288,7 @@ container.radiorec=UKW Radio container.rbmkBoiler=RBMK Dampfkanal container.rbmkControl=RBMK Steuerstäbe container.rbmkControlAuto=RBMK Automatische Steuerstäbe +container.rbmkHeater=RBMK Heizer container.rbmkOutgasser=RBMK Bestrahlungskanal container.rbmkReaSim=RBMK Brennstäbe (ReaSim) container.rbmkRod=RBMK Brennstäbe @@ -479,10 +480,11 @@ hbmfluid.biofuel=Biodiesel hbmfluid.biogas=Biogas hbmfluid.bitumen=Bitumen hbmfluid.carbondioxide=Kohlenstoffdioxid -hbmfluid.coolant=Kühlflüssigkeit hbmfluid.coalgas=Kohlebenzin hbmfluid.coalgas_leaded=Bleikohlebenzin hbmfluid.coaloil=Kohleöl +hbmfluid.coolant=Kühlflüssigkeit +hbmfluid.coolant_hot=Heiße Kühlflüssigkeit hbmfluid.crackoil=Crack-Öl hbmfluid.cryogel=Kryogel hbmfluid.death=Osmiridiumlösung @@ -510,6 +512,8 @@ hbmfluid.lightoil_crack=Crack-Leichtöl hbmfluid.lpg=LPG hbmfluid.lubricant=Schmiermittel hbmfluid.mercury=Quecksilber +hbmfluid.mug=Mug Root Beer +hbmfluid.mug_hot=Heißes Mug Root Beer hbmfluid.naphtha=Mitteldestillat hbmfluid.naphtha_crack=Crack-Mitteldestillat hbmfluid.nitan=NITAN© 100 Oktan Supertreibstoff diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 248ae199d..bc810657b 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -461,6 +461,7 @@ container.radiorec=FM Radio container.rbmkBoiler=RBMK Steam Channel container.rbmkControl=RBMK Control Rods container.rbmkControlAuto=RBMK Automatic Control Rods +container.rbmkHeater=RBMK Fluid Heater container.rbmkOutgasser=RBMK Irradiation Channel container.rbmkReaSim=RBMK Fuel Rod (ReaSim) container.rbmkRod=RBMK Fuel Rod @@ -677,6 +678,7 @@ hbmfluid.coalgas=Coal Gasoline hbmfluid.coalgas_leaded=Leaded Coal Gasoline hbmfluid.coaloil=Coal Oil hbmfluid.coolant=Coolant +hbmfluid.coolant_hot=Hot Coolant hbmfluid.crackoil=Cracked Oil hbmfluid.cryogel=Cryogel hbmfluid.death=Osmiridic Solution @@ -704,6 +706,8 @@ hbmfluid.lightoil_crack=Cracked Light Oil hbmfluid.lpg=LPG hbmfluid.lubricant=Engine Lubricant hbmfluid.mercury=Mercury +hbmfluid.mug=Mug Root Beer +hbmfluid.mug_hot=Hot Mug Root Beer hbmfluid.naphtha=Naphtha hbmfluid.naphtha_crack=Cracked Naphtha hbmfluid.nitan=NITAN© 100 Octane Super Fuel diff --git a/src/main/resources/assets/hbm/lang/ru_RU.lang b/src/main/resources/assets/hbm/lang/ru_RU.lang index 42db1784f..d9a613d15 100644 --- a/src/main/resources/assets/hbm/lang/ru_RU.lang +++ b/src/main/resources/assets/hbm/lang/ru_RU.lang @@ -789,6 +789,9 @@ hbmfluid.diesel=Дизель hbmfluid.kerosene=Керосин hbmfluid.gas=Природный газ hbmfluid.coolant=Хладагент +hbmfluid.coolant_hot=Горячий хладагент +hbmfluid.mug=Пиво "Mug Root" +hbmfluid.mug_hot=Горячее пиво "Mug Root" hbmfluid.amat=Антиматерия hbmfluid.aschrab=Антишрабидий hbmfluid.heavyoil=Тяжелая нефть @@ -926,6 +929,12 @@ hadron.hopper0=§eОбычный режим:$Все предметы будут hadron.hopper1=§eРежим воронки:$Один предмет всегда останется. hadron.modeCircular=§eРежим циклического ускорителя:$Магниты должны замкнуться обратно в сердечник.$Открывает больше рецептов. hadron.modeLine=§eРежим линейного ускорителя:$Ускоритель заканчивается камерой анализа.$Меньше рецептов. +hadron.noresult_too_slow=Недостат. ускорение! +hadron.noresult_wrong_ingredient=Неверный рецепт! +hadron.noresult_wrong_mode=Неверный режим! +hadron.stats=Предыдущие результаты: +hadron.stats_coord=Ошибка: %s / %s / %s +hadron.stats_momentum=Ускорение: %s radar.detectMissiles=Обнаружение ракет radar.detectPlayers=Обнаружение игроков radar.smartMode=Умный режим$Выход редстоуна игнорирует восходящие ракеты @@ -1607,6 +1616,7 @@ container.rbmkOutgasser=Стержень облучения РБМК container.rbmkRod=Топливные стержни РБМК container.rbmkReaSim=Топливные стержни РБМК (РеаСим) container.rbmkStorage=Колонна-хранилище РБМК +container.rbmkHeater=Жидкостный нагреватель РБМК tile.rbmk_storage.name=Колонна-хранилище РБМК tile.rbmk_cooler.name=Охладитель РБМК tile.block_graphite_drilled.name=Просверленный графит @@ -2294,7 +2304,7 @@ tile.deco_emitter.name=Декоративный источник света tile.plant_flower.foxglove.name=Наперстянка tile.plant_flower.nightshade.name=Белладонна tile.plant_flower.tobacco.name=Табак -tile.plant_flower.weed.name=Травка Версия 420(0) +tile.plant_flower.weed.name=Конопля tile.stone_cracked.name=Треснутый камень tile.reinforced_brick.name=Усиленный камень diff --git a/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_heater.png b/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_heater.png new file mode 100644 index 000000000..24de896b9 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_heater.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/rbmk_heatex.png b/src/main/resources/assets/hbm/textures/blocks/rbmk_heatex.png new file mode 100644 index 000000000..469170a26 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/rbmk_heatex.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/coolant_hot.png b/src/main/resources/assets/hbm/textures/gui/fluids/coolant_hot.png new file mode 100644 index 000000000..adc90eca6 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/fluids/coolant_hot.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/mug.png b/src/main/resources/assets/hbm/textures/gui/fluids/mug.png new file mode 100644 index 000000000..75270984e Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/fluids/mug.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/mug_hot.png b/src/main/resources/assets/hbm/textures/gui/fluids/mug_hot.png new file mode 100644 index 000000000..cac47b2c0 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/fluids/mug_hot.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/generators/gui_igen.png b/src/main/resources/assets/hbm/textures/gui/generators/gui_igen.png index 1137ee2d5..0e8fbe1d5 100644 Binary files a/src/main/resources/assets/hbm/textures/gui/generators/gui_igen.png and b/src/main/resources/assets/hbm/textures/gui/generators/gui_igen.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/reactors/gui_rbmk_console.png b/src/main/resources/assets/hbm/textures/gui/reactors/gui_rbmk_console.png index 6650681e2..352ca62f5 100644 Binary files a/src/main/resources/assets/hbm/textures/gui/reactors/gui_rbmk_console.png and b/src/main/resources/assets/hbm/textures/gui/reactors/gui_rbmk_console.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/reactors/gui_rbmk_heater.png b/src/main/resources/assets/hbm/textures/gui/reactors/gui_rbmk_heater.png new file mode 100644 index 000000000..ae0e085b6 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/reactors/gui_rbmk_heater.png differ diff --git a/src/main/resources/assets/hbm/textures/models/tank_label/tank_COOLANT_HOT.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_COOLANT_HOT.png new file mode 100644 index 000000000..a4e746472 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/tank_label/tank_COOLANT_HOT.png differ