Monorepo for all cake modpacks!
  • Go 78.8%
  • CSS 11.4%
  • TypeScript 9.8%
Find a file
2026-06-27 00:00:37 +00:00
.forgejo chore: import somnus cli and all forgejo action scripts 2026-06-19 22:53:39 -05:00
.github chore: import somnus cli and all forgejo action scripts 2026-06-19 22:53:39 -05:00
modpacks actions: auto-update 2026-06-27 00:00:37 +00:00
src chore(ci): update somnus 2026-06-25 18:12:37 -05:00
tools chore(ci): update somnus 2026-06-25 18:12:37 -05:00
.gitignore chore: import somnus cli and all forgejo action scripts 2026-06-19 22:53:39 -05:00
CONTRIBUTING.md chore: import somnus cli and all forgejo action scripts 2026-06-19 22:53:39 -05:00
README.md chore: import somnus cli and all forgejo action scripts 2026-06-19 22:53:39 -05:00

monorepository

Monorepo for all cake modpacks!

Modpacks

To work on modpacks, you must install Packwiz and Somnus, which are detailed below

Actions

The repository makes usage of Forgejo actions, for CI/CD and general QoL improvements to our dev process.

Current Functions

  • Auto Publish
  • Auto Update and Auto Refresh*
  • Auto Build
  • Bulk Refresh*
  • Bulk Update*
  • Bulk Loader Update*
  • Bulk PNG Optimizer
  • JSON Linter
  • TOML Linter
  • Modpack Sync*

*for modpacks only

Using Auto Publish

Every project in the repo must have a manifest.json. This manifest.json specifies stuff that our publish.yml then uses to auto publish. Once it is set up, you may simply bump version in the manifest.json and it will update across platforms.

Please read tools/manifest/schema.json to understand the manifest.json.

Whenever Auto Publish is ran, it will be ran through a Validator. The Validator will fail if something is improperly configured; whether that be the lack of a changelog.md, a malformed manifest.json, or other reasons. If a publish run fails, please look to your manifest and set-up to make sure you are properly set up.

Auto Publish will also automatically list out every mod updated, added or removed in a modpack, and all commits to the pack. This allows for some time saving as you no longer now have to keep track of constant changes, and they are automatically added to the changelog

Using Canary Channels

Our Auto Publish action comes with an additional thing, a Canary channel for projects. To properly utilize this, add in a manifest-experimental.json, and properly configure it according to the schema, and every commit on the pack, it will automatically publish to a dedicated canary channel.

Using Sync

To address issues regarding our packs being intertwined in content and development, there is now a Sync system implemented.

Sync will essentially make one pack act as a library for whatever pack needs it. A good example is Simply Optimized Forked; a handful of our modpacks utilize this modpack as its performance base, so that we do not have to reimplement the same optimizations over and over.

In manifest.json, a pack must declare whether it is a base. If it is, then other packs can hook into it to be synced up automatically, with a structure similar to this:

"role": {
    "performance_base": {
      "pack": "lce-common",
      "mappings": [
        { "source": "26.1.2-mr", "target": "26.1.2-mr" }
      ]
    }
  }
} 

This means that this pack is directly synced with lce-common, benefitting from all of its changes automatically. It allows for easier development as the packs relying on it are essentially patches on top of the base.

Using Auto Update & Auto Refresh

Auto Update and Auto Refresh can be very powerful things! It allows you to automatically update packs. Since May 23rd, 2026, the action has now been made opt-out as well.

Auto Update and Auto Refresh will automatically update and validate all mods in every pack that is not opted-out of the feature. To opt out, please add a auto-update-ignore.json, with any reason you'd like. This is purely cosmetic and does not impact anything.

Using Builds

All builds in the repo occur when a commit happens to their specific subdirectory. These builds are the same as what Auto Publish uses.

Only the pack modified within a commit will be built. So if you modified something in, lets say Simply Legacy, your commit would only build Simply Legacy, and not Re-Console+ or 2000's Edition.

This means builds can be very fast, sometimes taking only 30 seconds.

Using Linters

All linters automatically run on commit, and will fail if the modified JSON/TOML is broken. This is helpful in the case of making a minor mistake in syntax

Using Bulk Actions

Bulk Actions allow you to a lot of one thing, in a single button push via our ForgeJo. This allows for bulk PNG compression, a bulk refresh (which will fix any broken modpacks), and a bulk update (does the same as auto update and auto refresh!)