Package ml.pluto7073.chemicals.handlers
Class ConsumableChemicalHandler
java.lang.Object
ml.pluto7073.chemicals.handlers.ConsumableChemicalHandler
- Direct Known Subclasses:
HalfLifeChemicalHandler,LinearChemicalHandler,StaticChemicalHandler
The base class representing a Chemical
Three pre-made handlers already exist:
The most realistic of the two. Exponentially ticks down the amount of the chemical in the player's body based on the half life in ticks specified
The simplest handler. Removed a set amount of chemical from the player each tick, until the amount reaches zero
For chemicals that stay persistent in the player until death or a maximum amount is reached, where the latter
will perform an action on the player defined in StaticChemicalHandler.onMaxAmountReached(Player)
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final net.minecraft.network.syncher.EntityDataAccessor<Float> static final ConsumableChemicalHandler -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionfloatadd(net.minecraft.world.entity.player.Player player, float amount) Adds the chemical to a playervoidappendTooltip(List<net.minecraft.network.chat.Component> tooltip, float amount, net.minecraft.world.item.ItemStack stack) Appends a tooltip to an item containing this chemical@Nullable com.mojang.brigadier.builder.LiteralArgumentBuilder<net.minecraft.commands.CommandSourceStack> Implement this method if you want custom syntax for this chemical's command using/chemicalsvoiddefineDataForPlayer(net.minecraft.network.syncher.SynchedEntityData.Builder data) formatAmount(float amount) Appends the units that this amount is tracked in to the amount, e.g.floatget(net.minecraft.world.entity.player.Player player) Gets the current amount of the chemical in the playerabstract Collection<net.minecraft.world.effect.MobEffectInstance> getEffectsForAmount(float amount, net.minecraft.world.level.Level level) Get a list of effects associated with an amount of this chemicalnet.minecraft.resources.ResourceLocationgetId()voidloadExtraPlayerData(net.minecraft.world.entity.player.Player player, net.minecraft.nbt.CompoundTag tag) Load any extra data required for the Chemical HandlervoidsaveExtraPlayerData(net.minecraft.world.entity.player.Player player, net.minecraft.nbt.CompoundTag tag) Store any extra data required for the Chemical Handlervoidset(net.minecraft.world.entity.player.Player player, float amount) Sets amount of chemical in a playerabstract voidtickPlayer(net.minecraft.world.entity.player.Player player) Updates the current amount of the chemical in the specified player
-
Field Details
-
EMPTY
-
accessor
-
-
Constructor Details
-
ConsumableChemicalHandler
public ConsumableChemicalHandler()
-
-
Method Details
-
tickPlayer
public abstract void tickPlayer(net.minecraft.world.entity.player.Player player) Updates the current amount of the chemical in the specified player- Parameters:
player- The player to update
-
get
public float get(net.minecraft.world.entity.player.Player player) Gets the current amount of the chemical in the player- Parameters:
player- The player to retrieve- Returns:
- Amount of the chemical
-
add
public float add(net.minecraft.world.entity.player.Player player, float amount) Adds the chemical to a player- Parameters:
player- The player to add toamount- The amount of the chemical to add- Returns:
- The new amount of the chemical in the player
-
set
public void set(net.minecraft.world.entity.player.Player player, float amount) Sets amount of chemical in a player- Parameters:
player- The player to setamount- Amount of chemical
-
getEffectsForAmount
public abstract Collection<net.minecraft.world.effect.MobEffectInstance> getEffectsForAmount(float amount, net.minecraft.world.level.Level level) Get a list of effects associated with an amount of this chemical- Parameters:
amount- Amount of the chemicallevel- The current Level, for utility purposes- Returns:
- A list of
MobEffectInstances
-
defineDataForPlayer
public void defineDataForPlayer(net.minecraft.network.syncher.SynchedEntityData.Builder data) -
appendTooltip
public void appendTooltip(List<net.minecraft.network.chat.Component> tooltip, float amount, net.minecraft.world.item.ItemStack stack) Appends a tooltip to an item containing this chemical- Parameters:
tooltip- The current list of tooltipsamount- The amount in the stackstack- The current stack, for utility purposes
-
getId
public net.minecraft.resources.ResourceLocation getId() -
getLanguageKey
-
formatAmount
Appends the units that this amount is tracked in to the amount, e.g.amount + "mg"oramount + "L" -
createCustomChemicalCommandExtension
@Nullable public @Nullable com.mojang.brigadier.builder.LiteralArgumentBuilder<net.minecraft.commands.CommandSourceStack> createCustomChemicalCommandExtension()Implement this method if you want custom syntax for this chemical's command using/chemicals- Returns:
- A
LiteralArgumentBuilderrepresenting the entire subcommand for this chemicalNote: It is recommended that this begin with
literal("YOUR_CHEMICAL_ID")
-
saveExtraPlayerData
public void saveExtraPlayerData(net.minecraft.world.entity.player.Player player, net.minecraft.nbt.CompoundTag tag) Store any extra data required for the Chemical Handler- Parameters:
player- The player to store data fromtag- The CompoundTag to store the data in
-
loadExtraPlayerData
public void loadExtraPlayerData(net.minecraft.world.entity.player.Player player, net.minecraft.nbt.CompoundTag tag) Load any extra data required for the Chemical Handler- Parameters:
player- The player to load totag- The tag to load from
-