Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
106 changes: 106 additions & 0 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
name: Build & Release

on:
push:
branches:
- master

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
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

- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: OneWayElytra-Artifact
path: release/

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-Artifact
path: release

- name: Read changelog
run: |
if [ -f changelog.md ]; then
{
echo "CHANGELOG<<EOF"
cat changelog.md
echo "EOF"
} >> $GITHUB_ENV
else
{
echo "CHANGELOG<<EOF"
echo "No changelog available."
echo "EOF"
} >> $GITHUB_ENV
fi

- name: Read version from pom.xml
run: |
VERSION=$(grep -m1 '<version>' pom.xml | sed -E 's/.*<version>(.*)<\/version>.*/\1/')
echo "VERSION=$VERSION" >> $GITHUB_ENV

- name: Delete existing release and tag if present
continue-on-error: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh release delete "${{ env.VERSION }}" --yes --cleanup-tag

- name: Create GitHub Release
uses: softprops/action-gh-release@v2
with:
name: Release ${{ env.VERSION }}
tag_name: ${{ env.VERSION }}
target_commitish: master
body: |
Automated release notes for version ${{ env.VERSION }}

## Changelog
${{ env.CHANGELOG }}
files: |
release/*.jar
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
6 changes: 0 additions & 6 deletions changelog.md

This file was deleted.

4 changes: 2 additions & 2 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -81,13 +81,13 @@
<dependency>
<groupId>org.spigotmc</groupId>
<artifactId>spigot-api</artifactId>
<version>26.1.2-R0.1-SNAPSHOT</version>
<version>26.1-R0.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.sk89q.worldguard</groupId>
<artifactId>worldguard-bukkit</artifactId>
<version>7.0.16</version>
<version>7.0.15</version>
<scope>provided</scope>
</dependency>
<dependency>
Expand Down
14 changes: 2 additions & 12 deletions src/main/java/de/jugglegaming/oneWayElytra/OneWayElytra.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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() {
Expand All @@ -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 + "*~*~*~*~*~*~*~* <<OneWayElytra>> *~*~*~*~*~*~*~*");
ccs.sendMessage(prefix + "Plugin successfully loaded!");
ccs.sendMessage(prefix + "Version: " + getDescription().getVersion());
Expand Down Expand Up @@ -88,7 +79,7 @@ public FileManager getFileManager() {

@EventHandler
public void registerListener() {
oneWayElytraListener = new OneWayElytraListener(this, worldguardHook);
oneWayElytraListener = new OneWayElytraListener(this);
pluginManager.registerEvents(oneWayElytraListener, this);
}

Expand All @@ -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.");
Expand Down
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -27,69 +35,46 @@ public class OneWayElytraListener implements Listener {
private List<Location> 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);
}

Expand All @@ -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){
Expand Down

This file was deleted.

Loading