Class FakeHumanInventory

java.lang.Object
cn.nukkit.inventory.BaseInventory
cn.nukkit.inventory.FakeHumanInventory
All Implemented Interfaces:
Inventory

@PowerNukkitXOnly @Since("1.19.50-r3") public class FakeHumanInventory extends BaseInventory
这个Inventory是一个hack实现,用来实现EntityIntelligentHuman的背包实现,它无法被open 和 close,因为虚拟人类不会自己打开物品栏

它的BaseInventory.viewers永远为空,因为不允许打开它

  • Field Details

    • itemInHandIndex

      protected int itemInHandIndex
  • Constructor Details

  • Method Details

    • getSize

      public int getSize()
      Description copied from interface: Inventory
      获取该库存大小
      Specified by:
      getSize in interface Inventory
      Overrides:
      getSize in class BaseInventory
    • setSize

      public void setSize(int size)
      Overrides:
      setSize in class BaseInventory
    • isHotbarSlot

      public boolean isHotbarSlot(int slot)
      判断这个格子位置是否在物品栏(0-9)
      Parameters:
      slot - 格子位置
    • getHeldItemIndex

      public int getHeldItemIndex()
      获取EntityIntelligentHuman的手持物品的索引位置
    • setHeldItemIndex

      public void setHeldItemIndex(int index)
      设置EntityIntelligentHuman的手持物品的索引位置
      Parameters:
      index - 索引位置
    • getItemInHand

      public Item getItemInHand()
      获取EntityIntelligentHuman的手持物品
    • setItemInHand

      public boolean setItemInHand(Item item)
      设置EntityIntelligentHuman的手持物品,这个方法会自动刷新客户端显示
    • sendHeldItem

      public void sendHeldItem(Player... players)
      发送数据包给客户端,这个方法可以刷新被更改的手持物品显示
    • sendHeldItem

      public void sendHeldItem(Collection<Player> players)
      发送数据包给客户端,这个方法可以刷新被更改的手持物品显示
    • onSlotChange

      public void onSlotChange(int index, Item before, boolean send)
      Specified by:
      onSlotChange in interface Inventory
      Overrides:
      onSlotChange in class BaseInventory
    • getHotbarSize

      public int getHotbarSize()
      获取物品栏大小
    • getArmorItem

      public Item getArmorItem(int index)
      获取盔甲栏对应索引位置的物品
      Parameters:
      index - 索引位置(0-4)
    • setArmorItem

      public boolean setArmorItem(int index, Item item)
      设置盔甲栏对应索引位置的物品
      Parameters:
      index - 索引位置(0-4)
      item - 要设置的物品
    • setArmorItem

      public boolean setArmorItem(int index, Item item, boolean ignoreArmorEvents)
      设置盔甲栏对应索引位置的物品
      Parameters:
      index - 索引位置(0-4)
      item - 要设置的物品
      ignoreArmorEvents - 是否忽略盔甲更新事件
    • getHelmet

      public Item getHelmet()
      获取盔甲栏中头盔位置对应的物品
    • getChestplate

      public Item getChestplate()
      获取盔甲栏中胸甲位置对应的物品
    • getLeggings

      public Item getLeggings()
      获取盔甲栏中裤腿位置对应的物品
    • getBoots

      public Item getBoots()
      获取盔甲栏中鞋子位置对应的物品
    • setHelmet

      public boolean setHelmet(Item helmet)
      设置盔甲栏中头盔位置对应的物品
      Parameters:
      helmet - the helmet
      Returns:
      the helmet
    • setChestplate

      public boolean setChestplate(Item chestplate)
      设置盔甲栏中胸甲位置对应的物品
      Parameters:
      chestplate - the chestplate
      Returns:
      the chestplate
    • setLeggings

      public boolean setLeggings(Item leggings)
      设置盔甲栏中裤腿位置对应的物品
      Parameters:
      leggings - the leggings
      Returns:
      the leggings
    • setBoots

      public boolean setBoots(Item boots)
      设置盔甲栏中鞋子位置对应的物品
      Parameters:
      boots - the boots
      Returns:
      the boots
    • setItem

      public boolean setItem(int index, Item item)
      Description copied from interface: Inventory
      设置该库存指定索引处的物品
      Parameters:
      index - the index
      item - the item
      Returns:
      the item
    • setItem

      public boolean setItem(int index, Item item, boolean send)
      Description copied from interface: Inventory
      设置该库存指定索引处的物品
      Specified by:
      setItem in interface Inventory
      Overrides:
      setItem in class BaseInventory
      Parameters:
      index - the index
      item - the item
      send - 是否同时发送数据包
      Returns:
      the item
    • clear

      public boolean clear(int index, boolean send)
      Specified by:
      clear in interface Inventory
      Overrides:
      clear in class BaseInventory
    • getArmorContents

      public Item[] getArmorContents()
      Returns:
      获取盔甲栏0-4格的物品
    • clearAll

      public void clearAll()
      Specified by:
      clearAll in interface Inventory
      Overrides:
      clearAll in class BaseInventory
    • sendArmorContents

      public void sendArmorContents(Player player)
      刷新指定玩家看到的该inventory对应实体盔甲栏显示
      Parameters:
      player - 指定玩家
    • sendArmorContents

      public void sendArmorContents(Player[] players)
      刷新指定玩家看到的该inventory对应实体盔甲栏显示
      Parameters:
      players - 指定的玩家数组
    • setArmorContents

      public void setArmorContents(Item[] items)
      设置全部盔甲栏的物品
      Parameters:
      items - 要设置的物品,分布对应盔甲栏的格子
    • sendArmorContents

      public void sendArmorContents(Collection<Player> players)
      See Also:
    • sendArmorSlot

      public void sendArmorSlot(int index, Player player)
      对指定玩家更新指定格子处的盔甲栏物品显示
      Parameters:
      index - 指定的格子
      player - 指定的玩家
    • sendArmorSlot

      public void sendArmorSlot(int index, Player[] players)
      对指定玩家更新指定格子处的盔甲栏物品显示
      Parameters:
      index - 指定的格子
      players - 指定的玩家数组
    • sendArmorSlot

      public void sendArmorSlot(int index, Collection<Player> players)
      See Also:
    • getFreeSpace

      public int getFreeSpace(Item item)
      Description copied from class: BaseInventory
      检测指定物品能在该库存所能存放的空余数量
      Overrides:
      getFreeSpace in class BaseInventory
      Parameters:
      item - 要检测的物品
      Returns:
      所能存放的空余数量
    • getHolder

      public EntityIntelligentHuman getHolder()
      Specified by:
      getHolder in interface Inventory
      Overrides:
      getHolder in class BaseInventory
    • sendContents

      public void sendContents(Player player)
      Specified by:
      sendContents in interface Inventory
      Overrides:
      sendContents in class BaseInventory
    • sendContents

      public void sendContents(Collection<Player> players)
      Specified by:
      sendContents in interface Inventory
      Overrides:
      sendContents in class BaseInventory
    • sendContents

      public void sendContents(Player[] players)
      Specified by:
      sendContents in interface Inventory
      Overrides:
      sendContents in class BaseInventory
    • sendSlot

      public void sendSlot(int index, Player player)
      Specified by:
      sendSlot in interface Inventory
      Overrides:
      sendSlot in class BaseInventory
    • sendSlot

      public void sendSlot(int index, Collection<Player> players)
      Specified by:
      sendSlot in interface Inventory
      Overrides:
      sendSlot in class BaseInventory
    • sendSlot

      public void sendSlot(int index, Player... players)
      Specified by:
      sendSlot in interface Inventory
      Overrides:
      sendSlot in class BaseInventory
    • close

      public void close(Player who)
      Specified by:
      close in interface Inventory
      Overrides:
      close in class BaseInventory
    • onOpen

      public void onOpen(Player who)
      Specified by:
      onOpen in interface Inventory
      Overrides:
      onOpen in class BaseInventory
    • onClose

      public void onClose(Player who)
      Specified by:
      onClose in interface Inventory
      Overrides:
      onClose in class BaseInventory
    • open

      public boolean open(Player who)
      Specified by:
      open in interface Inventory
      Overrides:
      open in class BaseInventory