From b04a5779238c2b00e8a257b25cf3d7d9b4d486b2 Mon Sep 17 00:00:00 2001 From: player005 Date: Thu, 21 Nov 2024 23:23:04 +0100 Subject: [PATCH 1/3] allow modded milk to be used for cheese production --- .../alexthe666/rats/data/tags/RatsItemTags.java | 2 ++ .../rats/server/block/AutoCurdlerBlock.java | 5 +++-- .../server/block/entity/AutoCurdlerBlockEntity.java | 13 ++++++------- src/main/resources/data/forge/tags/milk_bucket.json | 6 ++++++ 4 files changed, 17 insertions(+), 9 deletions(-) create mode 100644 src/main/resources/data/forge/tags/milk_bucket.json diff --git a/src/main/java/com/github/alexthe666/rats/data/tags/RatsItemTags.java b/src/main/java/com/github/alexthe666/rats/data/tags/RatsItemTags.java index 72c2f570..eb521c2f 100644 --- a/src/main/java/com/github/alexthe666/rats/data/tags/RatsItemTags.java +++ b/src/main/java/com/github/alexthe666/rats/data/tags/RatsItemTags.java @@ -25,6 +25,8 @@ public class RatsItemTags extends ItemTagsProvider { public static final TagKey CHEESE_ITEMS = ItemTags.create(new ResourceLocation("forge", "cheese")); + public static final TagKey MILK_BUCKETS = ItemTags.create(new ResourceLocation("forge", "milk_bucket")); + public static final TagKey CRAFTING_TABLES = ItemTags.create(new ResourceLocation("forge", "crafting_tables")); public static final TagKey VEGETABLES = ItemTags.create(new ResourceLocation("forge", "vegetables")); public static final TagKey PLASTICS = ItemTags.create(new ResourceLocation("forge", "plastics")); diff --git a/src/main/java/com/github/alexthe666/rats/server/block/AutoCurdlerBlock.java b/src/main/java/com/github/alexthe666/rats/server/block/AutoCurdlerBlock.java index 776572ca..d758125a 100644 --- a/src/main/java/com/github/alexthe666/rats/server/block/AutoCurdlerBlock.java +++ b/src/main/java/com/github/alexthe666/rats/server/block/AutoCurdlerBlock.java @@ -1,5 +1,6 @@ package com.github.alexthe666.rats.server.block; +import com.github.alexthe666.rats.data.tags.RatsItemTags; import com.github.alexthe666.rats.registry.RatsBlockEntityRegistry; import com.github.alexthe666.rats.server.block.entity.AutoCurdlerBlockEntity; import com.github.alexthe666.rats.server.message.RatsNetworkHandler; @@ -84,7 +85,7 @@ public InteractionResult use(BlockState state, Level level, BlockPos pos, Player FluidStack fluidStack = FluidUtil.getFluidContained(stack).orElse(FluidStack.EMPTY); IFluidHandlerItem fluidHandler = FluidUtil.getFluidHandler(stack).resolve().get(); FluidStack drain = fluidHandler.drain(Integer.MAX_VALUE, IFluidHandler.FluidAction.SIMULATE); - if (drain.getAmount() > 0 || stack.is(Items.MILK_BUCKET)) { + if (drain.getAmount() > 0 || stack.is(RatsItemTags.MILK_BUCKETS)) { if (te.getTank().fill(fluidStack.copy(), IFluidHandler.FluidAction.SIMULATE) != 0) { int amount = te.getTank().fill(fluidStack.copy(), IFluidHandler.FluidAction.EXECUTE); level.playSound(null, pos, SoundEvents.BUCKET_EMPTY, SoundSource.BLOCKS, 1.0F, 1.0F); @@ -95,7 +96,7 @@ public InteractionResult use(BlockState state, Level level, BlockPos pos, Player if (stack != container) { stack.shrink(1); player.getInventory().add(container); - } else if (stack.is(Items.MILK_BUCKET)) { + } else if (stack.is(RatsItemTags.MILK_BUCKETS)) { stack.shrink(1); player.getInventory().add(new ItemStack(Items.BUCKET)); } diff --git a/src/main/java/com/github/alexthe666/rats/server/block/entity/AutoCurdlerBlockEntity.java b/src/main/java/com/github/alexthe666/rats/server/block/entity/AutoCurdlerBlockEntity.java index fd8b48e1..b274297a 100644 --- a/src/main/java/com/github/alexthe666/rats/server/block/entity/AutoCurdlerBlockEntity.java +++ b/src/main/java/com/github/alexthe666/rats/server/block/entity/AutoCurdlerBlockEntity.java @@ -1,6 +1,7 @@ package com.github.alexthe666.rats.server.block.entity; import com.github.alexthe666.rats.RatConfig; +import com.github.alexthe666.rats.data.tags.RatsItemTags; import com.github.alexthe666.rats.registry.RatsBlockEntityRegistry; import com.github.alexthe666.rats.registry.RatsBlockRegistry; import com.github.alexthe666.rats.registry.RatsParticleRegistry; @@ -25,11 +26,9 @@ import net.minecraft.world.inventory.AbstractContainerMenu; import net.minecraft.world.inventory.ContainerData; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.Items; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.entity.BaseContainerBlockEntity; import net.minecraft.world.level.block.state.BlockState; -import net.minecraftforge.common.ForgeMod; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.capabilities.ForgeCapabilities; import net.minecraftforge.common.util.LazyOptional; @@ -50,7 +49,7 @@ public class AutoCurdlerBlockEntity extends BaseContainerBlockEntity implements WorldlyContainer, MenuProvider { private static final int[] SLOTS_TOP = new int[]{0}; private static final int[] SLOTS_BOTTOM = new int[]{1}; - private final FluidTank tank = new FluidTank(FluidType.BUCKET_VOLUME * 5, fluidStack -> fluidStack.getFluid().isSame(ForgeMod.MILK.get())); + private final FluidTank tank = new FluidTank(FluidType.BUCKET_VOLUME * 5, fluidStack -> isMilkFluid(fluidStack)); final LazyOptional[] handlers = SidedInvWrapper.create(this, Direction.UP, Direction.DOWN); private final LazyOptional holder = LazyOptional.of(() -> this.tank); private NonNullList curdlerStacks = NonNullList.withSize(2, ItemStack.EMPTY); @@ -85,11 +84,11 @@ public AutoCurdlerBlockEntity(BlockPos pos, BlockState state) { } public static boolean isMilk(ItemStack stack) { - if (stack.is(Items.MILK_BUCKET)) { + if (stack.is(RatsItemTags.MILK_BUCKETS)) { return true; } Optional fluidStack = FluidUtil.getFluidContained(stack); - return fluidStack.isPresent() && fluidStack.get().getFluid().isSame(ForgeMod.MILK.get()); + return fluidStack.isPresent() && isMilkFluid(fluidStack.get()); } @Override @@ -165,7 +164,7 @@ public boolean stillValid(Player player) { } public boolean hasEnoughMilk() { - return this.tank.getFluidAmount() >= FluidType.BUCKET_VOLUME && this.isMilkFluid(this.tank.getFluid()); + return this.tank.getFluidAmount() >= FluidType.BUCKET_VOLUME && isMilkFluid(this.tank.getFluid()); } public static void tick(Level level, BlockPos pos, BlockState state, AutoCurdlerBlockEntity te) { @@ -271,7 +270,7 @@ public boolean canPlaceItem(int index, ItemStack stack) { } } - private boolean isMilkFluid(FluidStack fluid) { + private static boolean isMilkFluid(FluidStack fluid) { return fluid.getTranslationKey().contains("milk") || fluid.getTranslationKey().contains("Milk"); } diff --git a/src/main/resources/data/forge/tags/milk_bucket.json b/src/main/resources/data/forge/tags/milk_bucket.json new file mode 100644 index 00000000..a3133b34 --- /dev/null +++ b/src/main/resources/data/forge/tags/milk_bucket.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "minecraft:milk_bucket" + ] +} \ No newline at end of file From f6c0df43d52b917902fcee984a078f3323b9fb00 Mon Sep 17 00:00:00 2001 From: player005 Date: Thu, 21 Nov 2024 23:23:04 +0100 Subject: [PATCH 2/3] allow modded milk to be used for cheese production --- .../alexthe666/rats/data/tags/RatsItemTags.java | 2 ++ .../rats/server/block/AutoCurdlerBlock.java | 5 +++-- .../server/block/entity/AutoCurdlerBlockEntity.java | 13 ++++++------- src/main/resources/data/forge/tags/milk_bucket.json | 6 ++++++ 4 files changed, 17 insertions(+), 9 deletions(-) create mode 100644 src/main/resources/data/forge/tags/milk_bucket.json diff --git a/src/main/java/com/github/alexthe666/rats/data/tags/RatsItemTags.java b/src/main/java/com/github/alexthe666/rats/data/tags/RatsItemTags.java index 72c2f570..15d4c636 100644 --- a/src/main/java/com/github/alexthe666/rats/data/tags/RatsItemTags.java +++ b/src/main/java/com/github/alexthe666/rats/data/tags/RatsItemTags.java @@ -25,6 +25,8 @@ public class RatsItemTags extends ItemTagsProvider { public static final TagKey CHEESE_ITEMS = ItemTags.create(new ResourceLocation("forge", "cheese")); + public static final TagKey MILK_BUCKETS = ItemTags.create(new ResourceLocation("forge", "milk")); + public static final TagKey CRAFTING_TABLES = ItemTags.create(new ResourceLocation("forge", "crafting_tables")); public static final TagKey VEGETABLES = ItemTags.create(new ResourceLocation("forge", "vegetables")); public static final TagKey PLASTICS = ItemTags.create(new ResourceLocation("forge", "plastics")); diff --git a/src/main/java/com/github/alexthe666/rats/server/block/AutoCurdlerBlock.java b/src/main/java/com/github/alexthe666/rats/server/block/AutoCurdlerBlock.java index 776572ca..d758125a 100644 --- a/src/main/java/com/github/alexthe666/rats/server/block/AutoCurdlerBlock.java +++ b/src/main/java/com/github/alexthe666/rats/server/block/AutoCurdlerBlock.java @@ -1,5 +1,6 @@ package com.github.alexthe666.rats.server.block; +import com.github.alexthe666.rats.data.tags.RatsItemTags; import com.github.alexthe666.rats.registry.RatsBlockEntityRegistry; import com.github.alexthe666.rats.server.block.entity.AutoCurdlerBlockEntity; import com.github.alexthe666.rats.server.message.RatsNetworkHandler; @@ -84,7 +85,7 @@ public InteractionResult use(BlockState state, Level level, BlockPos pos, Player FluidStack fluidStack = FluidUtil.getFluidContained(stack).orElse(FluidStack.EMPTY); IFluidHandlerItem fluidHandler = FluidUtil.getFluidHandler(stack).resolve().get(); FluidStack drain = fluidHandler.drain(Integer.MAX_VALUE, IFluidHandler.FluidAction.SIMULATE); - if (drain.getAmount() > 0 || stack.is(Items.MILK_BUCKET)) { + if (drain.getAmount() > 0 || stack.is(RatsItemTags.MILK_BUCKETS)) { if (te.getTank().fill(fluidStack.copy(), IFluidHandler.FluidAction.SIMULATE) != 0) { int amount = te.getTank().fill(fluidStack.copy(), IFluidHandler.FluidAction.EXECUTE); level.playSound(null, pos, SoundEvents.BUCKET_EMPTY, SoundSource.BLOCKS, 1.0F, 1.0F); @@ -95,7 +96,7 @@ public InteractionResult use(BlockState state, Level level, BlockPos pos, Player if (stack != container) { stack.shrink(1); player.getInventory().add(container); - } else if (stack.is(Items.MILK_BUCKET)) { + } else if (stack.is(RatsItemTags.MILK_BUCKETS)) { stack.shrink(1); player.getInventory().add(new ItemStack(Items.BUCKET)); } diff --git a/src/main/java/com/github/alexthe666/rats/server/block/entity/AutoCurdlerBlockEntity.java b/src/main/java/com/github/alexthe666/rats/server/block/entity/AutoCurdlerBlockEntity.java index fd8b48e1..b274297a 100644 --- a/src/main/java/com/github/alexthe666/rats/server/block/entity/AutoCurdlerBlockEntity.java +++ b/src/main/java/com/github/alexthe666/rats/server/block/entity/AutoCurdlerBlockEntity.java @@ -1,6 +1,7 @@ package com.github.alexthe666.rats.server.block.entity; import com.github.alexthe666.rats.RatConfig; +import com.github.alexthe666.rats.data.tags.RatsItemTags; import com.github.alexthe666.rats.registry.RatsBlockEntityRegistry; import com.github.alexthe666.rats.registry.RatsBlockRegistry; import com.github.alexthe666.rats.registry.RatsParticleRegistry; @@ -25,11 +26,9 @@ import net.minecraft.world.inventory.AbstractContainerMenu; import net.minecraft.world.inventory.ContainerData; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.Items; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.entity.BaseContainerBlockEntity; import net.minecraft.world.level.block.state.BlockState; -import net.minecraftforge.common.ForgeMod; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.capabilities.ForgeCapabilities; import net.minecraftforge.common.util.LazyOptional; @@ -50,7 +49,7 @@ public class AutoCurdlerBlockEntity extends BaseContainerBlockEntity implements WorldlyContainer, MenuProvider { private static final int[] SLOTS_TOP = new int[]{0}; private static final int[] SLOTS_BOTTOM = new int[]{1}; - private final FluidTank tank = new FluidTank(FluidType.BUCKET_VOLUME * 5, fluidStack -> fluidStack.getFluid().isSame(ForgeMod.MILK.get())); + private final FluidTank tank = new FluidTank(FluidType.BUCKET_VOLUME * 5, fluidStack -> isMilkFluid(fluidStack)); final LazyOptional[] handlers = SidedInvWrapper.create(this, Direction.UP, Direction.DOWN); private final LazyOptional holder = LazyOptional.of(() -> this.tank); private NonNullList curdlerStacks = NonNullList.withSize(2, ItemStack.EMPTY); @@ -85,11 +84,11 @@ public AutoCurdlerBlockEntity(BlockPos pos, BlockState state) { } public static boolean isMilk(ItemStack stack) { - if (stack.is(Items.MILK_BUCKET)) { + if (stack.is(RatsItemTags.MILK_BUCKETS)) { return true; } Optional fluidStack = FluidUtil.getFluidContained(stack); - return fluidStack.isPresent() && fluidStack.get().getFluid().isSame(ForgeMod.MILK.get()); + return fluidStack.isPresent() && isMilkFluid(fluidStack.get()); } @Override @@ -165,7 +164,7 @@ public boolean stillValid(Player player) { } public boolean hasEnoughMilk() { - return this.tank.getFluidAmount() >= FluidType.BUCKET_VOLUME && this.isMilkFluid(this.tank.getFluid()); + return this.tank.getFluidAmount() >= FluidType.BUCKET_VOLUME && isMilkFluid(this.tank.getFluid()); } public static void tick(Level level, BlockPos pos, BlockState state, AutoCurdlerBlockEntity te) { @@ -271,7 +270,7 @@ public boolean canPlaceItem(int index, ItemStack stack) { } } - private boolean isMilkFluid(FluidStack fluid) { + private static boolean isMilkFluid(FluidStack fluid) { return fluid.getTranslationKey().contains("milk") || fluid.getTranslationKey().contains("Milk"); } diff --git a/src/main/resources/data/forge/tags/milk_bucket.json b/src/main/resources/data/forge/tags/milk_bucket.json new file mode 100644 index 00000000..a3133b34 --- /dev/null +++ b/src/main/resources/data/forge/tags/milk_bucket.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "minecraft:milk_bucket" + ] +} \ No newline at end of file From c0cce12e3cc6b62772ecae1c1810ef7e20c32aad Mon Sep 17 00:00:00 2001 From: Player005 <78274073+Player005@users.noreply.github.com> Date: Sat, 30 Nov 2024 22:00:47 +0100 Subject: [PATCH 3/3] Rename milk_bucket.json to milk.json --- .../resources/data/forge/tags/{milk_bucket.json => milk.json} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename src/main/resources/data/forge/tags/{milk_bucket.json => milk.json} (97%) diff --git a/src/main/resources/data/forge/tags/milk_bucket.json b/src/main/resources/data/forge/tags/milk.json similarity index 97% rename from src/main/resources/data/forge/tags/milk_bucket.json rename to src/main/resources/data/forge/tags/milk.json index a3133b34..264c81ed 100644 --- a/src/main/resources/data/forge/tags/milk_bucket.json +++ b/src/main/resources/data/forge/tags/milk.json @@ -3,4 +3,4 @@ "values": [ "minecraft:milk_bucket" ] -} \ No newline at end of file +}