blob: c12662d2807e2ab86ee0d4475e38994540aa6723 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
package me.xmrvizzy.skyblocker.skyblock.dungeon;
import me.xmrvizzy.skyblocker.chat.ChatListener;
import me.xmrvizzy.skyblocker.utils.Utils;
import net.fabricmc.fabric.api.client.command.v1.ClientCommandManager;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.network.ClientPlayerEntity;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Reparty extends ChatListener {
private static final MinecraftClient client = MinecraftClient.getInstance();
private static final Logger logger = LogManager.getLogger(Reparty.class.getName());
public static final Pattern PLAYER = Pattern.compile(" ([a-zA-Z0-9_]{2,16}) ●");
private String[] players;
private int playersSoFar;
private boolean repartying;
public Reparty() {
super("^(?:You are not currently in a party\\.|Party (?:Membe|Moderato)rs(?: \\(([0-9]+)\\)|:( .*)))$");
repartying = false;
ClientCommandManager.DISPATCHER.register(
ClientCommandManager.literal("rp").executes(context -> {
if(!Utils.isSkyblock)
return 0;
assert client.player != null;
repartying = true;
client.player.sendChatMessage("/p list");
return 0;
})
);
}
@Override
public boolean isEnabled() {
return repartying;
}
@Override
public boolean onMessage(String[] groups) {
if(groups[1] != null) {
playersSoFar = 0;
players = new String[Integer.parseInt(groups[1]) - 1];
}
else if(groups[2] != null) {
Matcher m = PLAYER.matcher(groups[2]);
while(m.find()) {
players[playersSoFar++] = m.group(1);
}
}
else
repartying = false;
if(playersSoFar == players.length)
client.execute(this::reparty);
return false;
}
private void reparty() {
ClientPlayerEntity playerEntity = client.player;
assert playerEntity != null;
playerEntity.sendChatMessage("/p disband");
for(String player : players) {
try {
Thread.sleep(200);
} catch (InterruptedException e) {
logger.info("[Skyblocker] sleep while repartying interupted!");
}
playerEntity.sendChatMessage("/p invite " + player);
}
repartying = false;
}
}
|