自定义方块
要在 Geyser 中设置自定义方块,你需要选择注册方块的方式。最简单的方式是使用 JSON 文件,但你也可以使用 Geyser 扩展。
需要注意的是,方块及其相关组件并不十分稳定。Mojang 对方块的更改频率通常比物品要高得多。这意味着 Geyser 允许注册的任何组件都可能在未来版本的 Bedrock 中失效。
启用自定义方块
在开始之前,请确保在 config.yml 文件中将 gameplay.enable-custom-content 设置为 true。
# Whether to add any items and blocks which normally does not exist in Bedrock Edition.
# This should only need to be disabled if using a proxy that does not use the "transfer packet" style of server switching.
# If this is disabled, furnace minecart items will be mapped to hopper minecart items.
# Geyser's block, item, and skull mappings systems will also be disabled.
# This option requires a restart of Geyser in order to change its setting.
enable-custom-content: true
JSON 映射
JSON 映射使用的结构与行为包注册方块的结构类似。相关组件列表请参阅 Minecraft: Bedrock Edition Creator Documentation。
用于注册方块或物品的自定义映射文件应放置在 custom_mappings 文件夹中。此文件夹在你启动服务器时创建。对于独立版,它位于 Geyser-Standalone.jar 文件所在的同一文件夹中;对于插件版,它位于 Geyser 数据文件夹内。如果你没有此文件夹,请确保使用的是最新版本的 Geyser。
示例映射文件
{
"format_version": 1,
"blocks": {
"minecraft:granite_wall": {
"name": "my_block",
"display_name": "Custom Granite Wall",
"geometry": "geometry.blocks.my_block_geo",
"material_instances": {
"*": {
"texture": "some_texture",
"render_method": "alpha_test",
"face_dimming": true,
"ambient_occlusion": true
}
},
"tags": ["stone", "wall"],
"state_overrides": {
"east=none,north=none,south=none,up=true,waterlogged=true,west=none": {
"geometry": "geometry.blocks.my_other_block_geo",
"destructible_by_mining": 10,
"place_air": false
},
"east=none,north=none,south=none,up=false,waterlogged=true,west=tall": {
"friction": 0.6,
"light_emission": 7,
"light_dampening": 8,
"transformation": {
"scale": [0.5, 0.5, 0.5],
"translation": [1, 0, 0],
"rotation": [0, 90, 0]
}
},
"east=none,north=none,south=low,up=true,waterlogged=true,west=tall": {
"placement_filter": {
"conditions": [{
"allowed_faces": ["up", "down"],
"block_filter": [{
"tags": "!query.any_tag('stone')"
},
"minecraft:dirt"
]
}]
}
}
}
}
}
}
架构
以下详细说明了映射文件的架构。只有 name 字段是严格必需的。所有其他字段都是可选的。
format_version:- 类型:
integer- 描述: 映射文件格式的版本。
- 类型:
blocks:- 类型:
object- 描述: 包含方块定义列表的对象。
minecraft:some_block:- 类型:
object- 描述: 用于覆盖指定 Java 方块的方块定义。
name:- 类型:
string- 默认值: 无
- 描述: 自定义方块的名称。
- 类型:
collision_box:- 类型:
objectorigin:- 类型:
array- 默认值: 从被覆盖的方块推断
- 描述: x、y 和 z 原点值的数组
- 范围: 必须介于
[-8, 0, -8]到[8, 16, 8]之间(含)items:- 类型:
float- 默认值: 从被覆盖的方块推断
- 描述: 单个轴的原点值
- 类型:
- 类型:
size:- 类型:
array- 默认值: 从被覆盖的方块推断
- 描述: x、y 和 z 大小值的数组
items:- 类型:
float- 默认值: 从被覆盖的方块推断
- 描述: 单个轴的大小值
- 类型:
- 类型:
- 范围:
origin和size的和必须在[-8, 0, -8]到[8, 16, 8]之间(含)。
- 类型:
destructible_by_mining:- 类型:
integer- 默认值: 从被覆盖的方块推断
- 描述: 使用基础工具挖掘方块所需的秒数。
- 类型:
display_name:- 类型:
string- 默认值: 自定义方块的名称
- 描述: 方块的显示名称。
- 类型:
extended_collision_box:- 类型:
objectorigin:- 类型:
array- 默认值: 从被覆盖的方块推断
- 描述: x、y 和 z 原点值的数组
- 范围: 必须介于
[-8, 0, -8]到[8, 16, 8]之间(含)items:- 类型:
float- 默认值: 从被覆盖的方块推断
- 描述: 单个轴的原点值
- 类型:
- 类型:
size:- 类型:
array- 默认值: 从被覆盖的方块推断
- 描述: x、y 和 z 大小值的数组
items:- 类型:
float- 默认值: 从被覆盖的方块推断
- 描述: 单个轴的大小值
- 类型:
- 类型:
- 范围:
origin和size的和必须在[-8, 0, -8]到[8, 16, 8]之间(含)。
- 类型:
friction:- 类型:
float- 范围:
0.0到1.0 - 默认值:
0.4 - 描述: 实体穿过方块时的摩擦力值。
- 范围:
- 类型:
geometry:- 类型:
string- 默认值: 无
- 描述: 方块的几何标识符。
- 类型:
object- 描述: 带骨骼可见性过滤器的方块几何体。
identifier- 类型:
string- 默认值: 无
- 描述: 方块的几何标识符。
- 类型:
bone_visibility:- 类型:
object- 描述: 包含方块骨骼可见性过滤器的对象。
bone_name:- 类型:
string- 默认值: 无
- 描述: 一个 molang 字符串,决定骨骼是否可见。
- 类型:
boolean- 默认值: 无
- 描述: 骨骼是否可见。
- 类型:
- 描述: 包含方块骨骼可见性过滤器的对象。
- 类型:
- 描述: 带骨骼可见性过滤器的方块几何体。
- 类型:
light_emission:- 类型:
integer- 范围:
0到15 - 默认值:
0 - 描述: 方块发出的光量。
- 范围:
- 类型:
light_dampening:- 类型:
integer- 范围:
0到15 - 默认值:
15 - 描述: 光线穿过方块时被衰减的量。
- 范围:
- 类型:
material_instances:- 类型:
object- 描述: 包含方块材质实例的对象。
key:- 类型:
object- 描述: 方块的默认材质实例。可以使用其他 glob 或特定实例。
texture:- 类型:
string- 默认值: 自定义方块的名称
- 描述: 方块的纹理资源路径。
- 类型:
render_method:- 类型:
string- 默认值:
alpha_test - 描述: 方块使用的渲染方法。
- 默认值:
- 类型:
face_dimming:- 类型:
boolean- 默认值:
false - 描述: 是否启用方块的面暗淡。
- 默认值:
- 类型:
ambient_occlusion:- 类型:
boolean- 默认值:
false - 描述: 是否启用方块的环境光遮蔽。
- 默认值:
- 类型:
- 描述: 方块的默认材质实例。可以使用其他 glob 或特定实例。
- 类型:
- 描述: 包含方块材质实例的对象。
- 类型:
place_air:
- 描述: 用于覆盖指定 Java 方块的方块定义。
- 类型:
- 描述: 包含方块定义列表的对象。
- 类型: