Skip to content

Commit

Permalink
Reservoir hatch fixes (#2205)
Browse files Browse the repository at this point in the history
  • Loading branch information
kumquat-ir authored Nov 27, 2023
1 parent 4282590 commit 54f03af
Showing 1 changed file with 19 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
import net.minecraft.client.resources.I18n;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.text.ITextComponent;
Expand All @@ -25,6 +26,7 @@
import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.fluids.FluidRegistry;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.FluidTank;
import net.minecraftforge.fluids.IFluidTank;
import net.minecraftforge.fluids.capability.CapabilityFluidHandler;
import net.minecraftforge.items.IItemHandlerModifiable;
Expand All @@ -42,6 +44,7 @@
public class MetaTileEntityReservoirHatch extends MetaTileEntityMultiblockNotifiablePart
implements IMultiblockAbilityPart<IFluidTank> {

private static final int FLUID_AMOUNT = 2_000_000_000;
private final InfiniteWaterTank fluidTank;

public MetaTileEntityReservoirHatch(ResourceLocation metaTileEntityId) {
Expand Down Expand Up @@ -85,7 +88,7 @@ public <T> T getCapability(Capability<T> capability, EnumFacing side) {
}

private int getInventorySize() {
return Integer.MAX_VALUE;
return FLUID_AMOUNT;
}

@Override
Expand Down Expand Up @@ -146,9 +149,9 @@ public ModularUI.Builder createTankUI(IFluidTank fluidTank, String title, Entity

private Consumer<List<ITextComponent>> getFluidNameText(TankWidget tankWidget) {
return (list) -> {
String fluidName = tankWidget.getFluidUnlocalizedName();
if (!fluidName.isEmpty()) {
list.add(new TextComponentTranslation(fluidName));
TextComponentTranslation translation = tankWidget.getFluidTextComponent();
if (translation != null) {
list.add(translation);
}
};
}
Expand Down Expand Up @@ -177,15 +180,16 @@ public void addToolUsages(ItemStack stack, @Nullable World world, List<String> t

private static class InfiniteWaterTank extends NotifiableFluidTank {

private final FluidStack BIG_WATER = new FluidStack(FluidRegistry.WATER, Integer.MAX_VALUE);
private final FluidStack BIG_WATER = new FluidStack(FluidRegistry.WATER, FLUID_AMOUNT);

public InfiniteWaterTank(int capacity, MetaTileEntity entityToNotify) {
super(capacity, entityToNotify, false);
setFluid(BIG_WATER);
}

private void refillWater() {
if (BIG_WATER.amount != Integer.MAX_VALUE) {
BIG_WATER.amount = Integer.MAX_VALUE;
if (BIG_WATER.amount != FLUID_AMOUNT) {
BIG_WATER.amount = FLUID_AMOUNT;
onContentsChanged();
}
}
Expand Down Expand Up @@ -216,10 +220,15 @@ public boolean canFillFluidType(FluidStack fluid) {
return fluid.getFluid() == BIG_WATER.getFluid();
}

@Nullable
// serialization is unnecessary here, it should always have the same amount of fluid
@Override
public FluidTank readFromNBT(NBTTagCompound nbt) {
return this;
}

@Override
public FluidStack getFluid() {
return BIG_WATER;
public NBTTagCompound writeToNBT(NBTTagCompound nbt) {
return nbt;
}
}
}

0 comments on commit 54f03af

Please sign in to comment.