TerraScript 函数
Terra 的 TerraScript 实现包含了许多与世界交互、设置数据及调试相关的函数。
方块(block)
block 函数可以在指定位置放置方块。
参数:
参数 | 类型 | 描述 |
---|---|---|
x | num | 放置方块(相对于原点)的 X 坐标 |
y | num | 放置方块(相对于原点)的 Y 坐标 |
z | num | 放置方块(相对于原点)的 Z 坐标 |
data | str | 放置方块包含的方块数据字符串(必须为常量表达式) |
replace | bool | (可选;默认值为 true )设置为 true 时,替换现存方块。在这种情况下,任何方块都会被覆写(此参数未指定时的默认行为)。当为 false 时,只有空气才会被替换。 |
physics | bool | (可选:默认值为 false )是否在初始区块生成后为方块进行一次刻更新,使得诸如水或沙子等方块可以流动或下坠。 |
返回类型:void
检查(check)
check 函数检查位置的“类型”。它可以更快地检测指定位置是否在空中、海洋或地面。它无法获取指定位置的方块状态信息,因此它比 getBlock
快许多,且不会强行加载它使用的区块。在普通结构中应避免使用 getBlock
,并尽可能将其替换为 check
。
参数:
参数 | 类型 | 描述 |
---|---|---|
x | num | 检查方块(相对于原点)的 X 坐标 |
y | num | 检查方块(相对于原点)的 Y 坐标 |
z | num | 检查方块(相对于原点)的 Z 坐标 |
返回类型:STRING
- 传入坐标的位置类型,基于结构原点。
只会返回如下之一:
AIR
- 位置在空中。LAND
- 位置在地面上。OCEAN
- 位置在海洋中。
结构(structure)
structure 函数会在当前结构中生成另一个结构,带原点偏移及旋转。
参数:
参数 | 类型 | 描述 |
---|---|---|
x | num | 放置结构(相对于原点)的 X 坐标 |
y | num | 放置结构(相对于原点)的 Y 坐标 |
z | num | 放置结构(相对于原点)的 Z 坐标 |
structure | str | 生成的结构 ID(等同于结构脚本中的 id ) |
rotation | str... | 生成结构时附带的旋转角度。会随机选择其中一个。有效旋转角度:NONE (不旋转)、CW_90 (顺时针旋转 90 度)、CCW_90 (逆时针旋转 90 度)以及 CW_180 (旋转 180 度) |
rotation
中的 ...
表示它是可变参数 - 能够是任何数字值。
返回类型:BOOLEAN
- 若结构成功生成,则返回 true
,反之返回 false
。
随机整数(randomInt)
randomInt 函数会返回指定范围内的随机整数。
参数:
参数 | 类型 | 描述 |
---|---|---|
range | num | 最大值(不含) |
返回类型:NUMBER
- 范围为 0
(含)至 range
对应值(不含)的随机整数。
例如,randomInt(10)
会返回 0
到 9
的随机数。
递归(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
可以读取这个标记。标记的位置是相对的,会设置在所有递归的偏移原点上。
在已有位置上重复设置标记会使得新标记覆盖旧标记的值。
参数:
参数 | 类型 | 描述 |
---|---|---|
x | num | 设置标记(相对于原点)的 X 坐标 |
y | num | 设置标记(相对于原点)的 Y 坐标 |
z | num | 设置标记(相对于原点)的 Z 坐标 |
content | str | 设置标记的内容 |
返回类型:VOID
读取标记(getMark)
getMark 函数是与标记交互的一种方式,允许数据存储在结构中备用,而不会影响其正常生成。标记是分配给指定位置结构的一串字符。由 setMark
函数设置,通过 getMark
读取。其中一种使用方式就是通过标记位置决定结构生成的位置,然后用 getMark
分别检查它们是否会重叠。
递归结构中的标记在父结构中可见。若 structure_a
通过 structure
函数生成了 structure_b
,且 structure_b
设置了一个标记,则 structure_a
可以读取这个标记。标记的位置是相对的,会设置在所有递归的偏移原点上。
参数:
参数 | 类型 | 描述 |
---|---|---|
x | num | 检查标记(相对于原点)的 X 坐标 |
y | num | 检查标记(相对于原点)的 Y 坐标 |
z | num | 检查标记(相对于原点)的 Z 坐标 |
返回类型:STRING
- 对应位置的标记内容。如果标记为空或不存在,则返回 ""
(空字符串)。
拉取(pull)
pull 函数会在指定位置放置方块,然后将其“拉”到地面。pull 函数首先会搜索指定位置,然后向下延伸,直到检测到下方方块不是空气为止。
参数:
参数 | 类型 | 描述 |
---|---|---|
x | num | 放置方块(相对于原点)的 X 坐标 |
y | num | 开始搜索(相对于原点)的 Y 坐标 |
z | num | 放置方块(相对于原点)的 Z 坐标 |
data | str | 放置方块的方块数据(必须为常量表达式) |
返回类型:VOID
战利品(loot)
loot 函数会对某个箱子填充战利品。容器为任意带有界面的方块(箱子、潜影盒、熔炉、酿造台等)。
参数:
参数 | 类型 | 描述 |
---|---|---|
x | num | 填充战利品(相对于原点)的 X 坐标 |
y | num | 填充战利品(相对于原点)的 Y 坐标 |
z | num | 填充战利品(相对于原点)的 Z 坐标 |
table | str | 战利品表的问文件名称,相对 pack/structures/loot 的路径。示例: village/village_house.json |
返回类型:VOID
实体(entity)
entity 函数会在指定位置生成实体。
参数 | 类型 | 描述 |
---|---|---|
x | num | 生成实体(相对于原点)的 X 坐标 |
y | num | 生成实体(相对于原点)的 Y 坐标 |
z | num | 生成实体(相对于原点)的 Z 坐标 |
entity | str | 生成的实体 ID |
返回类型:VOID
获取群系(getBiome)
getBiome 函数会返回指定位置的 Terra 群系。
参数:
参数 | 类型 | 描述 |
---|---|---|
x | num | 检查群系(相对于原点)的 X 坐标 |
y | num | 检查群系(相对于原点)的 Y 坐标 |
z | num | 检查群系(相对于原点)的 Z 坐标 |
返回类型:STRING
- 群系 ID,如 "ARID_MOUNTAINS"
获取方块(getBlock)
getBlock 函数检查指定位置的方块状态。它不应被用在普通结构中!
getBlock 函数首先会强加载区块。生成树木时无伤大雅,因为这些区块必定被夹在,但在普通结构中这会导致巨量的区块载入。请在普通结构中使用 check
函数,而非 getBlock
!
参数:
参数 | 类型 | 描述 |
---|---|---|
x | num | 检查方块(相对于原点)的 X 坐标 |
y | num | 检查方块(相对于原点)的 Y 坐标 |
z | num | 检查方块(相对于原点)的 Z 坐标 |
返回类型:STRING
- 方块的 ID,不带属性,如 "minecraft:stone"
。
状态(state)
state 函数会将 NBT 数据施在方块实体(如告示牌或刷怪笼)上。
数据格式为 "键甲=值甲,键乙=值乙"
,如 "text1=hello,text2=world"
,将其应用至告示牌会让告示牌显示如下内容:
hello
world
参数:
参数 | 类型 | 描述 |
---|---|---|
x | num | 方块(相对于原点)的 X 坐标 |
y | num | 方块(相对于原点)的 Y 坐标 |
z | num | 方块(相对于原点)的 Z 坐标 |
data | str | 应用至方块的数据 |
返回类型:VOID
输出(print)
print 函数会向控制台输出指定内容。它是调试用功能,只会在调试模式启用时生效。
参数:
参数 | 类型 | 描述 |
---|---|---|
message | str | 输出至控制台的消息 |
采样器(sampler)
sampler 函数允许配置包缓存的噪声采样器在 TerraScript 中使用,并输出噪声值。
参数:
参数 | 类型 | 描述 |
---|---|---|
sampler | str | 噪声采样器的 ID |
x | num | 噪声输入的(相对于原点)的 X 坐标 |
z | num | 噪声输入的(相对于原点)的 Z 坐标 |
y | num | (可选)噪声输入的(相对于原点)的 Y 坐标 |
返回类型:num
- 噪声采样器的输出值。
由 terrascript-function-sampler
拓展提供。