Class FullFixedItemInv
- All Implemented Interfaces:
Convertible,AbstractItemInvView,FixedItemInv,FixedItemInv.CopyingFixedItemInv,FixedItemInvView,ItemExtractable,ItemInsertable,ItemTransferable,LimitedConsumer<net.minecraft.item.ItemStack>,Saveable
- Direct Known Subclasses:
SimpleFixedItemInv
FixedItemInv.CopyingFixedItemInv
exposes.
Extending classes should take care to override getFilterForSlot(int) if they also override
isItemValidForSlot(int, ItemStack).
-
Nested Class Summary
Nested classes/interfaces inherited from interface alexiil.mc.lib.attributes.item.AbstractItemInvView
AbstractItemInvView.DefaultChangeTrackerNested classes/interfaces inherited from interface alexiil.mc.lib.attributes.item.FixedItemInv
FixedItemInv.CopyingFixedItemInv, FixedItemInv.ModifiableFixedItemInv -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final net.minecraft.util.collection.DefaultedList<net.minecraft.item.ItemStack> -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionaddListener(ItemInvSlotChangeListener listener, ListenerRemovalToken removalToken) Adds the given listener to this inventory, such that theItemInvSlotChangeListener.onChange(FixedItemInvView, int, ItemStack, ItemStack)will be called every time that this inventory changes.net.minecraft.item.ItemStackattemptAnyExtraction(int maxAmount, Simulation simulation) net.minecraft.item.ItemStackattemptExtraction(ItemFilter filter, int maxAmount, Simulation simulation) net.minecraft.item.ItemStackattemptInsertion(net.minecraft.item.ItemStack stack, Simulation simulation) Inserts the given stack into this insertable, and returns the excess.protected final voidfireSlotChange(int slot, net.minecraft.item.ItemStack previous, net.minecraft.item.ItemStack current) voidfromTag(net.minecraft.nbt.NbtCompound tag) intgetFilterForSlot(int slot) ExposesFixedItemInvView.isItemValidForSlot(int, ItemStack)as a (potentially) readable filter.Returns anItemFilterto determine ifItemInsertable.attemptInsertion(ItemStack, Simulation)will accept a stack.final intnet.minecraft.item.ItemStackgetUnmodifiableInvStack(int slot) voidbooleanisItemValidForSlot(int slot, net.minecraft.item.ItemStack item) Checks to see if the given stack would be valid for this slot, ignoring the current contents.booleansetInvStack(int slot, net.minecraft.item.ItemStack to, Simulation simulation) Sets the stack in the given slot to the given stack.voidsetOwnerListener(ItemInvSlotChangeListener ownerListener) Sets the owner listener callback, which is never removed from the listener list wheninvalidateListeners()is called.final net.minecraft.nbt.NbtCompoundtoTag()net.minecraft.nbt.NbtCompoundtoTag(net.minecraft.nbt.NbtCompound tag) Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface alexiil.mc.lib.attributes.item.FixedItemInv
createLimitedFixedInv, extractStack, forceSetInvStack, getExtractable, getInsertable, getMappedInv, getSubInv, getTransferable, insertStack, modifySlot, slotIterableMethods inherited from interface alexiil.mc.lib.attributes.item.FixedItemInv.CopyingFixedItemInv
addListener, getInvStack, getSlotMethods inherited from interface alexiil.mc.lib.attributes.item.FixedItemInvView
convertTo, getFixedView, getMaxAmount, offerSelfAsAttribute, stackIterableMethods inherited from interface alexiil.mc.lib.attributes.item.ItemExtractable
couldExtractAnything, extract, extract, extract, getPureExtractableMethods inherited from interface alexiil.mc.lib.attributes.item.ItemInsertable
getPureInsertable, insert, offer, offer, wouldAccept, wouldPartiallyAcceptMethods inherited from interface alexiil.mc.lib.attributes.item.ItemTransferable
filtered
-
Field Details
-
slots
protected final net.minecraft.util.collection.DefaultedList<net.minecraft.item.ItemStack> slots
-
-
Constructor Details
-
FullFixedItemInv
public FullFixedItemInv(int invSize)
-
-
Method Details
-
getSlotCount
public final int getSlotCount()- Specified by:
getSlotCountin interfaceFixedItemInvView- Returns:
- The number of slots in this inventory.
-
getUnmodifiableInvStack
public net.minecraft.item.ItemStack getUnmodifiableInvStack(int slot) - Specified by:
getUnmodifiableInvStackin interfaceFixedItemInv.CopyingFixedItemInv- Returns:
- The
ItemStackthat is held by this inventory. Modifying the returnedItemStackin any way will (most likely - depending on the implementation) throw an exception (at some point).
-
isItemValidForSlot
public boolean isItemValidForSlot(int slot, net.minecraft.item.ItemStack item) Description copied from interface:FixedItemInvChecks to see if the given stack would be valid for this slot, ignoring the current contents. Note that this method should adhere to the requirements ofItemFilter.matches(ItemStack), so this must not care about theItemStack.getCount(). Passingemptystacks will generally not return useful results.Note that just because an
ItemStackpasses this validity test, and is stackable with the current stack, does not mean that you can insert the stack into this inventory..- Specified by:
isItemValidForSlotin interfaceFixedItemInv- Specified by:
isItemValidForSlotin interfaceFixedItemInvView- Parameters:
slot- The slot index. Must be a value between 0 (inclusive) andFixedItemInvView.getSlotCount()(exclusive) to be valid. (Like in arrays, lists, etc).item- TheItemStackto check. It's undefined what is returned if anemptystack is passed in, but it is not generally expected to be useful.
-
getFilterForSlot
Description copied from interface:FixedItemInvViewExposesFixedItemInvView.isItemValidForSlot(int, ItemStack)as a (potentially) readable filter.- Specified by:
getFilterForSlotin interfaceFixedItemInvView- Parameters:
slot- The slot index. Must be a value between 0 (inclusive) andFixedItemInvView.getSlotCount()(exclusive) to be valid. (Like in arrays, lists, etc).- Returns:
- An
ItemFilterfor what may be present in this slot. If this slot is filtered by anItemFilterinternally then it is highly recommended that this be overridden to return that filter rather than the default opaque wrapper aroundFixedItemInvView.isItemValidForSlot(int, ItemStack).
-
getGroupedInv
- Specified by:
getGroupedInvin interfaceFixedItemInv- Specified by:
getGroupedInvin interfaceFixedItemInvView- Returns:
- A
GroupedItemInvfor this inventory. The returned value must always be valid for the lifetime of thisFixedItemInvobject. (In other words it must always be valid to cache this returned value and use it alongside a cached instance of this object).
-
getChangeValue
public int getChangeValue()- Specified by:
getChangeValuein interfaceAbstractItemInvView- Returns:
- A value that indicates whether an inventory might have changed if it differs from the last value
returned. This number doesn't have to start at 0, but it must change every time that the inventory is
changed, although it can change even without any observable changes to this inventory.
Inventories that don't support this might increment the change number every time that this is called - so you should never write a loop that depends on the returned value settling down on a particular value.
Inventories that support
listenershighly encouraged to support this - by definition if an inventory knows when it changed then it should be able to count the number of changes. It is also implied that any changes to this value will also invoke every registeredInvMarkDirtyListener.The default implementation returns an ever-increasing value.
-
addListener
public ListenerToken addListener(ItemInvSlotChangeListener listener, ListenerRemovalToken removalToken) Description copied from interface:FixedItemInv.CopyingFixedItemInvAdds the given listener to this inventory, such that theItemInvSlotChangeListener.onChange(FixedItemInvView, int, ItemStack, ItemStack)will be called every time that this inventory changes. However if this inventory doesn't support listeners then this will return a nulltoken.The default implementation refuses to accept any listeners, but implementations are highly encouraged to override this if they are able to!
- Specified by:
addListenerin interfaceFixedItemInv.CopyingFixedItemInvremovalToken- A token that will be called whenever the given listener is removed from this inventory (or if this inventory itself is unloaded or otherwise invalidated).- Returns:
- A token that represents the listener, or null if the listener could not be added.
-
setOwnerListener
Sets the owner listener callback, which is never removed from the listener list wheninvalidateListeners()is called. -
invalidateListeners
public void invalidateListeners() -
fireSlotChange
protected final void fireSlotChange(int slot, net.minecraft.item.ItemStack previous, net.minecraft.item.ItemStack current) -
setInvStack
Description copied from interface:FixedItemInvSets the stack in the given slot to the given stack.- Specified by:
setInvStackin interfaceFixedItemInvto- The newItemStack. It is not defined if you are allowed to modify this or not.- Returns:
- True if the modification was allowed, false otherwise. (For example if the given stack doesn't pass the
FixedItemInvView.isItemValidForSlot(int, ItemStack)test).
-
toTag
public final net.minecraft.nbt.NbtCompound toTag() -
toTag
public net.minecraft.nbt.NbtCompound toTag(net.minecraft.nbt.NbtCompound tag) -
fromTag
public void fromTag(net.minecraft.nbt.NbtCompound tag) -
attemptInsertion
public net.minecraft.item.ItemStack attemptInsertion(net.minecraft.item.ItemStack stack, Simulation simulation) Description copied from interface:ItemInsertableInserts the given stack into this insertable, and returns the excess.- Specified by:
attemptInsertionin interfaceItemInsertable- Parameters:
stack- The incoming stack. Must not be modified by this call.simulation- IfSimulation.SIMULATEthen this shouldn't modify anything.- Returns:
- the excess
ItemStackthat wasn't accepted. This will be independent of this insertable, however it might be the given stack instead of a completely new object.
-
getInsertionFilter
Description copied from interface:ItemInsertableReturns anItemFilterto determine ifItemInsertable.attemptInsertion(ItemStack, Simulation)will accept a stack. The default implementation is a call toattemptInsertion(stack,Simulation.SIMULATE), and it is only useful to override this if the resulting filter contains information that might be usable by the caller.- Specified by:
getInsertionFilterin interfaceItemInsertable- Returns:
- A filter to determine if
ItemInsertable.attemptInsertion(ItemStack, Simulation)will accept the entirety of a given stack.
-
attemptExtraction
public net.minecraft.item.ItemStack attemptExtraction(ItemFilter filter, int maxAmount, Simulation simulation) Description copied from interface:ItemExtractable- Specified by:
attemptExtractionin interfaceItemExtractablemaxAmount- The maximum number of items that can be extracted. Negative numbers throw an exception.simulation- IfSimulation.SIMULATEthen this should return the same result that a call withSimulation.ACTIONwould do, but without modifying anything else.- Returns:
- A new, independent
ItemStackthat was extracted.
-
attemptAnyExtraction
Description copied from interface:ItemExtractable- Specified by:
attemptAnyExtractionin interfaceItemExtractable
-