diff options
Diffstat (limited to 'src/main/java/gregtech')
-rw-r--r-- | src/main/java/gregtech/api/util/GTStructureUtility.java | 42 | ||||
-rw-r--r-- | src/main/java/gregtech/common/tileentities/machines/multi/purification/MTEPurificationUnitFlocculation.java | 4 |
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(); |