Skip to main content

私有/全局节点

节点配置内全面支持节点调用/PAPI调用

全局节点路径

所有全局节点配置文件应存放于plugins/NeigeItems/GlobalSections文件夹

重复 ID 的节点仍然会被加载,但可能互相覆盖

最后哪个节点活下来。。。随缘了属于是

私有节点配置

查看:私有节点配置,形如

随机名称的铁剑:
material: IRON_SWORD
name: <weight-1>
sections:
weight-1:
type: weight
values:
- 5::名字1
- 4::名字2
- 3::名字3
- 2::名字4
- 1::名字5

字符串节点

节点ID:
type: strings
values:
- test1
- test2

结果将在values中随机获取一个值

每个值被选中的几率相等

随机数节点

节点ID:
type: number
min: 1
max: 2
fixed: 3
  • min 随机数的最小值
  • max 随机数的最大值
  • fixed 小数保留位数

Gaussian节点

节点ID:
type: gaussian
base: 100
spread: 0.1
maxSpread: 0.5
fixed: 1
min: 0
max: 10000

简介: 类似MMOItems的, 符合正态分布的随机数, 随机数大概率在base附近, 小概率出现极大或极小的数值

  • base 基础数值
  • spread 浮动单位
  • maxSpread 浮动范围上限
  • fixed 小数保留位数 (默认为1)
  • min 随机数的最小值
  • max 随机数的最大值

详细介绍:

  • base是基础数值, 随机数将以其为中心, 随机散布

  • spread是浮动单位, 决定了随机数散步的幅度

    比如base设置为100, spread设置为0.1, 根据正态分布:

    使用该节点生成大量随机数

    68.27%的随机数介于90-110

    95.45%的随机数介于80-120

    99.74%的随机数介于70-130

    以此类推......

  • maxSpread是浮动范围上限, 限制了随机数的浮动极限, 防止出现过于离谱的数字

    比如我将maxSpread设置为0.3, 根据正态分布:

    0.26%的随机数将小于70或大于130, 即超过了0.3的幅度, 那么经过maxSpread的限制:

    小于70的随机数将变为70, 而大于130的随机数将变为130

  • fixed是取整位数, 默认为1

    比如随机数值为123.456, fixed设置为1, 那么你将得到123.4

    比如随机数值为123.456, fixed设置为0, 那么你将得到123

  • min是随机数的最小值, max是随机数的最大值, 超过范围的随机数将被限制

    比如随机数值为123, min设置为200, 那么你将得到200

    比如随机数值为123, max设置为100, 那么你将得到100

公式节点

节点ID:
type: calculation
formula: 1+2+3<global-number-1>
min: 1
max: 100
fixed: 3
  • formula 待计算公式,支持代入节点及PAPI变量
  • min 结果的最小值
  • max 结果的最大值
  • fixed 小数保留位数
info

公式节点的本质是运行一段javascript代码

没有特殊需求应该优先使用快速计算(fastcalc)节点

快速计算节点

节点ID:
type: fastcalc
formula: 1+2+3<global-number-1>
min: 1
max: 100
fixed: 3
  • formula 待计算公式,支持代入节点及PAPI变量
  • min 结果的最小值
  • max 结果的最大值
  • fixed 小数保留位数
info

快速计算节点的本质是解析数学符号进行分析计算

计算速度高于公式节点

权重节点

节点ID:
type: weight
values:
- 5::第一行
- 1::第二行

values的格式为 权重::文本

结果将在values中根据权重随机获取一个值

例如,在该示例节点中

将有5/6的几率返回"第一行",1/6的几率返回"第二行"

JavaScript节点

节点ID:
type: js
path: ExampleScript.js::main
# (可选)
# args:
# - 参数1
# - 参数2

path的格式为 脚本路径::调用函数

args项可选,args的所有内容将作为参数传入被调用函数

例如,在该示例节点中

将调用plugins/NeigeItems/Scripts/ExampleScript.js脚本文件中的main函数

并返回main函数的返回值

Join节点

节点ID:
type: join
list:
- 第一行
- 第二行
- 第三行
- 第四行
separator: "-"
prefix: '<'
postfix: '>'
limit: 3
truncated: "..."
transform: |-
return this.it + "哈哈"

