Package net.neoforged.neoforge.fluids
Class FluidStack
java.lang.Object
net.neoforged.neoforge.fluids.FluidStack
- All Implemented Interfaces:
DataComponentGetter,DataComponentHolder,IDataComponentHolderExtension,MutableDataComponentHolder
ItemStack equivalent for fluids.
The main difference is that a fluid stack is always required to have an amount, while an item stack defaults to 1.
Another difference is that the component prototype of a fluid stack is currently always empty, while an item stack gets its component prototype from the item.
Most methods in this class are adapted from ItemStack.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate intstatic final com.mojang.serialization.Codec<FluidStack> A standard codec for fluid stacks that does not accept empty stacks.private final PatchedDataComponentMapstatic final FluidStackprivate final Fluidprivate static final org.slf4j.Loggerstatic final com.mojang.serialization.MapCodec<FluidStack> A standard map codec for fluid stacks that does not accept empty stacks.static final com.mojang.serialization.Codec<FluidStack> A standard codec for fluid stacks that accepts empty stacks, serializing them as{}.static final StreamCodec<RegistryFriendlyByteBuf, FluidStack> A stream codec for fluid stacks that accepts empty stacks.static final StreamCodec<RegistryFriendlyByteBuf, FluidStack> A stream codec for fluid stacks that does not accept empty stacks. -
Constructor Summary
ConstructorsModifierConstructorDescriptionprivateFluidStack(@Nullable Void unused) FluidStack(Holder<Fluid> fluid, int amount) FluidStack(Holder<Fluid> fluid, int amount, DataComponentPatch patch) FluidStack(Fluid fluid, int amount) FluidStack(Fluid fluid, int amount, DataComponentPatch patch) privateFluidStack(Fluid fluid, int amount, PatchedDataComponentMap components) -
Method Summary
Modifier and TypeMethodDescriptionvoidapplyComponents(DataComponentMap components) Applies a set of component changes to this stack.voidApplies a set of component changes to this stack.copy()Creates a copy of this fluid stack.Creates a copy of this stack with0amount.copyWithAmount(int amount) Creates a copy of this fluid stack with the given amount.static com.mojang.serialization.Codec<FluidStack> fixedAmountCodec(int amount) A standard codec for fluid stacks that always deserializes with a fixed amount, and does not accept empty stacks.intReturns the amount of this stack.Returns thedescription idof this stack.getFluid()Returns the fluid in this stack, orFluids.EMPTYif this stack is empty.Returns the fluid type of this stack.Returns the hover name of this stack.getTags()voidgrow(int addedAmount) Adds the given amount to this stack.static inthashFluidAndComponents(@Nullable FluidStack stack) Hashes the fluid and components of this stack, ignoring the amount.booleanbooleanbooleanbooleanbooleanbooleanCheck if the fluid type of this stack is equal to the given fluid type.booleanbooleanisEmpty()Checks if this fluid stack is empty.static booleanisSameFluid(FluidStack first, FluidStack second) Checks if the two fluid stacks have the same fluid.static booleanisSameFluidSameComponents(FluidStack first, FluidStack second) Checks if the two fluid stacks have the same fluid and components.static com.mojang.serialization.MapCodec<FluidStack> lenientOptionalFieldOf(String fieldName) voidlimitSize(int amount) Limits the amount of this stack is at most the given amount.static booleanmatches(FluidStack first, FluidStack second) Checks if the two fluid stacks are equal.<T> Tremove(DataComponentType<? extends T> type) Removes a data component.<T> Tset(DataComponentType<T> type, T component) Sets a data component.voidsetAmount(int amount) Sets the amount of this stack.voidshrink(int removedAmount) Removes the given amount from this stack.split(int amount) Splits off a stack of the given amount of this stack and reduces this stack by the amount.toString()Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface net.minecraft.core.component.DataComponentGetter
get, getOrDefault, getTyped, hasMethods inherited from interface net.minecraft.core.component.DataComponentHolder
get, getAllOfType, getOrDefault, hasMethods inherited from interface net.neoforged.neoforge.common.extensions.IDataComponentHolderExtension
addToTooltip, addToTooltip
-
Field Details
-
FLUID_NON_EMPTY_CODEC
-
MAP_CODEC
A standard map codec for fluid stacks that does not accept empty stacks. -
CODEC
A standard codec for fluid stacks that does not accept empty stacks. -
OPTIONAL_CODEC
A standard codec for fluid stacks that accepts empty stacks, serializing them as{}. -
OPTIONAL_STREAM_CODEC
A stream codec for fluid stacks that accepts empty stacks. -
STREAM_CODEC
A stream codec for fluid stacks that does not accept empty stacks. -
LOGGER
private static final org.slf4j.Logger LOGGER -
EMPTY
-
amount
private int amount -
fluid
-
components
-
-
Constructor Details
-
FluidStack
-
FluidStack
-
FluidStack
-
FluidStack
-
FluidStack
-
FluidStack
-
-
Method Details
-
fixedAmountCodec
A standard codec for fluid stacks that always deserializes with a fixed amount, and does not accept empty stacks.Fluid equivalent of
ItemStack.SINGLE_ITEM_CODEC. -
getComponents
- Specified by:
getComponentsin interfaceDataComponentHolder
-
getComponentsPatch
-
immutableComponents
-
isComponentsPatchEmpty
public boolean isComponentsPatchEmpty() -
isEmpty
public boolean isEmpty()Checks if this fluid stack is empty. -
split
Splits off a stack of the given amount of this stack and reduces this stack by the amount. -
copyAndClear
Creates a copy of this stack with0amount. -
getFluid
Returns the fluid in this stack, orFluids.EMPTYif this stack is empty. -
getFluidHolder
-
is
-
is
-
is
-
is
-
is
-
getTags
-
copy
Creates a copy of this fluid stack. -
copyWithAmount
Creates a copy of this fluid stack with the given amount. -
matches
Checks if the two fluid stacks are equal. This checks the fluid, amount, and components.- Returns:
trueif the two fluid stacks have equal fluid, amount, and components
-
isSameFluid
Checks if the two fluid stacks have the same fluid. Ignores amount and components.- Returns:
trueif the two fluid stacks have the same fluid
-
isSameFluidSameComponents
Checks if the two fluid stacks have the same fluid and components. Ignores amount.- Returns:
trueif the two fluid stacks have the same fluid and components
-
lenientOptionalFieldOf
public static com.mojang.serialization.MapCodec<FluidStack> lenientOptionalFieldOf(String fieldName) -
hashFluidAndComponents
Hashes the fluid and components of this stack, ignoring the amount. -
getDescriptionId
Returns thedescription idof this stack. -
toString
-
set
Sets a data component.- Specified by:
setin interfaceMutableDataComponentHolder
-
remove
Removes a data component.- Specified by:
removein interfaceMutableDataComponentHolder
-
applyComponents
Applies a set of component changes to this stack.- Specified by:
applyComponentsin interfaceMutableDataComponentHolder
-
applyComponents
Applies a set of component changes to this stack.- Specified by:
applyComponentsin interfaceMutableDataComponentHolder
-
getHoverName
Returns the hover name of this stack. -
getAmount
public int getAmount()Returns the amount of this stack. -
setAmount
public void setAmount(int amount) Sets the amount of this stack. -
limitSize
public void limitSize(int amount) Limits the amount of this stack is at most the given amount. -
grow
public void grow(int addedAmount) Adds the given amount to this stack. -
shrink
public void shrink(int removedAmount) Removes the given amount from this stack. -
getFluidType
Returns the fluid type of this stack. -
is
Check if the fluid type of this stack is equal to the given fluid type.
-