- Improved projects updating, by @SettingDust in #49.
- Projects now prefer their current loaders of project files when updating.
- Added option the specify the project type when adding projects, by @SettingDust in #54.
- Fixed duplicated project files when updating.
- Updated Exporting a Modpack docs page and improved the Managing Projects docs page.
- Fixed an issue that caused project files from CurseForge to be outdated due to incorrect release date parsing.
- Reverted
glob
pattern matching support for overrides, due to performance limitations with large modpacks.- It will be reintroduced in the next releases.
- Implemented
glob
pattern support for specifying overrides. by @SettingDust in #43, and @juraj-hrivnak.- An asterisk "
*
" matches anything except a slash. The character "?
" matches any one character except "/
". The range notation, e.g.[a-zA-Z]
, can be used to match one of the characters in a range. - Two consecutive asterisks ("
**
") means match in all directories;<directory>/**
means match everything inside the directory. - An optional prefix "
!
" negates the pattern; any matching file included by a previous pattern will become excluded again.
- An asterisk "
- Implemented retry logic for the
fetch
command.- Use
pakku fetch --retry
to retry downloading when it fails, with an optional number of times to retry. (Defaults to 2.)
- Use
- Added support for specifying a different version of an already added project using the
add
command. - Added simple colored diff for showing changes to file names when using the
status
command. - The newest file from all providers is now preferred when downloading, by @SettingDust in #41.
- Added the
cfg
command for configuring properties of the config file, by @SettingDust in #29.- This change deprecated the
pakku set [<projects>]
argument. Use the config file (pakku.json
) or thecfg prj
subcommand instead.
- This change deprecated the
- Implemented configurable subpaths for projects and configurable paths for project types.
- Implemented configurable project aliases, by @SettingDust in #34.
- Added support for data packs.
- Added better support for multi-loader modpacks, by @SettingDust in #36 and #37. (Sinytra Connector support.)
- Project files are now also sorted in order of loaders in the lock file.
- Rewritten
fetch
command's deleting algorithm to account for subpaths.- Saves & screenshots are always excluded.
- Improved the UI of the
status
command.- Now it's much nicer and shows you changes to project files.
- Fixed ConcurrentModificationException on running
fetch
command in some cases. - Fixed setting loaders using the
set
command when projects have unusual loaders.
There is now a new subpath
property for projects that you configure in the config file or using the cfg prj
subcommand.
Config file - syntax:
{
"projects": {
"<project>": {
"subpath": "<path>"
}
}
}
Config file - example usage:
{
"projects": {
"sodium-extras": {
"subpath": "optimize.client"
},
"iris": {
"subpath": "decoration.client"
}
}
}
There is now a variable for each project type that you configure in the config file or using the cfg
command.
Config file - syntax:
{
"paths": {
"mods": "<path>",
"resource_packs": "<path>",
"data_packs": "<path>",
"worlds": "<path>",
"shaders": "<path>"
}
}
There is now a new aliases
property of type array for projects that you configure in the config file or using the cfg prj
subcommand.
Config file - syntax:
{
"projects": {
"<project>": {
"aliases": ["<alias>"]
}
}
}
Config file - example usage:
{
"projects": {
"forgified-fabric-api": {
"aliases": ["fabric-api"]
}
}
}
- Updated Clikt to
5.0.0
& Mordant to3.0.0
. - Improved docs generation with better subcommand support.
- Fixed error when GitHub license URL is
null
.
- Fixed tag parsing in GitHub project arguments.
Pakku now fully supports GitHub.
GitHub repositories with releases can be added as projects.
To add a GitHub project, run pakku add {owner}/{repo}
or pakku add https://github.com/{owner}/{repo}
.
You can also use the prj
subcommand: pakku add prj --gh {owner}/{repo}
or pakku add prj --gh https://github.com/{owner}/{repo}
Combining projects is also possible: pakku add prj --mr greenery --gh juraj-hrivnak/Greenery
To add a specific version (tag) of a GitHub project, run pakku add {owner}/{repo}@{tag}
, pakku add https://github.com/{owner}/{repo}/releases/tag/{tag}
or pakku add https://github.com/{owner}/{repo}/tree/{tag}
.
GitHub projects can be updated using the pakku update
command.
They are also recognized in other commands as expected.
For CurseForge, GitHub projects are added to the overrides
.
For Modrinth, GitHub projects are added to the modrinth.index.json
also with generated sha512
and sha1
hashes.
The project side of GitHub projects defaults to BOTH.
If you need to change this, do so in pakku.json
.
Pakku determines whether the GitHub project is redistributable based on its licence's spdx code. No licence means ARR
.
GitHub projects are displayed in the format: gh={owner}/{repo}
- Project types can now be overridden in the config file (
pakku.json
). - Deprecated
set
command's-s
,--side
and-r
,--redistributable
options. Use the config file (pakku.json
) instead.
-
Many functions now support
IProjectProvider
s instead ofPlatform
s only. -
The lock file is now sorted by project names instead of slugs.
-
Implemented the
ProjectArg
monad to better handle project additions.-
Its
fold()
function can be used to map the possible arg types:arg.fold( commonArg = { }, gitHubArg = { } )
-
-
Integrity checking will now allow projects without hashes (GitHub) and will warn the user instead.
- Fixed
add
command not being invoked without a subcommand. (#22) - Updated to the latest snapshot of the Clikt library.
- Added the
prj
subcommand for theadd
command.- With this subcommand you can specify the project
you want to add precisely, using the
--cf
and/or--mr
options. - This subcommand can be used multiple times.
- Example usage:
pakku add prj --mr iris --cf irisshaders
- Note that the
add
command functionality remains the same.
- With this subcommand you can specify the project
you want to add precisely, using the
- Added descriptions to command arguments.
- When adding projects, slugs are now more robustly resolved.
- Project additions are now stricter. Pakku now doesn't allow you to add projects without any files.
- Fixed #15.
- Added backup handling when writing to files. When an error occurs during writing to a file a backup is restored.
- Pakku now shows you the project type alongside the slugs in all messages.
- Fixed modpack
@var@
replacements not working. - URLs in FileDirector's config are now encoded. This is a workaround for FileDirector#19.
- Refactored deleting old files in
fetch
command. (Improved performance.) - The
status
command now also shows you the Minecraft version, loaders and author. - Removed
cache4k
dependency.
- Fixed that resource and shader packs were exported to the server pack when their project side was missing.
- Fixed typo in the
export
command output path.
- Implemented auto generation of command parameters and arguments for docs.
- Updated the docs with better info on importing and command references.
- Made CLI message prefix color inverted (like it was before).
- Fixed import not recognizing files outside modpack folder.
- Removed
korlibs.io
dependency and addedkotlinx.atomicfu
. - Unzipping files now uses
okio
under the hood.
- Removed unwanted
File not found: '.\.pakku\cli-config.json'
print when CLI Config does not exist. - Set default CLI theme to Pakku's default theme instead of the default one.
- Implemented the CLI Config (
cli-config.json
), an optional file which can be used to modify the UI aspects of the Pakku CLI.- It must be located in the Pakku directory (
.pakku
). - The relative path from the
.minecraft
directory should be:.pakku/cli-config.json
. - Properties:
theme
: can bedefault
orascii
. (Defaults todefault
😜.)ansi_level
: can benone
,ansi16
,ansi256
ortruecolor
. (By default it is automatically detected based on your terminal/CMD.)
- It must be located in the Pakku directory (
NoSuchFileException
is now wrapped asFileNotFound
action error.- Errors when creating the modpack zip file now return early.
- Fixed exceptions being uncaught when writing output files on export.
- Pakku now detects terminal interactivity and ansiLevel by default.
- Rewritten exporting and implemented export rules and export profiles.
- Exporting is now cached and asynchronous.
- Internally, exporting a modpack is now controlled by a list of rules which control
what should happen with the content you want to export/package.
- Export rules must be part of an export profile to be executed.
- Each export profile is independent of each other and will result in one exported file.
- This functionality can be currently only controlled using the API. For more information see the pull request #18.
- Improved ZIP creation and removed zip4j.
- Dependencies are now not resolved on import by default.
- by @Wxrlds in pull request #16.
- There now is a
-D
,--deps
flag, which resolves dependencies like before.
- There now is a
- Added "Updated" section to diff when using the
diff
command. - by @Wxrlds in pull request #17.- There now is a
-v
,--verbose
flag which displays detailed information about which version of a project was updated to which version.
- There now is a
- Implemented modpack
@var@
replacements on export.@name@
,@version@
,@description@
and@author@
will be respectively replaced with the correct values from the config file in the exported modpack. - Improved some error messages and added hyperlinks to the exported modpack file path.
- Refactored project override syncing (with the modpack directory).
- Added initial
lockfile_version: 1
property to lock file. Lock file without this property is still treated as v1.
- Improved resolving old files on
fetch
.
- Fixed error with
fetch
command. - Added better path info for files on
fetch
.
- Fixed error with null icon in CurseForge projects.
- Fixed the
fetch
command not resolving files other than from CurseForge.
- Refactored the
fetch
command to use the new fetch action API call.- Downloading project files and writing to disk are now in separate threads, making it way faster.
- Hashes are now the preferred way to check for old project files instead of file names.
- Increased timeouts for HTTP requests to avoid issues with big modpacks.
- Implemented new UI for most of the CLI.
- Slugs now contain hyperlinks. The
ls
command is now better formatted and contains type and side information for projects.
- Slugs now contain hyperlinks. The
- Implemented the
status
command as a better way to check for updates than thels -c
command. - Improved
rm
command with better "autocomplete" for slugs. - Improved importing - now supports importing without manually setting Minecraft versions and loaders.
- Fixed issue with the
fetch
command not properly listing platforms.
- Implemented auto generation for CLI Commands reference for docs.
- Added option to switch between Java and PATH examples in docs.
- Refactored models