Skip to content

Commit

Permalink
Merge pull request #395 from Mindgamesnl/feature/wait-until-teleporta…
Browse files Browse the repository at this point in the history
…tion-finished

[fix] wait until teleportation went through before re-updating player…
  • Loading branch information
Mindgamesnl committed Feb 8, 2024
2 parents 2d0e6b4 + 24a84de commit c739589
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
import java.util.Map;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,26 +1,35 @@
package com.craftmend.openaudiomc.spigot.modules.players.listeners;

import com.craftmend.openaudiomc.OpenAudioMc;
import com.craftmend.openaudiomc.spigot.OpenAudioMcSpigot;
import com.craftmend.openaudiomc.spigot.modules.players.SpigotPlayerService;
import com.craftmend.openaudiomc.spigot.modules.players.objects.SpigotConnection;
import org.bukkit.Bukkit;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerTeleportEvent;

public class PlayerTeleportationListener implements Listener {

@EventHandler
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onTp(PlayerTeleportEvent event) {
// this event might be called before the player is registered, as some plugins use
// the teleport event to warp them to spawn, instead of the player spawn event
if (!OpenAudioMc.getService(SpigotPlayerService.class).hasClient(event.getPlayer())) return;

SpigotConnection spigotConnection = OpenAudioMc.getService(SpigotPlayerService.class).getClient(event.getPlayer());
if (spigotConnection == null) return;
if (spigotConnection.getRegionHandler() != null) {
spigotConnection.getRegionHandler().tick();
}
spigotConnection.getSpeakerHandler().tick();
// run a tick later, to run post teleport if the player actually moved
Bukkit.getScheduler().runTaskLater(OpenAudioMcSpigot.getInstance(), () -> {
if (event.isCancelled()) return;

// this event might be called before the player is registered, as some plugins use
// the teleport event to warp them to spawn, instead of the player spawn event
if (!OpenAudioMc.getService(SpigotPlayerService.class).hasClient(event.getPlayer())) return;

SpigotConnection spigotConnection = OpenAudioMc.getService(SpigotPlayerService.class).getClient(event.getPlayer());
if (spigotConnection == null) return;
if (spigotConnection.getRegionHandler() != null) {
spigotConnection.getRegionHandler().tick();
}
spigotConnection.getSpeakerHandler().tick();
}, 1);
}

}

0 comments on commit c739589

Please sign in to comment.