From 4df09a183393ef47f4c2c9c540fd8663c6d89015 Mon Sep 17 00:00:00 2001 From: JuggleGaming <48456801+JuggleGaming@users.noreply.github.com> Date: Fri, 22 May 2026 08:55:48 +0200 Subject: [PATCH 1/7] Add GitHub Actions workflow for build and release This workflow builds a JAR file and creates a GitHub release upon tag push. --- .github/workflows/main.yml | 89 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 .github/workflows/main.yml diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 0000000..492c0cc --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,89 @@ +name: Build & Release +on: + push: + tags: + - '*' + +permissions: + contents: write + +jobs: + build: + name: Build JAR + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Set up Java 21 + uses: actions/setup-java@v4 + with: + distribution: temurin + java-version: '21' + cache: maven + + - name: Build with Maven + run: mvn clean package + + - name: Prepare release JAR + run: | + mkdir -p release + + ORIGINAL_JAR=$(find target -maxdepth 1 -type f -name "*.jar" \ + ! -name "*sources.jar" \ + ! -name "*javadoc.jar" \ + | head -n 1) + + cp "$ORIGINAL_JAR" "release/OneWayElytra-${GITHUB_REF_NAME}.jar" + + - name: Upload artifact + uses: actions/upload-artifact@v4 + with: + name: OneWayElytra + path: release/OneWayElytra-${{ github.ref_name }}.jar + + release: + name: Create GitHub Release + runs-on: ubuntu-latest + needs: build + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Download artifact + uses: actions/download-artifact@v4 + with: + name: OneWayElytra + path: release + + - name: Read changelog + id: changelog + run: | + if [ -f changelog.md ]; then + { + echo "CHANGELOG<> $GITHUB_ENV + else + { + echo "CHANGELOG<> $GITHUB_ENV + fi + + - name: Create GitHub Release + uses: softprops/action-gh-release@v2 + with: + name: Release ${{ github.ref_name }} + tag_name: ${{ github.ref_name }} + body: | + Automated release notes for version ${{ github.ref_name }} + + ## Changelog + ${{ env.CHANGELOG }} + files: | + release/OneWayElytra-${{ github.ref_name }}.jar From 3ff5a1b634f5958f214eb0e2b5594984306f5976 Mon Sep 17 00:00:00 2001 From: JuggleGaming <48456801+JuggleGaming@users.noreply.github.com> Date: Fri, 22 May 2026 09:00:43 +0200 Subject: [PATCH 2/7] Refactor workflow to utilize version from pom.xml Updated GitHub Actions workflow to use version from pom.xml for artifact naming and release tagging. --- .github/workflows/main.yml | 46 ++++++++++++++++++++++++++++++-------- 1 file changed, 37 insertions(+), 9 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 492c0cc..9a88466 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -1,8 +1,9 @@ name: Build & Release + on: push: - tags: - - '*' + branches: + - main permissions: contents: write @@ -35,13 +36,17 @@ jobs: ! -name "*javadoc.jar" \ | head -n 1) - cp "$ORIGINAL_JAR" "release/OneWayElytra-${GITHUB_REF_NAME}.jar" + VERSION=$(grep -m1 '' pom.xml | sed -E 's/.*(.*)<\/version>.*/\1/') + + cp "$ORIGINAL_JAR" "release/OneWayElytra-${VERSION}.jar" + + echo "VERSION=$VERSION" >> $GITHUB_ENV - name: Upload artifact uses: actions/upload-artifact@v4 with: name: OneWayElytra - path: release/OneWayElytra-${{ github.ref_name }}.jar + path: release/OneWayElytra-${{ env.VERSION }}.jar release: name: Create GitHub Release @@ -59,7 +64,6 @@ jobs: path: release - name: Read changelog - id: changelog run: | if [ -f changelog.md ]; then { @@ -75,15 +79,39 @@ jobs: } >> $GITHUB_ENV fi + - name: Read version from pom.xml + run: | + VERSION=$(grep -m1 '' pom.xml | sed -E 's/.*(.*)<\/version>.*/\1/') + echo "VERSION=$VERSION" >> $GITHUB_ENV + + - name: Delete existing release if present + continue-on-error: true + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + gh release delete "${VERSION}" --yes + + - name: Delete existing tag if present + continue-on-error: true + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + git push --delete origin "${VERSION}" + + - name: Create tag + run: | + git tag "${VERSION}" + git push origin "${VERSION}" + - name: Create GitHub Release uses: softprops/action-gh-release@v2 with: - name: Release ${{ github.ref_name }} - tag_name: ${{ github.ref_name }} + name: Release ${{ env.VERSION }} + tag_name: ${{ env.VERSION }} body: | - Automated release notes for version ${{ github.ref_name }} + Automated release notes for version ${{ env.VERSION }} ## Changelog ${{ env.CHANGELOG }} files: | - release/OneWayElytra-${{ github.ref_name }}.jar + release/OneWayElytra-${{ env.VERSION }}.jar From 7cc5b291013a9efd197bf84c711e2a0325a8876a Mon Sep 17 00:00:00 2001 From: JuggleGaming <48456801+JuggleGaming@users.noreply.github.com> Date: Fri, 22 May 2026 09:05:19 +0200 Subject: [PATCH 3/7] Update main.yml --- .github/workflows/main.yml | 35 +++++++++++++---------------------- 1 file changed, 13 insertions(+), 22 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 9a88466..0cc097a 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -30,23 +30,20 @@ jobs: - name: Prepare release JAR run: | mkdir -p release - ORIGINAL_JAR=$(find target -maxdepth 1 -type f -name "*.jar" \ ! -name "*sources.jar" \ ! -name "*javadoc.jar" \ | head -n 1) - VERSION=$(grep -m1 '' pom.xml | sed -E 's/.*(.*)<\/version>.*/\1/') - cp "$ORIGINAL_JAR" "release/OneWayElytra-${VERSION}.jar" - echo "VERSION=$VERSION" >> $GITHUB_ENV + # Wichtig: Wir laden den gesamten release-Ordner hoch, um die Struktur zu behalten - name: Upload artifact uses: actions/upload-artifact@v4 with: - name: OneWayElytra - path: release/OneWayElytra-${{ env.VERSION }}.jar + name: OneWayElytra-Artifact + path: release/ release: name: Create GitHub Release @@ -60,7 +57,7 @@ jobs: - name: Download artifact uses: actions/download-artifact@v4 with: - name: OneWayElytra + name: OneWayElytra-Artifact path: release - name: Read changelog @@ -79,39 +76,33 @@ jobs: } >> $GITHUB_ENV fi + # Version auslesen und für GitHub Actions Syntax verfügbar machen - name: Read version from pom.xml run: | VERSION=$(grep -m1 '' pom.xml | sed -E 's/.*(.*)<\/version>.*/\1/') echo "VERSION=$VERSION" >> $GITHUB_ENV - - name: Delete existing release if present + # Bereinigung via GitHub CLI (löscht Release UND das Tag auf GitHub sauber) + - name: Delete existing release and tag if present continue-on-error: true env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | - gh release delete "${VERSION}" --yes - - - name: Delete existing tag if present - continue-on-error: true - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - git push --delete origin "${VERSION}" - - - name: Create tag - run: | - git tag "${VERSION}" - git push origin "${VERSION}" + gh release delete "${{ env.VERSION }}" --yes --cleanup-tag + # Das Erstellen des Tags übernimmt softprops/action-gh-release automatisch! - name: Create GitHub Release uses: softprops/action-gh-release@v2 with: name: Release ${{ env.VERSION }} tag_name: ${{ env.VERSION }} + target_commitish: main body: | Automated release notes for version ${{ env.VERSION }} ## Changelog ${{ env.CHANGELOG }} files: | - release/OneWayElytra-${{ env.VERSION }}.jar + release/*.jar + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} From a40abb4c64a857c828da1eb4c241e84880228941 Mon Sep 17 00:00:00 2001 From: JuggleGaming <48456801+JuggleGaming@users.noreply.github.com> Date: Fri, 22 May 2026 09:06:47 +0200 Subject: [PATCH 4/7] Fix formatting in main.yml From a5455a4b6c32a9e62f31049ba1ce5b5e99dd0486 Mon Sep 17 00:00:00 2001 From: JuggleGaming <48456801+JuggleGaming@users.noreply.github.com> Date: Fri, 22 May 2026 09:09:35 +0200 Subject: [PATCH 5/7] Revert "Update 1.1.2 (MC: 26.1.2)" --- changelog.md | 6 -- pom.xml | 4 +- .../oneWayElytra/OneWayElytra.java | 14 +-- .../listeners/OneWayElytraListener.java | 87 ++++++++----------- .../oneWayElytra/utils/WorldguardHook.java | 38 -------- 5 files changed, 42 insertions(+), 107 deletions(-) delete mode 100644 changelog.md delete mode 100644 src/main/java/de/jugglegaming/oneWayElytra/utils/WorldguardHook.java diff --git a/changelog.md b/changelog.md deleted file mode 100644 index 76019e1..0000000 --- a/changelog.md +++ /dev/null @@ -1,6 +0,0 @@ -## Version: 1.1.2 - -- Added changelog-system -- Fixed an error occurring when worldguard is not installed -- Changed how the worldguard hook is working -- added an indicator, showing if worldguard is installed \ No newline at end of file diff --git a/pom.xml b/pom.xml index 2dbe470..ab04224 100644 --- a/pom.xml +++ b/pom.xml @@ -81,13 +81,13 @@ org.spigotmc spigot-api - 26.1.2-R0.1-SNAPSHOT + 26.1-R0.1-SNAPSHOT provided com.sk89q.worldguard worldguard-bukkit - 7.0.16 + 7.0.15 provided diff --git a/src/main/java/de/jugglegaming/oneWayElytra/OneWayElytra.java b/src/main/java/de/jugglegaming/oneWayElytra/OneWayElytra.java index f30b0fb..28d8032 100644 --- a/src/main/java/de/jugglegaming/oneWayElytra/OneWayElytra.java +++ b/src/main/java/de/jugglegaming/oneWayElytra/OneWayElytra.java @@ -6,7 +6,6 @@ import de.jugglegaming.oneWayElytra.managers.RadiusManager; import de.jugglegaming.oneWayElytra.utils.Tools; import de.jugglegaming.oneWayElytra.utils.WorldguardFlags; -import de.jugglegaming.oneWayElytra.utils.WorldguardHook; import de.jugglegaming.oneWayElytra.utils.WorldguardUtils; import org.bukkit.Bukkit; import org.bukkit.command.ConsoleCommandSender; @@ -30,9 +29,6 @@ public final class OneWayElytra extends JavaPlugin { private OneWayElytraListener oneWayElytraListener; private WorldguardFlags wgFlag; - private WorldguardHook worldguardHook; - - private boolean isWorldguardInstalled; @Override public void onLoad() { @@ -55,12 +51,7 @@ public void onEnable() { ccs.sendMessage(prefix + "Listeners successfully registered!"); registerCommands(); ccs.sendMessage(prefix + "Commands successfully registered!"); - isWorldguardInstalled = WorldguardUtils.isWorldGuardInstalled(); - if(isWorldguardInstalled) { - ccs.sendMessage(prefix + "WorldGuard: connected"); - } else { - ccs.sendMessage(prefix + "WorldGuard: not found"); - } + ccs.sendMessage(prefix + "*~*~*~*~*~*~*~* <> *~*~*~*~*~*~*~*"); ccs.sendMessage(prefix + "Plugin successfully loaded!"); ccs.sendMessage(prefix + "Version: " + getDescription().getVersion()); @@ -88,7 +79,7 @@ public FileManager getFileManager() { @EventHandler public void registerListener() { - oneWayElytraListener = new OneWayElytraListener(this, worldguardHook); + oneWayElytraListener = new OneWayElytraListener(this); pluginManager.registerEvents(oneWayElytraListener, this); } @@ -102,7 +93,6 @@ public void connectToWorldguard(){ Plugin worldGuard = pluginManager.getPlugin("WorldGuard"); if(WorldguardUtils.isWorldGuardInstalled()){ WorldguardFlags.load(); - worldguardHook = new WorldguardHook(); ccs.sendMessage("[OneWayElytra] Successfully connected to WorldGuard!"); } else { ccs.sendMessage("[OneWayElytra] Worldguard not found."); diff --git a/src/main/java/de/jugglegaming/oneWayElytra/listeners/OneWayElytraListener.java b/src/main/java/de/jugglegaming/oneWayElytra/listeners/OneWayElytraListener.java index 3008eb3..f86a248 100644 --- a/src/main/java/de/jugglegaming/oneWayElytra/listeners/OneWayElytraListener.java +++ b/src/main/java/de/jugglegaming/oneWayElytra/listeners/OneWayElytraListener.java @@ -1,8 +1,16 @@ package de.jugglegaming.oneWayElytra.listeners; +import com.sk89q.worldedit.bukkit.BukkitAdapter; +import com.sk89q.worldguard.LocalPlayer; +import com.sk89q.worldguard.WorldGuard; +import com.sk89q.worldguard.bukkit.WorldGuardPlugin; +import com.sk89q.worldguard.protection.ApplicableRegionSet; +import com.sk89q.worldguard.protection.regions.RegionContainer; +import com.sk89q.worldguard.protection.regions.RegionQuery; import de.jugglegaming.oneWayElytra.OneWayElytra; import de.jugglegaming.oneWayElytra.utils.ActionBar; -import de.jugglegaming.oneWayElytra.utils.WorldguardHook; +import de.jugglegaming.oneWayElytra.utils.WorldguardFlags; +import de.jugglegaming.oneWayElytra.utils.WorldguardUtils; import org.bukkit.*; import org.bukkit.block.BlockFace; import org.bukkit.entity.EntityType; @@ -27,69 +35,46 @@ public class OneWayElytraListener implements Listener { private List positions = new ArrayList<>(); private OneWayElytra oneWayElytra; - private WorldguardHook worldguardHook; - public OneWayElytraListener(OneWayElytra oneWayElytra, WorldguardHook worldguardHook) { + public OneWayElytraListener(OneWayElytra oneWayElytra){ this.oneWayElytra = oneWayElytra; - this.worldguardHook = worldguardHook; this.radius = oneWayElytra.getFileManager().getConfig().getInt("radius"); Bukkit.getScheduler().runTaskTimer(oneWayElytra, () -> { for (Player player : Bukkit.getOnlinePlayers()) { + if(WorldguardUtils.isWorldGuardInstalled()){ - boolean wgAllowed = false; + com.sk89q.worldedit.util.Location loc = BukkitAdapter.adapt(player.getLocation()); + RegionContainer container = WorldGuard.getInstance().getPlatform().getRegionContainer(); + RegionQuery query = container.createQuery(); + ApplicableRegionSet set = query.getApplicableRegions(loc); + LocalPlayer localPlayer = WorldGuardPlugin.inst().wrapPlayer(player); - if (worldguardHook != null) { - wgAllowed = worldguardHook.canFly(player); - } - - boolean inRadiusArea = - oneWayElytra.getRadiusManager() - .isInAnyArea(player.getLocation()); - - if ((wgAllowed || inRadiusArea) - && !playersFlying.contains(player) - && player.isOnGround()) { + boolean wgAllowed = set.testState(localPlayer, WorldguardFlags.ONEWAYELYTRA); + boolean inRadiusArea = oneWayElytra.getRadiusManager().isInAnyArea(player.getLocation()); - if (player.getGameMode() == GameMode.SURVIVAL - || (player.getGameMode() == GameMode.ADVENTURE - && oneWayElytra.getFileManager() - .getConfig() - .getBoolean("adventure"))) { - - player.setAllowFlight(true); + if ((wgAllowed || inRadiusArea) && !playersFlying.contains(player) && player.isOnGround()) { + if(player.getGameMode() == GameMode.SURVIVAL || player.getGameMode() == GameMode.ADVENTURE && oneWayElytra.getFileManager().getConfig().getBoolean("adventure")) { + player.setAllowFlight(true); + } } - } - if (!(wgAllowed || inRadiusArea) && !playersFlying.contains(player)) { - player.setAllowFlight(false); } - if (player.getGameMode() == GameMode.SURVIVAL - || player.getGameMode() == GameMode.ADVENTURE) { - + if (player.getGameMode() == GameMode.SURVIVAL || player.getGameMode() == GameMode.ADVENTURE) { if (playersFlying.contains(player) - && !player.getLocation() - .getBlock() - .getRelative(BlockFace.DOWN) - .getType() - .isAir()) { + && !player.getLocation().getBlock().getRelative(BlockFace.DOWN).getType().isAir()) { player.setGliding(false); playersBoosted.remove(player); - Bukkit.getScheduler().runTaskLater( - oneWayElytra, - () -> { - playersFlying.remove(player); - player.setAllowFlight(false); - }, - 5 - ); + Bukkit.getScheduler().runTaskLater(oneWayElytra, () -> { + playersFlying.remove(player); + player.setAllowFlight(false); + }, 5); } } } - }, 0, 3); } @@ -114,17 +99,21 @@ public void onToggleFlight(PlayerToggleFlightEvent event){ public boolean isAllowedToFly(Player player) { boolean wgAllowed = false; - if (worldguardHook != null) { - wgAllowed = worldguardHook.canFly(player); + if (WorldguardUtils.isWorldGuardInstalled()) { + com.sk89q.worldedit.util.Location loc = BukkitAdapter.adapt(player.getLocation()); + RegionContainer container = WorldGuard.getInstance().getPlatform().getRegionContainer(); + RegionQuery query = container.createQuery(); + ApplicableRegionSet set = query.getApplicableRegions(loc); + LocalPlayer localPlayer = WorldGuardPlugin.inst().wrapPlayer(player); + + wgAllowed = set.testState(localPlayer, WorldguardFlags.ONEWAYELYTRA); } - boolean inRadiusArea = - oneWayElytra.getRadiusManager() - .isInAnyArea(player.getLocation()); + boolean inRadiusArea = oneWayElytra.getRadiusManager().isInAnyArea(player.getLocation()); + return wgAllowed || inRadiusArea; } - @EventHandler public void onEntityDamage(EntityDamageEvent event){ if(event.getEntityType() == EntityType.PLAYER){ diff --git a/src/main/java/de/jugglegaming/oneWayElytra/utils/WorldguardHook.java b/src/main/java/de/jugglegaming/oneWayElytra/utils/WorldguardHook.java deleted file mode 100644 index 269f0f2..0000000 --- a/src/main/java/de/jugglegaming/oneWayElytra/utils/WorldguardHook.java +++ /dev/null @@ -1,38 +0,0 @@ -package de.jugglegaming.oneWayElytra.utils; - -import com.sk89q.worldedit.bukkit.BukkitAdapter; -import com.sk89q.worldguard.LocalPlayer; -import com.sk89q.worldguard.WorldGuard; -import com.sk89q.worldguard.bukkit.WorldGuardPlugin; -import com.sk89q.worldguard.protection.ApplicableRegionSet; -import com.sk89q.worldguard.protection.regions.RegionContainer; -import com.sk89q.worldguard.protection.regions.RegionQuery; -import org.bukkit.entity.Player; - -public class WorldguardHook { - - public boolean canFly(Player player) { - - com.sk89q.worldedit.util.Location loc = - BukkitAdapter.adapt(player.getLocation()); - - RegionContainer container = - WorldGuard.getInstance() - .getPlatform() - .getRegionContainer(); - - RegionQuery query = container.createQuery(); - - ApplicableRegionSet set = - query.getApplicableRegions(loc); - - LocalPlayer localPlayer = - WorldGuardPlugin.inst().wrapPlayer(player); - - return set.testState( - localPlayer, - WorldguardFlags.ONEWAYELYTRA - ); - } - -} From 05a93d76bd85873e47ae103c56f263e0ff1c8cfc Mon Sep 17 00:00:00 2001 From: JuggleGaming <48456801+JuggleGaming@users.noreply.github.com> Date: Fri, 22 May 2026 09:09:52 +0200 Subject: [PATCH 6/7] Update main.yml --- .github/workflows/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 0cc097a..9d4b1f2 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -3,7 +3,7 @@ name: Build & Release on: push: branches: - - main + - master permissions: contents: write @@ -96,7 +96,7 @@ jobs: with: name: Release ${{ env.VERSION }} tag_name: ${{ env.VERSION }} - target_commitish: main + target_commitish: master body: | Automated release notes for version ${{ env.VERSION }} From 17ef23fa9c06c5c54d7b91975149f66c95ea78eb Mon Sep 17 00:00:00 2001 From: JuggleGaming <48456801+JuggleGaming@users.noreply.github.com> Date: Fri, 22 May 2026 09:17:15 +0200 Subject: [PATCH 7/7] Refactor release preparation in GitHub Actions workflow Updated release preparation steps to use SHADED_JAR and simplified version extraction. --- .github/workflows/main.yml | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 9d4b1f2..242f7f8 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -30,15 +30,16 @@ jobs: - name: Prepare release JAR run: | mkdir -p release - ORIGINAL_JAR=$(find target -maxdepth 1 -type f -name "*.jar" \ - ! -name "*sources.jar" \ - ! -name "*javadoc.jar" \ - | head -n 1) - VERSION=$(grep -m1 '' pom.xml | sed -E 's/.*(.*)<\/version>.*/\1/') - cp "$ORIGINAL_JAR" "release/OneWayElytra-${VERSION}.jar" + VERSION=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout) + SHADED_JAR=$(find target -maxdepth 1 -type f -name "*.jar" \ + ! -name "original-*" \ + ! -name "*sources.jar" \ + ! -name "*javadoc.jar" \ + | head -n 1) + + cp "$SHADED_JAR" "release/OneWayElytra-${VERSION}.jar" echo "VERSION=$VERSION" >> $GITHUB_ENV - - # Wichtig: Wir laden den gesamten release-Ordner hoch, um die Struktur zu behalten + - name: Upload artifact uses: actions/upload-artifact@v4 with: @@ -76,13 +77,11 @@ jobs: } >> $GITHUB_ENV fi - # Version auslesen und für GitHub Actions Syntax verfügbar machen - name: Read version from pom.xml run: | VERSION=$(grep -m1 '' pom.xml | sed -E 's/.*(.*)<\/version>.*/\1/') echo "VERSION=$VERSION" >> $GITHUB_ENV - # Bereinigung via GitHub CLI (löscht Release UND das Tag auf GitHub sauber) - name: Delete existing release and tag if present continue-on-error: true env: @@ -90,7 +89,6 @@ jobs: run: | gh release delete "${{ env.VERSION }}" --yes --cleanup-tag - # Das Erstellen des Tags übernimmt softprops/action-gh-release automatisch! - name: Create GitHub Release uses: softprops/action-gh-release@v2 with: