关于Forge1.20.1中InventoryMenu代码在Slot上的疑问

查看数: 349 | 评论数: 2 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2024-3-13 12:17

正文摘要:

以下是改其构造器全部代码: public InventoryMenu(Inventory pPlayerInventory, boolean pActive, final Player pOwner) {    super((MenuType<?>)null, 0);    this.active = pActive;   ...

回复

Sonnenlicht 发表于 2024-3-17 01:35:45
补一下addSlot的代码:
  1.    protected Slot addSlot(Slot slot) {
  2.       slot.index = this.slots.size();
  3.       this.slots.add(slot);
  4.       this.lastSlots.add(ItemStack.EMPTY);
  5.       this.remoteSlots.add(ItemStack.EMPTY);
  6.       return slot;
  7.    }
复制代码
Sonnenlicht 发表于 2024-3-17 01:34:13
在Slot类中有两个属性可以被视为“ID”:
一个是index属性,使用InventoryMenu的addSlot方法向Menu实例中的slots列表添加新的slot对象时,首先被添加的slot对象的index属性值被赋值为slots.size(),然后才会把slot对象添加进列表,这保证了每个添加到slots的slot对象的index在同一个InventoryMenu实例中是唯一的。
另一个是slot属性,是Slot类中container属性内的相对id,在同一个container实例中唯一,在不同container实例之间是可重复的,使用时一般通过 slotA.container == slotB.container && slotA.slot == slotB.slot 来判断两个slot是否相等。

”2X2CraftSlot“的四个槽位被添加到InventoryMenu的成员slots列表中,四个槽位的slot属性范围是1~4,对应这四个槽位在slots中的索引值;0~3是相对于container“craftSlots”的索引。

[ MC百科(mcmod.cn) 除另有声明,所有开放公共编辑的内容均使用 BY-NC-SA 3.0 协议 ]

Minecraft百科CC协议
快速回复 返回顶部 返回列表