前言:

此教程参考官方WIKI

但是可能并不会同步mod更新(毕竟还是要以官方WIKI为重嘛)


1.准备工作

首先你需要JSON文件(如果不知道最好先搜一下),并且里面应该包含可在浏览器(也就是互联网)上访问版本控制数据链接(比如在GitHub上存储版本数据,或者在自己web服务器中)。

并且链接应该在你的config文件夹中的 versioner.cfgversionDataURL 字段中添加链接。

(比如你的json文件在github.com/123/123/blob/master/ver.json,那么你应该要点击raw按钮跳转到源文件的url上复制此url即可(需要源文件的url ))


2.编写json

如果是小白不懂json的话,最好还是搜下json格式与编辑看一下,以为json的格式很容易出错

下面是WIKI中提到的示例json的第三方注解汉化版 (注意,在编写完成后必须删除注解,也就是包括//文字内容

{
"versionName": "1.2.0",         // 这是最新版本的版本名称(也就是1.12.2或者1.7.10这样的)
"versionCode": 20,              // 版本代码用于比较版本。 更大的版本代码 = 更新的版本。 如果你不填写这个,versionName 将用于比较版本,但它可能不准确(如果您更改了此项,注意在整合包的config文件夹中的versioner.cfg 的I:versionCode也更改成一样的数字)
"versionFormat": "%versionName%",    //您可以使用 %variable_name% 格式来表示变量。 JSON 中不是列表或对象的所有其他字段都是变量。
"sponsors": [{                 // 赞助商对象由赞助商对象数组组成(此项可以删除,但是删除时请注意要删干净,不能多括号或者少括号)
"category": "gold",
                "displayName": "sponsors.test",        // 您可以在此处使用翻译键,这将是实际显示的名称
"titleFormat": ["GOLD", "BOLD"],       // 如何在游戏中显示类别标题。 查看所有可用选项的 Minecraft 格式代码。
"sponsorFormat": ["GOLD"],
"sponsors": [{
"name": "TCreopargh",
"uuid": "2d06868c-6d9b-433a-a356-1a7993b62b8d"           // 您可以使用名称或 uuid 来代表玩家。 当两者都定义时,UUID 优先。
},
{
"name": "Notch"
},
"Dinnerbone"        // 您可以在此处使用字符串而不是对象。 如果它与 uuid 格式不匹配,它将作为名称。
]
},
{
"category": "diamond",
"titleFormat": ["AQUA", "BOLD"],
"sponsorFormat": ["AQUA"],
"sponsors": [{
"name": "Herobrine"
}]
}
],
"sponsorMessage": ["", {                          // 为此使用 Minecraft 的原始 JSON 文本格式(例如发送 /tellraw 命令的方式),此文本显示在赞助商列表的底部。(此项可删除)
"text": "Thank all of you for sponsoring!",
"color": "gold"
}, {
"text": "\n"
}, {
"text": "Become a sponsor!",
"color": "red",
"bold": true,
"underlined": true,
"clickEvent": {
"action": "open_url",
"value": "http://patreon.tcreopargh.xyz/"
}
}],
"changelogs": {                          //更新日志
"1.2.0": [                          //1.2.0更新版本的内容
"Fixed some more bugs",                          //具体内容
"Removed Herobrine",
"Fixed the version number being too low"
],
"1.1.0": [                          //1.1.0更新版本的内容
"Fixed some bugs"                          //具体内容
]
},
"variables": {                    // 您可以使用变量来格式化字符串或在 CraftTweaker 中获取它们(此项应该能删除)
"testInt": 1000,
"testString": "abcde",
"testArray": [
1,
2,
3
],
"testData": {
"a": [
"111",
"222",
"333"
]
}
},
"welcomeMessage": ["", {            // 欢迎信息,也是原始 JSON 格式
"text": "Hello, welcome to play ",            //欢迎文本
"color": "gold"            //颜色
}, {
"text": "TestPack!",
"color": "aqua"
}, {
"text": "\n"
}, {
"text": "Join our discord server!",
"bold": true,            //是否加粗
"underlined": true,            //是否加下划线
"color": "blue",            //颜色
"clickEvent": {
"action": "open_url",            //打开url的动作
"value": "https://discord.gg/WbrB4VaUsz"            //url链接
}
}]
}

3.上传到仓库

如果不知道上传到仓库的话还是建议你别用这个了吧

(毕竟需要网络存储你的配置文件)


配置文件分析

general {
    # 在每行更新日志之前添加了额外的文本(类似于小尾巴,只不过是放在前面)
    S:changelogPrefix= - 

    # 消息边框的样式(在第二个等号以及后面是自定义文本)
    S:delimiter=========================================

   # 如果设置为 false,mod 将不会尝试获取版本数据。
   # 整合包使用者可以在此关闭版本检测
    B:enableVersionChecking=true

    # 你的整合包名称
    S:modpackName=

    # 当用户点击更新按钮时打开的 url,注意必须要加http:// 或 https://
    # 注意:这可以被 ' 覆盖
    S:updateURL=

    # 在连接因超时而关闭之前连接到 URL 的时间。
    I:versionCheckerConnectTimeout=5000

    # 在连接因超时而关闭之前要读取多少时间。
    I:versionCheckerReadTimeout=5000

    # 将从哪里获取版本数据 JSON,注意必须要加http:// 或 https://
    S:versionDataURL=

    ##########################################################################################################
    # 版本通知
    #--------------------------------------------------------------------------------------------------------#
    # 更新通知和消息
    ##########################################################################################################

    versionnotifications {
        # 如果有可用更新,首次登录世界时显示聊天消息?
        B:showLoginChatUpdateNotification=true

        # 如果为 true,将在此 mod 无法获取所有更新数据时,会在聊天中显示错误消息
        B:showUpdateCheckFailedMessage=true

        # 如果在 JSON 中定义了welcomeMessage,则在登录世界时在聊天中显示消息
        B:showWelcomeMessage=true
    }

    ##########################################################################################################
    # 当前版本
    #--------------------------------------------------------------------------------------------------------#
    # 用于设置当前版本信息的配置
    # 对于整合包开发者:确保在更新整合包时更改这些!
    ##########################################################################################################

    currentversion {
        # 格式化当前版本时使用的变量。 每行一个条目,格式为 key=value
        # 值必须遵循JSON格式,例如字符串必须用双引号引起来
        S:variables <
         >

        # 当前版本的版本代码,不能为负数(如:1 或者11)
        I:versionCode=0

        # 如何输出格式化的版本名称(仅用于显示当前版本)
        S:versionFormat=%currentVersionName%

        # 当前版本的版本名称
        S:versionName=1.0.0
    }

    ##########################################################################################################
    # 主菜单
    #--------------------------------------------------------------------------------------------------------#
    # 主菜单渲染的配置
    ##########################################################################################################

    mainmenu {
        # 当用户单击文本时,他们将被转到此链接。
        # 将其留空以使其与 updateURL 相同,或者将其留空以根本不向他们转到此链接
        S:clickLink=

        # 是否启用此模组添加的主菜单渲染。 如果设置为 false,则以下所有选项都将不起作用。
        B:enableMainMenu=true

        # 主菜单文本和屏幕边框之间的间距。 (水平)(当文本位置为中心时忽略)
        I:marginHorizontal=2

        # 主菜单文本和屏幕边框之间的间距。 (垂直)(当文本位置为中心时忽略)
        I:marginVertical=2

        # 放置主菜单文本的位置。 必须是以下之一:'TOP_LEFT'(左上)、'TOP_RIGHT'(右上)、'BOTTOM_LEFT'(左下)、'BOTTOM_RIGHT'(右下)、'TOP_CENTER'(上居中)、'BOTTOM_CENTER'(下居中)、'CENTER_LEFT'(左居中)、'CENTER_RIGHT'(右居中)、'CENTER'(居中)
        S:menuTextPosition=TOP_LEFT

        # 主菜单文本的默认颜色,尽管您始终可以使用颜色代码来覆盖它。
        # 必须转换成十进制整数。 (0xffffff -> 16777215)
        I:textColor=16777215

        # 显示在主菜单上的文本。 您可以在字符串中使用 %versionName% 等变量。
        # 注意:这可以被获取的版本数据 JSON 覆盖!
        S:textLines <
            §eVersion§f: §9%currentVersionName%
            %isUpdateAvailable%
         >

        # 将鼠标悬停在文本上时显示的文本,作为工具提示。
        # 注意:这可以被获取的版本数据 JSON 覆盖!
        S:tooltipText <
            §eCurrent Version§f: §6%currentVersionName% (%currentVersionCode%)
            §2Latest Version§