Skip to content
Open
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
20 changes: 20 additions & 0 deletions src/main/java/com/gmail/llmdlio/townyflight/TownyFlightAPI.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;

import com.gmail.llmdlio.townyflight.event.PlayerFlightChangeEvent;
import com.palmergames.bukkit.util.BukkitTools;
import org.bukkit.Bukkit;
import org.bukkit.GameMode;
import org.bukkit.Location;
Expand Down Expand Up @@ -176,6 +178,15 @@ public static boolean allowedLocation(Player player, Location location, Resident
*/
@SuppressWarnings("deprecation")
public void removeFlight(Player player, boolean silent, boolean forced, String cause) {
PlayerFlightChangeEvent event = new PlayerFlightChangeEvent(player, false);
BukkitTools.fireEvent(event);
if (event.isCancelled()) {
if (!silent && event.getCancelMessage() != null && !event.getCancelMessage().isEmpty()) {
Message.of(event.getCancelMessage()).serious().to(player);
}
return;
}

if (!silent) {
if (forced) {
String reason = Message.getLangString("flightDeactivatedMsg");
Expand Down Expand Up @@ -205,6 +216,15 @@ public void removeFlight(Player player, boolean silent, boolean forced, String c
* @param silent true will mean no message is shown to the {@link Player}.
*/
public void addFlight(Player player, boolean silent) {
PlayerFlightChangeEvent event = new PlayerFlightChangeEvent(player, true);
BukkitTools.fireEvent(event);
if (event.isCancelled()) {
if (!silent && event.getCancelMessage() != null && !event.getCancelMessage().isEmpty()) {
Message.of(event.getCancelMessage()).serious().to(player);
}
return;
}

if (!silent) Message.of("flightOnMsg").to(player);
player.setAllowFlight(true);
cachePlayerFlight(player, true);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package com.gmail.llmdlio.townyflight.event;

import com.palmergames.bukkit.towny.event.CancellableTownyEvent;
import org.bukkit.entity.Player;
import org.bukkit.event.HandlerList;
import org.jetbrains.annotations.NotNull;

public class PlayerFlightChangeEvent extends CancellableTownyEvent {
private static final HandlerList HANDLER_LIST = new HandlerList();
private final Player player;
private final boolean flightAllowed;

public PlayerFlightChangeEvent(Player player, boolean flightAllowed) {
this.player = player;
this.flightAllowed = flightAllowed;
}

public Player getPlayer() {
return player;
}

public boolean isFlightAllowed() {
return flightAllowed;
}

public static HandlerList getHandlerList() {
return HANDLER_LIST;
}

@Override
public @NotNull HandlerList getHandlers() {
return HANDLER_LIST;
}
}