From 9288ecf7d258a62a7bed971a9a2e14bdfa8b411d Mon Sep 17 00:00:00 2001 From: omo50 <144749186+omo50@users.noreply.github.com> Date: Sun, 19 Apr 2026 16:48:52 -0600 Subject: [PATCH 01/11] fix(ci): linters --- src/actions/somnus/core/src/bin/json-linter.rs | 2 +- src/actions/somnus/core/src/bin/toml-linter.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/actions/somnus/core/src/bin/json-linter.rs b/src/actions/somnus/core/src/bin/json-linter.rs index 52f341fdc..b5f990bd9 100644 --- a/src/actions/somnus/core/src/bin/json-linter.rs +++ b/src/actions/somnus/core/src/bin/json-linter.rs @@ -1,4 +1,4 @@ -use somnus_core::lint_changed_files; +use somnus_core::linter::lint_changed_files; const WATCHED_PREFIXES: &[&str] = &["modpacks/", "datapacks/"]; const WATCHED_EXTS: &[&str] = &[".json", ".mcmeta"]; diff --git a/src/actions/somnus/core/src/bin/toml-linter.rs b/src/actions/somnus/core/src/bin/toml-linter.rs index be54403cc..035d25d9a 100644 --- a/src/actions/somnus/core/src/bin/toml-linter.rs +++ b/src/actions/somnus/core/src/bin/toml-linter.rs @@ -1,4 +1,4 @@ -use somnus_core::lint_changed_files; +use somnus_core::linter::lint_changed_files; const WATCHED_PREFIXES: &[&str] = &["modpacks/", "datapacks/"]; From ccf3f0ddcd91bc20c3ef2e6c48199098dfda388d Mon Sep 17 00:00:00 2001 From: omo50 <144749186+omo50@users.noreply.github.com> Date: Sun, 19 Apr 2026 17:09:26 -0600 Subject: [PATCH 02/11] feat(ci): minify json for build --- src/actions/builder/Cargo.toml | 4 ++ src/actions/builder/minify-json.rs | 84 ++++++++++++++++++++++++++++++ 2 files changed, 88 insertions(+) create mode 100644 src/actions/builder/minify-json.rs diff --git a/src/actions/builder/Cargo.toml b/src/actions/builder/Cargo.toml index b4ca45678..7e8c51690 100644 --- a/src/actions/builder/Cargo.toml +++ b/src/actions/builder/Cargo.toml @@ -13,3 +13,7 @@ zip = "2.2" [[bin]] name = "builder" path = "builder.rs" + +[[bin]] +name = "minify-json" +path = "minify-json.rs" \ No newline at end of file diff --git a/src/actions/builder/minify-json.rs b/src/actions/builder/minify-json.rs new file mode 100644 index 000000000..7f3d7b57d --- /dev/null +++ b/src/actions/builder/minify-json.rs @@ -0,0 +1,84 @@ +use anyhow::{anyhow, Context, Result}; +use std::{ + env, + fs, + path::Path, + sync::atomic::{AtomicU64, Ordering}, +}; +use walkdir::WalkDir; + +fn main() -> Result<()> { + let args: Vec = env::args().collect(); + let root = args + .get(1) + .ok_or_else(|| anyhow!("usage: minify-json "))?; + + let root_path = Path::new(root); + if !root_path.is_dir() { + return Err(anyhow!("not a directory: {root}")); + } + + let bytes_before = AtomicU64::new(0); + let bytes_after = AtomicU64::new(0); + let mut processed = 0usize; + let mut skipped = 0usize; + + for entry in WalkDir::new(root_path) { + let entry = entry.context("walkdir error")?; + let path = entry.path(); + if !path.is_file() { + continue; + } + + let ext = path.extension().and_then(|s| s.to_str()).unwrap_or(""); + if ext != "json" && ext != "mcmeta" { + continue; + } + + match minify_file(path) { + Ok((before, after)) => { + bytes_before.fetch_add(before, Ordering::Relaxed); + bytes_after.fetch_add(after, Ordering::Relaxed); + processed += 1; + } + Err(e) => { + eprintln!("warning: skipped {}: {e}", path.display()); + skipped += 1; + } + } + } + + let before = bytes_before.load(Ordering::Relaxed); + let after = bytes_after.load(Ordering::Relaxed); + let saved = before.saturating_sub(after); + let pct = if before > 0 { + (saved as f64 / before as f64) * 100.0 + } else { + 0.0 + }; + + println!( + "minified {processed} file(s), skipped {skipped}, saved {saved} bytes ({pct:.1}%)" + ); + Ok(()) +} + +fn minify_file(path: &Path) -> Result<(u64, u64)> { + let content = fs::read_to_string(path) + .with_context(|| format!("read failed: {}", path.display()))?; + let before = content.len() as u64; + + let value: serde_json::Value = serde_json::from_str(&content) + .with_context(|| format!("parse failed: {}", path.display()))?; + + let minified = serde_json::to_string(&value) + .with_context(|| format!("serialize failed: {}", path.display()))?; + let after = minified.len() as u64; + + if after < before { + fs::write(path, minified) + .with_context(|| format!("write failed: {}", path.display()))?; + } + + Ok((before, after)) +} From 020769a1889257be0cf8dadd8817b329099d3047 Mon Sep 17 00:00:00 2001 From: omo50 <144749186+omo50@users.noreply.github.com> Date: Sun, 19 Apr 2026 17:22:19 -0600 Subject: [PATCH 03/11] feat(ci): minify json to both build and pub --- .forgejo/workflows/build.yml | 71 +++++++++++++++++++++++++++++-- .forgejo/workflows/publish.yml | 76 +++++++++++++++++++++++++++++++++- 2 files changed, 141 insertions(+), 6 deletions(-) diff --git a/.forgejo/workflows/build.yml b/.forgejo/workflows/build.yml index 041f67c97..61665b823 100644 --- a/.forgejo/workflows/build.yml +++ b/.forgejo/workflows/build.yml @@ -35,12 +35,12 @@ jobs: SHORT_SHA=$(git rev-parse --short HEAD) echo "short_sha=$SHORT_SHA" >> $GITHUB_OUTPUT - - name: Cache Builder Binary + - name: Cache Builder Binaries id: cache-builder uses: actions/cache@v4 with: path: ./builder-bin - key: builder-v1-${{ runner.os }}-${{ hashFiles('src/actions/builder/**/*.rs', 'src/actions/builder/Cargo.toml', 'src/actions/builder/Cargo.lock') }} + key: builder-v2-${{ runner.os }}-${{ hashFiles('src/actions/builder/**/*.rs', 'src/actions/builder/Cargo.toml', 'src/actions/builder/Cargo.lock') }} - name: Install Rust if: steps.cache-builder.outputs.cache-hit != 'true' @@ -52,12 +52,15 @@ jobs: with: workspaces: "src/actions/builder -> target" - - name: Build Builder + - name: Build Binaries if: steps.cache-builder.outputs.cache-hit != 'true' run: | - cargo build --release --manifest-path src/actions/builder/Cargo.toml --bin builder + cargo build --release \ + --manifest-path src/actions/builder/Cargo.toml \ + --bin builder --bin minify-json mkdir -p ./builder-bin cp src/actions/builder/target/release/builder ./builder-bin/builder + cp src/actions/builder/target/release/minify-json ./builder-bin/minify-json - name: Cache Go Binaries id: cache-go @@ -88,11 +91,71 @@ jobs: restore-keys: | packwiz-cache-${{ runner.os }}- + - name: Minify JSON configs + run: | + set -eu + chmod +x ./builder-bin/minify-json + + if [ -d datapacks ]; then + for pack_dir in datapacks/*/; do + [ -d "$pack_dir" ] || continue + TARGET="${pack_dir}content" + if [ -d "$TARGET" ]; then + cp -r "$TARGET" "${TARGET}.original" + ./builder-bin/minify-json "$TARGET" + fi + done + fi + + if [ -d modpacks ]; then + for pack_dir in modpacks/*/; do + [ -d "$pack_dir" ] || continue + for subdir in "$pack_dir"*-mr "$pack_dir"*-cf; do + [ -d "$subdir" ] || continue + CONFIG_DIR="$subdir/config" + if [ -d "$CONFIG_DIR" ]; then + cp -r "$CONFIG_DIR" "${CONFIG_DIR}.original" + ./builder-bin/minify-json "$CONFIG_DIR" + fi + done + done + fi + - name: Run Build run: | chmod +x ./builder-bin/builder ./builder-bin/builder "${{ steps.meta.outputs.short_sha }}" + - name: Restore JSON sources + if: always() + run: | + set -eu + + if [ -d datapacks ]; then + for pack_dir in datapacks/*/; do + [ -d "$pack_dir" ] || continue + TARGET="${pack_dir}content" + if [ -d "${TARGET}.original" ]; then + rm -rf "$TARGET" + mv "${TARGET}.original" "$TARGET" + fi + done + fi + + if [ -d modpacks ]; then + for pack_dir in modpacks/*/; do + [ -d "$pack_dir" ] || continue + for subdir in "$pack_dir"*-mr "$pack_dir"*-cf; do + [ -d "$subdir" ] || continue + CONFIG_DIR="$subdir/config" + if [ -d "${CONFIG_DIR}.original" ]; then + rm -rf "$CONFIG_DIR" + mv "${CONFIG_DIR}.original" "$CONFIG_DIR" + fi + done + done + fi + - name: Upload uses: https://code.forgejo.org/actions/upload-artifact@v3 with: diff --git a/.forgejo/workflows/publish.yml b/.forgejo/workflows/publish.yml index f258daf36..b1692a9de 100644 --- a/.forgejo/workflows/publish.yml +++ b/.forgejo/workflows/publish.yml @@ -73,6 +73,7 @@ jobs: modpacks datapacks src/actions/publish + src/actions/builder tools/changelog - name: Set up Node @@ -91,16 +92,29 @@ jobs: path: ./publisher-bin key: publisher-v1-${{ runner.os }}-${{ hashFiles('src/actions/publish/**/*.rs', 'src/actions/publish/Cargo.toml', 'src/actions/publish/Cargo.lock') }} + - name: Cache Minify-JSON Binary + id: cache-minify + uses: actions/cache@v4 + with: + path: ./builder-bin + key: builder-v2-${{ runner.os }}-${{ hashFiles('src/actions/builder/**/*.rs', 'src/actions/builder/Cargo.toml', 'src/actions/builder/Cargo.lock') }} + - name: Install Rust - if: steps.cache-publisher.outputs.cache-hit != 'true' + if: steps.cache-publisher.outputs.cache-hit != 'true' || steps.cache-minify.outputs.cache-hit != 'true' uses: https://github.com/dtolnay/rust-toolchain@stable - - name: Rust Cache + - name: Rust Cache (publish) if: steps.cache-publisher.outputs.cache-hit != 'true' uses: https://github.com/Swatinem/rust-cache@v2 with: workspaces: "src/actions/publish -> target" + - name: Rust Cache (builder) + if: steps.cache-minify.outputs.cache-hit != 'true' + uses: https://github.com/Swatinem/rust-cache@v2 + with: + workspaces: "src/actions/builder -> target" + - name: Build Publisher if: steps.cache-publisher.outputs.cache-hit != 'true' run: | @@ -108,6 +122,13 @@ jobs: mkdir -p ./publisher-bin cp src/actions/publish/target/release/publish ./publisher-bin/publish + - name: Build minify-json + if: steps.cache-minify.outputs.cache-hit != 'true' + run: | + cargo build --release --manifest-path src/actions/builder/Cargo.toml --bin minify-json + mkdir -p ./builder-bin + cp src/actions/builder/target/release/minify-json ./builder-bin/minify-json + - name: Cache Packwiz Binaries id: cache-go uses: actions/cache@v4 @@ -137,12 +158,63 @@ jobs: restore-keys: | packwiz-cache-${{ runner.os }}- + - name: Minify JSON configs + run: | + set -eu + chmod +x ./builder-bin/minify-json + + MANIFEST='${{ matrix.manifest }}' + PACK_DIR="$(dirname "$MANIFEST")" + + if [[ "$MANIFEST" == datapacks/* ]]; then + # Datapack: minify content/ + TARGET="${PACK_DIR}/content" + if [ -d "$TARGET" ]; then + cp -r "$TARGET" "${TARGET}.original" + ./builder-bin/minify-json "$TARGET" + fi + elif [[ "$MANIFEST" == modpacks/* ]]; then + # Modpack: minify each platform subdir's config/ folder + for subdir in "$PACK_DIR"/*-mr "$PACK_DIR"/*-cf; do + [ -d "$subdir" ] || continue + CONFIG_DIR="$subdir/config" + if [ -d "$CONFIG_DIR" ]; then + cp -r "$CONFIG_DIR" "${CONFIG_DIR}.original" + ./builder-bin/minify-json "$CONFIG_DIR" + fi + done + fi + - name: Run Publisher id: meta run: | chmod +x ./publisher-bin/publish ./publisher-bin/publish "${{ matrix.manifest }}" + - name: Restore JSON sources + if: always() + run: | + set -eu + MANIFEST='${{ matrix.manifest }}' + PACK_DIR="$(dirname "$MANIFEST")" + + if [[ "$MANIFEST" == datapacks/* ]]; then + TARGET="${PACK_DIR}/content" + if [ -d "${TARGET}.original" ]; then + rm -rf "$TARGET" + mv "${TARGET}.original" "$TARGET" + fi + elif [[ "$MANIFEST" == modpacks/* ]]; then + for subdir in "$PACK_DIR"/*-mr "$PACK_DIR"/*-cf; do + [ -d "$subdir" ] || continue + CONFIG_DIR="$subdir/config" + if [ -d "${CONFIG_DIR}.original" ]; then + rm -rf "$CONFIG_DIR" + mv "${CONFIG_DIR}.original" "$CONFIG_DIR" + fi + done + fi + - name: Upload to Platforms if: "steps.meta.outputs.mr_id != '' || steps.meta.outputs.cf_id != ''" uses: https://github.com/Kir-Antipov/mc-publish@v3.3 From 6e79c71a1ec3a548c4cc6dc2eaf3b02dbb6cc7cb Mon Sep 17 00:00:00 2001 From: "forgejo-actions[bot]" Date: Mon, 20 Apr 2026 00:01:40 +0000 Subject: [PATCH 04/11] actions: auto-update (Auto Update & Refresh) --- modpacks/rc-plus/1.21.10-mr/index.toml | 6 +++--- modpacks/rc-plus/1.21.10-mr/mods/facapi-next.pw.toml | 8 ++++---- modpacks/rc-plus/1.21.10-mr/mods/l4j-next.pw.toml | 6 +++--- modpacks/rc-plus/1.21.10-mr/mods/lws-next.pw.toml | 8 ++++---- modpacks/rc-plus/1.21.10-mr/pack.toml | 2 +- modpacks/rekindled/tu3-mr/index.toml | 2 +- modpacks/rekindled/tu3-mr/mods/entityculling.pw.toml | 8 ++++---- modpacks/rekindled/tu3-mr/pack.toml | 2 +- modpacks/simply/1.21.10-mr/index.toml | 6 +++--- modpacks/simply/1.21.10-mr/mods/facapi-next.pw.toml | 8 ++++---- modpacks/simply/1.21.10-mr/mods/l4j-next.pw.toml | 6 +++--- modpacks/simply/1.21.10-mr/mods/lws-next.pw.toml | 8 ++++---- modpacks/simply/1.21.10-mr/pack.toml | 2 +- 13 files changed, 36 insertions(+), 36 deletions(-) diff --git a/modpacks/rc-plus/1.21.10-mr/index.toml b/modpacks/rc-plus/1.21.10-mr/index.toml index 3e5b8b4ef..a2e7971aa 100644 --- a/modpacks/rc-plus/1.21.10-mr/index.toml +++ b/modpacks/rc-plus/1.21.10-mr/index.toml @@ -1103,7 +1103,7 @@ metafile = true [[files]] file = "mods/facapi-next.pw.toml" -hash = "fa86dbe1b6e0bbb0766a0a339589f8b5a3223d01d3595d0a279da5a30bc9040b" +hash = "f08645d2f4af8a09b120a21c1a6987c2527984d2eea7d85a34217624e49a43cc" metafile = true [[files]] @@ -1163,7 +1163,7 @@ metafile = true [[files]] file = "mods/l4j-next.pw.toml" -hash = "15b83ad4613f017e879854a4bda23711ba091fb0fab68362705c0253ccb681ea" +hash = "f08645d2f4af8a09b120a21c1a6987c2527984d2eea7d85a34217624e49a43cc" metafile = true [[files]] @@ -1208,7 +1208,7 @@ metafile = true [[files]] file = "mods/lws-next.pw.toml" -hash = "0ae68610449fedabeaf0a67020376ee1ab3b079be0088e9a0c7fb114f2fc503f" +hash = "f08645d2f4af8a09b120a21c1a6987c2527984d2eea7d85a34217624e49a43cc" metafile = true [[files]] diff --git a/modpacks/rc-plus/1.21.10-mr/mods/facapi-next.pw.toml b/modpacks/rc-plus/1.21.10-mr/mods/facapi-next.pw.toml index 98d7adf29..ebbee8a52 100644 --- a/modpacks/rc-plus/1.21.10-mr/mods/facapi-next.pw.toml +++ b/modpacks/rc-plus/1.21.10-mr/mods/facapi-next.pw.toml @@ -1,15 +1,15 @@ name = "mod" -filename = "factory_api-fabric-1.21.10-2.2.7.jar" +filename = "Legacy4J-1.21.10-1.8.7.2615.0-fabric.jar" side = "both" [download] -url = "https://github.com/omo50/mod/releases/download/facapi_next-1.0/factory_api-fabric-1.21.10-2.2.7.2615.2.jar" +url = "https://github.com/omo50/mod/releases/download/next-1.1/Legacy4J-1.21.10-1.8.7.2615.0-fabric.jar" hash-format = "sha256" -hash = "05946a0986e74d25bac2b45453726db8ce91760393f3338be4f4c24903843c54" +hash = "87c9cc81207e7b7e9c05a01da1017f6ec1013d1b0a5ed5439ebb692a985478e2" [update] [update.github] branch = "main" regex = "^.+(? Date: Sun, 19 Apr 2026 18:10:52 -0600 Subject: [PATCH 05/11] chore(ci): provide schema to manifest.json --- tools/manifest/schema.json | 57 +++++++++++++++++++ tools/manifest/validate.ts | 112 +++++++++++++++++++++++++++++++++++++ 2 files changed, 169 insertions(+) create mode 100644 tools/manifest/schema.json create mode 100644 tools/manifest/validate.ts diff --git a/tools/manifest/schema.json b/tools/manifest/schema.json new file mode 100644 index 000000000..d90d14934 --- /dev/null +++ b/tools/manifest/schema.json @@ -0,0 +1,57 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Pack Manifest", + "description": "Defines a publishable pack in the monorepo", + "type": "object", + "required": ["id", "name", "type", "loader", "mc_version", "version", "release_type"], + "additionalProperties": false, + "properties": { + "$schema": { + "type": "string", + "description": "Path to this schema file." + }, + "id": { + "type": "string", + "description": "Matches the directory name", + "minLength": 1 + }, + "name": { + "type": "string", + "description": "Human-readable pack name shown on Modrinth/CurseForge. Ie. Re-Console Plus", + "minLength": 1 + }, + "type": { + "type": "string", + "description": "Pack type. 'modpack' exports via packwiz, 'datapack' zips the content directory", + "enum": ["modpack", "datapack"] + }, + "loader": { + "type": "string", + "description": "Mod loader this pack targets (e.g., 'fabric', 'neoforge', 'forge', 'quilt')", + "minLength": 1 + }, + "mc_version": { + "type": "string", + "description": "Target Minecraft version (e.g., '1.21.10')", + "minLength": 1 + }, + "version": { + "type": "string", + "description": "Pack version.", + "minLength": 1 + }, + "release_type": { + "type": "string", + "description": "Release channel", + "enum": ["release", "beta", "alpha"] + }, + "modrinth_id": { + "type": "string", + "description": "Modrinth project ID or slug (e.g., 'legacy-minecraft'). Leave empty if not publishing to Modrinth" + }, + "curseforge_id": { + "type": "string", + "description": "CurseForge project slug or numeric ID (e.g., 're-console'). Leave empty if not publishing to CurseForge" + } + } +} diff --git a/tools/manifest/validate.ts b/tools/manifest/validate.ts new file mode 100644 index 000000000..5f7f95e67 --- /dev/null +++ b/tools/manifest/validate.ts @@ -0,0 +1,112 @@ +import * as fs from 'fs'; +import * as path from 'path'; + +interface Manifest { + id: string; + name: string; + type: 'modpack' | 'datapack'; + loader: string; + mc_version: string; + version: string; + release_type: 'release' | 'beta' | 'alpha'; + modrinth_id?: string; + curseforge_id?: string; +} + +function fail(msg: string): never { + console.error(`::error::${msg}`); + process.exit(1); +} + +function warn(msg: string): void { + console.warn(`::warning::${msg}`); +} + +function validate(manifestPath: string): void { + if (!fs.existsSync(manifestPath)) { + fail(`manifest not found: ${manifestPath}`); + } + + let manifest: Manifest; + try { + const raw = fs.readFileSync(manifestPath, 'utf-8'); + manifest = JSON.parse(raw); + } catch (e) { + fail(`failed to parse ${manifestPath}: ${e instanceof Error ? e.message : e}`); + } + + const required = [ + 'id', 'name', 'type', 'loader', 'mc_version', 'version', 'release_type', + ] as const; + for (const field of required) { + const v = manifest[field]; + if (v === undefined || v === null || v === '') { + fail(`manifest missing required field: ${field}`); + } + } + + if (!['modpack', 'datapack'].includes(manifest.type)) { + fail(`invalid 'type': ${manifest.type} (must be 'modpack' or 'datapack')`); + } + if (!['release', 'beta', 'alpha'].includes(manifest.release_type)) { + fail(`invalid 'release_type': ${manifest.release_type} (must be 'release', 'beta', or 'alpha')`); + } + + const hasMr = manifest.modrinth_id && manifest.modrinth_id.trim() !== ''; + const hasCf = manifest.curseforge_id && manifest.curseforge_id.trim() !== ''; + if (!hasMr && !hasCf) { + fail('manifest must set at least one of modrinth_id or curseforge_id'); + } + + const packDir = path.dirname(manifestPath); + + const changelogPath = path.join(packDir, 'changelog.md'); + if (!fs.existsSync(changelogPath)) { + fail(`changelog.md is missing at ${changelogPath}`); + } + const changelog = fs.readFileSync(changelogPath, 'utf-8').trim(); + if (changelog === '') { + fail(`changelog.md is empty at ${changelogPath}`); + } + const contentLines = changelog.split('\n').filter(l => l.trim() && !l.trim().startsWith('#')); + if (contentLines.length === 0) { + fail(`changelog.md has headers but no content at ${changelogPath}`); + } + + if (manifest.type === 'modpack') { + const mr = path.join(packDir, `${manifest.mc_version}-mr`); + const cf = path.join(packDir, `${manifest.mc_version}-cf`); + + if (hasMr && !fs.existsSync(mr)) { + fail(`modrinth_id is set but ${mr} does not exist`); + } + if (hasCf && !fs.existsSync(cf)) { + fail(`curseforge_id is set but ${cf} does not exist`); + } + if (fs.existsSync(mr) && !hasMr) { + warn(`${mr} exists but modrinth_id is not set`); + } + if (fs.existsSync(cf) && !hasCf) { + warn(`${cf} exists but curseforge_id is not set`); + } + } + + if (manifest.type === 'datapack') { + const content = path.join(packDir, 'content'); + if (!fs.existsSync(content)) { + fail(`datapack content directory missing: ${content}`); + } + } + + console.log(`${manifest.id} ${manifest.version} (${manifest.release_type}) — manifest OK`); +} + +const args = process.argv.slice(2); +if (args.length === 0) { + console.error('usage: tsx validate.ts [more manifests...]'); + process.exit(1); +} + +for (const manifestPath of args) { + validate(manifestPath); +} From cfe4ccef5f157b348556ee0f671c8ecc172a8d4a Mon Sep 17 00:00:00 2001 From: omo50 <144749186+omo50@users.noreply.github.com> Date: Sun, 19 Apr 2026 18:11:44 -0600 Subject: [PATCH 06/11] Revert "actions: auto-update (Auto Update & Refresh)" This reverts commit 6e79c71a1ec3a548c4cc6dc2eaf3b02dbb6cc7cb. --- modpacks/rc-plus/1.21.10-mr/index.toml | 6 +++--- modpacks/rc-plus/1.21.10-mr/mods/facapi-next.pw.toml | 8 ++++---- modpacks/rc-plus/1.21.10-mr/mods/l4j-next.pw.toml | 6 +++--- modpacks/rc-plus/1.21.10-mr/mods/lws-next.pw.toml | 8 ++++---- modpacks/rc-plus/1.21.10-mr/pack.toml | 2 +- modpacks/rekindled/tu3-mr/index.toml | 2 +- modpacks/rekindled/tu3-mr/mods/entityculling.pw.toml | 8 ++++---- modpacks/rekindled/tu3-mr/pack.toml | 2 +- modpacks/simply/1.21.10-mr/index.toml | 6 +++--- modpacks/simply/1.21.10-mr/mods/facapi-next.pw.toml | 8 ++++---- modpacks/simply/1.21.10-mr/mods/l4j-next.pw.toml | 6 +++--- modpacks/simply/1.21.10-mr/mods/lws-next.pw.toml | 8 ++++---- modpacks/simply/1.21.10-mr/pack.toml | 2 +- 13 files changed, 36 insertions(+), 36 deletions(-) diff --git a/modpacks/rc-plus/1.21.10-mr/index.toml b/modpacks/rc-plus/1.21.10-mr/index.toml index a2e7971aa..3e5b8b4ef 100644 --- a/modpacks/rc-plus/1.21.10-mr/index.toml +++ b/modpacks/rc-plus/1.21.10-mr/index.toml @@ -1103,7 +1103,7 @@ metafile = true [[files]] file = "mods/facapi-next.pw.toml" -hash = "f08645d2f4af8a09b120a21c1a6987c2527984d2eea7d85a34217624e49a43cc" +hash = "fa86dbe1b6e0bbb0766a0a339589f8b5a3223d01d3595d0a279da5a30bc9040b" metafile = true [[files]] @@ -1163,7 +1163,7 @@ metafile = true [[files]] file = "mods/l4j-next.pw.toml" -hash = "f08645d2f4af8a09b120a21c1a6987c2527984d2eea7d85a34217624e49a43cc" +hash = "15b83ad4613f017e879854a4bda23711ba091fb0fab68362705c0253ccb681ea" metafile = true [[files]] @@ -1208,7 +1208,7 @@ metafile = true [[files]] file = "mods/lws-next.pw.toml" -hash = "f08645d2f4af8a09b120a21c1a6987c2527984d2eea7d85a34217624e49a43cc" +hash = "0ae68610449fedabeaf0a67020376ee1ab3b079be0088e9a0c7fb114f2fc503f" metafile = true [[files]] diff --git a/modpacks/rc-plus/1.21.10-mr/mods/facapi-next.pw.toml b/modpacks/rc-plus/1.21.10-mr/mods/facapi-next.pw.toml index ebbee8a52..98d7adf29 100644 --- a/modpacks/rc-plus/1.21.10-mr/mods/facapi-next.pw.toml +++ b/modpacks/rc-plus/1.21.10-mr/mods/facapi-next.pw.toml @@ -1,15 +1,15 @@ name = "mod" -filename = "Legacy4J-1.21.10-1.8.7.2615.0-fabric.jar" +filename = "factory_api-fabric-1.21.10-2.2.7.jar" side = "both" [download] -url = "https://github.com/omo50/mod/releases/download/next-1.1/Legacy4J-1.21.10-1.8.7.2615.0-fabric.jar" +url = "https://github.com/omo50/mod/releases/download/facapi_next-1.0/factory_api-fabric-1.21.10-2.2.7.2615.2.jar" hash-format = "sha256" -hash = "87c9cc81207e7b7e9c05a01da1017f6ec1013d1b0a5ed5439ebb692a985478e2" +hash = "05946a0986e74d25bac2b45453726db8ce91760393f3338be4f4c24903843c54" [update] [update.github] branch = "main" regex = "^.+(? Date: Sun, 19 Apr 2026 18:13:36 -0600 Subject: [PATCH 07/11] chore(ci): update to match the new manifest --- src/actions/publish/publish.rs | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/src/actions/publish/publish.rs b/src/actions/publish/publish.rs index 00ed7bfeb..6d90124a9 100644 --- a/src/actions/publish/publish.rs +++ b/src/actions/publish/publish.rs @@ -16,8 +16,6 @@ enum Platform { } impl Platform { - const ALL: [Platform; 2] = [Platform::Modrinth, Platform::Curseforge]; - fn short(self) -> &'static str { match self { Platform::Modrinth => "mr", @@ -60,10 +58,15 @@ fn main() -> Result<()> { let p_ver = required_str(&manifest, "version")?; let mc_ver = required_str(&manifest, "mc_version")?; let p_type = required_str(&manifest, "type")?; - let loader = manifest["loader"].as_str().unwrap_or("fabric"); + let loader = required_str(&manifest, "loader")?; + let release_type = required_str(&manifest, "release_type")?; let mr_id = manifest["modrinth_id"].as_str().unwrap_or(""); let cf_id = manifest["curseforge_id"].as_str().unwrap_or(""); + if mr_id.is_empty() && cf_id.is_empty() { + bail!("manifest must set at least one of modrinth_id or curseforge_id"); + } + let workspace = env::var("GITHUB_WORKSPACE").unwrap_or_else(|_| ".".into()); let artifacts_dir = Path::new(&workspace).join(p_dir).join("artifacts"); if artifacts_dir.exists() { @@ -76,7 +79,7 @@ fn main() -> Result<()> { println!("::group::Building artifacts for {raw_name}"); match p_type { - "modpack" => build_modpack(p_dir, &artifacts_dir, &p_name, mc_ver, p_ver, loader)?, + "modpack" => build_modpack(p_dir, &artifacts_dir, &p_name, mc_ver, p_ver, loader, mr_id, cf_id)?, "datapack" => build_datapack(p_dir, &artifacts_dir, &manifest, p_ver)?, other => bail!("unsupported pack type: {other}"), } @@ -91,6 +94,7 @@ fn main() -> Result<()> { mc_ver, p_type, loader, + release_type, p_dir, })?; @@ -110,11 +114,16 @@ fn build_modpack( mc_ver: &str, p_ver: &str, loader: &str, + mr_id: &str, + cf_id: &str, ) -> Result<()> { let filename_base = format!("{p_name}-{mc_ver}-{loader}-{p_ver}"); let mut jobs: Vec<(Platform, PathBuf)> = Vec::new(); - for platform in Platform::ALL { + for (platform, id) in [(Platform::Modrinth, mr_id), (Platform::Curseforge, cf_id)] { + if id.is_empty() { + continue; + } let target_folder = format!("{mc_ver}-{}", platform.short()); let target_path = p_dir.join(&target_folder); if target_path.exists() { @@ -129,7 +138,7 @@ fn build_modpack( } if jobs.is_empty() { - bail!("no platform folders (mc_ver-mr / mc_ver-cf) found"); + bail!("no platform folders (mc_ver-mr / mc_ver-cf) found matching manifest"); } let mut handles = Vec::new(); @@ -211,6 +220,7 @@ struct OutputData<'a> { mc_ver: &'a str, p_type: &'a str, loader: &'a str, + release_type: &'a str, p_dir: &'a Path, } @@ -230,6 +240,7 @@ fn write_outputs(d: OutputData) -> Result<()> { writeln!(f, "mc={}", d.mc_ver)?; writeln!(f, "type={}", d.p_type)?; writeln!(f, "loader={}", d.loader)?; + writeln!(f, "release_type={}", d.release_type)?; writeln!(f, "path={}", d.p_dir.display())?; Ok(()) } \ No newline at end of file From 4e5f8865ca4a17c329744bcd16357d0b7fa7cd6f Mon Sep 17 00:00:00 2001 From: omo50 <144749186+omo50@users.noreply.github.com> Date: Sun, 19 Apr 2026 18:15:37 -0600 Subject: [PATCH 08/11] chore(ci): bump yml to match too --- .forgejo/workflows/publish.yml | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/.forgejo/workflows/publish.yml b/.forgejo/workflows/publish.yml index b1692a9de..2b7a05110 100644 --- a/.forgejo/workflows/publish.yml +++ b/.forgejo/workflows/publish.yml @@ -75,12 +75,16 @@ jobs: src/actions/publish src/actions/builder tools/changelog + tools/manifest - name: Set up Node uses: actions/setup-node@v4 with: node-version: '20' + - name: Validate Manifest + run: npx tsx tools/manifest/validate.ts "${{ matrix.manifest }}" + - name: Generate Changelog id: changelog run: npx tsx tools/changelog/generate-changelog.ts "${{ matrix.manifest }}" @@ -90,7 +94,7 @@ jobs: uses: actions/cache@v4 with: path: ./publisher-bin - key: publisher-v1-${{ runner.os }}-${{ hashFiles('src/actions/publish/**/*.rs', 'src/actions/publish/Cargo.toml', 'src/actions/publish/Cargo.lock') }} + key: publisher-v2-${{ runner.os }}-${{ hashFiles('src/actions/publish/**/*.rs', 'src/actions/publish/Cargo.toml', 'src/actions/publish/Cargo.lock') }} - name: Cache Minify-JSON Binary id: cache-minify @@ -167,14 +171,12 @@ jobs: PACK_DIR="$(dirname "$MANIFEST")" if [[ "$MANIFEST" == datapacks/* ]]; then - # Datapack: minify content/ TARGET="${PACK_DIR}/content" if [ -d "$TARGET" ]; then cp -r "$TARGET" "${TARGET}.original" ./builder-bin/minify-json "$TARGET" fi elif [[ "$MANIFEST" == modpacks/* ]]; then - # Modpack: minify each platform subdir's config/ folder for subdir in "$PACK_DIR"/*-mr "$PACK_DIR"/*-cf; do [ -d "$subdir" ] || continue CONFIG_DIR="$subdir/config" @@ -227,6 +229,7 @@ jobs: curseforge-files: "${{ github.workspace }}/${{ steps.meta.outputs.path }}/artifacts/*.zip" name: "${{ steps.meta.outputs.name }}" version: "${{ steps.meta.outputs.ver }}" + version-type: ${{ steps.meta.outputs.release_type }} changelog: "${{ steps.changelog.outputs.notes }}" loaders: ${{ steps.meta.outputs.type == 'modpack' && steps.meta.outputs.loader || 'minecraft' }} game-versions: "${{ steps.meta.outputs.mc }}" \ No newline at end of file From d53a9582bbbc4b4230fcdee7641696baa028b886 Mon Sep 17 00:00:00 2001 From: omo50 <144749186+omo50@users.noreply.github.com> Date: Sun, 19 Apr 2026 18:17:52 -0600 Subject: [PATCH 09/11] feat(rc & simply): l4j next 1.2 --- modpacks/rc-plus/1.21.10-mr/index.toml | 140 +++++++++--------- .../rc-plus/1.21.10-mr/mods/l4j-next.pw.toml | 4 +- modpacks/rc-plus/1.21.10-mr/pack.toml | 2 +- .../simply/1.21.10-mr/mods/l4j-next.pw.toml | 4 +- 4 files changed, 75 insertions(+), 75 deletions(-) diff --git a/modpacks/rc-plus/1.21.10-mr/index.toml b/modpacks/rc-plus/1.21.10-mr/index.toml index 3e5b8b4ef..e94537d18 100644 --- a/modpacks/rc-plus/1.21.10-mr/index.toml +++ b/modpacks/rc-plus/1.21.10-mr/index.toml @@ -2,15 +2,15 @@ hash-format = "sha256" [[files]] file = "config/animatium.json" -hash = "f83e8176ccda0689fb95e7c8724e3a9f86daa305772880bb419dde5e28d299c1" +hash = "b17369e039780cedeeda73c3818734263c6601e41e9fc2ddfa2531acb2c5a397" [[files]] file = "config/c2me.toml" -hash = "363c7635e7356e80de529bcca835851a706c4b065dc409cc93d733cfa3dcd708" +hash = "711e0664920627670c5638e9e29acba8f410d90b2f6091479e2cb8a08f764c35" [[files]] file = "config/complexleafculling.json" -hash = "7e3f021e6fad73951f98dc4808a2005ace1e7b9edd21777d823f832b64caed38" +hash = "61677f9fa6d31e972eef67f963883d644f95ec060395f6628916b64f1a73a4a2" [[files]] file = "config/crash_assistant/config.toml" @@ -34,7 +34,7 @@ hash = "3a429334ee23f897a7f9433e25af1246a735b289629d32cb0c730a9885a3c240" [[files]] file = "config/crash_assistant/modlist.json" -hash = "014bf2cdef1b9d9d362dc210fd7f1adaf704709834638a148da025a092dd59e5" +hash = "e9ba2bfe293273db27ebc9578d24cbba73908bcc73a35a1fdeb3a807c40ef56d" [[files]] file = "config/crash_assistant/problematic_mods_config.json" @@ -42,15 +42,15 @@ hash = "96bf60c2653e893599129f251281215774ec7d420db24fe094ae364ecbfc5939" [[files]] file = "config/fabric/indigo-renderer.properties" -hash = "0a776bd94413087200e0cd1a0bd72cbfe5c1a69002c1c625236233c2183c301c" +hash = "aa272c538cfdf8b1b6bc75a35f6fa056869c131056604308f06d06beeac80e04" [[files]] file = "config/immediatelyfast.json" -hash = "8f85626cee8effcf430d24772946b3bea79a778917ba0681d2cc6fcb857efd2b" +hash = "aeb8a2371724d24d68292ad2aa9f4d6b7111e046409a2a94925878dfeac7ccc8" [[files]] file = "config/modernfix-mixins.properties" -hash = "0a81d2a243a17a906abdb39ebed7c1d8d09a976f6e5d58f5fa2a33e11e441892" +hash = "3e808ff5702adc376a9990d84c543feb3fad5a28d564cfb465a9b6ce58b87c29" [[files]] file = "config/modpack_defaults/animatium_utility.json" @@ -94,7 +94,7 @@ hash = "080ec08b7754723a3fa7c45cc0c37f251cc69ff5a07c06bb0f9cb40596373bbe" [[files]] file = "config/modpack_defaults/config/complexleafculling.json" -hash = "7e3f021e6fad73951f98dc4808a2005ace1e7b9edd21777d823f832b64caed38" +hash = "61677f9fa6d31e972eef67f963883d644f95ec060395f6628916b64f1a73a4a2" [[files]] file = "config/modpack_defaults/config/cpm.json" @@ -126,7 +126,7 @@ hash = "3a429334ee23f897a7f9433e25af1246a735b289629d32cb0c730a9885a3c240" [[files]] file = "config/modpack_defaults/config/crash_assistant/modlist.json" -hash = "014bf2cdef1b9d9d362dc210fd7f1adaf704709834638a148da025a092dd59e5" +hash = "e9ba2bfe293273db27ebc9578d24cbba73908bcc73a35a1fdeb3a807c40ef56d" [[files]] file = "config/modpack_defaults/config/crash_assistant/problematic_mods_config.json" @@ -142,11 +142,11 @@ hash = "6ef9e4a1132e7aeab97f6829893124078b95be3c9a5b247754c2ccc9deb423ce" [[files]] file = "config/modpack_defaults/config/entity_model_features.json" -hash = "a409f75f21a3189f06c4edf5bf6b613c3c6275147c8b51ae1e1c46e8e8cdb8ef" +hash = "37144d898a913de605a370bf18a870c61c0633844512934630bfaa55914d8492" [[files]] file = "config/modpack_defaults/config/entity_texture_features.json" -hash = "0554c0e7816266477c65c18d2ada9fdddf1c6750787efd329056223ca4a073b2" +hash = "4284266e11add2e03fe5b9a27ce1287e725443dfe12bdf2dcde5473203f62107" [[files]] file = "config/modpack_defaults/config/entityculling.json" @@ -154,7 +154,7 @@ hash = "6bb3b6b65f728d5c3d06dd986b85d21370e3b78a30629b7a1ab7a0a46e033768" [[files]] file = "config/modpack_defaults/config/etf_warnings.json" -hash = "a5ba22e63061c1fb67f0f895f17681351eaeccc225faef966c29ee630593275e" +hash = "368c428c9edaddb490c2e7339642e79ceddcb0a6fd8fd434c4bd8e1af34c26f8" [[files]] file = "config/modpack_defaults/config/fabric/indigo-renderer.properties" @@ -166,11 +166,11 @@ hash = "51631d4fc7768aa448546665821ff26e41583f4b50243d18027f0812fcbd4096" [[files]] file = "config/modpack_defaults/config/factory_api/client_options.json" -hash = "5a4c1f7d253af2c4c47e10a8702d1e10d6a3fd42cc32223ff89810f94909a387" +hash = "5bad688f356193319f0bb7c19f9b0fce8ff08d6d529d5d6bbcbf2fe614643911" [[files]] file = "config/modpack_defaults/config/factory_api/common_options.json" -hash = "a9e6f5696304dbeeb2899e5edc0d6783235c3bac06d76b7524299ae11c71755e" +hash = "7b103325f88b27b5d68e6ac6a02d53761e9287ccbffd18ffdd5da0063a9d9828" [[files]] file = "config/modpack_defaults/config/fastquit.toml" @@ -234,7 +234,7 @@ hash = "24a6632343b96399a7b90a6cb130dfb95d32688ec3fd41ca8cac1b63e7abae39" [[files]] file = "config/modpack_defaults/config/legacy_world_sizes/common.json" -hash = "c34dfd4b2c13e3ef9479173039891092969d4a61809609f779ef8685916a4294" +hash = "03fe9d4796b38fc8ffbe9692986d7e69ff08043690b3e1024df74f2241c42006" [[files]] file = "config/modpack_defaults/config/legacy_world_sizes/common_mixin.json" @@ -254,7 +254,7 @@ hash = "a844236f3392894ad21314f5f372ef98521498399852b290398cb14f18b3606e" [[files]] file = "config/modpack_defaults/config/modelfix-client.json" -hash = "7e02c1d587a4c011b0b18080b7ba7451bd44535159a52c4c0c9a94b863334678" +hash = "1f7d946ec7a12efbbe58cdeedc2ae767446e06e7ffed095c18482d5cc27a86a7" [[files]] file = "config/modpack_defaults/config/modernfix-mixins.properties" @@ -262,7 +262,7 @@ hash = "0a81d2a243a17a906abdb39ebed7c1d8d09a976f6e5d58f5fa2a33e11e441892" [[files]] file = "config/modpack_defaults/config/modmenu.json" -hash = "ee8d1a6f11ea009f37abba6325d97766910e1786b0de848aa307771d8a87ed72" +hash = "4dc7d729a2b83401f4a39dff457680f6f5872df1a5b2a93d9eb27b0b5df42d0e" [[files]] file = "config/modpack_defaults/config/moonrise.yml" @@ -270,7 +270,7 @@ hash = "8366e8d4fa7952e0abcf0a0871c06f0b562725b912e0d3537fc37906392a2329" [[files]] file = "config/modpack_defaults/config/moreculling.toml" -hash = "a3f5998883ad9f3a27e78dca4d2826714592055f37c85c79968ce88aa497244f" +hash = "a379fab4e05772a52e83884251c81d63857b6edc75e5185bb08930bd460a9170" [[files]] file = "config/modpack_defaults/config/nostalgic_tweaks/backup/nostalgic_tweaks-client-startup_backup.json" @@ -294,7 +294,7 @@ hash = "3d731115173b34dd0fe9de6f52fa14dc271c848495a52f66c0016e24150f59d6" [[files]] file = "config/modpack_defaults/config/preferred-gamerules.properties" -hash = "0712a4e075b5005fd7e4a9cb92c12011b784d369c9355e2a948488cfd0919866" +hash = "85665ff3c6bdda824317de7a8e2b53edbbc8b17032d7dedff045475ee1da926c" [[files]] file = "config/modpack_defaults/config/proplacer-client.toml" @@ -326,7 +326,7 @@ hash = "068fc165435c8734b43d5f735cfbe42d015356d157222d577012e45b3bf0a989" [[files]] file = "config/modpack_defaults/config/sodium-shadowy-path-blocks-options.json" -hash = "25baba4e198fbefd6656a38dcf0cdc3e7ccef211221b4f5218d22a778d1853fa" +hash = "2f16d7c9cfbcb73f5af74f213cbd1d6d799369d8a63208b3430b20aa630b69d7" [[files]] file = "config/modpack_defaults/config/stfu-disable.txt" @@ -338,7 +338,7 @@ hash = "f94ebbc6b37b7f65bdf5dd9aeeb5d6879f0b7195f02260b7d865026ee8175f84" [[files]] file = "config/modpack_defaults/config/threadtweak.json" -hash = "b4c1cc5fc213225d64e685a3b632092e909386ab41bd9925f9cf7efd53d1ad46" +hash = "33191bf9b7c96165db5eea96dfa57e7ca7763fc3b842ebfd943184dc895969c6" [[files]] file = "config/modpack_defaults/config/vmp.properties" @@ -346,15 +346,15 @@ hash = "d631bc153e5b284b19b2e51f59bc49417fc40e62c42a3a3de0ea1f4586a09110" [[files]] file = "config/modpack_defaults/config/voicechat/voicechat-client.properties" -hash = "756bf0b8391d5c8f8a3e92ec0f04d35b249f3968a4c0f2a966476de27b3bb822" +hash = "fb40aa68e696afbfa750e90a7fb4b34b07194e7d2d3ca652c4073bd30a11ef91" [[files]] file = "config/modpack_defaults/config/yacl.json5" -hash = "121b93764159be6fb7dab523b29a844e2bb78400ce8c48f52135a097e9b0006e" +hash = "8a201ac6b572e9b56ea1de77e13a8d6c8fab64c89727649346e22e6e27413577" [[files]] file = "config/modpack_defaults/config/zfastnoise.mixin.toml" -hash = "70213250ce898b715b63937f7475483be04750ed57cda362f12d270ccb7802e7" +hash = "03841a30368b6bd9450d17a13adff6583b9e6a6be8146d7d9b402227e16abea2" [[files]] file = "config/modpack_defaults/options.txt" @@ -490,27 +490,27 @@ hash = "8344c374eae3a92669bbda015399f1e9c063da539c7e853eb63a13f375b1b66e" [[files]] file = "config/modpack_defaults/resources/resourcepack/required/Fixed Chest Models/assets/cem/chest.jem" -hash = "e13abe89090d216f1866e9408e9c37e5e1a83b8e365e695226659ef07310de8f" +hash = "9bc1ff50e3539f54bc7c3f42338d8c88f0178235790de1b1e2020be1eb0f2289" [[files]] file = "config/modpack_defaults/resources/resourcepack/required/Fixed Chest Models/assets/cem/chest_large.jem" -hash = "08c1145125ca3fdf126ade6b8c0a3943755bddf5778c55123e20fdf063cddb8d" +hash = "2290e6dc78592bd196f580ebb26137def58eead583dc7d920e91042d584a1e8d" [[files]] file = "config/modpack_defaults/resources/resourcepack/required/Fixed Chest Models/assets/cem/ender_chest.jem" -hash = "e13abe89090d216f1866e9408e9c37e5e1a83b8e365e695226659ef07310de8f" +hash = "9bc1ff50e3539f54bc7c3f42338d8c88f0178235790de1b1e2020be1eb0f2289" [[files]] file = "config/modpack_defaults/resources/resourcepack/required/Fixed Chest Models/assets/cem/trapped_chest.jem" -hash = "e13abe89090d216f1866e9408e9c37e5e1a83b8e365e695226659ef07310de8f" +hash = "9bc1ff50e3539f54bc7c3f42338d8c88f0178235790de1b1e2020be1eb0f2289" [[files]] file = "config/modpack_defaults/resources/resourcepack/required/Fixed Chest Models/assets/cem/trapped_chest_large.jem" -hash = "08c1145125ca3fdf126ade6b8c0a3943755bddf5778c55123e20fdf063cddb8d" +hash = "2290e6dc78592bd196f580ebb26137def58eead583dc7d920e91042d584a1e8d" [[files]] file = "config/modpack_defaults/resources/resourcepack/required/Fixed Chest Models/pack.mcmeta" -hash = "1a5f9f1c26572ef887647294c0fa5876b7e5f72abf3ec68a445d68dd3f925737" +hash = "da77d6004687edd35428a7a5c5568fe9a01f799c037d171b5be0e94dc9dfac96" [[files]] file = "config/modpack_defaults/resources/resourcepack/required/Fixed Chest Models/pack.png" @@ -550,35 +550,35 @@ hash = "332dcd6666b84bfd70d6b49a3793d93e9c3082fd235e1d845403454c7f059619" [[files]] file = "config/modpack_defaults/resources/resourcepack/required/Re-Console+ Resources/assets/legacy/lang/en_au.json" -hash = "092687e15e0f0f176ded3f2678cbdd49182fef06718d04b4c737018db4dbc919" +hash = "0fec9c76829980e59328ba6ab4455f51b0fdcf49d7449238145e8f57b95523fe" [[files]] file = "config/modpack_defaults/resources/resourcepack/required/Re-Console+ Resources/assets/legacy/lang/en_ca.json" -hash = "092687e15e0f0f176ded3f2678cbdd49182fef06718d04b4c737018db4dbc919" +hash = "0fec9c76829980e59328ba6ab4455f51b0fdcf49d7449238145e8f57b95523fe" [[files]] file = "config/modpack_defaults/resources/resourcepack/required/Re-Console+ Resources/assets/legacy/lang/en_gb.json" -hash = "092687e15e0f0f176ded3f2678cbdd49182fef06718d04b4c737018db4dbc919" +hash = "0fec9c76829980e59328ba6ab4455f51b0fdcf49d7449238145e8f57b95523fe" [[files]] file = "config/modpack_defaults/resources/resourcepack/required/Re-Console+ Resources/assets/legacy/lang/en_nz.json" -hash = "092687e15e0f0f176ded3f2678cbdd49182fef06718d04b4c737018db4dbc919" +hash = "0fec9c76829980e59328ba6ab4455f51b0fdcf49d7449238145e8f57b95523fe" [[files]] file = "config/modpack_defaults/resources/resourcepack/required/Re-Console+ Resources/assets/legacy/lang/en_pt.json" -hash = "092687e15e0f0f176ded3f2678cbdd49182fef06718d04b4c737018db4dbc919" +hash = "0fec9c76829980e59328ba6ab4455f51b0fdcf49d7449238145e8f57b95523fe" [[files]] file = "config/modpack_defaults/resources/resourcepack/required/Re-Console+ Resources/assets/legacy/lang/en_ud.json" -hash = "092687e15e0f0f176ded3f2678cbdd49182fef06718d04b4c737018db4dbc919" +hash = "0fec9c76829980e59328ba6ab4455f51b0fdcf49d7449238145e8f57b95523fe" [[files]] file = "config/modpack_defaults/resources/resourcepack/required/Re-Console+ Resources/assets/legacy/lang/en_us.json" -hash = "092687e15e0f0f176ded3f2678cbdd49182fef06718d04b4c737018db4dbc919" +hash = "0fec9c76829980e59328ba6ab4455f51b0fdcf49d7449238145e8f57b95523fe" [[files]] file = "config/modpack_defaults/resources/resourcepack/required/Re-Console+ Resources/assets/legacy/lang/enp.json" -hash = "092687e15e0f0f176ded3f2678cbdd49182fef06718d04b4c737018db4dbc919" +hash = "0fec9c76829980e59328ba6ab4455f51b0fdcf49d7449238145e8f57b95523fe" [[files]] file = "config/modpack_defaults/resources/resourcepack/required/Re-Console+ Resources/assets/legacy/lang/es_es.json" @@ -946,7 +946,7 @@ hash = "f7039ebe3f3f7271443da585100cf706b8f25d54c626a72c703424df02b578a8" [[files]] file = "config/modpack_defaults/resources/resourcepack/required/Re-Console+ Resources/assets/legacy_world_sizes/lang/en_us.json" -hash = "3da0a32f2d7637dbc6c50cf6d34c59617b5b291b49382087f0af015a50c7a64f" +hash = "25859e4219345c8dc85b26e06cc0d30ec657512a966866bdb479a9ad566d61e9" [[files]] file = "config/modpack_defaults/resources/resourcepack/required/Re-Console+ Resources/assets/minecraft/lang/en_us.json" @@ -966,15 +966,15 @@ hash = "d082d6307f908d09fad1c0e429a978795e66ef42b923645150284eb8891e7f4c" [[files]] file = "config/moreculling.toml" -hash = "a3f5998883ad9f3a27e78dca4d2826714592055f37c85c79968ce88aa497244f" +hash = "a379fab4e05772a52e83884251c81d63857b6edc75e5185bb08930bd460a9170" [[files]] file = "config/servercore/config.yml" -hash = "7aa4761cc751f6df10d32f053a009953fabfb6649670b253199dd6bbd7aa3f9d" +hash = "8f2a0beab110717038219622c49fb764f71122040cb52d8a4d06c0c60fd286f1" [[files]] file = "config/servercore/optimizations.yml" -hash = "0e7fde302ae1f9cbe3c507b8f4bc23ebc51acae005de2c4f69933893d037894a" +hash = "d46be0ff848f3c12326fb5306ba6be295769af256326bd931f8424582e617779" [[files]] file = "mods/animatica.pw.toml" @@ -1033,7 +1033,7 @@ metafile = true [[files]] file = "mods/complex-leaf-culling.pw.toml" -hash = "ed95c3be02fb007fd3450540555c068d7284d0f6401faddcb94df0b147903c2f" +hash = "825022e303b96c6ba4880c65ad62b470ea106d8478431eb89112d20fce3ead6f" metafile = true [[files]] @@ -1073,12 +1073,12 @@ metafile = true [[files]] file = "mods/e4mc.pw.toml" -hash = "b6be9ab228ce37dfd2f0f05364ca24ba143d86bac31e25b9f03ab7750f2fceb4" +hash = "ae11b153da1e6ec4f331412d723268989a5de53cc1dd3b058f5e49fd720b516a" metafile = true [[files]] file = "mods/entity-model-features.pw.toml" -hash = "6e772213a6e3504f250852a75d9b170850daa6265b4f11491bdc654f91832308" +hash = "e8a456b474cc572ceb2bdd29f6611166224b3c34e6fb100e89dd35764ab1e04f" metafile = true [[files]] @@ -1088,7 +1088,7 @@ metafile = true [[files]] file = "mods/entitytexturefeatures.pw.toml" -hash = "27afacf195a3757d569fa1f6f4363e5ad608e8033092db2324e6b9091a1c2e19" +hash = "060ee8258633fac0fa2f905d15a6f93388a9f02b5876a723d08298a450154fd5" metafile = true [[files]] @@ -1103,12 +1103,12 @@ metafile = true [[files]] file = "mods/facapi-next.pw.toml" -hash = "fa86dbe1b6e0bbb0766a0a339589f8b5a3223d01d3595d0a279da5a30bc9040b" +hash = "a78335cfcdbf4d1cf174dc1a1e916fb15b40505179ab8fed8f5467ba5a7ec19a" metafile = true [[files]] file = "mods/fast-ip-ping.pw.toml" -hash = "4284a0f735f3bbb86765df2a4f8fbc0afa50ace99ac60423f49a86f80deec028" +hash = "068008bddde74e8b167c96d70032afd93e9b3a06f78d3053d3f91cf0f598f88c" metafile = true [[files]] @@ -1153,7 +1153,7 @@ metafile = true [[files]] file = "mods/ixeris.pw.toml" -hash = "9e6a3fb54ebb13ea95ced681d270cfa83134e95bb7111de140208db7160fffa7" +hash = "b10c93f14fb96e5c1bdaebf0fb6eb06d9c67227ea6b4154b0119c8934fe692fc" metafile = true [[files]] @@ -1163,7 +1163,7 @@ metafile = true [[files]] file = "mods/l4j-next.pw.toml" -hash = "15b83ad4613f017e879854a4bda23711ba091fb0fab68362705c0253ccb681ea" +hash = "cc3538d54d02e5ee3578cba8e7db5548693b7255f0669a4a0690e9b8889039fa" metafile = true [[files]] @@ -1193,7 +1193,7 @@ metafile = true [[files]] file = "mods/legacy-skins.pw.toml" -hash = "9577afa66375387db8449ef6b154adc68d2bd50ef79728083a616c159a950f62" +hash = "ecf6e7672ce172f1409dbec657abfe56931e4f97b60b8416389c51243557e768" metafile = true [[files]] @@ -1208,7 +1208,7 @@ metafile = true [[files]] file = "mods/lws-next.pw.toml" -hash = "0ae68610449fedabeaf0a67020376ee1ab3b079be0088e9a0c7fb114f2fc503f" +hash = "8921bcf5e97d9cf64e889ec927f4712566aee1dbd420a6ad4142a02243882036" metafile = true [[files]] @@ -1258,7 +1258,7 @@ metafile = true [[files]] file = "mods/placeholder-api.pw.toml" -hash = "ab6def9d98d3f5bf12f78845bdb770a19d5ca590c571e60184e537ffa14dcbee" +hash = "b05f77afeaa3662fae34dcb39d07abb0f324ff53f69dce644d89c419cfcbf3f3" metafile = true [[files]] @@ -1273,7 +1273,7 @@ metafile = true [[files]] file = "mods/preferred-gamerules.pw.toml" -hash = "7337f07b427d7defbb70bd010cca7f90ee2e4f5fa8e63f13b938226e754af947" +hash = "c4f5f4ad0b30e4e976061d97b6b292900cd019867fe69a7a6e01a71c2942832b" metafile = true [[files]] @@ -1303,12 +1303,12 @@ metafile = true [[files]] file = "mods/shuttfup.pw.toml" -hash = "1d513c2391901fa6f14c96589ef016d3fbc74f3487df2c06d2ec66a7bd51ad39" +hash = "0328bce44bf75ef2c30203f7cdc98406cd50bda55ad4ac1066abf174e465f880" metafile = true [[files]] file = "mods/simple-music-control.pw.toml" -hash = "bcd4938c174cb691ce4b356857b79a3d94dfbd9cbb4a33c764fee273a0048ccf" +hash = "ad92e9f77c6cff0e9e039f39c16ecac7ff1de2a1cd1ee35ef818715a041c9ada" metafile = true [[files]] @@ -2860,27 +2860,27 @@ metafile = true [[files]] file = "resources/resourcepack/required/Fixed Chest Models/assets/cem/chest.jem" -hash = "e13abe89090d216f1866e9408e9c37e5e1a83b8e365e695226659ef07310de8f" +hash = "9bc1ff50e3539f54bc7c3f42338d8c88f0178235790de1b1e2020be1eb0f2289" [[files]] file = "resources/resourcepack/required/Fixed Chest Models/assets/cem/chest_large.jem" -hash = "08c1145125ca3fdf126ade6b8c0a3943755bddf5778c55123e20fdf063cddb8d" +hash = "2290e6dc78592bd196f580ebb26137def58eead583dc7d920e91042d584a1e8d" [[files]] file = "resources/resourcepack/required/Fixed Chest Models/assets/cem/ender_chest.jem" -hash = "e13abe89090d216f1866e9408e9c37e5e1a83b8e365e695226659ef07310de8f" +hash = "9bc1ff50e3539f54bc7c3f42338d8c88f0178235790de1b1e2020be1eb0f2289" [[files]] file = "resources/resourcepack/required/Fixed Chest Models/assets/cem/trapped_chest.jem" -hash = "e13abe89090d216f1866e9408e9c37e5e1a83b8e365e695226659ef07310de8f" +hash = "9bc1ff50e3539f54bc7c3f42338d8c88f0178235790de1b1e2020be1eb0f2289" [[files]] file = "resources/resourcepack/required/Fixed Chest Models/assets/cem/trapped_chest_large.jem" -hash = "08c1145125ca3fdf126ade6b8c0a3943755bddf5778c55123e20fdf063cddb8d" +hash = "2290e6dc78592bd196f580ebb26137def58eead583dc7d920e91042d584a1e8d" [[files]] file = "resources/resourcepack/required/Fixed Chest Models/pack.mcmeta" -hash = "ffcf78328e75525603c2f4c8d857e4a3b0edc128e633968a952000882b549512" +hash = "0b0c453b8c341d683b02ef356dbba5052bb3bdc7e8ecab3e0668067a6a47bc9d" [[files]] file = "resources/resourcepack/required/Fixed Chest Models/pack.png" @@ -2920,35 +2920,35 @@ hash = "332dcd6666b84bfd70d6b49a3793d93e9c3082fd235e1d845403454c7f059619" [[files]] file = "resources/resourcepack/required/Re-Console+ Resources/assets/legacy/lang/en_au.json" -hash = "092687e15e0f0f176ded3f2678cbdd49182fef06718d04b4c737018db4dbc919" +hash = "0fec9c76829980e59328ba6ab4455f51b0fdcf49d7449238145e8f57b95523fe" [[files]] file = "resources/resourcepack/required/Re-Console+ Resources/assets/legacy/lang/en_ca.json" -hash = "092687e15e0f0f176ded3f2678cbdd49182fef06718d04b4c737018db4dbc919" +hash = "0fec9c76829980e59328ba6ab4455f51b0fdcf49d7449238145e8f57b95523fe" [[files]] file = "resources/resourcepack/required/Re-Console+ Resources/assets/legacy/lang/en_gb.json" -hash = "092687e15e0f0f176ded3f2678cbdd49182fef06718d04b4c737018db4dbc919" +hash = "0fec9c76829980e59328ba6ab4455f51b0fdcf49d7449238145e8f57b95523fe" [[files]] file = "resources/resourcepack/required/Re-Console+ Resources/assets/legacy/lang/en_nz.json" -hash = "092687e15e0f0f176ded3f2678cbdd49182fef06718d04b4c737018db4dbc919" +hash = "0fec9c76829980e59328ba6ab4455f51b0fdcf49d7449238145e8f57b95523fe" [[files]] file = "resources/resourcepack/required/Re-Console+ Resources/assets/legacy/lang/en_pt.json" -hash = "092687e15e0f0f176ded3f2678cbdd49182fef06718d04b4c737018db4dbc919" +hash = "0fec9c76829980e59328ba6ab4455f51b0fdcf49d7449238145e8f57b95523fe" [[files]] file = "resources/resourcepack/required/Re-Console+ Resources/assets/legacy/lang/en_ud.json" -hash = "092687e15e0f0f176ded3f2678cbdd49182fef06718d04b4c737018db4dbc919" +hash = "0fec9c76829980e59328ba6ab4455f51b0fdcf49d7449238145e8f57b95523fe" [[files]] file = "resources/resourcepack/required/Re-Console+ Resources/assets/legacy/lang/en_us.json" -hash = "092687e15e0f0f176ded3f2678cbdd49182fef06718d04b4c737018db4dbc919" +hash = "0fec9c76829980e59328ba6ab4455f51b0fdcf49d7449238145e8f57b95523fe" [[files]] file = "resources/resourcepack/required/Re-Console+ Resources/assets/legacy/lang/enp.json" -hash = "092687e15e0f0f176ded3f2678cbdd49182fef06718d04b4c737018db4dbc919" +hash = "0fec9c76829980e59328ba6ab4455f51b0fdcf49d7449238145e8f57b95523fe" [[files]] file = "resources/resourcepack/required/Re-Console+ Resources/assets/legacy/lang/es_es.json" diff --git a/modpacks/rc-plus/1.21.10-mr/mods/l4j-next.pw.toml b/modpacks/rc-plus/1.21.10-mr/mods/l4j-next.pw.toml index 8cd560b41..e44d10a72 100644 --- a/modpacks/rc-plus/1.21.10-mr/mods/l4j-next.pw.toml +++ b/modpacks/rc-plus/1.21.10-mr/mods/l4j-next.pw.toml @@ -3,9 +3,9 @@ filename = "Legacy4J-1.21.10-1.8.7.2615.0-fabric.jar" side = "both" [download] -url = "https://github.com/omo50/mod/releases/download/next-1.0/Legacy4J-1.21.10-1.8.7.2615.0-fabric.jar" +url = "https://github.com/omo50/mod/releases/download/next-1.2/Legacy4J-1.21.10-1.8.7.2615.0-fabric.jar hash-format = "sha256" -hash = "6fa1e07b2d2ab856a95cc3598a54789c89a7892138de52cd01600c8e4625ffaf" +hash = "7e9ed0c1e1e4010ad92e12a44d4dd9ce1aeea287b28ac8604b23d4b2242f933a" [update] [update.github] diff --git a/modpacks/rc-plus/1.21.10-mr/pack.toml b/modpacks/rc-plus/1.21.10-mr/pack.toml index 9fa32b981..5a329975b 100644 --- a/modpacks/rc-plus/1.21.10-mr/pack.toml +++ b/modpacks/rc-plus/1.21.10-mr/pack.toml @@ -6,7 +6,7 @@ pack-format = "packwiz:1.1.0" [index] file = "index.toml" hash-format = "sha256" -hash = "d333841726e968854f3132d16182b21d3592538297c55beb486b5719d6535b14" +hash = "8e993f511201d66744d6da8349b21f48c09d0f4420d36a62d1b837c908dcaa76" [versions] fabric = "0.19.2" diff --git a/modpacks/simply/1.21.10-mr/mods/l4j-next.pw.toml b/modpacks/simply/1.21.10-mr/mods/l4j-next.pw.toml index 8cd560b41..e44d10a72 100644 --- a/modpacks/simply/1.21.10-mr/mods/l4j-next.pw.toml +++ b/modpacks/simply/1.21.10-mr/mods/l4j-next.pw.toml @@ -3,9 +3,9 @@ filename = "Legacy4J-1.21.10-1.8.7.2615.0-fabric.jar" side = "both" [download] -url = "https://github.com/omo50/mod/releases/download/next-1.0/Legacy4J-1.21.10-1.8.7.2615.0-fabric.jar" +url = "https://github.com/omo50/mod/releases/download/next-1.2/Legacy4J-1.21.10-1.8.7.2615.0-fabric.jar hash-format = "sha256" -hash = "6fa1e07b2d2ab856a95cc3598a54789c89a7892138de52cd01600c8e4625ffaf" +hash = "7e9ed0c1e1e4010ad92e12a44d4dd9ce1aeea287b28ac8604b23d4b2242f933a" [update] [update.github] From 2bc942e13d34d0c3319cc79ef0fd59404149bbf0 Mon Sep 17 00:00:00 2001 From: omo50 <144749186+omo50@users.noreply.github.com> Date: Sun, 19 Apr 2026 18:19:44 -0600 Subject: [PATCH 10/11] feat(rc & simply): new manifest --- modpacks/rc-plus/manifest.json | 7 +++++-- modpacks/simply/manifest.json | 7 +++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/modpacks/rc-plus/manifest.json b/modpacks/rc-plus/manifest.json index 089d2b0e3..1d474300d 100644 --- a/modpacks/rc-plus/manifest.json +++ b/modpacks/rc-plus/manifest.json @@ -1,9 +1,12 @@ { + "$schema": "../../tools/manifest/schema.json", "id": "rc-plus", "name": "Re-Console Plus", "type": "modpack", - "version": "26.04.7", + "loader": "fabric", "mc_version": "1.21.10", + "version": "26.04.7", + "release_type": "release", "modrinth_id": "legacy-minecraft", "curseforge_id": "re-console" -} +} \ No newline at end of file diff --git a/modpacks/simply/manifest.json b/modpacks/simply/manifest.json index b02a2b6b1..0ba85cd1c 100644 --- a/modpacks/simply/manifest.json +++ b/modpacks/simply/manifest.json @@ -1,9 +1,12 @@ { + "$schema": "../../tools/manifest/schema.json", "id": "simply", "name": "Simply Legacy", "type": "modpack", - "version": "26.04.5", + "loader": "fabric", "mc_version": "1.21.10", + "version": "26.04.5", + "release_type": "release", "modrinth_id": "simply-legacy", "curseforge_id": "simply-legacy" -} +} \ No newline at end of file From fd086d667c123497487bf9f599861ae0c0c41d39 Mon Sep 17 00:00:00 2001 From: omo50 <144749186+omo50@users.noreply.github.com> Date: Sun, 19 Apr 2026 18:21:41 -0600 Subject: [PATCH 11/11] chore(rc & simply): bump manifest --- modpacks/rc-plus/manifest.json | 2 +- modpacks/simply/manifest.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/modpacks/rc-plus/manifest.json b/modpacks/rc-plus/manifest.json index 1d474300d..76fafce8d 100644 --- a/modpacks/rc-plus/manifest.json +++ b/modpacks/rc-plus/manifest.json @@ -5,7 +5,7 @@ "type": "modpack", "loader": "fabric", "mc_version": "1.21.10", - "version": "26.04.7", + "version": "26.04.8", "release_type": "release", "modrinth_id": "legacy-minecraft", "curseforge_id": "re-console" diff --git a/modpacks/simply/manifest.json b/modpacks/simply/manifest.json index 0ba85cd1c..bffb68ed7 100644 --- a/modpacks/simply/manifest.json +++ b/modpacks/simply/manifest.json @@ -5,7 +5,7 @@ "type": "modpack", "loader": "fabric", "mc_version": "1.21.10", - "version": "26.04.5", + "version": "26.04.6", "release_type": "release", "modrinth_id": "simply-legacy", "curseforge_id": "simply-legacy"