本篇教程由作者设定未经允许禁止转载。
# 引言
SWEM是一个很好的马匹相关的模组,但对于生存玩家,特别是多模组生存玩家来说,该模组存在两个问题:
模组的物品生成概率过高,会挤掉各种战利品箱子内的其他mod物品
种子的生成概率过高(概率和小麦种子的生成概率相同,都是0.125,下图是原版小麦种子的生成概率,后面会说怎么找这个地方)
本文针对这两个问题,提出相应的解决方案,目标为:
减小或删除战利品箱中swem物品生成的概率
减小或删除打草时mod种子的掉落概率
# 原版和模组战利品表的逻辑
这里不对具体的java代码进行讨论,而是关注战利品表本身。mc的战利品表以JSON格式(括号套括号的序列化数据)存储在各类.json文件中,有以下要点:
战利品json文件按照战利品箱的存在场景进行分类,如village_butcher.json表示这是屠夫小屋里的战利品,village_fisher.json表示这是渔夫小屋里的战利品。其中定义的就是相对应的箱子的战利品列表。下图为屠夫小屋对应的战利品列表:
位于战利品列表中的物品拥有不同的权重(weight),权重越大,生成的概率也越大
战利品的过程分为两个阶段:首先确定从战利品列表中抽取几次(也就是roll变量的作用);再按照一定的概率抽取物品(这个过程进一步决定每个物品抽取的数量)
因此,要想达到修改mod战利品生成几率的目的,需要对mod文件中相应的文件进行修改。
# 战利品文件的位置
swem的战利品文件分为两个部分:原版战利品表和模组新增建筑战利品表(该模组增加了一些新的建筑结构)。前者的位置在mod.jar/data/minecraft/loot_tables/chests(chest是箱子的意思);后者的位置在mod.jar/data/swem/loot_tables/chests和mod.jar/data/swem/loot_modifiers中。
这里说明一下,.jar文件实际上是一种压缩形式,因而可以用各种解压缩软件打开.jar包。
# 修改过程
对于原版战利品表的部分,可以选择直接删除mod.jar/data/minecraft/loot_tables/chests下的所有内容(forge原版下面是有同名文件的);也可以打开每一个文件,删除或修改自己想要的模组物品(如下图所示)。
这里说一句,模组的物品权重调的都比较高(要比原版物品的权重要高),这也是为什么加了swem之后其他模组的物品就不怎么刷了。
对于模组新增建筑的战利品,需要对mod.jar/data/swem/loot_tables/chests下的文件进行修改,主要是修改带swem标签的物品的weight,或者直接删了这一项也可以。
下图是一个物品的标准结构,删的时候以物品为单位删(别忘了逗号也要删):
对于打草不掉种子,需要对mod.jar/data/swem/loot_modifiers下的文件进行修改(名字里带grass),主要是调整下图里红框的生成概率:
原版小麦种子的生成种子也是0.125,如果不想要模组的种子的话直接改成0即可(这个方法适用于所有mod的打草掉种子的几率生成)
# 总结
修改完成。