aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/kr/syeyoung/dungeonsguide/party/PartyManager.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/kr/syeyoung/dungeonsguide/party/PartyManager.java')
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/party/PartyManager.java133
1 files changed, 117 insertions, 16 deletions
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/party/PartyManager.java b/src/main/java/kr/syeyoung/dungeonsguide/party/PartyManager.java
index a170568c..36ce815f 100644
--- a/src/main/java/kr/syeyoung/dungeonsguide/party/PartyManager.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/party/PartyManager.java
@@ -14,6 +14,7 @@ import kr.syeyoung.dungeonsguide.utils.TextUtils;
import lombok.Getter;
import net.minecraft.client.Minecraft;
import net.minecraftforge.client.event.ClientChatReceivedEvent;
+import net.minecraftforge.fml.common.eventhandler.EventPriority;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.gameevent.TickEvent;
import org.json.JSONArray;
@@ -41,6 +42,7 @@ public class PartyManager implements StompMessageHandler {
private boolean allowAskToJoin = false;
@Getter
private boolean canInvite = false;
+ private int invitedDash =0;
public void toggleAllowAskToJoin() {
if (canInvite) allowAskToJoin = !allowAskToJoin;
@@ -49,6 +51,10 @@ public class PartyManager implements StompMessageHandler {
}
}
+ public int getMemberCount() {
+ return Math.max(1, members.size());
+ }
+
public void setPartyID(String partyID) {
if (this.partyID != null && partyID == null) {
JSONObject object = new JSONObject();
@@ -59,6 +65,7 @@ public class PartyManager implements StompMessageHandler {
if (partyID != null && !partyID.equals(this.partyID)) {
Minecraft.getMinecraft().thePlayer.sendChatMessage("/p invite -");
+ invitedDash = 1;
} else {
canInvite = true;
allowAskToJoin = false;
@@ -92,26 +99,28 @@ public class PartyManager implements StompMessageHandler {
RichPresenceManager.INSTANCE.updatePresence();
}
- private boolean partyJoin = false;
+ private int partyJoin =0;
private Set<String> members = new HashSet<>();
private Map<String, Long> recentlyJoined = new HashMap<>();
- @SubscribeEvent
+ @SubscribeEvent(priority = EventPriority.HIGHEST)
public void onMessage(ClientChatReceivedEvent chatReceivedEvent) {
if (chatReceivedEvent.type == 2) return;
String str = chatReceivedEvent.message.getFormattedText();
+ System.out.println(str);
+
if (str.startsWith("§eYou have joined ")) {
- setPartyID(null);
members.clear();
String strs[] = TextUtils.stripColor(str).split(" ");
for (String s : strs) {
if (s.endsWith("'s")) {
members.add(s.substring(0, s.indexOf("'s")));
- partyJoin = true;
break;
}
}
+ members.add(Minecraft.getMinecraft().getSession().getUsername());
+ partyJoin = 100;
} else if (str.startsWith("§eYou'll be partying with: ")) {
String[] players = TextUtils.stripColor(str.substring(27)).split(" ");
for (String player : players) {
@@ -119,9 +128,11 @@ public class PartyManager implements StompMessageHandler {
members.add(player);
}
} else if (str.equals("§9§m-----------------------------§r")) {
- if (checkPlayer == 2) {chatReceivedEvent.setCanceled(true);}
- if (partyJoin) {
- partyJoin = false;
+ if ((checkPlayer > 0 || partyJoin > 0) && partyJoin != 100) {
+ chatReceivedEvent.setCanceled(true);
+ }
+ if (partyJoin == 2 || partyJoin == 100) {
+ partyJoin = 0;
// REQ PARTY JOIN
JSONArray jsonArray = new JSONArray();
@@ -133,41 +144,73 @@ public class PartyManager implements StompMessageHandler {
StompInterface stompInterface = e.getDungeonsGuide().getStompConnection();
stompInterface.send(new StompPayload().payload(object.toString()).header("destination", "/app/party.join"));
}
- if (checkPlayer == 2) {
+ if (checkPlayer == 3) {
checkPlayer = 0;
String playerName = theObject.getString("player");
String token = theObject.getString("token");
- Long loong = recentlyJoined.get(playerName);
if (!members.contains(playerName)) {
e.getDungeonsGuide().getStompConnection().send(new StompPayload().payload(new JSONObject().put("status", "failure").put("token", token).toString()).header("destination", "/app/party.check.resp"));
- } else if (loong > System.currentTimeMillis() - 2000){
+ } else {
e.getDungeonsGuide().getStompConnection().send(new StompPayload().payload(new JSONObject().put("status", "success").put("token", token).toString()).header("destination", "/app/party.check.resp"));
}
}
+ if (invitedDash > 0) {
+ invitedDash++;
+ chatReceivedEvent.setCanceled(true);
+ }
+ if (invitedDash == 3) invitedDash = 0;
} else if (str.endsWith("§ejoined the party.§r")) {
String asd = null;
for (String s : TextUtils.stripColor(str).split(" ")) {
if (s.startsWith("[")) continue;
asd = s;
+ break;
}
if (asd != null)
- recentlyJoined.put(asd, System.currentTimeMillis());
+ members.add(asd);
+ } else if (str.contains("§r§ejoined the dungeon group! (§r§b")) {
+ String username = TextUtils.stripColor(str).split(" ")[3];
+ if (username.equalsIgnoreCase(Minecraft.getMinecraft().getSession().getUsername())) {
+ Minecraft.getMinecraft().thePlayer.sendChatMessage("/pl");
+ partyJoin = 1;
+ } else {
+ members.add(username);
+ }
+ } else if (str.endsWith("§ehas been removed from the party.§r")
+ || str.endsWith("§ehas left the party.§r")) {
+ String asd = null;
+ for (String s : TextUtils.stripColor(str).split(" ")) {
+ if (s.startsWith("[")) continue;
+ asd = s;
+ break;
+ }
+ if (asd != null)
+ members.remove(asd);
} else if ((str.equals("§eYou left the party.§r")
- || str.equals("§cThe party was disbanded because all invites expired and the party was empty§r"))
- ){
+ || str.startsWith("§cThe party was disbanded")
+ || str.endsWith("§ehas disbanded the party!§r"))
+ ) {
+ members.clear();
setPartyID(null);
} else if (str.startsWith("§6Party Members ")) {
- if (checkPlayer == 2) {chatReceivedEvent.setCanceled(true);}
- partyJoin = true;
+ if (checkPlayer > 0|| partyJoin > 0) {
+ chatReceivedEvent.setCanceled(true);
+ }
+ if (partyJoin == 1) partyJoin = 2;
+ if (checkPlayer == 2) checkPlayer = 3;
members.clear();
} else if (str.startsWith("§cYou are not currently in a party.§r")) {
members.clear();
+ partyJoin = 0;
setPartyID(null);
+ } else if (TextUtils.stripColor(str).trim().isEmpty()) {
+ if ((checkPlayer > 0|| partyJoin > 0) && partyJoin != 100) {chatReceivedEvent.setCanceled(true);}
} else if (str.startsWith("§cYou are not in a party")) {
members.clear();
+ partyJoin = 0;
setPartyID(null);
} else if (str.startsWith("§eParty ") && str.contains(":")) {
- if (checkPlayer == 2) {chatReceivedEvent.setCanceled(true);}
+ if (checkPlayer > 0|| partyJoin > 0) {chatReceivedEvent.setCanceled(true);}
String playerNames = TextUtils.stripColor(str.split(":")[1]);
for (String s : playerNames.split(" ")) {
if (s.isEmpty()) continue;
@@ -176,12 +219,14 @@ public class PartyManager implements StompMessageHandler {
members.add(s);
}
} else if (str.equals("§cYou are not allowed to invite players.§r")) {
+ if (invitedDash > 0) chatReceivedEvent.setCanceled(true);
canInvite = false;
allowAskToJoin = false;
askToJoinSecret = "";
RichPresenceManager.INSTANCE.updatePresence();
} else if (str.equals("§cCouldn't find a player with that name!§r")) {
canInvite = true;
+ if (invitedDash > 0) chatReceivedEvent.setCanceled(true);
} else if (str.equals("§cYou cannot invite that player since they're not online.")) {
canInvite = true;
} else if (str.endsWith("§aenabled All Invite§r")) {
@@ -192,6 +237,61 @@ public class PartyManager implements StompMessageHandler {
askToJoinSecret = "";
RichPresenceManager.INSTANCE.updatePresence();
Minecraft.getMinecraft().thePlayer.sendChatMessage("/p invite -");
+ invitedDash = 1;
+ } else if (str.endsWith("§r§eto Party Moderator§r")) {
+ // §b[MVP§r§f+§r§b] apotato321§r§e has promoted §r§a[VIP§r§6+§r§a] syeyoung §r§eto Party Moderator§r
+ String[] thetext = TextUtils.stripColor(str).split(" ");
+ int seenThings = 0;
+ for (String s : thetext) {
+ if (s.equals("has") && seenThings == 0) seenThings = 1;
+ else if (s.equals("promoted") && seenThings == 1) seenThings = 2;
+ else if (s.equals("[")) continue;
+ else if (seenThings == 2) {
+ if (s.equals(Minecraft.getMinecraft().getSession().getUsername())) {
+ canInvite = true;
+ } else {
+ Minecraft.getMinecraft().thePlayer.sendChatMessage("/p invite -");
+ invitedDash = 1;
+ }
+ } else {
+ seenThings = 0;
+ }
+ }
+ } else if (str.startsWith("§eThe party was transferred to ")) {
+ //§eThe party was transferred to §r§b[MVP§r§f+§r§b] apotato321 §r§eby §r§a[VIP§r§6+§r§a] syeyoung§r
+ String[] thetext = TextUtils.stripColor(str.substring(31)).split(" ");
+ String asd = null;
+ for (String s : thetext) {
+ if (s.startsWith("[")) continue;
+ asd = s;
+ break;
+ }
+ if (asd != null && Minecraft.getMinecraft().getSession().getUsername().equalsIgnoreCase(asd)) {
+ canInvite = true;
+ } else {
+
+ Minecraft.getMinecraft().thePlayer.sendChatMessage("/p invite -");
+ invitedDash = 1;
+ }
+ } else if (str.endsWith("§eto Party Leader§r")) {
+ // §a[VIP§r§6+§r§a] syeyoung§r§e has promoted §r§b[MVP§r§f+§r§b] apotato321 §r§eto Party Leader§r
+ String[] thetext = TextUtils.stripColor(str).split(" ");
+ int seenThings = 0;
+ for (String s : thetext) {
+ if (s.equals("has") && seenThings == 0) seenThings = 1;
+ else if (s.equals("promoted") && seenThings == 1) seenThings = 2;
+ else if (s.equals("[")) continue;
+ else if (seenThings == 2) {
+ if (s.equals(Minecraft.getMinecraft().getSession().getUsername())) {
+ canInvite = true;
+ } else {
+ Minecraft.getMinecraft().thePlayer.sendChatMessage("/p invite -");
+ invitedDash = 1;
+ }
+ } else {
+ seenThings = 0;
+ }
+ }
}
}
@SubscribeEvent
@@ -207,6 +307,7 @@ public class PartyManager implements StompMessageHandler {
@SubscribeEvent
public void onHypixelJoin(HypixelJoinedEvent skyblockJoinedEvent) {
Minecraft.getMinecraft().thePlayer.sendChatMessage("/pl");
+ partyJoin = 1;
}
private int checkPlayer = 0;