CraftEngine

授权转载 付费 开源 娱乐 CraftEngine 26.10-快照

请登录后获取

新功能:​

  • 新增对 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 分配将适用于以下内容:
  • custom-model-data 选项
  • 图像的 char 选项
  • 方块外观状态
  • 方块内部状态
当然,您仍然可以通过指定相关选项手动设置 ID。插件自动分配的所有内容将保存在插件根目录下的 cache 文件夹中。要清理过期的缓存文件,可以直接使用 /ce debug clean-cache 命令。

安全升级指南​

  1. 完整备份:在开始之前,务必备份整个 CraftEngine 插件文件夹。这是一个至关重要的好习惯,可在出现问题时快速恢复。
  2. 检查地图区块:如果您的服务器包含未被 CraftEngine 正确记录的自定义方块区块(例如通过 WorldPainter 或本地 WorldEdit 编辑的地图),请确保在 config.yml 中启用 sync-custom-blocks-on-chunk-load 选项,并确保所有需要同步的区块至少加载一次。
  3. 谨慎更新与测试:
    • 将新的 CraftEngine 插件文件放入服务器并启动。
    • 如果因数据包中的方块问题导致启动失败,请暂时移除数据包。
    • 【重要】 对于生产环境,强烈建议先在测试服务器上执行完整的升级和验证流程。确认一切正常后,再将完整的插件配置和数据包部署到生产服务器。
  4. 迁移配置文件:
    • 更新后,旧的 mappings.yml 和 additional-real-blocks.yml 文件将被移除。新的 mappings.yml 文件将在 resources/internal/configuration 文件夹中生成。
    • 您可以选择手动将旧 mappings.yml 中的配置内容合并到新文件中。
    • 【注意】 不要直接覆盖新文件!确保所有自定义内容放置在 block-state-mappings 区域内,并注意新配置文件使用的缩进格式。
  5. 调整方块数量:根据实际需求,在 config.yml 中调整 serverside-blocks 的数量。
    (译者注:serverside-blocks 存在一个隐藏的最大值限制 100000,目的是为了防止注册过多的方块导致服务器运行效率严重降低)
  6. 解决 ID 冲突警告:
    • 插件启动时,控制台可能会显示大量关于内部真实方块 ID 冲突的警告。
    • 最快解决方案:从每个方块的配置中移除 id 参数,插件将自动分配唯一 ID。
    • 或者,您可以手动为每个方块分配一个新的、全局唯一的 ID 值。
  7. 当控制台中的所有警告消息消失后,再次重启服务器。此时,升级过程完成,所有功能将恢复正常。

主要配置文件变更​

多状态方块简化:​

  • 真实 ID 分配不再依赖 variants 部分,该部分现为可选。
  • 在旧版本中,对于具有多种变体的方块,您需要编写冗长的 variants 配置。现在,您可以使用部分 NBT 统一为满足特定条件的方块状态设置属性或外观。
例如,对于配置多种树叶变体,在新版本中只需以下配置,无需重复编写 28 个单独的变体条目:
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 预设类型:
  • leaves(所有标准树叶,不含水)
  • waterlogged_leaves(含水的树叶)
  • lower_tripwire(具有较小碰撞箱的绊线)
  • higher_tripwire(具有较大碰撞箱的绊线)
  • tripwire(任意绊线)
  • note_block(音符盒)
  • mushroom(蘑菇方块)
  • solid(任意固体方块,包括音符盒和蘑菇方块)
  • sapling(任意树苗)
  • cactus(任意仙人掌)
  • sugar_cane(任意甘蔗)
在新版本中,自动分配的 ID 显示为黄色,手动指定的 ID 显示为红色。
1760771464303.webp
  • 改进了 pack.mcmeta 合并
  • 改进了 strippable 和 change_over_time 方块行为
  • 改进了 totem-animation 命令,现支持自定义音效
  • 为村民交易界面和聊天组件新增 client-bound-data/material 支持
  • 修复了 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 分配将适用于以下内容:
  • custom-model-data 选项
  • 图像的 char 选项
  • 方块外观状态
  • 方块内部状态
