BaubleExpandedSlots

基本信息

属性 值
路径 baubles.api.expanded.BaubleExpandedSlots
类型 class
包名 baubles.api.expanded

核心常量

常量 值 含义
slotLimit 20 可用槽位的最大数量上限
maxSlotIdBytes 由 slotLimit 计算的 VarInt 字节数 用于网络包编码槽位 id
invalidType "" 用于替代 null 的"无效"类型字符串
unknownType "unknown" 槽位未指定类型时的占位类型

预注册类型(final String)

常量 字符串 用途
ringType ring 戒指
amuletType amulet 护身符
beltType belt 腰带
universalType universal 通用槽
headType head 头部
bodyType body 躯干
charmType charm 符咒
capeType cape 披肩
shieldType shield 盾牌
quiverType quiver 箭筒
gauntletType gauntlet 护手
earringType earring 耳环
wingsType wings 翅膀

默认槽位分配

assignedSlots 静态初始化时按顺序填充:

[amuletType, ringType, ringType, beltType]

即默认玩家身上拥有 1 个 amulet、2 个 ring、1 个 belt 共 4 个槽位。其他 mod 可在 preinit 阶段调用 tryAssignSlotOfType / tryAssignSlotsUpToMinimum 追加槽位。

方法清单

方法 用途
tryRegisterType(String) preinit 期间注册自定义类型;返回是否注册成功
tryAssignSlotOfType(String) preinit 期间追加一个指定类型的槽位;返回是否成功
tryAssignSlotsUpToMinimum(String, int) preinit 期间确保指定类型至少有 N 个槽位
tryUnassignSlotOfType(String) preinit 期间移除指定类型的最后一个槽位
tryUnassignSlotsDownToMaximum(String, int) preinit 期间确保指定类型至多 N 个槽位
totalCurrentlyAssignedSlotsOfType(String) 当前已分配指定类型槽位的总数
getIndexesOfAssignedSlotsOfType(String) 已分配指定类型槽位的索引数组
isTypeRegistered(String) 类型是否已注册
slotsCurrentlyUsed() 当前已分配槽位数量
slotsCurrentlyUnused() 已废弃;永远返回 0(槽位现为无限扩展)
getSlotType(int) 给定槽位索引,返回其类型;越界返回 unknownType
getIndexOfTypeInRegisteredTypes(String) 注册类型的索引;找不到返回 -1
getCurrentlyRegisteredTypes() 已注册类型列表(preinit 后实际不变)
getCurrentSlotAssignments() 当前槽位分配数组(init 前可变)
getTypeFromBaubleType(BaubleType) 把 enum 转换为对应注册类型字符串
overrideSlots(String[]) 仅当 manualSlotSelection 启用时调用;用给定数组覆写当前槽位分配

限制

  • 类型注册和槽位分配只能在 LoaderState.PREINITIALIZATION 期间进行
  • slotLimit = 20 是扩展槽位的硬上限(若需要更多槽位,需要修改源码并重新编译)
  • tryRegisterType 不能注册 unknownType 或与已有类型重复的字符串

相关条目