From 19f8d2a7937dc7968ecbef2f9785687193fcd210 Mon Sep 17 00:00:00 2001 From: KnightMiner Date: Sun, 17 Jan 2021 16:05:24 -0500 Subject: [PATCH] Optionally add a milk fluid to the vanilla bucket (#7294) Fixes the previous broken code that was supposed to make mod registered milk returned by the vanilla bucket by allowing mods to enable a milk fluid. --- .../data/forge/tags/fluids/milk.json | 13 +++++ .../net/minecraftforge/common/ForgeMod.java | 41 ++++++++++++- .../java/net/minecraftforge/common/Tags.java | 15 +++++ .../common/data/ForgeFluidTagsProvider.java | 46 +++++++++++++++ .../net/minecraftforge/fluids/FluidUtil.java | 4 -- .../wrappers/FluidBucketWrapper.java | 7 ++- .../resources/assets/forge/lang/en_us.json | 5 +- .../forge/textures/block/milk_flowing.png | Bin 0 -> 3960 bytes .../textures/block/milk_flowing.png.mcmeta | 5 ++ .../forge/textures/block/milk_still.png | Bin 0 -> 1406 bytes .../textures/block/milk_still.png.mcmeta | 5 ++ .../debug/fluid/MilkFluidTest.java | 54 ++++++++++++++++++ src/test/resources/META-INF/mods.toml | 2 + 13 files changed, 189 insertions(+), 8 deletions(-) create mode 100644 src/generated/resources/data/forge/tags/fluids/milk.json create mode 100644 src/main/java/net/minecraftforge/common/data/ForgeFluidTagsProvider.java create mode 100644 src/main/resources/assets/forge/textures/block/milk_flowing.png create mode 100644 src/main/resources/assets/forge/textures/block/milk_flowing.png.mcmeta create mode 100644 src/main/resources/assets/forge/textures/block/milk_still.png create mode 100644 src/main/resources/assets/forge/textures/block/milk_still.png.mcmeta create mode 100644 src/test/java/net/minecraftforge/debug/fluid/MilkFluidTest.java diff --git a/src/generated/resources/data/forge/tags/fluids/milk.json b/src/generated/resources/data/forge/tags/fluids/milk.json new file mode 100644 index 0000000000..6aea35f487 --- /dev/null +++ b/src/generated/resources/data/forge/tags/fluids/milk.json @@ -0,0 +1,13 @@ +{ + "replace": false, + "values": [ + { + "id": "minecraft:milk", + "required": false + }, + { + "id": "minecraft:flowing_milk", + "required": false + } + ] +} \ No newline at end of file diff --git a/src/main/java/net/minecraftforge/common/ForgeMod.java b/src/main/java/net/minecraftforge/common/ForgeMod.java index 143021e37d..ed5ba2efdb 100644 --- a/src/main/java/net/minecraftforge/common/ForgeMod.java +++ b/src/main/java/net/minecraftforge/common/ForgeMod.java @@ -24,13 +24,19 @@ import net.minecraft.command.arguments.ArgumentTypes; import net.minecraft.command.arguments.IArgumentSerializer; import net.minecraft.entity.ai.attributes.Attribute; import net.minecraft.entity.ai.attributes.RangedAttribute; +import net.minecraft.fluid.Fluid; +import net.minecraft.item.Items; import net.minecraft.util.SoundEvent; import net.minecraft.world.storage.IServerConfiguration; import net.minecraft.world.storage.SaveFormat; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.client.ForgeHooksClient; +import net.minecraftforge.common.data.ExistingFileHelper; +import net.minecraftforge.common.data.ForgeFluidTagsProvider; import net.minecraftforge.eventbus.api.IEventBus; import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fluids.FluidAttributes; +import net.minecraftforge.fluids.ForgeFlowingFluid; import net.minecraftforge.fml.*; import net.minecraftforge.fml.config.ModConfig; import net.minecraftforge.fml.event.lifecycle.*; @@ -41,6 +47,8 @@ import net.minecraftforge.fml.loading.progress.StartupMessageManager; import net.minecraftforge.registries.DeferredRegister; import net.minecraftforge.server.command.EnumArgument; import net.minecraftforge.server.command.ModIdArgument; +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.IForgeRegistry; import net.minecraftforge.versions.forge.ForgeVersion; import net.minecraftforge.versions.mcp.MCPVersion; @@ -98,12 +106,24 @@ public class ForgeMod implements WorldPersistenceHooks.WorldPersistenceHook public static final RegistryObject REACH_DISTANCE = ATTRIBUTES.register("reach_distance", () -> new RangedAttribute("generic.reachDistance", 5.0D, 0.0D, 1024.0D).setShouldWatch(true)); + private static boolean enableMilkFluid = false; + public static final RegistryObject MILK = RegistryObject.of(new ResourceLocation("milk"), ForgeRegistries.FLUIDS); + public static final RegistryObject FLOWING_MILK = RegistryObject.of(new ResourceLocation("flowing_milk"), ForgeRegistries.FLUIDS); + private static ForgeMod INSTANCE; public static ForgeMod getInstance() { return INSTANCE; } + /** + * Run this method during mod constructor to enable milk and add it to the Minecraft milk bucket + */ + public static void enableMilkFluid() + { + enableMilkFluid = true; + } + public ForgeMod() { LOGGER.info(FORGEMOD,"Forge mod loading, version {}, for MC {} with MCP {}", ForgeVersion.getVersion(), MCPVersion.getMCVersion(), MCPVersion.getMCPVersion()); @@ -120,6 +140,7 @@ public class ForgeMod implements WorldPersistenceHooks.WorldPersistenceHook modEventBus.addListener(this::preInit); modEventBus.addListener(this::gatherData); modEventBus.addListener(this::loadComplete); + modEventBus.addGenericListener(Fluid.class, this::registerFluids); modEventBus.register(this); ATTRIBUTES.register(modEventBus); MinecraftForge.EVENT_BUS.addListener(this::serverStopping); @@ -205,9 +226,11 @@ public class ForgeMod implements WorldPersistenceHooks.WorldPersistenceHook if (event.includeServer()) { - ForgeBlockTagsProvider blockTags = new ForgeBlockTagsProvider(gen, event.getExistingFileHelper()); + ExistingFileHelper existingFileHelper = event.getExistingFileHelper(); + ForgeBlockTagsProvider blockTags = new ForgeBlockTagsProvider(gen, existingFileHelper); gen.addProvider(blockTags); - gen.addProvider(new ForgeItemTagsProvider(gen, blockTags, event.getExistingFileHelper())); + gen.addProvider(new ForgeItemTagsProvider(gen, blockTags, existingFileHelper)); + gen.addProvider(new ForgeFluidTagsProvider(gen, existingFileHelper)); gen.addProvider(new ForgeRecipeProvider(gen)); gen.addProvider(new ForgeLootTableProvider(gen)); } @@ -232,6 +255,20 @@ public class ForgeMod implements WorldPersistenceHooks.WorldPersistenceHook } } + // done in an event instead of deferred to only enable if a mod requests it + public void registerFluids(RegistryEvent.Register event) + { + if (enableMilkFluid) + { + // set up attributes + FluidAttributes.Builder attributesBuilder = FluidAttributes.builder(new ResourceLocation("forge", "block/milk_still"), new ResourceLocation("forge", "block/milk_flowing")).density(1024).viscosity(1024); + ForgeFlowingFluid.Properties properties = new ForgeFlowingFluid.Properties(MILK, FLOWING_MILK, attributesBuilder).bucket(() -> Items.MILK_BUCKET); + // register fluids + event.getRegistry().register(new ForgeFlowingFluid.Source(properties).setRegistryName(MILK.getId())); + event.getRegistry().register(new ForgeFlowingFluid.Flowing(properties).setRegistryName(FLOWING_MILK.getId())); + } + } + @SubscribeEvent //ModBus, can't use addListener due to nested genetics. public void registerRecipeSerialziers(RegistryEvent.Register> event) { diff --git a/src/main/java/net/minecraftforge/common/Tags.java b/src/main/java/net/minecraftforge/common/Tags.java index 94c7aacf45..b6375f8111 100644 --- a/src/main/java/net/minecraftforge/common/Tags.java +++ b/src/main/java/net/minecraftforge/common/Tags.java @@ -20,9 +20,11 @@ package net.minecraftforge.common; import net.minecraft.block.Block; +import net.minecraft.fluid.Fluid; import net.minecraft.item.DyeColor; import net.minecraft.item.Item; import net.minecraft.tags.BlockTags; +import net.minecraft.tags.FluidTags; import net.minecraft.tags.ItemTags; import net.minecraft.util.ResourceLocation; import net.minecraft.tags.ITag.INamedTag; @@ -33,6 +35,7 @@ public class Tags { Blocks.init(); Items.init(); + Fluids.init(); } public static class Blocks @@ -287,6 +290,18 @@ public class Tags } } + public static class Fluids + { + private static void init() {} + + public static final IOptionalNamedTag MILK = tag("milk"); + + private static IOptionalNamedTag tag(String name) + { + return FluidTags.createOptional(new ResourceLocation("forge", name)); + } + } + public interface IOptionalNamedTag extends INamedTag { /** diff --git a/src/main/java/net/minecraftforge/common/data/ForgeFluidTagsProvider.java b/src/main/java/net/minecraftforge/common/data/ForgeFluidTagsProvider.java new file mode 100644 index 0000000000..d0cd54fad5 --- /dev/null +++ b/src/main/java/net/minecraftforge/common/data/ForgeFluidTagsProvider.java @@ -0,0 +1,46 @@ +/* + * Minecraft Forge + * Copyright (c) 2016-2020. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation version 2.1 + * of the License. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +package net.minecraftforge.common.data; + +import net.minecraft.data.DataGenerator; +import net.minecraft.data.FluidTagsProvider; +import net.minecraftforge.common.ForgeMod; + +import static net.minecraftforge.common.Tags.Fluids.MILK; + +public class ForgeFluidTagsProvider extends FluidTagsProvider +{ + public ForgeFluidTagsProvider(DataGenerator gen, ExistingFileHelper existingFileHelper) + { + super(gen, "forge", existingFileHelper); + } + + @Override + public void registerTags() + { + getOrCreateBuilder(MILK).addOptional(ForgeMod.MILK.getId()).addOptional(ForgeMod.FLOWING_MILK.getId()); + } + + @Override + public String getName() + { + return "Forge Fluid Tags"; + } +} diff --git a/src/main/java/net/minecraftforge/fluids/FluidUtil.java b/src/main/java/net/minecraftforge/fluids/FluidUtil.java index 76a0d1637c..74091ac9e1 100644 --- a/src/main/java/net/minecraftforge/fluids/FluidUtil.java +++ b/src/main/java/net/minecraftforge/fluids/FluidUtil.java @@ -643,10 +643,6 @@ public class FluidUtil { return new ItemStack(Items.LAVA_BUCKET); } - else if (fluid.getRegistryName().equals(new ResourceLocation("milk"))) - { - return new ItemStack(Items.MILK_BUCKET); - } } return fluid.getAttributes().getBucket(fluidStack); diff --git a/src/main/java/net/minecraftforge/fluids/capability/wrappers/FluidBucketWrapper.java b/src/main/java/net/minecraftforge/fluids/capability/wrappers/FluidBucketWrapper.java index 9962a0fa27..9e2b348f40 100644 --- a/src/main/java/net/minecraftforge/fluids/capability/wrappers/FluidBucketWrapper.java +++ b/src/main/java/net/minecraftforge/fluids/capability/wrappers/FluidBucketWrapper.java @@ -26,6 +26,7 @@ import net.minecraft.fluid.Fluids; import net.minecraft.item.*; import net.minecraft.util.Direction; import net.minecraft.util.ResourceLocation; +import net.minecraftforge.common.ForgeMod; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.capabilities.ICapabilityProvider; import net.minecraftforge.common.util.LazyOptional; @@ -60,7 +61,7 @@ public class FluidBucketWrapper implements IFluidHandlerItem, ICapabilityProvide public boolean canFillFluidType(FluidStack fluid) { - if (fluid.getFluid() == Fluids.WATER || fluid.getFluid() == Fluids.LAVA || fluid.getFluid().getRegistryName().equals(new ResourceLocation("milk"))) + if (fluid.getFluid() == Fluids.WATER || fluid.getFluid() == Fluids.LAVA) { return true; } @@ -75,6 +76,10 @@ public class FluidBucketWrapper implements IFluidHandlerItem, ICapabilityProvide { return new FluidStack(((BucketItem)item).getFluid(), FluidAttributes.BUCKET_VOLUME); } + else if (item instanceof MilkBucketItem && ForgeMod.MILK.isPresent()) + { + return new FluidStack(ForgeMod.MILK.get(), FluidAttributes.BUCKET_VOLUME); + } else { return FluidStack.EMPTY; diff --git a/src/main/resources/assets/forge/lang/en_us.json b/src/main/resources/assets/forge/lang/en_us.json index 0f72f24bde..26ec0271da 100644 --- a/src/main/resources/assets/forge/lang/en_us.json +++ b/src/main/resources/assets/forge/lang/en_us.json @@ -169,5 +169,8 @@ "forge.swimSpeed": "Swim Speed", "forge.nameTagDistance": "Nametag Render Distance", "forge.entity_gravity": "Entity Gravity", - "generic.reachDistance": "Reach Distance" + "generic.reachDistance": "Reach Distance", + + "fluid.minecraft.milk": "Milk", + "fluid.minecraft.flowing_milk": "Milk" } diff --git a/src/main/resources/assets/forge/textures/block/milk_flowing.png b/src/main/resources/assets/forge/textures/block/milk_flowing.png new file mode 100644 index 0000000000000000000000000000000000000000..c1f4279aa4766184e45c753499212bd27deccdde GIT binary patch literal 3960 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 M07*qoM6N<$f;-&R-~a#s literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/forge/textures/block/milk_still.png.mcmeta b/src/main/resources/assets/forge/textures/block/milk_still.png.mcmeta new file mode 100644 index 0000000000..8e55e43baf --- /dev/null +++ b/src/main/resources/assets/forge/textures/block/milk_still.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 3 + } +} diff --git a/src/test/java/net/minecraftforge/debug/fluid/MilkFluidTest.java b/src/test/java/net/minecraftforge/debug/fluid/MilkFluidTest.java new file mode 100644 index 0000000000..f2ea7b7445 --- /dev/null +++ b/src/test/java/net/minecraftforge/debug/fluid/MilkFluidTest.java @@ -0,0 +1,54 @@ +/* + * Minecraft Forge + * Copyright (c) 2016-2020. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation version 2.1 + * of the License. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +package net.minecraftforge.debug.fluid; + +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.util.text.StringTextComponent; +import net.minecraftforge.common.ForgeMod; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.event.entity.player.PlayerInteractEvent; +import net.minecraftforge.fluids.FluidUtil; +import net.minecraftforge.fml.common.Mod; + +@Mod(MilkFluidTest.MODID) +public class MilkFluidTest +{ + protected static final String MODID = "milk_fluid_test"; + private static final boolean ENABLE = false; + + public MilkFluidTest() + { + if (ENABLE) + { + ForgeMod.enableMilkFluid(); + MinecraftForge.EVENT_BUS.addListener(MilkFluidTest::useMilk); + } + } + + private static void useMilk(PlayerInteractEvent event) + { + ItemStack stack = event.getItemStack(); + if (stack.getItem() == Items.MILK_BUCKET) + { + FluidUtil.getFluidContained(stack).ifPresent((fluid) -> event.getPlayer().sendStatusMessage(new StringTextComponent("Contains ").append(fluid.getDisplayName()), true)); + } + } +} diff --git a/src/test/resources/META-INF/mods.toml b/src/test/resources/META-INF/mods.toml index a7de59836a..d360239f8f 100644 --- a/src/test/resources/META-INF/mods.toml +++ b/src/test/resources/META-INF/mods.toml @@ -30,6 +30,8 @@ license="LGPL v2.1" modId="gravity_attribute_test" [[mods]] modId="new_fluid_test" +[[mods]] + modId="milk_fluid_test" [[mods]] modId="data_gen_test" [[mods]]