Class FixedInventoryViewVanillaWrapper

java.lang.Object
alexiil.mc.lib.attributes.item.compat.FixedInventoryViewVanillaWrapper
All Implemented Interfaces:
Convertible, AbstractItemInvView, FixedItemInvView, OpenWrapper
Direct Known Subclasses:
FixedInventoryVanillaWrapper

public class FixedInventoryViewVanillaWrapper extends Object implements FixedItemInvView, OpenWrapper
An FixedItemInv that wraps a vanilla Inventory.
  • Field Details

    • inv

      protected final net.minecraft.inventory.Inventory inv
  • Constructor Details

    • FixedInventoryViewVanillaWrapper

      public FixedInventoryViewVanillaWrapper(net.minecraft.inventory.Inventory inv)
  • Method Details

    • wrapInventory

      public static FixedInventoryViewVanillaWrapper wrapInventory(net.minecraft.inventory.Inventory inv)
    • getSlotCount

      public int getSlotCount()
      Specified by:
      getSlotCount in interface FixedItemInvView
      Returns:
      The number of slots in this inventory.
    • getInvStack

      public net.minecraft.item.ItemStack getInvStack(int slot)
      Specified by:
      getInvStack in interface FixedItemInvView
      Parameters:
      slot - The slot index. Must be a value between 0 (inclusive) and FixedItemInvView.getSlotCount() (exclusive) to be valid. (Like in arrays, lists, etc).
      Returns:
      The ItemStack that is held in the inventory at the moment. It is unspecified whether you are allowed to modify this returned ItemStack - however subinterfaces (like FixedItemInv) may have different limitations on this. Note that this stack might not be valid for this slot in either FixedItemInvView.isItemValidForSlot(int, ItemStack) or FixedItemInvView.getFilterForSlot(int).
    • isItemValidForSlot

      public boolean isItemValidForSlot(int slot, net.minecraft.item.ItemStack item)
      Description copied from interface: FixedItemInvView
      Checks 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 of ItemFilter.matches(ItemStack), so this must not care about the ItemStack.getCount(). Passing empty stacks will generally not return useful results.
      Specified by:
      isItemValidForSlot in interface FixedItemInvView
      Parameters:
      slot - The slot index. Must be a value between 0 (inclusive) and FixedItemInvView.getSlotCount() (exclusive) to be valid. (Like in arrays, lists, etc).
      item - The ItemStack to check. It's undefined what is returned if an empty stack is passed in, but it is not generally expected to be useful.
    • getMaxAmount

      public int getMaxAmount(int slot, net.minecraft.item.ItemStack stack)
      Specified by:
      getMaxAmount in interface FixedItemInvView
      Parameters:
      slot - The slot index. Must be a value between 0 (inclusive) and FixedItemInvView.getSlotCount() (exclusive) to be valid. (Like in arrays, lists, etc).
      stack - The stack to check for. May be an empty stack to get the maximum amount that this can hold of any stack.
      Returns:
      The maximum amount that the given slot can hold of the given stack. This method will ignore the current stack in FixedItemInvView.getInvStack(int). The default implementation just delegates to ItemStack.getMaxCount(). Note that any setters that this object implements (like FixedItemInv.setInvStack(int, ItemStack, Simulation) should reject stacks that are greater than this value. (and callers should only call this if they need to check the amounts separately. Note that it is meaningless to return values greater than the maximum amount an item can be stacked to here, and callers are free to throw an exception if this is violated. (Basically huge single-slot inventories shouldn't implement this interface).
    • getWrapped

      public Object getWrapped()
      Specified by:
      getWrapped in interface OpenWrapper
      Returns:
      The object that this wraps, or null if the wrapped object cannot be converted cleanly without exposing additional details.

      For example LBA's Inventory to FixedItemInvView wrapper (FixedInventoryViewVanillaWrapper) implements this to return the Inventory, but the SidedInventory variant (FixedSidedInventoryVanillaWrapper) returns null, as it is not possible to cleanly open the original inventory without exposing additional slots.