Add a new "unsiphonable" fluid trait instead of using a static list

This commit is contained in:
George Paton 2024-02-06 18:07:21 +11:00
parent 05a087bce4
commit 72a252194a
4 changed files with 16 additions and 19 deletions

View File

@ -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);

View File

@ -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 */

View File

@ -62,6 +62,12 @@ public class FluidTraitSimple {
}
}
public static class FT_Unsiphonable extends FluidTrait {
@Override public void addInfoHidden(List<String> info) {
info.add(EnumChatFormatting.BLUE + "[Ignored by siphon]");
}
}
public static class FT_NoID extends FluidTrait { }
public static class FT_NoContainer extends FluidTrait { }
}

View File

@ -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<FluidType> 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;