diff --git a/src/main/java/com/hbm/inventory/fluid/Fluids.java b/src/main/java/com/hbm/inventory/fluid/Fluids.java index 527133b66..cb5498d8b 100644 --- a/src/main/java/com/hbm/inventory/fluid/Fluids.java +++ b/src/main/java/com/hbm/inventory/fluid/Fluids.java @@ -185,6 +185,7 @@ public class Fluids { public static final FT_NoID NOID = new FT_NoID(); public static final FT_Delicious DELICIOUS = new FT_Delicious(); public static final FT_Leaded LEADED = new FT_Leaded(); + public static final FT_Unsiphonable UNSIPHONABLE = new FT_Unsiphonable(); public static void init() { @@ -202,11 +203,11 @@ public class Fluids { */ NONE = new FluidType("NONE", 0x888888, 0, 0, 0, EnumSymbol.NONE); - WATER = new FluidType("WATER", 0x3333FF, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID); - STEAM = new FluidType("STEAM", 0xe5e5e5, 3, 0, 0, EnumSymbol.NONE).setTemp(100).addTraits(GASEOUS); - HOTSTEAM = new FluidType("HOTSTEAM", 0xE7D6D6, 4, 0, 0, EnumSymbol.NONE).setTemp(300).addTraits(GASEOUS); - SUPERHOTSTEAM = new FluidType("SUPERHOTSTEAM", 0xE7B7B7, 4, 0, 0, EnumSymbol.NONE).setTemp(450).addTraits(GASEOUS); - ULTRAHOTSTEAM = new FluidType("ULTRAHOTSTEAM", 0xE39393, 4, 0, 0, EnumSymbol.NONE).setTemp(600).addTraits(GASEOUS); + WATER = new FluidType("WATER", 0x3333FF, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID, UNSIPHONABLE); + STEAM = new FluidType("STEAM", 0xe5e5e5, 3, 0, 0, EnumSymbol.NONE).setTemp(100).addTraits(GASEOUS, UNSIPHONABLE); + HOTSTEAM = new FluidType("HOTSTEAM", 0xE7D6D6, 4, 0, 0, EnumSymbol.NONE).setTemp(300).addTraits(GASEOUS, UNSIPHONABLE); + SUPERHOTSTEAM = new FluidType("SUPERHOTSTEAM", 0xE7B7B7, 4, 0, 0, EnumSymbol.NONE).setTemp(450).addTraits(GASEOUS, UNSIPHONABLE); + ULTRAHOTSTEAM = new FluidType("ULTRAHOTSTEAM", 0xE39393, 4, 0, 0, EnumSymbol.NONE).setTemp(600).addTraits(GASEOUS, UNSIPHONABLE); COOLANT = new FluidType("COOLANT", 0xd8fcff, 1, 0, 0, EnumSymbol.NONE).addTraits(LIQUID); LAVA = new FluidType("LAVA", 0xFF3300, 4, 0, 0, EnumSymbol.NOWATER).setTemp(1200).addTraits(LIQUID, VISCOUS); DEUTERIUM = new FluidType("DEUTERIUM", 0x0000FF, 3, 4, 0, EnumSymbol.NONE).addTraits(new FT_Flammable(5_000), new FT_Combustible(FuelGrade.HIGH, 10_000), GASEOUS); diff --git a/src/main/java/com/hbm/inventory/fluid/trait/FluidTrait.java b/src/main/java/com/hbm/inventory/fluid/trait/FluidTrait.java index de7ddc591..c840d3a89 100644 --- a/src/main/java/com/hbm/inventory/fluid/trait/FluidTrait.java +++ b/src/main/java/com/hbm/inventory/fluid/trait/FluidTrait.java @@ -38,6 +38,7 @@ public abstract class FluidTrait { traitNameMap.put("pheromone", FT_Pheromone.class); traitNameMap.put("noid", FT_NoID.class); traitNameMap.put("nocontainer", FT_NoContainer.class); + traitNameMap.put("unsiphonable", FT_Unsiphonable.class); } /** Important information that should always be displayed */ diff --git a/src/main/java/com/hbm/inventory/fluid/trait/FluidTraitSimple.java b/src/main/java/com/hbm/inventory/fluid/trait/FluidTraitSimple.java index f62cd456e..0c5026534 100644 --- a/src/main/java/com/hbm/inventory/fluid/trait/FluidTraitSimple.java +++ b/src/main/java/com/hbm/inventory/fluid/trait/FluidTraitSimple.java @@ -62,6 +62,12 @@ public class FluidTraitSimple { } } + public static class FT_Unsiphonable extends FluidTrait { + @Override public void addInfoHidden(List info) { + info.add(EnumChatFormatting.BLUE + "[Ignored by siphon]"); + } + } + public static class FT_NoID extends FluidTrait { } public static class FT_NoContainer extends FluidTrait { } } diff --git a/src/main/java/com/hbm/items/machine/ItemFluidSiphon.java b/src/main/java/com/hbm/items/machine/ItemFluidSiphon.java index 59f9b1ee5..2a7fc95ce 100644 --- a/src/main/java/com/hbm/items/machine/ItemFluidSiphon.java +++ b/src/main/java/com/hbm/items/machine/ItemFluidSiphon.java @@ -2,14 +2,11 @@ package com.hbm.items.machine; import com.hbm.util.CompatExternal; -import java.util.List; -import java.util.Arrays; - import com.hbm.inventory.FluidContainer; import com.hbm.inventory.FluidContainerRegistry; import com.hbm.inventory.fluid.FluidType; -import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; +import com.hbm.inventory.fluid.trait.FluidTraitSimple.FT_Unsiphonable; import com.hbm.items.ModItems; import com.hbm.items.tool.ItemPipette; @@ -22,15 +19,6 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; public class ItemFluidSiphon extends Item { - - private static List IGNORED_FLUIDS = Arrays.asList( - Fluids.WATER, - Fluids.SPENTSTEAM, - Fluids.STEAM, - Fluids.HOTSTEAM, - Fluids.SUPERHOTSTEAM, - Fluids.ULTRAHOTSTEAM - ); @Override public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int i, float f0, float f1, float f2) { @@ -50,11 +38,12 @@ public class ItemFluidSiphon extends Item { // After we successfully siphon any fluid from a tank, we stop further processing, multiple fluid types require multiple clicks for (FluidTank tank : tanks) { if (tank.getFill() <= 0) continue; - if (IGNORED_FLUIDS.contains(tank.getTankType())) continue; ItemStack availablePipette = null; FluidType tankType = tank.getTankType(); + if (tankType.hasTrait(FT_Unsiphonable.class)) continue; + for (int j = 0; j < player.inventory.mainInventory.length; j++) { ItemStack inventoryStack = player.inventory.mainInventory[j]; if (inventoryStack == null) continue;