
流浪商人
一个为流浪商人赋予职业、大量新交易以及更多内容的数据包!
Wandering Merchants 将原版流浪商人替换为 4 种新的商人类型:农业、钓鱼、采矿和宝藏。每种商人拥有不同的可能交易集合,并且生成概率相同。
与 VanillaTweaks Wandering Trades 数据包兼容。
农业商人交易
这位商人经营所有与农业相关的事物。
交易 1
10 个甜浆果 -> 1 个绿宝石 或
10 个干海带块 -> 1 个绿宝石
交易 2
5 个南瓜 -> 1 个绿宝石 或
4 个西瓜 -> 1 个绿宝石
交易 3
1 个绿宝石 -> 1 个绒球葱
1 个绿宝石 -> 1 个蓝花美耳草
1 个绿宝石 -> 1 个兰花
1 个绿宝石 -> 1 个矢车菊
1 个绿宝石 -> 1 个蒲公英
1 个绿宝石 -> 1 个铃兰
1 个绿宝石 -> 1 个橙色郁金香
1 个绿宝石 -> 1 个滨菊
1 个绿宝石 -> 1 个粉色郁金香
1 个绿宝石 -> 1 个虞美人
1 个绿宝石 -> 1 个红色郁金香
1 个绿宝石 -> 1 个白色郁金香
交易 4
1 个绿宝石 -> 3 个黑色染料
1 个绿宝石 -> 3 个蓝色染料
1 个绿宝石 -> 3 个棕色染料
1 个绿宝石 -> 3 个青色染料
1 个绿宝石 -> 3 个灰色染料
1 个绿宝石 -> 3 个绿色染料
1 个绿宝石 -> 3 个淡蓝色染料
1 个绿宝石 -> 3 个淡灰色染料
1 个绿宝石 -> 3 个黄绿色染料
1 个绿宝石 -> 3 个品红色染料
1 个绿宝石 -> 3 个橙色染料
1 个绿宝石 -> 3 个粉色染料
1 个绿宝石 -> 3 个紫色染料
1 个绿宝石 -> 3 个红色染料
1 个绿宝石 -> 3 个白色染料
1 个绿宝石 -> 3 个黄色染料
交易 5
5 个绿宝石 -> 1 个金合欢树苗
5 个绿宝石 -> 1 个白桦树苗
5 个绿宝石 -> 1 个樱花树苗
5 个绿宝石 -> 1 个深色橡树树苗
5 个绿宝石 -> 1 个丛林树苗
5 个绿宝石 -> 1 个橡树树苗
5 个绿宝石 -> 1 个云杉树苗
5 个绿宝石 -> 1 个红树胎生苗
交易 6
2 个绿宝石 -> 1 个孢子花
1 个绿宝石 -> 2 个小型垂滴叶
1 个绿宝石 -> 1 个大型垂滴叶
钓鱼商人交易
交易 1
20 个线 -> 1 个绿宝石
5 个墨囊 -> 1 个绿宝石
5 个鹦鹉螺壳 -> 1 个绿宝石
交易 2
15 条鳕鱼 -> 1 个绿宝石
13 条鲑鱼 -> 1 个绿宝石
6 条热带鱼 -> 1 个绿宝石
4 条河豚 -> 1 个绿宝石
交易 3
2 个绿宝石 -> 5 个荧光墨囊
交易 4
3 个绿宝石 -> 1 瓶幸运药水(5:00)
交易 5
2 个绿宝石 -> 1 个海泡菜
3 个绿宝石 -> 1 个脑纹珊瑚块
3 个绿宝石 -> 1 个气泡珊瑚块
3 个绿宝石 -> 1 个火珊瑚块
3 个绿宝石 -> 1 个鹿角珊瑚块
3 个绿宝石 -> 1 个管珊瑚块
交易 6
8 个绿宝石 -> 1 个河豚桶
8 个绿宝石 -> 1 个鳕鱼桶
采矿商人交易
交易 1
15 个煤炭 -> 1 个绿宝石
22 个燧石 -> 1 个绿宝石
12 个石英 -> 1 个绿宝石
交易 2
20 个石头 -> 1 个绿宝石
16 个花岗岩 -> 1 个绿宝石
16 个安山岩 -> 1 个绿宝石
16 个花岗岩 -> 1 个绿宝石
交易 3
1 个绿宝石 -> 8 个沙子
交易 4
1 个绿宝石 -> 4 个红沙
交易 5
1 个绿宝石 -> 2 个滴水石锥
交易 6
1 个绿宝石 -> 1 个陶瓦
交易 7
1 个绿宝石 -> 1 个方解石
宝藏商人交易
交易 1
4 个鳞甲 -> 1 个绿宝石
32 个腐肉 -> 1 个绿宝石
24 个羽毛 -> 1 个绿宝石
交易 2
5 个鹦鹉螺壳 -> 1 个绿宝石
22 个下界疣 -> 1 个绿宝石
24 张纸 -> 1 个绿宝石
交易 3
3 个绿宝石 -> 1 瓶附魔之瓶
交易 4
2 个绿宝石 -> 5 个荧石
交易 5
1 个绿宝石 -> 1 个火药
交易 6
2 个绿宝石 + 5 支箭 -> 5 支药箭
配置菜单
可通过 /function clgd.trader:config/menu 访问
用于配置与流浪商人生成概率相关的数值。
计划中的功能
模组制作
添加你自己的商人变体
模组制作
本节涉及即将推出的功能
流浪商人变体的数据格式如下:{Weight:1,Name:"",TradeTable:[]}
Weight(可选)的作用与战利品表中的权重相同,权重越高,该商人被选中的可能性越大。如果缺失,权重默认为 1Name将在宣布商人已生成时使用(“A {name} Has Spawned!”)。TradeTable是一个列表的列表,指代商人的每个交易。每个子列表是该流浪商人可能拥有的交易列表。第一个子列表是第一个交易槽位的可能交易列表,第二个子列表是第二个交易,依此类推。
交易格式如下:{Weight:1,TradeData:{}}
Weight(可选)的作用与前面提到的相同TradeData(可选)包含要添加的交易的信息。如果你希望有几率不出现某个交易,可以将其留空。
TradeData 的内容遵循典型村民交易的格式,带有 buy 和 sell 值,以及可选的 buyB 值:
buy:{id:"minecraft:emerald",Count:32},buyB:{id:"minecraft:book",Count:1},sell:{id:"minecraft:enchanted_book",Count:1,tag:{StoredEnchantments:{id:mending,lvl:1}}}}}
buy存储用于交换sell中物品的物品buyB(可选)是用于交换的第二个物品。(这用于图书管理员交易,绿宝石 + 书 = 附魔书)。
buy、buyB 和 sell 标签各包含 3 个子标签:
id- 物品的字符串 idCount- (可选)物品的数量。可能默认为 1tag- (可选)物品上的 NBT 数据。
教程:添加你自己的商人
本节涉及即将推出的功能
尽管我已尽力解释模组制作的工作原理,但对你们中的一些人来说可能仍然令人困惑。本教程将带你逐步完成添加自定义商人的过程。
对于本教程,你必须具备如何创建数据包的基本知识。如果你不知道如何创建数据包,可以在网上找到大量资料。TODO: 找一个好的教程并在此处链接
首先,你要创建一个带有新函数的新数据包。我将我的命名为 new_merchant.mcfunction,并将其放入命名空间 mypack 中。
在 new_merchant.mcfunction 内部,我们需要初始化商人并设置其交易:
创建村民函数
#This command does the initial setup for the merchant, assigning a name, weight, and setting up the tradetable
data modify storage clgd.trader:data NewMerchant append value {Weight:1,Name:"Special Merchant",TradeTable:[]}
# I recommend changing this value ^^^ to be something unique. If multiple packs use the same value, then there will be issues with one pack overwriting the other.
#This adds the first set of trade options to the tradetable
data modify storage clgd.trader:data NewMerchant.TradeTable append value []
#This adds a trade option to the first set of trades
data modify storage clgd.trader:data NewMerchant.TradeTable[-1] append value {TradeData:{buy:{id:"minecraft:coal",Count:48},sell:{id:"minecraft:diamond",Count:1}}}
#The 'data modify storage clgd.trader:data NewMerchant.TradeTable[-1]' means we are modifying the last set of trade options. Since there is only 1 right now, that means we are modifying the first one.
#This adds the second set of trade options to the tradetable
data modify storage clgd.trader:data NewMerchant.TradeTable append value []
#This adds a trade option to the second set of trades
data modify storage clgd.trader:data NewMerchant.TradeTable[-1] append value {TradeData:{buy:{id:"minecraft:diamond",Count:1},sell:{id:"minecraft:emerald",Count:2}}}
#Add a second trade option to the second set of trades
data modify storage clgd.trader:data NewMerchant.TradeTable[-1] append value {TradeData:{buy:{id:"minecraft:coal_block",Count:5},sell:{id:"minecraft:emerald",Count:2}}}
#Now that there are 2 trades, the 'data modify storage clgd.trader:data NewMerchant.TradeTable[-1]' refers to the second set of trades
此函数将为一位拥有 2 个交易的新商人创建数据。第一个交易将始终是 48 个煤炭 -> 1 个钻石,第二个交易将是 1 个钻石 -> 2 个绿宝石 或 5 个煤炭块 -> 1 个绿宝石
运行函数
现在我们已经编写了创建村民的函数,我们要确保该函数会被运行以初始化交易。这可以通过创建一个名为 clgd.trader 的新命名空间来实现,然后在该命名空间内创建一个名为 tags 的新文件夹,再创建一个名为 functions 的子文件夹,然后创建一个名为 set_default_trades.json 的文件。你还需要创建另一个名为 update_trades.json 的文件
所以你的文件夹结构应该看起来像:
clgd.trader -> tags -> functions -> set_default_trades.json
set_default_trades.json 应该看起来像这样
{
"values": [
"mypack:new_merchant"
]
}
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。