Skip to content

TerraScript 函数

Terra 的 TerraScript 实现包含了许多与世界交互、设置数据及调试相关的函数。

方块(block)

block 函数可以在指定位置放置方块。

参数:

参数类型描述
xnum放置方块(相对于原点)的 X 坐标
ynum放置方块(相对于原点)的 Y 坐标
znum放置方块(相对于原点)的 Z 坐标
datastr放置方块包含的方块数据字符串(必须为常量表达式)
replacebool(可选;默认值为 true)设置为 true 时,替换现存方块。在这种情况下,任何方块都会被覆写(此参数未指定时的默认行为)。当为 false 时,只有空气才会被替换。
physicsbool(可选:默认值为 false)是否在初始区块生成后为方块进行一次刻更新,使得诸如水或沙子等方块可以流动或下坠。

返回类型:void

检查(check)

check 函数检查位置的“类型”。它可以更快地检测指定位置是否在空中、海洋或地面。它无法获取指定位置的方块状态信息,因此它比 getBlock 快许多,且不会强行加载它使用的区块。在普通结构中应避免使用 getBlock,并尽可能将其替换为 check

参数:

参数类型描述
xnum检查方块(相对于原点)的 X 坐标
ynum检查方块(相对于原点)的 Y 坐标
znum检查方块(相对于原点)的 Z 坐标

返回类型:STRING - 传入坐标的位置类型,基于结构原点。

只会返回如下之一:

  • AIR - 位置在空中。
  • LAND - 位置在地面上。
  • OCEAN - 位置在海洋中。

结构(structure)

structure 函数会在当前结构中生成另一个结构,带原点偏移及旋转。

参数:

