diff options
Diffstat (limited to 'src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java')
-rw-r--r-- | src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java | 50 |
1 files changed, 19 insertions, 31 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java index d4dd7fb0..65b9648f 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java @@ -1,5 +1,6 @@ package me.xmrvizzy.skyblocker.skyblock.dungeon; +import me.xmrvizzy.skyblocker.SkyblockerMod; import me.xmrvizzy.skyblocker.chat.ChatListener; import me.xmrvizzy.skyblocker.utils.Utils; import net.fabricmc.fabric.api.client.command.v1.ClientCommandManager; @@ -11,8 +12,9 @@ import java.util.regex.Pattern; public class Reparty extends ChatListener { private static final MinecraftClient client = MinecraftClient.getInstance(); + private static final SkyblockerMod skyblocker = SkyblockerMod.getInstance(); public static final Pattern PLAYER = Pattern.compile(" ([a-zA-Z0-9_]{2,16}) ●"); - private static final int SLEEP_TIME = 600; + private static final int BASE_DELAY = 20; private String[] players; private int playersSoFar; @@ -53,45 +55,31 @@ public class Reparty extends ChatListener { return false; } if (playersSoFar == players.length) - new Thread(this::reparty).start(); + reparty(); return false; } private void reparty() { ClientPlayerEntity playerEntity = client.player; assert playerEntity != null; - StringBuilder sb = new StringBuilder("/p disband"); - for (int i = 0; i < players.length; i++) { - if (i % 5 == 0) { - sleep(); - playerEntity.sendChatMessage(sb.toString()); - sb.setLength(0); - sb.append("/p invite"); + sendCommand(playerEntity, "/p disband", 1); + StringBuilder sb = new StringBuilder(); + int invites = (players.length - 1) / 5 + 1; + for(int i = 0; i < invites; i++) { + sb.setLength(0); + sb.append("/p invite"); + for(int j = 0; j < 5 && i * 5 + j < players.length; j++) { + sb.append(' '); + sb.append(players[i * 5 + j]); } - sb.append(' '); - sb.append(players[i]); + sendCommand(playerEntity, sb.toString(), i + 2); } - if (players.length % 5 != 0) { - sleep(); - playerEntity.sendChatMessage(sb.toString()); - } - repartying = false; + skyblocker.scheduler.schedule(() -> repartying = false, invites + 2); } - private void sleep() { - long sleepStart = System.currentTimeMillis(); - boolean interrupted = false; - long sleepLeft = SLEEP_TIME; - do { - if (interrupted) { - sleepLeft = sleepStart + SLEEP_TIME - System.currentTimeMillis(); - interrupted = false; - } - try { - Thread.sleep(sleepLeft); - } catch (InterruptedException e) { - interrupted = true; - } - } while (interrupted); + private void sendCommand(ClientPlayerEntity player, String command, int delay) { + skyblocker.scheduler.schedule(() -> + player.sendChatMessage(command), delay * BASE_DELAY + ); } } |