Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
760f649
Good Ending 翻译更新 (#5737)
ChuijkYahus Jan 5, 2026
915c74c
CI: 修正Uploader生成参数 (#5746)
dovisutu Jan 5, 2026
374e62b
Update packer.yml
dovisutu Jan 5, 2026
bcdaefd
CI Feat: 添加一个整合tag (#5745)
SlimeSB Jan 7, 2026
bc0a48c
Mystic's Biomes 翻译更新 (#4398)
ChuijkYahus Jan 7, 2026
ea75c83
Set Latest for autobuild release
dovisutu Jan 7, 2026
9f103b2
Force autobuild update after snapshot update
dovisutu Jan 7, 2026
3dc5121
深暗之园Undergarden 翻译修正 (#5614)
sunyuquan96-netizen Jan 7, 2026
9dc48b7
深暗之园乐事的汉化补充 (#5615)
sunyuquan96-netizen Jan 7, 2026
acb0ea9
Chalk 翻译修复与更新 (#5725)
ChuijkYahus Jan 7, 2026
d60f037
Immersive Posts 翻译更新 (#5731)
ChuijkYahus Jan 7, 2026
4e8d536
Embers Rekindled 翻译更新 (#5735)
ChuijkYahus Jan 7, 2026
0e34e60
AE2 Network Analyzer 翻译更新 (#5751)
ChuijkYahus Jan 7, 2026
a2902ca
Ars Hex Unity 翻译更新 (#5750)
ChuijkYahus Jan 7, 2026
d503bba
Ars Nouveau 翻译更新 (#5736)
ChuijkYahus Jan 7, 2026
08d065d
Ars Technica 翻译更新 (#5738)
ChuijkYahus Jan 7, 2026
a952468
SpacePloitation 翻译更新 (#5739)
ChuijkYahus Jan 7, 2026
333251c
Neeve's AE2: Extended Life Additions 翻译提交 (#5740)
ZHAY10086 Jan 7, 2026
45d4695
Ender's Delight 翻译更新 (#5742)
Huantanhua Jan 7, 2026
126c9fe
Inventory Bogo Sorter 翻译更新 (#5741)
ZHAY10086 Jan 7, 2026
8439759
AE Infinity Booster 翻译更新 (#5749)
ChuijkYahus Jan 7, 2026
33ca31f
Caduceus 翻译更新 (#5748)
ChuijkYahus Jan 7, 2026
6f0eda4
Create: Sound of Steam 与 Replication 翻译移除 (#5709)
ChuijkYahus Jan 10, 2026
e19de50
The Undergarden 翻译更新 (#5726)
ChuijkYahus Jan 10, 2026
dad707e
cobblecuisine 翻译提交 (#5747)
d526923259-del Jan 10, 2026
321584a
Player Shells 翻译提交 (#5732)
0HanMoyun0 Jan 12, 2026
e3c8661
Enderscape 翻译提交 (#5753)
FluorescentLava Jan 12, 2026
e82a696
Accessible Step 翻译提交 (#5756)
FluorescentLava Jan 12, 2026
beedfe4
Oritech Things 翻译更新 (#5757)
ChuijkYahus Jan 12, 2026
a302b03
Bosses'Rise 翻译提交 (#5754)
FluorescentLava Jan 12, 2026
5264167
Xaero's World Map 翻译更新 (#5755)
FluorescentLava Jan 12, 2026
9b3e30e
fix: autobuild 描述中时区错误问题 (#5752)
SlimeSB Jan 12, 2026
9577004
Slate Works 翻译更新 (#5766)
ChuijkYahus Jan 24, 2026
70efd85
Voxy 翻译提交 (#5765)
WingChunWong Jan 25, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
240 changes: 42 additions & 198 deletions .github/workflows/packer.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ on:
- 'projects/**'



jobs:
build-packer:
name: Build / Cache Packer
Expand All @@ -36,81 +35,43 @@ jobs:
# 构造程序
- name: Build Packer if not cached
if: steps.cache-packer.outputs.cache-hit != 'true'
run: dotnet publish .\src\Packer\Packer.csproj -o ./ -r win-x64 -p:PublishSingleFile=true

# build-uploader:
# if: github.repository == 'CFPAOrg/Minecraft-Mod-Language-Package'
# name: Build / Cache Uploader
# runs-on: windows-latest
# steps:
# - uses: actions/checkout@v4
# with:
# fetch-depth: 1
# sparse-checkout: src

# # 缓存程序。一方面,在不同job之间需要这么做;另一方面,大约可以改善运行时间?
# # actions/cache的逻辑会在job末尾缓存打包程序;如果不命中,就自行构造程序。
# - name: Cache Uploader
# id: cache-uploader
# uses: actions/cache@v4
# with:
# key: ${{ runner.os }}-Uploader-${{ hashFiles('src/Uploader/**') }}
# path: Uploader.exe
# lookup-only: true
run: dotnet publish .\src\Packer\Packer.csproj -o ./ -r win-x64

# # 构造程序
# - name: Build Uploader if not cached
# if: steps.cache-uploader.outputs.cache-hit != 'true'
# run: dotnet publish .\src\Uploader\Uploader.csproj -o ./ -r win-x64 -p:PublishSingeFile=true

initialize-release:
name: Initialize Release
build-uploader:
if: github.repository == 'CFPAOrg/Minecraft-Mod-Language-Package'
name: Build / Cache Uploader
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 1
sparse-checkout: src

- name: Create timestamp
id: create_timestamp
run: echo "timestamp=$(date '+%Y%m%d%H%M%s')" >> $GITHUB_OUTPUT
shell: bash

# Create the release: https://github.com/actions/create-release
- name: Create release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# 缓存程序。一方面,在不同job之间需要这么做;另一方面,大约可以改善运行时间?
# actions/cache的逻辑会在job末尾缓存打包程序;如果不命中,就自行构造程序。
- name: Cache Uploader
id: cache-uploader
uses: actions/cache@v4
with:
tag_name: Snapshot-${{ steps.create_timestamp.outputs.timestamp }}
release_name: 汉化资源包-Snapshot-${{ steps.create_timestamp.outputs.timestamp }}
draft: false
prerelease: false
outputs:
upload-url: ${{ steps.create_release.outputs.upload_url }}
tag-name: Snapshot-${{ steps.create_timestamp.outputs.timestamp }}
key: ${{ runner.os }}-Uploader-${{ hashFiles('src/Uploader/**') }}
path: Uploader.exe
lookup-only: true

# 构造程序
- name: Build Uploader if not cached
if: steps.cache-uploader.outputs.cache-hit != 'true'
run: dotnet publish .\src\Uploader\Uploader.csproj -o ./ -r win-x64

pack:
name: Pack Resources and Upload Artifacts/Releases
needs: [ build-packer, initialize-release ] # 显然,需要存在打包程序,才能打包。
needs: [ build-packer ]
strategy:
fail-fast: false # 把正常的文件先打包了,避免一处错误阻塞整个仓库。
fail-fast: false
matrix:
# 版本列表。将对这里的每个版本判断,按需打包。
# 如需添加新版本,在这里添加即可。
version: [ "1.12.2", "1.16", "1.16-fabric", "1.18", "1.18-fabric", "1.19", "1.20", "1.20-fabric", "1.21", "1.21-fabric" ]
runs-on: windows-latest
outputs:
# 为每个版本创建独立的输出变量
updated_versions_1_12_2: ${{ steps.collect-updated.outputs.version_1_12_2 }}
updated_versions_1_16: ${{ steps.collect-updated.outputs.version_1_16 }}
updated_versions_1_16_fabric: ${{ steps.collect-updated.outputs.version_1_16_fabric }}
updated_versions_1_18: ${{ steps.collect-updated.outputs.version_1_18 }}
updated_versions_1_18_fabric: ${{ steps.collect-updated.outputs.version_1_18_fabric }}
updated_versions_1_19: ${{ steps.collect-updated.outputs.version_1_19 }}
updated_versions_1_20: ${{ steps.collect-updated.outputs.version_1_20 }}
updated_versions_1_20_fabric: ${{ steps.collect-updated.outputs.version_1_20_fabric }}
updated_versions_1_21: ${{ steps.collect-updated.outputs.version_1_21 }}
updated_versions_1_21_fabric: ${{ steps.collect-updated.outputs.version_1_21_fabric }}
steps:
- uses: actions/checkout@v2
with:
Expand All @@ -121,11 +82,11 @@ jobs:
id: cache-restore
uses: actions/cache/restore@v4
with:
key: ${{ runner.os }}-Packer-${{ hashFiles('source/Packer/**') }}
key: ${{ runner.os }}-Packer-${{ hashFiles('src/Packer/**') }}
path: |
Packer.exe
git2-*.dll
fail-on-cache-miss: true # 前一步理应构造过的。如果不命中,肯定有问题,不如直接挂掉。
fail-on-cache-miss: true # 应由前序保证

- name: Check changed path on ${{ matrix.version }}
uses: MarceloPrado/has-changed-path@v1.0
Expand Down Expand Up @@ -153,148 +114,27 @@ jobs:
${{ matrix.version }}.md5
if: steps.check-changes.outputs.changed == 'true' || github.event_name == 'workflow_dispatch'

- name: Collect updated versions
id: collect-updated
run: |
if [ "${{ steps.check-changes.outputs.changed }}" == "true" ] || [ "${{ github.event_name }}" == "workflow_dispatch" ]; then
# Replace all periods and hyphens with underscores
# 将.转换为_,适配变量名
output_key=$(echo "${{ matrix.version }}" | sed 's/[\.-]/_/g')
echo "version_$output_key=${{ matrix.version }}" >> $GITHUB_OUTPUT
fi
shell: bash
continue-on-error: true

upload-release-assets:
name: Upload Release Assets
needs: [ pack, initialize-release ]
runs-on: windows-latest
steps:
- name: Download all Artifacts
uses: actions/download-artifact@v4
with:
path: artifacts/

- name: Upload Release Assets
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
# Get the upload URL from the previous job
$upload_url = "${{ needs.initialize-release.outputs.upload-url }}"

# Clean up the URL by removing the template part {?name,label}
$clean_upload_url = $upload_url.Split('{')[0]

# Iterate through downloaded artifact directories
Get-ChildItem -Path "artifacts" -Directory | ForEach-Object {
$artifact_dir_name = $_.Name
$version_tag = ($artifact_dir_name -split '-Modpack-')[1]

# Generate the correct asset names
if ($version_tag -eq '1.12.2') {
$zip_asset_name = "Minecraft-Mod-Language-Modpack.zip"
} else {
$formatted_version = $version_tag -replace '\.', '-'
$formatted_version = $formatted_version -replace 'fabric', 'Fabric'
$zip_asset_name = "Minecraft-Mod-Language-Modpack-$formatted_version.zip"
}

# Build file paths using sub-expression operator
$zip_path = "$(Join-Path -Path $_.FullName -ChildPath ($artifact_dir_name + '.zip'))"
$md5_path = "$(Join-Path -Path $_.FullName -ChildPath ($version_tag + '.md5'))"

# Build the full URL using the format operator -f
$zip_upload_url = "{0}?name={1}" -f $clean_upload_url, $zip_asset_name
$md5_upload_url = "{0}?name={1}" -f $clean_upload_url, ($version_tag + ".md5")

# Upload ZIP file
echo "Uploading ZIP: $zip_path as $zip_asset_name"
curl.exe -X POST `
-H "Authorization: token $env:GITHUB_TOKEN" `
-H "Content-Type: application/zip" `
--data-binary "@$zip_path" `
$zip_upload_url

# Upload MD5 file
echo "Uploading MD5: $md5_path as $version_tag.md5"
$md5_content = Get-Content -Path "$md5_path"
curl.exe -X POST `
-H "Authorization: token $env:GITHUB_TOKEN" `
-H "Content-Type: text/plain" `
--data-raw "$md5_content" `
$md5_upload_url
}
shell: pwsh

update-index:
name: Update Version Index (Optional)
needs: [pack, initialize-release]
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v4
with:
fetch-depth: 1

- name: Set up index branch
run: |
git fetch origin index
git checkout index || git checkout -b index

- name: Download existing index.json
run: |
if [ ! -f version-index.json ]; then
echo "{}" > version-index.json
fi

- name: Update index.json
env:
RELEASE_TAG: ${{ needs.initialize-release.outputs.tag-name }}
PACK_OUTPUTS: ${{ toJSON(needs.pack.outputs) }}
run: |
python3 - <<EOF
import json
import os

index_file = "version-index.json"
with open(index_file, "r") as f:
index = json.load(f)

release_tag = os.environ.get("RELEASE_TAG", "")
pack_outputs = json.loads(os.environ.get("PACK_OUTPUTS", "{}"))

# 遍历 pack Job 的所有输出
for key, version in pack_outputs.items():
# 只有当值不为空时,才更新索引
if version:
index[version] = release_tag

with open(index_file, "w") as f:
json.dump(index, f, indent=2)
EOF

- name: Commit and Push index.json
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git add version-index.json
git commit -m "Update version index for $RELEASE_TAG" || echo "No changes to commit"
git push

upload:
concurrency:
group: packer-upload
cancel-in-progress: false
if: github.repository == 'CFPAOrg/Minecraft-Mod-Language-Package'
name: Upload Resource Packs to Remote Server
needs: [ pack ] # 显然,需要打包完成,并且存在上传程序,才可以上传给分发服务器
name: Upload Resource Packs to Various places
needs: [ pack, build-uploader ]
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v4 # 计算 cache key 需要
with:
fetch-depth: 1
sparse-checkout: src

# 构造程序
- name: Build Uploader
run: dotnet publish .\src\Uploader\Uploader.csproj -o ./ -r win-x64 -p:PublishSingeFile=true
- name: Restore Uploader
id: cache-restore
uses: actions/cache/restore@v4
with:
key: ${{ runner.os }}-Uploader-${{ hashFiles('src/Uploader/**') }}
path: |
Uploader.exe
fail-on-cache-miss: true # 应由前序保证

# 还原artifact(资源包)
- name: Restore Artifacts
Expand All @@ -309,3 +149,7 @@ jobs:

- name: Run Uploader
run: .\Uploader --host="${{ secrets.SSH_IP }}" --name="${{ secrets.SSH_USER }}" --password="${{ secrets.SSH_PWD }}"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SHA: ${{ github.sha }}
REPO_ID: ${{ github.repository_id }}
2 changes: 1 addition & 1 deletion .github/workflows/pr-packer.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ jobs:
# 构造程序
- name: Build Packer if not cached
if: steps.cache-packer.outputs.cache-hit != 'true'
run: dotnet publish .\src\Packer\Packer.csproj -o ./ -r win-x64 -p:PublishSingleFile=true
run: dotnet publish .\src\Packer\Packer.csproj -o ./ -r win-x64


pack:
Expand Down
1 change: 1 addition & 0 deletions config/packer/1.20.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
"alexscaves",
"hexcasting",
"biomancy",
"create-sound-of-steam",
"occultism"
]
},
Expand Down
5 changes: 4 additions & 1 deletion config/packer/1.21.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,10 @@
"zh_cn"
],
"exclusionMods": [],
"exclusionNamespaces": []
"exclusionNamespaces": [
"create-sound-of-steam",
"replication"
]
},
"floating": {
"inclusionDomains": [
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,14 @@
key.categories.bogosorter=Inventory Bogo Sorter
key.sort_config=Open Sort Config
key.sort=Sort Inventory
bogosort.key.categories=Inventory Bogo Sorter
bogosort.key.sort_config=Open Sort Config
bogosort.key.sort=Sort Inventory
bogosort.key.lock_slot=Lock player slot in GUI

bogosort.key.move_all=Move all
bogosort.key.move_all_same=Move all similar
bogosort.key.move_single=Move single
bogosort.key.move_single_empty=Move Single to empty
bogosort.key.throw_all_same=Throw all similar
bogosort.key.throw_all=Throw all

bogosort.gui.title=Sort Config
bogosort.gui.tab.general.name=General
Expand All @@ -12,13 +20,29 @@ bogosort.gui.configured_sort_rules=Configured Sort-Rules
bogosort.gui.enable_refill=Enable auto hotbar refill
bogosort.gui.refill_comment=Quark is installed. If this option is disabled, theirs might still be enabled. You can find the config at 'Management' -> 'Automatic Tool Restock'.
bogosort.gui.refill_threshold=Auto refill damage threshold
bogosort.gui.refill_threshold.tooltip=Tools with durability of this value or below in your hand will be replaced with a similar tool from your inventory if one can be found. Set to 0 to disable this feature.
bogosort.gui.ascending=Ascending
bogosort.gui.descending=Descending
bogosort.gui.hotbar_scrolling=Enable hotbar column scrolling
bogosort.gui.hotbar_scrolling.tooltip=Scroll though inventory column by holding ALT
bogosort.gui.enabled=Enabled
bogosort.gui.button.enabled=Enable sort and config buttons in GUI's
bogosort.gui.button.color=Background color of sort buttons
bogosort.gui.hotbar_sorting.enabled=Enable sorting of player hotbar slots
bogosort.gui.slot_lock.title=Slot Locking
bogosort.gui.slot_lock.desc=Player slots can be locked to prevent any interaction by player with them. This includes sorting. Slots can be locked by hovering over a slot in any GUI and pressing %s (configurable).
bogosort.gui.slot_lock.icon_scale=Icon scale
bogosort.gui.slot_lock.icon_color=Icon color
bogosort.gui.slot_lock.icon_align=Icon alignment
bogosort.gui.slot_lock.icon_preview=Preview
bogosort.gui.slot_lock.reset_style=Reset style
bogosort.gui.slot_lock.unlock_all=Unlock all slots
bogosort.gui.slot_lock.only_block_sort=Only block sorting
bogosort.gui.slot_lock.only_block_sort.desc=If this is enabled, locked slots can be interacted with as if they are not locked, but sorting will still ignore locked slots.
bogosort.gui.corner.tl=Top left
bogosort.gui.corner.tr=Top right
bogosort.gui.corner.bl=Bottom left
bogosort.gui.corner.br=Bottom right

bogosort.command.config_relaod.success=Reloaded sorting config

Expand Down
Loading