简介: 将list中的多段文本连接成一段文本

  • list 待操作的列表
  • separator 分隔符 (默认为", ")
  • prefix 前缀 (默认无前缀)
  • postfix 后缀 (默认无后缀)
  • limit 限制列表长度
  • truncated 超过长度的部分用该符号代替 (默认直接吞掉超过长度的部分)
  • transform 对列表的每一行进行一些操作 (使用javascript函数)

示例中的节点将返回:

<第一行哈哈-第二行哈哈-第三行哈哈-...>

由于该节点功能较其他节点更加复杂, 因此我为它编写了多个示例配置帮助理解, 如下:

# 帮助理解list
JoinTest1:
material: STONE
lore:
# 结果: 1, 2, 3, 4, 5
- 'join节点: <test>'
sections:
test:
type: join
# 待操作的列表
list:
- 1
- 2
- 3
- 4
- 5
# 帮助理解separator
JoinTest2:
material: STONE
lore:
# 结果: 1-2-3-4-5
- 'join节点: <test>'
sections:
test:
type: join
list:
- 1
- 2
- 3
- 4
- 5
# 分隔符(默认为", )
separator: "-"
# 帮助理解prefix及postfix
JoinTest3:
material: STONE
lore:
# 结果: <1, 2, 3, 4, 5>
- 'join节点: <test>'
sections:
test:
type: join
list:
- 1
- 2
- 3
- 4
- 5
# 前缀
prefix: "<"
# 后缀
postfix: ">"
# 帮助理解limit
JoinTest4:
material: STONE
lore:
# 结果: 1, 2, 3
- 'join节点: <test>'
sections:
test:
type: join
list:
- 1
- 2
- 3
- 4
- 5
# 限制长度
limit: 3
# 帮助理解truncated
JoinTest5:
material: STONE
lore:
# 结果: 1, 2, 3, ...
- 'join节点: <test>'
sections:
test:
type: join
list:
- 1
- 2
- 3
- 4
- 5
limit: 3
# 超过长度的部分用该符号代替
truncated: "..."
# 帮助理解transform
JoinTest6:
material: STONE
lore:
# 结果: 2, 3, 4, 5, 6
- 'join节点: <test>'
sections:
test:
type: join
list:
- 1
- 2
- 3
- 4
- 5
# 对列表中的每个元素进行一定操作
# this.it代表当前元素
# this.index代表当前序号(0代表第一个, 1代表第二个, 以此类推)
# this.player代表玩家
# this.vars(String string)用于解析节点
# List<String> this.list代表节点中的list
transform: |-
// 尝试将当前元素转换为整数, 并加一, 然后保留整数
return (parseInt(this.it) + 1).toFixed(0)
# 利用join节点插入多行lore
JoinTest7:
material: STONE
lore:
# 等同于:
# - 第一行
# - 第二行
# - 第三行
#
# 这个节点应该单独占据一行
# 不要在这行写其他文本(比如'join节点: <test>')
# 具体请自行测试
- '<test>'
sections:
test:
type: join
list:
- 第一行
- 第二行
- 第三行
# 像下面这样写分隔符、前缀和后缀
# 即可达到调用多行lore的效果
separator: "\\n"
prefix: '"'
postfix: '"'

Repeat节点

节点ID:
type: repeat
content: '待重复文本'
separator: "-"
prefix: '<'
postfix: '>'
repeat: 3
transform: |-
return this.it + "哈哈"

简介: 将content的文本重复多次, 生成一整段文本

  • content 待重复文本
  • separator 分隔符 (默认无分隔符)
  • prefix 前缀 (默认无前缀)
  • postfix 后缀 (默认无后缀)
  • repeat 重复次数
  • transform 每次重复前对文本进行一些操作 (使用javascript函数)

示例中的节点将返回:

<待重复文本哈哈-待重复文本哈哈-待重复文本哈哈>

由于该节点功能较其他节点更加复杂, 因此我为它编写了多个示例配置帮助理解, 如下:

