Skip to content

Latest commit

 

History

History
173 lines (142 loc) · 6.83 KB

README_CN.md

File metadata and controls

173 lines (142 loc) · 6.83 KB

| English | >简体中文< | 臺灣正體 |

导览

简述

脚本方块是一个为Minecraft 1.7.10 设计的模组,提供了一个能够在特定情况下执行的脚本方块以及一套工具。
在游戏的根目录创建文件夹ScriptBlockData并把Json(或Json5)放入其中。
解析Json5需要凤梨通灵术作为Lib,否则会跳过解析。 内容详情请见 规范

指令

主名称: /script
别名:/scb, /sc
别名与主名称效果相同。

参数:
reload - 重新读取。
set [文件名] - 得到存储文件夹内脚本文件的记录之章,右击脚本方块可以写入脚本。
block - 得到一个脚本方块。
run <玩家名称> [文件名] - 立刻对玩家执行脚本。

规范

脚本解析依赖一种较为严格的规范,这闻起来就像是一种具有严谨规范的解释性语言。
模组解析器会且只会解析列表和字符串(数字会在解析时被自动转义,而无法转义的内容则会抛出异常。)
解析器会尝试在一个大列表中解析细节列表,也就是说即便你只有一个内容也必须使用两个列表。
如下所示:

[
  [
    "@Command",
    "say", "Hello", "World!"
  ]
]

这个内容被触发后将会向服务器发送“Hello World!”。相关内容会在解释“@Command”关键字时说明。


@Set

別名:@SetVar

@Set 关键字需要两个参数,如下:

[
  "@Set", "Test",
  "Hello!"
]

上述的内容是将变量“Test”存储到变量池并申明内容字符串“Hello!”。
如果我们需要存入一个数字?请使用带小数方便解析器理解。如下:

[
  "@Set", "TestNumber",
  "10.0"
]

好,那么知道它会被存入变量池,如何从变量池中拿到数据?
字符“%”帮助我们拿到变量,而且变量可以传给另一个变量,如下演示:

  "@Set", "AnotherTestNumber",
  "%TestNumber"
]

这样我们就把“TestNumber”的值传给新的变量“AnotherTestNumber”了。

当然,这里还有一些魔术参数,使用字符“&”申明一个魔术参数得到一些游戏内的数据。

方法名称 内容用途
&Player 得到触发的玩家的名称
&World 得到当前世界名称
&Health 得到玩家当前生命
&Hunger 得到玩家当前饱食
&Item 得到玩家手上物品
&Lv 得到玩家人物等级
&Random 得到0-100之间的随机数

运算关键组

运算能够插入大部分地方,比如@Set。这里有个运算的示例:

[
  "@Set", "AnotherTestNumber",
  ["@Add", 
  "%TestNumber", "10.0"
  ]
]

当解析完此条目时,变量“AnotherTestNumber”的值将会是“TestNumber + 10.0”的结果。

变量运算组需要两位参数,两位参数均支持使用数字形式的字符串,变量和另一个运算组。

@Add 关键词用于申明两位数相加。
@Min 关键词用于申明两位数相减。
@Mul 关键词用于申明两位数相乘。
@Exc 关键词用于申明两位数相除。


判断句柄
使用关键词@If申明一个判断,参数允许使用字符串,变量和运算组。@If的下一位参数需要接入一个判断形式:

@Is 关键词用于判断两个参数内容相同。
@IsNot 关键词用于判断两个参数内容不同。
@Greater 关键词用于判断第一个参数大于第二个参数。
@Less 关键词用于判断第一个参数小于第二个参数。

下面是一段截取自Json5的文本,Json中请删除注解。

[
  "@If", "@Is",
  "%Test", "Hello!",
  ["@Set", "Test", "True!"], // 返回值为True,这一段执行
  ["@Set", "Test", "False!"] // 反之是这一段执行。
]

上述的一段脚本将会返回True,那么Test的值会被设为“True!”。


@Command
到了我们的重头戏,现在让我们提供一段指令。还记得一开始的那段脚本吗?把它拿回来:

[
  [
    "@Command",
    "say", "Hello", "World!"
  ]
]

@Command 关键词能够输出一段命令。通常我们要如何输出一段命令?用say来说,输出Hello World!的话,我们应该写成这样: /say Hello World!
无论是对于Minecraft的命令解释器,还是对于我们的脚本解释器,这一段命令将会被分为三段:say,Hello,World!。如果命令带参数也是同理。将这三段分别填入申明了@Command的列表中最终会被拼合为一段。请注意,请不要在字符串中提供空格。
这段指令的发送身份将会是控制台(等价于命令方块)。@Command 关键词可以在@If 句柄中被作为判断后执行任务进行申明,@Command中不接受任何运算,但是可以使用“%”关键字来申明一些魔术变量和你的变量池变量。我们的变量池里有“Test”,那么这儿提供“%Test”即可。关于@Command 可用的魔术变量如表:

变量名 内容
%Player 返回触发的玩家的名称
%World 返回当前世界的名称
%Pos 返回坐标(x y z)
%PlayerPos 返回玩家的坐标(x y z)

物品

模组中的物品都可以在创造模式物品栏中找到。

  • 脚本方块: 脚本方块是这个模组的核心内容,需要配合其他物品进行操作。
  • 记录之章: 使用指令获得或使用空白之章复制获得的记录之章才能被使用。右击脚本方块可以填充(或覆盖)脚本内容。
  • 空白之章: 右击一个内容不为空的脚本方块可以复制内容并变为记录之章。
  • 归空之帚: 右击某个方块会清扫3*3*3范围内的脚本方块的画皮,使其形象初始化。
  • 绘作之触: 右击一个非脚本方块的方块可以取得方块的贴图,再右击脚本方块可以进行伪装。
  • 窥视之眼: 检查脚本方块的脚本内容。
  • 机械之心: 无视触发形式直接执行脚本方块的脚本(如果有)。
  • 和谐之音: 改变脚本方块的触发方式。有四种状态:关闭,仅踩踏触发,仅右击触发,踩踏或右击(混合)。

许可证


模组分发等均基于主许可证:凤梨许可证。

凤梨许可证

AFL-3.0