aboutsummaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/gregtech/api/enums/GT_Values.java10
-rw-r--r--src/main/java/gregtech/api/enums/ItemList.java1
-rw-r--r--src/main/java/gregtech/api/enums/Textures.java5
-rw-r--r--src/main/java/gregtech/api/recipe/check/CheckRecipeResultRegistry.java2
-rw-r--r--src/main/java/gregtech/common/blocks/GT_Block_Casings9.java6
-rw-r--r--src/main/java/gregtech/common/blocks/GT_Cyclotron_Coils.java2
-rw-r--r--src/main/java/gregtech/loaders/load/GT_Loader_MetaTileEntities_Recipes.java10
-rw-r--r--src/main/java/gtPlusPlus/core/config/ConfigHandler.java95
-rw-r--r--src/main/java/gtPlusPlus/core/handler/COMPAT_HANDLER.java2
-rw-r--r--src/main/java/gtPlusPlus/core/lib/CORE.java1
-rw-r--r--src/main/java/gtPlusPlus/core/recipe/RECIPES_Machines.java14
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/api/enums/GregtechItemList.java3
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/steam/GregtechMetaTileEntity_SteamWaterPump.java356
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechWaterPump.java14
-rw-r--r--src/main/resources/assets/gregtech/lang/en_US.lang2
-rw-r--r--src/main/resources/assets/gregtech/textures/blocks/iconsets/OVERLAY_FRONT_WATER_PUMP.pngbin0 -> 308 bytes
-rw-r--r--src/main/resources/assets/gregtech/textures/blocks/iconsets/OVERLAY_FRONT_WATER_PUMP_ACTIVE.pngbin0 -> 407 bytes
-rw-r--r--src/main/resources/assets/gregtech/textures/blocks/iconsets/TEXTURE_METAL_PANEL_E.pngbin0 -> 1254 bytes
-rw-r--r--src/main/resources/assets/gregtech/textures/blocks/iconsets/TEXTURE_METAL_PANEL_E_A.pngbin0 -> 874 bytes
-rw-r--r--src/main/resources/assets/miscutils/textures/blocks/metro/TEXTURE_METAL_PANEL_E.pngbin0 -> 1254 bytes
-rw-r--r--src/main/resources/assets/miscutils/textures/blocks/metro/TEXTURE_METAL_PANEL_E_A.pngbin0 -> 874 bytes
21 files changed, 427 insertions, 96 deletions
diff --git a/src/main/java/gregtech/api/enums/GT_Values.java b/src/main/java/gregtech/api/enums/GT_Values.java
index 37caa7fc38..4d7f380656 100644
--- a/src/main/java/gregtech/api/enums/GT_Values.java
+++ b/src/main/java/gregtech/api/enums/GT_Values.java
@@ -656,6 +656,16 @@ public class GT_Values {
+ EnumChatFormatting.LIGHT_PURPLE
+ "ps";
+ public static final String AuthorEvgenWarGold = "" + EnumChatFormatting.RED
+ + EnumChatFormatting.BOLD
+ + "Evgen"
+ + EnumChatFormatting.BLUE
+ + EnumChatFormatting.BOLD
+ + "War"
+ + EnumChatFormatting.GOLD
+ + EnumChatFormatting.BOLD
+ + "Gold";
+
// 7.5F comes from GT_Tool_Turbine_Large#getBaseDamage() given huge turbines are the most efficient now.
public static double getMaxPlasmaTurbineEfficiencyFromMaterial(Materials material) {
return (5F + (7.5F + material.mToolQuality)) / 10.0;
diff --git a/src/main/java/gregtech/api/enums/ItemList.java b/src/main/java/gregtech/api/enums/ItemList.java
index d5ee302d6a..2d2b066825 100644
--- a/src/main/java/gregtech/api/enums/ItemList.java
+++ b/src/main/java/gregtech/api/enums/ItemList.java
@@ -852,6 +852,7 @@ public enum ItemList implements IItemContainer {
Casing_Grate,
Casing_Vent,
Casing_Vent_T2,
+ WoodenCasing,
Casing_RadiationProof,
Casing_AdvancedRadiationProof,
Casing_Firebox_Bronze,
diff --git a/src/main/java/gregtech/api/enums/Textures.java b/src/main/java/gregtech/api/enums/Textures.java
index 8eccbb050d..f4ce94c4f2 100644
--- a/src/main/java/gregtech/api/enums/Textures.java
+++ b/src/main/java/gregtech/api/enums/Textures.java
@@ -264,6 +264,9 @@ public class Textures {
MACHINE_CASING_FUSION,
MACHINE_CASING_FUSION_GLASS,
MACHINE_CASING_FUSION_GLASS_YELLOW,
+ TEXTURE_METAL_PANEL_E,
+ TEXTURE_METAL_PANEL_E_A,
+
MACHINE_CASING_FUSION_GLASS_YELLOW_GLOW,
MACHINE_CASING_FUSION_2,
@@ -653,6 +656,8 @@ public class Textures {
OVERLAY_FRONT_STEAM_MACERATOR_ACTIVE_GLOW,
OVERLAY_FRONT_STEAM_WASHER,
OVERLAY_FRONT_STEAM_WASHER_ACTIVE,
+ OVERLAY_FRONT_WATER_PUMP,
+ OVERLAY_FRONT_WATER_PUMP_ACTIVE,
OVERLAY_FRONT_STEAM_CENTRIFUGE,
OVERLAY_FRONT_STEAM_CENTRIFUGE_ACTIVE,
OVERLAY_FRONT_STEAM_COMPRESSOR,
diff --git a/src/main/java/gregtech/api/recipe/check/CheckRecipeResultRegistry.java b/src/main/java/gregtech/api/recipe/check/CheckRecipeResultRegistry.java
index e141c39a67..7112b47886 100644
--- a/src/main/java/gregtech/api/recipe/check/CheckRecipeResultRegistry.java
+++ b/src/main/java/gregtech/api/recipe/check/CheckRecipeResultRegistry.java
@@ -108,6 +108,8 @@ public final class CheckRecipeResultRegistry {
public static final CheckRecipeResult BACKFILLER_NO_CONCRETE = SimpleCheckRecipeResult
.ofFailure("backfiller_no_concrete");
+ public static final CheckRecipeResult NO_SEE_SKY = SimpleCheckRecipeResult.ofFailure("no_see_sky");
+
/**
* Cannot process recipe because the machine cannot handle required EUt.
*/
diff --git a/src/main/java/gregtech/common/blocks/GT_Block_Casings9.java b/src/main/java/gregtech/common/blocks/GT_Block_Casings9.java
index bc6aca6255..4441885f30 100644
--- a/src/main/java/gregtech/common/blocks/GT_Block_Casings9.java
+++ b/src/main/java/gregtech/common/blocks/GT_Block_Casings9.java
@@ -16,14 +16,16 @@ import gregtech.api.util.GT_LanguageManager;
public class GT_Block_Casings9 extends GT_Block_Casings_Abstract {
public GT_Block_Casings9() {
- super(GT_Item_Casings9.class, "gt.blockcasings9", GT_Material_Casings.INSTANCE, 2);
+ super(GT_Item_Casings9.class, "gt.blockcasings9", GT_Material_Casings.INSTANCE, 16);
GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".0.name", "PBI Pipe Casing");
GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".1.name", "Advanced Filter Casing");
GT_LanguageManager
.addStringLocalization(getUnlocalizedName() + ".1.tooltip", "Less than five 0.1μm particles per m^3");
+ GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".2.name", "Primitive Wooden Casing");
ItemList.Casing_Pipe_Polybenzimidazole.set(new ItemStack(this, 1, 0));
ItemList.Casing_Vent_T2.set(new ItemStack(this, 1, 1));
+ ItemList.WoodenCasing.set(new ItemStack(this, 1, 2));
}
@Override
@@ -37,6 +39,8 @@ public class GT_Block_Casings9 extends GT_Block_Casings_Abstract {
return switch (aMeta) {
case 0 -> Textures.BlockIcons.MACHINE_CASING_PIPE_POLYBENZIMIDAZOLE.getIcon();
case 1 -> Textures.BlockIcons.MACHINE_CASING_VENT_T2.getIcon();
+ case 2 -> ordinalSide >= 2 ? Textures.BlockIcons.TEXTURE_METAL_PANEL_E.getIcon()
+ : Textures.BlockIcons.TEXTURE_METAL_PANEL_E_A.getIcon();
default -> Textures.BlockIcons.MACHINE_CASING_ROBUST_TUNGSTENSTEEL.getIcon();
};
}
diff --git a/src/main/java/gregtech/common/blocks/GT_Cyclotron_Coils.java b/src/main/java/gregtech/common/blocks/GT_Cyclotron_Coils.java
index 1a544f027f..75b3670895 100644
--- a/src/main/java/gregtech/common/blocks/GT_Cyclotron_Coils.java
+++ b/src/main/java/gregtech/common/blocks/GT_Cyclotron_Coils.java
@@ -40,7 +40,7 @@ public class GT_Cyclotron_Coils extends GT_Block_Casings_Abstract {
@Override // Magic numbers...
public int getTextureIndex(int aMeta) {
- return 192 + aMeta;
+ return 208 + aMeta;
}
@Override
diff --git a/src/main/java/gregtech/loaders/load/GT_Loader_MetaTileEntities_Recipes.java b/src/main/java/gregtech/loaders/load/GT_Loader_MetaTileEntities_Recipes.java
index 877a1aa6a6..a85a2d60c1 100644
--- a/src/main/java/gregtech/loaders/load/GT_Loader_MetaTileEntities_Recipes.java
+++ b/src/main/java/gregtech/loaders/load/GT_Loader_MetaTileEntities_Recipes.java
@@ -4941,6 +4941,16 @@ public class GT_Loader_MetaTileEntities_Recipes implements Runnable {
new Object[] { "PSP", "SFS", "PSP", 'P', OrePrefixes.plate.get(Materials.Bronze), 'F',
OrePrefixes.frameGt.get(Materials.Bronze), 'S', OrePrefixes.stick.get(Materials.Bronze) });
GT_ModHandler.addCraftingRecipe(
+ ItemList.WoodenCasing.get(1L),
+ bits,
+ new Object[] { "PSP", "PFP", "PSP", 'F', OrePrefixes.gear.get(Materials.Wood), 'P',
+ OrePrefixes.frameGt.get(Materials.Wood), 'S', OrePrefixes.screw.get(Materials.Wood) });
+ GT_ModHandler.addCraftingRecipe(
+ ItemList.Hatch_Output_ULV.get(1L),
+ bits,
+ new Object[] { " S ", " F ", " P ", 'S', GT_OreDictUnificator.get(OrePrefixes.cell, Materials.Empty, 1),
+ 'F', ItemList.Hull_ULV.get(1), 'P', ItemList.IC2_Resin.get(1) });
+ GT_ModHandler.addCraftingRecipe(
ItemList.Casing_Firebox_Steel.get(1L),
bits,
new Object[] { "PSP", "SFS", "PSP", 'P', OrePrefixes.plate.get(Materials.Steel), 'F',
diff --git a/src/main/java/gtPlusPlus/core/config/ConfigHandler.java b/src/main/java/gtPlusPlus/core/config/ConfigHandler.java
index 162d5b0f12..22bd775e6d 100644
--- a/src/main/java/gtPlusPlus/core/config/ConfigHandler.java
+++ b/src/main/java/gtPlusPlus/core/config/ConfigHandler.java
@@ -1,100 +1,7 @@
package gtPlusPlus.core.config;
import static gregtech.api.enums.Mods.GregTech;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.MACHINE_INFO;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.baseMaxPollutionPerSecondRocketFuelGenerator;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.baseMinPollutionPerSecondRocketFuelGenerator;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.basePollutionPerSecondBoiler;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.basePollutionPerSecondGeothermalGenerator;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.basePollutionPerSecondSemiFluidGenerator;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.boilerSteamPerSecond;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.disableIC2Recipes;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.dumpItemAndBlockData;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.enableAnimatedTextures;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.enableCustomCapes;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.enableCustom_Cables;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.enableCustom_Pipes;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.enableMachine_Dehydrators;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.enableMachine_FluidTanks;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.enableMachine_GeothermalEngines;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.enableMachine_Pollution;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.enableMachine_RocketEngines;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.enableMachine_SimpleWasher;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.enableMachine_SteamConverter;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.enableMachine_Tesseracts;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.enableMultiblock_AlloyBlastSmelter;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.enableMultiblock_Cyclotron;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.enableMultiblock_IndustrialCentrifuge;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.enableMultiblock_IndustrialCokeOven;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.enableMultiblock_IndustrialCuttingMachine;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.enableMultiblock_IndustrialElectrolyzer;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.enableMultiblock_IndustrialExtrudingMachine;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.enableMultiblock_IndustrialFishingPort;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.enableMultiblock_IndustrialMacerationStack;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.enableMultiblock_IndustrialMultiMachine;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.enableMultiblock_IndustrialPlatePress;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.enableMultiblock_IndustrialSifter;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.enableMultiblock_IndustrialThermalCentrifuge;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.enableMultiblock_IndustrialWashPlant;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.enableMultiblock_IndustrialWireMill;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.enableMultiblock_LargeAutoCrafter;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.enableMultiblock_LiquidFluorideThoriumReactor;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.enableMultiblock_MatterFabricator;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.enableMultiblock_MultiTank;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.enableMultiblock_NuclearFuelRefinery;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.enableMultiblock_NuclearSaltProcessingPlant;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.enableMultiblock_PowerSubstation;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.enableMultiblock_ThermalBoiler;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.enableThaumcraftShardUnification;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.enableWatchdogBGM;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.hideUniversalCells;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.pollutionPerSecondMultiABS;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.pollutionPerSecondMultiAdvDistillationTower_ModeDT;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.pollutionPerSecondMultiAdvDistillationTower_ModeDistillery;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.pollutionPerSecondMultiAdvEBF;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.pollutionPerSecondMultiAdvImplosion;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.pollutionPerSecondMultiAlgaePond;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.pollutionPerSecondMultiAutoCrafter;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.pollutionPerSecondMultiCyclotron;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.pollutionPerSecondMultiFrothFlotationCell;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.pollutionPerSecondMultiIndustrialAlloySmelter;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.pollutionPerSecondMultiIndustrialArcFurnace;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.pollutionPerSecondMultiIndustrialCentrifuge;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.pollutionPerSecondMultiIndustrialChisel;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.pollutionPerSecondMultiIndustrialCokeOven;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.pollutionPerSecondMultiIndustrialCuttingMachine;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.pollutionPerSecondMultiIndustrialDehydrator;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.pollutionPerSecondMultiIndustrialElectrolyzer;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.pollutionPerSecondMultiIndustrialExtruder;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.pollutionPerSecondMultiIndustrialFishingPond;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.pollutionPerSecondMultiIndustrialForgeHammer;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.pollutionPerSecondMultiIndustrialMacerator;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.pollutionPerSecondMultiIndustrialMixer;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.pollutionPerSecondMultiIndustrialMultiMachine_ModeFluid;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.pollutionPerSecondMultiIndustrialMultiMachine_ModeMetal;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.pollutionPerSecondMultiIndustrialMultiMachine_ModeMisc;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.pollutionPerSecondMultiIndustrialPlatePress_ModeBending;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.pollutionPerSecondMultiIndustrialPlatePress_ModeForming;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.pollutionPerSecondMultiIndustrialRockBreaker;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.pollutionPerSecondMultiIndustrialSifter;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.pollutionPerSecondMultiIndustrialThermalCentrifuge;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.pollutionPerSecondMultiIndustrialVacuumFreezer;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.pollutionPerSecondMultiIndustrialWashPlant_ModeChemBath;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.pollutionPerSecondMultiIndustrialWashPlant_ModeWasher;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.pollutionPerSecondMultiIndustrialWireMill;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.pollutionPerSecondMultiIsaMill;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.pollutionPerSecondMultiLargeSemiFluidGenerator;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.pollutionPerSecondMultiMassFabricator;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.pollutionPerSecondMultiMolecularTransformer;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.pollutionPerSecondMultiPackager;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.pollutionPerSecondMultiRefinery;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.pollutionPerSecondMultiThermalBoiler;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.pollutionPerSecondMultiTreeFarm;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.pollutionReleasedByTierBoiler;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.pollutionReleasedByTierGeothermalGenerator;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.pollutionReleasedByTierRocketFuelGenerator;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.pollutionReleasedByTierSemiFluidGenerator;
-import static gtPlusPlus.core.lib.CORE.ConfigSwitches.showHiddenNEIItems;
+import static gtPlusPlus.core.lib.CORE.ConfigSwitches.*;
import static gtPlusPlus.core.lib.CORE.EVERGLADESBIOME_ID;
import static gtPlusPlus.core.lib.CORE.EVERGLADES_ID;
import static gtPlusPlus.core.lib.CORE.turbineCutoffBase;
diff --git a/src/main/java/gtPlusPlus/core/handler/COMPAT_HANDLER.java b/src/main/java/gtPlusPlus/core/handler/COMPAT_HANDLER.java
index cf276d90a1..90373e2c4c 100644
--- a/src/main/java/gtPlusPlus/core/handler/COMPAT_HANDLER.java
+++ b/src/main/java/gtPlusPlus/core/handler/COMPAT_HANDLER.java
@@ -94,6 +94,7 @@ import gtPlusPlus.xmod.gregtech.registration.gregtech.GregtechThaumcraftDevices;
import gtPlusPlus.xmod.gregtech.registration.gregtech.GregtechThreadedBuffers;
import gtPlusPlus.xmod.gregtech.registration.gregtech.GregtechTieredFluidTanks;
import gtPlusPlus.xmod.gregtech.registration.gregtech.GregtechTreeFarmerTE;
+import gtPlusPlus.xmod.gregtech.registration.gregtech.GregtechWaterPump;
import gtPlusPlus.xmod.gregtech.registration.gregtech.GregtechWirelessChargers;
public class COMPAT_HANDLER {
@@ -132,6 +133,7 @@ public class COMPAT_HANDLER {
GregtechIndustrialMacerator.run();
GregtechIndustrialWiremill.run();
GregtechIndustrialMassFabricator.run();
+ GregtechWaterPump.run();
GregtechIndustrialBlastSmelter.run();
GregtechQuantumForceTransformer.run();
GregtechPowerSubStation.run();
diff --git a/src/main/java/gtPlusPlus/core/lib/CORE.java b/src/main/java/gtPlusPlus/core/lib/CORE.java
index 8dce46ee46..eb1143f74e 100644
--- a/src/main/java/gtPlusPlus/core/lib/CORE.java
+++ b/src/main/java/gtPlusPlus/core/lib/CORE.java
@@ -119,6 +119,7 @@ public class CORE {
public static boolean enableMultiblock_IndustrialCentrifuge = true;
public static boolean enableMultiblock_IndustrialCokeOven = true;
public static boolean enableMultiblock_IndustrialElectrolyzer = true;
+ public static boolean enableMultiblock_WaterPump = true;
public static boolean enableMultiblock_IndustrialMacerationStack = true;
public static boolean enableMultiblock_IndustrialPlatePress = true;
public static boolean enableMultiblock_IndustrialWireMill = true;
diff --git a/src/main/java/gtPlusPlus/core/recipe/RECIPES_Machines.java b/src/main/java/gtPlusPlus/core/recipe/RECIPES_Machines.java
index a0b2e22353..4a8b153251 100644
--- a/src/main/java/gtPlusPlus/core/recipe/RECIPES_Machines.java
+++ b/src/main/java/gtPlusPlus/core/recipe/RECIPES_Machines.java
@@ -845,6 +845,20 @@ public class RECIPES_Machines {
aBronzeBricks,
GregtechItemList.Controller_SteamWasherMulti.get(1));
+ ItemStack aWoodenCasing = ItemUtils.simpleMetaStack(GregTech_API.sBlockCasings9, 2, 1);
+ // WaterPump
+ RecipeUtils.addShapedGregtechRecipe(
+ "frameGtBronze",
+ "frameGtBronze",
+ "frameGtBronze",
+ "frameGtBronze",
+ "gearBronze",
+ "frameGtBronze",
+ aWoodenCasing,
+ aWoodenCasing,
+ aWoodenCasing,
+ GregtechItemList.WaterPump.get(1));
+
// Steam Centrifuge Multi
RecipeUtils.addShapedGregtechRecipe(
aBronzeBricks,
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/api/enums/GregtechItemList.java b/src/main/java/gtPlusPlus/xmod/gregtech/api/enums/GregtechItemList.java
index 71274e0091..caa2254373 100644
--- a/src/main/java/gtPlusPlus/xmod/gregtech/api/enums/GregtechItemList.java
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/api/enums/GregtechItemList.java
@@ -408,6 +408,9 @@ public enum GregtechItemList implements GregtechItemContainer {
Casing_Vacuum_Furnace,
Controller_Vacuum_Furnace,
+ // Water pump
+ WaterPump,
+
// Large Rocket Engine
Casing_RocketEngine,
Controller_RocketEngine,
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/steam/GregtechMetaTileEntity_SteamWaterPump.java b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/steam/GregtechMetaTileEntity_SteamWaterPump.java
new file mode 100644
index 0000000000..a32c0ea4cf
--- /dev/null
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/steam/GregtechMetaTileEntity_SteamWaterPump.java
@@ -0,0 +1,356 @@
+package gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.processing.steam;
+
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.ofBlock;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.ofChain;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.onElementPass;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.transpose;
+import static gregtech.api.enums.GT_HatchElement.OutputHatch;
+import static gregtech.api.enums.GT_Values.AuthorEvgenWarGold;
+import static gregtech.api.util.GT_StructureUtility.buildHatchAdder;
+import static gregtech.api.util.GT_StructureUtility.ofFrame;
+
+import java.util.List;
+
+import net.minecraft.entity.player.EntityPlayerMP;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.util.EnumChatFormatting;
+import net.minecraft.util.StatCollector;
+import net.minecraft.world.World;
+import net.minecraftforge.common.util.ForgeDirection;
+import net.minecraftforge.fluids.Fluid;
+import net.minecraftforge.fluids.FluidRegistry;
+import net.minecraftforge.fluids.FluidStack;
+
+import org.jetbrains.annotations.NotNull;
+
+import com.gtnewhorizon.structurelib.alignment.IAlignmentLimits;
+import com.gtnewhorizon.structurelib.alignment.constructable.ISurvivalConstructable;
+import com.gtnewhorizon.structurelib.structure.IStructureDefinition;
+import com.gtnewhorizon.structurelib.structure.ISurvivalBuildEnvironment;
+import com.gtnewhorizon.structurelib.structure.StructureDefinition;
+
+import gregtech.api.GregTech_API;
+import gregtech.api.enums.Materials;
+import gregtech.api.enums.Textures;
+import gregtech.api.interfaces.ITexture;
+import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
+import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
+import gregtech.api.objects.GT_RenderedTexture;
+import gregtech.api.recipe.check.CheckRecipeResult;
+import gregtech.api.recipe.check.CheckRecipeResultRegistry;
+import gregtech.api.util.GT_Multiblock_Tooltip_Builder;
+import gregtech.api.util.GT_Utility;
+import gregtech.api.util.VoidProtectionHelper;
+import gregtech.common.blocks.GT_Block_Casings9;
+import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.base.GregtechMeta_SteamMultiBase;
+import mcp.mobius.waila.api.IWailaConfigHandler;
+import mcp.mobius.waila.api.IWailaDataAccessor;
+
+public class GregtechMetaTileEntity_SteamWaterPump
+ extends GregtechMeta_SteamMultiBase<GregtechMetaTileEntity_SteamWaterPump> implements ISurvivalConstructable {
+
+ public GregtechMetaTileEntity_SteamWaterPump(String aName) {
+ super(aName);
+ }
+
+ public GregtechMetaTileEntity_SteamWaterPump(int aID, String aName, String aNameRegional) {
+ super(aID, aName, aNameRegional);
+ }
+
+ @Override
+ public IMetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) {
+ return new GregtechMetaTileEntity_SteamWaterPump(this.mName);
+ }
+
+ @Override
+ public String getMachineType() {
+ return "Water Pump";
+ }
+
+ private static IStructureDefinition<GregtechMetaTileEntity_SteamWaterPump> STRUCTURE_DEFINITION = null;
+
+ private static final int HORIZONTAL_OFF_SET = 1;
+ private static final int VERTICAL_OFF_SET = 2;
+ private static final int DEPTH_OFF_SET = 0;
+ private static final String tier1 = "tier1";
+ private static final String tier2 = "tier2";
+
+ // Base amount of water produced per second, before applying humidity and tier modifiers.
+ private static final int BASE_WATER_PER_SECOND = 1_500;
+ private static final int PROGRESSION_TIME_TICKS = 20;
+
+ private static final int BASE_STEAM_PER_SECOND = 400;
+
+ private int mSetTier = 1;
+
+ private float currentHumidity;
+
+ private static final Fluid water = FluidRegistry.getFluid("water");
+
+ private FluidStack[] getWater() {
+ return new FluidStack[] { new FluidStack(water, calculateFinalWaterOutput()) };
+ }
+
+ private int mCountCasing;
+
+ private float getHumidity() {
+ return this.getBaseMetaTileEntity()
+ .getWorld()
+ .getBiomeGenForCoords(getBaseMetaTileEntity().getXCoord(), getBaseMetaTileEntity().getZCoord()).rainfall;
+ }
+
+ private int calculateFinalWaterOutput() {
+ return (int) (currentHumidity * BASE_WATER_PER_SECOND * mSetTier);
+ }
+
+ // spotless:off
+ @Override
+ public IStructureDefinition<GregtechMetaTileEntity_SteamWaterPump> getStructureDefinition() {
+ if (STRUCTURE_DEFINITION == null) {
+
+ STRUCTURE_DEFINITION = StructureDefinition.<GregtechMetaTileEntity_SteamWaterPump>builder()
+
+ .addShape(
+ tier1,
+ transpose(
+ new String[][] {
+ { " A ", " A ", "AAA", " A " },
+ { " A ", " ", "A A", " A " },
+ { "C~C", "CCC", "CCC", "CCC" } }))
+ .addShape(
+ tier2,
+ transpose(
+ new String[][] {
+ { " D ", " D ", "DDD", " D " },
+ { " D ", " ", "D D", " D " },
+ { "C~C", "CCC", "CCC", "CCC" } }))
+ .addElement('A', ofFrame(Materials.Bronze))
+ .addElement('D', ofFrame(Materials.Steel))
+ .addElement(
+ 'C',
+ ofChain(
+ buildSteamInput(GregtechMetaTileEntity_SteamWaterPump.class)
+ .casingIndex(((GT_Block_Casings9) GregTech_API.sBlockCasings9).getTextureIndex(2))
+ .dot(1)
+ .build(),
+ buildHatchAdder(GregtechMetaTileEntity_SteamWaterPump.class)
+ .atLeast(OutputHatch)
+ .casingIndex(((GT_Block_Casings9) GregTech_API.sBlockCasings9).getTextureIndex(2))
+ .dot(1)
+ .buildAndChain(onElementPass(x -> ++x.mCountCasing, ofBlock(GregTech_API.sBlockCasings9, 2)))
+ )
+ )
+ .build();
+
+ }
+ return STRUCTURE_DEFINITION;
+ }
+ // spotless:on
+
+ @Override
+ public void construct(ItemStack stackSize, boolean hintsOnly) {
+ if (stackSize.stackSize == 1) {
+ this.buildPiece(tier1, stackSize, hintsOnly, HORIZONTAL_OFF_SET, VERTICAL_OFF_SET, DEPTH_OFF_SET);
+ } else {
+ this.buildPiece(tier2, stackSize, hintsOnly, HORIZONTAL_OFF_SET, VERTICAL_OFF_SET, DEPTH_OFF_SET);
+ }
+ }
+
+ @Override
+ public int survivalConstruct(ItemStack stackSize, int elementBudget, ISurvivalBuildEnvironment env) {
+ if (this.mMachine) return -1;
+ int built = 0;
+ if (stackSize.stackSize == 1) {
+ mSetTier = 1;
+ built += this.survivialBuildPiece(
+ tier1,
+ stackSize,
+ HORIZONTAL_OFF_SET,
+ VERTICAL_OFF_SET,
+ DEPTH_OFF_SET,
+ elementBudget,
+ env,
+ false,
+ true);
+ } else {
+ mSetTier = 2;
+ built += this.survivialBuildPiece(
+ tier2,
+ stackSize,
+ HORIZONTAL_OFF_SET,
+ VERTICAL_OFF_SET,
+ DEPTH_OFF_SET,
+ elementBudget,
+ env,
+ false,
+ true);
+ }
+ return built;
+ }
+
+ public boolean checkMachine(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) {
+ mCountCasing = 0;
+ mSetTier = 1;
+ if (!checkPiece(tier1, HORIZONTAL_OFF_SET, VERTICAL_OFF_SET, DEPTH_OFF_SET)) {
+ if (!checkPiece(tier2, HORIZONTAL_OFF_SET, VERTICAL_OFF_SET, DEPTH_OFF_SET)) return false;
+ mSetTier = 2;
+ }
+
+ if (this.mOutputHatches.size() != 1 || this.mSteamInputFluids.size() != 1) return false;
+
+ currentHumidity = getHumidity();
+ return mCountCasing >= 9;
+ }
+
+ @Override
+ public ITexture[] getTexture(final IGregTechTileEntity aBaseMetaTileEntity, final ForgeDirection side,
+ final ForgeDirection facing, final int aColorIndex, final boolean aActive, final boolean aRedstone) {
+ if (side == facing) {
+ return new ITexture[] {
+ Textures.BlockIcons
+ .getCasingTextureForId(GT_Utility.getCasingTextureIndex(GregTech_API.sBlockCasings9, 2)),
+ aActive ? getFrontOverlayActive() : getFrontOverlay() };
+ }
+ return new ITexture[] { Textures.BlockIcons
+ .getCasingTextureForId(GT_Utility.getCasingTextureIndex(GregTech_API.sBlockCasings9, 2)) };
+ }
+
+ @Override
+ protected GT_RenderedTexture getFrontOverlay() {
+ return new GT_RenderedTexture(Textures.BlockIcons.OVERLAY_FRONT_WATER_PUMP);
+ }
+
+ @Override
+ protected GT_RenderedTexture getFrontOverlayActive() {
+ return new GT_RenderedTexture(Textures.BlockIcons.OVERLAY_FRONT_WATER_PUMP_ACTIVE);
+ }
+
+ @Override
+ protected GT_Multiblock_Tooltip_Builder createTooltip() {
+ GT_Multiblock_Tooltip_Builder tt = new GT_Multiblock_Tooltip_Builder();
+ tt.addMachineType(getMachineType())
+ .addInfo("Controller Block for the Water Pump")
+ .addInfo("Generates water based on biome humidity")
+ .addInfo("Has 2 tiers: Bronze and Steel")
+ .addInfo("Steel tier extracts 2x water")
+ .addInfo(
+ EnumChatFormatting.AQUA + "Generates: "
+ + EnumChatFormatting.WHITE
+ + " humidity * Tier * "
+ + BASE_WATER_PER_SECOND
+ + " L/s"
+ + EnumChatFormatting.AQUA
+ + " of water."
+ + EnumChatFormatting.RESET)
+ .addInfo(
+ EnumChatFormatting.RED + "Consumes: "
+ + EnumChatFormatting.WHITE
+ + BASE_STEAM_PER_SECOND
+ + " L/s"
+ + EnumChatFormatting.RED
+ + " of steam."
+ + EnumChatFormatting.RESET)
+ .addSeparator()
+ .beginStructureBlock(3, 3, 5, false)
+ .addInputHatch(EnumChatFormatting.GOLD + "1" + EnumChatFormatting.GRAY + " Any casing", 1)
+ .addStructureInfo(
+ EnumChatFormatting.WHITE + "Steam Input Hatch "
+ + EnumChatFormatting.GOLD
+ + "1"
+ + EnumChatFormatting.GRAY
+ + " Any casing")
+ .addStructureInfo(EnumChatFormatting.BLUE + "Tier " + EnumChatFormatting.DARK_PURPLE + 1)
+ .addStructureInfo(EnumChatFormatting.GOLD + "10" + EnumChatFormatting.GRAY + " Bronze Frame Box")
+ .addStructureInfo(EnumChatFormatting.GOLD + "10" + EnumChatFormatting.GRAY + " Wooden Casing")
+ .addStructureInfo(EnumChatFormatting.BLUE + "Tier " + EnumChatFormatting.DARK_PURPLE + 2)
+ .addStructureInfo(EnumChatFormatting.GOLD + "10" + EnumChatFormatting.GRAY + " Steel Frame Box")
+ .addStructureInfo(EnumChatFormatting.GOLD + "10 " + EnumChatFormatting.GRAY + " Wooden Casing")
+ .toolTipFinisher(AuthorEvgenWarGold);
+ return tt;
+ }
+
+ @Override
+ @NotNull
+ public CheckRecipeResult checkProcessing() {
+
+ VoidProtectionHelper voidProtection = new VoidProtectionHelper().setMachine(this)
+ .setFluidOutputs(getWater())
+ .build();
+
+ if (voidProtection.isFluidFull()) {
+ mOutputFluids = null;
+ mMaxProgresstime = 0;
+ return CheckRecipeResultRegistry.FLUID_OUTPUT_FULL;
+ } else {
+ if (getTotalSteamStored() >= BASE_STEAM_PER_SECOND) {
+ mMaxProgresstime = PROGRESSION_TIME_TICKS;
+ tryConsumeSteam(BASE_STEAM_PER_SECOND);
+ mOutputFluids = getWater();
+ updateSlots();
+ return CheckRecipeResultRegistry.SUCCESSFUL;
+ } else return CheckRecipeResultRegistry.NO_RECIPE;
+ }
+ }
+
+ @Override
+ public void onPostTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) {
+ super.onPostTick(aBaseMetaTileEntity, aTick);
+ if (aBaseMetaTileEntity.isServerSide()) {
+ if ((aTick % 1200) == 0) {
+ currentHumidity = getHumidity();
+ }
+ }
+ }
+
+ @Override
+ public void getWailaBody(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor,
+ IWailaConfigHandler config) {
+ super.getWailaBody(itemStack, currenttip, accessor, config);
+ NBTTagCompound tag = accessor.getNBTData();
+
+ currenttip.add(
+ StatCollector.translateToLocal("GT5U.machines.tier") + ": "
+ + EnumChatFormatting.BLUE
+ + tag.getInteger("mSetTier")
+ + EnumChatFormatting.RESET);
+ currenttip.add(
+ StatCollector.translateToLocal("GT5U.biomes.humidity") + " "
+ + EnumChatFormatting.BLUE
+ + tag.getFloat("humidity")
+ + " %"
+ + EnumChatFormatting.RESET);
+ }
+
+ @Override
+ public void getWailaNBTData(EntityPlayerMP player, TileEntity tile, NBTTagCompound tag, World world, int x, int y,
+ int z) {
+ super.getWailaNBTData(player, tile, tag, world, x, y, z);
+ tag.setFloat("humidity", currentHumidity * 100);
+ tag.setInteger("mSetTier", mSetTier);
+ }
+
+ @Override
+ public void saveNBTData(NBTTagCompound aNBT) {
+ super.saveNBTData(aNBT);
+ aNBT.setInteger("mSetTier", mSetTier);
+ }
+
+ @Override
+ public void loadNBTData(final NBTTagCompound aNBT) {
+ super.loadNBTData(aNBT);
+ mSetTier = aNBT.getInteger("mSetTier");
+ }
+
+ @Override
+ public int getMaxParallelRecipes() {
+ return 1;
+ }
+
+ @Override
+ protected IAlignmentLimits getInitialAlignmentLimits() {
+ return (d, r, f) -> d.offsetY == 0 && r.isNotRotated() && !f.isVerticallyFliped();
+ }
+
+}
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechWaterPump.java b/src/main/java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechWaterPump.java
new file mode 100644
index 0000000000..476e13bd15
--- /dev/null
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechWaterPump.java
@@ -0,0 +1,14 @@
+package gtPlusPlus.xmod.gregtech.registration.gregtech;
+
+import gtPlusPlus.xmod.gregtech.api.enums.GregtechItemList;
+import gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.processing.steam.GregtechMetaTileEntity_SteamWaterPump;
+
+public class GregtechWaterPump {
+
+ public static void run() {
+ // Water Pump Multiblock
+ GregtechItemList.WaterPump.set(
+ new GregtechMetaTileEntity_SteamWaterPump(31085, "waterpump.controller.tier.single", "Water Pump")
+ .getStackForm(1L));
+ }
+}
diff --git a/src/main/resources/assets/gregtech/lang/en_US.lang b/src/main/resources/assets/gregtech/lang/en_US.lang
index 1136c50915..e529750871 100644
--- a/src/main/resources/assets/gregtech/lang/en_US.lang
+++ b/src/main/resources/assets/gregtech/lang/en_US.lang
@@ -649,6 +649,8 @@ GT5U.interface.coverTabs.east=East
GT5U.steam_variant.bronze=Bronze
GT5U.steam_variant.steel=Steel
+GT5U.biomes.humidity=Humidity:
+
# NEI options
nei.options.tools.dump.gt5u=GT5u
nei.options.tools.dump.gt5u.metatileentity=MetaTileEntity
diff --git a/src/main/resources/assets/gregtech/textures/blocks/iconsets/OVERLAY_FRONT_WATER_PUMP.png b/src/main/resources/assets/gregtech/textures/blocks/iconsets/OVERLAY_FRONT_WATER_PUMP.png
new file mode 100644
index 0000000000..75662c10e9
--- /dev/null
+++ b/src/main/resources/assets/gregtech/textures/blocks/iconsets/OVERLAY_FRONT_WATER_PUMP.png
Binary files differ
diff --git a/src/main/resources/assets/gregtech/textures/blocks/iconsets/OVERLAY_FRONT_WATER_PUMP_ACTIVE.png b/src/main/resources/assets/gregtech/textures/blocks/iconsets/OVERLAY_FRONT_WATER_PUMP_ACTIVE.png
new file mode 100644
index 0000000000..a045862756
--- /dev/null
+++ b/src/main/resources/assets/gregtech/textures/blocks/iconsets/OVERLAY_FRONT_WATER_PUMP_ACTIVE.png
Binary files differ
diff --git a/src/main/resources/assets/gregtech/textures/blocks/iconsets/TEXTURE_METAL_PANEL_E.png b/src/main/resources/assets/gregtech/textures/blocks/iconsets/TEXTURE_METAL_PANEL_E.png
new file mode 100644
index 0000000000..c6dd3ca33f
--- /dev/null
+++ b/src/main/resources/assets/gregtech/textures/blocks/iconsets/TEXTURE_METAL_PANEL_E.png
Binary files differ
diff --git a/src/main/resources/assets/gregtech/textures/blocks/iconsets/TEXTURE_METAL_PANEL_E_A.png b/src/main/resources/assets/gregtech/textures/blocks/iconsets/TEXTURE_METAL_PANEL_E_A.png
new file mode 100644
index 0000000000..098f970848
--- /dev/null
+++ b/src/main/resources/assets/gregtech/textures/blocks/iconsets/TEXTURE_METAL_PANEL_E_A.png
Binary files differ
diff --git a/src/main/resources/assets/miscutils/textures/blocks/metro/TEXTURE_METAL_PANEL_E.png b/src/main/resources/assets/miscutils/textures/blocks/metro/TEXTURE_METAL_PANEL_E.png
new file mode 100644
index 0000000000..c6dd3ca33f
--- /dev/null
+++ b/src/main/resources/assets/miscutils/textures/blocks/metro/TEXTURE_METAL_PANEL_E.png
Binary files differ
diff --git a/src/main/resources/assets/miscutils/textures/blocks/metro/TEXTURE_METAL_PANEL_E_A.png b/src/main/resources/assets/miscutils/textures/blocks/metro/TEXTURE_METAL_PANEL_E_A.png
new file mode 100644
index 0000000000..098f970848
--- /dev/null
+++ b/src/main/resources/assets/miscutils/textures/blocks/metro/TEXTURE_METAL_PANEL_E_A.png
Binary files differ