本篇教程由作者设定未经允许禁止转载。

# 引言

SWEM是一个很好的马匹相关的模组,但对于生存玩家,特别是多模组生存玩家来说,该模组存在两个问题:

  1. 模组的物品生成概率过高,会挤掉各种战利品箱子内的其他mod物品

  2. 种子的生成概率过高(概率和小麦种子的生成概率相同,都是0.125,下图是原版小麦种子的生成概率,后面会说怎么找这个地方)

[SWEM]如何修改SWEM模组中战利品箱中模组物品和模组种子的掉落几率-第1张图片

本文针对这两个问题,提出相应的解决方案,目标为:

  1. 减小或删除战利品箱中swem物品生成的概率

  2. 减小或删除打草时mod种子的掉落概率


# 原版和模组战利品表的逻辑

这里不对具体的java代码进行讨论,而是关注战利品表本身。mc的战利品表以JSON格式(括号套括号的序列化数据)存储在各类.json文件中,有以下要点:

  • 战利品json文件按照战利品箱的存在场景进行分类,如village_butcher.json表示这是屠夫小屋里的战利品,village_fisher.json表示这是渔夫小屋里的战利品。其中定义的就是相对应的箱子的战利品列表。下图为屠夫小屋对应的战利品列表:

[SWEM]如何修改SWEM模组中战利品箱中模组物品和模组种子的掉落几率-第2张图片

[SWEM]如何修改SWEM模组中战利品箱中模组物品和模组种子的掉落几率-第3张图片

  • 位于战利品列表中的物品拥有不同的权重(weight),权重越大,生成的概率也越大

  • 战利品的过程分为两个阶段:首先确定从战利品列表中抽取几次(也就是roll变量的作用);再按照一定的概率抽取物品(这个过程进一步决定每个物品抽取的数量)

因此,要想达到修改mod战利品生成几率的目的,需要对mod文件中相应的文件进行修改。


# 战利品文件的位置

swem的战利品文件分为两个部分:原版战利品表和模组新增建筑战利品表(该模组增加了一些新的建筑结构)。前者的位置在mod.jar/data/minecraft/loot_tables/chests(chest是箱子的意思);后者的位置在mod.jar/data/swem/loot_tables/chestsmod.jar/data/swem/loot_modifiers中。

这里说明一下,.jar文件实际上是一种压缩形式,因而可以用各种解压缩软件打开.jar包。


# 修改过程

对于原版战利品表的部分,可以选择直接删除mod.jar/data/minecraft/loot_tables/chests下的所有内容(forge原版下面是有同名文件的);也可以打开每一个文件,删除或修改自己想要的模组物品(如下图所示)。

这里说一句,模组的物品权重调的都比较高(要比原版物品的权重要高),这也是为什么加了swem之后其他模组的物品就不怎么刷了。

[SWEM]如何修改SWEM模组中战利品箱中模组物品和模组种子的掉落几率-第4张图片对于模组新增建筑的战利品,需要对mod.jar/data/swem/loot_tables/chests下的文件进行修改,主要是修改带swem标签的物品的weight,或者直接删了这一项也可以。

下图是一个物品的标准结构,删的时候以物品为单位删(别忘了逗号也要删):

[SWEM]如何修改SWEM模组中战利品箱中模组物品和模组种子的掉落几率-第5张图片对于打草不掉种子,需要对mod.jar/data/swem/loot_modifiers下的文件进行修改(名字里带grass),主要是调整下图里红框的生成概率

原版小麦种子的生成种子也是0.125,如果不想要模组的种子的话直接改成0即可(这个方法适用于所有mod的打草掉种子的几率生成)

[SWEM]如何修改SWEM模组中战利品箱中模组物品和模组种子的掉落几率-第6张图片


# 总结

修改完成。