Skip to content
Compare
Choose a tag to compare
@Kir-Antipov Kir-Antipov released this 30 May 12:47

Features

  • Node.js 16 support (#39)
  • CurseForge project IDs in dependency declarations support (#56)
  • NeoForge support (#85)
  • Game version ranges support (#25)
    • Any range, such as >=1.19 <1.19.3 or even [3D Shareware v1.34,19w45b), is now interpretable by the action as intended
    • As a result, version-resolver is now deprecated as it is no longer needed
    • New game-version-filter input
  • Enhanced dependencies format
  • More descriptive and user-friendly error messages (#40, #87)
  • The automatic unfeaturing of Modrinth versions now considers version types (i.e., alpha, beta, or release) (#41)
    • New modrinth-unfeature-mode flags: version-type-subset, version-type-intersection, and version-type-any. These have been automatically integrated into the existing subset, intersection, and any presets, respectively
  • The action now provides useful outputs (#54)

Fixes

  • Older Modrinth versions will no longer be unfeatured if the publication of a new version fails (#37)
  • The action will no longer fail when attempting to upload a plugin or resource pack to CurseForge (#42)
  • An issue causing files-secondary to be ignored has been resolved; files-secondary is now deprecated and should no longer be used. This counts as a fix, right? (#47)

Obsolete Functionality

This version initiates the migration away from legacy design decisions, aiming for complete deprecation by v4.0. To be clear, your existing configurations should still operate as expected, so there's no immediate rush to update your configurations, especially if they are complex. At most, the action may emit a few deprecation warnings.

files-primary and files-secondary

This change is rather straightforward. files now accept an array of globs. Honestly, I'm not sure why it wasn't like this from the start - it seems much more logical. So, instead of:

files-primary: primary-file*.jar
files-secondary: secondary-files*.jar

You should now use:

files: |
  primary-file*.jar
  secondary-files*.jar
  even-tertiary-files-which-was-not-possible-before*.jar

dependencies

Rest assured, the input itself is not being deprecated, but its format is. Currently, you specify your dependencies like this:

dependencies: |
  required-dependency | depends | *
  optional-dependency | recommends | 0.1.0
  suggested-dependency | suggests | 0.2.0
  included-dependency | includes | 0.3.0
  conflicting-dependency | conflicts | *
  incompatible-dependency | breaks | *

This format is simple but lacks flexibility. It doesn't accommodate features such as platform-specific aliases (useful when a dependency uses different slugs on Modrinth/CurseForge/etc., or wants to specify IDs instead of slugs for each platform) or ignored platforms (handy when your dependencies are not available on a particular platform, e.g., the latest Sodium on CurseForge). Also, this format uses Fabric-like dependency types that, although fine in a metadata file, seem awkwardly worded in this context.

The same list of dependencies can be formatted as follows in the new format:

dependencies: |
  required-dependency
  recommended-dependency@0.1.0(recommended)
  optional-dependency@0.2.0(optional)
  embedded-dependency@0.3.0(embedded)
  conflicting-dependency(conflicting)
  incompatible-dependency(incompatible)

To specify platform-specific aliases or to ignore a dependency on some platforms, you can format it like this:

dependencies: |
  sodium@0.4.10(required){modrinth:AANobbMI}{curseforge:394468}#(ignore:curseforge,github)

version-resolver

With mc-publish now capable of understanding version ranges, even those including the most obscure Minecraft snapshots, additional hints via version-resolver have become unnecessary. However, version-resolver served a vital role in filtering the resulting version range. Its successor, game-version-filter, can help you filter out snapshots, select only the latest or earliest version, etc.

Here are some rough equivalents of version-resolver as game-version-filter values, which mc-publish uses to remap your deprecated inputs:

version-resolver game-version-filter
exact min | releases
latest min-major | min-minor | max-patch | releases
all min-major | min-minor
releases min-major | min-minor | releases
releasesIfAny min-major | min-minor | releases

"quilt": true

To indicate your Fabric mod's compatibility with Quilt Loader, you should now overload loaders in your fabric.mod.json instead.

"custom": {
  "mc-publish": {
-    "quilt": true
+    "loaders": ["fabric", "quilt"]
  }
}

New Contributors

Full Changelog: v3.2.0...v3.3.0