diff --git a/src/main/java/de/fanta/challenges/challenges/WorldBorderLevelChallenge.java b/src/main/java/de/fanta/challenges/challenges/WorldBorderLevelChallenge.java index e7c5bf4..bf78194 100644 --- a/src/main/java/de/fanta/challenges/challenges/WorldBorderLevelChallenge.java +++ b/src/main/java/de/fanta/challenges/challenges/WorldBorderLevelChallenge.java @@ -14,6 +14,7 @@ import org.bukkit.event.player.PlayerExpChangeEvent; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerLevelChangeEvent; +import org.bukkit.event.player.PlayerPortalEvent; import org.bukkit.event.player.PlayerRespawnEvent; import org.bukkit.event.world.SpawnChangeEvent; @@ -58,9 +59,9 @@ public void onRespawn(PlayerRespawnEvent e) { if (plugin.getConfig().getBoolean("worldborderlevel")) { Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, () -> { - WorldBorderApi worldBorderAPI = BorderAPI.getApi(); - worldBorderAPI.setBorder(e.getPlayer(), plugin.getCurrentEditor().getLevel(), e.getPlayer().getWorld().getSpawnLocation()); - }, 5L); + xpSync(e.getPlayer(), true); + e.getPlayer().teleport(e.getPlayer().getWorld().getSpawnLocation()); + }, 10L); } } @@ -78,8 +79,7 @@ Player p = e.getPlayer(); if (plugin.getConfig().getBoolean("worldborderlevel")) { Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, () -> { - WorldBorderApi worldBorderAPI = BorderAPI.getApi(); - xpSync(e.getPlayer(), true); + xpSync(p, true); }, 10L); } } @@ -95,6 +95,13 @@ } } + @EventHandler + public void onPortal(PlayerPortalEvent e) { + if (plugin.getConfig().getBoolean("worldborderlevel")) { + e.setTo(e.getTo().getWorld().getSpawnLocation()); + } + } + private void xpSync(Player p, Boolean borderupdate) { Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, () -> { for (Player player : Bukkit.getOnlinePlayers()) { @@ -107,17 +114,16 @@ } if (borderupdate) { Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, () -> { - if (plugin.getCurrentEditor() != null) { - for (Player player : Bukkit.getOnlinePlayers()) { - int level = player.getLevel(); - WorldBorderApi worldBorderAPI = BorderAPI.getApi(); - if (level > 0) { - worldBorderAPI.setBorder(player, level, player.getWorld().getSpawnLocation()); - } else { - worldBorderAPI.setBorder(player, 1, player.getWorld().getSpawnLocation()); - } + for (Player player : Bukkit.getOnlinePlayers()) { + int level = player.getLevel(); + WorldBorderApi worldBorderAPI = BorderAPI.getApi(); + if (level > 0) { + worldBorderAPI.setBorder(player, level, player.getWorld().getSpawnLocation()); + } else { + worldBorderAPI.setBorder(player, 1, player.getWorld().getSpawnLocation()); } } + }, 1L); } }, 1L);