From 15af70e946d1fa94a8f9b104c0dcc550bfc7abd2 Mon Sep 17 00:00:00 2001 From: neveler <55753029+neveler@users.noreply.github.com> Date: Tue, 7 Oct 2025 17:52:17 +0800 Subject: [PATCH 1/8] =?UTF-8?q?=E6=94=AF=E6=8C=81=E5=A4=9A=E8=AF=AD?= =?UTF-8?q?=E8=A8=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .drone.yml | 2 +- README.md | 7 +- _build/config.en.yml | 16 + _build/config.zh-TW.yml | 16 + _build/config.zh.yml | 9 + _build/setup.sh | 49 + _changelog/dev.en.md | 4 + _changelog/dev.md | 14 +- _changelog/dev.zh-TW.md | 4 + _changelog/stable.en.md | 3 + _changelog/stable.md | 13 - _changelog/stable.zh-TW.md | 3 + _changelogs/dev/3/7/0/300.zh-TW.md | 20 + _config.yml | 378 ++++++-- _data/common/layouts/document.yml | 4 + _data/i18n/layouts/document.en.yml | 9 + _data/i18n/layouts/document.yml | 9 + _data/i18n/layouts/document.zh-TW.yml | 9 + _data/navigation.en.yml | 45 + _data/navigation.yml | 20 +- _data/navigation.zh-TW.yml | 53 ++ _docs/contribution.en.md | 5 + _docs/contribution.md | 11 +- _docs/crash-support-group.md | 7 +- _docs/faq.md | 15 +- _docs/groups.md | 8 +- _docs/help.en.md | 11 + _docs/help.md | 7 +- _downloads/hmcl-snapshot-update.md | 3 - _downloads/java.md | 3 - _downloads/linux/arm32.md | 3 - _downloads/linux/arm64.md | 3 - _downloads/linux/loongarch64.md | 3 - _downloads/linux/riscv64.md | 3 - _downloads/linux/x86.md | 3 - _downloads/linux/x86_64.md | 3 - _downloads/loongnix.en.md | 11 + _downloads/loongnix.md | 9 +- _downloads/macos/arm64.md | 3 - _downloads/macos/x86_64.md | 3 - _downloads/windows/arm64.md | 3 - _downloads/windows/x86.md | 3 - _downloads/windows/x86_64.md | 3 - _eula/hmcl.md | 3 - _includes/layouts/document/before.html | 14 + _launcher/authlib-injector.en.md | 29 + _launcher/authlib-injector.md | 8 +- _launcher/authlib-injector.zh-TW.md | 29 + _launcher/auto-installing.en.md | 97 ++ _launcher/auto-installing.md | 10 +- _launcher/auto-installing.zh-TW.md | 97 ++ _launcher/datapack.en.md | 58 ++ _launcher/datapack.md | 6 +- _launcher/datapack.zh-TW.md | 58 ++ _launcher/fabric_and_optifine_install.md | 5 +- _launcher/isolation.en.md | 41 + _launcher/isolation.md | 7 +- _launcher/isolation.zh-TW.md | 41 + _launcher/jvm-options-and-env.md | 4 +- _launcher/offline-skin.en.md | 72 ++ _launcher/offline-skin.md | 25 +- _launcher/offline-skin.zh-TW.md | 72 ++ _launcher/set-item-details.en.md | 182 ++++ _launcher/set-item-details.md | 8 +- _launcher/set-item-details.zh-TW.md | 182 ++++ _launcher/shader.en.md | 85 ++ _launcher/shader.md | 6 +- _launcher/shader.zh-TW.md | 85 ++ .../use-password-login-microsoft-account.md | 5 +- _layouts/changelog.html | 18 + _layouts/document-collection.html | 15 + _layouts/document.html | 16 +- _layouts/download.html | 57 -- _layouts/index.html | 17 + _modpack/bundled-java.md | 3 - _modpack/error-handbook.md | 7 +- _modpack/serverpack.en.md | 48 + _modpack/serverpack.md | 6 +- _modpack/serverpack.zh-TW.md | 48 + _modpack/serverpack2.md | 14 +- _modpack/serverpack3.md | 8 +- _multiplayer/feedback.md | 12 - _multiplayer/help.md | 12 - _multiplayer/token.md | 12 - {_docs => _pages}/404.md | 2 +- _pages/changelog.en.md | 4 + _pages/changelog.md | 6 +- _pages/changelog.zh-TW.md | 4 + _pages/docs.en.md | 4 + _pages/docs.md | 6 +- _pages/docs.zh-TW.md | 4 + _pages/downloads.en.md | 3 + _pages/downloads.md | 7 +- _pages/downloads.zh-TW.md | 3 + _pages/index.en.md | 4 + _pages/index.json | 19 + _pages/index.md | 5 + _pages/index.zh-TW.md | 4 + _pages/launcher.en.md | 4 + _pages/launcher.md | 6 +- _pages/launcher.zh-TW.md | 4 + _pages/modpack.en.md | 4 + _pages/modpack.md | 6 +- _pages/modpack.zh-TW.md | 4 + _pages/multiplayer.md | 8 - qr-login.html => _pages/qr-login.html | 0 assets/css/{main.dark.scss => dark.scss} | 2 - assets/hmcl/changelog/dev.md | 899 ------------------ assets/hmcl/changelog/stable.md | 346 ------- assets/img/hmcl.png | Bin 0 -> 35645 bytes assets/js/theme.en.js | 45 + assets/js/theme.js | 2 +- assets/js/theme.zh-TW.js | 45 + index-en_US.json | 59 -- index-zh_TW.json | 52 - index.json | 67 -- index.markdown | 33 - 117 files changed, 2108 insertions(+), 1885 deletions(-) create mode 100644 _build/config.en.yml create mode 100644 _build/config.zh-TW.yml create mode 100644 _build/config.zh.yml create mode 100644 _build/setup.sh create mode 100644 _changelog/dev.en.md create mode 100644 _changelog/dev.zh-TW.md create mode 100644 _changelog/stable.en.md create mode 100644 _changelog/stable.zh-TW.md create mode 100644 _changelogs/dev/3/7/0/300.zh-TW.md create mode 100644 _data/common/layouts/document.yml create mode 100644 _data/i18n/layouts/document.en.yml create mode 100644 _data/i18n/layouts/document.yml create mode 100644 _data/i18n/layouts/document.zh-TW.yml create mode 100644 _data/navigation.en.yml create mode 100644 _data/navigation.zh-TW.yml create mode 100644 _docs/contribution.en.md create mode 100644 _docs/help.en.md create mode 100644 _downloads/loongnix.en.md create mode 100644 _includes/layouts/document/before.html create mode 100644 _launcher/authlib-injector.en.md create mode 100644 _launcher/authlib-injector.zh-TW.md create mode 100644 _launcher/auto-installing.en.md create mode 100644 _launcher/auto-installing.zh-TW.md create mode 100644 _launcher/datapack.en.md create mode 100644 _launcher/datapack.zh-TW.md create mode 100644 _launcher/isolation.en.md create mode 100644 _launcher/isolation.zh-TW.md create mode 100644 _launcher/offline-skin.en.md create mode 100644 _launcher/offline-skin.zh-TW.md create mode 100644 _launcher/set-item-details.en.md create mode 100644 _launcher/set-item-details.zh-TW.md create mode 100644 _launcher/shader.en.md create mode 100644 _launcher/shader.zh-TW.md create mode 100644 _layouts/changelog.html create mode 100644 _layouts/document-collection.html delete mode 100644 _layouts/download.html create mode 100644 _layouts/index.html create mode 100644 _modpack/serverpack.en.md create mode 100644 _modpack/serverpack.zh-TW.md delete mode 100644 _multiplayer/feedback.md delete mode 100644 _multiplayer/help.md delete mode 100644 _multiplayer/token.md rename {_docs => _pages}/404.md (61%) create mode 100644 _pages/changelog.en.md create mode 100644 _pages/changelog.zh-TW.md create mode 100644 _pages/docs.en.md create mode 100644 _pages/docs.zh-TW.md create mode 100644 _pages/downloads.en.md create mode 100644 _pages/downloads.zh-TW.md create mode 100644 _pages/index.en.md create mode 100644 _pages/index.json create mode 100644 _pages/index.md create mode 100644 _pages/index.zh-TW.md create mode 100644 _pages/launcher.en.md create mode 100644 _pages/launcher.zh-TW.md create mode 100644 _pages/modpack.en.md create mode 100644 _pages/modpack.zh-TW.md delete mode 100644 _pages/multiplayer.md rename qr-login.html => _pages/qr-login.html (100%) rename assets/css/{main.dark.scss => dark.scss} (93%) delete mode 100644 assets/hmcl/changelog/dev.md delete mode 100644 assets/hmcl/changelog/stable.md create mode 100644 assets/img/hmcl.png create mode 100644 assets/js/theme.en.js create mode 100644 assets/js/theme.zh-TW.js delete mode 100644 index-en_US.json delete mode 100644 index-zh_TW.json delete mode 100644 index.json delete mode 100644 index.markdown diff --git a/.drone.yml b/.drone.yml index 7f16f3c1..8def8a47 100644 --- a/.drone.yml +++ b/.drone.yml @@ -14,7 +14,7 @@ steps: commands: - bundle config mirror.https://rubygems.org https://mirrors.cloud.tencent.com/rubygems - bundle install --verbose - - bundle exec jekyll build --trace --verbose + - bash _build/setup.sh volumes: - name: dist path: /drone/src/_site diff --git a/README.md b/README.md index 9d22bd48..85dae3d1 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ assets * ... ``` -其中,`` 表示分类,如 `multiplayer` 表示多人游戏、`modpack` 表示整合包,`
` 表示你的文章的英文名(尖括号表示占位符,请替换为文章名称,不要直接提交 '`
`'),请仅使用英文字母、数字、中划线、下划线字符,不要使用空格、中文字符。请确保 md 文件名和文件夹名一致。具体可以参考已有文章目录格式。 +其中,`` 表示分类,如 `modpack` 表示整合包,`
` 表示你的文章的英文名(尖括号表示占位符,请替换为文章名称,不要直接提交 '`
`'),请仅使用英文字母、数字、中划线、下划线字符,不要使用空格、中文字符。请确保 md 文件名和文件夹名一致。具体可以参考已有文章目录格式。 每篇文章由 Markdown 编写的 `
.md` 文件及附带图片组成。文章的图片请放置到 `/assets/img/docs/
` 目录中。 @@ -42,10 +42,5 @@ assets 切记不要在一个添加新文章的 PR 里修改其他文章的内容。 -### 修改已有文章 - -修改已有文章时,请确保你的 PR 仅修改一个文章内容,并在该文章里署名。 - -### 更新索引 在添加或修改文章后,请更新索引文件 `index.json`,以便 HMCL 展示你新添加的文件。 diff --git a/_build/config.en.yml b/_build/config.en.yml new file mode 100644 index 00000000..ddfe8e68 --- /dev/null +++ b/_build/config.en.yml @@ -0,0 +1,16 @@ +cache_dir: .jekyll-cache/en +include: + - _pages + - "*.en.md" + - "*.en.json" +exclude: + - assets/ + - scripts/ + - LICENSE + - "*.md" + - "*.json" +locale: en +title: HMCL Document +head_scripts: + - /assets/js/theme.en.js +build: true diff --git a/_build/config.zh-TW.yml b/_build/config.zh-TW.yml new file mode 100644 index 00000000..9ea625d2 --- /dev/null +++ b/_build/config.zh-TW.yml @@ -0,0 +1,16 @@ +cache_dir: .jekyll-cache/zh-TW +include: + - _pages + - "*.zh-TW.md" + - "*.zh-TW.json" +exclude: + - assets/ + - scripts/ + - LICENSE + - "*.md" + - "*.json" +locale: zh-TW +title: HMCL 文檔 +head_scripts: + - /assets/js/theme.zh-TW.js +build: true diff --git a/_build/config.zh.yml b/_build/config.zh.yml new file mode 100644 index 00000000..9c2d648d --- /dev/null +++ b/_build/config.zh.yml @@ -0,0 +1,9 @@ +cache_dir: .jekyll-cache/zh +exclude: + - assets/ + - scripts/ + - README.md + - LICENSE + - "*.*.*" +locale: zh +build: true diff --git a/_build/setup.sh b/_build/setup.sh new file mode 100644 index 00000000..b682a5e7 --- /dev/null +++ b/_build/setup.sh @@ -0,0 +1,49 @@ +shopt -s globstar + +exclude_target=("./_build" "./_data", "_data_bak" "./_site" "./_site_temp" "./_includes" "./_layouts") + +echo "cp -r _data _data_bak" +cp -r _data _data_bak + +bundle exec jekyll build --trace --verbose --destination _site --config _config.yml,"$1" + +for config in ./_build/config.*.yml; do + [ -f "$config" ] || continue + + language="${config#./_build/config.}" + language="${language%.yml}" + echo "build $language version" + + echo "rm -rf _data && cp -r _data_bak _data" + rm -rf _data && cp -r _data_bak _data + for data in ./_data/**/*."$language".*; do + [ -f "$data" ] || continue + dest="${data/.$language./.}" + echo "mv $data $dest" + mv "$data" "$dest" + done + + for target in ./_*; do + [ -f "$target" ] && continue + [[ " ${exclude_target[*]} " == *" $target "* ]] && continue + + find $target -type f -name "*.*" ! -name "*.*.*" | while read -r file; do + dir="${file%/*}" + ext="${file##*.}" + base="${file##*/}" + name="${base%%.*}" + language_file="$dir/$name.$language.$ext" + [ -f $language_file ] && continue + echo "cp $file $dir/$name.$language.$ext" + cp "$file" "$dir/$name.$language.$ext" + done + done + + bundle exec jekyll build --trace --verbose --destination _site_temp --config "_config.yml,_build/config.$language.yml,$1" + + rm -rf ./_site_temp/assets + rm -rf ./_site_temp/feed.xml + rm -rf ./_site_temp/robots.txt + rm -rf ./_site_temp/sitemap.xml + cp -r ./_site_temp/* ./_site/ +done diff --git a/_changelog/dev.en.md b/_changelog/dev.en.md new file mode 100644 index 00000000..56148cdf --- /dev/null +++ b/_changelog/dev.en.md @@ -0,0 +1,4 @@ +--- +title: Dev Change Log +channel: dev +--- diff --git a/_changelog/dev.md b/_changelog/dev.md index 6eaa0a60..66dfaeab 100644 --- a/_changelog/dev.md +++ b/_changelog/dev.md @@ -1,17 +1,5 @@ --- title: 开发版更新日志 date: 2021-08-22 23:18:02 +0800 -categories: 更新日志 -note: Changelogs are written in Chinese. -hits: true -toc: true +channel: dev --- - -{% assign changelogs = site.changelogs | where_exp: "item", "item.relative_path contains 'dev/'" | reverse %} -{% for item in changelogs %} - {% assign path = item.relative_path | split: '.' | first | split: '/' %} - {% assign end = path | size %} - {% assign version = path | slice: 2, end | join: '.' %} -

HMCL {{ version }}

-
{{ item.content | markdownify }}
-{% endfor %} diff --git a/_changelog/dev.zh-TW.md b/_changelog/dev.zh-TW.md new file mode 100644 index 00000000..b07068c3 --- /dev/null +++ b/_changelog/dev.zh-TW.md @@ -0,0 +1,4 @@ +--- +title: 開髮版更新日誌 +channel: dev +--- diff --git a/_changelog/stable.en.md b/_changelog/stable.en.md new file mode 100644 index 00000000..ebf3f4ed --- /dev/null +++ b/_changelog/stable.en.md @@ -0,0 +1,3 @@ +--- +title: Stable Change Log +--- diff --git a/_changelog/stable.md b/_changelog/stable.md index 1da890cc..f0c30271 100644 --- a/_changelog/stable.md +++ b/_changelog/stable.md @@ -1,17 +1,4 @@ --- title: 稳定版更新日志 date: 2021-08-22 23:18:02 +0800 -categories: 更新日志 -note: Changelogs are written in Chinese. -hits: true -toc: true --- - -{% assign changelogs = site.changelogs | where_exp: "item", "item.relative_path contains 'stable/'" | reverse %} -{% for item in changelogs %} - {% assign path = item.relative_path | split: '.' | first | split: '/' %} - {% assign end = path | size %} - {% assign version = path | slice: 2, end | join: '.' %} -

HMCL {{ version }}

-
{{ item.content | markdownify }}
-{% endfor %} diff --git a/_changelog/stable.zh-TW.md b/_changelog/stable.zh-TW.md new file mode 100644 index 00000000..139b542b --- /dev/null +++ b/_changelog/stable.zh-TW.md @@ -0,0 +1,3 @@ +--- +title: 穩定版更新日誌 +--- diff --git a/_changelogs/dev/3/7/0/300.zh-TW.md b/_changelogs/dev/3/7/0/300.zh-TW.md new file mode 100644 index 00000000..39c85ca0 --- /dev/null +++ b/_changelogs/dev/3/7/0/300.zh-TW.md @@ -0,0 +1,20 @@ +--- +--- + +詳細版本介紹: [cv43252149](https://www.bilibili.com/opus/1119832333534363699) + +- GP-4215: 在啟動器中內置 Terracotta | 陶瓦聯機 (by Burning_TNT) + Terracotta | 陶瓦聯機 是第三方提供的開源免費聯機工具,基於 EasyTier 開源項目開髮。 + 我們基於該工具爲所有用戶免費提供開箱即用的聯機功能。 + 詳情請參見這篇文章: [HMCL x Terracotta | 陶瓦聯機全麵開放](https://www.bilibili.com/opus/1119528739516973063) +- GP-4566: 更新模組下載頁遊戲版本列表至 1.21.9 (by 3gf8jv4dv) +- GP-3229: 優化模組管理佈局 (by zkitefly) +- GP-4521: 支持通過環境變量控製 UI 縮放比例 (by Glavo) +- GP-4577: 優化對顛倒的英語的支持 (by Glavo) +- GP-4592: 更新中文(文言)環境中其他語言名稱的譯法 (by 3gf8jv4dv) + +錯誤修複: + +- GP-4568: 修複在短時間內連續點擊“行按鈕”隻會更改一次狀態的問題 (by 辞庐) +- GP-4571: 修複「外觀 - 不透明度」滑塊的刻度線在不同滑塊位置時排佈不統一的問題 (by 辞庐) +- GP-4583: 修複“不自動添加 Java 虛擬機優化參數”選項未保存至配置文件的問題 (by Glavo) diff --git a/_config.yml b/_config.yml index 5bf5b80f..bdbecef5 100644 --- a/_config.yml +++ b/_config.yml @@ -1,82 +1,103 @@ -# Welcome to Jekyll! -# -# This config file is meant for settings that affect your whole blog, values -# which you are expected to set up once and rarely edit after that. If you find -# yourself editing this file very often, consider using Jekyll's data files -# feature for the data you need to update frequently. -# -# For technical reasons, this file is *NOT* reloaded automatically when you use -# 'bundle exec jekyll serve'. If you change this file, please restart the server process. -# -# If you need help with YAML syntax, here are some quick references for you: -# https://learn-the-web.algonquindesign.ca/topics/markdown-yaml-cheat-sheet/#yaml -# https://learnxinyminutes.com/docs/yaml/ -# -# Site settings -# These are used to personalize your new site. If you look in the HTML files, -# you will see them accessed via {{ site.title }}, {{ site.email }}, and so on. -# You can create any custom variable you would like, and they will be accessible -# in the templates via {{ site.myvariable }}. - -minimal_mistakes_skin: "default" # "air", "aqua", "contrast", "dark", "dirt", "neon", "mint", "plum", "sunrise" -minimal_mistakes_skin_dark: "dark" # "air", "aqua", "contrast", "dark", "dirt", "neon", "mint", "plum", "sunrise" -locale: "zh-CN" - -title: Hello Minecraft! Launcher 帮助文档 -email: hmcl@huangyuhui.net -description: >- # this means to ignore newlines until "baseurl:" - HMCL 启动器 | 跨平台 | 整合包管理 | 自动安装 | 八年历史 | 三亿次使用 -baseurl: "" # the subpath of your site, e.g. /blog -url: https://docs.hmcl.net -copyright: huanghongxun -copyright_url: https://github.com/huanghongxun -breadcrumbs: true - -# Build settings -theme: minimal-mistakes-jekyll -plugins: - - jekyll-paginate - - jekyll-sitemap - - jekyll-gist - - jekyll-feed - - jemoji - - jekyll-include-cache - - jekyll-archives - - jekyll-seo-tag - -include: - - _pages +# https://jekyllrb.com/docs/configuration/default/ +# https://github.com/mmistakes/minimal-mistakes/blob/master/_config.yml +# source: . +# destination: _site +# collections_dir: . +# plugins_dir: _plugins +# layouts_dir: _layouts +# data_dir: _data +# includes_dir: _includes +cache_dir: .jekyll-cache/default +sass: + # sass_dir: _sass + # minimal-mistakes + style: compressed # https://sass-lang.com/documentation/file.SASS_REFERENCE.html#output_style + quiet_deps: true + silence_deprecations: + - import collections: docs: output: true permalink: /:path.html - launcher: output: true permalink: /:collection/:path.html - changelog: output: true permalink: /:collection/:path.html changelogs: - + output: false modpack: output: true permalink: /:collection/:path.html - eula: output: true permalink: /:collection/:path.html - - multiplayer: - output: true - permalink: /:collection/:path.html - downloads: output: true permalink: /:collection/:path.html +# Handling Reading +# safe: false +include: + - _pages +exclude: + - scripts/ + - README.md + - LICENSE +keep_files: [] +encoding: "utf-8" +# markdown_ext: "markdown,mkdown,mkdn,mkd,md" +strict_front_matter: false + +# Filtering Content +# show_drafts: null +# limit_posts: 0 +# future: false +# unpublished: false + +# Plugins +plugins: + - jekyll-paginate + - jekyll-sitemap + - jekyll-gist + - jekyll-feed + - jekyll-include-cache + - jemoji + - jekyll-archives + - jekyll-seo-tag +# minimal-mistakes (mimic GitHub Pages with --safe) +# whitelist: +# - jekyll-paginate +# - jekyll-sitemap +# - jekyll-gist +# - jekyll-feed +# - jekyll-include-cache + +# Conversion +# markdown: kramdown +# highlighter: rouge +# lsi: false +# excerpt_separator: "\n\n" +# incremental: false + +# Serving +# detach: false +# port: 4000 +# host: 127.0.0.1 +baseurl: "" +# show_dir_listing: false + +# Outputting +permalink: /:categories/:title.html +# paginate_path: /page:num +timezone: Asia/Shanghai +# minimal-mistakes (with jekyll-paginate) +# paginate: 5 + +# quiet: false +# verbose: false defaults: - scope: path: "" @@ -88,50 +109,233 @@ defaults: comments: false sidebar: nav: docs + hits: true + toc: true + toc_sticky: true + - scope: + path: "" + type: "downloads" + values: + toc: false + classes: wide + skip_index: true + - scope: + path: "" + type: "changelog" + values: + layout: changelog + - scope: + path: _pages + values: + layout: document-collection + permalink: /:basename.html - scope: - path: "assets/img" + path: "_pages/downloads.*" values: - image: true + collection: downloads + skip_index: true - scope: - path: "assets/css" + path: "_pages/index.*" values: - css: true + layout: index + - scope: + path: "_pages/*.json" + values: + permalink: /:basename -# Exclude from processing. -# The following items will not be processed, by default. -# Any item listed under the `exclude:` key here will be automatically added to -# the internal "default list". -# -# Excluded items can be processed by explicitly listing the directories or -# their entries' file path in the `include:` list. +# liquid: +# error_mode: warn +# strict_filters: false +# strict_variables: false -exclude: - - scripts/ - - README.md - - LICENSE +# Markdown Processors +# kramdown: +# auto_ids: true +# entity_output: as_char +# toc_levels: [1, 2, 3, 4, 5, 6] +# smart_quotes: lsquo,rsquo,ldquo,rdquo +# input: GFM +# hard_wrap: false +# footnote_nr: 1 +# show_warnings: false +# # minimal-mistakes +# enable_coderay: false -# Outputting -permalink: /:categories/:title/ +# Theme Settings +theme: minimal-mistakes-jekyll +minimal_mistakes_skin: default # "air", "aqua", "contrast", "dark", "dirt", "neon", "mint", "plum", "sunrise" +minimal_mistakes_skin_dark: dark +# Site Settings +locale: zh +# rtl: +title: HMCL 文档 +# title_separator: - +# subtitle: +# name: "" +description: HMCL 启动器 | 跨平台 | 整合包管理 | 自动安装 | 八年历史 | 三亿次使用 +url: https://docs.hmcl.net +# repository: +# teaser: +logo: /assets/img/hmcl.png +# masthead_title: +breadcrumbs: false +# words_per_minute: 200 +enable_copy_code_button: true +copyright: huanghongxun +copyright_url: mailto:hmcl@huangyuhui.net + +comments: + provider: false # false (default), "disqus", "discourse", "facebook", "staticman", "staticman_v2", "utterances", "giscus", "custom" + # disqus: + # shortname: + # discourse: + # server: + # facebook: + # appid: + # num_posts: + # colorscheme: + # utterances: + # theme: + # issue_term: + # giscus: + # repo_id: + # category_name: + # category_id: + # discussion_term: + # reactions_enabled: + # theme: + # strict: + # input_position: + # emit_metadata: + # lang: + # lazy: + # staticman: + # branch: + # endpoint: +# reCaptcha: +# siteKey: +# secret: +# atom_feed: +# path: +# hide: +# search: +# search_full_content: +# search_provider: +# lunr: +# search_within_pages: +# algolia: +# application_id: +# index_name: +# search_only_api_key: +# powered_by: +# google: +# search_engine_id: +# instant_search: + +# SEO Related +# google_site_verification: +# bing_site_verification: +# naver_site_verification: +# yandex_site_verification: +# baidu_site_verification: + +# Social Sharing +# twitter: +# username: +# facebook: +# username: +# app_id: +# publisher: +# og_image: + +# For specifying social profiles +# social: +# type: +# name: +# links: + +# Analytics +analytics: + provider: false # false (default), "google", "google-universal", "google-gtag", "custom" + # google: + # tracking_id: + # anonymize_ip: + +# Site Author +# author: +# name: huangyuhui +# avatar: +# bio: +# location: +# email: hmcl@huangyuhui.net +# links: +# - label: Email +# icon: fas fa-fw fa-envelope-square +# url: mailto:hmcl@huangyuhui.net +# - label: GitHub +# icon: fab fa-fw fa-github +# url: https://github.com/huangyuhui + +# Site Footer +footer: + links: + - label: Github + icon: fab fa-fw fa-github + url: https://github.com/HMCL-dev/HMCL + - label: 粤ICP备18071565号 + url: https://beian.miit.gov.cn + # since: + +# minimal-mistakes (with jekyll-paginate-v2) https://github.com/sverrirs/jekyll-paginate-v2/blob/master/README-GENERATOR.md#site-configuration +# pagination: +# enabled: false +# debug: false +# collection: posts +# per_page: 10 +# permalink: /page/:num/ +# title: :title - page :num +# limit: 0 +# sort_field: date +# sort_reverse: true +# category: posts +# tag: "" +# locale: "" +# trail: +# before: 2 +# after: 2 + +# Archives +# category_archive: +# type: liquid +# path: /categories/ +# tag_archive: +# type: liquid +# path: /tags/ +# https://github.com/jekyll/jekyll-archives +# jekyll-archives: +# enabled: +# - categories +# - tags +# layouts: +# category: archive-taxonomy +# tag: archive-taxonomy +# permalinks: +# category: /categories/:name/ +# tag: /tags/:name/ + +# HTML Compression (https://jch.penibelst.de/) compress_html: clippings: all comments: all ignore: envs: development -sass: - style: compressed - quiet_deps: true - silence_deprecations: - - import - head_scripts: - /assets/js/theme.js -footer: - links: - - label: "Github" - icon: "fab fa-fw fa-github" - url: "https://github.com/HMCL-dev/HMCL" - - label: "粤ICP备18071565号" - url: "https://beian.miit.gov.cn" +default_locale: zh +locales: + - zh + - zh-TW + - en diff --git a/_data/common/layouts/document.yml b/_data/common/layouts/document.yml new file mode 100644 index 00000000..dc6a967f --- /dev/null +++ b/_data/common/layouts/document.yml @@ -0,0 +1,4 @@ +language: + zh: 简体中文 + zh-TW: 繁體中文 + en: English diff --git a/_data/i18n/layouts/document.en.yml b/_data/i18n/layouts/document.en.yml new file mode 100644 index 00000000..ef9b4700 --- /dev/null +++ b/_data/i18n/layouts/document.en.yml @@ -0,0 +1,9 @@ +byline: + author: + before: "This article was created by " + after: "" + unname: "unnamed user" + contributors: + before: " and edited by " + after: "" + end: "." diff --git a/_data/i18n/layouts/document.yml b/_data/i18n/layouts/document.yml new file mode 100644 index 00000000..70b3f273 --- /dev/null +++ b/_data/i18n/layouts/document.yml @@ -0,0 +1,9 @@ +byline: + author: + before: "本文由 " + after: " 创建" + unname: 未署名用户 + contributors: + before: "并由 " + after: " 编辑" + end: "。" diff --git a/_data/i18n/layouts/document.zh-TW.yml b/_data/i18n/layouts/document.zh-TW.yml new file mode 100644 index 00000000..35ad8d89 --- /dev/null +++ b/_data/i18n/layouts/document.zh-TW.yml @@ -0,0 +1,9 @@ +byline: + author: + before: "本文由 " + after: " 創建" + unname: 未署名用戶 + contributors: + before: "並由 " + after: " 編輯" + end: "。" diff --git a/_data/navigation.en.yml b/_data/navigation.en.yml new file mode 100644 index 00000000..fca2d3b1 --- /dev/null +++ b/_data/navigation.en.yml @@ -0,0 +1,45 @@ +main: + - title: FAQ + url: /faq.en.html + +docs: + - title: Questions + children: + - title: FAQ + url: /faq.en.html + - title: Launcher + url: /launcher.en.html + - title: Modpack + url: /modpack.en.html + - title: User Guide + children: + - title: Isolation + url: /launcher/isolation.en.html + - title: Offline Skin + url: /launcher/offline-skin.en.html + - title: Automatic Installing + url: /launcher/auto-installing.en.html + - title: Shader + url: /launcher/shader.en.html + - title: Set Item Details + url: /launcher/set-item-details.en.html + - title: Developer Guide + children: + - title: Datapack + url: /launcher/datapack.en.html + - title: Serverpack + url: /modpack/serverpack.en.html + - title: Authlib Injector + url: /launcher/authlib-injector.en.html + - title: Other + children: + - title: Change Log + url: /changelog.en.html + - title: Contribution Guide + url: /contribution.en.html + - title: Official Website + url: https://hmcl.huangyuhui.net + - title: Project Repository + url: https://github.com/HMCL-dev/HMCL + - title: Document Repository + url: https://github.com/HMCL-dev/HMCL-docs diff --git a/_data/navigation.yml b/_data/navigation.yml index 044318f9..8c83d3fe 100644 --- a/_data/navigation.yml +++ b/_data/navigation.yml @@ -8,11 +8,9 @@ docs: - title: 常见问题 url: /faq.html - title: 启动器使用相关 - url: /launcher/ + url: /launcher.html - title: 整合包帮助 - url: /modpack/ - - title: 多人联机帮助 - url: /multiplayer/ + url: /modpack.html - title: 使用者帮助 children: - title: 版本隔离 @@ -41,15 +39,15 @@ docs: - title: 添加默认 authlib-injector 验证服务器 url: /launcher/authlib-injector.html description: 本文将告诉你如何设置默认的验证服务器。 - - title: 其他 + - title: 其它 children: - title: 更新日志 - url: /changelog/ - - title: 为 HMCL 做出贡献 + url: /changelog.html + - title: 贡献指南 url: /contribution.html - - title: HMCL GitHub 地址 + - title: 官方网站 + url: https://hmcl.huangyuhui.net + - title: 项目仓库 url: https://github.com/HMCL-dev/HMCL - - title: HMCL 帮助文档 GitHub 地址 + - title: 文档仓库 url: https://github.com/HMCL-dev/HMCL-docs - - title: HMCL 官网 - url: https://hmcl.huangyuhui.net diff --git a/_data/navigation.zh-TW.yml b/_data/navigation.zh-TW.yml new file mode 100644 index 00000000..b72d8bd7 --- /dev/null +++ b/_data/navigation.zh-TW.yml @@ -0,0 +1,53 @@ +main: + - title: 常見問題 + url: /faq.zh-TW.html + +docs: + - title: 問題集合 + children: + - title: 常見問題 + url: /faq.zh-TW.html + - title: 啟動器使用相關 + url: /launcher.zh-TW.html + - title: 整合包幫助 + url: /modpack.zh-TW.html + - title: 使用者幫助 + children: + - title: 版本隔離 + url: /launcher/isolation.zh-TW.html + description: 本文可以幫助你更好的分離版本間的地圖、模組等內容。 + - title: 設置離線皮膚 + url: /launcher/offline-skin.zh-TW.html + description: 本文將告訴你如何設置一個屬於自己的離線皮膚。 + - title: HMCL 的自動安裝使用教程 + url: /launcher/auto-installing.zh-TW.html + description: 本文將告訴你如何用 HMCL 安裝 Forge、Fabric、Fabric API、LiteLoader、Optifine 以及 模組 等。 + - title: 安裝光影 + url: /launcher/shader.zh-TW.html + description: 本文將告訴你如何安裝光影。 + - title: 設置項詳解 + url: /launcher/set-item-details.zh-TW.html + description: 這篇文章針對 HMCL 的各個設置項進行了詳細的解釋。 + - title: 開髮者幫助 + children: + - title: 製作 HMCL 格式的數據包 + url: /launcher/datapack.zh-TW.html + description: 本文將告訴你如何製作 HMCL 能夠識別的數據包(Datapacks)。 + - title: 製作整合包 + url: /modpack/serverpack.zh-TW.html + description: 本文將告訴你如何製作整合包。 + - title: 添加默認 authlib-injector 驗証服務器 + url: /launcher/authlib-injector.zh-TW.html + description: 本文將告訴你如何設置默認的驗証服務器。 + - title: 其它 + children: + - title: 更新日誌 + url: /changelog.html + - title: 貢獻指南 + url: /contribution.html + - title: 官方網站 + url: https://hmcl.huangyuhui.net + - title: 項目倉庫 + url: https://github.com/HMCL-dev/HMCL + - title: 文檔倉庫 + url: https://github.com/HMCL-dev/HMCL-docs diff --git a/_docs/contribution.en.md b/_docs/contribution.en.md new file mode 100644 index 00000000..edbc4502 --- /dev/null +++ b/_docs/contribution.en.md @@ -0,0 +1,5 @@ +--- +title: Contribution Guide +--- + +If you’d like to improve HMCL’s help documentation or fix any mistakes, you’re welcome to open a Pull Request or Issue on [Github](https://github.com/HMCL-dev/HMCL-docs). You can also give feedback on our [Discord](https://discord.gg/jVvC7HfM6U) or [QQ Group]({{ '/groups.en.html' | relative_url }}). diff --git a/_docs/contribution.md b/_docs/contribution.md index e32d81e7..a3ef0679 100644 --- a/_docs/contribution.md +++ b/_docs/contribution.md @@ -1,12 +1,7 @@ --- -title: 为 HMCL 帮助文档出一份力 +title: 贡献指南 date: 2021-10-09 23:18:02 +0800 -categories: 启动器 -note: 本文由 huanghongxun 编写。 -hits: true -toc: true +author: huanghongxun --- -如果你认为你有能力为 HMCL 添加高质量的帮助文档,或希望修改错误,你可以到 [https://github.com/HMCL-dev/HMCL-docs](https://github.com/HMCL-dev/HMCL-docs) 仓库中发 Pull Request,或者提 Issue。 - -或者你可以进入我们的 [Discord](https://discord.gg/jVvC7HfM6U) 或 [HMCL 用户群](/groups.html) 群以向 HMCL 反馈。 +如果您有足够的能力为 HMCL 添加高质量的帮助文档或修复一些问题,欢迎您到 [Github](https://github.com/HMCL-dev/HMCL-docs) 中创建 Pull Request 或 Issue 此外您也可以在 [Discord](https://discord.gg/jVvC7HfM6U) 或 [HMCL 用户群]({{ '/groups.html' | relative_url }})中进行反馈。 diff --git a/_docs/crash-support-group.md b/_docs/crash-support-group.md index 3c5f691b..619e351d 100644 --- a/_docs/crash-support-group.md +++ b/_docs/crash-support-group.md @@ -1,10 +1,7 @@ --- title: 加入 HMCL 报错崩溃交流群 date: 2024-03-05 17:00:00 +0800 -categories: 启动器 -note: 本文由 zkitefly 编写。 -hits: true -toc: true +author: zkitefly --- ![](/assets/img/docs/groups/crash.png) @@ -62,7 +59,7 @@ document.addEventListener('DOMContentLoaded', function() { modalContent.innerHTML = `

