Skip to content
On this page
通用

KattonVillagerTradeModificationApi

top.katton.api.modcommon/src/main/kotlin/top/katton/api/mod/KattonVillagerTradeModificationApi.kt
用于向现有 [TradeSet] 追加单条交易的配置对象,可由 [addVillagerTrade] 使用。

VillagerTradeAdditionConfig

VillagerTradeAdditionConfig通用
kotlin
class VillagerTradeAdditionConfig internal constructor( val tradeSet: ResourceKey<TradeSet>, )

用于向现有 [TradeSet] 追加单条交易的配置对象,可由 [addVillagerTrade] 使用。

这些字段直接对应受支持 MC 26.x 版本中公开的 VillagerTrade 构造器:主要与 可选的次要成本、结果、最大使用次数、经验和价格倍率,因此能在当前受支持版本 之间保持兼容。

VillagerTradeAdditionConfig.costItemId

VillagerTradeAdditionConfig.costItemId通用属性
kotlin
var costItemId: Identifier?

商人希望玩家提供的物品。

### VillagerTradeAdditionConfig.costBItemId
VillagerTradeAdditionConfig.costBItemId通用属性
kotlin
var costBItemId: Identifier?

可选的第二种花费。

VillagerTradeAdditionConfig.resultItemId

VillagerTradeAdditionConfig.resultItemId通用属性
kotlin
var resultItemId: Identifier?

商人回赠的物品。

VillagerTradeAdditionConfig.maxUses

VillagerTradeAdditionConfig.maxUses通用属性
kotlin
var maxUses: Int

交易可使用的最大次数(例如原版农民 1 级的绿宝石-面包为 16)。

VillagerTradeAdditionConfig.xp

VillagerTradeAdditionConfig.xp通用属性
kotlin
var xp: Int

每次交易奖励的村民经验。

VillagerTradeAdditionConfig.priceMultiplier

VillagerTradeAdditionConfig.priceMultiplier通用属性
kotlin
var priceMultiplier: Float

原版价格倍率(默认 0.05;与农民基线一致)。

addVillagerTrade

addVillagerTrade通用函数
kotlin
@ApiStatus.Experimental
@ApiStatus.Experimental fun addVillagerTrade(tradeSetKey: String, configure: VillagerTradeAdditionConfig.() -> Unit): Boolean

向现有村民或流浪商人 [TradeSet] 追加一条新交易。 tradeSetKey 是来自 minecraft:trade_set 的注册表标识,例如 "minecraft:farmer/level_1""minecraft:wandering_trader/buying"。 变更会先通过 [VillagerTradeManager] 暂存,再在标准重载流程中刷出 (也就是脚本执行后、服务器线程上)。在 /katton reload 之外调用也没问题, 变更要等服务器应用待处理的数据包修改后才会生效。 在以下情况下会返回 false 并记录警告:

  • 服务器未运行
  • 无法解析交易组标识
  • 配置缺少必需字段(cost / result

addVillagerTrade

addVillagerTrade通用函数
kotlin
@ApiStatus.Experimental
@ApiStatus.Experimental fun addVillagerTrade(tradeSetId: Identifier, configure: VillagerTradeAdditionConfig.() -> Unit): Boolean

addVillagerTrade 的 Identifier 重载。