diff --git a/dependencies.gradle b/dependencies.gradle index a5abe7541e7..fdaf9556279 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -64,6 +64,9 @@ dependencies { compileOnly("TGregworks:TGregworks:1.7.10-GTNH-1.0.26:deobf") {transitive = false} compileOnly("com.github.GTNewHorizons:ThaumicBases:1.7.4:dev") { transitive = false } compileOnly("com.github.GTNewHorizons:EnderCore:0.4.6:dev") { transitive = false } + implementation("com.github.GTNewHorizons:Galacticraft:3.1.5-GTNH:dev") { transitive = false } + implementation("com.github.GTNewHorizons:TinkersConstruct:1.12.4-GTNH:dev") + compileOnly("com.github.GTNewHorizons:Chisel:2.15.0-GTNH:dev") { transitive = false } implementation("com.github.GTNewHorizons:Galacticraft:3.1.7-GTNH:dev") { transitive = false } implementation("com.github.GTNewHorizons:TinkersConstruct:1.12.5-GTNH:dev") compileOnly("com.github.GTNewHorizons:Chisel:2.15.1-GTNH:dev") { transitive = false } diff --git a/src/main/java/gregtech/api/enums/GT_Values.java b/src/main/java/gregtech/api/enums/GT_Values.java index 37caa7fc382..4d7f3806568 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 static final class NBT { + 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 d5ee302d6ac..2d2b0668251 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 9896eaedbaa..bb216fd012a 100644 --- a/src/main/java/gregtech/api/enums/Textures.java +++ b/src/main/java/gregtech/api/enums/Textures.java @@ -264,6 +264,9 @@ public enum BlockIcons implements IIconContainer, Runnable { 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 enum BlockIcons implements IIconContainer, Runnable { 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_FORGE_HAMMER, diff --git a/src/main/java/gregtech/api/recipe/check/CheckRecipeResultRegistry.java b/src/main/java/gregtech/api/recipe/check/CheckRecipeResultRegistry.java index e141c39a670..7112b478860 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 static boolean isRegistered(String id) { 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 bc6aca6255c..4441885f30a 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 @@ 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 IIcon getIcon(int ordinalSide, int aMeta) { 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 1a544f027f6..75b3670895b 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 GT_Cyclotron_Coils() { @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 877a1aa6a69..a85a2d60c12 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 @@ -4940,6 +4940,16 @@ private static void registerShapedCraftingRecipes() { bits, 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, diff --git a/src/main/java/gtPlusPlus/core/config/ConfigHandler.java b/src/main/java/gtPlusPlus/core/config/ConfigHandler.java index 162d5b0f12a..22bd775e6de 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 cf276d90a12..90373e2c4c2 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.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 static void registerGregtechMachines() { 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 8dce46ee466..eb1143f74e3 100644 --- a/src/main/java/gtPlusPlus/core/lib/CORE.java +++ b/src/main/java/gtPlusPlus/core/lib/CORE.java @@ -119,6 +119,7 @@ public static class ConfigSwitches { 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 a0b2e223535..4a8b1532510 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 @@ private static void runModRecipes() { 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 13d91bc3559..07a9b8137ca 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 00000000000..a32c0ea4cf6 --- /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 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 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 getStructureDefinition() { + if (STRUCTURE_DEFINITION == null) { + + STRUCTURE_DEFINITION = StructureDefinition.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 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 00000000000..476e13bd157 --- /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 1136c509153..e529750871b 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 00000000000..75662c10e94 Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/iconsets/OVERLAY_FRONT_WATER_PUMP.png 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 00000000000..a045862756d Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/iconsets/OVERLAY_FRONT_WATER_PUMP_ACTIVE.png 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 00000000000..c6dd3ca33f7 Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/iconsets/TEXTURE_METAL_PANEL_E.png 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 00000000000..098f970848c Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/iconsets/TEXTURE_METAL_PANEL_E_A.png 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 00000000000..c6dd3ca33f7 Binary files /dev/null and b/src/main/resources/assets/miscutils/textures/blocks/metro/TEXTURE_METAL_PANEL_E.png 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 00000000000..098f970848c Binary files /dev/null and b/src/main/resources/assets/miscutils/textures/blocks/metro/TEXTURE_METAL_PANEL_E_A.png differ