• Forge论坛

导航页

  • 主页
  • 向文档做出贡献
  • 入门
    • 概述
    • 模组文件
    • 规划你的模组结构
    • 版本号
      • 样例
  • 核心概念
    • 注册表
    • 端位(Sides)
    • 事件
    • 模组生命周期
    • 资源
    • 国际化与本地化
  • 方块
    • 概述
    • 方块状态
  • 物品
    • 概述
    • BlockEntityWithoutLevelRenderer
  • 网络
    • 概述
    • SimpleImpl
    • 实体的同步
  • 方块实体
    • 概述
    • BlockEntityRenderer
  • 游戏特效
    • 粒子效果
    • 音效
  • 数据储存
    • Capabilities
    • Saved Data
    • 编解码器(Codecs)
  • 图形用户界面
    • 菜单(Menus)
    • 屏幕(Screens)
  • 渲染
    • 模型扩展
      • 概述
      • 根变换
      • 渲染类型
      • 部分可见度
      • 面数据
    • 模型加载器
      • 概述
      • 烘焙模型
      • 变换
      • 物品重载
  • 资源
    • 客户端资源(Assets)
      • 概述
      • 模型
        • 概述
        • 纹理色调
        • 物品属性
    • 服务端数据(Data)
      • 概述
      • 配方
        • 概述
        • 自定义配方
        • 原料
        • 非数据包配方
      • 战利品表
      • 全局战利品修改器
      • 标签
      • 进度
      • 条件性加载数据
  • 数据生成
    • 概述
    • 客户端资源(Assets)
      • 模型提供者
      • 语言提供者
      • 音效提供者
    • 服务端数据(Data)
      • 配方提供者
      • 战利品表提供者
      • 标签提供者
      • 进度提供者
      • 全局战利品修改器提供者
      • 数据包注册表对象提供者
  • 杂项功能
    • 配置
    • 键盘布局
    • 游戏测试
    • Forge更新检查器
    • 调试分析器
  • 进阶主题
    • 访问转换器
  • 向Forge做出贡献
    • 概述
    • Pull Request准则
  • 旧版本
    • 概述
    • 移植到当前版本

版本号

在一般项目中,语义式的版本号(格式为MAJOR.MINOR.PATCH)被经常使用。然而,在长期性地修改的情况下,使用格式MCVERSION-MAJORMOD.MAJORAPI.MINOR.PATCH可能更有利于将模组的创世性的修改与API变更性的修改区分开来。

重要

Forge使用Maven版本范围来比较版本字符串,这与Semantic Versioning 2.0.0规范不完全兼容,例如“prerelease”标签。

样例

以下是在不同情形下能递增各种变量的示例列表。

  • MCVERSION
  • 始终与该模组所适用的Minecraft版本相匹配。
  • MAJORMOD
  • 移除物品、方块、方块实体等。
  • 改变或移除之前存在的机制。
  • 升级到新的Minecraft版本。
  • MAJORAPI
  • 更改枚举的顺序或变量。
  • 更改方法的返回类型。
  • 一并移除公共方法。
  • MINOR
  • 添加物品、方块、方块实体等。
  • 添加新机制。
  • 废弃公共方法。(这不是一次MAJORAPI递增,因为它并未改变API。)
  • PATCH
  • Bug修复。

当递增任何变量时,所有更小级别的变量都应重置为0。例如,如果MINOR递增,PATCH将变为0。如果MAJORMOD递增,则所有其他变量将变为0。

项目初始阶段

如果你正处于模组的初始开发阶段(在任何正式发布之前),MAJORMOD和MAJORAPI应始终为0。只有MINOR和PATCH应该在每次构建你的模组时更新。一旦你构建了一个官方版本(大多数情况下应使用稳定的API),你应该将MAJORMOD增加到版本1.0.0.0。有关任何进一步的开发阶段,请参阅本文档的预发布和候选发布部分。

多个Minecraft版本

如果模组升级到新版本的Minecraft,而旧版本将只会得到bug修复,则PATCH变量应根据升级前的版本进行更新。如果模组针对旧版本和新版本的Minecraft都仍在积极开发中,建议将该版本附加到所有两个Minecraft版本号之后。例如,如果模组由于Minecraft版本的更改而升级到3.0.0.0版本,那么旧版本的模组也应该更新到3.0.0.0。又例如,旧版本将变成1.7.10-3.0.0.0版本,而新版本将变成1.8-3.0.0.0版本。如果在为新的Minecraft版本构建时模组本身并没有任何更改,那么除了Minecraft版本之外的所有变量都应该保持不变。

最终发布

当放弃对某个Minecraft版本的支持时,针对该版本的最后一个模组构建版本应该有-final后缀。这意味着模组对于所表示的MCVERSION将不再支持,玩家应该升级到模组所支持的新版本的Minecraft,以继续接收更新和bug修复。

预发布

(本指南不使用-pre,因为在撰写本文时,它不是-beta的有效别名。)请注意,已经发布的版本和首次发布之前的版本不能进入预发布;变量(主要是MINOR,但MAJORAPI和MAJORMOD也可以预发布)应该在添加-beta后缀之前进行相应的更新。首次发布之前的版本只是在建版本。

候选发布

候选发布在实际版本更替之前充当预发布。这些版本应该附加-rcX,其中X是候选版本的数量,理论上,只有在修复bug时才应该增加。已经发布的版本无法接收候选版本;在添加-rc后缀之前,应该相应地更新变量(主要是MINOR,但MAJORAPI和MAJORMOD也可以预发布)。当作为稳定构建版本发布候选版本时,它既可以与上一个候选版本完全相同,也可以有更多的bug修复。

Built with MkDocs using a custom theme. Hosted by Read the Docs.
Enable Dark Theme