From 646d22b4e49f01323e3a4739f38b6321225a7d92 Mon Sep 17 00:00:00 2001 From: Boblet Date: Fri, 15 Apr 2022 08:02:36 +0200 Subject: [PATCH 1/4] fixed radiolysis machine crashing when running too fast --- .../com/hbm/tileentity/machine/TileEntityMachineRadiolysis.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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(); From 4549924dfde5fcc1c630691939c65c456cd3673e Mon Sep 17 00:00:00 2001 From: Boblet Date: Fri, 15 Apr 2022 15:07:17 +0200 Subject: [PATCH 2/4] RBMK heating column, heat exchanger, mug root beer coolant and regular coolant too i guess --- src/main/java/com/hbm/blocks/ModBlocks.java | 6 + .../hbm/blocks/machine/rbmk/RBMKHeater.java | 23 +++ .../hbm/blocks/machine/rbmk/RBMKHeatex.java | 83 +++++++++ .../com/hbm/inventory/fluid/FluidType.java | 6 + .../java/com/hbm/inventory/fluid/Fluids.java | 11 +- .../machine/rbmk/TileEntityHeatex.java | 161 +++++++++++++++++ .../machine/rbmk/TileEntityRBMKBoiler.java | 14 +- .../machine/rbmk/TileEntityRBMKConsole.java | 3 +- .../machine/rbmk/TileEntityRBMKHeater.java | 163 ++++++++++++++++++ .../machine/rbmk/TileEntityRBMKInlet.java | 3 - .../hbm/textures/blocks/rbmk/rbmk_heater.png | Bin 0 -> 1043 bytes .../hbm/textures/blocks/rbmk_heatex.png | Bin 0 -> 701 bytes .../hbm/textures/gui/fluids/coolant_hot.png | Bin 0 -> 675 bytes .../gui/reactors/gui_rbmk_console.png | Bin 6015 -> 6111 bytes .../textures/gui/reactors/gui_rbmk_heater.png | Bin 0 -> 3760 bytes .../models/tank_label/tank_COOLANT_HOT.png | Bin 0 -> 1874 bytes 16 files changed, 461 insertions(+), 12 deletions(-) create mode 100644 src/main/java/com/hbm/blocks/machine/rbmk/RBMKHeater.java create mode 100644 src/main/java/com/hbm/blocks/machine/rbmk/RBMKHeatex.java create mode 100644 src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityHeatex.java create mode 100644 src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKHeater.java create mode 100644 src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_heater.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/rbmk_heatex.png create mode 100644 src/main/resources/assets/hbm/textures/gui/fluids/coolant_hot.png create mode 100644 src/main/resources/assets/hbm/textures/gui/reactors/gui_rbmk_heater.png create mode 100644 src/main/resources/assets/hbm/textures/models/tank_label/tank_COOLANT_HOT.png 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..3b3d7ceb2 --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/rbmk/RBMKHeater.java @@ -0,0 +1,23 @@ +package com.hbm.blocks.machine.rbmk; + +import com.hbm.tileentity.machine.rbmk.TileEntityRBMKHeater; + +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 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..a8d2c2136 --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/rbmk/RBMKHeatex.java @@ -0,0 +1,83 @@ +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(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(type); + heatex.coolantOut.setTankType(convert); + 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/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..13a2aef2e 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", 0xd8fcff, 0, 0, 0, EnumSymbol.NONE).setHeatCap(1D); + MUG_HOT = new FluidType( "MUG_HOT", 0xd8fcff, 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/tileentity/machine/rbmk/TileEntityHeatex.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityHeatex.java new file mode 100644 index 000000000..4ba6f0497 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityHeatex.java @@ -0,0 +1,161 @@ +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()); + } + } + + @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..99e819dde --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKHeater.java @@ -0,0 +1,163 @@ +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); + } + + @Override + public String getName() { + return "container.rbmkHeater"; + } + + @Override + public ColumnType getConsoleType() { + return ColumnType.HEATEX; + } + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + 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/textures/blocks/rbmk/rbmk_heater.png b/src/main/resources/assets/hbm/textures/blocks/rbmk/rbmk_heater.png new file mode 100644 index 0000000000000000000000000000000000000000..24de896b97fd160502c3d412bb0770633d775721 GIT binary patch literal 1043 zcmV+u1nm2XP)F`$`rXEEf!MtOlbjSvoZk4h}k%F4^veE}aTp zJA1o5W5@mlfo_F^E`?_3c0&i#a)B0n3HPd@b+F~*j4kO^2SxAMPI8GG-2*Q|uk=38 z_kDhTMZe!KSQ6j&xlLxX*|oi+qa$(afqRGpu(Pv+=Xofl?1wzhna}6sd5%&Fr4&L4 zj4|YSjxmNfjvr$C9RSbs@H~%4fBgtR&pWgy|&V_2=K(kBh~E#bSY!5&)$X zhm&8?lp%UwzT8)&@B0)*L2z|zV+_Z~$DEv;FdPm6*xue|e}A7m&q*eU^+X-w0AyKa z6&FQ8x7+2bd_XgKMNZv$TN1i%8VH3!l(1+a?4Fr=Bh;^4cV0eJcBDO&55P}K!M z0yYFt#yt$f6*o^O30iA}5CpA&W-GvPoLT@lK&fo;F3ZC(BzPO}^4Zg}8YT()jV6jB zlE2G$&-3a7;CUX&Kc!-&6k!4nrl9!DD00<#)90wr;yVE`-+4z3G+NhN{Q>bxUP#3 z*ORz1oMoBi1E;5_Wf+=G0H)LFMmZp7vl(fca&~rRZ(SMkec$$dD9LMtg@_ literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..469170a26cd5d5c91beb14bbf73c5fb23344ea3e GIT binary patch literal 701 zcmV;u0z&J4grw66p;eQKbRZ=2Tuhr-i+A_nopaAQ z_g*cN$tZy3{tEjghiu;{hGFo(nh(C=mK@gO;{bF4*tU&#uuHw>F?4x|rSddH?bFDr z!=rO=kVlfbDM=&}l*?thZujmY8x{6z9soT(J**{jq>E!6lB&bg#CwD=;0Pk7 z$bN~IU!GF+nn%QxY+gyD>w3Fsx){oQeEu!n-Q5Tw&~=@Gja48d(lVKh8XO!%2!RlS zt*xy#!QWZ-h(^zyS0Vos-93CFhYPE>RAsCi3GP=1tMONh$fLol02yp5w%%#CRsIK0iXli{dMzH z>Xu~@F(p?Ye&EuB7kD)f*L6FVqBi$xsg8nw%d#vYnry%8H4j(02qDh=)d5z`mr!-u zVOf@iG$q?Bv*eejLIT(ApsEf}`rmaF^!E1h%-(2+Xjv9{Qn;>*t6bdQF6DBWSS$ur zhqYvmMnmBHe#e5QX*|F1kBeApg-L0ot+)-8+&kg jcD#-g%C4I-!~lN)zmEa*-1#;@00000NkvXXu0mjfmoPcS literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..adc90eca6a9f4502590c4c7f273c6feeea331ce0 GIT binary patch literal 675 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 W>VGgo9SEJ+1A~($x@FqV;r|6tl_oL( literal 6015 zcma)Ac{r5syMJbeF~&BQ>@s}SND3*-*v3+%8j>v{L=qv!l6A;d5=BDB5-qZY5F*+r z8bW0aWz8POGM4jB>3e?HIoG+aGk-iY&&>PY&;9w_pL==dnlVwI11*dO0B{^N&@%x5 z27QD96cTznW!l){DDu@NZ-xqZqHJ6zVZBzE&$($Rp z0D?k7pU&-&$dy@KT7m&23rko+YQ5|j8(vEy?rp($9vy?)SAbxEc+FTkhAW32+_jYn z9LqCBmslQe4&mIXo>E4Vk(%MCuwtYvvhe#1dv-;YD9PAaLwOZjb$Qv#l$jt zrFsP7jx?8EOTa#Eb+6)M2jHpe*Zraz0S7%c+S)L(pqS+6s_-T@+Z5ejB4|8#x4+!= zZtc{wvSixCTC2nxHVQ8FKCC`AJ6nR}EY@6g<_48Y46LfEQuUxOE*=Df!|xLnsb)+g zi&O%(p{}H)f}=~@jFYFutMG1Pt( zY+GPc!w=eedJM&UvPsm|Y|am8(BI$RCH(3=F+-gdbgemSJioHAJ1W|?;_Lu_YUEJ% zU4>2w4Vp`t`eHtKpK57g@Pb-^_MsFq;OwP=TNrI(b#Mq@>{{nZ zi|hMkcP+!%ADBFq+@%$n(ik5g{`z`oTZP&@jaxFTR5(obgb}wD3+>$7o%?D&^cQ>5 zQF(_(n8^vwT@YlFudn2MsKQjxxV= zuuQPeT-4$5IscPn;sps-Pcl3Gc)zWh_b7Wv(29H=eQ`G_$e*o4fE=iN=~cMey}5}< z>lN9WBGcS%T&<@bB^56g!3lJAb%h$?2dF!)*-2A4``i#fOEXB2Yr|Q?-H zd5YCAfx_$hUl4B2S=okJ%Fdt;H@YU9i;%HGD+oz*@MT}cDAFPsd*i&(c$Jznz(j0eZ~$J z9iChzu0_xFOFHTNkfevReXTjcyz6I6=Y(YEF0u%#u5#_W@MEQ|TocT@p>HGKu4HFj z*Ewr@pN*oc&3X$&ha)3&wU27N%FfcJz0S_cB@P+4p?h$(2@K2>PwB_8hFyOnM1Q99ex`b1v%$pr^5R*+(1r>K?rWw zS76|oD{vD6{0PCxT$m8tuEs$BNQ9GlpSM;B?da_9V?V3GP6(o(BwWZ8*rul}l}ya# z=udLXTnzuM(36Y%$-*d^VClz>^cM-Xe;l|WjsE<@gNGVkJGhm?ewh?HVPJwg$dPhNb*&B(+-5uk)id^V|!AtNhoLEy-w-k&TY zoeDrE7}Uetc=ZAg!6s2{WjW6mRi);L^AIEfDJi z9Hl4w-lmb$E7??e6RNF#l0MDBus2TmH9CY{J*==zMRF7us6UP*800j}BK1byb`IYt zI>6+-n-KHG3M~=m?^3^dlef!C#M>9W*nX(RsrBr>k5cSEIL*d<*cIXC3 zT!XS7KhFh7n{8HF+w!`KB9rj+_4TGEgU_62;@|wZte120IFaZO5P)wB9e(qM$)}U~ z%LyZ+-prEC%@9C1dsZCSd3s`+R!DaK0$Dl++fu~Ce#}4rf|!sLjvHO<7gyz(>p|4N zjTJboepovDci}OcW_qDQ*DYk}XsA~EGE#Vq!a>^z_3Jy6-J5>jKu($=eF0_!!O_0F zMLNFT*S7GnQ1)NRqLJjqrR$<)>d9lpCcf_KODDfoC@Wog5r%WxBW#Xdoxb@Px%D6$Yx98>}2byK^(+8)ct6FoP#6$Nm5|bB3p-!~7+O_md-T z9)RR%R>&(a9OuygYrRO#<;)9z?q*#6z>omnc8Pk`<$*Lwad;%MU7Q{a;o#iuO@hk@ zv-J9mqGQ`DaV*}!$edlQ1~zv{Q%nU2DH5Z0-=vUv z>~UBhvo90jLWH=#!AgORlY_w<;}jUCy`EuB5jaRgree0+<|}pr%M?>?5fU#Zk9dsv zTinhAydA?>dkODT&V;t#rPmj37(pR-nw|b%7-%qzu050#h}V#{77&vSnfkZiK*T(S z5=wX+0{2&=6nBPS3}Z+CldCVRf^kPm+*k31EUtQg`5FM8bAt^Rdp>y@$jL)M_sf>a zlv?P-aPt+wOm8oYwOTCsU%GV3Ok=0SZsRflOk4Nli@Bi`m~G*vf6G(uLm@&AcDv!r zga3{if)JVTyRlS1f#6AWe;%o-bM}A!A$eT;-}pUER-t^m-WayIsUA1dX25}LXES8< z&dBE=OLV}i;Fzp+lx;kAu=BAU_7LXzt?kOL*N;5z>(ii9bPho%c9JM@6T-yP>nv(p zXT8EOx8qa5)76!E^+rD)DHKS>LYvER$=oI{V^HAoNax{nHDgRnqy5ry>r^7lnzq?9MfI!jhj1*Cy1q=2%+p%@w%K&=jx2;rf|@t)12|%MW1`&Ka+tw#_=PN)JS8 z-+c$4Gn7RhCz`kS8UIZu2RKN$d}i+*_#lc2VB&L@+aIK7wFOR?5bd6d(i6zrDtq`7 zHn^C>HPmPNFm)*4m?HJWiJYwo*q^%88)k+DXBz6mMl5~to5RCWYpy|iu(iLd%Mm|# zM#!Q>-{B*GOsR;)v$_m#;5&BtmR|ct(xbmHoua<~~^nY@9=B-_- zzrqp%2bSZ)omUpjdu&5!7GK-SoHX6HtP(eb2~_+e^P%$EUKI@>A# z!8&ID`OikvnHtuk|5T4Fsc*eXs-1dMMV!{>*&fKk(t&4l@8zvh+yZmthgAz%N?gv% zrcO*iMGFg%3Z)By!7w_%owj!_`U}7QcBlLY2UMtia&>EYwd>;VC&#-Fh=YN5a27gZf+Sp7mwuWBRMxfh zM-Nn31&g%hWixR1YBX+DuXT!P26cJYBu>p43UOH<#3Vbps47?|-&qd*$^@4Cyp0-^>o#b;oIUUY=U0s3z%OBfa zZ6Fms;ne)=rfRL5P@0@gsn6LRYfiW5bYBw5Zewl9f4Sce2J$V6-;Iw;E4g(gEHC#~ zor|tjuR9kl#*|)drJhK<7@ZOwM!LNEYs7fXEPnCtJku9wS^m>Kusg0}f})L0Jw7^)b^>>#_+v*z z1Kr$YXH$Nhek9)daBIfrmfrpQO1ImEgoN_OHz)Ulq}#B^*uhA8OR?>2cNtFKA|D!8 z&V0LZ^JY);PcOod@2u@teE#isw@TZf(WFW3@@E^|VEcn(8e3PgsVgDQp+J>5`$E(+ z(eS}knP!42Z%tXaVOG&<kqN#V#06Am{dPhjnrDP_tB1LYw6>WeHduh{EkrVc;FhuF+_wzYla5RwQ~QM zTPC#-)>WO%f6&=uN%iDplDj*eLvP)qa<2`fIz}jeOi}BHH|bTewXdRH%g5~^+T2+-*E^`>>Bqh*Z^X0(A9T|$=%$U53!m<{*vNies#z!xym!x` z_ZS;MZ8oH91p1Qy;rlYeM2^=&f|h&Aa%~}pxff?GUJayniq8bn?qt3HF`O1%csWRZ zOg8njdjrqPr%pauz}H?L&?hUe0r=MGcjo+dFTK6Si<9^GraqmyAfoI(_%2R_HYwu> z8ur7`6J7_%9gkqZySJC&QwuO)9Y-;_H(Df#f>EX-SW+fTHm{K#YX?wkkR_wM%qwz@ z7AY18{|z5d{~~TPPTc_-xFSvlATe`2rpJKid64NGBA5w#iX@=teuiqr9lKlX(A{1< za;b*2Dgy>HImODqZcJSh9}LtAIQbIul8NB!3c8orr)NBh)66TNKuF^Y0CW9_%0A}5f{#_Z`mHtSKJzjSL90BS6e&h ztr$BaTPSoBMovJ!t6Lr&8`MTHNxV`2>5fH7NU5+h=G*_V&}@J?oz+Dh8clUj5*$Xt z27&v=CWvaJM;kt&85!N9XQ;0g7UZ0}-xkZ4eXKf;+QVTBXH2o+|6U+N5e#epkA)|u zvj^xjvBzs|`kTF+dzkke>Q5(TYL{&XE(He%ch&e6*A^I0rsH2;y8hKRFisK1st{RM zr|H&P@zHmNQ7`GV>AE$CUKsQ+{6@N`r)O&9&Rz=#sEYPhTtXzUVyKE+_4NRWM51Tn z?}7-yh>ixcBU$0$3vR{9LI9QbPsOF)D5%BJ%dNiE_{o_UopC9)xLI6^(1IGI0+UaL z1<__|O`Je9o(qSOF}lWiA=cI+RyEaaRtDRQTN6&5a9}J|4tWR#yJ#%sV9u=aJ+X$-TI0tb`I(CrO)PjhXBBb}!c~ zv(4=X65mf!1F(}#U~V~@v%8sU_!5orP1b* 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 0000000000000000000000000000000000000000..ae0e085b6bf90d89d10b1547ea58be618e02859e GIT binary patch literal 3760 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 M07*qoM6N<$f~Uxt;s5{u literal 0 HcmV?d00001 From 5f222a90e9b8cb1a4c47e9665518d452031249a1 Mon Sep 17 00:00:00 2001 From: Bob Date: Sun, 17 Apr 2022 21:57:34 +0200 Subject: [PATCH 3/4] i love my mug root beer --- .../hbm/blocks/machine/rbmk/RBMKHeater.java | 6 ++ .../hbm/blocks/machine/rbmk/RBMKHeatex.java | 7 +- src/main/java/com/hbm/handler/GUIHandler.java | 6 +- ...KBoiler.java => ContainerRBMKGeneric.java} | 9 +-- .../container/ContainerRBMKHeater.java | 62 ++++++++++++++++++ .../java/com/hbm/inventory/fluid/Fluids.java | 4 +- .../com/hbm/inventory/gui/GUIRBMKBoiler.java | 8 +-- .../com/hbm/inventory/gui/GUIRBMKHeater.java | 57 ++++++++++++++++ src/main/java/com/hbm/items/ModItems.java | 2 +- src/main/java/com/hbm/main/ClientProxy.java | 1 + .../com/hbm/main/ModEventHandlerRenderer.java | 2 +- .../com/hbm/render/model/ModelArmorBJ.java | 1 - .../hbm/render/tileentity/RenderRBMKLid.java | 3 +- .../java/com/hbm/tileentity/TileMappings.java | 2 + .../machine/rbmk/TileEntityHeatex.java | 6 ++ .../machine/rbmk/TileEntityRBMKHeater.java | 6 ++ src/main/resources/assets/hbm/lang/de_DE.lang | 6 +- src/main/resources/assets/hbm/lang/en_US.lang | 4 ++ .../assets/hbm/textures/gui/fluids/mug.png | Bin 0 -> 491 bytes .../hbm/textures/gui/fluids/mug_hot.png | Bin 0 -> 491 bytes .../hbm/textures/gui/generators/gui_igen.png | Bin 5095 -> 5106 bytes 21 files changed, 171 insertions(+), 21 deletions(-) rename src/main/java/com/hbm/inventory/container/{ContainerRBMKBoiler.java => ContainerRBMKGeneric.java} (77%) create mode 100644 src/main/java/com/hbm/inventory/container/ContainerRBMKHeater.java create mode 100644 src/main/java/com/hbm/inventory/gui/GUIRBMKHeater.java create mode 100644 src/main/resources/assets/hbm/textures/gui/fluids/mug.png create mode 100644 src/main/resources/assets/hbm/textures/gui/fluids/mug_hot.png diff --git a/src/main/java/com/hbm/blocks/machine/rbmk/RBMKHeater.java b/src/main/java/com/hbm/blocks/machine/rbmk/RBMKHeater.java index 3b3d7ceb2..51e438f1c 100644 --- a/src/main/java/com/hbm/blocks/machine/rbmk/RBMKHeater.java +++ b/src/main/java/com/hbm/blocks/machine/rbmk/RBMKHeater.java @@ -2,6 +2,7 @@ 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; @@ -16,6 +17,11 @@ public class RBMKHeater extends RBMKBase { 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 index a8d2c2136..a1a99bc8d 100644 --- a/src/main/java/com/hbm/blocks/machine/rbmk/RBMKHeatex.java +++ b/src/main/java/com/hbm/blocks/machine/rbmk/RBMKHeatex.java @@ -37,6 +37,9 @@ public class RBMKHeatex extends BlockContainer implements ILookOverlay { @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()); @@ -48,8 +51,8 @@ public class RBMKHeatex extends BlockContainer implements ILookOverlay { if(te instanceof TileEntityHeatex) { TileEntityHeatex heatex = (TileEntityHeatex) te; - heatex.coolantIn.setTankType(type); - heatex.coolantOut.setTankType(convert); + 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("!"))); } 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/Fluids.java b/src/main/java/com/hbm/inventory/fluid/Fluids.java index 13a2aef2e..f4697e7de 100644 --- a/src/main/java/com/hbm/inventory/fluid/Fluids.java +++ b/src/main/java/com/hbm/inventory/fluid/Fluids.java @@ -187,8 +187,8 @@ public class Fluids { 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", 0xd8fcff, 0, 0, 0, EnumSymbol.NONE).setHeatCap(1D); - MUG_HOT = new FluidType( "MUG_HOT", 0xd8fcff, 0, 0, 0, EnumSymbol.NONE).setHeatCap(MUG.heatCap).setTemp(500); + 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); // ^ ^ ^ ^ ^ ^ ^ ^ 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/rbmk/TileEntityHeatex.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityHeatex.java index 4ba6f0497..5a8eeed9e 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityHeatex.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityHeatex.java @@ -71,6 +71,12 @@ public class TileEntityHeatex extends TileEntity implements IFluidAcceptor, IFlu } } + 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); diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKHeater.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKHeater.java index 99e819dde..1dd6fb692 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKHeater.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKHeater.java @@ -20,6 +20,8 @@ public class TileEntityRBMKHeater extends TileEntityRBMKSlottedBase implements I public TileEntityRBMKHeater() { super(1); + this.feed = new FluidTank(Fluids.COOLANT, 16_000, 0); + this.steam = new FluidTank(Fluids.COOLANT_HOT, 16_000, 1); } @Override @@ -36,6 +38,10 @@ public class TileEntityRBMKHeater extends TileEntityRBMKSlottedBase implements I 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); 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/textures/gui/fluids/mug.png b/src/main/resources/assets/hbm/textures/gui/fluids/mug.png new file mode 100644 index 0000000000000000000000000000000000000000..75270984eab953c0e70e3a9bcda1d7c9bbced31d GIT binary patch literal 491 zcmVhjs>+ia*0Eh@NMsjGaF~%SwCAZe%oMRXU+P1}x^0!h7Yb{DC+O{o|dGG)K2Z%A2f-wf?95Kdn zd#-D(S=Y7XDJ5*iXN)Q9JkO+*%3-Ax-unYLN-1KD*nBfkAZV>=+m?ObOOvK)*tQK3 zK|~4+>zrfXcSPjSXxp|jDnM3h7=}Xh&(9CG?|ZJ-EARK4X_^Y|zV8Vk6exKe#}Q); zUDthO?faf(Sr8GdwVcmqPNx&oG#wyiezewv5ZJa2=N$Hazf(u8aZO^)mDU;&A%yVt zK{idza#p8yq%o$b(KO9hg?eMHM4i{QJW&YY%RxO_-cU!K*A`DHeR-=NOWvI2t1aC$ z4aOLjWjVk+K&W}hBWkVbx{mAhiimK#-FQ46#V59D8rrrcgaAO-bzCkNVvKw~A7YGn h?|D9-2VZ1^{R5-}J9$^ERJ;HH002ovPDHLkV1hFL*DnA7 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..cac47b2c0cf1a9b8407c49137aa92fbd3f3f0187 GIT binary patch literal 491 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 Bhcf^G literal 5095 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 x_~06y$AG`j3*8&E2ejk Date: Sun, 17 Apr 2022 23:03:22 +0300 Subject: [PATCH 4/4] Updated ru_RU.lang --- src/main/resources/assets/hbm/lang/ru_RU.lang | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) 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=Усиленный камень