aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java
diff options
context:
space:
mode:
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.java50
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
+ );
}
}