= 创作分享 =
编程开发
关于Forge1.20.1中InventoryMenu代码在Slot上的疑问 ...
alltime2838

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

alltime2838 于 2024-3-13 12:17 ( 1月前 ) [复制链接] [显示全部楼层] [打印]
346 1
Sonnenlicht
在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”的索引。
发表于 2024-3-17 01:34:13 | 显示全部楼层

回复 | 举报

Sonnenlicht
补一下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.    }
复制代码
发表于 2024-3-17 01:35:45 | 显示全部楼层

回复 | 举报

百科目前不允许匿名发帖哦~ 请先 [ 登陆 ][ 注册 ] 吧~

本版积分规则

发新帖
  • 回复
  • 点评
  • 评分

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

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