aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/common
diff options
context:
space:
mode:
authorMaxim <maxim235@gmx.de>2023-02-16 10:14:49 +0100
committerGitHub <noreply@github.com>2023-02-16 10:14:49 +0100
commit3b834d6cebae287cd9bbeddd4f157338da6e1ea5 (patch)
tree84b429a27e1adf0674569160e40e4c916a1d93c3 /src/main/java/gregtech/common
parente1ba22d7de9388dffb0ea7d99add79b95f94aa6a (diff)
downloadGT5-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')
-rw-r--r--src/main/java/gregtech/common/power/BasicMachineEUPower.java4
-rw-r--r--src/main/java/gregtech/common/power/EUPower.java5
-rw-r--r--src/main/java/gregtech/common/power/FusionPower.java52
-rw-r--r--src/main/java/gregtech/common/power/Power.java17
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_FusionComputer.java9
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_FusionComputer1.java3
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_FusionComputer2.java5
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/multi/GT_MetaTileEntity_FusionComputer3.java5
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