Class ItemAccessEnergyHandler
- All Implemented Interfaces:
EnergyHandler
EnergyHandler backed by an ItemAccess.
It can store any level of energy up to a given capacity, and has per-operation insertion and extraction limits.
The energy level is stored in an Integer data component.
To use this class, register a new DataComponentType which holds an Integer for your item.
Then reference that component from your ICapabilityProvider passed to RegisterCapabilitiesEvent.registerItem(net.neoforged.neoforge.capabilities.ItemCapability<T, C>, net.neoforged.neoforge.capabilities.ICapabilityProvider<net.minecraft.world.item.ItemStack, C, T>, net.minecraft.world.level.ItemLike...) to create an instance of this class.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final intprotected final DataComponentType<Integer> protected final ItemAccessprotected final intprotected final intprotected final Item -
Constructor Summary
ConstructorsConstructorDescriptionItemAccessEnergyHandler(ItemAccess itemAccess, DataComponentType<Integer> energyComponent, int capacity) Creates a newItemAccessEnergyHandlerinstance with0stored energy, and no per-operation limit.ItemAccessEnergyHandler(ItemAccess itemAccess, DataComponentType<Integer> energyComponent, int capacity, int maxTransfer) Creates a newItemAccessEnergyHandlerinstance with0stored energy, and the same per-insert and per-extraction limit.ItemAccessEnergyHandler(ItemAccess itemAccess, DataComponentType<Integer> energyComponent, int capacity, int maxInsert, int maxExtract) Creates a newItemAccessEnergyHandlerinstance. -
Method Summary
Modifier and TypeMethodDescriptionintextract(int amount, TransactionContext transaction) Extracts up to the given amount of energy from the handler.longReturns the amount of energy currently stored, as along.protected intgetAmountFrom(ItemResource accessResource) Retrieves the amount stored in the current contents of the item access.longReturns the capacity of the handler, irrespective of the current amount, as along.intinsert(int amount, TransactionContext transaction) Inserts up to the given amount of energy into the handler.protected ItemResourceupdate(ItemResource accessResource, int newAmount) Returns a resource with updated amount.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface net.neoforged.neoforge.transfer.energy.EnergyHandler
getAmountAsInt, getCapacityAsInt
-
Field Details
-
itemAccess
-
validItem
-
energyComponent
-
capacity
protected final int capacity -
maxInsert
protected final int maxInsert -
maxExtract
protected final int maxExtract
-
-
Constructor Details
-
ItemAccessEnergyHandler
public ItemAccessEnergyHandler(ItemAccess itemAccess, DataComponentType<Integer> energyComponent, int capacity) Creates a newItemAccessEnergyHandlerinstance with0stored energy, and no per-operation limit.- See Also:
-
ItemAccessEnergyHandler
public ItemAccessEnergyHandler(ItemAccess itemAccess, DataComponentType<Integer> energyComponent, int capacity, int maxTransfer) Creates a newItemAccessEnergyHandlerinstance with0stored energy, and the same per-insert and per-extraction limit.- See Also:
-
ItemAccessEnergyHandler
public ItemAccessEnergyHandler(ItemAccess itemAccess, DataComponentType<Integer> energyComponent, int capacity, int maxInsert, int maxExtract) Creates a newItemAccessEnergyHandlerinstance.- Parameters:
itemAccess- item access backing this handlerenergyComponent- type of the data component used to store the energy amountcapacity- maximum capacity of the handlermaxInsert- maximum amount that can be accepted in each call toinsert(int, net.neoforged.neoforge.transfer.transaction.TransactionContext)maxExtract- maximum amount that can be accepted in each call toextract(int, net.neoforged.neoforge.transfer.transaction.TransactionContext)- Throws:
IllegalArgumentException- if any of the int arguments is negative
-
-
Method Details
-
getAmountFrom
Retrieves the amount stored in the current contents of the item access. -
update
Returns a resource with updated amount.- Parameters:
accessResource- current resource, before the updatenewAmount- the new amount- Returns:
accessResourceupdated with the new amount, orItemResource.EMPTYif the new amount cannot be stored
-
getAmountAsLong
public long getAmountAsLong()Description copied from interface:EnergyHandlerReturns the amount of energy currently stored, as along.In general, energy handlers can report
longamounts. However, if the handler is known to only support amounts up toInteger.MAX_VALUE, or if the caller prefers to deal inints only, the int-returning overload can be used instead.The returned amount must be non-negative.
- Specified by:
getAmountAsLongin interfaceEnergyHandler- Returns:
- the amount as a long
- See Also:
-
getCapacityAsLong
public long getCapacityAsLong()Description copied from interface:EnergyHandlerReturns the capacity of the handler, irrespective of the current amount, as along.In general, energy handlers can report
longcapacities. However, if the handler is known to only support capacities up toInteger.MAX_VALUE, or if the caller prefers to deal inints only, the int-returning overload can be used instead.This function serves as a hint on the maximum amount the energy handler might contain, for example the handler can be considered full if
amount >= capacity. Note that the returned capacity may overestimate the actual allowed amount, and it might be smaller than the current amount. The only way to know if a handler will accept a resource, is to try toinsertit.- Specified by:
getCapacityAsLongin interfaceEnergyHandler- Returns:
- the capacity, as a long
- See Also:
-
insert
Description copied from interface:EnergyHandlerInserts up to the given amount of energy into the handler.Changes to the handler are made in the context of a transaction.
- Specified by:
insertin interfaceEnergyHandler- Parameters:
amount- The maximum amount of energy to insert. Must be non-negative.transaction- The transaction that this operation is part of.- Returns:
- The amount that was inserted. Between
0(inclusive, nothing was inserted) andamount(inclusive, everything was inserted).
-
extract
Description copied from interface:EnergyHandlerExtracts up to the given amount of energy from the handler.Changes to the handler are made in the context of a transaction.
- Specified by:
extractin interfaceEnergyHandler- Parameters:
amount- The maximum amount of energy to extract. Must be non-negative.transaction- The transaction that this operation is part of.- Returns:
- The amount that was extracted. Between
0(inclusive, nothing was extracted) andamount(inclusive, everything was extracted).
-