From 337594e83a74c432c140b3df3287575b81bce467 Mon Sep 17 00:00:00 2001 From: Raven Szewczyk Date: Thu, 30 May 2024 18:26:10 +0100 Subject: 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 --- .../gregtech/multiblock/eigmodes/EIGIC2Mode.java | 95 ++++++++++++++++++++++ .../multiblock/eigmodes/EIGNormalMode.java | 91 +++++++++++++++++++++ 2 files changed, 186 insertions(+) create mode 100644 src/main/java/kubatech/tileentity/gregtech/multiblock/eigmodes/EIGIC2Mode.java create mode 100644 src/main/java/kubatech/tileentity/gregtech/multiblock/eigmodes/EIGNormalMode.java (limited to 'src/main/java/kubatech/tileentity/gregtech/multiblock/eigmodes') 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); + } +} -- cgit