Skip to content

Commit

Permalink
fix eventpriority and improve readability
Browse files Browse the repository at this point in the history
  • Loading branch information
xGinko committed Dec 27, 2023
1 parent 52c1151 commit c861f8a
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 39 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import me.moomoo.anarchyexploitfixes.AnarchyExploitFixes;
import me.moomoo.anarchyexploitfixes.config.Config;
import me.moomoo.anarchyexploitfixes.modules.AnarchyExploitFixesModule;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
Expand All @@ -12,6 +13,7 @@
import org.bukkit.event.player.PlayerTeleportEvent;

import java.awt.*;
import java.util.UUID;

public class TeleportCoordExploit implements AnarchyExploitFixesModule, Listener {

Expand Down Expand Up @@ -60,46 +62,41 @@ public void disable() {
HandlerList.unregisterAll(this);
}

@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
private void onTeleport(PlayerTeleportEvent event) {
final PlayerTeleportEvent.TeleportCause teleportCause = event.getCause();
if (
teleportCause.equals(PlayerTeleportEvent.TeleportCause.PLUGIN)
|| teleportCause.equals(PlayerTeleportEvent.TeleportCause.COMMAND)
|| teleportCause.equals(PlayerTeleportEvent.TeleportCause.ENDER_PEARL)
) {
if (
new Point(event.getFrom().getBlockX(), event.getFrom().getBlockZ())
.distance
(new Point(event.getTo().getBlockX(), event.getTo().getBlockZ()))
>= minDistanceToVanishPlayers
) {
tempVanish(event.getPlayer());
if (this.get2DDistance(event.getFrom(), event.getTo()) >= minDistanceToVanishPlayers) {
this.tempVanish(event.getPlayer());
}
}
}

@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
private void onSpawn(PlayerRespawnEvent event) {
Player player = event.getPlayer();
if (
new Point(player.getLocation().getBlockX(), player.getLocation().getBlockZ())
.distance
(new Point(event.getRespawnLocation().getBlockX(), event.getRespawnLocation().getBlockZ()))
>= minDistanceToVanishPlayers
) {
tempVanish(player);
final Player player = event.getPlayer();
if (this.get2DDistance(player.getLocation(), event.getRespawnLocation()) >= minDistanceToVanishPlayers) {
this.tempVanish(player);
}
}

private double get2DDistance(Location a, Location b) {
return new Point(a.getBlockX(), a.getBlockZ()).distance(new Point(b.getBlockX(), b.getBlockZ()));
}

private void tempVanish(Player player) {
final UUID vanishedUUID = player.getUniqueId();
for (Player onlinePlayer : plugin.getServer().getOnlinePlayers()) {
if (onlinePlayer.equals(player)) continue;
if (onlinePlayer.getUniqueId().equals(vanishedUUID)) continue;

onlinePlayer.getScheduler().run(plugin, tempVanish -> {
onlinePlayer.hidePlayer(plugin, player);
onlinePlayer.getScheduler().runDelayed(plugin, unVanish -> onlinePlayer.showPlayer(plugin, player), null, teleportVanishTime);
}, null);
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import me.moomoo.anarchyexploitfixes.AnarchyExploitFixes;
import me.moomoo.anarchyexploitfixes.config.Config;
import me.moomoo.anarchyexploitfixes.modules.AnarchyExploitFixesModule;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
Expand All @@ -11,6 +12,7 @@
import org.bukkit.event.player.PlayerTeleportEvent;

import java.awt.*;
import java.util.UUID;

public class TeleportCoordExploit implements AnarchyExploitFixesModule, Listener {

Expand Down Expand Up @@ -52,52 +54,48 @@ public boolean shouldEnable() {
return AnarchyExploitFixes.getConfiguration().getBoolean("patches.prevent-teleport-coordinate-exploit.enable", true);
}

@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
private void onTeleport(PlayerTeleportEvent event) {
PlayerTeleportEvent.TeleportCause cause = event.getCause();
if (
cause.equals(PlayerTeleportEvent.TeleportCause.PLUGIN)
|| cause.equals(PlayerTeleportEvent.TeleportCause.COMMAND)
|| cause.equals(PlayerTeleportEvent.TeleportCause.ENDER_PEARL)
) {
if (
new Point(event.getFrom().getBlockX(), event.getFrom().getBlockZ())
.distance
(new Point(event.getTo().getBlockX(), event.getTo().getBlockZ()))
>= minDistanceToVanishPlayers
) {
if (this.get2DDistance(event.getFrom(), event.getTo()) >= minDistanceToVanishPlayers) {
Player player = event.getPlayer();
vanish(player);
plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, () -> unVanish(player), teleportVanishTime);
this.vanish(player);
plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, () -> this.unVanish(player), teleportVanishTime);
}
}
}

@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
private void onSpawn(PlayerRespawnEvent event) {
Player player = event.getPlayer();
if (
new Point(player.getLocation().getBlockX(), player.getLocation().getBlockZ())
.distance
(new Point(event.getRespawnLocation().getBlockX(), event.getRespawnLocation().getBlockZ()))
>= minDistanceToVanishPlayers
) {
vanish(player);
plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, () -> unVanish(player), teleportVanishTime);
if (this.get2DDistance(player.getLocation(), event.getRespawnLocation()) >= minDistanceToVanishPlayers) {
this.vanish(player);
plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, () -> this.unVanish(player), teleportVanishTime);
}
}

private double get2DDistance(Location a, Location b) {
return new Point(a.getBlockX(), a.getBlockZ()).distance(new Point(b.getBlockX(), b.getBlockZ()));
}

private void vanish(Player player) {
final UUID toVanish = player.getUniqueId();
for (Player onlinePlayer : plugin.getServer().getOnlinePlayers()) {
if (!onlinePlayer.equals(player)) {
if (!onlinePlayer.getUniqueId().equals(toVanish)) {
onlinePlayer.hidePlayer(plugin, player);
}
}
}

private void unVanish(Player player) {
final UUID toUnVanish = player.getUniqueId();
for (Player onlinePlayer : plugin.getServer().getOnlinePlayers()) {
if (!onlinePlayer.equals(player)) {
if (!onlinePlayer.getUniqueId().equals(toUnVanish)) {
onlinePlayer.showPlayer(plugin, player);
}
}
Expand Down

0 comments on commit c861f8a

Please sign in to comment.