aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/api
diff options
context:
space:
mode:
authorNotAPenguin <michiel.vandeginste@gmail.com>2024-08-03 23:21:44 +0200
committerGitHub <noreply@github.com>2024-08-03 23:21:44 +0200
commitb65ace37de4f585b8089ad413ee877b792da11ca (patch)
tree2e0445785c5008df15151f729da148fb70dbc21d /src/main/java/gregtech/api
parente180e49fc6305f71b1f1b18141b946f794a7012b (diff)
downloadGT5-Unofficial-b65ace37de4f585b8089ad413ee877b792da11ca.tar.gz
GT5-Unofficial-b65ace37de4f585b8089ad413ee877b792da11ca.tar.bz2
GT5-Unofficial-b65ace37de4f585b8089ad413ee877b792da11ca.zip
Waterline rework (#2577)
* Add barebones PurificationPlant class * Make simple 3x3 structure to form purification plant * Add base purification unit class and dummy sifter unit MTE * Make sifter unit form * Fix accidental wildcard import * Implement basic linking of units to controller using data stick * Make linking more robust, save bidirectional links, add scanner output * add linking range, error message and unregister old controller when re-linking * Add link status of purification units to waila body * Disable maintenance issues on purification plant units * spotless * Check structure of linked purification units in main controller * Remove all star imports * Small refactor to avoid updating status from main controller * spotless * Attempt to document current code * Convert some comments to javadoc * Implement basic processing cycle, sync it with linked purification units * Make water purification plant drain power * Calculate power drain from active units and remove controller power drain * spotless * Add very barebones recipemap * Fix recipemap name in lang file * spotless * Fix purification unit recipemap name * spotless * more sane amount of max fluid outputs * add some item outputs to sifter unit * Very simple recipe processing, may be buggy * spotless * Implement recipe failure * Implement void protection for purification units * spotless * buff item output odds slightly * Add WIP grade 1 structure * spotless * Store base success chance in recipe metadata and display it in NEI * Fill sifter plant with water * Add comment * Allow construction sifter unit in survival * Implement water boost * Fix water boost allowing output chance to go over 100% * Implement failed recipes outputting lower tier water * Fix typo * Fix deformed purification unit still drawing power * Slightly refactor recipe check so base class can read result * Create empty ModularUI container for purification plant * The great gui struggle part 1 * More gui struggles, we have a button now * Adjust button text and size * gui wars: the rise of the sync * gui wars: a new hope * fix the sync * is pengu old enough to know exceeder? * Fix being able to link the same unit multiple times * Sync status string to client * Sign sifter with my name * Show status somewhat properly * Adjust sifter base chance and structure * Fully implement sifter unit * More tooltip refactoring * Add structure info to sifter tooltip. * nitpicking tooltips * Adding sound to Purification Plant Main Unit. * fix star imports * Add basic coagulator unit, add recipemap for it * Write coagulator tooltip * comma nitpicking * more tooltip work * small refactor to purification plant controller * start work on custom recipemap frontend * Fully implement coagulator * Update structure requirements in tooltips * Move controller text in structure tooltips to be consistent * fix NPE on world load * Add base ph adjustment unit MTE * Add info to main controller and energy hatch check * Fixing tooltip of Main Controller & Energy/Exotic Hatch check. * Create full pH adjustment structure * disallow any voiding on purification unit * Small custom RecipeMap frontend for ph adjustment * Generate random initial pH value * Implement inserting NaOH and HCl to adjust pH * Add easter egg * Implement pH sensor hatch * Properly consume HCl and round pH value to 2 digits * Write ph adjustment unit tooltip * Tooltip nitpicking * Try to fix some structurelib hints * More trying to fix hints * Add industrial strength concrete casing block * Add water loop sound to the game * Document random initial pH in tooltip * Add glass material base * Fix spotless formatting in Textures docs because I cannot take it anymore * Add glass texture * Try adding transparent glass * Transparent glass working * Create pH resistant glass and update pH structure to use it * Create full structure for main purification plant * Create custom water purification casing block * Properly balance ferrous wastewater reprocessing and reduce input by a factor 10 * Add pH factor to NEI tooltip and fix coagulator structure * Structure tooltip for Purification Plant base * Add GT_Block_Glass2 and properly set maxMeta * Add Tinted Industrial Glass blocks * Fix BlockCasing9 not showing custom tooltip * Register tinted glass as EV glass * Add sterile water plant casing and revert tooltip change * Mention required water in sifter tooltip * Add more textures and casings * Add more textures, sounds and add structure info for pH adjustment * Rename sifter unit to clarifier * Rename coagulation unit to flocculation unit * Add activated carbon line * Fix unintended activated carbon recipe * Add activated carbon filter * Add polyaluminium chloride + solution * Add new custom textures by @BlueHero233 * Wip recipe page with new background for flocculation * Fix flocculation background image mostly * Finally aligned the slots * angery mumbles * Finish flocculation recipe page * All the recipe pages! * Add new reworked textures * Fix ph adjustment being t3 instead of t4 * Fix invisible casing * apply chembalance to polyaluminium chloride properly * Fix ferrous wastewater -> flocculation waste liquid * Move flocculation to grade 3 * create ozonation unit with placeholder blocks * add new blocks for ozonation with placeholder textures * Add water to ozonation structure * Create ozone gas material * Add ozone recipe * Add textures for ozone unit * Add sound loop for ozonation * fix * implement ozonation mechanics * Finalize ozonation tooltip * Create dummy plasma heater multi * Update textures for plasma heater * Add grade 5 recipemap * Add hatches to plasma heater multi * Add basic plasma heating unit variables * Implement plasma heating unit mechanics * Add plasma heater tooltip * Add structure info to plasma heater tooltip * fix ozonation tooltip, add frontend * Fix positioning on ozonation tooltip and fix plasma heater crash * Add UV treatment MTE and structure without textures * Revert accidental addition of debug dependencies * Add initial version of uv unit textures * update naquadria casing, add water color gradient * Some minor cleanup and added docs * Create lens housing bus * Add lens bus to UV treatment unit * Add lens indicator hatch * Merge GT_MetaGeneratedItem_03.java * Add lens indicator hatch * Add the lens cycle, uv treatment recipe map and fix eut of flocculation recipe * Implement lens swapping mechanic * Clean up first lens swap * Fix uv recipemap lang and move lens cycle to recipe * Write uv treatment tooltip * Add sounds for uv and plasma steps * Create empty degasifier class * Create temporary debug structure for degasifier * set temp casing index for degasifier * create degasifier control hatch * create slightly less temporary but still temporary structure for degasifier * Start impl of degasifier * fix fluid consumption and nbt loading of degasifier * Degasifier implementation should work now * Rename and reformat some things and start work on degasser tooltiop * give last bit much lower chance of being on to avoid cheesing * Finish degasifier tooltip * Integrate some deleno lore * hopefully fix all moved casing meta ids after merge * Create finalized degasser structure * Integrate more deleno lore * Add even more lore * Create placeholder particle catalysts and fetch particle items from gt++ * Fix wrong casing and recipemap localization * Create parallel config menu * refactor purification recipecheck slightly * implement parallel amount on water i/o and power * add tooltip info about parallel config * fix text * update block names in structure tooltips * create structure tooltip for degasser * create textureless quark catalyst items * add the purple glass * fix lore typos * fix some casing indices * remove concrete floor from water plant and reword tooltip * fix main plant structure and add placeholder structure for t8 step * fix structurecheck for main plant and add random catalyst generation for t8 * implement basic mechanics for particle extractor (wip) * Create plasma heater frontend * implement final mechanics and bugfixes for particle extractor * add recipes for re-aligning quark catalysts * add simple recipes for catalyst alignment * initial replacement of purified water in engraver recipes * add purified water to all wafer cutting recipes * fix purified water amounts * buff quark cyclotron recipe again * extract t8 unit casings into their own icons * Write initial tooltip for t8 module * add purified water to mask recipes * Add recipe comparator to show low tier purified water recipes first * add min casing check to waterline multis * buff ozone production * update t8 structure * make purified water optional again for naq wafers * Fix blockrenderer for purification plant * fix nei previews * fix nei * really fix nei this time * add t8 lore * fix hatch recipe locking blocking automation on some steps * try to solve weirdness with grade 3 recipe * fix issues with recipecheck * fix missing null check * make ph sensor use a strict inequality check * fix min casings on t5 * significantly nerf purified water usage for beamline masks * disable void protection for waterline * small adjustments to t6 unit * more small adjustments to t6 unit to prevent easy automation cheese * fix degasser redstone output and missing return statement * remove water QFT catalyst recipes --------- Co-authored-by: Tianyou Mei <meitianyou94@gmail.com> Co-authored-by: OlliedeLeeuw <ollie.riemersma@xs4all.nl> Co-authored-by: Ollie_de_Leeuw <154506304+OlliedeLeeuw@users.noreply.github.com> Co-authored-by: Martin Robertz <dream-master@gmx.net>
Diffstat (limited to 'src/main/java/gregtech/api')
-rw-r--r--src/main/java/gregtech/api/GregTech_API.java2
-rw-r--r--src/main/java/gregtech/api/enums/GT_Values.java7
-rw-r--r--src/main/java/gregtech/api/enums/ItemList.java47
-rw-r--r--src/main/java/gregtech/api/enums/Materials.java68
-rw-r--r--src/main/java/gregtech/api/enums/MetaTileEntityIDs.java13
-rw-r--r--src/main/java/gregtech/api/enums/SoundResource.java6
-rw-r--r--src/main/java/gregtech/api/enums/Textures.java26
-rw-r--r--src/main/java/gregtech/api/gui/modularui/GT_UITextures.java11
-rw-r--r--src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_InputBus.java17
-rw-r--r--src/main/java/gregtech/api/recipe/RecipeMaps.java95
-rw-r--r--src/main/java/gregtech/api/recipe/maps/PurificationUnitClarifierFrontend.java72
-rw-r--r--src/main/java/gregtech/api/recipe/maps/PurificationUnitFlocculatorFrontend.java99
-rw-r--r--src/main/java/gregtech/api/recipe/maps/PurificationUnitOzonationFrontend.java51
-rw-r--r--src/main/java/gregtech/api/recipe/maps/PurificationUnitPhAdjustmentFrontend.java79
-rw-r--r--src/main/java/gregtech/api/recipe/maps/PurificationUnitPlasmaHeaterFrontend.java59
-rw-r--r--src/main/java/gregtech/api/recipe/maps/PurificationUnitRecipeMapFrontend.java124
-rw-r--r--src/main/java/gregtech/api/recipe/metadata/PurificationPlantBaseChanceKey.java28
-rw-r--r--src/main/java/gregtech/api/util/GT_RecipeConstants.java154
18 files changed, 941 insertions, 17 deletions
diff --git a/src/main/java/gregtech/api/GregTech_API.java b/src/main/java/gregtech/api/GregTech_API.java
index f252a12965..e82c5952ee 100644
--- a/src/main/java/gregtech/api/GregTech_API.java
+++ b/src/main/java/gregtech/api/GregTech_API.java
@@ -297,6 +297,8 @@ public class GregTech_API {
sBlockCasings8, sBlockCasings9, sBlockCasings10, sBlockCasings11, sSolenoidCoilCasings;
public static Block sBlockLongDistancePipes;
public static Block sDroneRender;
+ public static Block sBlockGlass1;
+ public static Block sBlockTintedGlass;
public static Block sLaserRender;
/**
* Getting assigned by the Config
diff --git a/src/main/java/gregtech/api/enums/GT_Values.java b/src/main/java/gregtech/api/enums/GT_Values.java
index 74c392ce67..b0e48a46bb 100644
--- a/src/main/java/gregtech/api/enums/GT_Values.java
+++ b/src/main/java/gregtech/api/enums/GT_Values.java
@@ -678,6 +678,13 @@ public class GT_Values {
+ "Gold";
public static final String AuthorVolence = "Author: " + EnumChatFormatting.AQUA + "Volence";
+ public static final String AuthorNotAPenguin = "Author: " + EnumChatFormatting.WHITE
+ + EnumChatFormatting.BOLD
+ + "Not"
+ + EnumChatFormatting.AQUA
+ + EnumChatFormatting.BOLD
+ + "APenguin";
+
// 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 d1c30a0935..1f5d223a6b 100644
--- a/src/main/java/gregtech/api/enums/ItemList.java
+++ b/src/main/java/gregtech/api/enums/ItemList.java
@@ -1152,7 +1152,16 @@ public enum ItemList implements IItemContainer {
Machine_Multi_ImplosionCompressor,
Machine_Multi_VacuumFreezer,
Machine_Multi_Furnace,
-
+ Machine_Multi_PurificationPlant,
+ Machine_Multi_PurificationUnitClarifier,
+ Machine_Multi_PurificationUnitFlocculator,
+ Machine_Multi_PurificationUnitPhAdjustment,
+ Machine_Multi_PurificationUnitOzonation,
+ Machine_Multi_PurificationUnitPlasmaHeater,
+ Machine_Multi_PurificationUnitUVTreatment,
+ Machine_Multi_PurificationUnitDegasifier,
+ Machine_Multi_PurificationUnitParticleExtractor,
+ Hatch_DegasifierControl,
Machine_LV_AlloySmelter,
Machine_MV_AlloySmelter,
Machine_HV_AlloySmelter,
@@ -2031,7 +2040,41 @@ public enum ItemList implements IItemContainer {
TierdDrone1,
TierdDrone2,
Hatch_DroneDownLink,
- Casing_Shielded_Accelerator;
+ Hatch_pHSensor,
+ Hatch_LensHousing,
+ Hatch_LensIndicator,
+ ActivatedCarbonFilterMesh,
+ BlockIndustrialStrengthConcrete,
+ GlassPHResistant,
+ GlassTintedIndustrialWhite,
+ GlassTintedIndustrialLightGray,
+ GlassTintedIndustrialGray,
+ GlassTintedIndustrialBlack,
+ BlockIndustrialWaterPlantCasing,
+ BlockSterileWaterPlantCasing,
+ BlockFlocculationCasing,
+ BlockNaquadahReinforcedWaterPlantCasing,
+ BlockExtremeCorrosionResistantCasing,
+ BlockHighPressureResistantCasing,
+ BlockOzoneCasing,
+ BlockPlasmaHeatingCasing,
+ BlockNaquadriaReinforcedWaterPlantCasing,
+ GlassUVResistant,
+ BlockUltraVioletLaserEmitter,
+ Quark_Catalyst_Housing,
+ Quark_Creation_Catalyst_Up,
+ Quark_Creation_Catalyst_Down,
+ Quark_Creation_Catalyst_Strange,
+ Quark_Creation_Catalyst_Charm,
+ Quark_Creation_Catalyst_Bottom,
+ Quark_Creation_Catalyst_Top,
+ Quark_Creation_Catalyst_Unaligned,
+ Casing_Shielded_Accelerator,
+ GlassOmniPurposeInfinityFused,
+ GlassQuarkContainment,
+ BlockQuarkPipe,
+ BlockQuarkReleaseChamber,
+ BlockQuarkContainmentCasing;
public static final ItemList[] DYE_ONLY_ITEMS = { Color_00, Color_01, Color_02, Color_03, Color_04, Color_05,
Color_06, Color_07, Color_08, Color_09, Color_10, Color_11, Color_12, Color_13, Color_14, Color_15 },
diff --git a/src/main/java/gregtech/api/enums/Materials.java b/src/main/java/gregtech/api/enums/Materials.java
index f8f6f4636e..2435e1aad7 100644
--- a/src/main/java/gregtech/api/enums/Materials.java
+++ b/src/main/java/gregtech/api/enums/Materials.java
@@ -150,14 +150,15 @@ public class Materials implements IColorModulationContainer, ISubTagContainer {
public static Materials Ytterbium = new Materials( 77, TextureSet.SET_SHINY , 1.0F, 0, 2, 1|2 |8 |32 , 44, 199, 80, 0, "Ytterbium" , "Ytterbium" , 0, 0, 1097, 1097, true, false, 4, 1, 1, Dyes._NULL , Element.Yb , Arrays.asList(new TC_AspectStack(TC_Aspects.METALLUM, 2), new TC_AspectStack(TC_Aspects.RADIO, 1)));
public static Materials Yttrium = new Materials( 45, TextureSet.SET_METALLIC , 1.0F, 0, 2, 1|2 |8 |32 , 220, 250, 220, 0, "Yttrium" , "Yttrium" , 0, 0, 1799, 1799, true, false, 4, 1, 1, Dyes._NULL , Element.Y , Arrays.asList(new TC_AspectStack(TC_Aspects.METALLUM, 2), new TC_AspectStack(TC_Aspects.RADIO, 1)));
public static Materials Zinc = new Materials( 36, TextureSet.SET_METALLIC , 1.0F, 0, 1, 1|2 |8 |32 , 250, 240, 240, 0, "Zinc" , "Zinc" , 0, 0, 692, 0, false, false, 2, 1, 1, Dyes.dyeWhite , Element.Zn , Arrays.asList(new TC_AspectStack(TC_Aspects.METALLUM, 2), new TC_AspectStack(TC_Aspects.SANO, 1)));
- public static Materials Grade1PurifiedWater = new Materials( 554, TextureSet.SET_FLUID , 1.0F, 0, 2, 16 , 0, 0, 255, 0, "Grade1PurifiedWater" , "Grade 1 Purified Water" , 0, 0, 273, 0, false, true, 2, 1, 1, Dyes.dyeBlue , Collections.singletonList(new TC_AspectStack(TC_Aspects.AQUA, 1))).setHasCorrespondingFluid(true);
- public static Materials Grade2PurifiedWater = new Materials( 555, TextureSet.SET_FLUID , 1.0F, 0, 2, 16 , 0, 0, 250, 0, "Grade2PurifiedWater" , "Grade 2 Purified Water" , 0, 0, 273, 0, false, true, 2, 1, 1, Dyes.dyeBlue , Collections.singletonList(new TC_AspectStack(TC_Aspects.AQUA, 1))).setHasCorrespondingFluid(true);
- public static Materials Grade3PurifiedWater = new Materials( 556, TextureSet.SET_FLUID , 1.0F, 0, 2, 16 , 0, 0, 245, 0, "Grade3PurifiedWater" , "Grade 3 Purified Water" , 0, 0, 273, 0, false, true, 2, 1, 1, Dyes.dyeBlue , Collections.singletonList(new TC_AspectStack(TC_Aspects.AQUA, 1))).setHasCorrespondingFluid(true);
- public static Materials Grade4PurifiedWater = new Materials( 557, TextureSet.SET_FLUID , 1.0F, 0, 2, 16 , 0, 0, 240, 0, "Grade4PurifiedWater" , "Grade 4 Purified Water" , 0, 0, 273, 0, false, true, 2, 1, 1, Dyes.dyeBlue , Collections.singletonList(new TC_AspectStack(TC_Aspects.AQUA, 1))).setHasCorrespondingFluid(true);
- public static Materials Grade5PurifiedWater = new Materials( 558, TextureSet.SET_FLUID , 1.0F, 0, 2, 16 , 0, 0, 235, 0, "Grade5PurifiedWater" , "Grade 5 Purified Water" , 0, 0, 273, 0, false, true, 2, 1, 1, Dyes.dyeBlue , Collections.singletonList(new TC_AspectStack(TC_Aspects.AQUA, 1))).setHasCorrespondingFluid(true);
- public static Materials Grade6PurifiedWater = new Materials( 559, TextureSet.SET_FLUID , 1.0F, 0, 2, 16 , 0, 0, 230, 0, "Grade6PurifiedWater" , "Grade 6 Purified Water" , 0, 0, 273, 0, false, true, 2, 1, 1, Dyes.dyeBlue , Collections.singletonList(new TC_AspectStack(TC_Aspects.AQUA, 1))).setHasCorrespondingFluid(true);
- public static Materials Grade7PurifiedWater = new Materials( 560, TextureSet.SET_FLUID , 1.0F, 0, 2, 16 , 0, 0, 225, 0, "Grade7PurifiedWater" , "Grade 7 Purified Water" , 0, 0, 273, 0, false, true, 2, 1, 1, Dyes.dyeBlue , Collections.singletonList(new TC_AspectStack(TC_Aspects.AQUA, 1))).setHasCorrespondingFluid(true);
- public static Materials Grade8PurifiedWater = new Materials( 561, TextureSet.SET_FLUID , 1.0F, 0, 2, 16 , 0, 0, 220, 0, "Grade8PurifiedWater" , "Grade 8 Purified Water" , 0, 0, 273, 0, false, true, 2, 1, 1, Dyes.dyeBlue , Collections.singletonList(new TC_AspectStack(TC_Aspects.AQUA, 1))).setHasCorrespondingFluid(true);
+ public static Materials Grade1PurifiedWater = new Materials( 554, TextureSet.SET_FLUID , 1.0F, 0, 2, 16 , 34, 35, 52, 0, "Grade1PurifiedWater" , "Grade 1 Purified Water" , 0, 0, 273, 0, false, true, 2, 1, 1, Dyes.dyeBlue , Collections.singletonList(new TC_AspectStack(TC_Aspects.AQUA, 1))).setHasCorrespondingFluid(true);
+ public static Materials Grade2PurifiedWater = new Materials( 555, TextureSet.SET_FLUID , 1.0F, 0, 2, 16 , 42, 41, 77, 0, "Grade2PurifiedWater" , "Grade 2 Purified Water" , 0, 0, 273, 0, false, true, 2, 1, 1, Dyes.dyeBlue , Collections.singletonList(new TC_AspectStack(TC_Aspects.AQUA, 1))).setHasCorrespondingFluid(true);
+ public static Materials Grade3PurifiedWater = new Materials( 556, TextureSet.SET_FLUID , 1.0F, 0, 2, 16 , 49, 47, 103, 0, "Grade3PurifiedWater" , "Grade 3 Purified Water" , 0, 0, 273, 0, false, true, 2, 1, 1, Dyes.dyeBlue , Collections.singletonList(new TC_AspectStack(TC_Aspects.AQUA, 1))).setHasCorrespondingFluid(true);
+ public static Materials Grade4PurifiedWater = new Materials( 557, TextureSet.SET_FLUID , 1.0F, 0, 2, 16 , 54, 53, 132, 0, "Grade4PurifiedWater" , "Grade 4 Purified Water" , 0, 0, 273, 0, false, true, 2, 1, 1, Dyes.dyeBlue , Collections.singletonList(new TC_AspectStack(TC_Aspects.AQUA, 1))).setHasCorrespondingFluid(true);
+ public static Materials Grade5PurifiedWater = new Materials( 558, TextureSet.SET_FLUID , 1.0F, 0, 2, 16 , 58, 58, 161, 0, "Grade5PurifiedWater" , "Grade 5 Purified Water" , 0, 0, 273, 0, false, true, 2, 1, 1, Dyes.dyeBlue , Collections.singletonList(new TC_AspectStack(TC_Aspects.AQUA, 1))).setHasCorrespondingFluid(true);
+ public static Materials Grade6PurifiedWater = new Materials( 559, TextureSet.SET_FLUID , 1.0F, 0, 2, 16 , 61, 64, 191, 0, "Grade6PurifiedWater" , "Grade 6 Purified Water" , 0, 0, 273, 0, false, true, 2, 1, 1, Dyes.dyeBlue , Collections.singletonList(new TC_AspectStack(TC_Aspects.AQUA, 1))).setHasCorrespondingFluid(true);
+ public static Materials Grade7PurifiedWater = new Materials( 560, TextureSet.SET_FLUID , 1.0F, 0, 2, 16 , 63, 70, 221, 0, "Grade7PurifiedWater" , "Grade 7 Purified Water" , 0, 0, 273, 0, false, true, 2, 1, 1, Dyes.dyeBlue , Collections.singletonList(new TC_AspectStack(TC_Aspects.AQUA, 1))).setHasCorrespondingFluid(true);
+ public static Materials Grade8PurifiedWater = new Materials( 561, TextureSet.SET_FLUID , 1.0F, 0, 2, 16 , 63, 76, 253, 0, "Grade8PurifiedWater" , "Grade 8 Purified Water" , 0, 0, 273, 0, false, true, 2, 1, 1, Dyes.dyeBlue , Collections.singletonList(new TC_AspectStack(TC_Aspects.AQUA, 1))).setHasCorrespondingFluid(true);
+ public static Materials FlocculationWasteLiquid = new Materials(562, TextureSet.SET_FLUID, 1.0f, 0, 2, 16, 61, 58, 82, 0, "FlocculationWasteLiquid", "Flocculation Waste Liquid", 0, 0, 273, 0, false, true, 2, 1, 1, Dyes.dyeBlue , Collections.singletonList(new TC_AspectStack(TC_Aspects.AQUA, 1))).setHasCorrespondingFluid(true);
//GT++ materials
@@ -946,6 +947,55 @@ public class Materials implements IColorModulationContainer, ISubTagContainer {
public static Materials TengamAttuned = new MaterialBuilder(112, TextureSet.SET_MAGNETIC, "Attuned Tengam") .addDustItems().addGearItems().addMetalItems().addToolHeadItems().setAspects(Arrays.asList(new TC_AspectStack(TC_Aspects.MAGNETO, 4), new TC_AspectStack(TC_Aspects.ELECTRUM, 1))).setColor(Dyes.dyeLime).setName("TengamAttuned") .setRGB(213, 255, 128).constructMaterial().setProcessingMaterialTierEU(TierEU.RECIPE_UV);
public static Materials TengamRaw = new MaterialBuilder(110, TextureSet.SET_ROUGH, "Raw Tengam") .addOreItems() .setAspects(Arrays.asList(new TC_AspectStack(TC_Aspects.MAGNETO, 1), new TC_AspectStack(TC_Aspects.ELECTRUM, 4))).setColor(Dyes.dyeLime).setName("TengamRaw") .setRGB(160, 191, 96).constructMaterial().setProcessingMaterialTierEU(TierEU.RECIPE_UV);
+ // Activated Carbon Line
+ public static Materials ActivatedCarbon = new MaterialBuilder(563, TextureSet.SET_DULL, "Activated Carbon")
+ .addDustItems()
+ .setRGB(20, 20, 20)
+ .setName("ActivatedCarbon")
+ .setOreValue(0)
+ .setMaterialList(new MaterialStack(Carbon, 1))
+ .constructMaterial()
+ .disableAutoGeneratedRecycleRecipes();
+ public static Materials PreActivatedCarbon = new MaterialBuilder(564, TextureSet.SET_DULL, "Pre-Activated Carbon")
+ .addDustItems()
+ .setRGB(15, 51, 65)
+ .setName("PreActivatedCarbon")
+ .setOreValue(0)
+ .setMaterialList(new MaterialStack(Carbon, 1), new MaterialStack(PhosphoricAcid, 1))
+ .constructMaterial()
+ .disableAutoGeneratedRecycleRecipes();
+ public static Materials DirtyActivatedCarbon = new MaterialBuilder(565, TextureSet.SET_DULL, "Dirty Activated Carbon")
+ .addDustItems()
+ .setRGB(110, 110, 110)
+ .setName("carbonactivateddirty") // don't change this to the more sensible name or a centrifuge recipe appears
+ .setOreValue(0)
+ .setMaterialList(new MaterialStack(Carbon, 1), new MaterialStack(PhosphoricAcid, 1))
+ .constructMaterial()
+ .disableAutoGeneratedRecycleRecipes();
+
+ // Advanced glue uses id 567?? ok
+ public static Materials PolyAluminiumChloride = new MaterialBuilder(566, TextureSet.SET_FLUID, "Polyaluminium Chloride")
+ .addFluid()
+ .addCell()
+ .setRGB(252, 236, 5)
+ .setName("PolyaluminiumChloride")
+ .constructMaterial();
+
+ public static Materials Ozone = new MaterialBuilder(568, TextureSet.SET_FLUID, "Ozone")
+ .addGas()
+ .addCell()
+ .setRGB(190, 244, 250)
+ .setName("Ozone")
+ .setMaterialList(new MaterialStack(Oxygen, 3))
+ .constructMaterial();
+
+ public static Materials StableBaryonicMatter = new MaterialBuilder(569, TextureSet.SET_FLUID, "Stabilised Baryonic Matter")
+ .addFluid()
+ .addCell()
+ .setRGB(20, 10, 20)
+ .setName("StableBaryonicMatter")
+ .constructMaterial();
+
// spotless:on
static {
@@ -1949,11 +1999,13 @@ public class Materials implements IColorModulationContainer, ISubTagContainer {
Grade6PurifiedWater.mChemicalFormula = "H\u2082O";
Grade7PurifiedWater.mChemicalFormula = "H\u2082O";
Grade8PurifiedWater.mChemicalFormula = "H\u2082O";
+ FlocculationWasteLiquid.mChemicalFormula = "Al\u2082(OH)\u2083??Cl\u2083";
TengamRaw.mChemicalFormula = "";
TengamPurified.mChemicalFormula = "M";
TengamAttuned.mChemicalFormula = "M";
MaterialsUEVplus.ExcitedDTSC.mChemicalFormula = "[-Stellar-Stellar-]";
MaterialsUEVplus.DimensionallyTranscendentStellarCatalyst.mChemicalFormula = "Stellar";
+ PolyAluminiumChloride.mChemicalFormula = "Al\u2082(OH)\u2083Cl\u2083";
}
private static void initSubTags() {
diff --git a/src/main/java/gregtech/api/enums/MetaTileEntityIDs.java b/src/main/java/gregtech/api/enums/MetaTileEntityIDs.java
index b34c5d79f0..78bc31ec57 100644
--- a/src/main/java/gregtech/api/enums/MetaTileEntityIDs.java
+++ b/src/main/java/gregtech/api/enums/MetaTileEntityIDs.java
@@ -684,6 +684,19 @@ public enum MetaTileEntityIDs {
INDUSTRIAL_APIARY(9399),
Drone_Centre(9400),
DroneDownLink(9401),
+ PURIFICATION_PLANT_CONTROLLER(9402),
+ PURIFICATION_UNIT_CLARIFIER(9403),
+ PURIFICATION_UNIT_OZONATION(9404),
+ PURIFICATION_UNIT_FLOCCULATOR(9405),
+ PURIFICATION_UNIT_PH_ADJUSTMENT(9406),
+ HATCH_PH_SENSOR(9407),
+ PURIFICATION_UNIT_PLASMA_HEATER(9408),
+ PURIFICATION_UNIT_UV_TREATMENT(9409),
+ HATCH_LENS_HOUSING(9410),
+ HATCH_LENS_INDICATOR(9411),
+ PURIFICATION_UNIT_DEGASIFIER(9412),
+ HATCH_DEGASIFIER_CONTROL(9413),
+ PURIFICATION_UNIT_PARTICLE_EXTRACTOR(9414),
sofc1(13101),
sofc2(13102),
tfft(13104),
diff --git a/src/main/java/gregtech/api/enums/SoundResource.java b/src/main/java/gregtech/api/enums/SoundResource.java
index 54a2162541..712c1b5016 100644
--- a/src/main/java/gregtech/api/enums/SoundResource.java
+++ b/src/main/java/gregtech/api/enums/SoundResource.java
@@ -63,6 +63,12 @@ public enum SoundResource {
GT_MACHINES_WATER_PUMP_LOOP(234, GregTech.ID, "machines.WaterPumpLoop"),
GT_MACHINES_STEAM_CENTRIFUGE_LOOP(235, GregTech.ID, "machines.SteamCentrifugeLoop"),
+ GT_MACHINES_PURIFICATIONPLANT_LOOP(233, GregTech.ID, "machines.PurificationPlantLoop"),
+ GT_MACHINES_PURIFICATION_PH_LOOP(234, GregTech.ID, "machines.PurificationPhLoop"),
+ GT_MACHINES_COAGULATION_LOOP(235, GregTech.ID, "machines.PurificationCoagulationLoop"),
+ GT_MACHINES_OZONATION_LOOP(236, GregTech.ID, "machines.PurificationOzonationLoop"),
+ GT_MACHINES_PURIFICATION_PLASMA_LOOP(237, "machines.PurificationPlasmaLoop"),
+
GUI_BUTTON_DOWN(-1, GregTech.ID, "gui.buttonDown"),
GUI_BUTTON_UP(-1, GregTech.ID, "gui.buttonUp"),
diff --git a/src/main/java/gregtech/api/enums/Textures.java b/src/main/java/gregtech/api/enums/Textures.java
index b190d60d00..300f2281ae 100644
--- a/src/main/java/gregtech/api/enums/Textures.java
+++ b/src/main/java/gregtech/api/enums/Textures.java
@@ -1346,6 +1346,8 @@ public class Textures {
OVERLAY_ME_CRAFTING_HATCH_ACTIVE,
OVERLAY_ME_FLUID_HATCH,
OVERLAY_ME_FLUID_HATCH_ACTIVE,
+ OVERLAY_HATCH_PH_SENSOR,
+ OVERLAY_HATCH_PH_SENSOR_GLOW,
STRUCTURE_MARK,
@@ -1404,7 +1406,29 @@ public class Textures {
LARGETURBINE_NEW_EMPTY6,
LARGETURBINE_NEW_EMPTY7,
LARGETURBINE_NEW_EMPTY8,
- LARGETURBINE_NEW_EMPTY9,;
+ LARGETURBINE_NEW_EMPTY9,
+ INDUSTRIAL_STRENGTH_CONCRETE,
+ GLASS_PH_RESISTANT,
+ GLASS_TINTED_INDUSTRIAL_WHITE,
+ GLASS_TINTED_INDUSTRIAL_LIGHT_GRAY,
+ GLASS_TINTED_INDUSTRIAL_GRAY,
+ GLASS_TINTED_INDUSTRIAL_BLACK,
+ MACHINE_CASING_INDUSTRIAL_WATER_PLANT,
+ WATER_PLANT_CONCRETE_CASING,
+ MACHINE_CASING_FLOCCULATION,
+ MACHINE_CASING_NAQUADAH_REINFORCED_WATER_PLANT,
+ MACHINE_CASING_EXTREME_CORROSION_RESISTANT,
+ MACHINE_CASING_HIGH_PRESSURE_RESISTANT,
+ MACHINE_CASING_OZONE,
+ MACHINE_CASING_PLASMA_HEATER,
+ NAQUADRIA_REINFORCED_WATER_PLANT_CASING,
+ UV_BACKLIGHT_STERILIZER_CASING,
+ NEUTRONIUM_COATED_UV_RESISTANT_GLASS,
+ OMNI_PURPOSE_INFINITY_FUSED_GLASS,
+ GLASS_QUARK_CONTAINMENT,
+ BLOCK_QUARK_PIPE,
+ BLOCK_QUARK_RELEASE_CHAMBER,
+ BLOCK_QUARK_CONTAINMENT_CASING,;
/**
* Icon for Fresh CFoam
diff --git a/src/main/java/gregtech/api/gui/modularui/GT_UITextures.java b/src/main/java/gregtech/api/gui/modularui/GT_UITextures.java
index 100c39ea1a..b456026dbd 100644
--- a/src/main/java/gregtech/api/gui/modularui/GT_UITextures.java
+++ b/src/main/java/gregtech/api/gui/modularui/GT_UITextures.java
@@ -26,7 +26,8 @@ public class GT_UITextures {
.of(GregTech.ID, "gui/background/text_field_light_gray", 61, 12, 1);
public static final AdaptableUITexture BACKGROUND_NEI_SINGLE_RECIPE = AdaptableUITexture
.of(GregTech.ID, "gui/background/nei_single_recipe.png", 64, 64, 2);
-
+ public static final UITexture BACKGROUND_FLOCCULATION_RECIPE = UITexture
+ .fullImage(GregTech.ID, "gui/background/flocculation_recipe.png");
public static final SteamTexture SLOT_ITEM_STEAM = SteamTexture.fullImage(GregTech.ID, "gui/slot/item_%s");
public static final SteamTexture SLOT_FLUID_STEAM = SteamTexture.fullImage(GregTech.ID, "gui/slot/fluid_%s");
public static final AdaptableUITexture SLOT_DARK_GRAY = AdaptableUITexture
@@ -205,6 +206,14 @@ public class GT_UITextures {
public static final UITexture PROGRESSBAR_SLICE = UITexture.fullImage(GregTech.ID, "gui/progressbar/slice");
public static final UITexture PROGRESSBAR_STORED_EU = UITexture.fullImage(GregTech.ID, "gui/progressbar/stored_eu");
public static final UITexture PROGRESSBAR_WIREMILL = UITexture.fullImage(GregTech.ID, "gui/progressbar/wiremill");
+ public static final UITexture PROGRESSBAR_FLOCCULATION = UITexture
+ .fullImage(GregTech.ID, "gui/progressbar/flocculation");
+ public static final UITexture PROGRESSBAR_CLARIFIER = UITexture.fullImage(GregTech.ID, "gui/progressbar/clarifier");
+ public static final UITexture PROGRESSBAR_PH_NEUTRALIZATION = UITexture
+ .fullImage(GregTech.ID, "gui/progressbar/phneutralization");
+ public static final UITexture PROGRESSBAR_OZONATION = UITexture.fullImage(GregTech.ID, "gui/progressbar/ozonation");
+ public static final UITexture PROGRESSBAR_PLASMA_HEATER = UITexture
+ .fullImage(GregTech.ID, "gui/progressbar/water_plasma_heater");
public static FallbackableUITexture fallbackableProgressbar(String name, UITexture fallback) {
return new FallbackableUITexture(UITexture.fullImage(GregTech.ID, "gui/progressbar/" + name), fallback);
diff --git a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_InputBus.java b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_InputBus.java
index f4c4eb6a14..089aec53e0 100644
--- a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_InputBus.java
+++ b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_InputBus.java
@@ -302,11 +302,18 @@ public class GT_MetaTileEntity_Hatch_InputBus extends GT_MetaTileEntity_Hatch
buildContext.addCloseListener(() -> uiButtonCount = 0);
addSortStacksButton(builder);
addOneStackLimitButton(builder);
- switch (mTier) {
- case 0 -> getBaseMetaTileEntity().add1by1Slot(builder);
- case 1 -> getBaseMetaTileEntity().add2by2Slots(builder);
- case 2 -> getBaseMetaTileEntity().add3by3Slots(builder);
- default -> getBaseMetaTileEntity().add4by4Slots(builder);
+ // Remove one for ghost circuit slot
+ int slotCount = getSizeInventory();
+ if (allowSelectCircuit()) {
+ slotCount = slotCount - 1;
+ }
+ // We do this to decouple slot count from tier in here, since there is no reason to do so.
+ switch (slotCount) {
+ case 1 -> getBaseMetaTileEntity().add1by1Slot(builder);
+ case 4 -> getBaseMetaTileEntity().add2by2Slots(builder);
+ case 9 -> getBaseMetaTileEntity().add3by3Slots(builder);
+ case 16 -> getBaseMetaTileEntity().add4by4Slots(builder);
+ default -> {}
}
}
diff --git a/src/main/java/gregtech/api/recipe/RecipeMaps.java b/src/main/java/gregtech/api/recipe/RecipeMaps.java
index c42b8725b4..6d614d27d0 100644
--- a/src/main/java/gregtech/api/recipe/RecipeMaps.java
+++ b/src/main/java/gregtech/api/recipe/RecipeMaps.java
@@ -59,12 +59,18 @@ import gregtech.api.recipe.maps.LargeNEIFrontend;
import gregtech.api.recipe.maps.MicrowaveBackend;
import gregtech.api.recipe.maps.OilCrackerBackend;
import gregtech.api.recipe.maps.PrinterBackend;
+import gregtech.api.recipe.maps.PurificationUnitClarifierFrontend;
+import gregtech.api.recipe.maps.PurificationUnitFlocculatorFrontend;
+import gregtech.api.recipe.maps.PurificationUnitOzonationFrontend;
+import gregtech.api.recipe.maps.PurificationUnitPhAdjustmentFrontend;
+import gregtech.api.recipe.maps.PurificationUnitPlasmaHeaterFrontend;
import gregtech.api.recipe.maps.RecyclerBackend;
import gregtech.api.recipe.maps.ReplicatorBackend;
import gregtech.api.recipe.maps.SpaceProjectFrontend;
import gregtech.api.recipe.maps.TranscendentPlasmaMixerFrontend;
import gregtech.api.recipe.maps.UnpackagerBackend;
import gregtech.api.recipe.metadata.PCBFactoryTierKey;
+import gregtech.api.recipe.metadata.PurificationPlantBaseChanceKey;
import gregtech.api.util.GT_Config;
import gregtech.api.util.GT_ModHandler;
import gregtech.api.util.GT_OreDictUnificator;
@@ -72,6 +78,7 @@ import gregtech.api.util.GT_Recipe;
import gregtech.api.util.GT_RecipeConstants;
import gregtech.api.util.GT_RecipeMapUtil;
import gregtech.api.util.GT_Utility;
+import gregtech.common.tileentities.machines.multi.purification.PurifiedWaterHelpers;
import gregtech.nei.formatter.FuelSpecialValueFormatter;
import gregtech.nei.formatter.FusionSpecialValueFormatter;
import gregtech.nei.formatter.HeatingCoilSpecialValueFormatter;
@@ -297,6 +304,22 @@ public final class RecipeMaps {
.slotOverlays(
(index, isFluid, isOutput,
isSpecial) -> !isFluid && !isOutput && index != 0 ? GT_UITextures.OVERLAY_SLOT_LENS : null)
+ // Add a simple ordering so lower tier purified water is displayed first, otherwise it gets really confusing
+ .neiRecipeComparator((a, b) -> {
+ // Find lens, if no lens was present we can use the default comparator
+ if (a.mInputs.length > 1 && b.mInputs.length > 1) {
+ ItemStack firstLens = a.mInputs[1];
+ ItemStack secondLens = b.mInputs[1];
+ // Find purified water/any fluid, if none was present simply use the lens to compare
+ if (ItemStack.areItemStacksEqual(firstLens, secondLens) && a.mFluidInputs.length > 0
+ && b.mFluidInputs.length > 0) {
+