物品排序规则
[!INFO] 注册真源:
common/sort/DefaultRules.java:18DefaultRules.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 导致的默认值。