当然,您仍然可以通过指定相关选项手动设置 ID。插件自动分配的所有内容将保存在插件根目录下的 cache 文件夹中。要清理过期的缓存文件,可以直接使用 /ce debug clean-cache 命令。

安全升级指南​

  1. 完整备份:在开始之前,务必备份整个 CraftEngine 插件文件夹。这是一个至关重要的好习惯,可在出现问题时快速恢复。
  2. 检查地图区块:如果您的服务器包含未被 CraftEngine 正确记录的自定义方块区块(例如通过 WorldPainter 或本地 WorldEdit 编辑的地图),请确保在 config.yml 中启用 sync-custom-blocks-on-chunk-load 选项,并确保所有需要同步的区块至少加载一次。
  3. 谨慎更新与测试:
    • 将新的 CraftEngine 插件文件放入服务器并启动。
    • 如果因数据包中的方块问题导致启动失败,请暂时移除数据包。
    • 【重要】 对于生产环境,强烈建议先在测试服务器上执行完整的升级和验证流程。确认一切正常后,再将完整的插件配置和数据包部署到生产服务器。
  4. 迁移配置文件:
    • 更新后,旧的 mappings.yml 和 additional-real-blocks.yml 文件将被移除。新的 mappings.yml 文件将在 resources/internal/configuration 文件夹中生成。
    • 您可以选择手动将旧 mappings.yml 中的配置内容合并到新文件中。
    • 【注意】 不要直接覆盖新文件!确保所有自定义内容放置在 block-state-mappings 区域内,并注意新配置文件使用的缩进格式。
  5. 调整方块数量:根据实际需求,在 config.yml 中调整 serverside-blocks 的数量。
    (译者注:serverside-blocks 存在一个隐藏的最大值限制 100000,目的是为了防止注册过多的方块导致服务器运行效率严重降低)
  6. 解决 ID 冲突警告:
    • 插件启动时,控制台可能会显示大量关于内部真实方块 ID 冲突的警告。
    • 最快解决方案:从每个方块的配置中移除 id 参数,插件将自动分配唯一 ID。
    • 或者,您可以手动为每个方块分配一个新的、全局唯一的 ID 值。
  7. 当控制台中的所有警告消息消失后,再次重启服务器。此时,升级过程完成,所有功能将恢复正常。

主要配置文件变更​

多状态方块简化:​

  • 真实 ID 分配不再依赖 variants 部分,该部分现为可选。
  • 在旧版本中,对于具有多种变体的方块,您需要编写冗长的 variants 配置。现在,您可以使用部分 NBT 统一为满足特定条件的方块状态设置属性或外观。
例如,对于配置多种树叶变体,在新版本中只需以下配置,无需重复编写 28 个单独的变体条目:
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 预设类型:
  • leaves(所有标准树叶,不含水)
  • waterlogged_leaves(含水的树叶)
  • lower_tripwire(具有较小碰撞箱的绊线)
  • higher_tripwire(具有较大碰撞箱的绊线)
  • tripwire(任意绊线)
  • note_block(音符盒)
  • mushroom(蘑菇方块)
  • solid(任意固体方块,包括音符盒和蘑菇方块)
  • sapling(任意树苗)
  • cactus(任意仙人掌)
  • sugar_cane(任意甘蔗)
在新版本中,自动分配的 ID 显示为黄色,手动指定的 ID 显示为红色。
webp.115351
  • 喜欢
反馈: 雪风先生
  • 修复了自 0.0.63.4 版本起因其他贡献者失误导致的破坏音效重复播放问题
  • 修复了被凋灵摧毁时自定义方块音效无法播放的问题
  • 添加按钮和栅栏
1758712512579.webp
  • 修复了自0.0.63.4版本以来的挖掘速度问题
  • 新增哈密瓜示例用于演示茎块行为
image.webp
重构方块系统前的最终版本
  • 修复了矿车中的方块在1.21.3~1.21.4版本引发的错误
  • 新增按钮行为
  • 重构网络系统
  • 修复标签类物品在重新加载后未被包含在配方中的问题
  • 接口: 为 BlockBehavior 新增 stepOn 方法
后退
顶部 底部