Shifting Wares

Shifting Wares

村民偶尔会重新刷新他们的交易选项

经济

动态交易(Shifting Wares)

使村民能够自行重新随机他们的交易选项,每天最多三次。
这一效果在出售附魔或染色物品的职业上最为明显;单个这类村民将能随着时间的推移提供种类丰富得多的商品。

这旨在减少利用性玩法的收益,同时让偶然性玩法更加可行。拥有完美交易的村民不会永远保留这些交易,而交易不佳的村民最终也会变好。即使单个村民有可能提供你所需的一切,拥有多个同职业的村民对于提高获得特定交易的几率仍然很有用。

由于所有交易最终都会过期,村民死亡后也更容易被替换,因此你无需过多担心他们的安全。你可以让他们自由游荡,而几乎不会对你的经济造成风险。

重新随机触发条件

有两个游戏规则控制交易何时可以被重新随机。两者默认均启用。
禁用所有规则实际上就等于禁用了此模组。

  • shifting-wares:daily_reroll:
    使村民每天在职业站点补货时,将所有交易重新随机一次。
  • shifting-wares:deplete_reroll:
    使村民在职业站点补货时,重新随机任何完全耗尽的交易。
    如果交易仍有剩余使用次数,这也会阻止其被补充。

探险地图与持久交易

Minecraft 会永久保存所有已生成的地图,并锁定其结构使其不再出现在其他探险地图上。为防止每日重新随机丢弃大量未售出的地图,这些交易被视为持久交易。

持久交易只有在至少被使用过一次,并且游戏规则 shifting-wares:allow_persistent_reroll 启用时才能被重新随机。此游戏规则默认禁用。

数据包可以通过向交易添加以下字段来将任意交易标记为持久:

{
	"shiftingwares:isPersistent": true,
	"wants": "...",
	"gives": "...",
	"...": "..."
}

工作站保护

破坏并替换村民的工作站不再强制村民重新随机其交易。初始交易是确定性地生成的,使用村民的 UUID 作为种子。

这由游戏规则 shifting-wares:workstation_protection 控制。

其他技术细节

  • 如果村民无法为一个槽位生成交易,则该槽位将被替换为空交易。在原版中,这种情况只应发生在制图师身上,因为他们在没有结构的世界中无法生成探险地图。
    这些空填充是必需的,以确保交易被重新随机为相同等级的交易,因为交易在列表中的位置是其等级的唯一指示。
    占位交易永远不会取代有效交易的位置;它们只会在所有其他选项都用尽时出现。

  • 作为此模组的副作用,“需求加成”机制的效果被大幅削弱,因为需求加成数据会随被重新随机的交易一起被删除。

面向开发者(仅限 MC 26.1 之前)

默认情况下,Shifting-Wares 假定每级有 2 个交易,并从与原版相同的位置获取其交易池。其他模组可以通过使用 shifting-wares 入口点并实现 ITradeLayoutProvider 来覆盖此行为。

如果你的模组包含自定义的地图交易工厂实现,或产生其他带有永久数据的物品,你可以通过实现 IShiftingTradeFactory 中定义的相同方法来告知 Shifting-Wares 它们应为持久交易。
这不需要依赖 Shifting-Wares,你只需提供名称和原型匹配的方法即可。

相关模组

VillagerConfig 附加组件

用于使用 VillagerConfig 中定义的交易的兼容性附加组件。

游戏规则菜单

使游戏规则菜单在单人游戏世界中也可访问。