diff options
author | Maxim <maxim235@gmx.de> | 2023-02-16 10:14:49 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-02-16 10:14:49 +0100 |
commit | 3b834d6cebae287cd9bbeddd4f157338da6e1ea5 (patch) | |
tree | 84b429a27e1adf0674569160e40e4c916a1d93c3 /src/main/java/gregtech/common | |
parent | e1ba22d7de9388dffb0ea7d99add79b95f94aa6a (diff) | |
download | GT5-Unofficial-3b834d6cebae287cd9bbeddd4f157338da6e1ea5.tar.gz GT5-Unofficial-3b834d6cebae287cd9bbeddd4f157338da6e1ea5.tar.bz2 GT5-Unofficial-3b834d6cebae287cd9bbeddd4f157338da6e1ea5.zip |
Fusion NEI support (#1742)
* Added optional special value to Power and getter for power into IMTE
* Added FusionPower to properly display available fusion recipes and OC
* spotlessApply (#1743)
Co-authored-by: GitHub GTNH Actions <>
* Moved compare flag to recipe map
* Missed a new constructor
* Added user request
* Addressed reviews
* Typo
* Update src/main/java/gregtech/nei/GT_NEI_DefaultHandler.java
Co-authored-by: miozune <miozune@gmail.com>
* Removed wrong bracket from git online commit
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: miozune <miozune@gmail.com>
Diffstat (limited to 'src/main/java/gregtech/common')
8 files changed, 98 insertions, 2 deletions
diff --git a/src/main/java/gregtech/common/power/BasicMachineEUPower.java b/src/main/java/gregtech/common/power/BasicMachineEUPower.java index 14f1d27a3f..6fec7e7954 100644 --- a/src/main/java/gregtech/common/power/BasicMachineEUPower.java +++ b/src/main/java/gregtech/common/power/BasicMachineEUPower.java @@ -11,6 +11,10 @@ public class BasicMachineEUPower extends EUPower { super(tier, amperage); } + public BasicMachineEUPower(byte tier, int amperage, int specialValue) { + super(tier, amperage, specialValue); + } + @Override public void computePowerUsageAndDuration(int euPerTick, int duration) { super.computePowerUsageAndDuration(euPerTick, duration); diff --git a/src/main/java/gregtech/common/power/EUPower.java b/src/main/java/gregtech/common/power/EUPower.java index 815ae0c190..a630c2d90d 100644 --- a/src/main/java/gregtech/common/power/EUPower.java +++ b/src/main/java/gregtech/common/power/EUPower.java @@ -13,6 +13,11 @@ public class EUPower extends Power { this.amperage = amperage; } + public EUPower(byte tier, int amperage, int specialValue) { + super(tier, specialValue); + this.amperage = amperage; + } + @Override // This generic EU Power class has no overclock defined and does no special calculations. public void computePowerUsageAndDuration(int euPerTick, int duration) { diff --git a/src/main/java/gregtech/common/power/FusionPower.java b/src/main/java/gregtech/common/power/FusionPower.java new file mode 100644 index 0000000000..c253d51be0 --- /dev/null +++ b/src/main/java/gregtech/common/power/FusionPower.java @@ -0,0 +1,52 @@ +package gregtech.common.power; + +import static gregtech.api.enums.GT_Values.V; + +import net.minecraft.util.EnumChatFormatting; + +import gregtech.api.enums.GT_Values; +import gregtech.nei.FusionSpecialValueFormatter; + +public class FusionPower extends BasicMachineEUPower { + + public FusionPower(byte tier, int startupPower) { + super(tier, 1, startupPower); + } + + @Override + public void computePowerUsageAndDuration(int euPerTick, int duration, int specialValue) { + originalVoltage = computeVoltageForEuRate(euPerTick); + recipeEuPerTick = euPerTick; + recipeDuration = duration; + // It's safe to assume fusion is above ULV. We put this as safety check here anyway + if (tier > 0) { + int maxPossibleOverclocks = FusionSpecialValueFormatter.getFusionTier(this.specialValue, V[tier - 1]) + - FusionSpecialValueFormatter.getFusionTier(specialValue, euPerTick); + // Isn't too low EUt check? + long tempEUt = Math.max(euPerTick, V[1]); + + recipeDuration = duration; + + while (tempEUt <= V[tier - 1] * (long) amperage && maxPossibleOverclocks-- > 0) { + tempEUt <<= 1; // this actually controls overclocking + recipeDuration >>= 1; // this is effect of overclocking + } + if (tempEUt > Integer.MAX_VALUE - 1) { + recipeEuPerTick = Integer.MAX_VALUE - 1; + recipeDuration = Integer.MAX_VALUE - 1; + } else { + recipeEuPerTick = (int) tempEUt; + if (recipeEuPerTick == 0) recipeEuPerTick = 1; + if (recipeDuration == 0) recipeDuration = 1; // set time to 1 tick + } + } + wasOverclocked = checkIfOverclocked(); + } + + @Override + public String getTierString() { + return GT_Values.TIER_COLORS[tier] + "MK " + + FusionSpecialValueFormatter.getFusionTier(specialValue, recipeEuPerTick) + + EnumChatFormatting.RESET; + } +} diff --git a/src/main/java/gregtech/common/power/Power.java b/src/main/java/gregtech/common/power/Power.java index 13d1cc37c1..0c80c43bf3 100644 --- a/src/main/java/gregtech/common/power/Power.java +++ b/src/main/java/gregtech/common/power/Power.java @@ -7,9 +7,15 @@ public abstract class Power { protected final byte tier; protected int recipeEuPerTick; protected int recipeDuration; + protected final int specialValue; public Power(byte tier) { + this(tier, 0); + } + + public Power(byte tier, int specialValue) { this.tier = tier; + this.specialValue = specialValue; } public byte getTier() { @@ -23,6 +29,10 @@ public abstract class Power { */ public abstract void computePowerUsageAndDuration(int euPerTick, int duration); + public void computePowerUsageAndDuration(int euPerTick, int duration, int specialValue) { + computePowerUsageAndDuration(euPerTick, duration); + } + public int getEuPerTick() { return recipeEuPerTick; } @@ -53,4 +63,11 @@ public abstract class Power { public abstract String getVoltageString(); public abstract String getAmperageString(); + + public int compareTo(byte tier, int specialValue) { + if (this.tier != tier) { + return this.tier - tier; + } + return this.specialValue - specialValue; + } } diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_FusionComputer.java b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_FusionComputer.java index 1f2b4f8222..1e7e0f822e 100644 --- a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_FusionComputer.java +++ b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_FusionComputer.java @@ -51,11 +51,15 @@ import gregtech.api.render.TextureFactory; import gregtech.api.util.GT_Multiblock_Tooltip_Builder; import gregtech.api.util.GT_Recipe; import gregtech.api.util.GT_Utility; +import gregtech.common.power.FusionPower; +import gregtech.common.power.Power; public abstract class GT_MetaTileEntity_FusionComputer extends GT_MetaTileEntity_EnhancedMultiBlockBase<GT_MetaTileEntity_FusionComputer> implements ISurvivalConstructable, IAddUIWidgets { + protected FusionPower power; + public static final String STRUCTURE_PIECE_MAIN = "main"; private static final ClassValue<IStructureDefinition<GT_MetaTileEntity_FusionComputer>> STRUCTURE_DEFINITION = new ClassValue<IStructureDefinition<GT_MetaTileEntity_FusionComputer>>() { @@ -130,6 +134,11 @@ public abstract class GT_MetaTileEntity_FusionComputer super(aName); } + @Override + public Power getPower() { + return power; + } + public abstract int tier(); @Override diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_FusionComputer1.java b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_FusionComputer1.java index f032a9b53e..2ff938d2f4 100644 --- a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_FusionComputer1.java +++ b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_FusionComputer1.java @@ -11,6 +11,7 @@ import gregtech.api.interfaces.tileentity.IGregTechTileEntity; import gregtech.api.metatileentity.MetaTileEntity; import gregtech.api.render.TextureFactory; import gregtech.api.util.GT_Multiblock_Tooltip_Builder; +import gregtech.common.power.FusionPower; public class GT_MetaTileEntity_FusionComputer1 extends GT_MetaTileEntity_FusionComputer { @@ -20,10 +21,12 @@ public class GT_MetaTileEntity_FusionComputer1 extends GT_MetaTileEntity_FusionC public GT_MetaTileEntity_FusionComputer1(int aID, String aName, String aNameRegional) { super(aID, aName, aNameRegional, 6); + power = new FusionPower((byte) 6, 160_000_000); } public GT_MetaTileEntity_FusionComputer1(String aName) { super(aName); + power = new FusionPower((byte) 6, 160_000_000); } @Override diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_FusionComputer2.java b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_FusionComputer2.java index 6d95abd1cb..413245d43f 100644 --- a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_FusionComputer2.java +++ b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_FusionComputer2.java @@ -11,6 +11,7 @@ import gregtech.api.interfaces.tileentity.IGregTechTileEntity; import gregtech.api.metatileentity.MetaTileEntity; import gregtech.api.render.TextureFactory; import gregtech.api.util.GT_Multiblock_Tooltip_Builder; +import gregtech.common.power.FusionPower; public class GT_MetaTileEntity_FusionComputer2 extends GT_MetaTileEntity_FusionComputer { @@ -19,11 +20,13 @@ public class GT_MetaTileEntity_FusionComputer2 extends GT_MetaTileEntity_FusionC TextureFactory.builder().addIcon(OVERLAY_FUSION2_GLOW).extFacing().glow().build()); public GT_MetaTileEntity_FusionComputer2(int aID, String aName, String aNameRegional) { - super(aID, aName, aNameRegional, 6); + super(aID, aName, aNameRegional, 7); + power = new FusionPower((byte) 7, 320_000_000); } public GT_MetaTileEntity_FusionComputer2(String aName) { super(aName); + power = new FusionPower((byte) 7, 320_000_000); } @Override diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_FusionComputer3.java b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_FusionComputer3.java index 210a427f32..ebc88c28f3 100644 --- a/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_FusionComputer3.java +++ b/src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_FusionComputer3.java @@ -11,6 +11,7 @@ import gregtech.api.interfaces.tileentity.IGregTechTileEntity; import gregtech.api.metatileentity.MetaTileEntity; import gregtech.api.render.TextureFactory; import gregtech.api.util.GT_Multiblock_Tooltip_Builder; +import gregtech.common.power.FusionPower; public class GT_MetaTileEntity_FusionComputer3 extends GT_MetaTileEntity_FusionComputer { @@ -19,11 +20,13 @@ public class GT_MetaTileEntity_FusionComputer3 extends GT_MetaTileEntity_FusionC TextureFactory.builder().addIcon(OVERLAY_FUSION3_GLOW).extFacing().glow().build()); public GT_MetaTileEntity_FusionComputer3(int aID, String aName, String aNameRegional) { - super(aID, aName, aNameRegional, 6); + super(aID, aName, aNameRegional, 8); + power = new FusionPower((byte) 8, 640_000_000); } public GT_MetaTileEntity_FusionComputer3(String aName) { super(aName); + power = new FusionPower((byte) 8, 640_000_000); } @Override |