From b66a188592b677d9e9da0ab45e0ef3f9c8903a6c Mon Sep 17 00:00:00 2001 From: SuperRonanCraft Date: Wed, 5 Aug 2020 19:59:44 -0400 Subject: [PATCH] async chunk finding --- .../SuperRonanCraft/BetterRTP/player/RTP.java | 34 +++++++++++-------- .../BetterRTP/player/commands/Commands.java | 13 ++++++- 2 files changed, 32 insertions(+), 15 deletions(-) diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/player/RTP.java b/src/main/java/me/SuperRonanCraft/BetterRTP/player/RTP.java index 87be425..79d9148 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/player/RTP.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/RTP.java @@ -12,6 +12,7 @@ import org.bukkit.*; import org.bukkit.block.Block; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import org.bukkit.scheduler.BukkitRunnable; import java.util.HashMap; import java.util.List; @@ -173,20 +174,25 @@ public class RTP { private void sendPlayer(final CommandSender sendi, final Player p, final Location loc, final int price, final int attempts) throws NullPointerException { - if (sendi != p) - checkPH(sendi, p.getDisplayName(), loc, price, false, attempts); - if (pl.getText().getTitleSuccessChat()) - checkPH(p, p.getDisplayName(), loc, price, true, attempts); - if (pl.getText().getTitleEnabled()) - titles(p, loc, attempts); - try { - //loc.getWorld().loadChunk(loc.getChunk()); - p.teleport(loc); - } catch (Exception e) { - e.printStackTrace(); - } - if (pl.getText().getSoundsEnabled()) - sounds(p); + new BukkitRunnable(){ + @Override + public void run() { + if (sendi != p) + checkPH(sendi, p.getDisplayName(), loc, price, false, attempts); + if (pl.getText().getTitleSuccessChat()) + checkPH(p, p.getDisplayName(), loc, price, true, attempts); + if (pl.getText().getTitleEnabled()) + titles(p, loc, attempts); + try { + //loc.getWorld().loadChunk(loc.getChunk()); + p.teleport(loc); + } catch (Exception e) { + e.printStackTrace(); + } + if (pl.getText().getSoundsEnabled()) + sounds(p); + } + }.runTask(pl); } private void checkPH(CommandSender sendi, String player, Location loc, int price, boolean sameAsPlayer, diff --git a/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/Commands.java b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/Commands.java index 55514dd..1c90e2e 100644 --- a/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/Commands.java +++ b/src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/Commands.java @@ -5,6 +5,7 @@ import me.SuperRonanCraft.BetterRTP.Main; import org.bukkit.block.Biome; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import org.bukkit.scheduler.BukkitRunnable; import java.util.ArrayList; import java.util.HashMap; @@ -124,10 +125,20 @@ public class Commands { if (timer != 0) if (sendi == player) delay = true; - pl.getRTP().start(player, sendi, world, biomes, delay); + //pl.getRTP().start(player, sendi, world, biomes, delay); + tpSync(player, sendi, world, biomes, delay); } } + private void tpSync(Player player, CommandSender sendi, String world, List biomes, boolean delay) { + new BukkitRunnable(){ + @Override + public void run() { + pl.getRTP().start(player, sendi, world, biomes, delay); + } + }.runTaskAsynchronously(pl); + } + private boolean checkDelay(CommandSender sendi, Player player) { //Bypassing/Forced? if (sendi != player || pl.getPerms().getBypassCooldown(player))