aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/kubatech/tileentity/gregtech/multiblock/eigmodes
diff options
context:
space:
mode:
authorRaven Szewczyk <git@eigenraven.me>2024-05-30 18:26:10 +0100
committerGitHub <noreply@github.com>2024-05-30 19:26:10 +0200
commit337594e83a74c432c140b3df3287575b81bce467 (patch)
treeabe57b3390d3dd037ea1442f83c4519ebcb9de07 /src/main/java/kubatech/tileentity/gregtech/multiblock/eigmodes
parent752f262ccd545bdb785ef0e9ce922bf1117d23d6 (diff)
downloadGT5-Unofficial-337594e83a74c432c140b3df3287575b81bce467.tar.gz
GT5-Unofficial-337594e83a74c432c140b3df3287575b81bce467.tar.bz2
GT5-Unofficial-337594e83a74c432c140b3df3287575b81bce467.zip
Complete backend rework of the EIG (#2616)
* Complete backend rework of the EIG * Mergening Related Updates Also some loader references refactoring * fix (cherry picked from commit 7fd5d7417bddfb6e49ede3986d9a547f15b21289) * More Mergening fixes Updates the declaration of the stem mixin to match the new format. * Inline EIG IC2 bucket constants addresses: https://github.com/GTNewHorizons/GT5-Unofficial/pull/2616#discussion_r1620596497 * Fix Seed Removal in regular seed simulations Should address https://github.com/GTNewHorizons/GT5-Unofficial/pull/2616#discussion_r1620583338 --------- Co-authored-by: Guillaume Mercier <10gui-gui10@live.ca> Co-authored-by: Martin Robertz <dream-master@gmx.net>
Diffstat (limited to 'src/main/java/kubatech/tileentity/gregtech/multiblock/eigmodes')
-rw-r--r--src/main/java/kubatech/tileentity/gregtech/multiblock/eigmodes/EIGIC2Mode.java95
-rw-r--r--src/main/java/kubatech/tileentity/gregtech/multiblock/eigmodes/EIGNormalMode.java91
2 files changed, 186 insertions, 0 deletions
diff --git a/src/main/java/kubatech/tileentity/gregtech/multiblock/eigmodes/EIGIC2Mode.java b/src/main/java/kubatech/tileentity/gregtech/multiblock/eigmodes/EIGIC2Mode.java
new file mode 100644
index 0000000000..6c12373779
--- /dev/null
+++ b/src/main/java/kubatech/tileentity/gregtech/multiblock/eigmodes/EIGIC2Mode.java
@@ -0,0 +1,95 @@
+package kubatech.tileentity.gregtech.multiblock.eigmodes;
+
+import static kubatech.api.utils.StringUtils.voltageTooltipFormatted;
+import static kubatech.tileentity.gregtech.multiblock.GT_MetaTileEntity_ExtremeIndustrialGreenhouse.EIG_BALANCE_IC2_ACCELERATOR_TIER;
+
+import gregtech.api.util.GT_Multiblock_Tooltip_Builder;
+import kubatech.api.eig.EIGMode;
+import kubatech.tileentity.gregtech.multiblock.GT_MetaTileEntity_ExtremeIndustrialGreenhouse;
+
+public class EIGIC2Mode extends EIGMode {
+
+ public static final EIGIC2Mode instance = new EIGIC2Mode();
+
+ @Override
+ public int getUIIndex() {
+ return 1;
+ }
+
+ @Override
+ public String getName() {
+ return "IC2";
+ }
+
+ @Override
+ public int getMinVoltageTier() {
+ return GT_MetaTileEntity_ExtremeIndustrialGreenhouse.EIG_BALANCE_IC2_MODE_MIN_TIER;
+ }
+
+ @Override
+ public int getMinGlassTier() {
+ return GT_MetaTileEntity_ExtremeIndustrialGreenhouse.EIG_BALANCE_IC2_MODE_MIN_TIER;
+ }
+
+ @Override
+ public int getStartingSlotCount() {
+ return 4;
+ }
+
+ @Override
+ public int getSlotPerTierMultiplier() {
+ return 4;
+ }
+
+ @Override
+ public int getSeedCapacityPerSlot() {
+ return 1;
+ }
+
+ @Override
+ public int getWeedEXMultiplier() {
+ return 5;
+ }
+
+ @Override
+ public int getMaxFertilizerUsagePerSeed() {
+ return 40;
+ }
+
+ @Override
+ public double getFertilizerBoost() {
+ return 0.1d;
+ }
+
+ @Override
+ public GT_Multiblock_Tooltip_Builder addTooltipInfo(GT_Multiblock_Tooltip_Builder builder) {
+ String minVoltageTier = voltageTooltipFormatted(this.getMinVoltageTier());
+ String minGlassTier = voltageTooltipFormatted(this.getMinGlassTier());
+
+ int acceleration = (1 << EIG_BALANCE_IC2_ACCELERATOR_TIER);
+
+ double fertilizerBonusMultiplier = this.getFertilizerBoost() * 100;
+ String fertilizerBonus = String.format("%.0f%%", fertilizerBonusMultiplier);
+
+ return builder.addInfo("---------------------- IC2 CROPS ---------------------")
+ .addInfo("Minimal voltage tier: " + minVoltageTier)
+ .addInfo("Minimal glass tier: " + minGlassTier)
+ .addInfo("Starting with " + this.getStartingSlotCount() + " slot")
+ .addInfo(
+ "Every tier past " + minVoltageTier + ", slots are multiplied by " + this.getSlotPerTierMultiplier())
+ .addInfo("Every slot adds " + this.getSeedCapacityPerSlot() + " seed to the total seed capacity")
+ .addInfo("Process time: 5 sec")
+ .addInfo("All crops are accelerated by x" + acceleration + " times")
+ .addInfo("Can consume up to " + this.getMaxFertilizerUsagePerSeed() + " fertilizer per seed per cycle")
+ .addInfo("Boost per fertilizer: " + fertilizerBonus)
+ .addInfo("Weed-EX 9000 consumption is multiplied by " + this.getWeedEXMultiplier());
+ }
+
+ @Override
+ public int getSlotCount(int machineTier) {
+ int tierAboveMin = machineTier - this.getMinVoltageTier();
+ if (tierAboveMin < 0) return 0;
+ return 4 << (2 * (tierAboveMin));
+ }
+
+}
diff --git a/src/main/java/kubatech/tileentity/gregtech/multiblock/eigmodes/EIGNormalMode.java b/src/main/java/kubatech/tileentity/gregtech/multiblock/eigmodes/EIGNormalMode.java
new file mode 100644
index 0000000000..a1c5fcf393
--- /dev/null
+++ b/src/main/java/kubatech/tileentity/gregtech/multiblock/eigmodes/EIGNormalMode.java
@@ -0,0 +1,91 @@
+package kubatech.tileentity.gregtech.multiblock.eigmodes;
+
+import static kubatech.api.utils.StringUtils.voltageTooltipFormatted;
+
+import gregtech.api.util.GT_Multiblock_Tooltip_Builder;
+import kubatech.api.eig.EIGMode;
+import kubatech.tileentity.gregtech.multiblock.GT_MetaTileEntity_ExtremeIndustrialGreenhouse;
+
+public class EIGNormalMode extends EIGMode {
+
+ public static final EIGNormalMode instance = new EIGNormalMode();
+
+ @Override
+ public int getUIIndex() {
+ return 0;
+ }
+
+ @Override
+ public String getName() {
+ return "normal";
+ }
+
+ @Override
+ public int getMinVoltageTier() {
+ return GT_MetaTileEntity_ExtremeIndustrialGreenhouse.EIG_BALANCE_REGULAR_MODE_MIN_TIER;
+ }
+
+ @Override
+ public int getMinGlassTier() {
+ return 0;
+ }
+
+ @Override
+ public int getStartingSlotCount() {
+ return 1;
+ }
+
+ @Override
+ public int getSlotPerTierMultiplier() {
+ return 2;
+ }
+
+ @Override
+ public int getSeedCapacityPerSlot() {
+ return 64;
+ }
+
+ @Override
+ public int getWeedEXMultiplier() {
+ return 1;
+ }
+
+ @Override
+ public int getMaxFertilizerUsagePerSeed() {
+ return 2;
+ }
+
+ @Override
+ public double getFertilizerBoost() {
+ return 2.0d;
+ }
+
+ @Override
+ public GT_Multiblock_Tooltip_Builder addTooltipInfo(GT_Multiblock_Tooltip_Builder builder) {
+ String minVoltageTier = voltageTooltipFormatted(this.getMinVoltageTier());
+ String minVoltageTierMinus1 = voltageTooltipFormatted(this.getMinVoltageTier() - 1);
+
+ double fertilizerBonusMultiplier = this.getFertilizerBoost() * 100;
+ String fertilizerBonus = String.format("%.0f%%", fertilizerBonusMultiplier);
+
+ return builder.addInfo("-------------------- NORMAL CROPS --------------------")
+ .addInfo("Minimal voltage tier: " + minVoltageTier)
+ .addInfo("Starting with " + this.getStartingSlotCount() + " slot")
+ .addInfo(
+ "Every tier past " + minVoltageTier + ", slots are multiplied by " + this.getSlotPerTierMultiplier())
+ .addInfo("Every slot adds " + this.getSeedCapacityPerSlot() + " seed to the total seed capacity")
+ .addInfo("Base process time: 5 sec")
+ .addInfo("Process time is divided by number of tiers past " + minVoltageTierMinus1 + " (Minimum 1 sec)")
+ .addInfo("All crops are grown at the end of the operation")
+ .addInfo("Does not drop seeds")
+ .addInfo("Can consume up to " + this.getMaxFertilizerUsagePerSeed() + " fertilizer per seed per cycle")
+ .addInfo("Boost per fertilizer: " + fertilizerBonus);
+ }
+
+ @Override
+ public int getSlotCount(int machineTier) {
+ int tierAboveMin = machineTier - this.getMinVoltageTier();
+ if (tierAboveMin < 0) return 0;
+ return (1 << tierAboveMin);
+ }
+}