DECLARATION: The mod , “reasonable-sorting”, is hosted solely on GitHub. The author, “SolidBlock-cn”, did not participate in any code-hosting platform except GitHub. The project “reasonable-sorting” and the user profile with the name “SolidBlock-cn” on GitCode, another code-hosting platform affiliated to CSDN, are plagiarism and impersonation. Please don't be cheated.
声明:本模组“reasonable-sorting”仅托管在 GitHub 上。模组作者“SolidBlock-cn”从未参与除 GitHub 之外的任何代码托管平台。位于 CSDN 旗下代码托管平台 GitCode 上的“reasonable-sorting”项目以及用户“SolidBlock-cn”个人主页是剽窃和冒充。请勿上当受骗。
If you do not understand Chinese, you can read English version.
你是否发现,在创造模式下,物品栏内的物品排序方式特别乱,找到你需要的东西特别不容易?安装本模组,您的创造模式物品栏内就会井然有序!您将会发现,所有的楼梯和台阶排在了基础方块后面,栅栏门转移至装饰性方块并紧随在了对应的栅栏后面。彩色方块也将按照渐变的方式排序。
本模组可以在配置中指定自定义的排序规则以及物品组转移规则。
本模组依赖 Cloth Config 模组,如果不安装这些模组将无法运行。此外,对于 Fabric 和 Quilt 版本,建议安装 Mod Menu 模组以进行配置。
本模组的 Fabric 版本依赖 Fabric API,Quilt 版本(Minecraft 1.18.2 以上)依赖 Quilt Standard Libraries。
本模组可以通过 Mod Menu 进行配置。
启用排序
默认为开启。如果关闭,所有的排序都将会按照原版进行,下面的这些配置也将失效。
排序影响范围
决定了本模组在哪些情况下会影响内容排序。如果不明白意思,直接使用默认值即可。支持以下值:
- 注册表:Minecraft注册表的所有遍历过程都会受到影响。这将会影响更多情况,例如将会影响一些可以列举所有方块或者物品的模组(如 Roughly Enough Items 和 Just Enough Items 模组)。但是,这有可能造成不稳定性,例如加入服务器时可能出现注册表不匹配的情况。
- 仅物品栏:仅影响创造模式物品栏。其他情况不会受到此模组的影响。
排序计算类型
决定了本模组在哪些情况下计算排序。如果不明白意思,直接使用默认值即可。支持以下值:
- 标准:内容(例如物品)的排序会在游戏开始时以及配置加载时计算一次,当配置更改时会重新计算。这是推荐的方式,因为可以减少每次迭代中的不必要的计算。(如果您使用 Forge,且“排序影响范围”设为“注册表”,那么这个选项将不会生效。)
- 半实时:内容组合规则会在游戏开始时、配置加载时、配置更改时计算。但是,排序结果仍会在每次迭代中计算。这可能会造成每次打开创造模式物品栏时出现略微卡顿。
- 实时:组合规则以及排序结果都会在每次注册表迭代时计算。这可能会造成每次打开物品栏时出现卡顿。
调试模式
如果启用,那么模组会在日志中输出更多信息。如果你需要研究模组原理或者遇到任何问题,可以启用此选项。
启用默认物品排序规则
默认为开启。本模组内置了一些物品排序规则,例如将冰、浮冰、蓝冰排在一起。
自定义排序规则
默认为空。你可以通过输入物品id来自定义一些排序规则。在模组配置界面中,点击左边的“+”号,下面将会出现一个文本框(不明显),在其中输入一条规则即可。其语法为:多个物品的id用空格隔开。例如,“dirt white_wool diamond_block
”表示泥土、白色羊毛和钻石块将会排在一起,其中白色羊毛和钻石块将依次排在泥土后面。
紧随基础方块的方块变种
Minecraft 中,很多方块都具有其变种,例如橡木木板的“楼梯”变种为橡木楼梯,“台阶”变种为橡木台阶等等,也就是说,橡木木板是橡木楼梯、橡木台阶等方块的基础方块。你可以指定一些变种类型使之排在基础方块后面。
默认语法为多个方块变种名称用空格隔开。可用的方块变种名称会在模组配置界面显示。默认为 stairs slab
,也就是说所有的楼梯、台阶会依次排在其基础方块后面。
需要注意的是,改变物品排序并不会改变物品所在的物品组。如要改变物品组,还需要设置变种转移规则。
栅栏门紧随栅栏
默认开启。将会使栅栏门方块紧跟在栅栏方块的后面。需要开启栅栏门移至装饰性方块,否则这些栅栏门仍会出现在“红石”物品组中,不会达到效果。
美观颜色排序
以渐变顺序排序带有颜色的方块和物品(如羊毛、带釉陶瓦、床、旗帜),就像Minecraft 1.19.3中的那样。
避免影响方块注册表
默认关闭。若开启,只有物品注册表,包括方块物品(例如创造模式物品栏中的方块)会受到上述选项的影响,而方块注册表(例如调试模式中的方块)则不受影响。这在一定程度上可以避免服务器与客户端之间的方块不匹配。如果“排序影响范围”设为“仅物品栏”,那么这个选项没有影响。
启用物品组转移
默认为开启。如果关闭,所有的物品都会出现在原版物品组,下面的这些配置也将失效。
按钮移至装饰性方块
栅栏门移至装饰性方块
剑移至工具
门移至装饰性方块
以上四项设置的意思显而易见。其中,“栅栏门移至装饰性方块”默认为开启,其他的默认关闭。
自定义物品转移规则
默认为空。和自定义排序规则一样,一行一条规则,点击“+”新增一条规则。每条规则的语法是:物品id + 空格 + 需要移至的物品组。例如 redstone_block building_blocks
就会将红石块移至“建筑方块”(建材)物品组。
自定义变种转移规则
默认为空。和上面类似,语法是:变种名称 + 空格 + 需要移至的物品组。例如 cut transportation
就会将所有的切制方块移至“交通运输”物品组。
自定义正则表达式转移规则
默认为空。和上面类似,语法是:正则表达式 + 空格 + 需要移至的物品组。所有 id 符合该正则表达式的物品都会移至指定的物品组。正则表达式必须语法正确。例如 .+?button transportation
就会把所有 id 以 button
结尾的物品移至“交通运输”物品组。
自定义标签转移规则
默认为空。和上面类似。语法是:标签 + 空格 + 需要转移至的物品组。所有在此标签内的物品都会转移至指定的物品组。例如,flowers transportation
就会把拥有标签 #minecraft:flowers
的物品转移至“交通运输”物品组。
物品排序的实质是“指定一个领队物品和多个跟随物品,这些跟随物品将会跟随在领队物品的后面”。举个例子,对于规则 dirt white_wool diamond_block
,泥土将会是领队物品,白色羊毛和钻石块将会跟随在泥土后面,而不再出现在原来的位置。
一个物品不能同时跟随多个物品,如果有,则只会跟随其中的一个。例如如果同时指定了 dirt white_wool
和 grass_block white_wool
两个规则,那么白色羊毛只会出现在泥土和草方块二者其中一个的后面。也就是说,物品不会重复出现。
物品可以嵌套跟随。例如,默认情况下,根据“紧随基础方块的方块变种”规则,橡木楼梯和橡木台阶会跟随在橡木木板后面,而根据“默认物品排序规则”,石化橡木台阶会跟随在橡木台阶后面。这样,物品栏中将会出现“橡木木板-橡木楼梯-橡木台阶-石化橡木台阶”的组合。
物品不能够互相跟随、循环跟随。例如,如果同时设置了 dirt white_wool
和 white_wool dirt
两条规则,则泥土和白色羊毛可能都不会出现(游戏日志中将会记录错误),有可能还会导致死循环。因此,应当避免这种情况。
关于物品组转移,转移后的物品将会不再出现在此物品组。但是,一个物品可以转移至多组。
使用 SortingRule.addSortingRule
方法可以添加一条排序规则。使用 SortingRule.addConditionalSortingRule
可以添加一个只在特定条件下的排序规则。类似地,物品组转移规则可以使用 TransferRule.addTransferRule
或 TransferRule.addConditionalTransferRule
添加。