Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve compatibility with custom modded milk for cheese making #901

Open
wants to merge 4 commits into
base: 1.20
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ public class RatsItemTags extends ItemTagsProvider {

public static final TagKey<Item> CHEESE_ITEMS = ItemTags.create(new ResourceLocation("forge", "cheese"));

public static final TagKey<Item> MILK_BUCKETS = ItemTags.create(new ResourceLocation("forge", "milk"));

public static final TagKey<Item> CRAFTING_TABLES = ItemTags.create(new ResourceLocation("forge", "crafting_tables"));
public static final TagKey<Item> VEGETABLES = ItemTags.create(new ResourceLocation("forge", "vegetables"));
public static final TagKey<Item> PLASTICS = ItemTags.create(new ResourceLocation("forge", "plastics"));
Expand Down
Original file line number Diff line number Diff line change
@@ -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;
Expand Down Expand Up @@ -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);
Expand All @@ -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));
}
Expand Down
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -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;
Expand All @@ -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<? extends IItemHandler>[] handlers = SidedInvWrapper.create(this, Direction.UP, Direction.DOWN);
private final LazyOptional<IFluidHandler> holder = LazyOptional.of(() -> this.tank);
private NonNullList<ItemStack> curdlerStacks = NonNullList.withSize(2, ItemStack.EMPTY);
Expand Down Expand Up @@ -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> fluidStack = FluidUtil.getFluidContained(stack);
return fluidStack.isPresent() && fluidStack.get().getFluid().isSame(ForgeMod.MILK.get());
return fluidStack.isPresent() && isMilkFluid(fluidStack.get());
}

@Override
Expand Down Expand Up @@ -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) {
Expand Down Expand Up @@ -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");
}

Expand Down
6 changes: 6 additions & 0 deletions src/main/resources/data/forge/tags/milk.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"minecraft:milk_bucket"
]
}