# 不使用js的操作形式
RepeatTest1:
material: STONE
lore:
# 结果: 形似&4||||||||||||||&f||||||, &f出现的位置随机
- 'repeat节点: &4<repeat1>&f<repeat2>'
sections:
repeat1:
type: repeat
content: "|"
repeat: <number>
repeat2:
type: repeat
content: "|"
repeat: <calculation::20-<number>>
number:
type: number
min: 0
max: 20
fixed: 0
# 使用js的操作形式
RepeatTest2:
material: STONE
lore:
# 结果: 形似&4||||||||||||||&f||||||, &f出现的位置随机
- 'repeat节点: <repeat>'
sections:
repeat:
type: repeat
content: "|"
repeat: 20
prefix: "&4"
# 对列表中的每个元素进行一定操作
# this.it代表content
# this.index代表当前序号(0代表第一个, 1代表第二个, 以此类推)
# this.player代表玩家
# this.vars(String string)用于解析节点
transform: |-
if (this.index == this.vars("<number>")) {
return "&f" + this.it
} else {
return this.it
}
number:
type: number
min: 0
max: 20
fixed: 0
RepeatTest3:
material: STONE
lore:
# 随机1-4行"&4&l<红宝石槽>"
- '<repeat>'
sections:
repeat:
type: repeat
content: '&4&l<红宝石槽>'
repeat: <number::1_4_0>
# 像下面这样写分隔符、前缀和后缀
# 即可达到调用多行lore的效果
separator: "\\n"
prefix: '"'
postfix: '"'
RepeatTest4:
material: STONE
lore:
# 形似"§4§l<★>-§4§l<★>-§4§l<★>", 随机1-4个
- '<repeat>'
sections:
repeat:
type: repeat
content: '§4§l<★>'
repeat: <number::1_4_0>
separator: "-"

渐变色节点

节点ID:
type: gradient
colorStart: "000000"
colorEnd: "FFFFFF"
step: 1
text: 哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈
  • colorStart 起始颜色
  • colorEnd 结尾颜色
  • step 每几个字符变一次颜色(默认为1, 可省略)
  • text 文本内容

继承节点

节点ID:
type: inherit
template: 待继承节点ID

如上,相当于继承了对应节点的所有内容。例如:

sections:
templateTest: <strings::text1_text2_text3>
inheritTest:
type: inherit
template: templateTest

其中templateTest有可能返回"text1","text2"或"text3"。

inheritTest同样有可能返回"text1","text2"或"text3"。

简单节点

节点ID:

如上所示,你直接添加节点的值。你可以搭配即时声明节点,优化你的配置。

比如:

节点ID: <strings::测试字符串1_测试字符串2_测试字符串3>

等效于

节点ID:
type: strings
values:
- 测试字符串1
- 测试字符串2
- 测试字符串3

检查节点

节点ID:
type: check
value: 检测内容
actions:
- 'tell: 23333'
  • value 待检查内容
  • actions 执行动作

有关condition写法的详细信息, 查看条件类型

value将作为变量传入condition供你判断, 示例配置如下:

CheckTest:
material: STONE
name: <check>
sections:
# 待检查的节点, 随机返回test1, test2, test3中的一个值
test:
type: strings
values:
- test1
- test2
- test3
check:
type: check
# 待检查的值
value: <test>
# 执行动作
# 条件中默认导入了value
actions:
# 如果value为test1
- condition: value == "test1"
# 通知玩家
actions:
- "tell: 你得到了名为 test1 的物品"
# value不为test1
deny:
# value为test2
condition: value == "test2"
# 通知玩家
actions:
- "tell: 你得到了名为 test2 的物品"
# value不为test2
deny:
# value为test3
condition: value == "test3"
# 通知玩家
actions:
- "tell: 你得到了名为 test3 的物品"

When节点

节点ID:
type: when
value: 1233211234567
conditions:
- condition: value == 114514
result: nb
- condition: value > 100
result:
- "无匹配结果"
  • value 待检查内容
  • conditions 待进行的系列条件匹配

有关condition写法的详细信息, 查看条件类型

本节点将把value作为变量传入condition, 按照列表顺序进行一系列匹配, 如果条件满足则返回result中的结果

如果conditions中的某一条没有配置condition, 形如- "无匹配结果", 节点将直接返回无匹配结果

示例配置如下:

WhenTest:
material: STONE
name: <test> - <when>
sections:
test: <number::0_100>
when:
type: when
value: <test>
conditions:
- condition: value < 10
result: E
- condition: value < 30
result: D
- condition: value < 50
result: C
- condition: value < 70
result: B
- condition: value < 90
result: A
- condition: value <= 100
result: S