From 0fc08e383ab86e590904a375c4c81df34cda22aa Mon Sep 17 00:00:00 2001 From: mezz Date: Sun, 26 Jun 2016 02:31:04 -0700 Subject: [PATCH] Add Forge fluid handler test --- .../minecraftforge/debug/DynBucketTest.java | 13 ++- .../minecraftforge/debug/ModelFluidDebug.java | 10 +- .../minecraftforge/test/FluidHandlerTest.java | 108 ++++++++++++++++++ 3 files changed, 129 insertions(+), 2 deletions(-) create mode 100644 src/test/java/net/minecraftforge/test/FluidHandlerTest.java diff --git a/src/test/java/net/minecraftforge/debug/DynBucketTest.java b/src/test/java/net/minecraftforge/debug/DynBucketTest.java index e38452fdeb..ba06fcc16e 100644 --- a/src/test/java/net/minecraftforge/debug/DynBucketTest.java +++ b/src/test/java/net/minecraftforge/debug/DynBucketTest.java @@ -54,9 +54,14 @@ public class DynBucketTest private static final ResourceLocation simpleTankName = new ResourceLocation(MODID, "simpletank"); private static final ResourceLocation testItemName = new ResourceLocation(MODID, "testitem"); + private static final boolean ENABLE = false; + static { - FluidRegistry.enableUniversalBucket(); + if (ENABLE) + { + FluidRegistry.enableUniversalBucket(); + } } @SidedProxy @@ -78,6 +83,9 @@ public class DynBucketTest @Override void setupModels() { + if (!ENABLE) + return; + ModelLoader.setBucketModelDefinition(dynBucket); final ModelResourceLocation bottle = new ModelResourceLocation(new ResourceLocation("forge", "dynbottle"), "inventory"); @@ -99,6 +107,9 @@ public class DynBucketTest @EventHandler public void preInit(FMLPreInitializationEvent event) { + if (!ENABLE) + return; + GameRegistry.register(new TestItem(), testItemName); Block tank = new BlockSimpleTank(); GameRegistry.register(tank, simpleTankName); diff --git a/src/test/java/net/minecraftforge/debug/ModelFluidDebug.java b/src/test/java/net/minecraftforge/debug/ModelFluidDebug.java index 9d9256525f..ccbfb40ab8 100644 --- a/src/test/java/net/minecraftforge/debug/ModelFluidDebug.java +++ b/src/test/java/net/minecraftforge/debug/ModelFluidDebug.java @@ -27,13 +27,21 @@ public class ModelFluidDebug public static final String MODID = "ForgeDebugModelFluid"; public static final String VERSION = "1.0"; + public static final boolean ENABLE = false; + @SidedProxy public static CommonProxy proxy; public static final Fluid milkFluid = new Fluid("milk", new ResourceLocation("forge", "blocks/milk_still"), new ResourceLocation("forge", "blocks/milk_flow")); @EventHandler - public void preInit(FMLPreInitializationEvent event) { proxy.preInit(event); } + public void preInit(FMLPreInitializationEvent event) + { + if (ENABLE) + { + proxy.preInit(event); + } + } public static class CommonProxy { diff --git a/src/test/java/net/minecraftforge/test/FluidHandlerTest.java b/src/test/java/net/minecraftforge/test/FluidHandlerTest.java new file mode 100644 index 0000000000..0ed43318cc --- /dev/null +++ b/src/test/java/net/minecraftforge/test/FluidHandlerTest.java @@ -0,0 +1,108 @@ +package net.minecraftforge.test; + +import java.util.ArrayList; +import java.util.List; + +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraftforge.fluids.Fluid; +import net.minecraftforge.fluids.FluidRegistry; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.FluidUtil; +import net.minecraftforge.fluids.capability.IFluidHandler; +import net.minecraftforge.fml.common.FMLCommonHandler; +import net.minecraftforge.fml.common.FMLLog; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.fml.common.event.FMLLoadCompleteEvent; +import net.minecraftforge.fml.common.registry.ForgeRegistries; +import net.minecraftforge.fml.relauncher.Side; + +@Mod(modid="FluidHandlerTest", name="FluidHandlerTest", version="0.0.0") +public class FluidHandlerTest +{ + public static final boolean ENABLE = false; + + @Mod.EventHandler + public void loadComplete(FMLLoadCompleteEvent event) + { + if (!ENABLE || FMLCommonHandler.instance().getSide() != Side.CLIENT) + return; + + for (ItemStack stack : getAllItems()) + { + testFluidContainer(stack); + } + } + + private static void testFluidContainer(ItemStack stack) + { + ItemStack drainedStack = stack.copy(); + IFluidHandler fluidHandler = FluidUtil.getFluidHandler(drainedStack); + if (fluidHandler != null) + { + FluidStack drain = fluidHandler.drain(Integer.MAX_VALUE, true); + FMLLog.info("Draining " + stackString(stack) + " gives " + fluidString(drain) + " and " + stackString(drainedStack)); + + for (Fluid fluid : FluidRegistry.getRegisteredFluids().values()) + { + ItemStack filledStack = stack.copy(); + fluidHandler = FluidUtil.getFluidHandler(filledStack); + if (fluidHandler != null) + { + int filled = fluidHandler.fill(new FluidStack(fluid, Integer.MAX_VALUE), true); + if (filled > 0) + { + FMLLog.info("Filling " + stackString(stack) + " with " + fluidString(new FluidStack(fluid, filled)) + " gives " + stackString(filledStack)); + } + } + } + } + } + + private static String fluidString(FluidStack stack) + { + if (stack == null) + { + return "no fluid"; + } + else + { + return stack.amount + "mB " + stack.getLocalizedName(); + } + } + + private static String stackString(ItemStack stack) + { + if (stack == null || stack.stackSize <= 0) + { + return "no item"; + } + else + { + String resourceDomain; + if (stack.getItem() == null || stack.getItem().getRegistryName() == null) + { + resourceDomain = "unknown"; + } + else + { + resourceDomain = stack.getItem().getRegistryName().getResourceDomain(); + } + return stack.stackSize + " " + stack.getDisplayName() + " (" + resourceDomain + ")"; + } + } + + private static List getAllItems() + { + List list = new ArrayList(); + for (Item item : ForgeRegistries.ITEMS.getValues()) + { + for (CreativeTabs tab : item.getCreativeTabs()) + { + item.getSubItems(item, tab, list); + } + } + return list; + } +}