diff options
Diffstat (limited to 'src/main/java/kr/syeyoung/dungeonsguide/party/PartyManager.java')
-rw-r--r-- | src/main/java/kr/syeyoung/dungeonsguide/party/PartyManager.java | 133 |
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; |