voxels & Box3Voxels / GameVoxels 方块模块
这是一个服务端API
该API仅在服务端脚本使用
- 查阅官方文档
查阅官方文档(Arena)
查阅社区文档(Arena) Box3Voxels /GameVoxels 无法(很难)被实例化,但在全局存在一个单例对象voxels
可以通过voxels 对象控制世界的地形变化,利用循环语法批量生成/销毁方块,获取某个方块的类型、名称、旋转角度等。
方块名称和方块id
方块名称和方块id都是描述某位置方块的方法
方块名称只包含方块的类型
id包含方块的旋转码,在setVoxel方法不填rotation参数的情况下修改方块旋转码
方块正面面朝北方(-z
方向)的旋转码数值上和将方块名称使用id方法转换后(即方块为初始旋转状态的id,也可说为不带旋转码)相同
方块正面面朝北方(-z
方向)的旋转码为基准,取此时的旋转码为voxel,每顺时针转\(90°\),方块voxel加16384
(0x4000
)
我们以泥土(方块名称为'dirt'
,id为125
)为例:
- 面向北方(
-z
方向)的旋转码为125 + 0
=125
- 面向东方(
+x
方向)的旋转码为125 + 16384 * 1
=16509
- 面向南方(
+z
方向)的旋转码为125 + 16384 * 2
=32893
- 面向西方(
-x
方向)的旋转码为125 + 16384 * 3
=49277
若只是想判断方块的类型,应使用name将方块id转换成方块名称或者将方块id取模16384
(0x4000
)后再判断
这不只是为了规范和便于维护,因为方块的id会包含旋转码,旋转码会使直接判断方块id相等的方法无效(除非你把四个方向都考虑到)!
属性¶
- shape: /
-
地图尺寸,决定了能放置方块区域的最大尺寸
这一属性在地图创建之初就以确定,无法修改Bug
若是创建一个中等大小(
64
128
64
)的地图,在控制台输入时该属性正常,在代码文件中shape会变成{ x:32, y:32, z:32 }
经2024/8/19测试,超大地图(256
64
256
)也有此问题
可以通过voxels.shape.set(...)
修复 - VoxelTypes: []
-
一个包含所有方块 名称 的数组。
注意
这个属性的命名方法和其他属性不同,第一个字母大写。注意不要写成
voxelTypes
方法¶
- id(name: ):
-
将方块名称转换为方块id
- name(id: ):
-
将方块id转换为方块名称
- setVoxel(x: , y: , z: , voxel: | , rotation: | ):
-
使用方块名称或无旋转码的id,在指定的坐标位置放置一个方块。
若填写的方块无效,则放置空气('air'
:0
)属性 类型 说明 x 必填,放置位置的x坐标 y 必填,放置位置的y坐标 z 必填,放置位置的z坐标 voxel | 必填,方块名称或id rotation? | 选填,方块的旋转码,可以填的值为 0
,1
,2
,3
、'0'
,'1'
,'2'
,'3'
返回值 类型 说明 新的方块id 提示
rotation参数也可以填写字符串,但是似乎没人这么写,因为这么写除了多了个引号就没有别的用途了
!!! warning "此方法不适用于复制/保存地形 voxel参数中包含的方块旋转码无效,实际旋转码只和rotation有关"
- setVoxelId(x: , y: , z: , voxel: ):
-
使用方块id,直接在指定的坐标位置放置方块。
执行效率比setVoxel更快。
若voxel不带旋转码,则方块面向北方(-z
方向)
若填写的方块无效,则放置空气('air'
:0
)属性 类型 说明 x 必填,放置位置的x坐标 y 必填,放置位置的y坐标 z 必填,放置位置的z坐标 voxel 必填,方块id 返回值 类型 说明 新的方块id - getVoxel(x: , y: , z: ):
-
获取指定地方的方块id
属性 类型 说明 x 必填,获取的方块的x坐标 y 必填,获取的方块的y坐标 z 必填,获取的方块的z坐标 返回值 类型 说明 获取的方块id 提示与技巧
由于其不带旋转码的特性,可以直接用此方法判断方块的id来判断的种类,而不是用name方法转换成方块名称后再比较
此方法不适用于复制/保存地形
用此方法获取的id不带旋转码
- getVoxelId(x: , y: , z: ):
-
直接获取指定地方的方块id
用此方法获取的id带方块旋转码
执行效率比getVoxel更快。属性 类型 说明 x 必填,获取的方块的x坐标 y 必填,获取的方块的y坐标 z 必填,获取的方块的z坐标 返回值 类型 说明 获取的方块id 用此方法获取的id带旋转码
- getVoxelRotation(x: , y: , z: ):
-
获取某个坐标位置的方块旋转码
属性 类型 说明 x 必填,获取的方块的x坐标 y 必填,获取的方块的y坐标 z 必填,获取的方块的z坐标 返回值 类型 说明 获取的方块旋转码
方块速查表¶
提示
发光表示该种方块可以发光(暂时不能体现光源颜色)
蓝色下划线表示该种方块为液体方块(暂时不能体现液体颜色)
左右边框表示该种方块为动态方块
若单元格左侧有绿色边框,代表该种方块为新增方块1
名称和id鼠标右键/触屏长按可复制其内容
提示
要是棋盘方块的描述看不懂,可以把描述里的制表符叠加起来看
-
其判定方法为,用户上次查看文档时文档未收录的方块 ↩