aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/gregtech')
-rw-r--r--src/main/java/gregtech/api/util/GTStructureUtility.java42
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/multi/purification/MTEPurificationUnitFlocculation.java4
2 files changed, 44 insertions, 2 deletions
diff --git a/src/main/java/gregtech/api/util/GTStructureUtility.java b/src/main/java/gregtech/api/util/GTStructureUtility.java
index 1ee55ed200..6e7da9696d 100644
--- a/src/main/java/gregtech/api/util/GTStructureUtility.java
+++ b/src/main/java/gregtech/api/util/GTStructureUtility.java
@@ -19,6 +19,7 @@ import javax.annotation.Nonnull;
import net.minecraft.block.Block;
import net.minecraft.entity.player.EntityPlayerMP;
+import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.item.Item;
import net.minecraft.item.ItemBlock;
@@ -36,9 +37,12 @@ import com.gtnewhorizon.structurelib.structure.IStructureElement;
import com.gtnewhorizon.structurelib.structure.IStructureElementNoPlacement;
import com.gtnewhorizon.structurelib.util.ItemStackPredicate;
+import cofh.asmhooks.block.BlockTickingWater;
+import cofh.asmhooks.block.BlockWater;
import gregtech.api.GregTechAPI;
import gregtech.api.enums.HeatingCoilLevel;
import gregtech.api.enums.Materials;
+import gregtech.api.enums.Mods;
import gregtech.api.enums.OrePrefixes;
import gregtech.api.interfaces.IHeatingCoil;
import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
@@ -48,6 +52,8 @@ import gregtech.common.blocks.BlockCasings5;
import gregtech.common.blocks.BlockCyclotronCoils;
import gregtech.common.blocks.BlockFrameBox;
import gregtech.common.blocks.ItemMachines;
+import ic2.core.init.BlocksItems;
+import ic2.core.init.InternalName;
public class GTStructureUtility {
@@ -65,6 +71,42 @@ public class GTStructureUtility {
return ofHatchAdder(aHatchAdder, aTextureIndex, StructureLibAPI.getBlockHint(), aDots - 1);
}
+ public static <T> IStructureElement<T> ofAnyWater(boolean allowFlowing) {
+ return new IStructureElement<>() {
+
+ final Block distilledWater = BlocksItems.getFluidBlock(InternalName.fluidDistilledWater);
+
+ @Override
+ public boolean check(T t, World world, int x, int y, int z) {
+ Block block = world.getBlock(x, y, z);
+ if (block == Blocks.water || block == distilledWater) return true;
+ if (allowFlowing && block == Blocks.flowing_water) return true;
+ if (Mods.COFHCore.isModLoaded()) {
+ return block instanceof BlockWater || block instanceof BlockTickingWater;
+ }
+ return false;
+ }
+
+ @Override
+ public boolean placeBlock(T t, World world, int x, int y, int z, ItemStack trigger) {
+ world.setBlock(x, y, z, Blocks.water, 0, 2);
+ return true;
+ }
+
+ @Override
+ public boolean spawnHint(T t, World world, int x, int y, int z, ItemStack trigger) {
+ StructureLibAPI.hintParticle(world, x, y, z, Blocks.water, 0);
+ return true;
+ }
+
+ @Override
+ public IStructureElement.BlocksToPlace getBlocksToPlace(T t, World world, int x, int y, int z,
+ ItemStack trigger, AutoPlaceEnvironment env) {
+ return IStructureElement.BlocksToPlace.create(Blocks.water, 0);
+ }
+ };
+ }
+
public static <T> IStructureElement<T> ofFrame(Materials aFrameMaterial) {
if (aFrameMaterial == null) throw new IllegalArgumentException();
return new IStructureElement<>() {
diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/purification/MTEPurificationUnitFlocculation.java b/src/main/java/gregtech/common/tileentities/machines/multi/purification/MTEPurificationUnitFlocculation.java
index 00e9807af7..02324ede4d 100644
--- a/src/main/java/gregtech/common/tileentities/machines/multi/purification/MTEPurificationUnitFlocculation.java
+++ b/src/main/java/gregtech/common/tileentities/machines/multi/purification/MTEPurificationUnitFlocculation.java
@@ -15,13 +15,13 @@ import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_FRONT_LARGE_CHEMICA
import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_FRONT_LARGE_CHEMICAL_REACTOR_ACTIVE_GLOW;
import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_FRONT_LARGE_CHEMICAL_REACTOR_GLOW;
import static gregtech.api.util.GTRecipeBuilder.SECONDS;
+import static gregtech.api.util.GTStructureUtility.ofAnyWater;
import static gregtech.api.util.GTStructureUtility.ofFrame;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
-import net.minecraft.init.Blocks;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.EnumChatFormatting;
@@ -143,7 +143,7 @@ public class MTEPurificationUnitFlocculation extends MTEPurificationUnitBase<MTE
// Sterile Water Plant Casing
.addElement('D', ofBlock(GregTechAPI.sBlockCasings9, 4))
.addElement('E', ofFrame(Materials.Adamantium))
- .addElement('W', ofBlock(Blocks.water, 0))
+ .addElement('W', ofAnyWater(false))
// Tinted industrial glass
.addElement('G', ofBlockAnyMeta(GregTechAPI.sBlockTintedGlass))
.build();