新功能:
- 新增对 1.21.9 版本的兼容支持
- 实现
custom-model-data、id、state和char的自动分配功能(具体说明将在后续提供)- 新增方块行为类型:
button_block、fence_block和stem_block- 新增棕榈按钮、棕榈栅栏和哈密瓜的配置
- 为合成配方引入
functions选项,支持合成后操作- 为合成/锻造配方添加
conditions选项- 增强
totem-animation命令,支持自定义音效- 新增
damage函数类型- 在 config.yml 中引入
fix-atlas选项- 改进了 give/get 命令中物品获取的代码实现
错误修复:
- 修复区块加载时边缘方块的亮度损失问题
- 修复基于标签的物品在重载后未能及时参与新配方的问题
- 解决某些版本中矿车内的方块导致的网络协议错误
- 修复凋灵破坏方块时缺少自定义音效的问题
- 修复了部分
pack.mcmeta格式合并异常的问题- 修复部分语言文件中的键名不匹配问题
- 解决修剪配方意外出现在 CE 界面且无法点击的问题
- 修复村民交易界面和组件悬停事件中未应用
client-bound-data/material的问题API 变更:
- 新增方块实体异步刻方法
- 为方块行为引入
stepOn方法- 移除了 ImmutableBlockState 的父类
重要 / 必读
0.0.63.8 版本是 CraftEngine 数月来的首次重大变更更新。但无需担心,只需按照以下步骤即可顺利升级到新版本。
首先,我们来了解新版本的主要变化。最核心的变化是完全移除 additional-real-blocks 设计。所有真实方块 ID 已从 craftengine:note_block_xx 统一改为 craftengine:custom_xx。这意味着不再需要为每种方块类型单独注册自定义方块。现在,您可以在 config.yml 中配置 serverside-blocks 选项,以为所有方块创建一个共享的内部 ID 池。
其次,方块状态映射(mappings)现支持动态加载。它们不再局限于插件根目录下的固定文件,而是可以从任何 resources/xxx/configuration 目录读取配置文件。
这些变化旨在自动化 ID 分配。在旧版本中,手动分配 ID 常常令人困扰,容易遗忘且需要反复检查已使用的 ID。为了减轻配置负担,我们决定自动化这一过程,确保高可靠性,同时不影响配置文件加载速度。
自动 ID 分配将适用于以下内容:
当然,您仍然可以通过指定相关选项手动设置 ID。插件自动分配的所有内容将保存在插件根目录下的 cache 文件夹中。要清理过期的缓存文件,可以直接使用 /ce debug clean-cache 命令。
- custom-model-data 选项
- 图像的 char 选项
- 方块外观状态
- 方块内部状态
安全升级指南
- 完整备份:在开始之前,务必备份整个 CraftEngine 插件文件夹。这是一个至关重要的好习惯,可在出现问题时快速恢复。
- 检查地图区块:如果您的服务器包含未被 CraftEngine 正确记录的自定义方块区块(例如通过 WorldPainter 或本地 WorldEdit 编辑的地图),请确保在 config.yml 中启用 sync-custom-blocks-on-chunk-load 选项,并确保所有需要同步的区块至少加载一次。
- 谨慎更新与测试:
- 将新的 CraftEngine 插件文件放入服务器并启动。
- 如果因数据包中的方块问题导致启动失败,请暂时移除数据包。
- 【重要】 对于生产环境,强烈建议先在测试服务器上执行完整的升级和验证流程。确认一切正常后,再将完整的插件配置和数据包部署到生产服务器。
- 迁移配置文件:
- 更新后,旧的 mappings.yml 和 additional-real-blocks.yml 文件将被移除。新的 mappings.yml 文件将在 resources/internal/configuration 文件夹中生成。
- 您可以选择手动将旧 mappings.yml 中的配置内容合并到新文件中。
- 【注意】 不要直接覆盖新文件!确保所有自定义内容放置在 block-state-mappings 区域内,并注意新配置文件使用的缩进格式。
- 调整方块数量:根据实际需求,在 config.yml 中调整 serverside-blocks 的数量。
(译者注:serverside-blocks 存在一个隐藏的最大值限制 100000,目的是为了防止注册过多的方块导致服务器运行效率严重降低)- 解决 ID 冲突警告:
- 插件启动时,控制台可能会显示大量关于内部真实方块 ID 冲突的警告。
- 最快解决方案:从每个方块的配置中移除 id 参数,插件将自动分配唯一 ID。
- 或者,您可以手动为每个方块分配一个新的、全局唯一的 ID 值。
- 当控制台中的所有警告消息消失后,再次重启服务器。此时,升级过程完成,所有功能将恢复正常。
主要配置文件变更
多状态方块简化:
例如,对于配置多种树叶变体,在新版本中只需以下配置,无需重复编写 28 个单独的变体条目:
- 真实 ID 分配不再依赖 variants 部分,该部分现为可选。
- 在旧版本中,对于具有多种变体的方块,您需要编写冗长的 variants 配置。现在,您可以使用部分 NBT 统一为满足特定条件的方块状态设置属性或外观。
YAML:properties: waterlogged: type: boolean default: false persistent: type: boolean default: true distance: type: int default: 7 range: 1~7 id: 100 # 真实 ID 的分配已从旧的 variants 部分移至此处。 # 虽然您仍可如本例手动指定 ID,但我们强烈建议直接移除 id 选项, # 让新系统为您自动分配,以简化配置并避免潜在冲突。 # 译者注:通过查看代码这里分配的id指的是起始值,会根据使用的变体数量自动累加 variants: waterlogged=false: appearance: default waterlogged=true: appearance: waterlogged settings: resistance: 1200.0 burnable: false fluid-state: water distance=7,persistent=false: settings: is-randomly-ticking: true自动图像 ID 分配:
为了简化配置,所有图像资源现支持自动 ID 分配。您只需从原始配置中移除 char 选项。此外,需要自动分配的精灵图需通过 grid-size 参数声明其布局。参考以下具体配置方法:
YAML:images: default:emojis: height: 11 ascent: 9 font: minecraft:emoji file: minecraft:font/image/emojis.png grid-size: 4,4 # 行,列自动方块外观状态分配:
在旧版本中,通过 state 选项手动配置客户端方块状态是一个复杂且易出错的过程。为简化操作,新版本引入了 auto-state 选项。您只需移除原始状态配置,并通过 auto-state 指定预设视觉类型,插件将自动为您分配最合适的方块状态。
示例 1:创建任意实心木方块
假设您需要创建仅需标准 1x1x1 实心外观的木方块,无论底层方块是音符盒、蘑菇方块或其他类型,只需在 auto-state 中指定 solid,插件将自动分配合适的方块。
YAML:block: settings: template: default:settings/planks loot: template: default:loot_table/self state: model: template: default:model/simplified_cube_all arguments: path: minecraft:block/custom/palm_planks auto-state: solid示例 2:创建树叶方块
如果您需要创建新的树叶方块,且不关心其视觉表现是橡树树叶还是白桦树叶,只要具有通用树叶外观即可,可按以下方式配置(本例为模板):
YAML:appearances: default: auto-state: leaves model: path: ${model_path} generation: parent: minecraft:block/leaves textures: all: ${texture_path} waterlogged: auto-state: waterlogged_leaves model: path: ${model_path}
当前可用的 auto-state 预设类型:
在新版本中,自动分配的 ID 显示为黄色,手动指定的 ID 显示为红色。
- leaves(所有标准树叶,不含水)
- waterlogged_leaves(含水的树叶)
- lower_tripwire(具有较小碰撞箱的绊线)
- higher_tripwire(具有较大碰撞箱的绊线)
- tripwire(任意绊线)
- note_block(音符盒)
- mushroom(蘑菇方块)
- solid(任意固体方块,包括音符盒和蘑菇方块)
- sapling(任意树苗)
- cactus(任意仙人掌)
- sugar_cane(任意甘蔗)
![]()
- 修复了
always-use-item-model无法正常工作的问题- 修复了物品缺少
model配置时出现的错误- 修复了指向原版方块时
/ce debug target-block报错的问题
CraftEngine 版本 0.0.63.8 更新通知
0.0.63.8 版本是 CraftEngine 数月来的首次重大变更更新。但无需担心,只需按照以下步骤即可顺利升级到新版本。
首先,我们来了解新版本的主要变化。最核心的变化是完全移除additional-real-blocks设计。所有真实方块 ID 已从craftengine:note_block_xx统一改为craftengine:custom_xx。这意味着不再需要为每种方块类型单独注册自定义方块。现在,您可以在config.yml中配置serverside-blocks选项,以为所有方块创建一个共享的内部 ID 池。
其次,方块状态映射(mappings)现支持动态加载。它们不再局限于插件根目录下的固定文件,而是可以从任何resources/xxx/configuration目录读取配置文件。
这些变化旨在自动化 ID 分配。在旧版本中,手动分配 ID 常常令人困扰,容易遗忘且需要反复检查已使用的 ID。为了减轻配置负担,我们决定自动化这一过程,确保高可靠性,同时不影响配置文件加载速度。
自动 ID 分配将适用于以下内容:
当然,您仍然可以通过指定相关选项手动设置 ID。插件自动分配的所有内容将保存在插件根目录下的
custom-model-data选项- 图像的
char选项- 方块外观状态
- 方块内部状态
cache文件夹中。要清理过期的缓存文件,可以直接使用/ce debug clean-cache命令。
安全升级指南
- 完整备份:在开始之前,务必备份整个 CraftEngine 插件文件夹。这是一个至关重要的好习惯,可在出现问题时快速恢复。
- 检查地图区块:如果您的服务器包含未被 CraftEngine 正确记录的自定义方块区块(例如通过
WorldPainter或本地WorldEdit编辑的地图),请确保在config.yml中启用sync-custom-blocks-on-chunk-load选项,并确保所有需要同步的区块至少加载一次。- 谨慎更新与测试:
- 将新的 CraftEngine 插件文件放入服务器并启动。
- 如果因数据包中的方块问题导致启动失败,请暂时移除数据包。
- 【重要】 对于生产环境,强烈建议先在测试服务器上执行完整的升级和验证流程。确认一切正常后,再将完整的插件配置和数据包部署到生产服务器。
- 迁移配置文件:
- 更新后,旧的
mappings.yml和additional-real-blocks.yml文件将被移除。新的mappings.yml文件将在resources/internal/configuration文件夹中生成。- 您可以选择手动将旧
mappings.yml中的配置内容合并到新文件中。- 【注意】 不要直接覆盖新文件!确保所有自定义内容放置在
block-state-mappings区域内,并注意新配置文件使用的缩进格式。- 调整方块数量:根据实际需求,在
config.yml中调整serverside-blocks的数量。
(译者注:serverside-blocks存在一个隐藏的最大值限制100000,目的是为了防止注册过多的方块导致服务器运行效率严重降低)- 解决 ID 冲突警告:
- 插件启动时,控制台可能会显示大量关于内部真实方块 ID 冲突的警告。
- 最快解决方案:从每个方块的配置中移除
id参数,插件将自动分配唯一 ID。- 或者,您可以手动为每个方块分配一个新的、全局唯一的 ID 值。
- 当控制台中的所有警告消息消失后,再次重启服务器。此时,升级过程完成,所有功能将恢复正常。
主要配置文件变更
多状态方块简化:
例如,对于配置多种树叶变体,在新版本中只需以下配置,无需重复编写 28 个单独的变体条目:
- 真实 ID 分配不再依赖
variants部分,该部分现为可选。- 在旧版本中,对于具有多种变体的方块,您需要编写冗长的
variants配置。现在,您可以使用部分 NBT 统一为满足特定条件的方块状态设置属性或外观。
YAML:properties: waterlogged: type: boolean default: false persistent: type: boolean default: true distance: type: int default: 7 range: 1~7 id: 100 # 真实 ID 的分配已从旧的 variants 部分移至此处。 # 虽然您仍可如本例手动指定 ID,但我们强烈建议直接移除 id 选项, # 让新系统为您自动分配,以简化配置并避免潜在冲突。 # 译者注:通过查看代码这里分配的id指的是起始值,会根据使用的变体数量自动累加 variants: waterlogged=false: appearance: default waterlogged=true: appearance: waterlogged settings: resistance: 1200.0 burnable: false fluid-state: water distance=7,persistent=false: settings: is-randomly-ticking: true自动图像 ID 分配:
为了简化配置,所有图像资源现支持自动 ID 分配。您只需从原始配置中移除char选项。此外,需要自动分配的精灵图需通过grid-size参数声明其布局。参考以下具体配置方法:
YAML:images: default:emojis: height: 11 ascent: 9 font: minecraft:emoji file: minecraft:font/image/emojis.png grid-size: 4,4 # 行,列自动方块外观状态分配:
在旧版本中,通过state选项手动配置客户端方块状态是一个复杂且易出错的过程。为简化操作,新版本引入了auto-state选项。您只需移除原始状态配置,并通过auto-state指定预设视觉类型,插件将自动为您分配最合适的方块状态。
示例 1:创建任意实心木方块
假设您需要创建仅需标准 1x1x1 实心外观的木方块,无论底层方块是音符盒、蘑菇方块或其他类型,只需在auto-state中指定solid,插件将自动分配合适的方块。
YAML:block: settings: template: default:settings/planks loot: template: default:loot_table/self state: model: template: default:model/simplified_cube_all arguments: path: minecraft:block/custom/palm_planks auto-state: solid示例 2:创建树叶方块
如果您需要创建新的树叶方块,且不关心其视觉表现是橡树树叶还是白桦树叶,只要具有通用树叶外观即可,可按以下方式配置(本例为模板):
YAML:appearances: default: auto-state: leaves model: path: ${model_path} generation: parent: minecraft:block/leaves textures: all: ${texture_path} waterlogged: auto-state: waterlogged_leaves model: path: ${model_path}
当前可用的auto-state预设类型:
在新版本中,自动分配的 ID 显示为黄色,手动指定的 ID 显示为红色。
- leaves(所有标准树叶,不含水)
- waterlogged_leaves(含水的树叶)
- lower_tripwire(具有较小碰撞箱的绊线)
- higher_tripwire(具有较大碰撞箱的绊线)
- tripwire(任意绊线)
- note_block(音符盒)
- mushroom(蘑菇方块)
- solid(任意固体方块,包括音符盒和蘑菇方块)
- sapling(任意树苗)
- cactus(任意仙人掌)
- sugar_cane(任意甘蔗)
![]()