物品排序规则

[!INFO] 注册真源:common/sort/DefaultRules.java:18 DefaultRules.init(BogoSortAPI api)

Inventory Bogo Sorter 没有任何方块或物品,它的「内容」就是这组排序规则。规则通过 BogoSortAPI 注册,玩家在 GUI 内的排序按钮上可自由组合主排序项、次排序项与 NBT 规则。

通用物品规则(19 条,无条件注册)

在 DefaultRules.init() 中无条件调用 api.registerItemSortingRule(...):

key 比较器 含义
mod ItemCompareHelper::compareMod 按 modid 排序
id compareId 按物品注册 id 排序
meta compareMeta 按 metadata 值排序
registry_order compareRegistryOrder 按注册表中物品的出现顺序
display_name compareDisplayName 按显示名(客户端规则)
nbt_size compareNbtSize 按 NBT 体积排序
nbt_has compareHasNbt 区分有无 NBT 的物品
nbt_rules compareNbtValues 依据已配置的 NBT 规则取值
nbt_all_values compareNbtAllValues 比对全部 NBT 值
count compareCount 按堆叠数量
ore_dict compareOreDict 按矿物词典组
material compareMaterial 按材料名
ore_prefix compareOrePrefix 按 ore 前缀
burn_time compareBurnTime 按燃料燃烧时间
block_type compareBlockType 按方块类型;BogoSorter.java:70 用 remapSortRule("is_block", "block_type") 从旧键迁移
hunger compareHunger 按饥饿恢复值
saturation compareSaturation 按饱和度
color compareColor 按物品主色(客户端规则,来自 sort/color/ColorThief)

条件规则(仅在对应 mod 加载时注册)

key 条件 说明
emc Mods.ProjectE.isLoaded() ProjectE 能量值

NBT 规则

registerNbtSortingRule 针对物品 NBT 的具体标签注册比较器:

key 标签 标签类型 条件
potion Potion string 无条件;取 : 分隔的最后一段作药水 id
enchantment ench list 无条件
enchantment_book StoredEnchantments list 无条件
gt_circ_config Configuration int Mods.GT5u.isLoaded()
gt_item_damage GT.ToolStats/Dmg int Mods.GT5u.isLoaded()
tc_essentia Aspects list Mods.Thaumcraft.isLoaded();取第 0 个 compound 的 key,按精华排序药瓶
forestry_genome Genome/Chromosomes list Mods.Forestry.isLoaded();取 Slot 0 的物种 UID

[!NOTE] gt_circ_config 与 gt_item_damage 在源码中只传了前三个参数,未传比较器与取值函数 —— 这是有意的两参重载,不是未调用 setter 导致的默认值。

关联:指令 · API