- Java 100%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
Reports how far the server's installed pack has drifted from the remote
packwiz pack, without touching mods/ - applying updates stays with
startserver.sh's updpackwiz.
Diffs the remote index.toml against packwiz.json, then fetches the
.pw.toml of every changed mod so the report carries real mod names and
old -> new jar versions. Changes that do not affect this server are
tagged and hidden by default: mods the pack marks side = "client", and
files matching a glob in mods_excluded_from_server.txt.
Defaults ship as packwizupdater-config.yml rather than config.yml
because on a hybrid server the plugin class loader resolves
getResource("config.yml") against the mod classpath, where
AntiTrample-1.1.1.jar already owns that name.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
||
| gradle/wrapper | ||
| src/main | ||
| .gitignore | ||
| build.gradle | ||
| gradle.properties | ||
| gradlew | ||
| gradlew.bat | ||
| README.md | ||
| settings.gradle | ||
PackwizUpdater
CatRoom / Bukkit plugin for 1.12.2 that reports how far the server's installed
packwiz pack has drifted from the remote pack. Read-only: it never touches
mods/. Applying updates stays with startserver.sh's updpackwiz.
What it does
- Fetches the remote
pack.tomlandindex.toml. - Diffs them against
packwiz.json, the statepackwiz-installerleaves behind. - Fetches the
.pw.tomlmetafile of every changed mod so the report shows real mod names and the old -> new jar version. - Flags changes this server does not care about:
client-only- the pack marks the modside = "client", so-s servernever installs it.excluded- the file matches a glob inmods_excluded_from_server.txt, sostartserver.shdeletes it after every update. These are hidden unless you passall.
Commands
| Command | Description |
|---|---|
/packwiz check |
Is the remote pack ahead of this server? Counts only. |
/packwiz diff [all] |
File-by-file list, grouped into mods / configs / other. |
/packwiz status |
Config paths, exclusion count, last check. |
/packwiz reload |
Reload config.yml and the exclusion list. |
Aliases: /pw, /packwizupdater. Permissions: packwiz.check, packwiz.admin
(both default to op). The full report is always written to
plugins/PackwizUpdater/last-diff.txt, so console output is never truncated.
Report markers
~ Ice and Fire: RotN Edition Ice and Fire-2.0.0.jar -> Ice and Fire-2.1.0.jar
+ Dark Mode Everywhere darkmodeeverywhere-1.12.2-1.1.4.jar [client-only]
- LagGoggles-1.12.2-5.9-140.jar [excluded]
~ Thaumic JEI (metadata only) ThaumicJEI-1.12.2-1.7.0.jar
metadata only means the .pw.toml changed but still points at the same jar,
so a re-run of packwiz downloads nothing new.
Config
config.yml defaults to the Friendpack v33 URL and the server root. Point
pack-url at a different branch when the pack version bumps; cache-file and
excluded-mods-file are resolved relative to server-dir.
Building
./gradlew build # -> build/libs/PackwizUpdater-1.0.0.jar
The Bukkit API comes from the CatRoom jar named by catroomJar in
gradle.properties; if that path does not exist, the build falls back to
spigot-api:1.12.2-R0.1-SNAPSHOT from Maven.
Offline testing
The diff engine runs without a server:
java -cp build/libs/PackwizUpdater-1.0.0.jar:gson.jar \
net.solarspire.packwiz.cli.DiffCli \
https://code.solarspire.net/StynaST/friendpack/raw/branch/v33/pack.toml \
/path/to/server/packwiz.json /path/to/server/mods_excluded_from_server.txt [all]
Hybrid-server note
On CatRoom the plugin class loader can resolve getResource("config.yml") to a
Forge mod's jar - Friendpack's AntiTrample-1.1.1.jar ships one at its root,
which made saveDefaultConfig() write the wrong file. The defaults are
therefore bundled as packwizupdater-config.yml and copied to
plugins/PackwizUpdater/config.yml by hand, and the config is read straight
from that file instead of getConfig().