diff --git a/.github/dependencies.sha256 b/.github/dependencies.sha256
index 90e1661..569d7a8 100644
--- a/.github/dependencies.sha256
+++ b/.github/dependencies.sha256
@@ -4,4 +4,3 @@ b7156eab567772f9fdac0bf696b209111790c3f69149ab9a742e3dd030ec4b10 libs/spigot-ap
086e3971ea63c0b5ad567881b2dfd955acbbffa24fe85ceac8abf54b114ce986 libs/api-5.4.jar
c84700df5942fd969d3e8c2f1ad2c3ebeb17987ef88b426408d1306e49c4aada libs/MMOItems-6.10.jar
660ff2a6ec86bc8d7779948cf65c1637e271a16e1ef812d6a273f4a5c5eec73c libs/MythicLib-1.7.jar
-db5beb70f316d0d5980981d79d9572a8538aa331e8bd7960a8115c483dc98afa libs/gunsandgadgets-1.0.6.jar
diff --git a/.github/scripts/prepare-release.sh b/.github/scripts/prepare-release.sh
index 77c3c3c..33c6484 100644
--- a/.github/scripts/prepare-release.sh
+++ b/.github/scripts/prepare-release.sh
@@ -9,5 +9,4 @@ curl --fail --location --silent --show-error --retry 3 -H "Authorization: Bearer
curl --fail --location --silent --show-error --retry 3 -H "Authorization: Bearer $GH_TOKEN" -H "Accept: application/vnd.github.raw+json" "https://api.github.com/repos/TF-Minecraft/ServerAssets/contents/jars/086e3971ea63/api-5.4.jar?ref=$ref" > "libs/api-5.4.jar"
curl --fail --location --silent --show-error --retry 3 -H "Authorization: Bearer $GH_TOKEN" -H "Accept: application/vnd.github.raw+json" "https://api.github.com/repos/TF-Minecraft/ServerAssets/contents/jars/c84700df5942/MMOItems-6.10.jar?ref=$ref" > "libs/MMOItems-6.10.jar"
curl --fail --location --silent --show-error --retry 3 -H "Authorization: Bearer $GH_TOKEN" -H "Accept: application/vnd.github.raw+json" "https://api.github.com/repos/TF-Minecraft/ServerAssets/contents/jars/660ff2a6ec86/MythicLib-1.7.jar?ref=$ref" > "libs/MythicLib-1.7.jar"
-curl --fail --location --silent --show-error --retry 3 -H "Authorization: Bearer $GH_TOKEN" -H "Accept: application/vnd.github.raw+json" "https://api.github.com/repos/TF-Minecraft/ServerAssets/contents/jars/db5beb70f316/gunsandgadgets-1.0.6.jar?ref=$ref" > "libs/gunsandgadgets-1.0.6.jar"
sha256sum --check .github/dependencies.sha256
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index d39b9c1..3093b48 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -21,10 +21,10 @@ jobs:
with:
distribution: temurin
java-version: '25'
- - name: Install latest stable TLibs in Maven
- uses: TF-Minecraft/TLibs/.github/actions/setup@5da8e77d0e0696bbff7d7064a2644072da9c6428
+ - name: Install shared plugin dependencies
+ uses: TF-Minecraft/TLibs/.github/actions/setup-plugins@7afa185bee605908a99ac55288ed27a3babbad62
with:
- version: latest
+ mode: latest
- name: Prepare pinned dependencies
env:
@@ -48,7 +48,10 @@ jobs:
- uses: actions/upload-artifact@v7
with:
name: ${{ steps.dev.outputs.name }}-${{ github.run_id }}-${{ github.run_attempt }}
- path: ${{ steps.dev.outputs.jar }}
+ path: |
+ ${{ steps.dev.outputs.jar }}
+ .build/plugin-dependencies.json
+ include-hidden-files: true
if-no-files-found: error
- name: Upload unit test reports
diff --git a/.github/workflows/maven-release.yml b/.github/workflows/maven-release.yml
index 9fdf66d..f29b160 100644
--- a/.github/workflows/maven-release.yml
+++ b/.github/workflows/maven-release.yml
@@ -50,10 +50,10 @@ jobs:
}
[[ "${TAG^^}" != *SNAPSHOT* ]] || exit 1
- - name: Install latest stable TLibs in Maven
- uses: TF-Minecraft/TLibs/.github/actions/setup@5da8e77d0e0696bbff7d7064a2644072da9c6428
+ - name: Install shared plugin dependencies
+ uses: TF-Minecraft/TLibs/.github/actions/setup-plugins@7afa185bee605908a99ac55288ed27a3babbad62
with:
- version: latest
+ mode: latest
- name: Prepare pinned dependencies
env:
@@ -102,6 +102,7 @@ jobs:
'commit': os.environ['GITHUB_SHA'],
'tag': os.environ['TAG'],
'run': f"{os.environ['GITHUB_SERVER_URL']}/{os.environ['GITHUB_REPOSITORY']}/actions/runs/{os.environ['GITHUB_RUN_ID']}",
+ 'plugin_dependencies': json.loads(pathlib.Path('.build/plugin-dependencies.json').read_text()),
'artifact': source.name,
'sha256': digest,
}, indent=2) + '\n')
diff --git a/.gitignore b/.gitignore
index 96afe12..ff13f12 100644
--- a/.gitignore
+++ b/.gitignore
@@ -34,3 +34,6 @@ Thumbs.db
# Downloaded build dependencies
/libs/*.jar
+
+# Resolved build dependency metadata
+.build/
diff --git a/README.md b/README.md
index 618e361..63d6f58 100644
--- a/README.md
+++ b/README.md
@@ -20,3 +20,22 @@ Other declared build dependencies still need their usual preparation.
Use JDK 25 for this TLibs binary; the server must also run Java 25.
Builds and server runtime require Java 25. Local builds default to [TLibs 1.1.0](https://github.com/TF-Minecraft/TLibs/releases/tag/v1.1.0); CI resolves the latest published stable TLibs release for each build, verifies its checksum, and uses its exact version throughout that job.
+
+## Shared plugin dependencies
+
+Build and release workflows install checksum-verified plugin releases through
+[TLibs' shared installer](https://github.com/TF-Minecraft/TLibs/blob/main/DEPENDENCIES.md).
+CI selects the latest published versions; local builds use the explicit Maven
+version properties. Shared plugins use `provided` scope and remain separate
+server plugins. Each build records exact versions and checksums in
+`.build/plugin-dependencies.json` alongside its JAR.
+
+From this checkout, with the TLibs repository next to it:
+
+```sh
+python3 ../tlibs/tools/install-plugins.py --pom pom.xml
+```
+
+Prepare any remaining third-party inputs with `.github/scripts/prepare-release.sh`
+before running Maven. Any source-unavailable inputs remain private and checksum-pinned wherever declared; see the installer
+documentation for authentication and reproducible rebuilds.
diff --git a/pom.xml b/pom.xml
index d6624d0..82c527a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -9,6 +9,7 @@
1.1.2
+ 1.0.6
1.1.0
17
17
@@ -97,11 +98,13 @@
- local
- GunsAndGadgets
- 1.0.6
- system
- ${project.basedir}/libs/gunsandgadgets-1.0.6.jar
+ net.tfminecraft
+ gunsandgadgets
+ ${gunsandgadgets.version}
+ provided
+
+ **
+