
尼古拉NPC
NicolaiNPC添加了可自定义的游荡村民,具有可配置的变体、交易和生成。
NicolaiNPC 为 Minecraft 添加了一个独特的漫游 NPC,具有可自定义的变体、可配置的交易、特殊能力以及自然生成功能。
Nicolai
Nicolai 是一个自定义 NPC,其行为方式与流浪商人相似,但拥有自己独特的个性和机制。Nicolai 比流浪商人更好吗?嗯,他没有羊驼,所以也许……
特性:
- 自定义村民风格 NPC
- 可配置变体
- 可配置交易
- 自然生成
- 自定义生成条件
- 独特能力
- 自定义动画
- 自定义音效
- 自定义死亡掉落物
- 多人游戏兼容
- 交易支持模组物品
- 游戏内配置重载
变体
Nicolai 可以有多种可配置的变体,每种变体都有自己的外观、生成条件和交易池。
变体可以控制:
- 外观
- 围裙颜色
- 生成条件
- 生命周期
- 交易池
可以通过 JSON 配置文件创建和修改变体,允许整合包通过复制 default.json 并调整其值来轻松自定义 Nicolai。
更多详情请参阅“配置”部分。
自然生成
Nicolai 可以根据可配置的生成规则在世界各地自然生成。
- 可配置的生成几率
- 未成功生成后几率会增加
- 每个玩家可拥有的 Nicolai 最大数量可配置
- 玩家越多,生成尝试越频繁
- 支持不同维度
- 可配置的生物群系、维度、结构和其他生成条件
- 可配置的 Nicolai 生命周期
交易
Nicolai 使用 Minecraft 的标准交易系统,允许交易支持原版和模组物品。
每个变体可以有自己的可能交易池,并可配置:
- 交易选择
- 交易权重
- 提供的交易数量
- 重复交易预防
- 物品数量
- 最大交易次数
- 主要和次要花费
命令
NicolaiNPC 提供了几个用于测试和配置的命令:
/nicolaimod reload— 重新加载 Nicolai 配置/nicolaimod list— 列出可用的变体/nicolaimod summon <变体id>— 召唤特定变体/nicolaimod getodds— 在玩家位置显示自然生成概率/nicolaimod dospawnevent— 强制进行一次自然生成尝试/nicolaimod dospawneventhere— 在玩家位置强制进行一次自然生成尝试
配置
变体配置指南:
NicolaiNPC 的设计具有高度可配置性。放置在以下目录中的每个 JSON 文件:
config/nicolainpc/variants/
定义了一个 Nicolai 变体。
默认配置会自动创建为:
config/nicolainpc/variants/default.json
您可以通过复制默认文件并更改其值来创建额外的变体。
每个变体有五个主要部分:
id— 变体的唯一标识符appearance— 控制变体的外观spawn— 控制自然生成和变体条件conditions— 控制可能的生成位置trades— 控制变体的可能交易
请参考 default.json 示例来查看总体结构。
null 值意味着忽略限制。也就是说,该规定对任何情况都适用。
"id": "<在此处插入id>"
所有 Nicolai 变体都需要一个唯一的 id。该 id 会在它们生成时显示在名称标签上。因此,'farmer' 的 id 将会生成一个名为 'farmer nicolai' 的 NPC。
"apron_color": "<在此处插入十六进制颜色代码>"
您只能通过提供十六进制颜色代码来控制围裙颜色。默认值是 #000000,会生成黑色围裙。
"enabled": <插入 true/false>
使用这个选项,您可以在不删除 JSON 文件的情况下禁用一个变体。
"bucket": "<插入 common/rare/exotic>"
有三个桶。当触发生成时,会先随机抽取一个桶,然后才选择变体。这些名称应该相对不言自明。将常见变体放入 common 桶,依此类推。
"bucketweight": <插入大于 1 的任何数字>
这决定了在单个桶内选择某个特定变体的几率。权重为 10 的变体被选中的几率是权重为 2 的变体的 5 倍。这仅影响同一桶内变体的选择。
"lifetime": <插入游戏刻计数器>
生命周期决定了 Nicolai 在消失前会存在多长时间。默认值是 48000。这相当于两个 Minecraft 日,也是流浪商人存在的时长。
"dimensions": [插入维度值]
这决定了该变体可以在哪些维度生成。可能的值如:["minecraft:overworld", "minecraft:the_nether"]
"biomes": [插入生物群系值]
这决定了该变体可以在哪些生物群系生成。可能的值如:["minecraft:plains", "minecraft:forest"]
"structures": [[插入结构, 插入方块距离]]
这决定了变体生成点需要距离某个结构多近。当列出多个结构时,只需要其中一个在范围内即可满足此要求。建议将限制较低的结构/范围放在前面。可能的值如:[["minecraft:village_plains", 64], ["minecraft:village_desert", 32]]
"minY": <插入生成位置允许的最低高度>
这决定了生成高度的最低范围。值为 30 将阻止此变体在 Y 轴 29 或更低的高度生成。可能的值如:-30
"maxY": <插入生成位置允许的最高高度>
这决定了生成高度的最高范围。值为 30 将阻止此变体在 Y 轴 31 或更高的高度生成。可能的值如:52。
"minLight": <插入生成位置允许的最低光照等级>
这决定了生成位置可接受的最低光照量。值为 3 将阻止此变体在光照等级 2 或更低的位置生成。可能的值如:7。
"maxLight": <插入生成位置允许的最高光照等级>
这决定了生成位置可接受的最高光照量。值为 5 将阻止此变体在光照等级 6 或更高的位置生成。可能的值如:10。
"time": [插入时间范围开始, 插入时间范围结束]
这决定了该变体可以生成的时间范围。一天是 24000 游戏刻。作为参考,日出大约是 1000,正午是 6000,夜晚是 13000,午夜是 18000。若要让此变体在夜晚到第二天正午之间生成,则需要此值:[13000, 6000] 相反,[6000, 13000] 则只会在正午到日落之间生成该变体。
"weather": [插入天气]
这决定了该变体生成所需的天气类型。请注意,雷暴和降雨是不同的天气。如果您希望一个变体在两者期间都能生成,请将两者都包括在内。可能的值如:["clear", "rain"]
"count": <在此处插入交易数量>
这决定了该变体将拥有的交易数量。如果您将其设置为 7,而交易池中只有 7 个可能的交易,那么每次 Nicolai 生成时都会选择所有 7 个。如果池中有 14 个,则会随机选择 7 个。
"allow_duplicates": <插入 true/false>
这决定了一个变体是否可以多次展示同一个交易。如果设置为 true 并且交易数量设置为 7,那么理论上是可能连续 7 次选择同一个交易,即使交易池中有其他交易。
交易池结构:
"weight": <插入大于 0 的数字>
这决定了当变体生成时,某个交易从交易池中被选中的可能性。权重为 10 的交易被选中的可能性是权重为 5 的交易的两倍,是权重为 20 的交易的一半。
"cost": [插入要支付的物品, [数量下限范围, 数量上限范围]]
这决定了第一个栏位支付的物品。根据 Minecraft 交易逻辑,此项不能为空。可能的值如:["minecraft:emerald", [1, 3]]。但如果您不希望数量有范围,另一个有效的条目也可以是 ["minecraft:emerald", 2]。
"cost2": [插入要支付的物品, [数量下限范围, 数量上限范围]]
与常规花费相同,但用于第二个栏位。可以设置为 null 表示没有次要花费。
"result": [插入要获得的物品, [数量下限范围, 数量上限范围]]
这决定了交易中获得的物品。根据 Minecraft 交易逻辑,此项不能为空。
"max_uses": <插入大于 0 的数字>
这决定了一个交易可以被玩家完成多少次,直到交易变灰。设置为 null 以允许无限交易。
default.json 示例
{
"id": "default",
"appearance": {
"apron_color": "#000000"
},
"spawn": {
"enabled": true,
"bucket": "common",
"bucketWeight": 1,
"lifetime": 48000,
"conditions": {
"dimensions": null,
"biomes": null,
"structures": null,
"minY": null,
"maxY": null,
"minLight": null,
"maxLight": null,
"time": null,
"weather": null
}
},
"trades": {
"count": 3,
"allow_duplicates": false,
"pool": [
{
"weight": 10,
"cost": ["minecraft:emerald", [1, 3]],
"cost2": null,
"result": ["minecraft:bread", [8, 15]],
"max_uses": 3
},
{
"weight": 10,
"cost": ["minecraft:emerald", [3, 6]],
"cost2": null,
"result": ["minecraft:cooked_beef", [9, 18]],
"max_uses": 3
},
{
"weight": 10,
"cost": ["minecraft:emerald", [5, 8]],
"cost2": null,
"result": ["minecraft:golden_carrot", [10, 20]],
"max_uses": 3
}
]
}
}
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。