参数类型描述
xnum放置结构(相对于原点)的 X 坐标
ynum放置结构(相对于原点)的 Y 坐标
znum放置结构(相对于原点)的 Z 坐标
structurestr生成的结构 ID(等同于结构脚本中的 id
rotationstr...生成结构时附带的旋转角度。会随机选择其中一个。有效旋转角度:NONE(不旋转)、CW_90(顺时针旋转 90 度)、CCW_90(逆时针旋转 90 度)以及 CW_180(旋转 180 度)

rotation 中的 ... 表示它是可变参数 - 能够是任何数字值。

返回类型:BOOLEAN - 若结构成功生成,则返回 true,反之返回 false

随机整数(randomInt)

randomInt 函数会返回指定范围内的随机整数。

参数:

参数类型描述
rangenum最大值(不含)

返回类型:NUMBER - 范围为 0(含)至 range 对应值(不含)的随机整数。

例如,randomInt(10) 会返回 09 的随机数。

递归(recursions)

recursions 函数获取前几次结构生成的递归次数。可有效防止递归结构无限递归。

参数:无

返回:NUMBER - 当前递归次数。

structure_a 通过 structure 函数生成了 structure_b,则 recursions() 函数在 structure_a 中返回 0,而在 structure_b 中返回 1。若 structure_b 再次生成了 structure_a,则 recursions() 函数只会在第二个生成的 strucrure_a返回 2

设置标记(setMark)

setMark 函数是与标记交互的一种方式,允许数据存储在结构中备用,而不会影响其正常生成。标记是分配给指定位置结构的一串字符。由 setMark 函数设置,通过 getMark 读取。其中一种使用方式就是通过标记位置决定结构生成的位置,然后用 getMark 分别检查它们是否会重叠。

递归结构中的标记在父结构中可见。若 structure_a 通过 structure 函数生成了 structure_b,且 structure_b 设置了一个标记,则 structure_a 可以读取这个标记。标记的位置是相对的,会设置在所有递归的偏移原点上。

在已有位置上重复设置标记会使得新标记覆盖旧标记的值。

参数:

参数类型描述
xnum设置标记(相对于原点)的 X 坐标
ynum设置标记(相对于原点)的 Y 坐标
znum设置标记(相对于原点)的 Z 坐标
contentstr设置标记的内容

返回类型:VOID

读取标记(getMark)

getMark 函数是与标记交互的一种方式,允许数据存储在结构中备用,而不会影响其正常生成。标记是分配给指定位置结构的一串字符。由 setMark 函数设置,通过 getMark 读取。其中一种使用方式就是通过标记位置决定结构生成的位置,然后用 getMark 分别检查它们是否会重叠。

递归结构中的标记在父结构中可见。若 structure_a 通过 structure 函数生成了 structure_b,且 structure_b 设置了一个标记,则 structure_a 可以读取这个标记。标记的位置是相对的,会设置在所有递归的偏移原点上。

参数:

参数类型描述
xnum检查标记(相对于原点)的 X 坐标
ynum检查标记(相对于原点)的 Y 坐标
znum检查标记(相对于原点)的 Z 坐标

返回类型:STRING - 对应位置的标记内容。如果标记为空或不存在,则返回 ""(空字符串)。

拉取(pull)

pull 函数会在指定位置放置方块,然后将其“拉”到地面。pull 函数首先会搜索指定位置,然后向下延伸,直到检测到下方方块不是空气为止。

参数:

参数类型描述
xnum放置方块(相对于原点)的 X 坐标
ynum开始搜索(相对于原点)的 Y 坐标
znum放置方块(相对于原点)的 Z 坐标
datastr放置方块的方块数据(必须为常量表达式)

返回类型:VOID

战利品(loot)

loot 函数会对某个箱子填充战利品。容器为任意带有界面的方块(箱子、潜影盒、熔炉、酿造台等)。

参数:

参数类型描述
xnum填充战利品(相对于原点)的 X 坐标
ynum填充战利品(相对于原点)的 Y 坐标
znum填充战利品(相对于原点)的 Z 坐标
tablestr战利品表的问文件名称,相对 pack/structures/loot 的路径。
示例:village/village_house.json

返回类型:VOID

实体(entity)

entity 函数会在指定位置生成实体。

参数类型描述
xnum生成实体(相对于原点)的 X 坐标
ynum生成实体(相对于原点)的 Y 坐标
znum生成实体(相对于原点)的 Z 坐标
entitystr生成的实体 ID

返回类型:VOID

获取群系(getBiome)

getBiome 函数会返回指定位置的 Terra 群系。

参数:

参数类型描述
xnum检查群系(相对于原点)的 X 坐标
ynum检查群系(相对于原点)的 Y 坐标
znum检查群系(相对于原点)的 Z 坐标

返回类型:STRING - 群系 ID,如 "ARID_MOUNTAINS"

获取方块(getBlock)

getBlock 函数检查指定位置的方块状态。它不应被用在普通结构中!

getBlock 函数首先会强加载区块。生成树木时无伤大雅,因为这些区块必定被夹在,但在普通结构中这会导致巨量的区块载入。请在普通结构中使用 check 函数,而非 getBlock

参数:

参数类型描述
xnum检查方块(相对于原点)的 X 坐标
ynum检查方块(相对于原点)的 Y 坐标
znum检查方块(相对于原点)的 Z 坐标

返回类型:STRING - 方块的 ID,不带属性,如 "minecraft:stone"

状态(state)

state 函数会将 NBT 数据施在方块实体(如告示牌或刷怪笼)上。

数据格式为 "键甲=值甲,键乙=值乙",如 "text1=hello,text2=world",将其应用至告示牌会让告示牌显示如下内容:

text
hello
world

参数:

参数类型描述
xnum方块(相对于原点)的 X 坐标
ynum方块(相对于原点)的 Y 坐标
znum方块(相对于原点)的 Z 坐标
datastr应用至方块的数据

返回类型:VOID

输出(print)

print 函数会向控制台输出指定内容。它是调试用功能,只会在调试模式启用时生效。

参数:

参数类型描述
messagestr输出至控制台的消息

采样器(sampler)

sampler 函数允许配置包缓存的噪声采样器在 TerraScript 中使用,并输出噪声值。

参数:

参数类型描述
samplerstr噪声采样器的 ID
xnum噪声输入的(相对于原点)的 X 坐标
znum噪声输入的(相对于原点)的 Z 坐标
ynum(可选)噪声输入的(相对于原点)的 Y 坐标

返回类型:num - 噪声采样器的输出值。

terrascript-function-sampler 拓展提供。

贡献者

页面历史