diff --git a/src/main/java/com/recursive_pineapple/nuclear_horizons/ClientProxy.java b/src/main/java/com/recursive_pineapple/nuclear_horizons/ClientProxy.java index d64d70c..6260c37 100644 --- a/src/main/java/com/recursive_pineapple/nuclear_horizons/ClientProxy.java +++ b/src/main/java/com/recursive_pineapple/nuclear_horizons/ClientProxy.java @@ -2,6 +2,7 @@ import com.gtnewhorizons.modularui.common.peripheral.ModularUIPeripheralInputHandler; import com.gtnewhorizons.modularui.integration.nei.ModularUIContainerObjectHandler; +import com.recursive_pineapple.nuclear_horizons.reactors.fluids.IconLoader; import codechicken.nei.guihook.GuiContainerManager; import cpw.mods.fml.common.event.FMLPreInitializationEvent; @@ -18,6 +19,8 @@ public Side getSide() { public void preInit(FMLPreInitializationEvent event) { super.preInit(event); + IconLoader.INSTANCE.register(); + GuiContainerManager.addInputHandler(new ModularUIPeripheralInputHandler()); GuiContainerManager.addObjectHandler(new ModularUIContainerObjectHandler()); // NetworkRegistry.INSTANCE.registerGuiHandler(NuclearHorizons.instance, new GuiHandler()); diff --git a/src/main/java/com/recursive_pineapple/nuclear_horizons/CommonProxy.java b/src/main/java/com/recursive_pineapple/nuclear_horizons/CommonProxy.java index 8528040..01b7761 100644 --- a/src/main/java/com/recursive_pineapple/nuclear_horizons/CommonProxy.java +++ b/src/main/java/com/recursive_pineapple/nuclear_horizons/CommonProxy.java @@ -24,9 +24,9 @@ public void preInit(FMLPreInitializationEvent event) { Config.synchronizeConfiguration(event.getSuggestedConfigurationFile()); - FluidList.registerFluids(); - BlockList.registerBlocks(); ItemList.registerItems(); + BlockList.registerBlocks(); + FluidList.registerFluids(); } // load "Do your mod setup. Build whatever data structures you care about. Register recipes." (Remove if not needed) @@ -36,12 +36,14 @@ public void init(FMLInitializationEvent event) { // postInit "Handle interaction with other mods, complete your setup based on this." (Remove if not needed) public void postInit(FMLPostInitializationEvent event) { + FluidList.registerContainers(); FluidList.registerCoolants(); + SimulationItems.registerSimulationItems(); + ForeignItems.registerForeignReactorItems(); } // register server commands in this event handler (Remove if not needed) public void serverStarting(FMLServerStartingEvent event) { - SimulationItems.registerSimulationItems(); - ForeignItems.registerForeignReactorItems(); + } } diff --git a/src/main/java/com/recursive_pineapple/nuclear_horizons/Config.java b/src/main/java/com/recursive_pineapple/nuclear_horizons/Config.java index 8f288fa..c4310ad 100644 --- a/src/main/java/com/recursive_pineapple/nuclear_horizons/Config.java +++ b/src/main/java/com/recursive_pineapple/nuclear_horizons/Config.java @@ -11,6 +11,8 @@ public class Config { public static double MOX_EU_COEFFICIENT = 4; public static int REACTOR_EU_MULTIPLIER = 100; public static int FLUID_NUKE_HU_MULTIPLIER = 2; + public static int COOLANT_SPECIFIC_HEAT = 1; + public static int NAQ_COOLANT_SPECIFIC_HEAT = 8; public static void synchronizeConfiguration(File configFile) { Configuration configuration = new Configuration(configFile); diff --git a/src/main/java/com/recursive_pineapple/nuclear_horizons/reactors/blocks/BlockList.java b/src/main/java/com/recursive_pineapple/nuclear_horizons/reactors/blocks/BlockList.java index 0fc4d39..43fc3f1 100644 --- a/src/main/java/com/recursive_pineapple/nuclear_horizons/reactors/blocks/BlockList.java +++ b/src/main/java/com/recursive_pineapple/nuclear_horizons/reactors/blocks/BlockList.java @@ -3,10 +3,6 @@ import static cpw.mods.fml.common.registry.GameRegistry.registerBlock; import static cpw.mods.fml.common.registry.GameRegistry.registerTileEntity; -import net.minecraft.block.material.Material; - -import com.recursive_pineapple.nuclear_horizons.NuclearHorizons; -import com.recursive_pineapple.nuclear_horizons.reactors.fluids.FluidList; import com.recursive_pineapple.nuclear_horizons.reactors.tile.TileAccessHatch; import com.recursive_pineapple.nuclear_horizons.reactors.tile.TileFluidPort; import com.recursive_pineapple.nuclear_horizons.reactors.tile.TileReactorChamber; @@ -25,8 +21,6 @@ public class BlockList { public static final String REACTOR_REDSTONE_PORT_NAME = "reactor_redstone_port"; public static final String REACTOR_THERMAL_SENSOR_NAME = "reactor_thermal_sensor"; public static final String REACTOR_SIMULATOR_NAME = "reactor_simulator"; - public static final String COOLANT_BLOCK_NAME = "nh_coolant"; - public static final String HOT_COOLANT_BLOCK_NAME = "nh_hot_coolant"; public static ReactorCore REACTOR_CORE; public static ReactorChamber REACTOR_CHAMBER; @@ -37,9 +31,6 @@ public class BlockList { public static ReactorThermalSensor REACTOR_THERMAL_SENSOR; public static ReactorSimulator REACTOR_SIMULATOR; - public static FluidBlock COOLANT_BLOCK; - public static FluidBlock HOT_COOLANT_BLOCK; - public static void registerBlocks() { REACTOR_CORE = new ReactorCore(); REACTOR_CHAMBER = new ReactorChamber(); @@ -50,21 +41,6 @@ public static void registerBlocks() { REACTOR_THERMAL_SENSOR = new ReactorThermalSensor(); REACTOR_SIMULATOR = new ReactorSimulator(); - COOLANT_BLOCK = new FluidBlock( - FluidList.COOLANT, - Material.water, - NuclearHorizons.MODID + ":coolant_still", - NuclearHorizons.MODID + ":coolant_flow"); - COOLANT_BLOCK.setBlockName(COOLANT_BLOCK_NAME); - - HOT_COOLANT_BLOCK = new FluidBlock( - FluidList.HOT_COOLANT, - Material.water, - NuclearHorizons.MODID + ":hot_coolant_still", - NuclearHorizons.MODID + ":hot_coolant_flow"); - HOT_COOLANT_BLOCK.setBurnsEntities(true); - HOT_COOLANT_BLOCK.setBlockName(HOT_COOLANT_BLOCK_NAME); - registerBlock(REACTOR_CORE, REACTOR_CORE_NAME); registerTileEntity(TileReactorCore.class, REACTOR_CORE_NAME); @@ -87,8 +63,5 @@ public static void registerBlocks() { registerBlock(REACTOR_SIMULATOR, REACTOR_SIMULATOR_NAME); registerTileEntity(TileReactorSimulator.class, REACTOR_SIMULATOR_NAME); - - registerBlock(COOLANT_BLOCK, COOLANT_BLOCK_NAME); - registerBlock(HOT_COOLANT_BLOCK, HOT_COOLANT_BLOCK_NAME); } } diff --git a/src/main/java/com/recursive_pineapple/nuclear_horizons/reactors/blocks/ReactorAccessHatch.java b/src/main/java/com/recursive_pineapple/nuclear_horizons/reactors/blocks/ReactorAccessHatch.java index cb675a0..40ae28f 100644 --- a/src/main/java/com/recursive_pineapple/nuclear_horizons/reactors/blocks/ReactorAccessHatch.java +++ b/src/main/java/com/recursive_pineapple/nuclear_horizons/reactors/blocks/ReactorAccessHatch.java @@ -1,5 +1,7 @@ package com.recursive_pineapple.nuclear_horizons.reactors.blocks; +import java.util.ArrayList; + import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; @@ -9,7 +11,10 @@ import com.gtnewhorizons.modularui.api.UIInfos; import com.recursive_pineapple.nuclear_horizons.reactors.tile.TileAccessHatch; -public class ReactorAccessHatch extends BlockContainer { +import gregtech.api.interfaces.IDebugableBlock; +import gregtech.api.interfaces.tileentity.IDebugableTileEntity; + +public class ReactorAccessHatch extends BlockContainer implements IDebugableBlock { public ReactorAccessHatch() { super(Material.rock); @@ -39,4 +44,14 @@ public boolean onBlockActivated(World worldIn, int x, int y, int z, EntityPlayer return false; } } + + @Override + public ArrayList getDebugInfo(EntityPlayer aPlayer, int aX, int aY, int aZ, int aLogLevel) { + if (aPlayer.getEntityWorld() + .getTileEntity(aX, aY, aZ) instanceof IDebugableTileEntity te) { + return te.getDebugInfo(aPlayer, aLogLevel); + } else { + return new ArrayList<>(); + } + } } diff --git a/src/main/java/com/recursive_pineapple/nuclear_horizons/reactors/blocks/ReactorChamber.java b/src/main/java/com/recursive_pineapple/nuclear_horizons/reactors/blocks/ReactorChamber.java index c291002..d999a5b 100644 --- a/src/main/java/com/recursive_pineapple/nuclear_horizons/reactors/blocks/ReactorChamber.java +++ b/src/main/java/com/recursive_pineapple/nuclear_horizons/reactors/blocks/ReactorChamber.java @@ -1,5 +1,7 @@ package com.recursive_pineapple.nuclear_horizons.reactors.blocks; +import java.util.ArrayList; + import net.minecraft.block.Block; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; @@ -18,7 +20,10 @@ import com.recursive_pineapple.nuclear_horizons.reactors.tile.TileReactorCore; import com.recursive_pineapple.nuclear_horizons.utils.DirectionUtil; -public class ReactorChamber extends BlockContainer { +import gregtech.api.interfaces.IDebugableBlock; +import gregtech.api.interfaces.tileentity.IDebugableTileEntity; + +public class ReactorChamber extends BlockContainer implements IDebugableBlock { private IIcon iconTop, iconSide; @@ -115,4 +120,13 @@ private static int getAttachedReactors(World worldIn, int x, int y, int z) { return reactorCount; } + @Override + public ArrayList getDebugInfo(EntityPlayer aPlayer, int aX, int aY, int aZ, int aLogLevel) { + if (aPlayer.getEntityWorld() + .getTileEntity(aX, aY, aZ) instanceof IDebugableTileEntity te) { + return te.getDebugInfo(aPlayer, aLogLevel); + } else { + return new ArrayList<>(); + } + } } diff --git a/src/main/java/com/recursive_pineapple/nuclear_horizons/reactors/blocks/ReactorCore.java b/src/main/java/com/recursive_pineapple/nuclear_horizons/reactors/blocks/ReactorCore.java index b60fb0d..d96ce0c 100644 --- a/src/main/java/com/recursive_pineapple/nuclear_horizons/reactors/blocks/ReactorCore.java +++ b/src/main/java/com/recursive_pineapple/nuclear_horizons/reactors/blocks/ReactorCore.java @@ -1,5 +1,7 @@ package com.recursive_pineapple.nuclear_horizons.reactors.blocks; +import java.util.ArrayList; + import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; @@ -11,7 +13,10 @@ import com.gtnewhorizons.modularui.api.UIInfos; import com.recursive_pineapple.nuclear_horizons.reactors.tile.TileReactorCore; -public class ReactorCore extends BlockContainer { +import gregtech.api.interfaces.IDebugableBlock; +import gregtech.api.interfaces.tileentity.IDebugableTileEntity; + +public class ReactorCore extends BlockContainer implements IDebugableBlock { private IIcon iconTop, iconSideInactive, iconSideActive, iconBottom; @@ -67,4 +72,14 @@ public boolean onBlockActivated(World worldIn, int x, int y, int z, EntityPlayer public void onBlockPreDestroy(World worldIn, int x, int y, int z, int meta) { ((TileReactorCore) worldIn.getTileEntity(x, y, z)).dropInventory(); } + + @Override + public ArrayList getDebugInfo(EntityPlayer aPlayer, int aX, int aY, int aZ, int aLogLevel) { + if (aPlayer.getEntityWorld() + .getTileEntity(aX, aY, aZ) instanceof IDebugableTileEntity te) { + return te.getDebugInfo(aPlayer, aLogLevel); + } else { + return new ArrayList<>(); + } + } } diff --git a/src/main/java/com/recursive_pineapple/nuclear_horizons/reactors/components/adapters/HeatMoverAdapter.java b/src/main/java/com/recursive_pineapple/nuclear_horizons/reactors/components/adapters/HeatMoverAdapter.java index 88baba0..5ab4543 100644 --- a/src/main/java/com/recursive_pineapple/nuclear_horizons/reactors/components/adapters/HeatMoverAdapter.java +++ b/src/main/java/com/recursive_pineapple/nuclear_horizons/reactors/components/adapters/HeatMoverAdapter.java @@ -11,12 +11,12 @@ public class HeatMoverAdapter implements IComponentAdapter { - private final IReactorGrid reactor; - private final int x, y; - private final ItemStack itemStack; - private final IHeatMover heatMover; + protected final IReactorGrid reactor; + protected final int x, y; + protected final ItemStack itemStack; + protected final IHeatMover heatMover; - private SimulationComponentResult simResult; + protected SimulationComponentResult simResult; public HeatMoverAdapter(IReactorGrid reactor, int x, int y, ItemStack itemStack, IHeatMover heatMover) { this.reactor = reactor; @@ -67,16 +67,32 @@ public void onSimulationFinished(SimulationResult result, int componentIndex) { } + protected int getTransferFromReactor() { + return this.heatMover.getTransferFromReactor(itemStack, reactor); + } + + protected int getTransferToAir() { + return this.heatMover.getTransferToAir(itemStack, reactor); + } + + protected int getTransferNeighbourToAir(IComponentAdapter neighbour) { + return this.heatMover.getTransferNeighbourToAir(itemStack, reactor, neighbour); + } + + protected int getTransferFromNeighbour(IComponentAdapter neighbour) { + return this.heatMover.getTransferFromNeighbour(itemStack, reactor, neighbour); + } + @Override public void onHeatTick() { - int fromReactor = this.heatMover.getTransferFromReactor(itemStack, reactor); + int fromReactor = getTransferFromReactor(); if (fromReactor != 0) { this.reactor.addHullHeat(-fromReactor); this.addHeat(fromReactor); } - int toAir = this.heatMover.getTransferToAir(itemStack, reactor); + int toAir = getTransferToAir(); if (toAir != 0) { this.addHeat(-toAir); @@ -98,7 +114,7 @@ public void onHeatTick() { var neighbour = reactor.getComponent(x2, y2); if (neighbour != null && neighbour.containsHeat()) { - int fromNeighbourToAir = this.heatMover.getTransferNeighbourToAir(itemStack, reactor, neighbour); + int fromNeighbourToAir = getTransferNeighbourToAir(neighbour); if (fromNeighbourToAir != 0) { neighbour.addHeat(-fromNeighbourToAir); @@ -109,7 +125,7 @@ public void onHeatTick() { } } - int fromNeighbour = this.heatMover.getTransferFromNeighbour(itemStack, reactor, neighbour); + int fromNeighbour = getTransferFromNeighbour(neighbour); if (fromNeighbour != 0) { neighbour.addHeat(-fromNeighbour); diff --git a/src/main/java/com/recursive_pineapple/nuclear_horizons/reactors/fluids/FluidList.java b/src/main/java/com/recursive_pineapple/nuclear_horizons/reactors/fluids/FluidList.java index 03200f8..dd23c28 100644 --- a/src/main/java/com/recursive_pineapple/nuclear_horizons/reactors/fluids/FluidList.java +++ b/src/main/java/com/recursive_pineapple/nuclear_horizons/reactors/fluids/FluidList.java @@ -1,70 +1,80 @@ package com.recursive_pineapple.nuclear_horizons.reactors.fluids; +import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.Fluid; +import net.minecraftforge.fluids.FluidContainerRegistry; +import net.minecraftforge.fluids.FluidContainerRegistry.FluidContainerData; import net.minecraftforge.fluids.FluidRegistry; +import net.minecraftforge.fluids.FluidStack; -import com.recursive_pineapple.nuclear_horizons.reactors.blocks.BlockList; +import com.recursive_pineapple.nuclear_horizons.Config; +import com.recursive_pineapple.nuclear_horizons.reactors.items.ItemList; + +import cpw.mods.fml.common.registry.GameRegistry; +import gregtech.api.registries.LHECoolantRegistry; public class FluidList { public static final String COOLANT_NAME = "nh_coolant"; public static final String HOT_COOLANT_NAME = "nh_hot_coolant"; - public static final String HOT_SUPER_COOLANT_NAME = "nh_hot_super_coolant"; + public static final String PSEUDO_LIQUID_NAQUADAH_NAME = "pseudo_liquid_naquadah"; + public static final String HOT_PSEUDO_LIQUID_NAQUADAH_NAME = "hot_pseudo_liquid_naquadah"; - public static Fluid COOLANT; - public static Fluid HOT_COOLANT; - public static Fluid HOT_SUPER_COOLANT; + public static final Fluid COOLANT = new Fluid(COOLANT_NAME); + public static final Fluid HOT_COOLANT = new Fluid(HOT_COOLANT_NAME); + public static final Fluid PSEUDO_LIQUID_NAQUADAH = new Fluid(PSEUDO_LIQUID_NAQUADAH_NAME); + public static final Fluid HOT_PSEUDO_LIQUID_NAQUADAH = new Fluid(HOT_PSEUDO_LIQUID_NAQUADAH_NAME); public static void registerFluids() { - COOLANT = new Fluid(COOLANT_NAME) { - - public net.minecraft.util.IIcon getStillIcon() { - return BlockList.COOLANT_BLOCK.stillIcon; - }; - - public net.minecraft.util.IIcon getFlowingIcon() { - return BlockList.COOLANT_BLOCK.flowingIcon; - }; - }; - - HOT_COOLANT = new Fluid(HOT_COOLANT_NAME) { - - public net.minecraft.util.IIcon getStillIcon() { - return BlockList.HOT_COOLANT_BLOCK.stillIcon; - }; - - public net.minecraft.util.IIcon getFlowingIcon() { - return BlockList.HOT_COOLANT_BLOCK.flowingIcon; - }; - }; + FluidRegistry.registerFluid(COOLANT); - // Temporary, will probably be removed - HOT_SUPER_COOLANT = new Fluid(HOT_SUPER_COOLANT_NAME) { + HOT_COOLANT.setTemperature(273 + 200); + FluidRegistry.registerFluid(HOT_COOLANT); - public net.minecraft.util.IIcon getStillIcon() { - return BlockList.COOLANT_BLOCK.stillIcon; - }; + PSEUDO_LIQUID_NAQUADAH.setTemperature(273 + 90); + FluidRegistry.registerFluid(PSEUDO_LIQUID_NAQUADAH); - public net.minecraft.util.IIcon getFlowingIcon() { - return BlockList.COOLANT_BLOCK.flowingIcon; - }; - }; + HOT_PSEUDO_LIQUID_NAQUADAH.setTemperature(273 + 500); + FluidRegistry.registerFluid(HOT_PSEUDO_LIQUID_NAQUADAH); + } - FluidRegistry.registerFluid(COOLANT); + public static void registerContainers() { + registerCell(COOLANT, 0); + registerCell(HOT_COOLANT, 1); + registerCell(PSEUDO_LIQUID_NAQUADAH, 2); + registerCell(HOT_PSEUDO_LIQUID_NAQUADAH, 3); + } - HOT_COOLANT.setTemperature(273 + 500); - FluidRegistry.registerFluid(HOT_COOLANT); + private static void registerCell(Fluid fluid, int metadata) { + ItemStack empty = new ItemStack(GameRegistry.findItem("IC2", "itemCellEmpty")); - HOT_SUPER_COOLANT.setTemperature(273 + 1000); - FluidRegistry.registerFluid(HOT_SUPER_COOLANT); + FluidContainerRegistry.registerFluidContainer( + new FluidContainerData(new FluidStack(fluid, 1000), new ItemStack(ItemList.CELLS, 1, metadata), empty)); } public static void registerCoolants() { - CoolantRegistry.registerCoolant(COOLANT, HOT_COOLANT, 1); + CoolantRegistry.registerCoolant(COOLANT, HOT_COOLANT, Config.COOLANT_SPECIFIC_HEAT); + CoolantRegistry.registerCoolant( + FluidRegistry.getFluid("ic2coolant"), + FluidRegistry.getFluid("ic2hotcoolant"), + Config.COOLANT_SPECIFIC_HEAT); CoolantRegistry - .registerCoolant(FluidRegistry.getFluid("ic2coolant"), FluidRegistry.getFluid("ic2hotcoolant"), 1); - - // CoolantRegistry.registerCoolant(Materials.Lead.mStandardMoltenFluid, HOT_SUPER_COOLANT, 10); + .registerCoolant(PSEUDO_LIQUID_NAQUADAH, HOT_PSEUDO_LIQUID_NAQUADAH, Config.NAQ_COOLANT_SPECIFIC_HEAT); + + double baseMultiplier = 0.5; + double baseThreshold = 0.2; + + LHECoolantRegistry.registerCoolant( + COOLANT_NAME, + HOT_COOLANT_NAME, + baseMultiplier * Config.COOLANT_SPECIFIC_HEAT, + baseThreshold / Config.COOLANT_SPECIFIC_HEAT); + + LHECoolantRegistry.registerCoolant( + PSEUDO_LIQUID_NAQUADAH_NAME, + HOT_PSEUDO_LIQUID_NAQUADAH_NAME, + baseMultiplier * Config.NAQ_COOLANT_SPECIFIC_HEAT, + baseThreshold / Config.NAQ_COOLANT_SPECIFIC_HEAT); } } diff --git a/src/main/java/com/recursive_pineapple/nuclear_horizons/reactors/fluids/IconLoader.java b/src/main/java/com/recursive_pineapple/nuclear_horizons/reactors/fluids/IconLoader.java new file mode 100644 index 0000000..c792a4f --- /dev/null +++ b/src/main/java/com/recursive_pineapple/nuclear_horizons/reactors/fluids/IconLoader.java @@ -0,0 +1,38 @@ +package com.recursive_pineapple.nuclear_horizons.reactors.fluids; + +import net.minecraftforge.client.event.TextureStitchEvent; +import net.minecraftforge.common.MinecraftForge; + +import com.recursive_pineapple.nuclear_horizons.NuclearHorizons; + +import cpw.mods.fml.common.eventhandler.SubscribeEvent; + +public class IconLoader { + + public static final IconLoader INSTANCE = new IconLoader(); + + public void register() { + MinecraftForge.EVENT_BUS.register(this); + } + + @SubscribeEvent + public void registerIcons(TextureStitchEvent.Pre event) { + if (event.map.getTextureType() == 0) { + FluidList.COOLANT.setIcons( + event.map.registerIcon(NuclearHorizons.MODID + ":coolant_still"), + event.map.registerIcon(NuclearHorizons.MODID + ":coolant_flow")); + + FluidList.HOT_COOLANT.setIcons( + event.map.registerIcon(NuclearHorizons.MODID + ":hot_coolant_still"), + event.map.registerIcon(NuclearHorizons.MODID + ":hot_coolant_flow")); + + FluidList.PSEUDO_LIQUID_NAQUADAH.setIcons( + event.map.registerIcon(NuclearHorizons.MODID + ":cold_pnaq_still"), + event.map.registerIcon(NuclearHorizons.MODID + ":cold_pnaq_flow")); + + FluidList.HOT_PSEUDO_LIQUID_NAQUADAH.setIcons( + event.map.registerIcon(NuclearHorizons.MODID + ":hot_pnaq_still"), + event.map.registerIcon(NuclearHorizons.MODID + ":hot_pnaq_flow")); + } + } +} diff --git a/src/main/java/com/recursive_pineapple/nuclear_horizons/reactors/items/ItemList.java b/src/main/java/com/recursive_pineapple/nuclear_horizons/reactors/items/ItemList.java index 847a51d..dfe27d8 100644 --- a/src/main/java/com/recursive_pineapple/nuclear_horizons/reactors/items/ItemList.java +++ b/src/main/java/com/recursive_pineapple/nuclear_horizons/reactors/items/ItemList.java @@ -3,6 +3,7 @@ import com.recursive_pineapple.nuclear_horizons.reactors.items.basic.BasicFuelRodItem; import com.recursive_pineapple.nuclear_horizons.reactors.items.basic.BasicHeatAbsorberItem; import com.recursive_pineapple.nuclear_horizons.reactors.items.basic.BasicHeatExchangerItem; +import com.recursive_pineapple.nuclear_horizons.reactors.items.basic.BasicHeatVentCoolantItem; import com.recursive_pineapple.nuclear_horizons.reactors.items.basic.BasicHeatVentItem; import com.recursive_pineapple.nuclear_horizons.reactors.items.basic.BasicNeutronReflectorItem; import com.recursive_pineapple.nuclear_horizons.reactors.items.basic.BasicReactorPlatingItem; @@ -96,6 +97,28 @@ public class ItemList { 20, 1000); + public static final BasicHeatVentCoolantItem COOLANT_HEAT_EXCHANGER_1 = new BasicHeatVentCoolantItem( + "reactorVentCoolant1", + "reactorVentCoolant1", + 40, + 0, + 30, + 750); + public static final BasicHeatVentCoolantItem COOLANT_HEAT_EXCHANGER_2 = new BasicHeatVentCoolantItem( + "reactorVentCoolant2", + "reactorVentCoolant2", + 120, + 0, + 90, + 2250); + public static final BasicHeatVentCoolantItem COOLANT_HEAT_EXCHANGER_3 = new BasicHeatVentCoolantItem( + "reactorVentCoolant3", + "reactorVentCoolant3", + 360, + 0, + 270, + 6750); + public static final BasicHeatExchangerItem BASIC_HEAT_EXCHANGER = new BasicHeatExchangerItem( "heatExchanger", "reactorHeatSwitch", @@ -166,6 +189,11 @@ public class ItemList { "reactorPlatingHeat", 0.99, 1700); + public static final BasicReactorPlatingItem REACTOR_PLATING_HEAT_2 = new BasicReactorPlatingItem( + "reactorPlatingHeat2", + "reactorPlatingHeat2", + 0.95, + 6800); public static final BasicReactorPlatingItem REACTOR_PLATING_EXPLOSIVE = new BasicReactorPlatingItem( "reactorPlatingExplosive", "reactorPlatingExplosive", @@ -175,6 +203,13 @@ public class ItemList { public static final DebugHeatAbsorber DEBUG_HEAT_ABSORBER = new DebugHeatAbsorber( "debugHeatAbsorber", "debugHeatAbsorber"); + public static final BasicReactorPlatingItem REACTOR_PLATING_HEAT_DEBUG = new BasicReactorPlatingItem( + "reactorPlatingHeatDebug", + "reactorPlatingHeatDebug", + 0.0, + 2_000_000_000); + + public static final MetaCellItem CELLS = new MetaCellItem(); public static void registerItems() { URANIUM_1X_ROD.register(); @@ -191,6 +226,10 @@ public static void registerItems() { COMPONENT_HEAT_VENT.register(); OVERCLOCKED_HEAT_VENT.register(); + COOLANT_HEAT_EXCHANGER_1.register(); + COOLANT_HEAT_EXCHANGER_2.register(); + COOLANT_HEAT_EXCHANGER_3.register(); + BASIC_HEAT_EXCHANGER.register(); ADVANCED_HEAT_EXCHANGER.register(); REACTOR_HEAT_EXCHANGER.register(); @@ -207,8 +246,12 @@ public static void registerItems() { REACTOR_PLATING.register(); REACTOR_PLATING_HEAT.register(); + REACTOR_PLATING_HEAT_2.register(); REACTOR_PLATING_EXPLOSIVE.register(); DEBUG_HEAT_ABSORBER.register(); + REACTOR_PLATING_HEAT_DEBUG.register(); + + CELLS.register(); } } diff --git a/src/main/java/com/recursive_pineapple/nuclear_horizons/reactors/items/MetaCellItem.java b/src/main/java/com/recursive_pineapple/nuclear_horizons/reactors/items/MetaCellItem.java new file mode 100644 index 0000000..9d50dc7 --- /dev/null +++ b/src/main/java/com/recursive_pineapple/nuclear_horizons/reactors/items/MetaCellItem.java @@ -0,0 +1,80 @@ +package com.recursive_pineapple.nuclear_horizons.reactors.items; + +import java.util.List; + +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.client.resources.I18n; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Items; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; + +import com.recursive_pineapple.nuclear_horizons.Config; +import com.recursive_pineapple.nuclear_horizons.NuclearHorizons; + +import cpw.mods.fml.common.registry.GameRegistry; + +public class MetaCellItem extends Item { + + private IIcon[] icons = new IIcon[4]; + + public MetaCellItem() { + setUnlocalizedName("metacell"); + setHasSubtypes(true); + } + + public void register() { + GameRegistry.registerItem(this, "metacell"); + } + + @Override + public void registerIcons(IIconRegister register) { + icons[0] = register.registerIcon(NuclearHorizons.MODID + ":cellCoolant"); + icons[1] = register.registerIcon(NuclearHorizons.MODID + ":cellHotCoolant"); + icons[2] = register.registerIcon(NuclearHorizons.MODID + ":cellPseudoLiquidNaquadah"); + icons[3] = register.registerIcon(NuclearHorizons.MODID + ":cellHotPseudoLiquidNaquadah"); + } + + @Override + public IIcon getIconFromDamage(int damage) { + if (damage < 0 || damage >= icons.length) { + return icons[0]; + } else { + return icons[damage]; + } + } + + @Override + public String getUnlocalizedName(ItemStack stack) { + return switch (Items.feather.getDamage(stack)) { + case 0 -> "item.cell_coolant"; + case 1 -> "item.cell_hot_coolant"; + case 2 -> "item.cell_pseudo_liquid_naquadah"; + case 3 -> "item.cell_hot_pseudo_liquid_naquadah"; + default -> "item.invalid_cell"; + }; + } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List lines, boolean advancedTooltips) { + super.addInformation(stack, player, lines, advancedTooltips); + + lines.add(switch (Items.feather.getDamage(stack)) { + case 0 -> I18n.format("item.cell_coolant.tooltip", Config.COOLANT_SPECIFIC_HEAT); + case 1 -> I18n.format("item.cell_hot_coolant.tooltip"); + case 2 -> I18n.format("item.cell_pseudo_liquid_naquadah.tooltip", Config.NAQ_COOLANT_SPECIFIC_HEAT); + case 3 -> I18n.format("item.cell_hot_pseudo_liquid_naquadah.tooltip"); + default -> ""; + }); + } + + @Override + public void getSubItems(Item item, CreativeTabs tab, List subItems) { + subItems.add(new ItemStack(this, 1, 0)); + subItems.add(new ItemStack(this, 1, 1)); + subItems.add(new ItemStack(this, 1, 2)); + subItems.add(new ItemStack(this, 1, 3)); + } +} diff --git a/src/main/java/com/recursive_pineapple/nuclear_horizons/reactors/items/basic/BasicHeatVentCoolantItem.java b/src/main/java/com/recursive_pineapple/nuclear_horizons/reactors/items/basic/BasicHeatVentCoolantItem.java new file mode 100644 index 0000000..e048798 --- /dev/null +++ b/src/main/java/com/recursive_pineapple/nuclear_horizons/reactors/items/basic/BasicHeatVentCoolantItem.java @@ -0,0 +1,104 @@ +package com.recursive_pineapple.nuclear_horizons.reactors.items.basic; + +import java.util.List; + +import javax.annotation.Nonnull; + +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; + +import com.recursive_pineapple.nuclear_horizons.Config; +import com.recursive_pineapple.nuclear_horizons.reactors.components.IComponentAdapter; +import com.recursive_pineapple.nuclear_horizons.reactors.components.IReactorGrid; +import com.recursive_pineapple.nuclear_horizons.reactors.components.adapters.HeatMoverAdapter; +import com.recursive_pineapple.nuclear_horizons.reactors.items.interfaces.IHeatMover; + +public class BasicHeatVentCoolantItem extends ReactorItem implements IHeatMover { + + private final int maxHeatFromReactor; + private final int maxNeighbourToAir; + private final int maxHeatToAir; + + public BasicHeatVentCoolantItem(String name, String textureName, int maxHeatFromReactor, int maxNeighbourToAir, + int maxHeatToAir, int maxHeat) { + super(name, textureName, "heat", maxHeat); + + this.maxHeatFromReactor = maxHeatFromReactor; + this.maxNeighbourToAir = maxNeighbourToAir; + this.maxHeatToAir = maxHeatToAir; + } + + @Override + public int getTransferFromReactor(@Nonnull ItemStack itemStack, @Nonnull IReactorGrid reactor) { + return Math.min(this.maxHeatFromReactor, reactor.getHullHeat()); + } + + @Override + public int getTransferFromNeighbour(@Nonnull ItemStack itemStack, @Nonnull IReactorGrid reactor, + @Nonnull IComponentAdapter neighbour) { + return 0; + } + + @Override + public int getTransferNeighbourToAir(@Nonnull ItemStack itemStack, @Nonnull IReactorGrid reactor, + @Nonnull IComponentAdapter neighbour) { + return Math.min(this.maxNeighbourToAir, neighbour.getStoredHeat()); + } + + @Override + public int getTransferToAir(@Nonnull ItemStack itemStack, @Nonnull IReactorGrid reactor) { + return Math.min(this.maxHeatToAir, this.getStoredHeat(itemStack)); + } + + @Override + public @Nonnull IComponentAdapter getAdapter(@Nonnull ItemStack itemStack, @Nonnull IReactorGrid reactor, int x, + int y) { + return new CoolantHeatMoverAdapter(reactor, x, y, itemStack, this); + } + + private static class CoolantHeatMoverAdapter extends HeatMoverAdapter { + + public CoolantHeatMoverAdapter(IReactorGrid reactor, int x, int y, ItemStack itemStack, IHeatMover heatMover) { + super(reactor, x, y, itemStack, heatMover); + } + + @Override + protected int getTransferToAir() { + return reactor.isFluid() ? super.getTransferToAir() : 0; + } + + @Override + protected int getTransferNeighbourToAir(IComponentAdapter neighbour) { + return reactor.isFluid() ? super.getTransferNeighbourToAir(neighbour) : 0; + } + } + + @Override + protected String getDurabilityTooltip(ItemStack itemStack) { + return I18n.format("nh_tooltip.stored_heat", itemStack.getItemDamage(), itemStack.getMaxDamage()); + } + + @Override + public void addReactorItemInfo(ItemStack itemStack, EntityPlayer player, List chunks) { + chunks.add(I18n.format("nh_tooltip.prelude")); + + if (this.maxHeatFromReactor > 0) { + chunks.add(I18n.format("nh_tooltip.mover.reactor_xfer", this.maxHeatFromReactor)); + } + + if (this.maxHeatToAir > 0) { + chunks.add(I18n.format("nh_tooltip.vent.void_self", this.maxHeatToAir)); + } + + if (this.maxNeighbourToAir > 0) { + chunks.add(I18n.format("nh_tooltip.vent.void_adj", this.maxNeighbourToAir)); + } + + if (this.maxHeatToAir > 0) { + chunks.add(I18n.format("nh_tooltip.vent.fluid_disclaimer", Config.FLUID_NUKE_HU_MULTIPLIER)); + } + + chunks.add(I18n.format("nh_tooltip.vent.fluid_only")); + } +} diff --git a/src/main/java/com/recursive_pineapple/nuclear_horizons/reactors/items/basic/ReactorItem.java b/src/main/java/com/recursive_pineapple/nuclear_horizons/reactors/items/basic/ReactorItem.java index 94009cc..baf0a05 100644 --- a/src/main/java/com/recursive_pineapple/nuclear_horizons/reactors/items/basic/ReactorItem.java +++ b/src/main/java/com/recursive_pineapple/nuclear_horizons/reactors/items/basic/ReactorItem.java @@ -94,12 +94,10 @@ public final void addInformation(ItemStack itemStack, EntityPlayer player, List< ArrayList chunks = new ArrayList<>(); - if (!advancedItemTooltips) { - if (itemStack.isItemStackDamageable()) { - chunks.add(getDurabilityTooltip(itemStack)); - } else if (itemStack.getMaxDamage() == -1) { - chunks.add(I18n.format("nh_tooltip.undestructable")); - } + if (itemStack.isItemStackDamageable()) { + chunks.add(getDurabilityTooltip(itemStack)); + } else if (itemStack.getMaxDamage() == -1) { + chunks.add(I18n.format("nh_tooltip.undestructable")); } if (hasMoreInfo(itemStack)) { diff --git a/src/main/java/com/recursive_pineapple/nuclear_horizons/reactors/tile/TileAccessHatch.java b/src/main/java/com/recursive_pineapple/nuclear_horizons/reactors/tile/TileAccessHatch.java index 4450722..6e96aae 100644 --- a/src/main/java/com/recursive_pineapple/nuclear_horizons/reactors/tile/TileAccessHatch.java +++ b/src/main/java/com/recursive_pineapple/nuclear_horizons/reactors/tile/TileAccessHatch.java @@ -1,5 +1,7 @@ package com.recursive_pineapple.nuclear_horizons.reactors.tile; +import java.util.ArrayList; + import javax.annotation.Nullable; import net.minecraft.entity.player.EntityPlayer; @@ -13,7 +15,9 @@ import com.recursive_pineapple.nuclear_horizons.reactors.blocks.BlockList; -public class TileAccessHatch extends TileEntity implements IInventory, IReactorBlock { +import gregtech.api.interfaces.tileentity.IDebugableTileEntity; + +public class TileAccessHatch extends TileEntity implements IInventory, IReactorBlock, IDebugableTileEntity { public int reactorRelX, reactorRelY, reactorRelZ; @@ -197,4 +201,25 @@ public boolean isItemValidForSlot(int index, ItemStack stack) { return false; } } + + @Override + public ArrayList getDebugInfo(EntityPlayer aPlayer, int aLogLevel) { + ArrayList info = new ArrayList<>(); + + var reactor = getReactor(); + + if (reactor == null) { + info.add("§cNot connected to a reactor§r"); + } else { + info.add( + String.format( + "Connected to reactor at X=§9%d§r Y=§9%d§r Z=§9%d§r", + reactor.xCoord, + reactor.yCoord, + reactor.zCoord)); + info.addAll(reactor.getDebugInfo(aPlayer, aLogLevel)); + } + + return info; + } } diff --git a/src/main/java/com/recursive_pineapple/nuclear_horizons/reactors/tile/TileReactorChamber.java b/src/main/java/com/recursive_pineapple/nuclear_horizons/reactors/tile/TileReactorChamber.java index 9e811a7..17f1d82 100644 --- a/src/main/java/com/recursive_pineapple/nuclear_horizons/reactors/tile/TileReactorChamber.java +++ b/src/main/java/com/recursive_pineapple/nuclear_horizons/reactors/tile/TileReactorChamber.java @@ -1,5 +1,7 @@ package com.recursive_pineapple.nuclear_horizons.reactors.tile; +import java.util.ArrayList; + import javax.annotation.Nullable; import net.minecraft.entity.player.EntityPlayer; @@ -14,9 +16,11 @@ import com.recursive_pineapple.nuclear_horizons.reactors.blocks.BlockList; +import gregtech.api.interfaces.tileentity.IDebugableTileEntity; import gregtech.api.interfaces.tileentity.IEnergyConnected; -public class TileReactorChamber extends TileEntity implements IReactorBlock, IInventory, IEnergyConnected { +public class TileReactorChamber extends TileEntity + implements IReactorBlock, IInventory, IEnergyConnected, IDebugableTileEntity { public int reactorRelX, reactorRelY, reactorRelZ; @@ -225,4 +229,17 @@ public boolean isItemValidForSlot(int index, ItemStack stack) { return false; } } + + @Override + public ArrayList getDebugInfo(EntityPlayer aPlayer, int aLogLevel) { + ArrayList info = new ArrayList<>(); + + var reactor = getReactor(); + + if (reactor != null) { + info.addAll(reactor.getDebugInfo(aPlayer, aLogLevel)); + } + + return info; + } } diff --git a/src/main/java/com/recursive_pineapple/nuclear_horizons/reactors/tile/TileReactorCore.java b/src/main/java/com/recursive_pineapple/nuclear_horizons/reactors/tile/TileReactorCore.java index aad704a..26714ee 100644 --- a/src/main/java/com/recursive_pineapple/nuclear_horizons/reactors/tile/TileReactorCore.java +++ b/src/main/java/com/recursive_pineapple/nuclear_horizons/reactors/tile/TileReactorCore.java @@ -56,13 +56,15 @@ import cofh.api.energy.IEnergyReceiver; import gregtech.api.GregTechAPI; +import gregtech.api.enums.GTValues; +import gregtech.api.interfaces.tileentity.IDebugableTileEntity; import gregtech.api.interfaces.tileentity.IEnergyConnected; import gregtech.api.logic.PowerLogic; import gregtech.api.logic.interfaces.PowerLogicHost; import gregtech.api.util.GTUtility; public class TileReactorCore extends TileEntity - implements IInventory, IReactorGrid, ITileWithModularUI, IEnergyConnected { + implements IInventory, IReactorGrid, ITileWithModularUI, IEnergyConnected, IDebugableTileEntity { public static final int ROW_COUNT = 6; public static final int COL_COUNT = 9; @@ -708,15 +710,26 @@ private void doEUTick() { reactorBlock.onEnergyTick(this); } - if (this.storedEU > this.maxStoredEU) { - this.storedEU = this.maxStoredEU; + if (isFluid) { + addedEU = 0; + storedEU = 0; + maxStoredEU = 0; + voltage = 32; } - int perTick = this.addedEU / 20; + if (this.addedEU > 0) { + int perTick = this.addedEU / 20; + + int voltageTier = (int) (Math.ceil(Math.log(perTick / 8) / Math.log(4))); - int voltageTier = (int) (Math.ceil(Math.log(perTick / 8) / Math.log(4))); + this.voltage = (int) (Math.pow(4, voltageTier) * 8); + + this.maxStoredEU = voltage * 20 * 30; + } - this.voltage = (int) (Math.pow(4, voltageTier) * 8); + if (this.storedEU > this.maxStoredEU) { + this.storedEU = this.maxStoredEU; + } } private static final DamageSource RADIATION_DAMAGE = new DamageSource("nh_radiation"); @@ -817,6 +830,55 @@ private void doHeatDamage() { } } + @Override + public ArrayList getDebugInfo(EntityPlayer aPlayer, int aLogLevel) { + ArrayList info = new ArrayList<>(); + + info.add(isActive ? "§aActive§r" : "§cInactive§r"); + info.add(isFluid ? "Fluid: §atrue§r" : "Fluid: §cfalse§r"); + + String heatColour = "§a"; + + if (heatRatio >= 0.4) heatColour = "§e"; + if (heatRatio >= 0.6) heatColour = "§6"; + if (heatRatio >= 0.8) heatColour = "§c"; + + info.add(String.format("§rStored Heat: %s%,d HU§r / §e%,d HU§r", heatColour, storedHeat, getMaxHullHeat())); + info.add(String.format("§rHeat Generation Rate: §e%,d HU/s§r", addedHeat)); + if (coolantTank.getFluidAmount() > 0 && coolantTank.getFluid() != null + && coolantTank.getFluid() + .getFluid() != null) { + info.add( + String.format( + "§rStored Coolant: §a%,d L§r / §e%,d L§r §7%s§r", + coolantTank.getFluidAmount(), + coolantTank.getCapacity(), + coolantTank.getFluid() + .getLocalizedName())); + } else { + info.add(String.format("Stored Coolant: §eEmpty§r")); + } + if (hotCoolantTank.getFluidAmount() > 0 && hotCoolantTank.getFluid() != null + && hotCoolantTank.getFluid() + .getFluid() != null) { + info.add( + String.format( + "§rStored Hot Coolant: §a%,d L§r / §e%,d L§r §7%s§r", + hotCoolantTank.getFluidAmount(), + hotCoolantTank.getCapacity(), + hotCoolantTank.getFluid() + .getLocalizedName())); + } else { + info.add(String.format("Stored Hot Coolant: §eEmpty§r")); + } + info.add(String.format("§rStored Energy: §a%,d§r EU / §e%,d§r EU", storedEU, maxStoredEU)); + info.add(String.format("§rEnergy Generation Rate: §e%,d§r EU/t", addedEU / 20)); + info.add( + String.format("§rMax Out: §c%,d EU/t (%s)§r at §c1§r A", voltage, GTValues.VN[GTUtility.getTier(voltage)])); + + return info; + } + @Override public int getWidth() { return COL_COUNT; @@ -993,8 +1055,10 @@ public int addAirHeat(int airHeat) { @Override public void addEU(double eu) { - this.storedEU += eu * Config.REACTOR_EU_MULTIPLIER; - this.addedEU += eu * Config.REACTOR_EU_MULTIPLIER; + if (!isFluid) { + this.storedEU += eu * Config.REACTOR_EU_MULTIPLIER; + this.addedEU += eu * Config.REACTOR_EU_MULTIPLIER; + } } @Override diff --git a/src/main/resources/assets/nuclear_horizons/lang/en_US.lang b/src/main/resources/assets/nuclear_horizons/lang/en_US.lang index f345991..1f00384 100644 --- a/src/main/resources/assets/nuclear_horizons/lang/en_US.lang +++ b/src/main/resources/assets/nuclear_horizons/lang/en_US.lang @@ -5,6 +5,13 @@ tile.reactor_fluid_port.name=Reactor Fluid Port tile.reactor_access_hatch.name=Reactor Access Hatch tile.reactor_redstone_port.name=Reactor Redstone Port tile.reactor_thermal_sensor.name=Reactor Thermal Sensor +tile.reactor_simulator.name=Reactor Simulator + +tile.nh_coolant.name=Coolant +tile.nh_hot_coolant.name=Hot Coolant + +tile.nh_coolant.name=Coolant +tile.nh_hot_coolant.name=Hot Coolant gui.reactor.name=Nuclear Reactor @@ -19,6 +26,9 @@ item.advancedHeatVent.name=Advanced Heat Vent item.reactorHeatVent.name=Reactor Heat Vent item.componentHeatVent.name=Component Heat Vent item.overclockedHeatVent.name=Overclocked Heat Vent +item.reactorVentCoolant1.name=Copper Coolant Heat Exchanger +item.reactorVentCoolant2.name=Tungstensteel Coolant Heat Exchanger +item.reactorVentCoolant3.name=Naquadria Coolant Heat Exchanger item.heatExchanger.name=Heat Exchanger item.advancedHeatExchanger.name=Advanced Heat Exchanger item.coreHeatExchanger.name=Reactor Heat Exchanger @@ -33,11 +43,25 @@ item.thickNeutronReflector.name=Thick Neutron Reflector item.iridiumNeutronReflector.name=Iridium Neutron Reflector item.reactorPlating.name=Reactor Plating item.reactorPlatingHeat.name=Heat-Capacity Reactor Plating +item.reactorPlatingHeat2.name=Naquadah Reactor Plating item.reactorPlatingExplosive.name=Containment Reactor Plating item.debugHeatAbsorber.name=Creative Heat Absorber +item.reactorPlatingHeatDebug.name=Creative Reactor Plating + +item.cell_coolant.name=Coolant Cell +item.cell_hot_coolant.name=Hot Coolant Cell +item.cell_pseudo_liquid_naquadah.name=Pseudo-Crystalline Naquadah Cell +item.cell_hot_pseudo_liquid_naquadah.name=Hot Pseudo-Crystalline Naquadah Cell + +item.cell_coolant.tooltip=Can be used as coolant in a fluid reactor. Stores %1$,d HU per L. +item.cell_hot_coolant.tooltip=Cool down in a large heat exchanger. +item.cell_pseudo_liquid_naquadah.tooltip=Can be used as coolant in a fluid reactor. Stores %1$,d HU per L. +item.cell_hot_pseudo_liquid_naquadah.tooltip=Cool down in a large heat exchanger. fluid.nh_coolant=Coolant fluid.nh_hot_coolant=Hot Coolant +fluid.pseudo_liquid_naquadah=Pseudo-Crystalline Naquadah +fluid.hot_pseudo_liquid_naquadah=Hot Pseudo-Crystalline Naquadah death.attack.nh_hot_fluid.player=%1$s was fried to crisp death.attack.nh_radiation.player=%1$s was irradiated to death @@ -59,6 +83,7 @@ nh_tooltip.vent.void_adj=Dissipate up to %d HU from its neighbours. nh_tooltip.vent.fluid_disclaimer=Note: In a fluid reactor, each HU vented is converted to %1$,d HU (%1$,dmB) of hot coolant. nh_tooltip.plating_explosion=Decreases the reactor's explosion radius by %,d %% (multiplicative). nh_tooltip.plating_heat=Increases the reactor's maximum temperature by %,d HU. +nh_tooltip.vent.fluid_only=Coolant heat exchangers only work in fluid reactors. nh_tooltip.results.title=Simulation Results: nh_tooltip.sim.results.avg_temp=Avg Temp: %s diff --git a/src/main/resources/assets/nuclear_horizons/textures/blocks/cold_pnaq_flow.png b/src/main/resources/assets/nuclear_horizons/textures/blocks/cold_pnaq_flow.png new file mode 100644 index 0000000..532c8aa Binary files /dev/null and b/src/main/resources/assets/nuclear_horizons/textures/blocks/cold_pnaq_flow.png differ diff --git a/src/main/resources/assets/nuclear_horizons/textures/blocks/cold_pnaq_flow.png.mcmeta b/src/main/resources/assets/nuclear_horizons/textures/blocks/cold_pnaq_flow.png.mcmeta new file mode 100644 index 0000000..4f0718a --- /dev/null +++ b/src/main/resources/assets/nuclear_horizons/textures/blocks/cold_pnaq_flow.png.mcmeta @@ -0,0 +1,3 @@ +{ + "animation": {} +} \ No newline at end of file diff --git a/src/main/resources/assets/nuclear_horizons/textures/blocks/cold_pnaq_still.png b/src/main/resources/assets/nuclear_horizons/textures/blocks/cold_pnaq_still.png new file mode 100644 index 0000000..66e867f Binary files /dev/null and b/src/main/resources/assets/nuclear_horizons/textures/blocks/cold_pnaq_still.png differ diff --git a/src/main/resources/assets/nuclear_horizons/textures/blocks/cold_pnaq_still.png.mcmeta b/src/main/resources/assets/nuclear_horizons/textures/blocks/cold_pnaq_still.png.mcmeta new file mode 100644 index 0000000..0645f48 --- /dev/null +++ b/src/main/resources/assets/nuclear_horizons/textures/blocks/cold_pnaq_still.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 2 + } +} diff --git a/src/main/resources/assets/nuclear_horizons/textures/blocks/hot_pnaq_flow.png b/src/main/resources/assets/nuclear_horizons/textures/blocks/hot_pnaq_flow.png new file mode 100644 index 0000000..d5d5470 Binary files /dev/null and b/src/main/resources/assets/nuclear_horizons/textures/blocks/hot_pnaq_flow.png differ diff --git a/src/main/resources/assets/nuclear_horizons/textures/blocks/hot_pnaq_flow.png.mcmeta b/src/main/resources/assets/nuclear_horizons/textures/blocks/hot_pnaq_flow.png.mcmeta new file mode 100644 index 0000000..4f0718a --- /dev/null +++ b/src/main/resources/assets/nuclear_horizons/textures/blocks/hot_pnaq_flow.png.mcmeta @@ -0,0 +1,3 @@ +{ + "animation": {} +} \ No newline at end of file diff --git a/src/main/resources/assets/nuclear_horizons/textures/blocks/hot_pnaq_still.png b/src/main/resources/assets/nuclear_horizons/textures/blocks/hot_pnaq_still.png new file mode 100644 index 0000000..6c50979 Binary files /dev/null and b/src/main/resources/assets/nuclear_horizons/textures/blocks/hot_pnaq_still.png differ diff --git a/src/main/resources/assets/nuclear_horizons/textures/blocks/hot_pnaq_still.png.mcmeta b/src/main/resources/assets/nuclear_horizons/textures/blocks/hot_pnaq_still.png.mcmeta new file mode 100644 index 0000000..0645f48 --- /dev/null +++ b/src/main/resources/assets/nuclear_horizons/textures/blocks/hot_pnaq_still.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 2 + } +} diff --git a/src/main/resources/assets/nuclear_horizons/textures/items/cellCoolant.png b/src/main/resources/assets/nuclear_horizons/textures/items/cellCoolant.png new file mode 100644 index 0000000..db3aaba Binary files /dev/null and b/src/main/resources/assets/nuclear_horizons/textures/items/cellCoolant.png differ diff --git a/src/main/resources/assets/nuclear_horizons/textures/items/cellHotCoolant.png b/src/main/resources/assets/nuclear_horizons/textures/items/cellHotCoolant.png new file mode 100644 index 0000000..fdbb0e1 Binary files /dev/null and b/src/main/resources/assets/nuclear_horizons/textures/items/cellHotCoolant.png differ diff --git a/src/main/resources/assets/nuclear_horizons/textures/items/cellHotPseudoLiquidNaquadah.png b/src/main/resources/assets/nuclear_horizons/textures/items/cellHotPseudoLiquidNaquadah.png new file mode 100644 index 0000000..f5dcd8f Binary files /dev/null and b/src/main/resources/assets/nuclear_horizons/textures/items/cellHotPseudoLiquidNaquadah.png differ diff --git a/src/main/resources/assets/nuclear_horizons/textures/items/cellPseudoLiquidNaquadah.png b/src/main/resources/assets/nuclear_horizons/textures/items/cellPseudoLiquidNaquadah.png new file mode 100644 index 0000000..f92359a Binary files /dev/null and b/src/main/resources/assets/nuclear_horizons/textures/items/cellPseudoLiquidNaquadah.png differ diff --git a/src/main/resources/assets/nuclear_horizons/textures/items/reactorPlatingHeat2.png b/src/main/resources/assets/nuclear_horizons/textures/items/reactorPlatingHeat2.png new file mode 100644 index 0000000..6a024ec Binary files /dev/null and b/src/main/resources/assets/nuclear_horizons/textures/items/reactorPlatingHeat2.png differ diff --git a/src/main/resources/assets/nuclear_horizons/textures/items/reactorVentCoolant1.png b/src/main/resources/assets/nuclear_horizons/textures/items/reactorVentCoolant1.png new file mode 100644 index 0000000..1eb72b8 Binary files /dev/null and b/src/main/resources/assets/nuclear_horizons/textures/items/reactorVentCoolant1.png differ diff --git a/src/main/resources/assets/nuclear_horizons/textures/items/reactorVentCoolant2.png b/src/main/resources/assets/nuclear_horizons/textures/items/reactorVentCoolant2.png new file mode 100644 index 0000000..80606ce Binary files /dev/null and b/src/main/resources/assets/nuclear_horizons/textures/items/reactorVentCoolant2.png differ diff --git a/src/main/resources/assets/nuclear_horizons/textures/items/reactorVentCoolant3.png b/src/main/resources/assets/nuclear_horizons/textures/items/reactorVentCoolant3.png new file mode 100644 index 0000000..2d1a4a8 Binary files /dev/null and b/src/main/resources/assets/nuclear_horizons/textures/items/reactorVentCoolant3.png differ