Skip to content

Instantly share code, notes, and snippets.

@electronicboy
Created February 25, 2022 01:18
Show Gist options
  • Save electronicboy/59a5d72024c1fc053217056499cea2c8 to your computer and use it in GitHub Desktop.
Save electronicboy/59a5d72024c1fc053217056499cea2c8 to your computer and use it in GitHub Desktop.
private final Map<UUID, AbstractMap.SimpleEntry<Integer, Boolean>> worldTeleports = new HashMap<>();
@EventHandler
public void onPlayerChangeWorld(PlayerChangedWorldEvent e) {
final AbstractMap.SimpleEntry<Integer, Boolean> entry = worldTeleports.remove(e.getPlayer().getUniqueId());
if (e.getPlayer().hasPermission("essentials.fly")) {
if (entry != null && Bukkit.getCurrentTick() == entry.getKey()) {
e.getPlayer().setAllowFlight(true);
if (entry.getValue()) {
e.getPlayer().setFlying(true);
}
}
}
}
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
public void onPlayerTeleport(final PlayerTeleportEvent event) {
if (event.getFrom().getWorld() != event.getTo().getWorld()) {
if (event.getPlayer().isFlying() || event.getPlayer().getAllowFlight()) {
worldTeleports.put(event.getPlayer().getUniqueId(), new AbstractMap.SimpleEntry<>(Bukkit.getCurrentTick(), event.getPlayer().getAllowFlight()));
boolean isFlying = event.getPlayer().isFlying();
Bukkit.getScheduler().runTaskLater(ess, () -> {
if (event.getPlayer().hasPermission("essentials.fly")) {
event.getPlayer().setAllowFlight(true);
if (isFlying) {
event.getPlayer().setFlying(true);
}
}
}, 5);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment