From a478ad0c4f85650fc37bc598df80e70408864748 Mon Sep 17 00:00:00 2001 From: Ben Spiers Date: Fri, 27 Feb 2015 17:15:58 +0000 Subject: [PATCH 1/4] Make statistics tab more explanatory --- src/main/resources/assets/mekanism/lang/en_US.lang | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/resources/assets/mekanism/lang/en_US.lang b/src/main/resources/assets/mekanism/lang/en_US.lang index 300d9eb57..372b2bcfc 100644 --- a/src/main/resources/assets/mekanism/lang/en_US.lang +++ b/src/main/resources/assets/mekanism/lang/en_US.lang @@ -726,8 +726,8 @@ gui.solarGenerator.sun=Sun gui.bioGenerator.bioFuel=BioFuel gui.electrolyticSeparator.dump=Dump -gui.passive=Passive -gui.active=Active +gui.passive=Air-Cooled +gui.active=Water-Cooled gui.minInject=Min. Inject Rate gui.ignition=Ignition Temp From 743d80b5169bf0a5e75e4508009b980809b50e37 Mon Sep 17 00:00:00 2001 From: Ben Spiers Date: Fri, 27 Feb 2015 17:16:20 +0000 Subject: [PATCH 2/4] Reduce energy input needed to ignite fusion by factor of 10 --- src/main/java/mekanism/generators/common/FusionReactor.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/mekanism/generators/common/FusionReactor.java b/src/main/java/mekanism/generators/common/FusionReactor.java index c25da6825..68ef2532e 100644 --- a/src/main/java/mekanism/generators/common/FusionReactor.java +++ b/src/main/java/mekanism/generators/common/FusionReactor.java @@ -83,7 +83,7 @@ public class FusionReactor implements IFusionReactor @Override public void addTemperatureFromEnergyInput(double energyAdded) { - plasmaTemperature += energyAdded / plasmaHeatCapacity; + plasmaTemperature += energyAdded / plasmaHeatCapacity * (isBurning() ? 1 : 10); } public boolean hasHohlraum() From fa9588d5578c0527c2c6ebf749be3bb8760d31db Mon Sep 17 00:00:00 2001 From: Ben Spiers Date: Fri, 27 Feb 2015 17:30:30 +0000 Subject: [PATCH 3/4] Add a proper temperature display utility --- .../java/mekanism/api/MekanismConfig.java | 2 + .../java/mekanism/api/util/EnergyUtils.java | 100 ++++++++++++++++++ .../java/mekanism/common/CommonProxy.java | 27 +++++ .../mekanism/common/util/MekanismUtils.java | 25 +++++ .../generators/client/gui/GuiReactorHeat.java | 4 +- .../client/gui/GuiReactorStats.java | 12 +-- 6 files changed, 162 insertions(+), 8 deletions(-) diff --git a/src/main/java/mekanism/api/MekanismConfig.java b/src/main/java/mekanism/api/MekanismConfig.java index 75b7084a9..5bde272af 100644 --- a/src/main/java/mekanism/api/MekanismConfig.java +++ b/src/main/java/mekanism/api/MekanismConfig.java @@ -1,6 +1,7 @@ package mekanism.api; import mekanism.api.util.EnergyUtils.EnergyType; +import mekanism.api.util.EnergyUtils.TempType; public class MekanismConfig { @@ -27,6 +28,7 @@ public class MekanismConfig public static int userWorldGenVersion = 0; public static double ENERGY_PER_REDSTONE = 10000; public static EnergyType activeType = EnergyType.J; + public static TempType tempUnit = TempType.K; public static double TO_IC2; public static double TO_BC; public static double TO_TE; diff --git a/src/main/java/mekanism/api/util/EnergyUtils.java b/src/main/java/mekanism/api/util/EnergyUtils.java index fceedb530..a7d6981d4 100644 --- a/src/main/java/mekanism/api/util/EnergyUtils.java +++ b/src/main/java/mekanism/api/util/EnergyUtils.java @@ -27,6 +27,38 @@ public class EnergyUtils } } + public static enum TemperatureUnit + { + KELVIN("Kelvin", "K", 0, 1), + CELSIUS("Celsius", "C", 273.15, 1), + RANKINE("Rankine", "R", 0, 5/9), + FAHRENHEIT("Fahrenheit", "F", 459.67, 5/9), + AMBIENT("Ambient", "+STP", 300, 1); + + public String name; + public String symbol; + double zeroOffset; + double intervalSize; + + private TemperatureUnit(String s, String s1, double offset, double size) + { + name = s; + symbol = s1; + zeroOffset = offset; + intervalSize = size; + } + + public double convertFromK(double T) + { + return (T * intervalSize) - zeroOffset; + } + + public double convertToK(double T) + { + return (T + zeroOffset) / intervalSize; + } + } + /** Metric system of measurement. */ public static enum MeasurementUnit { @@ -174,6 +206,65 @@ public class EnergyUtils return roundDecimals(value, decimalPlaces) + " " + unit.name; } + public static String getDisplay(double T, TemperatureUnit unit, int decimalPlaces, boolean isShort) + { + String unitName = unit.name; + String prefix = ""; + + double value = unit.convertFromK(T); + + if(value < 0) + { + value = Math.abs(value); + prefix = "-"; + } + + if(isShort) + { + unitName = unit.symbol; + } + + if(value == 0) + { + return value + " " + unitName; + } + else { + for(int i = 0; i < MeasurementUnit.values().length; i++) + { + MeasurementUnit lowerMeasure = MeasurementUnit.values()[i]; + + if(lowerMeasure.below(value) && lowerMeasure.ordinal() == 0) + { + return prefix + roundDecimals(lowerMeasure.process(value), decimalPlaces) + " " + lowerMeasure.getName(isShort) + unitName; + } + + if(lowerMeasure.ordinal() + 1 >= MeasurementUnit.values().length) + { + return prefix + roundDecimals(lowerMeasure.process(value), decimalPlaces) + " " + lowerMeasure.getName(isShort) + unitName; + } + + MeasurementUnit upperMeasure = MeasurementUnit.values()[i + 1]; + + if((lowerMeasure.above(value) && upperMeasure.below(value)) || lowerMeasure.value == value) + { + return prefix + roundDecimals(lowerMeasure.process(value), decimalPlaces) + " " + lowerMeasure.getName(isShort) + unitName; + } + } + } + + return prefix + roundDecimals(value, decimalPlaces) + " " + unitName; + } + + public static String getDisplayShort(double value, TemperatureUnit unit) + { + return getDisplay(value, unit, 2, true); + } + + public static String getDisplayShort(double value, TemperatureUnit unit, int decimalPlaces) + { + return getDisplay(value, unit, decimalPlaces, true); + } + public static double roundDecimals(double d, int decimalPlaces) { int j = (int)(d*Math.pow(10, decimalPlaces)); @@ -192,4 +283,13 @@ public class EnergyUtils EU, MJ } + + public static enum TempType + { + K, + C, + R, + F, + STP + } } diff --git a/src/main/java/mekanism/common/CommonProxy.java b/src/main/java/mekanism/common/CommonProxy.java index ef8773617..961afee97 100644 --- a/src/main/java/mekanism/common/CommonProxy.java +++ b/src/main/java/mekanism/common/CommonProxy.java @@ -7,6 +7,7 @@ import mekanism.api.MekanismConfig.general; import mekanism.api.MekanismConfig.usage; import mekanism.api.Pos3D; import mekanism.api.util.EnergyUtils.EnergyType; +import mekanism.api.util.EnergyUtils.TempType; import mekanism.common.base.IUpgradeTile; import mekanism.common.block.BlockMachine.MachineType; import mekanism.common.entity.EntityRobit; @@ -244,6 +245,32 @@ public class CommonProxy } } + s = Mekanism.configuration.get(Configuration.CATEGORY_GENERAL, "Temperature Units", "K", null, new String[]{"K", "C", "R", "F"}).getString(); + + if(s != null) + { + if(s.trim().equalsIgnoreCase("k") || s.trim().equalsIgnoreCase("kelvin")) + { + general.tempUnit = TempType.K; + } + else if(s.trim().equalsIgnoreCase("c") || s.trim().equalsIgnoreCase("celsius") || s.trim().equalsIgnoreCase("centigrade")) + { + general.tempUnit = TempType.C; + } + else if(s.trim().equalsIgnoreCase("r") || s.trim().equalsIgnoreCase("rankine")) + { + general.tempUnit = TempType.R; + } + else if(s.trim().equalsIgnoreCase("f") || s.trim().equalsIgnoreCase("fahrenheit")) + { + general.tempUnit = TempType.F; + } + else if(s.trim().equalsIgnoreCase("a") || s.trim().equalsIgnoreCase("ambient") || s.trim().equalsIgnoreCase("stp")) + { + general.tempUnit = TempType.STP; + } + } + general.laserRange = Mekanism.configuration.get("general", "LaserRange", 64).getInt(64); general.laserEnergyNeededPerHardness = Mekanism.configuration.get("general", "LaserDiggingEnergy", 100000).getInt(100000); diff --git a/src/main/java/mekanism/common/util/MekanismUtils.java b/src/main/java/mekanism/common/util/MekanismUtils.java index 389b5cc44..e3fd24e0a 100644 --- a/src/main/java/mekanism/common/util/MekanismUtils.java +++ b/src/main/java/mekanism/common/util/MekanismUtils.java @@ -25,6 +25,7 @@ import mekanism.api.gas.Gas; import mekanism.api.gas.GasStack; import mekanism.api.util.EnergyUtils; import mekanism.api.util.EnergyUtils.ElectricUnit; +import mekanism.api.util.EnergyUtils.TemperatureUnit; import mekanism.common.Mekanism; import mekanism.common.MekanismBlocks; import mekanism.common.OreDictCache; @@ -1154,6 +1155,30 @@ public final class MekanismUtils return "error"; } + /** + * Gets a rounded energy display of a defined amount of energy. + * @param T - temperature to display + * @return rounded energy display + */ + public static String getTemperatureDisplay(double T) + { + switch(general.tempUnit) + { + case K: + return EnergyUtils.getDisplayShort(T, TemperatureUnit.KELVIN); + case C: + return EnergyUtils.getDisplayShort(T, TemperatureUnit.CELSIUS); + case R: + return EnergyUtils.getDisplayShort(T, TemperatureUnit.RANKINE); + case F: + return EnergyUtils.getDisplayShort(T, TemperatureUnit.FAHRENHEIT); + case STP: + return EnergyUtils.getDisplayShort(T, TemperatureUnit.AMBIENT); + } + + return "error"; + } + /** * Whether or not BuildCraft power should be used, taking into account whether it is installed or another mod is * providing its API. diff --git a/src/main/java/mekanism/generators/client/gui/GuiReactorHeat.java b/src/main/java/mekanism/generators/client/gui/GuiReactorHeat.java index f0f44a4e5..dbef204ab 100644 --- a/src/main/java/mekanism/generators/client/gui/GuiReactorHeat.java +++ b/src/main/java/mekanism/generators/client/gui/GuiReactorHeat.java @@ -78,7 +78,7 @@ public class GuiReactorHeat extends GuiMekanism @Override public String getText(double level) { - return "Plasma: " + (int)level + "C"; + return "Plasma: " + MekanismUtils.getTemperatureDisplay(level); } }, Type.STANDARD, this, MekanismUtils.getResource(ResourceType.GUI, "GuiTall.png"), 7, 50)); guiElements.add(new GuiProgress(new IProgressInfoHandler() @@ -112,7 +112,7 @@ public class GuiReactorHeat extends GuiMekanism @Override public String getText(double level) { - return "Case: " + (int)level + "C"; + return "Case: " + MekanismUtils.getTemperatureDisplay(level); } }, Type.STANDARD, this, MekanismUtils.getResource(ResourceType.GUI, "GuiTall.png"), 61, 50)); guiElements.add(new GuiProgress(new IProgressInfoHandler() diff --git a/src/main/java/mekanism/generators/client/gui/GuiReactorStats.java b/src/main/java/mekanism/generators/client/gui/GuiReactorStats.java index fb17e8a74..58bf55931 100644 --- a/src/main/java/mekanism/generators/client/gui/GuiReactorStats.java +++ b/src/main/java/mekanism/generators/client/gui/GuiReactorStats.java @@ -58,16 +58,16 @@ public class GuiReactorStats extends GuiMekanism { fontRendererObj.drawString(EnumColor.DARK_GREEN + MekanismUtils.localize("gui.passive"), 6, 26, 0x404040); fontRendererObj.drawString(MekanismUtils.localize("gui.minInject") + ": " + (tileEntity.getReactor().getMinInjectionRate(false)), 16, 36, 0x404040); - fontRendererObj.drawString(MekanismUtils.localize("gui.ignition") + ": " + (nf.format(tileEntity.getReactor().getIgnitionTemperature(false))), 16, 46, 0x404040); - fontRendererObj.drawString(MekanismUtils.localize("gui.maxPlasma") + ": " + (nf.format(tileEntity.getReactor().getMaxPlasmaTemperature(false))), 16, 56, 0x404040); - fontRendererObj.drawString(MekanismUtils.localize("gui.maxCasing") + ": " + (nf.format(tileEntity.getReactor().getMaxCasingTemperature(false))), 16, 66, 0x404040); + fontRendererObj.drawString(MekanismUtils.localize("gui.ignition") + ": " + (MekanismUtils.getTemperatureDisplay(tileEntity.getReactor().getIgnitionTemperature(false))), 16, 46, 0x404040); + fontRendererObj.drawString(MekanismUtils.localize("gui.maxPlasma") + ": " + (MekanismUtils.getTemperatureDisplay(tileEntity.getReactor().getMaxPlasmaTemperature(false))), 16, 56, 0x404040); + fontRendererObj.drawString(MekanismUtils.localize("gui.maxCasing") + ": " + (MekanismUtils.getTemperatureDisplay(tileEntity.getReactor().getMaxCasingTemperature(false))), 16, 66, 0x404040); fontRendererObj.drawString(MekanismUtils.localize("gui.passiveGeneration") + ": " + MekanismUtils.getEnergyDisplay(tileEntity.getReactor().getPassiveGeneration(false, false))+"/t", 16, 76, 0x404040); fontRendererObj.drawString(EnumColor.DARK_BLUE + MekanismUtils.localize("gui.active"), 6, 92, 0x404040); fontRendererObj.drawString(MekanismUtils.localize("gui.minInject") + ": " + (tileEntity.getReactor().getMinInjectionRate(true)), 16, 102, 0x404040); - fontRendererObj.drawString(MekanismUtils.localize("gui.ignition") + ": " + (nf.format(tileEntity.getReactor().getIgnitionTemperature(true))), 16, 112, 0x404040); - fontRendererObj.drawString(MekanismUtils.localize("gui.maxPlasma") + ": " + (nf.format(tileEntity.getReactor().getMaxPlasmaTemperature(true))), 16, 122, 0x404040); - fontRendererObj.drawString(MekanismUtils.localize("gui.maxCasing") + ": " + (nf.format(tileEntity.getReactor().getMaxCasingTemperature(true))), 16, 132, 0x404040); + fontRendererObj.drawString(MekanismUtils.localize("gui.ignition") + ": " + (MekanismUtils.getTemperatureDisplay(tileEntity.getReactor().getIgnitionTemperature(true))), 16, 112, 0x404040); + fontRendererObj.drawString(MekanismUtils.localize("gui.maxPlasma") + ": " + (MekanismUtils.getTemperatureDisplay(tileEntity.getReactor().getMaxPlasmaTemperature(true))), 16, 122, 0x404040); + fontRendererObj.drawString(MekanismUtils.localize("gui.maxCasing") + ": " + (MekanismUtils.getTemperatureDisplay(tileEntity.getReactor().getMaxCasingTemperature(true))), 16, 132, 0x404040); fontRendererObj.drawString(MekanismUtils.localize("gui.passiveGeneration") + ": " + MekanismUtils.getEnergyDisplay(tileEntity.getReactor().getPassiveGeneration(true, false))+"/t", 16, 142, 0x404040); fontRendererObj.drawString(MekanismUtils.localize("gui.steamProduction") + ": " + nf.format(tileEntity.getReactor().getSteamPerTick(false)) + "mB/t", 16, 152, 0x404040); } From f2859cacbb7de81d866ee9f3f7b492f65a40f14c Mon Sep 17 00:00:00 2001 From: Ben Spiers Date: Fri, 27 Feb 2015 17:33:01 +0000 Subject: [PATCH 4/4] Rename EnergyUtils to UnitDisplayUtils --- .../java/mekanism/api/MekanismConfig.java | 4 ++-- ...EnergyUtils.java => UnitDisplayUtils.java} | 2 +- .../java/mekanism/common/CommonProxy.java | 4 ++-- .../common/network/PacketConfigSync.java | 2 +- .../mekanism/common/util/MekanismUtils.java | 24 +++++++++---------- 5 files changed, 18 insertions(+), 18 deletions(-) rename src/main/java/mekanism/api/util/{EnergyUtils.java => UnitDisplayUtils.java} (99%) diff --git a/src/main/java/mekanism/api/MekanismConfig.java b/src/main/java/mekanism/api/MekanismConfig.java index 5bde272af..66c8b12f0 100644 --- a/src/main/java/mekanism/api/MekanismConfig.java +++ b/src/main/java/mekanism/api/MekanismConfig.java @@ -1,7 +1,7 @@ package mekanism.api; -import mekanism.api.util.EnergyUtils.EnergyType; -import mekanism.api.util.EnergyUtils.TempType; +import mekanism.api.util.UnitDisplayUtils.EnergyType; +import mekanism.api.util.UnitDisplayUtils.TempType; public class MekanismConfig { diff --git a/src/main/java/mekanism/api/util/EnergyUtils.java b/src/main/java/mekanism/api/util/UnitDisplayUtils.java similarity index 99% rename from src/main/java/mekanism/api/util/EnergyUtils.java rename to src/main/java/mekanism/api/util/UnitDisplayUtils.java index a7d6981d4..7f6a2151a 100644 --- a/src/main/java/mekanism/api/util/EnergyUtils.java +++ b/src/main/java/mekanism/api/util/UnitDisplayUtils.java @@ -3,7 +3,7 @@ package mekanism.api.util; /** * Code taken from UE and modified to fit Mekanism. */ -public class EnergyUtils +public class UnitDisplayUtils { public static enum ElectricUnit { diff --git a/src/main/java/mekanism/common/CommonProxy.java b/src/main/java/mekanism/common/CommonProxy.java index 961afee97..c21762b42 100644 --- a/src/main/java/mekanism/common/CommonProxy.java +++ b/src/main/java/mekanism/common/CommonProxy.java @@ -6,8 +6,8 @@ import mekanism.api.MekanismAPI; import mekanism.api.MekanismConfig.general; import mekanism.api.MekanismConfig.usage; import mekanism.api.Pos3D; -import mekanism.api.util.EnergyUtils.EnergyType; -import mekanism.api.util.EnergyUtils.TempType; +import mekanism.api.util.UnitDisplayUtils.EnergyType; +import mekanism.api.util.UnitDisplayUtils.TempType; import mekanism.common.base.IUpgradeTile; import mekanism.common.block.BlockMachine.MachineType; import mekanism.common.entity.EntityRobit; diff --git a/src/main/java/mekanism/common/network/PacketConfigSync.java b/src/main/java/mekanism/common/network/PacketConfigSync.java index fee7f917d..3b89ae1c5 100644 --- a/src/main/java/mekanism/common/network/PacketConfigSync.java +++ b/src/main/java/mekanism/common/network/PacketConfigSync.java @@ -2,7 +2,7 @@ package mekanism.common.network; import mekanism.api.MekanismConfig.general; import mekanism.api.MekanismConfig.usage; -import mekanism.api.util.EnergyUtils.EnergyType; +import mekanism.api.util.UnitDisplayUtils.EnergyType; import mekanism.common.Mekanism; import mekanism.common.base.IModule; import mekanism.common.network.PacketConfigSync.ConfigSyncMessage; diff --git a/src/main/java/mekanism/common/util/MekanismUtils.java b/src/main/java/mekanism/common/util/MekanismUtils.java index e3fd24e0a..f7db768f3 100644 --- a/src/main/java/mekanism/common/util/MekanismUtils.java +++ b/src/main/java/mekanism/common/util/MekanismUtils.java @@ -23,9 +23,9 @@ import mekanism.api.MekanismConfig.client; import mekanism.api.MekanismConfig.general; import mekanism.api.gas.Gas; import mekanism.api.gas.GasStack; -import mekanism.api.util.EnergyUtils; -import mekanism.api.util.EnergyUtils.ElectricUnit; -import mekanism.api.util.EnergyUtils.TemperatureUnit; +import mekanism.api.util.UnitDisplayUtils; +import mekanism.api.util.UnitDisplayUtils.ElectricUnit; +import mekanism.api.util.UnitDisplayUtils.TemperatureUnit; import mekanism.common.Mekanism; import mekanism.common.MekanismBlocks; import mekanism.common.OreDictCache; @@ -1143,13 +1143,13 @@ public final class MekanismUtils switch(general.activeType) { case J: - return EnergyUtils.getDisplayShort(energy, ElectricUnit.JOULES); + return UnitDisplayUtils.getDisplayShort(energy, ElectricUnit.JOULES); case RF: - return EnergyUtils.getDisplayShort(energy * general.TO_TE, ElectricUnit.REDSTONE_FLUX, 0); + return UnitDisplayUtils.getDisplayShort(energy * general.TO_TE, ElectricUnit.REDSTONE_FLUX, 0); case EU: - return EnergyUtils.getDisplayShort(energy * general.TO_IC2, ElectricUnit.ELECTRICAL_UNITS, 0); + return UnitDisplayUtils.getDisplayShort(energy * general.TO_IC2, ElectricUnit.ELECTRICAL_UNITS, 0); case MJ: - return EnergyUtils.getDisplayShort(energy * general.TO_TE / 10, ElectricUnit.MINECRAFT_JOULES); + return UnitDisplayUtils.getDisplayShort(energy * general.TO_TE / 10, ElectricUnit.MINECRAFT_JOULES); } return "error"; @@ -1165,15 +1165,15 @@ public final class MekanismUtils switch(general.tempUnit) { case K: - return EnergyUtils.getDisplayShort(T, TemperatureUnit.KELVIN); + return UnitDisplayUtils.getDisplayShort(T, TemperatureUnit.KELVIN); case C: - return EnergyUtils.getDisplayShort(T, TemperatureUnit.CELSIUS); + return UnitDisplayUtils.getDisplayShort(T, TemperatureUnit.CELSIUS); case R: - return EnergyUtils.getDisplayShort(T, TemperatureUnit.RANKINE); + return UnitDisplayUtils.getDisplayShort(T, TemperatureUnit.RANKINE); case F: - return EnergyUtils.getDisplayShort(T, TemperatureUnit.FAHRENHEIT); + return UnitDisplayUtils.getDisplayShort(T, TemperatureUnit.FAHRENHEIT); case STP: - return EnergyUtils.getDisplayShort(T, TemperatureUnit.AMBIENT); + return UnitDisplayUtils.getDisplayShort(T, TemperatureUnit.AMBIENT); } return "error";