diff --git a/.github/workflows/build-and-release.yml b/.github/workflows/build-and-release.yml index ab4c3b1..a2a8a37 100644 --- a/.github/workflows/build-and-release.yml +++ b/.github/workflows/build-and-release.yml @@ -66,6 +66,29 @@ jobs: permissions: contents: write steps: + - name: Validate SemVer tag + id: semver + shell: bash + run: | + set -euo pipefail + + raw_tag="${GITHUB_REF_NAME}" + if [[ "${raw_tag}" != v* ]]; then + echo "Expected a tag starting with 'v' (e.g. v1.2.3), got: ${raw_tag}" >&2 + exit 1 + fi + + version="${raw_tag#v}" + + # SemVer 2.0.0 (without the leading 'v') + semver_re='^(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)(?:-((?:0|[1-9][0-9]*|[0-9]*[A-Za-z-][0-9A-Za-z-]*)(?:\.(?:0|[1-9][0-9]*|[0-9]*[A-Za-z-][0-9A-Za-z-]*))*))?(?:\+([0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*))?$' + if [[ ! "${version}" =~ ${semver_re} ]]; then + echo "Tag is not SemVer 2.0.0 after stripping leading 'v': ${version}" >&2 + exit 1 + fi + + echo "version=${version}" >> "${GITHUB_OUTPUT}" + - name: Download build artifact uses: actions/download-artifact@v4 with: @@ -75,6 +98,7 @@ jobs: uses: softprops/action-gh-release@v2 with: tag_name: ${{ github.ref_name }} + name: ${{ steps.semver.outputs.version }} generate_release_notes: true files: | dist/**/*.jar diff --git a/CHANGELOG.md b/CHANGELOG.md index 4244daf..7f57251 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,13 @@ All notable changes to this project will be documented in this file. +## [3.2.0-1.21.10] - 2025-12-26 +- Build now targets Java 21 for 1.21.x dependency compatibility. +- CI/CD: GitHub Actions builds on pushes/PRs, publishes releases on `v*` tags, and maintains a rolling `main-latest` prerelease with auto-generated release notes. +- Packaging: resource filtering adjusted so `.schem` files are included correctly. +- Visitor protection: fixed ProtocolLib packet handling for block/container interaction restrictions. +- Docs/config: added/expanded permission documentation and configuration migration support. + ## [1.21.10 up2] - Enforce container/workstation access via per-island permissions and visitor settings (blocks external plugins like sell wands on others' chests). - Permission-aware inventory open/interaction handling integrated with IslandPermissionManager. diff --git a/README.md b/README.md index a2994bf..d8870c9 100644 --- a/README.md +++ b/README.md @@ -62,5 +62,11 @@ Generated files live in `plugins/SkyeBlock/`: ## Contributing / Support PRs and issues welcome. For perms: start players with `skyeblock.player`, grant `skyeblock.settings.gamerules` for safe tweaks, reserve `skyeblock.gamerule.*`/`adminbypass` for staff. + +## Server Owners +Ensure dependencies (WorldGuard, ProtocolLib) are installed for full functionality. Adjust permissions via your chosen manager (e.g., LuckPerms) to suit your server's needs. +For autoupdating you can use a plugin like +[PluginUpdater](https://modrinth.com/plugin/plugin-updater) which you can find more info [here](https://github.com/OakLoaf/PluginUpdater/wiki/PluginUpdater-Plugin#configuring-pluginupdater) + ## License Licensed under the GNU Lesser General Public License v3.0 (LGPL-3.0). See LICENSE file for details. diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index bde688b..4fa17cd 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -5,6 +5,7 @@ api-version: '1.21' authors: [SkyeNetwork] description: SkyeBlock plugin for Minecraft 1.21.10 - creating and managing skyeblock islands website: https://skyemc.net/opensource +modrinth-project-id: "UAeWLb2c" depend: [WorldEdit] softdepend: [WorldGuard, ProtocolLib, SlimeWorldManager, AdvancedSlimeWorldManager, luckperms]