⚠️加入群聊前请注意⚠️

    -
  • 游戏非正常退出时,请点击左下角 按钮(不是 按钮),并完整发送生成的报错压缩包
  • +
  • 游戏非正常退出时,请点击左下角 按钮(不是 按钮),并完整发送生成的报错压缩包
  • 遇到其他问题时,请详细说明情况并提供相关截图,以便我们提供帮助
  • 使用整合包时,请说明具体的整合包名称与版本
  • 请保持耐心,群管理和群友会协助解决问题。严禁辱骂、催促他人
  • diff --git a/_docs/faq.md b/_docs/faq.md index 7518492e..3bdadbd8 100644 --- a/_docs/faq.md +++ b/_docs/faq.md @@ -1,14 +1,11 @@ --- title: 各大问题集合 date: 2025-09-19 13:40:00 +0800 -categories: 启动器 -note: 本文由 LIPiston 编写,Mine-diamond 修改。 -hits: true -toc: true +author: LIPiston +contributors: [Mine-diamond] +note: 这是一个提供给新手或小白的阅读文档,旨在用最简单的方式帮你快速上手 HMCL 启动器和 Minecraft 游戏。如需深入了解某个主题,可点击文中提供的链接查看详细文档。 --- -> 这是一个提供给新手或小白的阅读文档,旨在用最简单的方式帮你快速上手 HMCL 启动器和 Minecraft 游戏。如需深入了解某个主题,可点击文中提供的链接查看详细文档。 - ### 如何登录账户 你需要使用微软账户购买游戏才能游玩 Minecraft,或者使用离线账户/外置账户。 @@ -79,15 +76,15 @@ toc: true - [CurseForge](https://www.curseforge.com/minecraft/search?class=mc-mods) - [Modrinth](https://modrinth.com/mods) -HMCL 自动安装与使用模组教程: [跳转](/launcher/auto-installing.html) +HMCL 自动安装与使用模组教程: [跳转]({{ '/launcher/auto-installing.html' | relative_url }}) #### 安装模组后游戏报错怎么办 安装模组后游戏无法启动或崩溃是常见的情况,通常是模组冲突或缺少前置模组导致的。别担心,大部分问题都能轻松解决。 -在 HMCL《自动安装与模组下载简介》的末尾讲到了常用的解决方法: [跳转](/launcher/auto-installing.html#%E5%AE%89%E8%A3%85-mod-%E5%90%8E%E6%B8%B8%E6%88%8F%E6%8A%A5%E9%94%99%E6%97%A0%E6%B3%95%E5%90%AF%E5%8A%A8) +在 HMCL《自动安装与模组下载简介》的末尾讲到了常用的解决方法: [跳转]({{ '/launcher/auto-installing.html#%E5%AE%89%E8%A3%85-mod-%E5%90%8E%E6%B8%B8%E6%88%8F%E6%8A%A5%E9%94%99%E6%97%A0%E6%B3%95%E5%90%AF%E5%8A%A8' | relative_url }}) -或者前往模组包报错排查手册中查看: [跳转](/modpack/error-handbook.html) +或者前往模组包报错排查手册中查看: [跳转]({{ '/modpack/error-handbook.html' | relative_url }}) 如果无法解决错误,尝试 [寻求帮助](help.html) diff --git a/_docs/groups.md b/_docs/groups.md index 5f5c74d7..eee12895 100644 --- a/_docs/groups.md +++ b/_docs/groups.md @@ -1,10 +1,8 @@ --- title: 加入 HMCL 用户群 date: 2024-03-05 17:00:00 +0800 -categories: 启动器 -note: 本文由 Glavo 编写,8Mi_Yile 和 zkitefly 润色了部分内容。 -hits: true -toc: true +author: Glavo +contributors: [8Mi_Yile, zkitefly] --- 欢迎所有 Minecraft 玩家加入 HMCL 用户群,入群请遵守以下群规: @@ -31,7 +29,7 @@ toc: true ## 报错崩溃交流群 -如果你遇到了游戏非正常退出问题,欢迎加入报错崩溃交流群咨询解决方案:[Minecraft 报错崩溃交流群](/crash-support-group.html) +如果你遇到了游戏非正常退出问题,欢迎加入报错崩溃交流群咨询解决方案:[Minecraft 报错崩溃交流群]({{ '/crash-support-group.html' | relative_url }}) **本群仅处理游戏报错崩溃问题,无关话题请前往其他群聊讨论。** diff --git a/_docs/help.en.md b/_docs/help.en.md new file mode 100644 index 00000000..f5186919 --- /dev/null +++ b/_docs/help.en.md @@ -0,0 +1,11 @@ +--- +title: Help +--- + +## QQ Group + +[Click to jump]({{ '/groups.html' | relative_url }}) + +## Discord + +[Click to jump](https://discord.gg/jVvC7HfM6U) diff --git a/_docs/help.md b/_docs/help.md index 78d85691..6591f04a 100644 --- a/_docs/help.md +++ b/_docs/help.md @@ -1,17 +1,14 @@ --- title: 寻求帮助 date: 2023-08-09 11:12:00 +0800 -categories: 启动器 -note: 本文由 zkitefly 编写。 -hits: true -toc: true +author: zkitefly --- ## QQ 群聊 Hello Minecraft! Launcher 的官方 QQ 群聊。 -[点击前往](/groups.html) +[点击前往]({{ '/groups.html' | relative_url }}) ## Discord 频道 diff --git a/_downloads/hmcl-snapshot-update.md b/_downloads/hmcl-snapshot-update.md index 82425691..da1a082b 100644 --- a/_downloads/hmcl-snapshot-update.md +++ b/_downloads/hmcl-snapshot-update.md @@ -1,9 +1,6 @@ --- title: 下载 HMCL-Snapshot 版本 date: 2024-01-09 22:00:00 +0800 -categories: 启动器 -hits: true -toc: false --- 正在前往 HMCL-Snapshot 下载页面,点击下载即可。 diff --git a/_downloads/java.md b/_downloads/java.md index 8c33012a..e5fbc1f7 100644 --- a/_downloads/java.md +++ b/_downloads/java.md @@ -1,9 +1,6 @@ --- title: 下载 HMCL 和 Minecraft 依赖的 Java date: 2022-12-03 17:30:00 +0800 -categories: Java 下载 -hits: true -toc: false --- 正在前往 Java 下载页面,请点击下载,然后等待 Java 安装程序下载完成,最后启动安装程序,依照提示安装 Java。 diff --git a/_downloads/linux/arm32.md b/_downloads/linux/arm32.md index c83db1d9..4ec6a13a 100644 --- a/_downloads/linux/arm32.md +++ b/_downloads/linux/arm32.md @@ -1,9 +1,6 @@ --- title: 下载适用于 Linux ARM32 的 HMCL 和 Minecraft 依赖的 Java date: 2022-12-03 17:30:00 +0800 -categories: Java 下载 -hits: true -toc: false --- 点下面的链接以下载 Java ,然后使用软件包管理器或者手动解压安装。 diff --git a/_downloads/linux/arm64.md b/_downloads/linux/arm64.md index 70218cf4..5a4803ae 100644 --- a/_downloads/linux/arm64.md +++ b/_downloads/linux/arm64.md @@ -1,9 +1,6 @@ --- title: 下载适用于 Linux ARM64 的 HMCL 和 Minecraft 依赖的 Java date: 2022-12-03 17:30:00 +0800 -categories: Java 下载 -hits: true -toc: false --- 点下面的链接以下载 Java ,然后使用软件包管理器或者手动解压安装。 diff --git a/_downloads/linux/loongarch64.md b/_downloads/linux/loongarch64.md index dfdf029f..c2ed8b53 100644 --- a/_downloads/linux/loongarch64.md +++ b/_downloads/linux/loongarch64.md @@ -1,9 +1,6 @@ --- title: 下载 HMCL 和 Minecraft 依赖的 Java date: 2023-09-05 14:00:00 +0800 -categories: Java 下载 -hits: true -toc: false --- 龙芯平台存在 “**新世界**” 和 “**旧世界**” 两个 ABI,不同 ABI 的 Java 暂时互不兼容。 diff --git a/_downloads/linux/riscv64.md b/_downloads/linux/riscv64.md index 26338c4a..359cdab0 100644 --- a/_downloads/linux/riscv64.md +++ b/_downloads/linux/riscv64.md @@ -1,9 +1,6 @@ --- title: 下载适用于 Linux RISC-V 64 的 HMCL 和 Minecraft 依赖的 Java date: 2024-10-06 22:00:00 +0800 -categories: Java 下载 -hits: true -toc: false --- 点下面的链接以下载 Java ,然后使用软件包管理器或者手动解压安装。 diff --git a/_downloads/linux/x86.md b/_downloads/linux/x86.md index f9a5fd99..58efb4e2 100644 --- a/_downloads/linux/x86.md +++ b/_downloads/linux/x86.md @@ -1,9 +1,6 @@ --- title: 下载适用于 Linux x86 的 HMCL 和 Minecraft 依赖的 Java date: 2022-12-03 17:30:00 +0800 -categories: Java 下载 -hits: true -toc: false --- 点下面的链接以下载 Java ,然后使用软件包管理器或者手动解压安装。 diff --git a/_downloads/linux/x86_64.md b/_downloads/linux/x86_64.md index 03175d74..d4dcb84a 100644 --- a/_downloads/linux/x86_64.md +++ b/_downloads/linux/x86_64.md @@ -1,9 +1,6 @@ --- title: 下载适用于 Linux x86_64 的 HMCL 和 Minecraft 依赖的 Java date: 2022-12-03 17:30:00 +0800 -categories: Java 下载 -hits: true -toc: false --- 点下面的链接以下载 Java ,然后使用软件包管理器或者手动解压安装。 diff --git a/_downloads/loongnix.en.md b/_downloads/loongnix.en.md new file mode 100644 index 00000000..9a5a801e --- /dev/null +++ b/_downloads/loongnix.en.md @@ -0,0 +1,11 @@ +--- +title: 下载适用于龙芯的 HMCL 和 Minecraft 依赖的 Java +date: 2022-12-03 17:30:00 +0800 +note: The page has moved to [/downloads/linux/loongarch64]({{ '/downloads/linux/loongarch64.html' | relative_url }}) +--- + + diff --git a/_downloads/loongnix.md b/_downloads/loongnix.md index f97fe15b..e6aae3c9 100644 --- a/_downloads/loongnix.md +++ b/_downloads/loongnix.md @@ -1,16 +1,9 @@ --- title: 下载适用于龙芯的 HMCL 和 Minecraft 依赖的 Java date: 2022-12-03 17:30:00 +0800 -categories: Java 下载 -toc: false +note: 页面已移动至 [/downloads/linux/loongarch64]({{ '/downloads/linux/loongarch64.html' | relative_url }}) --- -页面已移动至 [/downloads/linux/loongarch64](/downloads/linux/loongarch64.html) - ---- - -The page has moved to [/downloads/linux/loongarch64](/downloads/linux/loongarch64.html) - - - - - \ No newline at end of file diff --git a/_layouts/index.html b/_layouts/index.html new file mode 100644 index 00000000..664e862e --- /dev/null +++ b/_layouts/index.html @@ -0,0 +1,17 @@ +--- +layout: document +--- + +{% for group in site.data.navigation.docs %} +

    {{ group.title }}

    +
      +{% for item in group.children %} +
    • + {{ item.title }} + {% if item.description %} +

      {{ item.description }}

      + {% endif %} +
    • +{% endfor %} +
    +{% endfor %} diff --git a/_modpack/bundled-java.md b/_modpack/bundled-java.md index 630916b0..5076f983 100644 --- a/_modpack/bundled-java.md +++ b/_modpack/bundled-java.md @@ -1,9 +1,6 @@ --- title: 整合包自带 Java 教程 date: 2021-10-09 23:18:02 +0800 -categories: 整合包 -hits: true -toc: true --- ## 背景 diff --git a/_modpack/error-handbook.md b/_modpack/error-handbook.md index db099119..6619c17a 100644 --- a/_modpack/error-handbook.md +++ b/_modpack/error-handbook.md @@ -1,9 +1,8 @@ --- title: 模组包报错排查手册 +description: 排查和解决整合包相关问题 date: 2025-05-24 13:39:36 +0800 -categories: 整合包 -note: 本文由 LIPiston 编写。 -toc: true +author: LIPiston --- ## 文件夹结构 @@ -43,7 +42,7 @@ toc: true ... ``` -我们极力推荐您打开版本隔离,因为这样能避免模组之间的一部分冲突 [跳转](/launcher/global-version-isolation.html) +我们极力推荐您打开版本隔离,因为这样能避免模组之间的一部分冲突 [跳转]({{ '/launcher/global-version-isolation.html' | relative_url }}) ## 简单排查 diff --git a/_modpack/serverpack.en.md b/_modpack/serverpack.en.md new file mode 100644 index 00000000..49c9cdff --- /dev/null +++ b/_modpack/serverpack.en.md @@ -0,0 +1,48 @@ +--- +title: Server-Side Auto-Updating Modpack Creation Tutorial +description: Guide on creating a server-side auto-updating modpack that forces the client to update according to the server owner's configuration +date: 2021-08-22 23:18:02 +0800 +author: huanghongxun +note: The document is written in Simplified Chinese! +--- + +HMCL 允许服务器管理员借助服务端自动更新整合包来实现自动分发整合包更新,这将大大方便有需要频繁更新游戏客户端 Mod、配置等信息的服务器管理员。 +HMCL 需要服务器管理员额外提供一个 HTTP 服务器(只需要能提供静态文件服务,比如 Apache 和 Nginx 皆可)来提供检查整合包更新并允许 HMCL 下载更新文件。 + +## 第一步:导出整合包 +在 HMCL 中右键做好的客户端版本,选择`导出整合包`: + +![](/assets/img/docs/serverpack/1.png) + +选择导出为`服务器自动更新整合包`: + +![](/assets/img/docs/serverpack/1-1.png) + +填写整合包信息,整合包下载链接前缀如何填写请看下文 + +![](/assets/img/docs/serverpack/1-2.png) + +选择需要包含在整合包内的文件后将产生整合包压缩文件 + +## 第二步:导入整合包 + +接着创建一个全新的空文件夹,将启动器复制进去 + +![](/assets/img/docs/serverpack/1-3.png) + +运行启动器,并导入刚才导出的整合包,导入完成后,这个文件夹(这里叫“新整合包”)可以打包发给玩家。 + +## 第三步,部署整合包更新服务器 +你可以借助 Apache、Nginx 等支持静态文件的 HTTP 服务器软件提供文件。首先,决定好整合包下载链接前缀,比如我希望 HMCL 从远程服务器的 http://www.site.com/modpack 目录下存放整合包的更新信息,则在之前导出整合包的整合包下载前缀中填写 http://www.site.com/modpack。 + +![](/assets/img/docs/serverpack/1-4.png) + +上图为导出的服务器自动更新整合包压缩文件的内容,你需要将这个整合包解压到 http://www.site.com/modpack 下。也就是说,从 http://www.site.com/modpack/server-manifest.json 这个链接下载下来的文件必须和上图中整合包压缩文件中的 server-manifest.json 文件一致,并且,http://www.site.com/modpack/overrides 是一个文件夹,里面存放了整合包文件,比如: + +![](/assets/img/docs/serverpack/1-6.png) + +整合包压缩文件 test.zip/overrides/mods/Advancement_Book-1.12-1.0.3.jar 文件必须可以从 http://www.site.com/modpack/overrides/mods/Advancement_Book-1.12-1.0.3.jar 该目录下载下来,且文件内容一致。那么至此更新服务器就部署完成了。 + +## 第四步,更新整合包 + +如果你需要更新整合包,那么将新的整合包经过第一步导出新的整合包压缩文件,并解压到类似 http://www.site.com/modpack 文件夹下即可完成新整合包的部署。 diff --git a/_modpack/serverpack.md b/_modpack/serverpack.md index 6fe52429..0f99bdba 100644 --- a/_modpack/serverpack.md +++ b/_modpack/serverpack.md @@ -1,10 +1,8 @@ --- title: 服务端自动更新整合包制作教程 +description: 创建可自动更新的服务器整合包 date: 2021-08-22 23:18:02 +0800 -categories: 整合包 -note: 本文由 huanghongxun 编写。 -hits: true -toc: true +author: huanghongxun --- HMCL 允许服务器管理员借助服务端自动更新整合包来实现自动分发整合包更新,这将大大方便有需要频繁更新游戏客户端 Mod、配置等信息的服务器管理员。 diff --git a/_modpack/serverpack.zh-TW.md b/_modpack/serverpack.zh-TW.md new file mode 100644 index 00000000..5e5d3aee --- /dev/null +++ b/_modpack/serverpack.zh-TW.md @@ -0,0 +1,48 @@ +--- +title: 伺服端自動更新模組包製作教學 +description: 伺服端自動更新模組包允許啟動器根據服主配置強制更新玩家遊戲用戶端 +date: 2021-08-22 23:18:02 +0800 +author: huanghongxun +note: 本文件以簡體中文撰冩! +--- + +HMCL 允许服务器管理员借助服务端自动更新整合包来实现自动分发整合包更新,这将大大方便有需要频繁更新游戏客户端 Mod、配置等信息的服务器管理员。 +HMCL 需要服务器管理员额外提供一个 HTTP 服务器(只需要能提供静态文件服务,比如 Apache 和 Nginx 皆可)来提供检查整合包更新并允许 HMCL 下载更新文件。 + +## 第一步:导出整合包 +在 HMCL 中右键做好的客户端版本,选择`导出整合包`: + +![](/assets/img/docs/serverpack/1.png) + +选择导出为`服务器自动更新整合包`: + +![](/assets/img/docs/serverpack/1-1.png) + +填写整合包信息,整合包下载链接前缀如何填写请看下文 + +![](/assets/img/docs/serverpack/1-2.png) + +选择需要包含在整合包内的文件后将产生整合包压缩文件 + +## 第二步:导入整合包 + +接着创建一个全新的空文件夹,将启动器复制进去 + +![](/assets/img/docs/serverpack/1-3.png) + +运行启动器,并导入刚才导出的整合包,导入完成后,这个文件夹(这里叫“新整合包”)可以打包发给玩家。 + +## 第三步,部署整合包更新服务器 +你可以借助 Apache、Nginx 等支持静态文件的 HTTP 服务器软件提供文件。首先,决定好整合包下载链接前缀,比如我希望 HMCL 从远程服务器的 http://www.site.com/modpack 目录下存放整合包的更新信息,则在之前导出整合包的整合包下载前缀中填写 http://www.site.com/modpack。 + +![](/assets/img/docs/serverpack/1-4.png) + +上图为导出的服务器自动更新整合包压缩文件的内容,你需要将这个整合包解压到 http://www.site.com/modpack 下。也就是说,从 http://www.site.com/modpack/server-manifest.json 这个链接下载下来的文件必须和上图中整合包压缩文件中的 server-manifest.json 文件一致,并且,http://www.site.com/modpack/overrides 是一个文件夹,里面存放了整合包文件,比如: + +![](/assets/img/docs/serverpack/1-6.png) + +整合包压缩文件 test.zip/overrides/mods/Advancement_Book-1.12-1.0.3.jar 文件必须可以从 http://www.site.com/modpack/overrides/mods/Advancement_Book-1.12-1.0.3.jar 该目录下载下来,且文件内容一致。那么至此更新服务器就部署完成了。 + +## 第四步,更新整合包 + +如果你需要更新整合包,那么将新的整合包经过第一步导出新的整合包压缩文件,并解压到类似 http://www.site.com/modpack 文件夹下即可完成新整合包的部署。 diff --git a/_modpack/serverpack2.md b/_modpack/serverpack2.md index 602c6b92..dfc8a26f 100644 --- a/_modpack/serverpack2.md +++ b/_modpack/serverpack2.md @@ -1,17 +1,13 @@ --- title: 使用HMCL启动器配置服务器客户端自动更新 date: 2021-08-22 23:18:02 +0800 -categories: 整合包 -hits: true -toc: true +note: |- + 文章原作者:[hy黑影](https://www.mcbbs.net/home.php?mod=space&uid=3051111) + 转载:Zkitfly + 部分内容进行了稍作打磨 + 本教程转载至[https://www.mcbbs.net/thread-1103864-1-1.html?action=printable](https://www.mcbbs.net/thread-1103864-1-1.html?action=printable) --- -## 备注 - -> 文章原作者:[hy黑影](https://www.mcbbs.net/home.php?mod=space&uid=3051111) -> 转载:Zkitfly -> 部分内容进行了稍作打磨 -> 本教程转载至[https://www.mcbbs.net/thread-1103864-1-1.html?action=printable](https://www.mcbbs.net/thread-1103864-1-1.html?action=printable) ## **前言** diff --git a/_modpack/serverpack3.md b/_modpack/serverpack3.md index 606eb172..fd49b58a 100644 --- a/_modpack/serverpack3.md +++ b/_modpack/serverpack3.md @@ -1,10 +1,8 @@ --- -title: Nginx作为静态资源服务器,使用HMCL启动器配置服务器客户端自动更新 +title: 使用 HMCL 配置服务器客户端自动更新 +description: 使用 Nginx 搭建整合包更新服务 date: 2023-01-11 14:13:45 +0800 -categories: 整合包 -note: 本文由 buggzd 编写。 -hits: true -toc: true +author: buggzd --- > 阅读本文前,请先阅读HMCL官方文章:https://docs.hmcl.net/modpack/serverpack.html diff --git a/_multiplayer/feedback.md b/_multiplayer/feedback.md deleted file mode 100644 index bd6a3c2a..00000000 --- a/_multiplayer/feedback.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: 目前 HMCL 多人联机正处于维护状态。 -date: 2022-11-20 09:02:00 +0800 -categories: 多人联机 -note: 本文由 zkitefly 编写。 -hits: true -toc: true ---- - -## 注意 - -目前 HMCL 多人联机正处于维护状态。[详情](https://hmcl.huangyuhui.net/api/redirect/multiplayer-migrate) diff --git a/_multiplayer/help.md b/_multiplayer/help.md deleted file mode 100644 index bd6a3c2a..00000000 --- a/_multiplayer/help.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: 目前 HMCL 多人联机正处于维护状态。 -date: 2022-11-20 09:02:00 +0800 -categories: 多人联机 -note: 本文由 zkitefly 编写。 -hits: true -toc: true ---- - -## 注意 - -目前 HMCL 多人联机正处于维护状态。[详情](https://hmcl.huangyuhui.net/api/redirect/multiplayer-migrate) diff --git a/_multiplayer/token.md b/_multiplayer/token.md deleted file mode 100644 index bd6a3c2a..00000000 --- a/_multiplayer/token.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: 目前 HMCL 多人联机正处于维护状态。 -date: 2022-11-20 09:02:00 +0800 -categories: 多人联机 -note: 本文由 zkitefly 编写。 -hits: true -toc: true ---- - -## 注意 - -目前 HMCL 多人联机正处于维护状态。[详情](https://hmcl.huangyuhui.net/api/redirect/multiplayer-migrate) diff --git a/_docs/404.md b/_pages/404.md similarity index 61% rename from _docs/404.md rename to _pages/404.md index a3a3fdd8..318c1dc3 100644 --- a/_docs/404.md +++ b/_pages/404.md @@ -1,8 +1,8 @@ --- +title: 404 layout: splash ---

    404

    -

    页面不存在

    diff --git a/_pages/changelog.en.md b/_pages/changelog.en.md new file mode 100644 index 00000000..29304d46 --- /dev/null +++ b/_pages/changelog.en.md @@ -0,0 +1,4 @@ +--- +title: Change Log +collection: changelog +--- diff --git a/_pages/changelog.md b/_pages/changelog.md index 1d92547f..0ee1eae8 100644 --- a/_pages/changelog.md +++ b/_pages/changelog.md @@ -1,8 +1,4 @@ --- title: 更新日志 -layout: collection -permalink: /changelog/ collection: changelog -entries_layout: grid -classes: wide ---- \ No newline at end of file +--- diff --git a/_pages/changelog.zh-TW.md b/_pages/changelog.zh-TW.md new file mode 100644 index 00000000..80442fd0 --- /dev/null +++ b/_pages/changelog.zh-TW.md @@ -0,0 +1,4 @@ +--- +title: 更新日誌 +collection: changelog +--- diff --git a/_pages/docs.en.md b/_pages/docs.en.md new file mode 100644 index 00000000..776a401c --- /dev/null +++ b/_pages/docs.en.md @@ -0,0 +1,4 @@ +--- +title: Documents +collection: docs +--- diff --git a/_pages/docs.md b/_pages/docs.md index 4d961fc4..366e48d3 100644 --- a/_pages/docs.md +++ b/_pages/docs.md @@ -1,8 +1,4 @@ --- title: 文档 -layout: collection -permalink: /docs/ collection: docs -entries_layout: grid -classes: wide ---- \ No newline at end of file +--- diff --git a/_pages/docs.zh-TW.md b/_pages/docs.zh-TW.md new file mode 100644 index 00000000..bcc2fac8 --- /dev/null +++ b/_pages/docs.zh-TW.md @@ -0,0 +1,4 @@ +--- +title: 文檔 +collection: docs +--- diff --git a/_pages/downloads.en.md b/_pages/downloads.en.md new file mode 100644 index 00000000..8c91a9a0 --- /dev/null +++ b/_pages/downloads.en.md @@ -0,0 +1,3 @@ +--- +title: Downloads +--- diff --git a/_pages/downloads.md b/_pages/downloads.md index 6fe3fd1b..5c02af76 100644 --- a/_pages/downloads.md +++ b/_pages/downloads.md @@ -1,8 +1,3 @@ --- title: 下载 -layout: collection -permalink: /downloads/ -collection: downloads -entries_layout: grid -classes: wide ---- \ No newline at end of file +--- diff --git a/_pages/downloads.zh-TW.md b/_pages/downloads.zh-TW.md new file mode 100644 index 00000000..70ba7df3 --- /dev/null +++ b/_pages/downloads.zh-TW.md @@ -0,0 +1,3 @@ +--- +title: 下載 +--- diff --git a/_pages/index.en.md b/_pages/index.en.md new file mode 100644 index 00000000..17799ede --- /dev/null +++ b/_pages/index.en.md @@ -0,0 +1,4 @@ +--- +title: Getting Started Guide +note: If you encounter a BUG, please send feedback in time to [HMCL-dev/HMCL](https://github.com/HMCL-dev/HMCL/issues). +--- diff --git a/_pages/index.json b/_pages/index.json new file mode 100644 index 00000000..d60ff872 --- /dev/null +++ b/_pages/index.json @@ -0,0 +1,19 @@ +--- +layout: null +--- +[ +{%- assign pages = site.pages | where: "layout", "document-collection" | where_exp: "item", "item.collection" | where_exp: "item", "item.skip_index != true" -%} +{%- for page in pages -%} +{"title":"{{ page.title }}","items":[ +{%- for article in site[page.collection] -%} +{"title":"{{ article.title }}","subtitle":"{{ article.description | default: '' }}","url":"{{ article.url | absolute_url }}"} +{%- unless forloop.last -%} +, +{%- endunless -%} +{%- endfor -%} +]} +{%- unless forloop.last -%} +, +{%- endunless -%} +{%- endfor -%} +] \ No newline at end of file diff --git a/_pages/index.md b/_pages/index.md new file mode 100644 index 00000000..0c6cbc28 --- /dev/null +++ b/_pages/index.md @@ -0,0 +1,5 @@ +--- +title: 新手导航 +author: wifi-left +note: 如果您遇到 BUG,请及时在 [HMCL-dev/HMCL](https://github.com/HMCL-dev/HMCL/issues) 发送反馈。 +--- diff --git a/_pages/index.zh-TW.md b/_pages/index.zh-TW.md new file mode 100644 index 00000000..f2d8075a --- /dev/null +++ b/_pages/index.zh-TW.md @@ -0,0 +1,4 @@ +--- +title: 新手導航 +note: 如果您遇到 BUG,請及時在 [HMCL-dev/HMCL](https://github.com/HMCL-dev/HMCL/issues) 髮送反饋。 +--- diff --git a/_pages/launcher.en.md b/_pages/launcher.en.md new file mode 100644 index 00000000..6acd5bad --- /dev/null +++ b/_pages/launcher.en.md @@ -0,0 +1,4 @@ +--- +title: Launcher +collection: launcher +--- diff --git a/_pages/launcher.md b/_pages/launcher.md index 3468e63f..202ce603 100644 --- a/_pages/launcher.md +++ b/_pages/launcher.md @@ -1,8 +1,4 @@ --- title: 启动器 -layout: collection -permalink: /launcher/ collection: launcher -entries_layout: grid -classes: wide ---- \ No newline at end of file +--- diff --git a/_pages/launcher.zh-TW.md b/_pages/launcher.zh-TW.md new file mode 100644 index 00000000..b108bf92 --- /dev/null +++ b/_pages/launcher.zh-TW.md @@ -0,0 +1,4 @@ +--- +title: 啟動器 +collection: launcher +--- diff --git a/_pages/modpack.en.md b/_pages/modpack.en.md new file mode 100644 index 00000000..cf13a2ae --- /dev/null +++ b/_pages/modpack.en.md @@ -0,0 +1,4 @@ +--- +title: Modpack +collection: modpack +--- diff --git a/_pages/modpack.md b/_pages/modpack.md index 5013c3fc..71554c68 100644 --- a/_pages/modpack.md +++ b/_pages/modpack.md @@ -1,8 +1,4 @@ --- title: 整合包 -layout: collection -permalink: /modpack/ collection: modpack -entries_layout: grid -classes: wide ---- \ No newline at end of file +--- diff --git a/_pages/modpack.zh-TW.md b/_pages/modpack.zh-TW.md new file mode 100644 index 00000000..71554c68 --- /dev/null +++ b/_pages/modpack.zh-TW.md @@ -0,0 +1,4 @@ +--- +title: 整合包 +collection: modpack +--- diff --git a/_pages/multiplayer.md b/_pages/multiplayer.md deleted file mode 100644 index 55a94497..00000000 --- a/_pages/multiplayer.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: 多人联机 -layout: collection -permalink: /multiplayer/ -collection: multiplayer -entries_layout: grid -classes: wide ---- diff --git a/qr-login.html b/_pages/qr-login.html similarity index 100% rename from qr-login.html rename to _pages/qr-login.html diff --git a/assets/css/main.dark.scss b/assets/css/dark.scss similarity index 93% rename from assets/css/main.dark.scss rename to assets/css/dark.scss index 73faf3b4..04d2e5a7 100644 --- a/assets/css/main.dark.scss +++ b/assets/css/dark.scss @@ -1,7 +1,5 @@ --- -search: false --- - @charset "utf-8"; $sans-serif: -apple-system, BlinkMacSystemFont, "Roboto", "Segoe UI", "Noto Sans", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; diff --git a/assets/hmcl/changelog/dev.md b/assets/hmcl/changelog/dev.md deleted file mode 100644 index 0fec2ab7..00000000 --- a/assets/hmcl/changelog/dev.md +++ /dev/null @@ -1,899 +0,0 @@ -![Hits](https://hits.zkitefly.eu.org/?tag=https%3A%2F%2Fdocs.hmcl.net%2Fchangelog%2Fdev.html) - -*Notice: changelogs are written in Chinese.* - -# HMCL 3.5.5.236 - -- GP-2836:更新启动器发布页至官网,而不是 MCBBS -- GP-2700:优化游戏版本比较规则,现在模组下载界面能够正常排序 Minecraft 正式版、快照版或其他版本了 -- GP-2805:默认开启自动选择并发数 -- GC-9361719、GC-420d77d、GP-2839:移除 MCBBS 的下载源和鸣谢文本,介于其下载源已不再可用 -- GP-2801:添加部分 CurseForge 的分类翻译文本 -- GP-2742:支持在游戏崩溃提示界面显示 Fabric Loader 给出的警告信息 -- GP-2813:当日志中含有部分常见报错信息时,即使进程退出代码为 0 也显示游戏崩溃提示界面 -- GP-2828:支持检测 Forge 模组重复导致的游戏崩溃 -- GP-2834:支持检测 Forge 安装不完整导致的游戏崩溃 -- GP-2785:支持检测 JVM 堆内存不足导致的游戏崩溃 -- GP-2790:支持检测 Forge 与高版本 Java 不兼容导致的游戏崩溃 -- GP-2760:更新对 Linux RISC-V 64 系统的支持 - -错误修复: - -- GP-2745:修复只会从 MCBBS 源下载 authlib-injector 的问题 -- GP-2746:修复部分情况下修改并发下载数量会导致启动器崩溃的问题 -- GP-2756:修复网络下载缓存当缓存索引文件所在目录不存在时会导致下载失败的问题 -- GP-2758:修复 HMCL 背景网络图片 URL 输入框会持续触发网络请求的问题,现在仅会在输入结束后加载图片 -- GP-2768:修复自动安装界面错误提示 Quilt 与 Fabric API 不兼容的问题,现在两者能够同时安装了 -- GP-2770:修复 CurseForge 整合包启动时检测游戏完整性极其缓慢的问题,并支持显示进度条;修复光影包会被错误的安装至模组文件夹的问题 -- GP-2775:修复本地 NeoForge 模组被错误地识别为 Forge 模组的问题 -- GP-2788:修复选中使用非默认皮肤的离线账户时,启动器主页头像会被错误地显示为默认皮肤头像的问题,现在正常显示用户选择的皮肤头像 -- GP-2789:修复皮肤预览界面 Alex 皮肤被显示为 Classic 模型的问题,现在会使用 Slim 模型 -- GP-2791:修复世界管理界面下载按钮图标不正确的问题,使更加贴切其功能 -- GP-2799:修复由低版本 HMCL 升级后,窗口位置不会显示在正中央的问题 -- GP-2810:修复本地模组搜索功能无法正确处理大小写,导致有大写字母的模组永远不可能被搜索到的问题 -- GP-2811:修复 Java 8 上 JavaFX 不存在时英文提示不正确的问题 -- GP-2827:修复启动器主窗口隐藏后从日志窗口复制内容导致启动器崩溃的问题 -- GP-2835:修复关于界面上启动器图标仍为旧版图标的问题 - -# HMCL 3.5.5.235 - -- 完善 Quilt 支持 -- 添加了对 NeoForge 的支持 -- 打开启动器时会验证 JavaFX 完整性 -- 放弃 EXE 版本与 Windows XP 的兼容性,如果需要可以使用 JAR 版本 -- 支持从 Modrinth 更新模组,会比对 CurseForge 和 Modrinth 取最新版本 -- 支持在模组管理和模组搜索中显示所支持的模组加载器 -- 支持日志窗口中的复制操作,选中要复制的行,按 Ctrl+C 即可 -- 日志窗口默认显示行数调整至 1000 -- 添加光影包文件夹和日志文件夹打开按钮 -- 在离线账户创建时对不合法的账户名做出警告 -- 游戏安装界面现在会隐藏不可用的模组加载器 -- 现在系统 GLFW 和系统 OpenAL 也可在 Windows 上使用 -- 在出现 InternalError 的时候提示用户 Java 损坏 -- 添加了翻页按钮,用户可以按照 50 个一页分页查找 -- 在从 CurseForge 上按照“名称”搜索排序时能正确按照相关度显示 -- 在中文搜索时会额外按照中文相关度排序 -- 移动依赖信息显示到模组/整合包/资源包文件详情界面,分依赖类型显示文件依赖详情 -- 资源选择页面会根据所选版本的模组加载器、游戏版本推荐最新的合适资源 -- 整合包安装界面添加跳转至搜索整合包页面的按钮 -- 将阿里镜像源替换至腾讯云镜像源 -- 不默认修改 `forceUnicodeFont` 游戏设置 -- 优化文件详情无效依赖的提示 -- 更新了启动器图标 -- 新增 OptiFine 图标 -- 支持查看 NBT 文件,将 NBT 文件拖动至主页面即可查看 -- 添加龙芯新世界支持 -- 添加了更多的日志分析规则 -- 支持导出待更新模组列表 -- 支持导出游戏运行栈文件 -- 适配高版本自动进入服务器功能 -- 对多个语言文件进行了更新和修正 -- 标题黑白颜色跟随主题设置 -- 优化游戏进程被 SIGKILL 信号终止时的提示 -- 网络请求支持 Gzip 解压 -- 等待启动游戏时显示假进度条 -- 记忆窗口位置,打开程序时会按照上次的窗口位置 -- 在模组管理页面点击搜索按钮时自动将光标定位到输入框 -- 将网络超时设置为 8000 毫秒 -- 支持在 Linux/FreeBSD 删除操作时移动至回收站 -- 优化日志性能 -- 支持复制账户的 UUID -- 支持 FreeBSD x86-64 -- 添加帮助按钮 - -错误修复: - -- 修复自定义命令的一些问题 -- 修复游戏语言自动切换功能与不同版本的兼容性问题 -- 修复一些崩溃问题 -- 修复一些 MultiMC 整合包不会导入包内的文件的问题 -- 修复对 Windows ARM64 的支持 -- 修复对 Linux ARM64 的支持 -- 修复 Curse 整合包中包含资源包时 HMCL 不能正确识别的问题 -- 修复不会自动刷新微软账户的问题 -- 修复 Minecraft 1.19+ 在 Linux/macOS 下中文路径导致启动游戏崩溃的问题 -- 修复搜索模组/整合包/资源包等页面图标不会缓存的问题 -- 修复自动选择下载源功能的一些问题 -- 修复在资源下载详情界面链接文字显示不完整的问题 - -# HMCL 3.5.4.234 - -- 拒绝在被 Fractureiser 病毒感染的设备上启动 HMCL(若检测到将会提示并退出,[详情](https://github.com/fractureiser-investigation/fractureiser#readme)) -- 检测 HMCL 是否处于 macOS 上的 App Translocation(macOS 使用了 [App Translocation](https://lapcatsoftware.com/articles/app-translocation.html) 机制,可能会自动将 HMCL 移动至 `/private/var/folders` 中的临时文件夹内,导致用户关闭 HMCL 后游戏数据和设置丢失) -- 添加 Linux RISC-V 64 平台支持 -- 日志分析窗口中显示物理内存大小 -- 更新 Minecraft 购买链接 -- 添加删除游戏资源文件按钮 -- 优化 SSL 异常报错信息 -- 添加更多日志分析规则 -- 更新搜索版本号 -- 更新游戏版本号检测性能 -- 添加隐藏测试版提示开关 -- 更新翻译 - -错误修复: - -- 修复在 Minecraft 1.20 不能正常使用游戏内聊天功能的问题 -- 修复在 Windows on ARM 平台上的启动问题 -- 修复使用系统 GLFW 选项对 1.19+ 不生效的问题 -- 修复无法使用 macOS aarch64 JRE 启动部分版本的问题 -- 修复一些崩溃问题 - -# HMCL 3.5.4.232 - -- 添加环境变量设置 -- 添加渲染器设置 -- 将版本高级设置拆分至单独页面中 -- 在 Linux 上支持 `MESA_LOADER_DRIVER_OVERRIDE` 环境变量,适配 Zink 驱动程序 - -错误修复: - -- 修复日志分析窗口的渲染问题 - -# HMCL 3.5.3.230 - -- Quilt 相关功能完善 -- 默认将搜索排序修改为“热度” -- 更新语言文件 -- 减小 JAR 文件体积 -- 优化性能,轻微降低内存占用 -- 不将默认的日志行数保存到配置中,使其导出崩溃日志中的 minecraft.log 不会受其行数限制 - -错误修复: - -- 修复 GIF 动图加载占用主线程的问题 -- 修复一些崩溃问题 -- 修复下载源选择框过长的问题 -- 修复添加冗余 G1 参数的问题 - -# HMCL 3.5.3.229 - -- 更新整合包、模组、资源包、世界搜索中页面游戏版本标签,并修改类别的顺序 -- 优化自动内存分配 -- 弃用 FXML,能够便于调试修改、优化资源占用和优化启动速度 -- 将 Little skin 更改为可选的登录选项 -- 启动时检查 HMCL 是否在临时路径中 -- 修改一些提示 -- 优化 Mod 列表加载速度 -- 优化对 Java 兼容性问题的检测 -- 更新全部图标,改善了高分屏上图标的显示质量 -- 在更新整合包中包含的 Mod 时弹出警告 -- 支持导出更多崩溃日志 -- 更新反馈页面 -- 减小 JAR 文件体积 -- 向非官方构建添加提示 -- x86-64 平台上不自动选择 32 位 Java -- 建议 Forge 用户使用官方推荐版本的 Java 启动游戏 -- 默认在用户文件夹中存储账户信息,并添加 便携账户 和 全局账户 按钮切换 -- 优化日志分析 -- 添加模组列表搜索 -- 新添加 JVM 选项 `hmcl.home`,允许用户自行指定 HMCL_DIRECTORY - -错误修复: - -- 修复导入整合包界面,整合包名称文本框验证失败时提示被遮盖的问题 -- 修复消息对话框内字体大小样式未生效的问题 -- 修复主题相关问题 -- 修复代理页面的提示问题 -- 修复游戏内存显示问题 -- 修复路径拼接问题 -- 修复了一些内存泄露问题 -- 修复使用 Java 9+ 构建的 HMCL 的问题 - -# HMCL 3.5.3.228 - -- 优化启动器资源占用 -- 优化游戏 JVM 参数,改善游戏性能 -- 优化高分辨率屏幕上图标的显示效果 -- 优化微软账户登录相关提示 -- 支持 Gif 格式背景图 -- 在微软账户登录弹窗中添加 忘记密码 按钮 -- 添加关于离线账户命名的提示 -- 更新整合包、模组、资源包、世界搜索中页面游戏版本与类别标签 - -错误修复: -- 修复下载页卡顿的问题 -- 修复自动下载 Java 相关问题 -- 修复使用 Java 18+ 运行 Minecraft 时日志乱码的问题 -- 修复更新模组时可能崩溃的问题 -- 修复重复回滚 Mod 更新导致启动器崩溃的问题 -- 修复无法正确处理带有 Quilt 的 MultiMC 整合包的问题 -- 修复 Quilt 版本选择页未显示 Quilt 图标的问题 -- 修复 Mcbbs 整合包中 JVM 参数覆盖版本设置的问题 -- 修复使用 Java 8 运行时启动器标题显示 @develop@ 的问题 -- 修复使用 Java 8 运行时账户无法登录的问题 -- 修复使用 Java 8 运行时无法从 CurseForge 下载 Mod 的问题 -- 修复 macOS 上 Dock 中没有正确显示图标的问题 -- 修复导出整合包时在导出路径生成大量临时文件的问题 -- 修复修改版本设置时反复保存配置文件的问题 -- 修复未过滤部分整合包简介中颜色代码的问题 -- 修复 Mcbbs 整合包 JVM 参数覆盖版本设置的问题 - -# HMCL 3.5.3.227 -- 多人联机功能暂时下线维护[详情](https://hmcl.huangyuhui.net/api/redirect/multiplayer-migrate) -- 修复中文路径下启动 <= 1.12.2 的版本没有声音的问题 -- 修复 提示弹窗 的文本显示问题 -- 更新相关翻译 -- 优化未存在可用的 Java 环境启动 HMCL 时的提示 - -# HMCL 3.5.3.223 -- 在启动游戏时刷新账户失败时提示重试登录 -- 修复在授权过期时不会显示重新登录对话框 -- 微软登录相关优化 -- 修复通过自动安装更新游戏时的崩溃 -- 支持 Github Action 的构建产物微软登录 -- 更多平台的原生适配 -- 修复在找不到合适的 Java 时启动时卡住的问题 -- 支持在 linux-loongarch64_ow 上自动下载 JavaFX -- 更新翻译 -- 添加 sh 二进制文件支持 -- 修复 Modrinth 整合包安装 -- 更新多人联机 -- 日志分析器显示相关优化 -- 修复 Modrinth 格式的 Quilt 整合包安装错误 -- 修复 Modrinth 模组包解析错误 -- Quilt 自动安装相关调整 -- 修复下载 Java 链接错误 - -# HMCL 3.5.3.222 -- 修复翻译错误 -- 适配 Apple Silicon Mac 与龙芯平台 -- 修复不会自动补全缺失的 OptiFine 文件的问题 -- 更新官方下载源链接 -- 修复 OptiFine 自动安装后启动崩溃的问题 -- 微软账户相关调整 -- 添加世界信息界面(允许玩家在启动器内查看更详细的世界信息以及调整一些基本设置) -- 修复使用 Java 9+ 编译时的错误 -- 修复资源搜索获取信息失败相关问题 -- 添加 Quilt 自动安装 -- 回滚 HMCLauncher.exe ,减少杀毒软件报毒 -- 为非 x86 平台提供开箱即用的启动支持 -- 更新自动安装页面 -- 修复在创建账户页面下认证服务器未知的问题 - -# HMCL 3.5.3.221 -- 支持在文件管理器中显示文件,或者在 Linux 中直接打开父目录。 -- 默认开启“自动选择合适的 Java” -- 修复部分 UI 问题 -- 修复更换资源类别后不更新列表的问题 -- 修复无法获取前置模组信息 -- 更新翻译 -- 修复整合包的 mcmod 网址不正确问题 -- 修复无法将 mrpack 文件拖拽至主页面安装整合包的问题 -- 在 JDK 安装不完整时提醒重新安装 -- 修改微软账户上传皮肤链接 - -# HMCL 3.5.3.220 -- 修复 CurseForge 整合包无法下载安装的问题 - -# HMCL 3.5.3.219 -- 支持整合包下载页使用中文搜索 -- 支持下载安装 Modrinth 整合包 -- 修复在语言为英文时仍翻译 Mod 名称的问题 -- 修复离线模式帐户无法使用 LittleSkin 皮肤站的问题 -- 修复下载 Mod 和整合包时,没有显示下载进度的问题 -- 修复在 MacOS 和 Linux 系统下不能打开模组文件路径的问题 -- 修复部分情况下因 Zip 包编码无法检测,以致无法安装整合包的问题 -- 修复无法启动包含 LabyMod 的游戏的问题 -- 在系统内没有检测到 Java 时,自动尝试安装 Java,而不只提示用户手动安装 -- 更新 cato 网站链接 - -# HMCL 3.5.2.216 -- 修复在包含等于号的路径下运行时无法正确加载漏洞修复工具的问题 -- 修复 Mod 下载页选择 Modrinth 源时,排序选项不可用的问题 -- 修复下载游戏向导中,在某些情况下加载了错误的 Fabric API 列表的问题 -- 修复启动游戏时,如果 Java 版本不正确,某些情况下会导致启动器崩溃的问题 -- 修复某些情况下不能更新游戏版本为 Minecraft 1.18 所安装的 Forge -- 修复多人联机页面在快速点击打开房间时导致启动器崩溃的问题 -- 修复删除离线帐户使用的本地皮肤文件后游戏不能启动的问题 - -# HMCL 3.5.0.214 -- 重命名某个游戏版本后,该游戏版本将会被选中为当前游戏版本 -- 修复 cato 选项名称错误的问题 -- 修复 1.17/1.18 Forge 客户端不能启动的问题 -- 修复在定制离线帐户皮肤后,导出的游戏脚本不能正常启动游戏的问题 -- 修复 Mod 下载页面加载失败后点击刷新页面提示无反应的问题 -- 修复游戏崩溃分析窗口内显示了不知道是什么库的版本号的问题 -- 修复 Fabric-API 下载不完整的问题 -- 修复 Fabric-API 列表中存在与游戏版本不匹配的版本的问题 - -# HMCL 3.5.0.213 -- 修复 Log4j 远程代码执行漏洞 -- 更新 cato 至 1.2.0 - -# HMCL 3.4.212 -- 修复 Log4j 远程代码执行漏洞 -- 修复取消启动警告框后,启动游戏进度框不退出的问题 - -# HMCL 3.4.211 -- 修复 Log4j 远程代码执行漏洞 -- 修复解压 zip 文件时丢失文件属性的问题 - -# HMCL 3.4.210 -- 提示下载 Java 时,额外提供手动下载链接 -- 更新 cato 至 1.1.0 -- 修复部分页面进入时崩溃的问题 -- 修复设置系统环境变量 classpath 后游戏无法启动的问题 -- 修复删除所有游戏文件夹配置项后崩溃的问题 -- 修复删除游戏版本后不退出游戏设置页面的问题 -- 修复重命名游戏版本后游戏设置页面未刷新的问题 - -# HMCL 3.4.209 -- 不再翻译 id 为 examplemod 的 Mod 名称以避免歧义 -- 如果在 macOS/Windows ARM 设备上使用 HMCL,HMCL 会优先使用 x86 的 JDK 运行游戏 -- 提供更多预设的游戏版本图标以供设置 -- 完善显卡驱动问题提示语 -- 完善 Linux 用户因使用 Java9+ 版本导致游戏崩溃的提示语 -- 导出游戏启动脚本时,可以导出 PowerShell 格式的脚本 -- 支持游戏需要 Java 8 时提示并下载 Java 8 -- 下载 Mod 时,可以自定义文件名称 -- 添加透明背景选项 -- 添加日语翻译 -- 更新俄语翻译 -- 兼容 TLauncher 游戏客户端 -- 联机:修复使用 32 位 Java 时提示多人联机不支持当前平台的问题 -- 联机:修复 NAT 检测状态一直为检测中的问题 -- 联机:支持 Windows ARM64 平台 -- 联机:更新 cato 至 1.1.1 -- 联机:校验 cato 可执行文件的完整性,避免病毒等程序篡改 cato 导致安全风险 -- 联机:缩短联机码长度,避免联机码中因为包含斜杠,与 QQ 的表情转义符冲突的问题 -- 修复 macOS 上不能启动远古版本游戏的问题 -- 修复启动器打开时提示找不到 DST ROOT CA X3 证书的问题 -- 修复因为调整了游戏进程优先级设置,导致游戏不能运行,提示命令行过长的问题 -- 修复游戏版本名过长时布局混乱的问题 -- 修复离线帐户披风显示错误的问题 -- 修复不能复制游戏实例的问题 -- 修复不能选择自定义 Java 路径的问题 -- 修复不能修改没有 jar 文件的游戏实例的问题 -- 修复远古测试版启动时提示需要 Java 7 的问题 -- 修复背景网址不合法时启动器背景全透明的问题 -- 修复 Linux 下无法启动在中文目录下的游戏的问题 -- 修复下载 Java 失败时提示启动器崩溃的问题 -- 修复取消下载 Java 时无法取消游戏启动进程的问题 - -# HMCL 3.4.208 -- 运行环境缺少 JavaFX 时,直接开始下载而不是等待用户选择下载源 -- 修复联机断联的问题 - -# HMCL 3.4.207 -- 在杀毒软件删除 cato 时,弹出警告提示,而不是崩溃启动器 -- 资源包下载页面添加版本选择 -- 微软账号登录时被服务器要求重新手动登录时弹出登录提示框而不是登录失败 -- 修复运行在 32 位 Java 上时不能正确提示游戏不应使用 32 位 Java 运行的问题 -- 修复模组页、游戏下载页等页面标签错乱的问题 -- 修复游戏崩溃报告窗口不显示内存和 Java 版本的问题 -- 修复联机加入房间失败时将连接无法建立显示为被房主踢出的问题 - -# HMCL 3.4.206 -- 联机:更新 cato 至 1.0.c,支持 macOS M1 芯片设备 -- 联机:网络测试改用快速测试方法 -- 联机:添加加入申请选项,默认不再需要房主手动同意加入申请 -- 联机:在需要房主手动同意加入申请时,提供 30 秒超时,超时后自动拒绝申请 -- 在调试选项下和本地目录设置下显示警告信息 -- 离线账户皮肤选择本地文件时,允许修改人物模型为 Slim -- 启用标题栏透明选项时,标题栏背景色调为半透明 -- 现启动器更新通道将与启动器本身发布为开发版或稳定版绑定,避免玩家使用开发版时因为忘记调整更新通道,不能收到后续开发版更新推送 -- 修改页面跳转动画 -- 修复游戏崩溃报告页面崩溃的问题 -- 修复进入联机页面时没有下载 cato 的问题 -- 修复离线账户皮肤选择 Blessing Skin 时,网址末尾添加斜杠会无法加载皮肤的问题 -- 修复复制游戏实例时崩溃的问题 -- 修复点击反馈页面空白处弹出反馈详细信息页面的问题 -- 修复批量更新模组时,将 Forge Mod 更新为 Fabric Mod 的问题 - -# HMCL 3.4.205 -- 添加联机房间准入功能,房主同意后玩家才能加入房间 -- 添加联机房间管理功能,可以查看已经在房间中的玩家 -- 添加联机 Token 设置和中继模式 -- 联机时不再需要正版登录,但玩家必须在多人游戏页面直连 HMCL 多人联机房间 -- 添加修改离线账户皮肤的功能,允许使用本地图片和 LittleSkin 等皮肤站 -- 添加自动选择 Java 选项,省去提示用户需要更改 Java 版本的步骤 -- 添加模组批量更新功能 -- 修改页面跳转动画 -- 支持导入由玩家手动打包的包含 .minecraft 文件夹的整合包 -- Fabric Mod 崩溃时提示 Mod 冲突或缺失前置 Mod 原因 -- 在全局游戏设置中提示当前版本正在使用游戏独立设置,以避免玩家在错误的地方修改设置 -- 支持 1.17 下 OptiFine 与 Forge 同时安装 -- 修复由于 Java 损坏导致无法检测 Java 版本时,启动游戏卡死的问题 -- 修复 Mojang 账号和 Authlib-Injector 账号登录时卡死,看不到密码框的问题 -- 修复 Mojang 账号和 Authlib-Injector 账号刷新时崩溃的问题 - -# HMCL 3.4.203 -- 添加多人联机,由于处于试验阶段,如果出现问题请反馈 -- 调整界面外观 -- 背景路径支持网络链接 -- 允许修改启动器字体 -- 添加崩溃分析报告窗口,尽量分析崩溃信息,而不是直接打开日志窗口 -- Mod 下载页面按游戏版本分类 -- Mod 下载页面显示前置 Mod -- EXE 版本优先选择独立显卡 -- 打开不检查游戏完整性选项时,同时不检查服务端自动更新整合包的更新 -- 修复点击 Mod 列表页 Mod 文件夹按钮后不能打开正确文件夹的问题 -- 修复下载 Mod 时无法取消的问题 -- 修复不能正确识别 MCBBS V2 整合包的问题 -- 修复 PATH 格式不正确时导致启动器崩溃的问题 - -# HMCL 3.4.202 -- 更新至 JavaFX 17,额外支持 Mac M1 设备下自动下载 JavaFX -- Authlib-Injector 认证服务器管理页面移动至账户管理页侧边栏 -- 支持修改离线账户的 UUID -- Mod 管理页面和下载页面尽可能显示 Mod 的中文名称 -- Mod 下载页面允许中文搜索 -- Mod 下载页面允许选择搜索 CurseForge 或者 Modrinth -- Mod 下载页面允许查看 Mod 的 MC 百科页面与 MCBBS 页面 -- Mod 下载页面允许选择要安装到的目标游戏版本 -- 下载页面首页修改为游戏安装页,而不是 Mod 下载页 -- 自动安装 Fabric-API 至新游戏的 Mod 目录 -- 微软登录时无法自动打开浏览器时允许手动复制链接 -- 修复微软登录时提示 NullPointerException 或者部分情况下的无法连接认证服务器的问题 -- 修复安装新游戏失败的问题 -- 修复自动选择内存大小后内存大小过小的问题 -- 修复返回主页卡死的问题 -- 修复 Mod 下载页无法显示 Emoji 字符的问题 - -# HMCL 3.3.201 -- 添加帮助页面 -- 添加修改游戏进程优先级的功能 -- 任意页面按 ESC 键可返回上一页 -- 支持自动选择游戏内存大小 -- 添加 Linux 下使用系统 GLFW 及 OpenAL 的功能 -- 添加自动选择下载源的功能 -- 允许修改默认的下载并发数 -- 添加单独的下载页面,额外支持资源包和存档的下载功能 -- 更换默认背景图 -- 调整界面外观 -- 支持自动安装 Fabric-API(该功能尚未完成,需要在 Java 虚拟机参数中添加 -Dfabric.development 方能使用) -- 修复微软登录成功页乱码的问题 -- 修复微软账号年龄不满 18 岁显示的错误信息不易于阅读等问题 -- 修复不能启动 PCL 安装的部分游戏的问题 -- 修复不能启动 Fabric 安装器安装的 1.18 版本的问题 -- 修复模组下载页面没有按时间排序的问题 -- 修复 Java 11 以上滚动条的样式问题 -- 修复部分 Linux 发行版下不能打开微软登录页面的问题 - -# HMCL 3.3.200 -- 修复微软登录超时后崩溃的问题 - -# HMCL 3.3.199 -- 在整合包下载页按回车也可以发起搜索 -- 支持我的世界中文论坛整合包规范第二版,兼容 CurseForge 整合包格式,允许导入 MultiMC -- 重新设计关于页面 -- 修改创建账号页面 -- 新增赞助列表页面 -- 修复微软登录页可能白屏的问题 -- 修复微软登录很快过期的问题 -- 修复错误检测 Forge 版本号以至于不能导出正确的整合包的问题 -- 修复在主页按多次回车键会重复启动游戏的问题 -- 修复安装整合包时没有检查名字是否符合 Windows 文件名规范的问题 -- 修复 Forge 安装器部分内容仍需从官方源下载的问题 - -# HMCL 3.3.197 -- 修复不能启动 Forge 1.17.1-37.0.29 及以上版本的问题 -- 修复英文语言设置下版本管理页面的标题错误的问题 - -# HMCL 3.3.196 -- 修复进入 Mod 下载页面时崩溃的问题 - -# HMCL 3.3.195 -- 添加查看模组详细介绍及打开其官方页面的功能 -- Mod 下载列表会按照发布时间排序 -- 修复 Mod 下载页面存在空白区域的问题 -- 修复操作账户时崩溃的问题 - -# HMCL 3.3.194 -- 支持 CurseForge 整合包和 Mod 下载 -- 改进版本管理和游戏设置的界面 -- 修复不能启动 BakaXL 安装后的游戏的问题 - -# HMCL 3.3.192 -- 支持 1.17 Forge 的自动安装与游戏启动 -- 修复不能正常启动 Minecraft 1.5 及以下版本的问题(需要手动删除 options.txt) - -# HMCL 3.3.189 -- 支持使用 Fabric 作为 Mod 加载器的 CurseForge 整合包 -- 修复尝试下载 Java16 时只有确定没有取消按钮的问题 -- 修复下载 Java16 时取消下载过程后启动器崩溃的问题 -- 自动选择新添加的 Authlib-injector 服务器 -- 修复安装整合包时可能崩溃的问题 -- 压缩了启动器本体文件大小 -- 修复 MCBBS 整合包实现不符合规范的问题 -- 允许在 Minecraft 自定义参数内使用 ${game_directory} 等占位符 -- 支持官方启动器为 Minecraft 启动参数提供的一些占位符 -- 允许在 Java 自定义参数内覆盖启动器默认提供的启动参数,而不需要再禁止启动器生成默认参数 - -# HMCL 3.3.188 -- 自定义本地库路径,允许 M1 设备运行 ARM 版本的 Minecraft -- 自动检测系统内安装的 OpenJDK,包括 Liberica/Microsoft/Zulu/AdoptOpenJDK -- 修复 exe 版本不能正常下载 JavaFX 的问题 -- 修复 Windows 下打开使用 Unicode UTF-8 提供全球语言支持选项后启动器无法打开的问题 - -# HMCL 3.3.186 -- 解决 Java 16 下部分 mod 不能正常运行的问题 -- 修复对系统平台的识别错误导致部分平台不能正确下载 JavaFX 的问题 -- 启动 Minecraft 1.17 时自动下载官方提供的 Java 16 - -# HMCL 3.3.184 -- 修复 macOS 下启动器图标和 Finder 相同的问题,仅在 Java 9+ 生效 -- 修复与 Java 16 的兼容性问题 -- 允许在导出的整合包内包含启动器程序 - -# HMCL 3.3.183 -- 修复服务端自动更新整合包不能更新游戏、Forge 版本的问题 -- 兼容 Java11+,在 Java 11+ 上运行时会自动下载 JavaFX -- 修复不能识别部分数据包的问题 -- 刷新账户时将显示进度条 -- 上传皮肤时自动检测 Steve、Alex 模型 - -# HMCL 3.3.181 -- 微软登录页添加加载进度条 -- 修复整合包导出页无法点击下一步的问题 - -# HMCL 3.3.180 -- 支持我的世界中文论坛整合包标准 -- 修复下载失败的问题 - -# HMCL 3.3.179 -- 修复微软账号在设置了皮肤之后不能登录的问题 -- 修复不能显示微软账号皮肤的问题 - -# HMCL 3.3.178 -- 修复不能检测 20w45a+ 以上游戏的版本号 -- 修复同时只有一个文件在下载的问题 - -# HMCL 3.3.177 -- 修复下载失败导致游戏无法启动的问题 - -# HMCL 3.3.176 -- 支持微软正版账户登录 -- 支持 Authlib-injector 账户上传皮肤 -- 支持 Authlib-injector 服务器用邮箱以外的账户登录 -- 尝试修复在游戏启动后启动器直接关闭时导致游戏卡死的问题 -- 修复启动器设置 HTTP 代理后,游戏无法访问网络的问题 -- 修复下载支持库文件失败时启动器崩溃的问题 - -# HMCL 3.3.175 -- 修复部分情况误修改 options.txt 的问题 - -# HMCL 3.3.174 -- 允许第三方修改 HMCL 的 BMCLAPI 下载源,从而支持第三方下载源 -- 自动设置游戏的默认语言为中文 -- 修复因为线程过多导致在 macOS 系统上运行崩溃的问题 -- 修复重命名游戏版本点击移动窗口而不是移动光标的问题 - -# HMCL 3.3.173 -- 修复启动 Minecraft 1.0 时不会停止等待游戏启动的问题 -- 更新游戏整合包后会显示新的版本号 -- 修复更新整合包下载地址不能使用在线下载自动更新整合包的问题 -- 修复首次打开整合包会弹出 3 个新建账户窗口的问题 -- 配置文件会优先选择启动器同目录而不是工作目录 -- 修复运行在 Java 12+ 时列表和下拉菜单不能正常显示的问题 -- 修复鼠标指针不正常的问题 -- 修复添加外置登录的正版账号后会与普通正版账号冲突的问题 - -# HMCL 3.3.172 -- 添加窗口阴影 -- 添加为正版账号上传皮肤的功能 -- 现在会校验资源索引文件的完整性 -- 现在启动器代理设置对启动后的游戏有效 -- 自动安装页面将提示不兼容的第三方库,比如 Forge 和 Fabric 不兼容 -- 添加启动器的 JVM 参数 -Dhmcl.font.override=fontfamily 以允许 Linux 用户更换字体以解决白屏问题 -- 修复无法安装 Curse 整合包的问题 -- 修复下载资源文件时不能自动切换下载源的问题 -- 修复 1.5.2 及以下版本不能下载资源文件的问题 -- 修复 1.5.2 及以下版本安装 Forge 后启动失败的问题 -- 修复不能在 Java 17 下载 Forge 和自动更新的问题 -- 修复整合包配置丢失后整合包游戏版本不能修改配置的问题 - -# HMCL 3.3.170 -- 修复部分情况下崩溃的问题 -- 支持同时安装 Minecraft 1.14.4 及以上版本的 Forge 和 OptiFine - -# HMCL 3.3.169 -- 修复 1.12.2 同时安装 Forge, OptiFine 时无法进入游戏存档的问题 -- 修复服务器自动更新整合包更新时可能会出现 AccessDeniedException 的问题 -- 现在会记住启动器上次使用的窗口大小 -- 游戏设置页面也可以安装游戏、添加整合包和刷新版本列表 -- 游戏设置页面可以修改默认启动游戏版本 -- 使用外置登录账户时,主页面的账户将显示认证服务器名称 - -# HMCL 3.3.168 -- 将主界面的版本列表弹框的滚动条改为黑色 -- 修复某些情况下启动游戏时,提示 NullPointerException 的问题 -- 允许使用在启动器同目录下的 authlib-injector.jar 文件 -- 修复刷新下载列表时可能提示 ConcurrentModificationException 的问题 -- 修复重命名被依赖的版本后,会破坏其他依赖这个版本的版本的问题 -- 更正重命名版本时,输入不合法的新名字后的错误提示 -- 修复在自定义游戏运行目录时,输入不合法的路径会导致崩溃的问题 -- 修复在输入特定错误的 authlib-injector 服务器地址时会导致启动器崩溃的问题 - -# HMCL 3.3.166 -- 修复进入游戏设置后无法重命名部分游戏版本的问题 -- 修复 Curse 整合包下载时遗漏 Mod 的问题 -- 修复部分情况下弹框消失的问题 -- 在 OptiFine 库缺失时可以自动补全 - -# HMCL 3.3.165 -- 修复无法自动更新的问题 - -# HMCL 3.3.164 -- 更新俄语翻译 -- 修复在“在游戏启动后关闭启动器”启用时游戏无法启动的问题 -- 修复弹出对话框时无法拖动窗口的问题 - -# HMCL 3.3.163 -- 修复日志窗口无法清除日志的问题 -- 检查下载的 Fabric 安装包是否完整,避免 MCBBS 源带来的错误 -- 启动提示内存过大时允许停止启动 - -# HMCL 3.3.162 -- 修复无法下载资源文件的问题 -- 修复无法同时安装 Forge 1.12.2 2852 和 OptiFine 的问题 -- 加强对支持库文件完整/损坏的检查能力 - -# HMCL 3.3.161 -- 调整界面细节 -- 修复无法安装 Forge 1.12.2 2852 的问题 -- 提升与 ServerSync 的兼容性 -- 安装游戏向导内可直接切换下载源,而不需要返回启动器设置页面 - -# HMCL 3.3.160 -- 主界面标题栏透明 -- 游戏崩溃后弹出的日志窗口直接显示游戏崩溃报告(而不是游戏日志) -- 修复游戏崩溃后弹出的日志窗口无法显示日志的问题 - -# HMCL 3.3.159 -- 调整界面细节 -- 在日志窗口添加导出游戏日志功能 -- 修复复制游戏实例后的新游戏无效的问题 - -# HMCL 3.3.158 -- 调整界面细节 -- 修复游戏安装失败时提示安装完成的问题 -- 在自动安装 Forge、OptiFine 等库时若下载失败,自动重试其他下载源 - -# HMCL 3.3.157 -- 更新俄语翻译 -- 在游戏设置页面添加重命名等只能在游戏列表操作的功能 -- 在自动安装页面可以删除已选择安装的第三方库 -- 添加复制游戏实例功能 - -# HMCL 3.3.156 -- 修复 3.3.155 导致的启动失败问题 -- 在修改游戏版本时要求重新安装相关库 - -# HMCL 3.3.155 -- 修复 3.3.154 导致的启动失败问题 - -# HMCL 3.3.154 -- 修复 3.3.153 导致的启动失败问题 - -# HMCL 3.3.153 -- 调整界面样式 -- 提升自动安装功能与其他启动器的兼容性 -- 修复快速切换游戏时可能导致的一些问题 -- 支持调整启动器窗口大小 - -# HMCL 3.3.152 -- 调整界面样式 -- 修改默认下载源为 MCBBS -- 允许在启动游戏按钮上滑动鼠标滚轮切换游戏 -- 显示资源和 Curse Mod 下载总进度 - -# HMCL 3.2.151 -- 修复 3.2.150 部分游戏启动失败的问题 -- 修改 Mod、数据包页面的界面样式 -- 修复终止游戏后启动器不会停止等待的问题 - -# HMCL 3.2.150 -- 加快界面动画速度 -- 改善游戏下载速度 -- 添加清理缓存文件夹按钮 -- 修改安装游戏向导的界面 -- 在启动游戏、安装游戏等界面显示总下载速度 -- 在资源索引文件为空时自动重新下载资源文件 -- 在当前下载源下载失败后自动重试其他下载源 -- 在删除 Mod、世界、数据包时弹出删除确认提示 -- 在启动游戏、安装游戏等界面显示明确的安装步骤 -- 在游戏崩溃后的第二次启动时自动检查资源和支持库文件是否完整 -- 修复启动器崩溃时可能再次崩溃的问题 -- 修复部分整合包无法修改启动时游戏窗口大小的问题 -- 修复在 Curse 整合包安装部分成功时删除游戏的问题 -- 修复从 MCBBS 下载源下载文件可能会下载到空文件的问题 - -# HMCL 3.2.149 -- 在主界面账户栏添加鼠标悬浮提示以查看完整游戏名 -- 在主界面账户栏添加鼠标滚轮便捷切换游戏账户 - -# HMCL 3.2.148 -- 更新 Fabric 的 BMCLAPI 和 MCBBS 下载源支持 -- 更新繁体中文语言文件 -- 当 Curse 整合包部分 Mod 因服务器上文件不存在而下载失败时不删除游戏 - -# HMCL 3.2.147 -- 修复正版登录失败的问题 -- 修复无法正常显示错误信息的问题 - -# HMCL 3.2.146 -- 改进部分错误提示 -- 更新繁体中文语言文件 -- 修复重复下载游戏依赖文件的问题 -- 修复原版游戏用熔炉图标标识的问题 -- 修复取消登录时导致启动器崩溃的问题 -- 修复无法取消启动过程和安装过程的问题 -- 修复无法正常更新 authlib-injector 的问题 -- 修复在缺失资源索引文件时无法启动游戏的问题 -- 现官方下载源下载 Forge 时依赖文件不再强制从 BMCLAPI 下载 - -# HMCL 3.2.145 -- 修复无法取消下载的问题 -- 添加 MCBBS 下载源 -- 在资源索引文件不合法时尝试重新下载 -- 修复切换游戏版本后启动失败的问题 - -# HMCL 3.2.144 -- 修复导入 HMCL 整合包时无法安装 Forge 的问题 -- 修复无法下载 Curse 整合包部分 Mod(如潘马斯)的问题 -- 修复下载 Curse 整合包 Mod 失败后会删除整合包的问题 -- 修复无法启动使用 Vivecraft 安装器新安装的游戏的问题 -- 修复启动 1.15 时不会停止等待的问题 -- 修复 Windows 下导出启动脚本对双引号的错误转义 -- 修复部分正版账号登录 1.7.10 会导致游戏崩溃的问题 - -# HMCL 3.2.143 -- 修复关闭 JVM 检查时仍然会检查 java.exe 是否合法的问题 -- 修复下载服务端整合包没有对链接转义而无法下载的问题 -- 修复下载游戏时可能出现的 “HTTP 302” 错误 -- 导出整合包时将剔除所有日志文件和 CustomSkinLoader 的缓存 - -# HMCL 3.2.139 -- 修复服务器整合包下载时可能丢失文件的问题 -- 修复读取 authlib-injectors.json 时对链接格式要求过严的问题 - -# HMCL 3.2.138 -- 添加服务器自动更新整合包,允许服务器远程更新游戏客户端 -- 允许直接从给定链接下载整合包并安装 -- 日志窗口允许关闭自动滚动 -- 更新了英语翻译 -- 修复了部分情况下可能导致崩溃的问题 -- 修复了无法获取使用 authlib-injectors.json 添加的服务器的服务器名称的问题 - -# HMCL 3.2.137 -- 更新了英语和俄语翻译 -- 修复了一些导致启动器崩溃的问题 -- 修复了无法识别 Java 12 的问题 -- 修复了无法下载 Curse 整合包模组的问题 -- 修复了下载 Curse 整合包失败后删除了对应版本的问题 - -# HMCL 3.2.136 -- 修复 tryCacheLibrary 可能导致崩溃的问题 -- 修复无法安装 1.14.4 及 1.15 快照的问题 - -# HMCL 3.2.135 -- 添加 authlib-injectors.json,允许服主将添加账号页面更改为默认添加指定服务器的 Authlib Injector 账户 -- 访问 https://www.huangyuhui.net/index.php/2019/09/09/109/ 以查看添加方法 -- 检查安装游戏时输入的名称是否符合 Windows 系统需求 -- 修复导出整合包导入时无法安装 1.13 Forge 和 OptiFine 的问题 -- 修复部分情况下无法下载 Forge 安装包的问题 - -# HMCL 3.2.134 -- 修复了某些情况下无法安装 1.12.2 及以下版本的 Forge 的问题 -- 修复输入某些错误的 Java 路径时导致的崩溃 -- 修复了浏览 Mod 列表时可能出现的崩溃问题 - -# HMCL 3.2.133 -- 新安装的游戏支持修改游戏版本 -- 支持在打开启动器后的主页面按回车键启动游戏 -- 支持游戏列表内点击列表项进入游戏设置,右键列表项打开游戏管理菜单 -- 修复 OptiFine 自动安装(需要重新安装 OptiFine 生效) -- 修复无法从本地安装 OptiFine 的问题 -- 修复同时安装 Forge 和 OptiFine 自动安装失败的问题 -- 不再强制使用 java.exe - -# HMCL 3.2.132 -- 添加 Fabric 自动安装 -- 添加西班牙语 -- 支持导出 MultiMC 整合包 -- 修复无法下载 Curse 模组的问题 - -# HMCL 3.2.130 -- 添加对 Fabric 模组的管理支持 -- 将游戏依赖的动态链接库解压到 .minecraft 中而不是系统临时文件夹 -- 在遇到 SocketTimeoutException 时弹窗提示用户超时 -- 在遇到 404 时提示用户找不到文件而不是 IOException -- 在 HMCL 本体不完整时提示用户而不是崩溃 -- 在启动器更新时显示更新日志 -- 禁止导出 1.13.2 游戏整合包 -- 修复删除游戏版本时消息框重复显示的问题 -- 修复删除模组时可能出现的 NullPointerException -- 修复尝试更新 OptiFine 时却没有可用版本时导致的崩溃 -- 修复刷新数据包列表时崩溃的问题 -- 修复不能导入 Fabric 官方网站提供的 MultiMC 整合包的问题 -- 修复启动器皮肤预览异常的问题 -- 修复 macOS 无法安装 1.13.2 Forge 的问题 - -# HMCL 3.2.129 -- 在未安装 Mod API 的情况下禁用模组管理面板 -- 为自动安装中的 Forge、LiteLoader、OptiFine 添加更新按钮 -- 忽略游戏存档名中的颜色转移符 -- 隐藏游戏版本不匹配的游戏存档 -- 允许数据包列表页面多选 -- 修复无法下载安装 Forge 的问题 -- 修复下载失败后无法删除游戏版本的问题 -- 修复设置页面下方有大面积空白区域的问题 -- 回滚 JFoenix 组件库以修复一些 UI 的细节问题 - -# HMCL 3.2.127 -- 禁止用户同时安装 Forge 1.13.2 和 OptiFine - -# HMCL 3.2.126 -- 重构任务执行器 -- 修复填写账号时崩溃的问题 -- 修复添加账号面板中认证服务器列表显示不正确的问题 -- 修复刷新版本列表时的卡顿问题 -- 修复无法刷新 Forge 列表的问题 -- 修复 Forge 1.13 安装问题 - -# HMCL 3.2.124 -- 修复无法正版登录的问题 -- 修复 mods 不是文件夹时无法安装模组的问题 - -# HMCL 3.2.123 -- 启动前检查是否是 Java 8~10 -- 模组管理面板支持多选 -- 下载库文件失败时提供更友好的提示 -- 只从 BMCLAPI 获取 Forge 列表 -- 添加 BMCLAPI 赞助信息 -- 修复头像不显示头盔层的问题 - -# HMCL 3.2.121 -- 支持 Forge 1.13 的自动安装 -- 安装游戏时更新资源文件 -- 启动时下载缺失的 Minecraft 本体文件 -- 支持自动检测整合包自带的 Java 运行时 -- 更新 authlib-injector -- 下载库文件失败时提供更友好的提示 -- 重构正版登录 -- 修复启动按钮无法根据背景颜色更改字体颜色的问题 - -# HMCL 3.2.120 -- 修复打开版本管理时的崩溃 - -# HMCL 3.2.119 -- 添加提示部分版本的 Forge 和 LiteLoader 不兼容的问题 -- 在模组管理面板添加加载进度条 -- 支持整合包拖拽到主页面打开安装向导 -- 支持新版 MultiMC 整合包的导入 -- 删除在版本管理页面中的删除游戏和重命名按钮 -- 加载游戏存档过程更加流畅 -- 在登录对话框中添加注册链接 -- 修复标题栏中没有显示返回主页按钮的问题 -- 修复保存设置时的潜在问题 - -# HMCL 3.2.117 -- 提醒用户在修改版本独立选项时需要注意游戏文件的转移 -- 修复 Java 10 上 UI 错位的问题 -- 修复游戏认证服务器列表的渲染问题 -- 修复启动 Curse 整合包时尝试下载被禁用的模组的问题 - -# HMCL 3.2.116 -- 在缓存目录无效时自动更改设置 -- 在安装游戏失败时删除不完全的游戏 -- 自动检测整合包、游戏存档、数据包的编码以增强兼容性 -- 在更新整合包时进行游戏文件的备份 -- 添加打开存档文件夹的菜单 -- 添加刷新模组列表的按钮 -- 支持拖拽游戏存档压缩包到游戏界面以便安装游戏存档 -- 修复皮肤图片文件损坏时导致的崩溃问题 -- 修复配置文件格式不正确时导致的崩溃问题 -- 修复 Curse 整合包更新失败的问题 -- 修复自动更新弹出气泡的界面错乱问题 - -# HMCL 3.2.115 -- 修复安装游戏后不显示游戏的问题 -- 修复下载资源文件时潜在的崩溃问题 - -# HMCL 3.2.114 -- 修复导入整合包时的乱码问题 -- 更新 authlib-injector -- 从 Cursemeta 上下载 Curse 上被删除的 Mod 文件 - diff --git a/assets/hmcl/changelog/stable.md b/assets/hmcl/changelog/stable.md deleted file mode 100644 index 2b63fa7b..00000000 --- a/assets/hmcl/changelog/stable.md +++ /dev/null @@ -1,346 +0,0 @@ -![Hits](https://hits.zkitefly.eu.org/?tag=https%3A%2F%2Fdocs.hmcl.net%2Fchangelog%2Fstable.html) - -*Notice: changelogs are written in Chinese.* - -# HMCL 3.5.5 - -- 启动器 - - 拒绝在被 Fractureiser 病毒感染的设备上启动 HMCL(若检测到将会提示并退出,[详情](https://github.com/fractureiser-investigation/fractureiser#readme)) - - 检测 HMCL 是否处于 macOS 上的 App Translocation(macOS 使用了 [App Translocation](https://lapcatsoftware.com/articles/app-translocation.html) 机制,可能会自动将 HMCL 移动至 `/private/var/folders` 中的临时文件夹内,导致用户关闭 HMCL 后游戏数据和设置丢失) - - 日志分析窗口中显示物理内存大小 - - 更新 Minecraft 购买链接 - - 优化 SSL 异常报错信息 - - 添加更多日志分析规则 - - 更新游戏版本号检测性能 - - 添加隐藏测试版提示开关 - - 在 Linux 上支持 `MESA_LOADER_DRIVER_OVERRIDE` 环境变量,适配 Zink 驱动程序 - - 更新翻译 - -- 下载 - - 更新搜索版本号 - -- 游戏设置 - - 添加删除游戏资源文件按钮 - - 将版本高级设置拆分至单独页面中 - - 添加环境变量设置 - - 添加渲染器设置 - -- 跨平台 - 添加 Linux RISC-V 64 平台支持 - -错误修复: - -- 修复日志分析窗口的渲染问题 -- 修复在 Minecraft 1.20 不能正常使用游戏内聊天功能的问题 -- 修复在 Windows on ARM 平台上的启动问题 -- 修复使用系统 GLFW 选项对 1.19+ 不生效的问题 -- 修复无法使用 macOS aarch64 JRE 启动部分版本的问题 -- 修复一些崩溃问题 - -# HMCL 3.5.4 - -- 启动器 - - 多人联机功能暂时下线维护 [详情](https://hmcl.huangyuhui.net/api/redirect/multiplayer-migrate) - - 不再支持添加 Mojang 账户 [迁移至微软账户](https://aka.ms/MinecraftMigration) - - 默认在用户文件夹中存储账户信息,提高安全性 - - 优化性能与资源占用,解决卡顿问题 - - 优化文本提示 - - 优化自动内存分配功能 - - 优化游戏 JVM 参数,改善游戏性能 - - 优化自动选择 Java 功能 - - 优化自动下载 Java 功能 - - 优化微软账户登录功能 - - 支持 Gif 格式背景图 - - 优化高分辨率屏幕上图标的显示效果 - - 更新反馈页面 - - 默认加入 Little Skin 登录选项 - - 为 Linux 提供 sh 格式构建 - - 新添加 JVM 选项 `-Dhmcl.home`,允许用户自行指定 HMCL_DIRECTORY - -- 下载 - - 支持整合包下载页使用中文搜索 - - 支持下载安装 Modrinth 整合包 - - 支持 Quilt 自动安装 - - 默认将搜索排序修改为“热度” - -- 游戏设置 - - 默认开启“自动选择合适的 Java” - - 添加世界信息界面,允许玩家在启动器内查看详细世界信息以及修改世界设置 - - 添加模组列表搜索 - - 优化自动内存分配 - -- 跨平台 - - 适配 Windows ARM64 平台 - - 适配 Linux LoongArch64(旧世界)平台 - - 适配 Linux ARM32 平台 - - 适配 Linux ARM64 平台 - - 适配 MacOS ARM64 平台 - -此外,本版本包含数百项错误修复,详情请查看[测试版更新日志](https://docs.hmcl.net/changelog/dev.html)。 - -# HMCL 3.5.3 - -- 启动器 - - 支持多人联机 - - 自动选择新添加的 Authlib-injector 服务器 - - 添加修改离线账户皮肤的功能,允许使用本地图片和 LittleSkin 等皮肤站 - - 自动检测系统内安装的 OpenJDK,包括 Liberica/Microsoft/Zulu/AdoptOpenJDK - - 允许修改启动器字体 - - 游戏崩溃时提供崩溃分析报告 - - 添加帮助页面 - - 更换默认背景图 - - 修复微软登录页可能白屏的问题 - - 任意页面按 ESC 键可返回上一页 - - 修复启动器打开时提示找不到 DST ROOT CA X3 证书的问题 - - 修复对系统平台的识别错误导致部分平台不能正确下载 JavaFX 的问题 - - 修复 Log4j 远程代码执行漏洞 - -- 游戏启动 - - 支持官方启动器为 Minecraft 启动参数提供的一些占位符 - - 兼容 TLauncher 游戏客户端 - - 如果在 macOS/Windows ARM 设备上使用 HMCL,HMCL 会优先使用 x86 的 JDK 运行游戏 - - 解决 Java 16 下部分 mod 不能正常运行的问题 - - 修复 Windows 下打开使用 Unicode UTF-8 提供全球语言支持选项后启动器无法打开的问题 - - 修复不能启动 BakaXL 安装后的游戏的问题 - - 修复不能正常启动 Minecraft 1.5 及以下版本的问题(需要手动删除 options.txt) - -- 下载 - - 启动 Minecraft 1.17 及以上版本时自动下载官方提供的 Java 16 - - 支持 CurseForge 整合包、Mod、资源包、地图 下载 - - 支持 1.17 Forge 的自动安装与游戏启动 - - 支持 1.17 下 OptiFine 与 Forge 同时安装 - - 添加模组批量更新功能 - - 添加自动选择下载源的功能 - - 允许修改默认的下载并发数 - -- 游戏设置 - - 允许在 Java 自定义参数内覆盖启动器默认提供的启动参数,而不需要再禁止启动器生成默认参数 - - 允许在 Minecraft 自定义参数内使用 ${game_directory} 等占位符 - - 改进版本管理和游戏设置的界面 - - 添加修改游戏进程优先级的功能 - - 支持自动选择游戏内存大小 - - 添加查看模组详细介绍及打开其官方页面的功能 - - 添加 Linux 下使用系统 GLFW 及 OpenAL 的功能 - - 自定义本地库路径,允许 M1 设备运行 ARM 版本的 Minecraft - - 添加自动选择 Java 选项,省去提示用户需要更改 Java 版本的步骤 - -- 整合包 - - 支持使用 Fabric 作为 Mod 加载器的 CurseForge 整合包 - - 支持我的世界中文论坛整合包规范第二版,兼容 CurseForge 整合包格式,允许导入 MultiMC - - 修复安装整合包时可能崩溃的问题 - - 修复 MCBBS 整合包实现不符合规范的问题 - -# HMCL 3.3.188 - -- 启动器 - - 修改界面 - - 更新俄语翻译 - - 改善游戏下载速度 - - 添加复制游戏实例功能 - - 支持微软正版账户登录 - - 自动设置游戏的默认语言为中文 - - 兼容 Java11+,在 Java 11+ 上运行时会自动下载 JavaFX - - 配置文件会优先选择启动器同目录而不是工作目录 - - 支持 Authlib-injector 账户上传皮肤 - - 支持 Authlib-injector 服务器用邮箱以外的账户登录 - - 上传皮肤时自动检测 Steve、Alex 模型 - - 刷新账户时将显示进度条 - - 自定义本地库路径,允许 M1 设备运行 ARM 版本的 Minecraft - - 启动 Minecraft 1.17 时自动下载官方提供的 Java 16 - - 允许第三方修改 HMCL 的 BMCLAPI 下载源,从而支持第三方下载源 - - 自动检测系统内安装的 OpenJDK,包括 Liberica/Microsoft/Zulu/AdoptOpenJDK - - 修复启动 Minecraft 1.0 时不会停止等待游戏启动的问题 - - 修复首次打开整合包会弹出 3 个新建账户窗口的问题 - - 修复运行在 Java 12+ 时列表和下拉菜单不能正常显示的问题 - - 修复鼠标指针不正常的问题 - - 修复添加外置登录的正版账号后会与普通正版账号冲突的问题 - - 修复因为线程过多导致在 macOS 系统上运行崩溃的问题 - - 修复重命名游戏版本点击移动窗口而不是移动光标的问题 - - 尝试修复在游戏启动后启动器直接关闭时导致游戏卡死的问题 - - 修复启动器设置 HTTP 代理后,游戏无法访问网络的问题 - - 修复下载支持库文件失败时启动器崩溃的问题 - - 修复不能识别部分数据包的问题 - - 修复 Windows 下打开使用 Unicode UTF-8 提供全球语言支持选项后启动器无法打开的问题 - - 解决 Java 16 下部分 mod 不能正常运行的问题 - -- 整合包 - - 更新游戏整合包后会显示新的版本号 - - 支持我的世界中文论坛整合包标准 - - 修复更新整合包下载地址不能使用在线下载自动更新整合包的问题 - - 修复服务端自动更新整合包不能更新游戏、Forge 版本的问题 - -# HMCL 3.3.172 - -- 启动器 - - 修改界面 - - 更新俄语翻译 - - 改善游戏下载速度 - - 添加复制游戏实例功能 - - 添加清理缓存文件夹按钮 - - 修改默认下载源为 MCBBS - - 提升与 ServerSync 的兼容性 - - 添加为正版账号上传皮肤的功能 - - 支持调整并记住启动器窗口大小 - - 在日志窗口添加导出游戏日志功能 - - 现在会校验资源索引文件的完整性 - - 现在启动器代理设置对启动后的游戏有效 - - 在启动游戏、安装游戏等界面显示总下载速度 - - 游戏崩溃后显示游戏崩溃报告而不是游戏日志 - - 允许在启动游戏按钮上滑动鼠标滚轮切换游戏 - - 在删除 Mod、世界、数据包时弹出删除确认提示 - - 允许使用在启动器同目录下的 authlib-injector.jar 文件 - - 在游戏崩溃后的第二次启动时自动检查资源和支持库文件是否完整 - - 添加启动器的 JVM 参数 -Dhmcl.font.override=fontfamily 以允许 Linux 用户更换字体以解决白屏问题 - - 修复部分整合包无法修改启动时游戏窗口大小的问题 - - 修复终止游戏后启动器不会停止等待的问题 - - 修复 1.5.2 及以下版本不能下载资源文件的问题 - - 修复某些情况下启动游戏时,启动器会崩溃的问题 - - 修复进入游戏设置后无法重命名部分游戏版本的问题 - - 修复不能在 Java 17 下载 Forge 和自动更新的问题 - - 修复重命名版本时,输入不合法的新名字后的错误提示 - - 修复重命名被依赖的版本后,会破坏其他依赖这个版本的版本的问题 - - 修复在自定义游戏运行目录时,输入不合法的路径会导致崩溃的问题 - - 修复在输入特定错误的 authlib-injector 服务器地址时会导致启动器崩溃的问题 - -- 自动安装 - - 在 OptiFine 库缺失时可以自动补全 - - 提升自动安装功能与其他启动器的兼容性 - - 在当前下载源下载失败后自动重试其他下载源 - - 在启动游戏、安装游戏等界面显示明确的安装步骤 - - 安装游戏向导内可直接切换下载源,而不需要返回启动器设置页面 - - 支持同时安装 Minecraft 1.14.4 及以上版本的 Forge 和 OptiFine - - 自动安装页面将提示不兼容的第三方库,比如 Forge 和 Fabric 不兼容 - - 修复无法安装 Forge 1.12.2 2852 的问题 - - 修复在 Curse 整合包安装遗漏部分 Mod 的问题 - - 修复在 Curse 整合包安装部分成功时删除游戏的问题 - - 修复 1.5.2 及以下版本安装 Forge 后启动失败的问题 - - 修复从 MCBBS 下载源下载文件可能会下载到空文件的问题 - - 修复 1.12.2 同时安装 Forge, OptiFine 时无法进入游戏存档的问题 - -- 整合包 - - 修复整合包配置丢失后整合包游戏版本不能修改配置的问题 - - 修复服务器自动更新整合包更新时可能会出现 AccessDeniedException 的问题 - -# HMCL 3.2.149 - -- 启动器 - - 改进部分错误提示 - - 更新繁体中文语言文件 - - 在主界面账户栏添加鼠标滚轮便捷切换游戏账户 - - 在主界面账户栏添加鼠标悬浮提示以查看完整游戏名 - - 修复原版游戏用熔炉图标标识的问题 - - 修复无法取消启动过程和安装过程的问题 - - 修复无法启动使用 Vivecraft 安装器新安装的游戏的问题 - - 修复启动 1.15 时不会停止等待的问题 - - 修复 Windows 下导出启动脚本对双引号的错误转义 - - 修复部分正版账号登录 1.7.10 会导致游戏崩溃的问题 - - 修复关闭 JVM 检查时仍然会检查 java.exe 是否合法的问题 - - 修复使用 BMCLAPI 不能下载 authlib-injector 和加载游戏列表的问题 - -- 自动安装 - - 添加 MCBBS 下载源 - - 在资源索引文件不合法时尝试重新下载 - - 添加 Fabric 的 BMCLAPI 和 MCBBS 下载源支持 - - 现官方下载源下载 Forge 时依赖文件不再强制从 BMCLAPI 下载 - - 修复重复下载游戏依赖文件的问题 - -- 整合包 - - 导出整合包时将剔除所有日志文件和 CustomSkinLoader 的缓存 - - 修复导入 HMCL 整合包时无法安装 Forge 的问题 - - 修复无法下载 Curse 整合包部分 Mod(如潘马斯)的问题 - - 修复下载 Curse 整合包 Mod 失败后会删除整合包的问题 - - 修复下载服务端整合包没有对链接转义而无法下载的问题 - -# HMCL 3.2.139 - -- 启动器 - - 添加西班牙语,更新英语、俄语翻译 - - 主页面按回车键启动游戏 - - 游戏列表内点击列表项进入游戏设置,右键列表项打开游戏管理菜单 - - 不再强制使用 java.exe - - 日志窗口允许关闭自动滚动 - - 避免安装游戏时输入的游戏名称不符合 Windows 系统要求 - - 修复输入某些错误的 Java 路径时崩溃的问题 - - 修复浏览 Mod 列表可能出现的崩溃问题 - - 修复无法识别 Java 12、13 的问题 - -- 自动安装 - - 添加 Fabric 自动安装 - - 新安装的游戏可以修改游戏版本 - - 修复 OptiFine 自动安装 - - 修复同时安装 Forge 和 OptiFine 自动安装失败的问题 - - 修复某些情况下无法安装 1.12.2 及以下版本的 Forge 的问题 - - 修复导出整合包导入时无法安装 1.13 Forge 和 OptiFine 的问题 - - 修复部分情况下无法下载 Forge 安装包的问题 - - 修复无法安装 1.14 和 1.15 游戏的问题 - -- 整合包 - - 允许从给定链接下载整合包并进行安装 - - 支持导出 MultiMC 整合包 - - 修复无法下载 Curse 模组的问题 - - 修复下载 Curse 整合包失败后会删除游戏的问题 - -- 服主功能 - - 添加 authlib-injectors.json,允许服主将添加账号页面更改为默认添加指定服务器的 Authlib Injector 账户 - - 访问 [https://www.huangyuhui.net/index.php/2019/09/09/109/](https://www.huangyuhui.net/index.php/2019/09/09/109/) 以查看添加方法 - - 添加服务器自动更新整合包,允许服务器远程更新游戏客户端 - - 访问 [https://www.huangyuhui.net/index.php/2019/11/12/118/](https://www.huangyuhui.net/index.php/2019/11/12/118/) 以查看添加方法 - - -# HMCL 3.2.130 - -- 启动器 - - 在启动器更新时显示更新日志 - - 启动前检查是否是 Java 8~10 - - [https://www.huangyuhui.net/index.php/2019/01/27/83/](https://www.huangyuhui.net/index.php/2019/01/27/83/)支持整合包自带 Java 运时 - - 在缓存目录无效时自动更改设置 - - 在登录对话框中添加注册链接 - - 将游戏依赖的动态链接库解压到 .minecraft 中而不是系统临时文件夹 - - 更新 authlib-injector - -- 自动安装 - - 只从 BMCLAPI 获取 Forge、OptiFine 列表 - - 添加 BMCLAPI 赞助信息 - - 支持 Forge 1.13 的自动安装 - - 支持 Forge、LiteLoader、OptiFine 的手动更新 - - 添加提示部分版本的 Forge 和 LiteLoader 不兼容的问题 - - 下载库文件失败时提供更友好的提示 - - 安装游戏时更新资源文件 - - 启动时下载缺失的 Minecraft 本体文件 - - 在安装游戏失败时删除不完全的游戏 - -- 游戏管理 - - 支持对 Fabric 模组的管理 - - 支持数据包列表页面、模组管理面板多选 - - 添加刷新模组列表的按钮 - - 在未安装 Mod API 的情况下禁用模组管理面板 - - 忽略游戏存档名中的颜色转移符 - - 隐藏游戏版本不匹配的游戏存档 - - 添加打开存档文件夹的菜单 - - 删除在版本管理页面中的删除游戏和重命名按钮 - - 提醒用户在修改版本独立选项时需要注意游戏文件的转移 - - 支持拖拽游戏存档压缩包到游戏界面以便安装游戏存档 - -- 整合包 - - 支持整合包拖拽到主页面打开安装向导 - - 支持新版 MultiMC 整合包的导入 - - 在更新整合包时进行游戏文件的备份 - - 从 Cursemeta 上下载 Curse 上被删除的 Mod 文件 - -- 修复 - - 修复头像不显示头盔层的问题 - - 修复删除模组时可能导致的崩溃 - - 修复刷新数据包列表时可能的崩溃问题 - - 修复启动器皮肤预览异常的问题 - - 修复下载失败后无法删除游戏版本的问题 - - 修复刷新版本列表时的卡顿问题 - - 修复 mods 不是文件夹时无法安装模组的问题 - - 修复启动按钮无法根据背景颜色更改字体颜色的问题 - - 修复 Java 10 上 UI 错位的问题 - - 修复启动 Curse 整合包时尝试下载被禁用的模组的问题 - - 修复皮肤图片文件损坏时导致的崩溃问题 - - 修复配置文件格式不正确时导致的崩溃问题 - - 修复 Curse 整合包更新失败的问题 - - 修复自动更新弹出气泡的界面错乱问题 - - 修复下载资源文件时潜在的崩溃问题 - - 修复导入整合包时的乱码问题 diff --git a/assets/img/hmcl.png b/assets/img/hmcl.png new file mode 100644 index 0000000000000000000000000000000000000000..71b6d32f920d2f333c6b77e46b7bd59ff4ca56b8 GIT binary patch literal 35645 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 DUH^FH literal 0 HcmV?d00001 diff --git a/assets/js/theme.en.js b/assets/js/theme.en.js new file mode 100644 index 00000000..d62998aa --- /dev/null +++ b/assets/js/theme.en.js @@ -0,0 +1,45 @@ +--- +layout: null +--- +var darkTheme = document.createElement("link"); +darkTheme.rel = "stylesheet alternate"; +darkTheme.href = "{{ '/assets/css/dark.css' | relative_url }}"; +document.head.appendChild(darkTheme); +window.addEventListener("DOMContentLoaded", function () { + var list = document.querySelector(".masthead .visible-links"); + if (!list) return; + var mediaQuery = window.matchMedia("(prefers-color-scheme: dark)"); + function handler() { + darkTheme.rel = mediaQuery.matches ? "stylesheet" : "stylesheet alternate"; + } + var current = 0; + var modes = ["light", "dark", "auto"]; + var modeNames = ["Light", "Dark", "Auto"]; + var switcher = document.createElement("a"); + switcher.className = "masthead__menu-item"; + switcher.innerText = modeNames[current]; + switcher.href = "javascript:;"; + switcher.onclick = function () { + themeApply(current + 1); + } + list.appendChild(switcher); + function themeApply(index) { + index = (Number(index) || 0) % modes.length; + if (index === current) return; + if (modes[current] === "auto") mediaQuery.removeEventListener("change", handler); + current = index; + var mode = modes[current]; + switcher.innerText = modeNames[current]; + localStorage.setItem("theme", current); + if (mode === "light") darkTheme.rel = "stylesheet alternate"; + else if (mode === "dark") darkTheme.rel = "stylesheet"; + else { + mediaQuery.addEventListener("change", handler); + handler(); + } + } + themeApply(localStorage.getItem("theme")); + window.addEventListener("storage", function (event) { + event.key === "theme" && themeApply(event.newValue); + }); +}); \ No newline at end of file diff --git a/assets/js/theme.js b/assets/js/theme.js index 95cda32f..97822477 100644 --- a/assets/js/theme.js +++ b/assets/js/theme.js @@ -3,7 +3,7 @@ layout: null --- var darkTheme = document.createElement("link"); darkTheme.rel = "stylesheet alternate"; -darkTheme.href = "{{ '/assets/css/main.dark.css' | relative_url }}"; +darkTheme.href = "{{ '/assets/css/dark.css' | relative_url }}"; document.head.appendChild(darkTheme); window.addEventListener("DOMContentLoaded", function () { var list = document.querySelector(".masthead .visible-links"); diff --git a/assets/js/theme.zh-TW.js b/assets/js/theme.zh-TW.js new file mode 100644 index 00000000..43a91afd --- /dev/null +++ b/assets/js/theme.zh-TW.js @@ -0,0 +1,45 @@ +--- +layout: null +--- +var darkTheme = document.createElement("link"); +darkTheme.rel = "stylesheet alternate"; +darkTheme.href = "{{ '/assets/css/dark.css' | relative_url }}"; +document.head.appendChild(darkTheme); +window.addEventListener("DOMContentLoaded", function () { + var list = document.querySelector(".masthead .visible-links"); + if (!list) return; + var mediaQuery = window.matchMedia("(prefers-color-scheme: dark)"); + function handler() { + darkTheme.rel = mediaQuery.matches ? "stylesheet" : "stylesheet alternate"; + } + var current = 0; + var modes = ["light", "dark", "auto"]; + var modeNames = ["亮色", "暗色", "自動"]; + var switcher = document.createElement("a"); + switcher.className = "masthead__menu-item"; + switcher.innerText = modeNames[current]; + switcher.href = "javascript:;"; + switcher.onclick = function () { + themeApply(current + 1); + } + list.appendChild(switcher); + function themeApply(index) { + index = (Number(index) || 0) % modes.length; + if (index === current) return; + if (modes[current] === "auto") mediaQuery.removeEventListener("change", handler); + current = index; + var mode = modes[current]; + switcher.innerText = modeNames[current]; + localStorage.setItem("theme", current); + if (mode === "light") darkTheme.rel = "stylesheet alternate"; + else if (mode === "dark") darkTheme.rel = "stylesheet"; + else { + mediaQuery.addEventListener("change", handler); + handler(); + } + } + themeApply(localStorage.getItem("theme")); + window.addEventListener("storage", function (event) { + event.key === "theme" && themeApply(event.newValue); + }); +}); \ No newline at end of file diff --git a/index-en_US.json b/index-en_US.json deleted file mode 100644 index 35b095a0..00000000 --- a/index-en_US.json +++ /dev/null @@ -1,59 +0,0 @@ -[ - { - "items": [ - { - "title": "Note: The document is written in Simplified Chinese!" - } - ] - }, - { - "title": "Launcher", - "items": [ - { - "title": "Datapack Creation Guide", - "subtitle": "How to create datapacks that can be imported by HMCL", - "url": "https://docs.hmcl.net/launcher/datapack.html" - }, - { - "title": "Shaders", - "subtitle": "How to install shaders", - "url": "https://docs.hmcl.net/launcher/shader.html" - }, - { - "title": "Settings Explained", - "subtitle": "A detailed explanation of various settings in HMCL", - "url": "https://docs.hmcl.net/launcher/set-item-details.html" - }, - { - "title": "Change Skin in Offline Mode", - "subtitle": "How to use custom player skins in offline mode", - "url": "https://docs.hmcl.net/launcher/offline-skin.html" - }, - { - "title": "Automatic Installation and Mod Downloads", - "subtitle": "Tutorials for installing Forge, LiteLoader, Fabric, and installing mods", - "url": "https://docs.hmcl.net/launcher/auto-installing.html" - }, - { - "title": "Instance Isolation", - "subtitle": "Solutions to avoid conflicts between saves and mod configurations of different game instances", - "url": "https://docs.hmcl.net/launcher/isolation.html" - } - ] - }, - { - "title": "Modpack", - "items": [ - { - "title": "Authlib-Injector Server Setup Guide", - "subtitle": "How to configure the launcher to display the login page upon first opening after manually archiving a modpack", - "url": "https://docs.hmcl.net/launcher/authlib-injector.html" - }, - { - "title": "Server-Side Auto-Updating Modpack Creation Tutorial", - "subtitle": "Guide on creating a server-side auto-updating modpack that forces the client to update according to the server owner's configuration", - "url": "https://docs.hmcl.net/modpack/serverpack.html" - } - ] - } -] diff --git a/index-zh_TW.json b/index-zh_TW.json deleted file mode 100644 index ef299319..00000000 --- a/index-zh_TW.json +++ /dev/null @@ -1,52 +0,0 @@ -[ - { - "title": "啟動器", - "items": [ - { - "title": "資料包製作指南", - "subtitle": "製作可以由 HMCL 匯入的資料包", - "url": "https://docs.hmcl.net/launcher/datapack.html" - }, - { - "title": "光影", - "subtitle": "光影的安裝方法", - "url": "https://docs.hmcl.net/launcher/shader.html" - }, - { - "title": "設定項詳解", - "subtitle": "這篇文章針對 HMCL 的各個設定項進行了詳細的解釋", - "url": "https://docs.hmcl.net/launcher/set-item-details.html" - }, - { - "title": "離線模式下更換外觀", - "subtitle": "如何在離線模式下使用自訂角色外觀", - "url": "https://docs.hmcl.net/launcher/offline-skin.html" - }, - { - "title": "自動安裝與模組下載", - "subtitle": "安裝 Forge、LiteLoader、Fabric 及安裝模組的教學", - "url": "https://docs.hmcl.net/launcher/auto-installing.html" - }, - { - "title": "實例隔離", - "subtitle": "避免多個遊戲實例存檔和模組配置衝突的解決方案", - "url": "https://docs.hmcl.net/launcher/isolation.html" - } - ] - }, - { - "title": "模組包", - "items": [ - { - "title": "Authlib-Injector 伺服器設定指南", - "subtitle": "手動打包模組包後,初次打開啟動器時直接彈出對應的帳戶登入頁", - "url": "https://docs.hmcl.net/launcher/authlib-injector.html" - }, - { - "title": "伺服端自動更新模組包製作教學", - "subtitle": "伺服端自動更新模組包允許啟動器根據服主配置強制更新玩家遊戲用戶端", - "url": "https://docs.hmcl.net/modpack/serverpack.html" - } - ] - } -] diff --git a/index.json b/index.json deleted file mode 100644 index e7416c41..00000000 --- a/index.json +++ /dev/null @@ -1,67 +0,0 @@ -[ - { - "title": "启动器", - "items": [ - { - "title": "数据包制作指南", - "subtitle": "制作可以由 HMCL 导入的数据包", - "url": "https://docs.hmcl.net/launcher/datapack.html" - }, - { - "title": "光影", - "subtitle": "光影的安装方法,包括 OptiFine、Oculus 和 Iris Shaders", - "url": "https://docs.hmcl.net/launcher/shader.html" - }, - { - "title": "设置项详解", - "subtitle": "HMCL 各项设置的详细说明,包括全局游戏设置、外观、下载等", - "url": "https://docs.hmcl.net/launcher/set-item-details.html" - }, - { - "title": "离线模式下更换皮肤", - "subtitle": "使用本地皮肤文件、LittleSkin 或 Blessing Skin 设置离线皮肤", - "url": "https://docs.hmcl.net/launcher/offline-skin.html" - }, - { - "title": "自动安装与模组下载", - "subtitle": "安装 Forge、Fabric、LiteLoader、OptiFine 及模组的教程", - "url": "https://docs.hmcl.net/launcher/auto-installing.html" - }, - { - "title": "版本隔离", - "subtitle": "避免多个游戏版本的存档、模组和配置冲突", - "url": "https://docs.hmcl.net/launcher/isolation.html" - }, - { - "title": "JVM 选项与环境变量", - "subtitle": "配置 JVM 参数和环境变量的说明", - "url": "https://docs.hmcl.net/launcher/jvm-options-and-env.html" - } - ] - }, - { - "title": "整合包", - "items": [ - { - "title": "Authlib-Injector 服务器设置指南", - "subtitle": "配置默认的验证服务器", - "url": "https://docs.hmcl.net/launcher/authlib-injector.html" - }, - { - "title": "服务端自动更新整合包制作教程", - "subtitle": "创建可自动更新的服务器整合包", - "url": "https://docs.hmcl.net/modpack/serverpack.html" - }, - { - "title": "使用 HMCL 配置服务器客户端自动更新", - "subtitle": "使用 Nginx 搭建整合包更新服务", - "url": "https://docs.hmcl.net/modpack/serverpack3.html" - }, - { - "title": "模组包报错排查手册", - "subtitle": "排查和解决整合包相关问题", - "url": "https://docs.hmcl.net/modpack/error-handbook.html" - } - ] - } -] diff --git a/index.markdown b/index.markdown deleted file mode 100644 index c8687ec6..00000000 --- a/index.markdown +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: HMCL 新手导航 -note: 由 wifi-left 进行整理。 -hits: true -toc: true ---- - -## 注意 Notice - -The articles were written in Simplified Chinese. If you want to help translate them, please send a pull request to [GitHub: HMCL-dev/HMCL-docs](https://github.com/HMCL-dev/HMCL-docs/pulls). Or you can enable your translation tool to read. - -If you encounter a BUG, please send feedback in time to [GitHub: huanghongxun/HMCL/issues](https://github.com/HMCL-dev/HMCL/issues). - -You can also submit your suggestions here. - -如果您遇到 BUG,请及时在 [GitHub: huanghongxun/HMCL/issues](https://github.com/HMCL-dev/HMCL/issues) 发送反馈。 - -您也可以在这里提交您的建议。 - -{% comment %} -此处的目录从 `_data/navigation.yml` 中的 docs 条目渲染,请修改该文件以更新目录 -{% endcomment %} -{% for group in site.data.navigation.docs %} -## {{ group.title }} - -{% for item in group.children %} -{{ forloop.index }}. [{{ item.title }}]({{ item.url }}) -{%- if item.description %} - - {{ item.description }} -{% endif %} -{% endfor %} -{% endfor %} From 2a199b20b88e5f237eed0e5ffd2507224e1b8814 Mon Sep 17 00:00:00 2001 From: neveler <55753029+neveler@users.noreply.github.com> Date: Tue, 7 Oct 2025 23:21:05 +0800 Subject: [PATCH 2/8] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=9E=84=E5=BB=BA?= =?UTF-8?q?=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _build/config.en.yml | 16 ----- _build/config.zh-TW.yml | 16 ----- _build/config.zh.yml | 9 --- _build/setup.sh | 49 ------------- _config.yml | 8 +-- _includes/layouts/document/before.html | 27 ++++++- build/config.en.yml | 1 + build/config.zh-TW.yml | 1 + build/default.yml | 7 ++ build/setup.sh | 97 ++++++++++++++++++++++++++ 10 files changed, 132 insertions(+), 99 deletions(-) delete mode 100644 _build/config.en.yml delete mode 100644 _build/config.zh-TW.yml delete mode 100644 _build/config.zh.yml delete mode 100644 _build/setup.sh create mode 100644 build/config.en.yml create mode 100644 build/config.zh-TW.yml create mode 100644 build/default.yml create mode 100644 build/setup.sh diff --git a/_build/config.en.yml b/_build/config.en.yml deleted file mode 100644 index ddfe8e68..00000000 --- a/_build/config.en.yml +++ /dev/null @@ -1,16 +0,0 @@ -cache_dir: .jekyll-cache/en -include: - - _pages - - "*.en.md" - - "*.en.json" -exclude: - - assets/ - - scripts/ - - LICENSE - - "*.md" - - "*.json" -locale: en -title: HMCL Document -head_scripts: - - /assets/js/theme.en.js -build: true diff --git a/_build/config.zh-TW.yml b/_build/config.zh-TW.yml deleted file mode 100644 index 9ea625d2..00000000 --- a/_build/config.zh-TW.yml +++ /dev/null @@ -1,16 +0,0 @@ -cache_dir: .jekyll-cache/zh-TW -include: - - _pages - - "*.zh-TW.md" - - "*.zh-TW.json" -exclude: - - assets/ - - scripts/ - - LICENSE - - "*.md" - - "*.json" -locale: zh-TW -title: HMCL 文檔 -head_scripts: - - /assets/js/theme.zh-TW.js -build: true diff --git a/_build/config.zh.yml b/_build/config.zh.yml deleted file mode 100644 index 9c2d648d..00000000 --- a/_build/config.zh.yml +++ /dev/null @@ -1,9 +0,0 @@ -cache_dir: .jekyll-cache/zh -exclude: - - assets/ - - scripts/ - - README.md - - LICENSE - - "*.*.*" -locale: zh -build: true diff --git a/_build/setup.sh b/_build/setup.sh deleted file mode 100644 index b682a5e7..00000000 --- a/_build/setup.sh +++ /dev/null @@ -1,49 +0,0 @@ -shopt -s globstar - -exclude_target=("./_build" "./_data", "_data_bak" "./_site" "./_site_temp" "./_includes" "./_layouts") - -echo "cp -r _data _data_bak" -cp -r _data _data_bak - -bundle exec jekyll build --trace --verbose --destination _site --config _config.yml,"$1" - -for config in ./_build/config.*.yml; do - [ -f "$config" ] || continue - - language="${config#./_build/config.}" - language="${language%.yml}" - echo "build $language version" - - echo "rm -rf _data && cp -r _data_bak _data" - rm -rf _data && cp -r _data_bak _data - for data in ./_data/**/*."$language".*; do - [ -f "$data" ] || continue - dest="${data/.$language./.}" - echo "mv $data $dest" - mv "$data" "$dest" - done - - for target in ./_*; do - [ -f "$target" ] && continue - [[ " ${exclude_target[*]} " == *" $target "* ]] && continue - - find $target -type f -name "*.*" ! -name "*.*.*" | while read -r file; do - dir="${file%/*}" - ext="${file##*.}" - base="${file##*/}" - name="${base%%.*}" - language_file="$dir/$name.$language.$ext" - [ -f $language_file ] && continue - echo "cp $file $dir/$name.$language.$ext" - cp "$file" "$dir/$name.$language.$ext" - done - done - - bundle exec jekyll build --trace --verbose --destination _site_temp --config "_config.yml,_build/config.$language.yml,$1" - - rm -rf ./_site_temp/assets - rm -rf ./_site_temp/feed.xml - rm -rf ./_site_temp/robots.txt - rm -rf ./_site_temp/sitemap.xml - cp -r ./_site_temp/* ./_site/ -done diff --git a/_config.yml b/_config.yml index bdbecef5..2278adfe 100644 --- a/_config.yml +++ b/_config.yml @@ -8,7 +8,7 @@ # layouts_dir: _layouts # data_dir: _data # includes_dir: _includes -cache_dir: .jekyll-cache/default +cache_dir: .jekyll-cache/mixed sass: # sass_dir: _sass # minimal-mistakes @@ -43,7 +43,7 @@ collections: include: - _pages exclude: - - scripts/ + - build/ - README.md - LICENSE keep_files: [] @@ -335,7 +335,3 @@ head_scripts: - /assets/js/theme.js default_locale: zh -locales: - - zh - - zh-TW - - en diff --git a/_includes/layouts/document/before.html b/_includes/layouts/document/before.html index 4e422362..3420b282 100644 --- a/_includes/layouts/document/before.html +++ b/_includes/layouts/document/before.html @@ -1,13 +1,34 @@

    -{% for locale in site.locales %} +{% assign default_locale = site.default_locale | default: 'zh' %} +{% if site.locales %} +{% assign locales = default_locale | split: ' ' | concat: site.locales %} +{% for locale in locales %} {% assign language = site.data.common.layouts.document.language[locale] | default: locale %} -{% if site.build and locale == site.locale %} +{% if locale == site.locale %} {{ language }} {% else %} -{% if locale == site.default_locale %}{% assign locale_ext = '.html' %}{% else %}{% assign locale_ext = '.' | append: locale | append: '.html' %}{% endif %} +{% if locale == default_locale %}{% assign locale_ext = '.html' %}{% else %}{% assign locale_ext = '.' | append: locale | append: '.html' %}{% endif %} {{ language }} {% endif %} {% endfor %} +{% else %} +{% if page.collection %}{% assign item_list = site[page.collection] %}{% else %}{% assign item_list = site.pages %}{% endif %} +{% for item in item_list %} +{% assign item_path = item.path | split: '.' %} +{% if item_path.size > 1 and item_path.size < 4 %} +{% assign current_path = page.path | split: '.' %} +{% if current_path[0] == item_path[0] %} +{% if item_path.size == 2 %}{% assign locale = default_locale %}{% else %}{% assign locale = item_path[1] %}{% endif %} +{% assign language = site.data.common.layouts.document.language[locale] | default: locale %} +{% if item.path == page.path %} +{{ language }} +{% else %} +{{ language }} +{% endif %} +{% endif %} +{% endif %} +{% endfor %} +{% endif %} {% if jekyll.environment == 'production' and page.hits %} Hits {% endif %} diff --git a/build/config.en.yml b/build/config.en.yml new file mode 100644 index 00000000..a0321cb0 --- /dev/null +++ b/build/config.en.yml @@ -0,0 +1 @@ +title: HMCL Document diff --git a/build/config.zh-TW.yml b/build/config.zh-TW.yml new file mode 100644 index 00000000..79ccbb76 --- /dev/null +++ b/build/config.zh-TW.yml @@ -0,0 +1 @@ +title: HMCL 文檔 diff --git a/build/default.yml b/build/default.yml new file mode 100644 index 00000000..cb4b4ffa --- /dev/null +++ b/build/default.yml @@ -0,0 +1,7 @@ +cache_dir: .jekyll-cache/default +exclude: + - assets/ + - build/ + - README.md + - LICENSE + - "*.*.*" diff --git a/build/setup.sh b/build/setup.sh new file mode 100644 index 00000000..b3a605aa --- /dev/null +++ b/build/setup.sh @@ -0,0 +1,97 @@ +shopt -s globstar + +echo "locales:" > build/locales.yml +for config in build/config.*.yml; do + [ -f "$config" ] || continue + language="${config#build/config.}" + language="${language%.yml}" + echo " - $language" >> build/locales.yml +done + +jbuild() { + bundle exec jekyll build --trace --verbose "$@" +} + +jbuild_mixed() { + jbuild --destination build/mixed --config "$@" +} + +echo "=== build mixed version ===" +jbuild_mixed _config.yml,build/locales.yml,$1 + +jbuild_single() { + jbuild --destination build/single --config "$@" +} + +echo "=== build default version ===" +jbuild_single _config.yml,build/default.yml,build/locales.yml,$1 + +rm -rf build/single/assets +rm -rf build/single/feed.xml +rm -rf build/single/robots.txt +rm -rf build/single/sitemap.xml +cp -r build/single/* build/mixed/ + +cp -r _data build/data + +exclude_target=("_data" "_site" "_includes" "_layouts") + +for config in build/config.*.yml; do + [ -f "$config" ] || continue + + language="${config#build/config.}" + language="${language%.yml}" + + echo "=== build $language version ===" + for data in _data/**/*.$language.*; do + [ -f "$data" ] || continue + dest="${data/.$language./.}" + mv "$data" "$dest" + done + + echo "cache_dir: .jekyll-cache/$language" > build/single.yml + echo "include:" >> build/single.yml + echo " - _pages" >> build/single.yml + echo " - \"*.$language.*\"" >> build/single.yml + echo "exclude:" >> build/single.yml + echo " - assets/" >> build/single.yml + echo " - build/" >> build/single.yml + echo " - LICENSE" >> build/single.yml + echo " - README.md" >> build/single.yml + + for target in _*; do + [ -f "$target" ] && continue + [[ " ${exclude_target[*]} " == *" $target "* ]] && continue + + echo " - $target/" >> build/single.yml + + find $target -type f -name "*.*" ! -name "*.*.*" | while read -r file; do + dir="${file%/*}" + ext="${file##*.}" + base="${file##*/}" + name="${base%%.*}" + dest="$dir/$name.$language.$ext" + [ -f $dest ] && continue + cp "$file" "$dest" + done + done + + echo "locale: $language" >> build/single.yml + echo "head_scripts:" >> build/single.yml + echo " - /assets/js/theme.$language.js" >> build/single.yml + + jbuild_single _config.yml,build/config.$language.yml,build/single.yml,build/locales.yml,$1 + + rm -rf build/single/assets + rm -rf build/single/feed.xml + rm -rf build/single/robots.txt + rm -rf build/single/sitemap.xml + cp -r build/single/* build/mixed/ + + rm -rf _data + cp -r build/data _data +done + +mkdir -p _site +rm -rf _site/* +cp -r build/mixed/* _site/ From 9dde2b8b9085cc783dd6e8191d4edd12184587e6 Mon Sep 17 00:00:00 2001 From: neveler <55753029+neveler@users.noreply.github.com> Date: Tue, 7 Oct 2025 23:47:30 +0800 Subject: [PATCH 3/8] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20README?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 34 ++++++++++++++++++++++++++-------- 1 file changed, 26 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 85dae3d1..c99ad609 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,7 @@ # HMCL-docs + +[![Build Status](https://drone.hmcl.net/api/badges/huanghongxun/HMCL-docs/status.svg)](https://drone.hmcl.net/huanghongxun/HMCL-docs) + Hello Minecraft! Launcher 帮助文档仓库 您可以通过对本仓库提交 Pull Request 的方式来为 HMCL 帮助文档贡献自己的力量! @@ -6,7 +9,12 @@ Hello Minecraft! Launcher 帮助文档仓库 ## 相关链接 -[Hello Minecraft! Launcher 帮助文档仓库网站](https://docs.hmcl.net) +- [官方网站](https://hmcl.huangyuhui.net) +- [文档网站](https://docs.hmcl.net) +- [更新日志](https://docs.hmcl.net/changelog.html) +- [贡献指南](https://docs.hmcl.net/contribution.html) +- [项目仓库](https://github.com/HMCL-dev/HMCL) +- [文档仓库](https://github.com/HMCL-dev/HMCL-docs) ## Markdown @@ -17,11 +25,13 @@ Hello Minecraft! Launcher 帮助文档仓库 请注意,你在使用 Typora 时,请在 文件->偏好设置->图像 中,将 `插入图片时...` 选项修改为复制到指定路径为 `/assets/img/docs/${filename}` 目录 ## 贡献 + 本仓库组织方式为一篇文章放在一个目录中。如果你要提交 PR,请不要将 md 文件直接放在根目录下。 每篇文章结构如下: + ``` -_/

    .md +_/
    .md assets * img @@ -32,15 +42,23 @@ assets * ... ``` -其中,`` 表示分类,如 `modpack` 表示整合包,`
    ` 表示你的文章的英文名(尖括号表示占位符,请替换为文章名称,不要直接提交 '`
    `'),请仅使用英文字母、数字、中划线、下划线字符,不要使用空格、中文字符。请确保 md 文件名和文件夹名一致。具体可以参考已有文章目录格式。 +其中,`` 表示集合,如 `modpack` 表示整合包,`
    ` 表示你的文章的英文唯一标识(尖括号表示占位符,不要直接提交 `
    `,请确保其唯一且简短)请仅使用英文字母、数字、中划线、下划线字符作为唯一标识,不要使用空格、英文句点、中文字符。请确保资源文件夹名和 md 文件名一致,具体可以参考已有文章目录格式。 + +每篇文章由 Markdown 编写的 `
    .md` 文件及附带图片组成(文章的图片请放置到 `/assets/img/docs/
    ` 目录中)在 md 文件中请确保包含 [Front Matter](https://jekyllrb.com/docs/front-matter/) 其中应提供文章的一些元数据(如标题 `title` 更新日期 `date` 等)在 _config.yml 的 defaults 中配置有默认值的可以不指定。 -每篇文章由 Markdown 编写的 `
    .md` 文件及附带图片组成。文章的图片请放置到 `/assets/img/docs/
    ` 目录中。 +### 添加文章 -### 添加新文章 +添加文章时,请确保将内容按照上述格式要求存放,你也可以参考已经写好的文章格式。切记不要在一个添加新文章的 PR 里修改其他文章的内容! -添加新文章时,请确保将内容按照上述格式要求存放。你也可以参考已经写好的文章格式。 +### 修改文章 -切记不要在一个添加新文章的 PR 里修改其他文章的内容。 +修改文章时,请确保你的 PR 仅修改一个文章内容,并在该文章里署名。 +你可以在文章的 [Front Matter](https://jekyllrb.com/docs/front-matter/) 中通过如下方式进行署名,其中 `author` 表示文章的创建者,`contributors` 是一个数组表示文章的贡献者。 -在添加或修改文章后,请更新索引文件 `index.json`,以便 HMCL 展示你新添加的文件。 +```yaml +--- +author: example +contributors: [foo, bar] +--- +``` From f6f03b24c0f58726f5a6215fcbccc1abec8a615b Mon Sep 17 00:00:00 2001 From: neveler <55753029+neveler@users.noreply.github.com> Date: Wed, 8 Oct 2025 13:17:29 +0800 Subject: [PATCH 4/8] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=9E=84=E5=BB=BA?= =?UTF-8?q?=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .drone.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.drone.yml b/.drone.yml index 8def8a47..c5e0b434 100644 --- a/.drone.yml +++ b/.drone.yml @@ -14,7 +14,7 @@ steps: commands: - bundle config mirror.https://rubygems.org https://mirrors.cloud.tencent.com/rubygems - bundle install --verbose - - bash _build/setup.sh + - bash build/setup.sh volumes: - name: dist path: /drone/src/_site From 2b6e86d26009d35e735c6ce8092ef53f17b0a531 Mon Sep 17 00:00:00 2001 From: neveler <55753029+neveler@users.noreply.github.com> Date: Wed, 8 Oct 2025 13:28:47 +0800 Subject: [PATCH 5/8] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=A3=80=E6=B5=8B?= =?UTF-8?q?=E5=A4=9A=E8=AF=AD=E8=A8=80=E7=89=88=E6=9C=AC=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _includes/layouts/document/before.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_includes/layouts/document/before.html b/_includes/layouts/document/before.html index 3420b282..2f8cf769 100644 --- a/_includes/layouts/document/before.html +++ b/_includes/layouts/document/before.html @@ -17,7 +17,7 @@ {% assign item_path = item.path | split: '.' %} {% if item_path.size > 1 and item_path.size < 4 %} {% assign current_path = page.path | split: '.' %} -{% if current_path[0] == item_path[0] %} +{% if current_path[0] == item_path[0] and current_path[-1] == item_path[-1] %} {% if item_path.size == 2 %}{% assign locale = default_locale %}{% else %}{% assign locale = item_path[1] %}{% endif %} {% assign language = site.data.common.layouts.document.language[locale] | default: locale %} {% if item.path == page.path %} From 3881281059ff08fbd113e8036a951a3ab086b625 Mon Sep 17 00:00:00 2001 From: neveler <55753029+neveler@users.noreply.github.com> Date: Wed, 8 Oct 2025 13:30:00 +0800 Subject: [PATCH 6/8] =?UTF-8?q?=E5=90=AF=E7=94=A8=20strict=5Ffront=5Fmatte?= =?UTF-8?q?r?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_config.yml b/_config.yml index 2278adfe..6c731cdd 100644 --- a/_config.yml +++ b/_config.yml @@ -49,7 +49,7 @@ exclude: keep_files: [] encoding: "utf-8" # markdown_ext: "markdown,mkdown,mkdn,mkd,md" -strict_front_matter: false +strict_front_matter: true # Filtering Content # show_drafts: null From 97eee5723f8a78fa32ff01e825f647131c6210c6 Mon Sep 17 00:00:00 2001 From: neveler <55753029+neveler@users.noreply.github.com> Date: Thu, 9 Oct 2025 11:02:45 +0800 Subject: [PATCH 7/8] =?UTF-8?q?=E7=A7=BB=E9=99=A4=20permalink?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _pages/qr-login.html | 1 - 1 file changed, 1 deletion(-) diff --git a/_pages/qr-login.html b/_pages/qr-login.html index fa272e6f..19c70d8d 100644 --- a/_pages/qr-login.html +++ b/_pages/qr-login.html @@ -1,5 +1,4 @@ --- -permalink: /qr-login.html layout: default --- From 3ab6d85cc5c6b0bcb0e14f18a3ab0d110f80153b Mon Sep 17 00:00:00 2001 From: neveler <55753029+neveler@users.noreply.github.com> Date: Thu, 9 Oct 2025 15:00:59 +0800 Subject: [PATCH 8/8] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=9E=84=E5=BB=BA?= =?UTF-8?q?=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build/setup.sh | 29 ++++++++--------------------- 1 file changed, 8 insertions(+), 21 deletions(-) diff --git a/build/setup.sh b/build/setup.sh index b3a605aa..a03fd915 100644 --- a/build/setup.sh +++ b/build/setup.sh @@ -13,25 +13,22 @@ jbuild() { } jbuild_mixed() { - jbuild --destination build/mixed --config "$@" + jbuild --destination _site --config "$@" } -echo "=== build mixed version ===" -jbuild_mixed _config.yml,build/locales.yml,$1 - jbuild_single() { - jbuild --destination build/single --config "$@" + jbuild --destination _site_single --config "$@" + rm -rf build/single/{assets,feed.xml,robots.txt,sitemap.xml} + cp -r _site_single/* _site/ } +echo "=== build mixed version ===" +jbuild_mixed _config.yml,build/locales.yml,$1 + echo "=== build default version ===" jbuild_single _config.yml,build/default.yml,build/locales.yml,$1 -rm -rf build/single/assets -rm -rf build/single/feed.xml -rm -rf build/single/robots.txt -rm -rf build/single/sitemap.xml -cp -r build/single/* build/mixed/ - +rm -rf build/data cp -r _data build/data exclude_target=("_data" "_site" "_includes" "_layouts") @@ -82,16 +79,6 @@ for config in build/config.*.yml; do jbuild_single _config.yml,build/config.$language.yml,build/single.yml,build/locales.yml,$1 - rm -rf build/single/assets - rm -rf build/single/feed.xml - rm -rf build/single/robots.txt - rm -rf build/single/sitemap.xml - cp -r build/single/* build/mixed/ - rm -rf _data cp -r build/data _data done - -mkdir -p _site -rm -rf _site/* -cp -r build/mixed/* _site/