From db84121d2f6d3d1cb1a93e1a2972a63a30bd607a Mon Sep 17 00:00:00 2001 From: Alexdoru <57050655+alexdoru@users.noreply.github.com> Date: Sun, 12 Jun 2022 15:49:46 +0200 Subject: [PATCH 01/37] disable automatic updater on feather --- .../megawallsenhancementsmod/updater/ModUpdater.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main/java/fr/alexdoru/megawallsenhancementsmod/updater/ModUpdater.java b/src/main/java/fr/alexdoru/megawallsenhancementsmod/updater/ModUpdater.java index e7d5bdfe..3de3729e 100644 --- a/src/main/java/fr/alexdoru/megawallsenhancementsmod/updater/ModUpdater.java +++ b/src/main/java/fr/alexdoru/megawallsenhancementsmod/updater/ModUpdater.java @@ -19,6 +19,7 @@ import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.Util; import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.fml.common.Loader; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.common.gameevent.TickEvent; @@ -108,6 +109,11 @@ public static void checkForUpdate() throws ApiException, IOException { if (ConfigHandler.automaticUpdate && browser_download_url != null && browser_download_url.endsWith(".jar")) { + if (Loader.isModLoaded("feather")) { + ChatUtil.addChatMessage(new ChatComponentText(ChatUtil.getTagMW() + EnumChatFormatting.RED + "The automatic updater is disabled on Feather.")); + return; + } + File cacheDir = new File("config/updatecache"); if (!cacheDir.exists() && !cacheDir.mkdir()) { throw new IllegalStateException("Could not create cache folder"); From 8a22a47256797c44591e45d55e2693f16eed32b8 Mon Sep 17 00:00:00 2001 From: Alexdoru <57050655+alexdoru@users.noreply.github.com> Date: Thu, 9 Jun 2022 12:11:04 +0200 Subject: [PATCH 02/37] typo (cherry picked from commit 1cd015ff0e0ec10d111c2593953f44577f65069b) --- .../alexdoru/megawallsenhancementsmod/config/ConfigHandler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/fr/alexdoru/megawallsenhancementsmod/config/ConfigHandler.java b/src/main/java/fr/alexdoru/megawallsenhancementsmod/config/ConfigHandler.java index 389c6f18..5d167b42 100644 --- a/src/main/java/fr/alexdoru/megawallsenhancementsmod/config/ConfigHandler.java +++ b/src/main/java/fr/alexdoru/megawallsenhancementsmod/config/ConfigHandler.java @@ -113,7 +113,7 @@ private static void syncConfig(boolean loadFromConfigFile, boolean readFieldsFro config.load(); } - /*Reads the fiels in the config and stores them in the property objects, and defines a default value if the fields doesn't exist*/ + /*Reads the fields in the config and stores them in the property objects, and defines a default value if the fields doesn't exist*/ final String CATEGORY_FKCounter = "Final Kill Counter"; final Property pXpos_fkcHUD = config.get(CATEGORY_FKCounter, "Xpos FKCounter HUD", 0d, "The x position of the final kill counter HUD, value ranges from 0 to 1"); final Property pYpos_fkcHUD = config.get(CATEGORY_FKCounter, "Ypos FKCounter HUD", 0.1d, "The y position of the final kill counter HUD, value ranges from 0 to 1"); From adb5c760bfde5de8043f3f2c5179813bef611201 Mon Sep 17 00:00:00 2001 From: Alexdoru <57050655+alexdoru@users.noreply.github.com> Date: Sun, 12 Jun 2022 20:50:34 +0200 Subject: [PATCH 03/37] send the command everytime when you hit [report again] (cherry picked from commit b7ef0e55f9d938423c700fecefab7f511eab3c58) --- .../megawallsenhancementsmod/asm/hooks/GuiScreenHook.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/fr/alexdoru/megawallsenhancementsmod/asm/hooks/GuiScreenHook.java b/src/main/java/fr/alexdoru/megawallsenhancementsmod/asm/hooks/GuiScreenHook.java index ef321203..b9e5998d 100644 --- a/src/main/java/fr/alexdoru/megawallsenhancementsmod/asm/hooks/GuiScreenHook.java +++ b/src/main/java/fr/alexdoru/megawallsenhancementsmod/asm/hooks/GuiScreenHook.java @@ -8,7 +8,7 @@ import fr.alexdoru.megawallsenhancementsmod.utils.NameUtil; import fr.alexdoru.nocheatersmod.data.WDR; import fr.alexdoru.nocheatersmod.data.WdredPlayers; -import fr.alexdoru.nocheatersmod.events.ReportQueue; +import net.minecraft.client.Minecraft; import net.minecraft.util.ChatComponentText; import net.minecraft.util.EnumChatFormatting; @@ -63,9 +63,11 @@ private static void handleSendReportAgain(String[] args) { wdr.timeLastManualReport = time - WDR.TIME_BETWEEN_AUTOREPORT; ChatUtil.addChatMessage(new ChatComponentText(ChatUtil.getTagNoCheaters() + EnumChatFormatting.GREEN + "Your cheating report against " + EnumChatFormatting.RED + playername + EnumChatFormatting.GREEN + " will be sent during the game.")); } else { - ReportQueue.INSTANCE.addPlayerToQueue(playername, true); wdr.timestamp = time; wdr.timeLastManualReport = time; + if (Minecraft.getMinecraft().thePlayer != null) { + Minecraft.getMinecraft().thePlayer.sendChatMessage("/wdr " + playername); + } } NameUtil.updateGameProfileAndName(playername, false); } else { From 34af32268cb38874a4acb734444f9f06a5eec6a7 Mon Sep 17 00:00:00 2001 From: Alexdoru <57050655+alexdoru@users.noreply.github.com> Date: Thu, 16 Jun 2022 20:26:35 +0200 Subject: [PATCH 04/37] authorize nicked players to shout report regardless of the rank they chose (cherry picked from commit 58bc8bc7eec5d87704435c86c060d12550ece61c) --- .../nocheatersmod/util/ReportSuggestionHandler.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/main/java/fr/alexdoru/nocheatersmod/util/ReportSuggestionHandler.java b/src/main/java/fr/alexdoru/nocheatersmod/util/ReportSuggestionHandler.java index 05fbd597..073ec55a 100644 --- a/src/main/java/fr/alexdoru/nocheatersmod/util/ReportSuggestionHandler.java +++ b/src/main/java/fr/alexdoru/nocheatersmod/util/ReportSuggestionHandler.java @@ -8,6 +8,7 @@ import fr.alexdoru.megawallsenhancementsmod.config.ConfigHandler; import fr.alexdoru.megawallsenhancementsmod.data.StringLong; import fr.alexdoru.megawallsenhancementsmod.utils.ChatUtil; +import fr.alexdoru.megawallsenhancementsmod.utils.NameUtil; import fr.alexdoru.megawallsenhancementsmod.utils.StringUtil; import fr.alexdoru.nocheatersmod.commands.CommandReport; import fr.alexdoru.nocheatersmod.commands.CommandWDR; @@ -109,6 +110,7 @@ private static void handleReportSuggestion(String reportedPlayer, @Nullable Stri if (networkPlayerInfo != null) { isSenderInTablist = true; final UUID id = networkPlayerInfo.getGameProfile().getId(); + isSenderNicked = !NameUtil.isRealPlayer(id); senderUUID = id.toString().replace("-", ""); isSenderFlaging = CommandScanGame.doesPlayerFlag(senderUUID); WDR wdr = WdredPlayers.getPlayer(senderUUID, messageSender); @@ -120,12 +122,12 @@ private static void handleReportSuggestion(String reportedPlayer, @Nullable Stri } - if (senderRank != null && (senderRank.equals("VIP+") || senderRank.equals("MVP") || senderRank.equals("MVP+") || senderRank.equals("MVP++"))) { + if (isSenderNicked || senderRank != null && (senderRank.equals("VIP+") || senderRank.equals("MVP") || senderRank.equals("MVP+") || senderRank.equals("MVP++"))) { isSenderRankValid = true; } - boolean gotAutoreported = checkAndSendReportSuggestion(messageSender, reportedPlayer, cheat, isSenderMyself, isTargetMyself, isSenderInTablist, isSenderIgnored, isSenderCheating, isSenderFlaging, isSenderNicked, isSenderRankValid); - printCustomReportSuggestionChatText(fmsg, messageSender, reportedPlayer, cheat, reportText, squadname, isSenderMyself, isTargetMyself, isSenderInTablist, isSenderIgnored, isSenderCheating, isSenderFlaging, isSenderNicked, gotAutoreported, senderUUID); + boolean gotAutoreported = checkAndSendReportSuggestion(messageSender, reportedPlayer, cheat, isSenderMyself, isTargetMyself, isSenderInTablist, isSenderIgnored, isSenderCheating, isSenderFlaging, false, isSenderRankValid); + printCustomReportSuggestionChatText(fmsg, messageSender, reportedPlayer, cheat, reportText, squadname, isSenderMyself, isTargetMyself, isSenderInTablist, isSenderIgnored, isSenderCheating, isSenderFlaging, false, gotAutoreported, senderUUID); } From f2f77aa39ab38629985e1ba6cd061485e9ed4b1f Mon Sep 17 00:00:00 2001 From: Alexdoru <57050655+alexdoru@users.noreply.github.com> Date: Thu, 16 Jun 2022 20:29:54 +0200 Subject: [PATCH 05/37] added deaths in end game stats (cherry picked from commit 1395abb669f9ece9021c4e38e7bfa777dd9f4092) --- .../api/hypixelplayerdataparser/MegaWallsClassStats.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/java/fr/alexdoru/megawallsenhancementsmod/api/hypixelplayerdataparser/MegaWallsClassStats.java b/src/main/java/fr/alexdoru/megawallsenhancementsmod/api/hypixelplayerdataparser/MegaWallsClassStats.java index 1d5ccc14..658a4467 100644 --- a/src/main/java/fr/alexdoru/megawallsenhancementsmod/api/hypixelplayerdataparser/MegaWallsClassStats.java +++ b/src/main/java/fr/alexdoru/megawallsenhancementsmod/api/hypixelplayerdataparser/MegaWallsClassStats.java @@ -183,6 +183,11 @@ public IChatComponent getGameStatMessage(String formattedname) { EnumChatFormatting.GREEN + "Final Assists : " + EnumChatFormatting.GOLD + formatInt(this.classname_final_assists_standard), }, + { + EnumChatFormatting.GREEN + "Deaths : " + EnumChatFormatting.GOLD + formatInt(this.classname_deaths) + " ", + EnumChatFormatting.GREEN + "Final Death : " + EnumChatFormatting.GOLD + formatInt(this.classname_final_deaths), + }, + { EnumChatFormatting.GREEN + "Ability activations : " + EnumChatFormatting.GOLD + formatInt(this.classname_a_activations) + " ", EnumChatFormatting.GREEN + "Ability Damage : " + EnumChatFormatting.GOLD + formatInt(this.classname_a_damage_dealt / 2) + EnumChatFormatting.RED + "\u2764", From ad112e790e5fb21981f3d6376a0ffa7caa68cf17 Mon Sep 17 00:00:00 2001 From: Alexdoru <57050655+alexdoru@users.noreply.github.com> Date: Thu, 16 Jun 2022 21:47:27 +0200 Subject: [PATCH 06/37] strength HUD for dreadlord herobrine and zombie (cherry picked from commit aa08c87155886a65eee8a2d831d3ce788bd9d2a3) --- .../config/ConfigHandler.java | 6 ++-- .../events/ChatEvents.java | 33 ++++++++++++++++--- .../gui/HunterStrengthGui.java | 4 +-- .../gui/MWEnConfigGuiScreen.java | 9 +++-- 4 files changed, 38 insertions(+), 14 deletions(-) diff --git a/src/main/java/fr/alexdoru/megawallsenhancementsmod/config/ConfigHandler.java b/src/main/java/fr/alexdoru/megawallsenhancementsmod/config/ConfigHandler.java index 5d167b42..9b2f795a 100644 --- a/src/main/java/fr/alexdoru/megawallsenhancementsmod/config/ConfigHandler.java +++ b/src/main/java/fr/alexdoru/megawallsenhancementsmod/config/ConfigHandler.java @@ -59,7 +59,7 @@ public class ConfigHandler { public static boolean show_lastWitherHUD; public static boolean witherHUDinSiderbar; public static final GuiPosition lastWitherHUDPosition = new GuiPosition(0d, 0d); - public static boolean hunterStrengthHUD; + public static boolean strengthHUD; public static final GuiPosition hunterStrengthHUDPosition = new GuiPosition(0d, 0d); /** @@ -307,7 +307,7 @@ private static void syncConfig(boolean loadFromConfigFile, boolean readFieldsFro show_lastWitherHUD = pShow_lastWitherHUD.getBoolean(); witherHUDinSiderbar = pwitherHUDinSiderbar.getBoolean(); lastWitherHUDPosition.setRelative(pXpos_lastWitherHUD.getDouble(), pYpos_lastWitherHUD.getDouble()); - hunterStrengthHUD = pHunterStrengthHUD.getBoolean(); + strengthHUD = pHunterStrengthHUD.getBoolean(); hunterStrengthHUDPosition.setRelative(pXpos_hunterHUD.getDouble(), pYpos_hunterHUD.getDouble()); toggleicons = pToggleicons.getBoolean(); @@ -387,7 +387,7 @@ private static void syncConfig(boolean loadFromConfigFile, boolean readFieldsFro pXpos_lastWitherHUD.set(lastWitherHUDarray[0]); pYpos_lastWitherHUD.set(lastWitherHUDarray[1]); - pHunterStrengthHUD.set(hunterStrengthHUD); + pHunterStrengthHUD.set(strengthHUD); double[] hunterStrengtharray = hunterStrengthHUDPosition.getRelativePosition(); pXpos_hunterHUD.set(hunterStrengtharray[0]); pYpos_hunterHUD.set(hunterStrengtharray[1]); diff --git a/src/main/java/fr/alexdoru/megawallsenhancementsmod/events/ChatEvents.java b/src/main/java/fr/alexdoru/megawallsenhancementsmod/events/ChatEvents.java index 7a5d41fc..65215b6c 100644 --- a/src/main/java/fr/alexdoru/megawallsenhancementsmod/events/ChatEvents.java +++ b/src/main/java/fr/alexdoru/megawallsenhancementsmod/events/ChatEvents.java @@ -34,7 +34,7 @@ public class ChatEvents { private static final Minecraft mc = Minecraft.getMinecraft(); - public static final ResourceLocation STRENGTH_SOUND = new ResourceLocation("item.fireCharge.use"); // item.fireCharge.use usefireworks.twinkle + public static final ResourceLocation STRENGTH_SOUND = new ResourceLocation("item.fireCharge.use"); private static final String BAN_MESSAGE = "A player has been removed from your game."; private static final String HUNTER_STRENGTH_MESSAGE = "Your Force of Nature gave you a 5 second Strength I buff."; private static final String GENERAL_START_MESSAGE = "The game starts in 1 second!"; @@ -42,10 +42,14 @@ public class ChatEvents { private static final String PREP_PHASE = "Prepare your defenses!"; private static final Pattern API_KEY_PATTERN = Pattern.compile("^Your new API key is ([a-zA-Z0-9-]+)"); private static final Pattern COINS_PATTERN = Pattern.compile("^\\+\\d+ coins!( \\((?:Triple Coins \\+ EXP, |)(?:Active Booster, |)\\w+'s Network Booster\\)).*"); + private static final Pattern DREADLORD_STRENGTH_PATTERN = Pattern.compile("\u00a74\u00a7lSOUL SIPHON \u00a7c\u00a7l85% ([0-9])s"); + private static final Pattern HEROBRINE_STRENGTH_PATTERN = Pattern.compile("\u00a7e\u00a7lPOWER \u00a7c\u00a7l85% ([0-9])s"); private static final Pattern HUNTER_PRE_STRENGTH_PATTERN = Pattern.compile("\u00a7a\u00a7lF\\.O\\.N\\. \u00a77\\(\u00a7l\u00a7c\u00a7lStrength\u00a77\\) \u00a7e\u00a7l([0-9]+)"); + private static final Pattern ZOMBIE_STRENGTH_PATTERN = Pattern.compile("\u00a72\u00a7lBERSERK \u00a7c\u00a7l75% ([0-9])s"); private static final Pattern MESSAGE_PATTERN = Pattern.compile("^(?:|\\[SHOUT\\] |\\[SPECTATOR\\] )(?:|\\[[A-Z]{3,6}\\] )(?:|\\[((?:MV|VI)P\\+?\\+?)\\] )(\\w{2,16}):.*"); private static long lastStrength = 0; private static final HashSet MW_REPETITVE_MSG = new HashSet<>(); + static { MW_REPETITVE_MSG.add("You broke your protected chest"); MW_REPETITVE_MSG.add("You broke your protected trapped chest"); @@ -156,8 +160,8 @@ public void onChatMessage(ClientChatReceivedEvent event) { return; } - if (ConfigHandler.hunterStrengthHUD && msg.equals(HUNTER_STRENGTH_MESSAGE)) { - HunterStrengthGui.instance.setStrengthRenderStart(); + if (ConfigHandler.strengthHUD && msg.equals(HUNTER_STRENGTH_MESSAGE)) { + HunterStrengthGui.instance.setStrengthRenderStart(5000L); return; } @@ -171,8 +175,16 @@ public void onChatMessage(ClientChatReceivedEvent event) { } /*Status messages*/ - } else if (ConfigHandler.hunterStrengthHUD && event.type == 2) { + } else if (ConfigHandler.strengthHUD && event.type == 2) { + String fmsg = event.message.getFormattedText(); + + Matcher dreadStrenghtMatcher = DREADLORD_STRENGTH_PATTERN.matcher(fmsg); + if (dreadStrenghtMatcher.find()) { + HunterStrengthGui.instance.setStrengthRenderStart(Long.parseLong(dreadStrenghtMatcher.group(1)) * 1000L); + return; + } + Matcher preStrengthMatcher = HUNTER_PRE_STRENGTH_PATTERN.matcher(fmsg); if (preStrengthMatcher.find()) { long currentTime = System.currentTimeMillis(); @@ -182,7 +194,20 @@ public void onChatMessage(ClientChatReceivedEvent event) { } String preStrengthTimer = preStrengthMatcher.group(1); HunterStrengthGui.instance.setPreStrengthTime(preStrengthTimer, currentTime); + return; } + + Matcher herobrineStrenghtMatcher = HEROBRINE_STRENGTH_PATTERN.matcher(fmsg); + if (herobrineStrenghtMatcher.find()) { + HunterStrengthGui.instance.setStrengthRenderStart(Long.parseLong(herobrineStrenghtMatcher.group(1)) * 1000L); + return; + } + + Matcher zombieStrenghtMatcher = ZOMBIE_STRENGTH_PATTERN.matcher(fmsg); + if (zombieStrenghtMatcher.find()) { + HunterStrengthGui.instance.setStrengthRenderStart(Long.parseLong(zombieStrenghtMatcher.group(1)) * 1000L); + } + } } diff --git a/src/main/java/fr/alexdoru/megawallsenhancementsmod/gui/HunterStrengthGui.java b/src/main/java/fr/alexdoru/megawallsenhancementsmod/gui/HunterStrengthGui.java index 4b13a703..08bc7001 100644 --- a/src/main/java/fr/alexdoru/megawallsenhancementsmod/gui/HunterStrengthGui.java +++ b/src/main/java/fr/alexdoru/megawallsenhancementsmod/gui/HunterStrengthGui.java @@ -45,10 +45,10 @@ public void setPreStrengthTime(String preStrengthTimer, long currentTime) { } } - public void setStrengthRenderStart() { + public void setStrengthRenderStart(long duration) { isStrengthRender = true; timeStartRender = System.currentTimeMillis(); - renderDuration = 5000L; + renderDuration = duration; } } diff --git a/src/main/java/fr/alexdoru/megawallsenhancementsmod/gui/MWEnConfigGuiScreen.java b/src/main/java/fr/alexdoru/megawallsenhancementsmod/gui/MWEnConfigGuiScreen.java index 8cc4f7e1..33705bbd 100644 --- a/src/main/java/fr/alexdoru/megawallsenhancementsmod/gui/MWEnConfigGuiScreen.java +++ b/src/main/java/fr/alexdoru/megawallsenhancementsmod/gui/MWEnConfigGuiScreen.java @@ -96,7 +96,7 @@ private String getButtonDisplayString(int id) { case 26: return "Clear view : " + getSuffix(ConfigHandler.clearVision); case 9: - return "Show hunter strength HUD : " + getSuffix(ConfigHandler.hunterStrengthHUD); + return "Show strength HUD : " + getSuffix(ConfigHandler.strengthHUD); case 18: return "Cancel night vision effect : " + getSuffix(!ConfigHandler.keepNightVisionEffect); case 2: @@ -187,8 +187,7 @@ public List getTooltipText(int id) { textLines.add(EnumChatFormatting.GREEN + "to the camera for a better visibility"); break; case 9: - textLines.add(EnumChatFormatting.GREEN + "When you play the Hunter class it prints a HUD"); - textLines.add(EnumChatFormatting.GREEN + "and plays a sound before getting strength"); + textLines.add(EnumChatFormatting.GREEN + "Displays a HUD when you get strenght with Dreadlord, Herobrine, Hunter and Zombie"); break; case 18: textLines.add(EnumChatFormatting.GREEN + "Removes the visual effect of night vision"); @@ -261,10 +260,10 @@ protected void actionPerformed(GuiButton button) throws IOException { ConfigHandler.shortencoinmessage = !ConfigHandler.shortencoinmessage; break; case 9: - if (!ConfigHandler.hunterStrengthHUD) { + if (!ConfigHandler.strengthHUD) { Minecraft.getMinecraft().getSoundHandler().playSound(PositionedSoundRecord.create(ChatEvents.STRENGTH_SOUND, 0.0F)); } - ConfigHandler.hunterStrengthHUD = !ConfigHandler.hunterStrengthHUD; + ConfigHandler.strengthHUD = !ConfigHandler.strengthHUD; break; case 18: ConfigHandler.keepNightVisionEffect = !ConfigHandler.keepNightVisionEffect; From 240a3e1fda9e8e3fc14695ef824945c862e0c97a Mon Sep 17 00:00:00 2001 From: Alexdoru <57050655+alexdoru@users.noreply.github.com> Date: Thu, 16 Jun 2022 21:54:18 +0200 Subject: [PATCH 07/37] replaces the name in chat with formatted team name on arrow hits (cherry picked from commit a89d65dca7d7a17d6affdcb82c902c04b808291d) --- .../events/ChatEvents.java | 3 +- .../gui/ArrowHitGui.java | 56 +++++++++++++------ .../utils/NameUtil.java | 17 ++++++ 3 files changed, 59 insertions(+), 17 deletions(-) diff --git a/src/main/java/fr/alexdoru/megawallsenhancementsmod/events/ChatEvents.java b/src/main/java/fr/alexdoru/megawallsenhancementsmod/events/ChatEvents.java index 65215b6c..df8fa265 100644 --- a/src/main/java/fr/alexdoru/megawallsenhancementsmod/events/ChatEvents.java +++ b/src/main/java/fr/alexdoru/megawallsenhancementsmod/events/ChatEvents.java @@ -117,7 +117,8 @@ public void onChatMessage(ClientChatReceivedEvent event) { return; } - if (ConfigHandler.show_ArrowHitHUD && ArrowHitGui.processMessage(msg)) { + if (ConfigHandler.show_ArrowHitHUD && ArrowHitGui.processMessage(msg, fmsg)) { + event.setCanceled(true); return; } diff --git a/src/main/java/fr/alexdoru/megawallsenhancementsmod/gui/ArrowHitGui.java b/src/main/java/fr/alexdoru/megawallsenhancementsmod/gui/ArrowHitGui.java index 4805c6ca..5fc3bed1 100644 --- a/src/main/java/fr/alexdoru/megawallsenhancementsmod/gui/ArrowHitGui.java +++ b/src/main/java/fr/alexdoru/megawallsenhancementsmod/gui/ArrowHitGui.java @@ -1,6 +1,9 @@ package fr.alexdoru.megawallsenhancementsmod.gui; import fr.alexdoru.megawallsenhancementsmod.config.ConfigHandler; +import fr.alexdoru.megawallsenhancementsmod.utils.ChatUtil; +import fr.alexdoru.megawallsenhancementsmod.utils.NameUtil; +import net.minecraft.util.ChatComponentText; import net.minecraft.util.EnumChatFormatting; import java.util.regex.Matcher; @@ -9,10 +12,11 @@ public class ArrowHitGui extends MyCachedGui { private static final String DUMMY_TEXT = EnumChatFormatting.GREEN + "20.0"; - private static final Pattern PATTERN_ARROW_HIT = Pattern.compile("^\\w+ is on ([0-9]*[.]?[0-9]+) HP!"); - private static final Pattern PATTERN_RENEGADE_HIT = Pattern.compile("^\\w+ is on ([0-9]*[.]?[0-9]+) HP, pinned by (\\d+) arrows.*"); + private static final Pattern PATTERN_ARROW_HIT = Pattern.compile("^(\\w+) is on ([0-9]*[.]?[0-9]+) HP!"); + private static final Pattern PATTERN_RENEGADE_HIT = Pattern.compile("^(\\w+) is on ([0-9]*[.]?[0-9]+) HP, pinned by (\\d+) arrows.*"); private static final Pattern PATTERN_LEAP_HIT = Pattern.compile("^You took ([0-9]*[.]?[0-9]+) recoil damage after traveling \\d+.\\d+ blocks!"); - private static final Pattern PATTERN_LEAP_DIRECT_HIT = Pattern.compile("^You landed a direct hit against \\w+, taking ([0-9]*[.]?[0-9]+) recoil damage after traveling [0-9]*[.]?[0-9]+ blocks!"); + private static final Pattern PATTERN_LEAP_DIRECT_HIT = Pattern.compile("^You landed a direct hit against (\\w+), taking ([0-9]*[.]?[0-9]+) recoil damage after traveling [0-9]*[.]?[0-9]+ blocks!"); + private static final Pattern PATTERN_REND = Pattern.compile("^Your Rend dealt ([0-9]*[.]?[0-9]+) damage to \\w+"); public static ArrowHitGui instance; private static String HPvalue; private static long hittime; @@ -25,16 +29,12 @@ public ArrowHitGui() { guiPosition = ConfigHandler.arrowHitHUDPosition; } - public static boolean processMessage(String rawMessage) { + public static boolean processMessage(String msg, String fmsg) { - Matcher matcherArrowHit = PATTERN_ARROW_HIT.matcher(rawMessage); - Matcher matcherRenegadeHit = PATTERN_RENEGADE_HIT.matcher(rawMessage); - Matcher matcherLeapHit = PATTERN_LEAP_HIT.matcher(rawMessage); - Matcher matcherLeapDirectHit = PATTERN_LEAP_DIRECT_HIT.matcher(rawMessage); + Matcher matcherArrowHit = PATTERN_ARROW_HIT.matcher(msg); if (matcherArrowHit.matches()) { - - HPvalue = matcherArrowHit.group(1); + HPvalue = matcherArrowHit.group(2); if (HPvalue.equals("0")) { HPvalue = "Kill"; Color = EnumChatFormatting.GOLD; @@ -44,36 +44,60 @@ public static boolean processMessage(String rawMessage) { normalhit = true; hittime = System.currentTimeMillis(); instance.updateDisplayText(); + String playername = matcherArrowHit.group(1); + ChatUtil.addChatMessage(new ChatComponentText(fmsg.replaceFirst(playername, NameUtil.getFormattedName(playername)))); return true; + } - } else if (matcherRenegadeHit.matches()) { + Matcher matcherRenegadeHit = PATTERN_RENEGADE_HIT.matcher(msg); - HPvalue = matcherRenegadeHit.group(1); - arrowspinned = matcherRenegadeHit.group(2); + if (matcherRenegadeHit.matches()) { + HPvalue = matcherRenegadeHit.group(2); + arrowspinned = matcherRenegadeHit.group(3); hittime = System.currentTimeMillis(); normalhit = false; setColor(HPvalue); instance.updateDisplayText(); + String playername = matcherRenegadeHit.group(1); + ChatUtil.addChatMessage(new ChatComponentText(fmsg.replaceFirst(playername, NameUtil.getFormattedName(playername)))); return true; + } - } else if (matcherLeapHit.matches()) { + Matcher matcherLeapHit = PATTERN_LEAP_HIT.matcher(msg); + if (matcherLeapHit.matches()) { HPvalue = "-" + 2f * Float.parseFloat(matcherLeapHit.group(1)); hittime = System.currentTimeMillis() + 1000L; normalhit = true; Color = EnumChatFormatting.GREEN; instance.updateDisplayText(); + ChatUtil.addChatMessage(new ChatComponentText(fmsg)); return true; + } - } else if (matcherLeapDirectHit.matches()) { + Matcher matcherLeapDirectHit = PATTERN_LEAP_DIRECT_HIT.matcher(msg); - HPvalue = "-" + 2f * Float.parseFloat(matcherLeapDirectHit.group(1)); + if (matcherLeapDirectHit.matches()) { + HPvalue = "-" + 2f * Float.parseFloat(matcherLeapDirectHit.group(2)); hittime = System.currentTimeMillis() + 1000L; normalhit = true; Color = EnumChatFormatting.GREEN; instance.updateDisplayText(); + String playername = matcherLeapDirectHit.group(1); + ChatUtil.addChatMessage(new ChatComponentText(fmsg.replaceFirst(playername, NameUtil.getFormattedName(playername)))); return true; + } + + Matcher matcherRend = PATTERN_REND.matcher(msg); + if (matcherRend.matches()) { + HPvalue = "-" + Float.parseFloat(matcherRend.group(2)); + hittime = System.currentTimeMillis() + 1000L; + normalhit = true; + Color = EnumChatFormatting.GREEN; + instance.updateDisplayText(); + ChatUtil.addChatMessage(new ChatComponentText(fmsg)); + return true; } return false; diff --git a/src/main/java/fr/alexdoru/megawallsenhancementsmod/utils/NameUtil.java b/src/main/java/fr/alexdoru/megawallsenhancementsmod/utils/NameUtil.java index 888b42e0..c398dbe1 100644 --- a/src/main/java/fr/alexdoru/megawallsenhancementsmod/utils/NameUtil.java +++ b/src/main/java/fr/alexdoru/megawallsenhancementsmod/utils/NameUtil.java @@ -275,6 +275,23 @@ public static IChatComponent getTransformedDisplayName(GameProfile gameProfileIn return null; } + /** + * Returns name formatted with teaml format, has prestige 5 tag but not icons at the start + */ + public static String getFormattedName(String playername) { + if (FKCounterMod.isInMwGame) { + final NetworkPlayerInfo networkPlayerInfo = NetHandlerPlayClientHook.playerInfoMap.get(playername); + if (networkPlayerInfo != null) { + final MWPlayerData mwPlayerData = ((GameProfileAccessor) networkPlayerInfo.getGameProfile()).getMWPlayerData(); + if (mwPlayerData != null && mwPlayerData.P5Tag != null && mwPlayerData.originalP4Tag != null) { + return ScorePlayerTeam.formatPlayerName(networkPlayerInfo.getPlayerTeam(), playername).replace(mwPlayerData.originalP4Tag, mwPlayerData.P5Tag); + } + return ScorePlayerTeam.formatPlayerName(networkPlayerInfo.getPlayerTeam(), playername); + } + } + return playername; + } + public static void refreshAllNamesInWorld() { mc.getNetHandler().getPlayerInfoMap().forEach(p -> { if (p != null) { From 18e4f9f07a3c1742ea7ff1c51f273a6ed0d56b38 Mon Sep 17 00:00:00 2001 From: Alexdoru <57050655+alexdoru@users.noreply.github.com> Date: Sat, 18 Jun 2022 02:02:55 +0200 Subject: [PATCH 08/37] fix own squadmane not getting set properly on game start (cherry picked from commit 705437e153f820df9af461dde6bfe82410541e3a) --- .../events/SquadEvent.java | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/main/java/fr/alexdoru/megawallsenhancementsmod/events/SquadEvent.java b/src/main/java/fr/alexdoru/megawallsenhancementsmod/events/SquadEvent.java index 9382707f..19511039 100644 --- a/src/main/java/fr/alexdoru/megawallsenhancementsmod/events/SquadEvent.java +++ b/src/main/java/fr/alexdoru/megawallsenhancementsmod/events/SquadEvent.java @@ -112,15 +112,24 @@ public static void formSquad() { final String myName = Minecraft.getMinecraft().thePlayer.getName(); final String myCustomName = squadmap.get(myName); + final String myCustomNick = ConfigHandler.hypixelNick.equals("") ? null : squadmap.get(ConfigHandler.hypixelNick); squadmap.clear(); squadmap.putAll(newsquad); if (myCustomName != null) { addPlayer(myName, myCustomName); - } else if (!squadmap.isEmpty()) { - addPlayer(myName); - if (!ConfigHandler.hypixelNick.equals("")) { + } + + if (myCustomNick != null) { + addPlayer(ConfigHandler.hypixelNick, myCustomNick); + } + + if (!squadmap.isEmpty()) { + if (myCustomName == null) { + addPlayer(myName); + } + if (myCustomNick == null && !ConfigHandler.hypixelNick.equals("")) { addPlayer(ConfigHandler.hypixelNick, EnumChatFormatting.ITALIC + myName); } } From 8848ec01c4132ecd0a9717dbe03400764310055c Mon Sep 17 00:00:00 2001 From: Alexdoru <57050655+alexdoru@users.noreply.github.com> Date: Sat, 18 Jun 2022 17:41:19 +0200 Subject: [PATCH 09/37] stop adding the minecraft version at the end of the .jar (cherry picked from commit 948913d808097b666b293ffc76bbe7f91306f1de) --- build.gradle | 1 - 1 file changed, 1 deletion(-) diff --git a/build.gradle b/build.gradle index 21155a09..5e629485 100644 --- a/build.gradle +++ b/build.gradle @@ -31,7 +31,6 @@ dependencies { } jar { - appendix = minecraft.version manifest.attributes( "FMLCorePlugin": 'fr.alexdoru.megawallsenhancementsmod.asm.ASMLoadingPlugin', 'FMLCorePluginContainsFMLMod': 'Yes, yes it does' From e212a2b4d51e8c775fca281375a84ec00eeba24e Mon Sep 17 00:00:00 2001 From: Alexdoru <57050655+alexdoru@users.noreply.github.com> Date: Sat, 18 Jun 2022 19:44:53 +0200 Subject: [PATCH 10/37] new natural death messages for the fk counter (cherry picked from commit 6b6b6dba232fd55c375e64a11b8168d5124b615e) --- .../fkcountermod/events/KillCounter.java | 90 ++++++++++++------- .../utils/StringUtil.java | 8 ++ 2 files changed, 66 insertions(+), 32 deletions(-) diff --git a/src/main/java/fr/alexdoru/fkcountermod/events/KillCounter.java b/src/main/java/fr/alexdoru/fkcountermod/events/KillCounter.java index 356a0f66..460ce625 100644 --- a/src/main/java/fr/alexdoru/fkcountermod/events/KillCounter.java +++ b/src/main/java/fr/alexdoru/fkcountermod/events/KillCounter.java @@ -10,6 +10,7 @@ import fr.alexdoru.megawallsenhancementsmod.enums.MWClass; import fr.alexdoru.megawallsenhancementsmod.events.SquadEvent; import fr.alexdoru.megawallsenhancementsmod.utils.ChatUtil; +import fr.alexdoru.megawallsenhancementsmod.utils.StringUtil; import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.WorldClient; import net.minecraft.client.network.NetworkPlayerInfo; @@ -94,7 +95,17 @@ public class KillCounter { "(\\w{1,16}) was chewed up by (\\w{1,16}).*", "(\\w{1,16}) was chemically cheesed by (\\w{1,16}).*", "(\\w{1,16}) was turned into cheese whiz by (\\w{1,16}).*", - "(\\w{1,16}) was magically squeaked by (\\w{1,16}).*" + "(\\w{1,16}) was magically squeaked by (\\w{1,16}).*", + /*Natural deaths messages*/ + "(\\w{1,16}) starved to death\\.", + "(\\w{1,16}) hit the ground too hard\\.", + "(\\w{1,16}) blew up\\.", + "(\\w{1,16}) exploded\\.", + "(\\w{1,16}) tried to swim in lava\\.", + "(\\w{1,16}) went up in flames\\.", + "(\\w{1,16}) burned to death\\.", + "(\\w{1,16}) suffocated in a wall\\.", + "(\\w{1,16}) fell out of the world\\." }; private static final String[] SCOREBOARD_PREFIXES = {"[R]", "[G]", "[Y]", "[B]"}; private static final String[] DEFAULT_PREFIXES = {"c", "a", "e", "9"}; // RED GREEN YELLOW BLUE @@ -143,48 +154,64 @@ public static boolean processMessage(String FormattedText, String UnformattedTex return false; } - /* - * Kill message detection - */ - for (Pattern kill_pattern : KILL_PATTERNS) { + for (Pattern pattern : KILL_PATTERNS) { - Matcher killMessageMatcher = kill_pattern.matcher(UnformattedText); + Matcher matcher = pattern.matcher(UnformattedText); - if (killMessageMatcher.matches()) { + if (matcher.matches()) { - String killedPlayer = killMessageMatcher.group(1); - String killer = killMessageMatcher.group(2); - String[] split = FormattedText.split("\u00a7"); + if (matcher.groupCount() == 2) { + String killedPlayer = matcher.group(1); + String killer = matcher.group(2); + String killedTeamColor = StringUtil.getLastFormattingCodeBefore(FormattedText, killedPlayer).replace("\u00a7",""); + String killerTeamColor = StringUtil.getLastFormattingCodeBefore(FormattedText, killer).replace("\u00a7",""); - if (split.length >= 7) { - String killedTeam = split[2].substring(0, 1); - String killerTeam = split[6].substring(0, 1); - if (removeKilledPlayer(killedPlayer, killedTeam)) { - addKill(killer, killerTeam); - playersPresentInGame.add(killedPlayer); - playersPresentInGame.add(killer); + if (!killedTeamColor.equals("") && !killerTeamColor.equals("")) { + if (removeKilledPlayer(killedPlayer, killedTeamColor)) { + addKill(killer, killerTeamColor); + playersPresentInGame.add(killedPlayer); + playersPresentInGame.add(killer); + } + FKCounterGui.instance.updateDisplayText(); } - FKCounterGui.instance.updateDisplayText(); - } - if (ConfigHandler.strengthParticules) { - spawnParticles(killer); - } + if (ConfigHandler.strengthParticules) { + spawnParticles(killer); + } + + String squadmate = SquadEvent.getSquad().get(killer); + if (squadmate != null) { + ChatUtil.addChatMessage(new ChatComponentText(FormattedText.replace(killer, squadmate))); + return true; + } + squadmate = SquadEvent.getSquad().get(killedPlayer); + if (squadmate != null) { + ChatUtil.addChatMessage(new ChatComponentText(FormattedText.replace(killedPlayer, squadmate))); + return true; + } - String squadmate = SquadEvent.getSquad().get(killer); - if (squadmate != null) { - ChatUtil.addChatMessage(new ChatComponentText(FormattedText.replace(killer, squadmate))); + ChatUtil.addChatMessage(new ChatComponentText(FormattedText)); return true; } - squadmate = SquadEvent.getSquad().get(killedPlayer); - if (squadmate != null) { - ChatUtil.addChatMessage(new ChatComponentText(FormattedText.replace(killedPlayer, squadmate))); + + if (matcher.groupCount() == 1) { + String killedPlayer = matcher.group(1); + String killedTeamColor = StringUtil.getLastFormattingCodeBefore(FormattedText, killedPlayer).replace("\u00a7",""); + if (!killedTeamColor.equals("")) { + if (removeKilledPlayer(killedPlayer, killedTeamColor)) { + playersPresentInGame.add(killedPlayer); + } + FKCounterGui.instance.updateDisplayText(); + } + String squadmate = SquadEvent.getSquad().get(killedPlayer); + if (squadmate != null) { + ChatUtil.addChatMessage(new ChatComponentText(FormattedText.replace(killedPlayer, squadmate))); + return true; + } + ChatUtil.addChatMessage(new ChatComponentText(FormattedText)); return true; } - ChatUtil.addChatMessage(new ChatComponentText(FormattedText)); - return true; - } } @@ -208,7 +235,6 @@ public static int getKills(int team) { if (isNotValidTeam(team)) { return 0; } - int kills = 0; for (int k : teamKillsArray[team].values()) { kills += k; diff --git a/src/main/java/fr/alexdoru/megawallsenhancementsmod/utils/StringUtil.java b/src/main/java/fr/alexdoru/megawallsenhancementsmod/utils/StringUtil.java index 632196a9..84334b28 100644 --- a/src/main/java/fr/alexdoru/megawallsenhancementsmod/utils/StringUtil.java +++ b/src/main/java/fr/alexdoru/megawallsenhancementsmod/utils/StringUtil.java @@ -64,6 +64,14 @@ public static String getLastFormattingCodeOf(String text) { return s; } + public static String getLastFormattingCodeBefore(String message, String target) { + String[] split = message.split(target, 2); + if (split.length != 2) { + return ""; + } + return getLastFormattingCodeOf(split[0]); + } + public static IChatComponent censorChatMessage(String message, String messageSender) { String[] split = message.split(messageSender, 2); if (split.length != 2) { From ac18c77eba60f50ce069434fdc646757032bf660 Mon Sep 17 00:00:00 2001 From: Alexdoru <57050655+alexdoru@users.noreply.github.com> Date: Sun, 19 Jun 2022 00:29:47 +0200 Subject: [PATCH 11/37] added leg skins and wither kills in plancke mw (cherry picked from commit 316d9ff6c58a400be665a3c630b90be3fc4da92f) --- .../MegaWallsStats.java | 156 ++++++++++-------- 1 file changed, 91 insertions(+), 65 deletions(-) diff --git a/src/main/java/fr/alexdoru/megawallsenhancementsmod/api/hypixelplayerdataparser/MegaWallsStats.java b/src/main/java/fr/alexdoru/megawallsenhancementsmod/api/hypixelplayerdataparser/MegaWallsStats.java index c4720489..3a80526a 100644 --- a/src/main/java/fr/alexdoru/megawallsenhancementsmod/api/hypixelplayerdataparser/MegaWallsStats.java +++ b/src/main/java/fr/alexdoru/megawallsenhancementsmod/api/hypixelplayerdataparser/MegaWallsStats.java @@ -1,5 +1,6 @@ package fr.alexdoru.megawallsenhancementsmod.api.hypixelplayerdataparser; +import com.google.gson.JsonElement; import com.google.gson.JsonObject; import fr.alexdoru.megawallsenhancementsmod.enums.MWClass; import fr.alexdoru.megawallsenhancementsmod.utils.ChatUtil; @@ -22,6 +23,7 @@ public class MegaWallsStats { private int coins = 0; private int mythic_favor = 0; private int wither_damage = 0; + private int wither_kills = 0; private int wins = 0; private int wins_face_off = 0; private int wins_practice = 0; @@ -43,6 +45,7 @@ public class MegaWallsStats { private int time_played = 0; private int nbprestiges = 0; private int total_classpoints = 0; + private int legendary_skins = 0; private int games_played = 0; private float fkpergame = 0; @@ -51,48 +54,56 @@ public class MegaWallsStats { public MegaWallsStats(JsonObject playerData) { - if (playerData == null) + if (playerData == null) { return; + } JsonObject statsdata = playerData.get("stats").getAsJsonObject(); - if (statsdata == null) + if (statsdata == null) { return; + } JsonObject mwdata = JsonUtil.getJsonObject(statsdata, "Walls3"); - if (mwdata == null) + if (mwdata == null) { return; + } - this.chosen_class = JsonUtil.getString(mwdata, "chosen_class"); - this.chosen_skin_class = JsonUtil.getString(mwdata, "chosen_skin_" + this.chosen_class); - this.coins = JsonUtil.getInt(mwdata, "coins"); - this.mythic_favor = JsonUtil.getInt(mwdata, "mythic_favor"); - this.wither_damage = JsonUtil.getInt(mwdata, "wither_damage") + JsonUtil.getInt(mwdata, "witherDamage"); // add both to get wither damage - this.wins = JsonUtil.getInt(mwdata, "wins"); - this.wins_face_off = JsonUtil.getInt(mwdata, "wins_face_off"); - this.wins_practice = JsonUtil.getInt(mwdata, "wins_practice"); - this.losses = JsonUtil.getInt(mwdata, "losses"); - this.kills = JsonUtil.getInt(mwdata, "kills"); - this.defender_kills = JsonUtil.getInt(mwdata, "defender_kills"); - //this.assists = JsonUtil.getInt(mwdata,"assists"); - this.deaths = JsonUtil.getInt(mwdata, "deaths"); - this.final_kills = JsonUtil.getInt(mwdata, "final_kills"); - //this.final_kills_standard = JsonUtil.getInt(mwdata,"final_kills_standard"); - //this.final_assists = JsonUtil.getInt(mwdata,"final_assists"); - //this.final_assists_standard = JsonUtil.getInt(mwdata,"final_assists_standard"); - this.final_deaths = JsonUtil.getInt(mwdata, "final_deaths") + JsonUtil.getInt(mwdata, "finalDeaths"); - - this.kdr = (float) this.kills / (this.deaths == 0 ? 1 : (float) this.deaths); - this.fkdr = (float) this.final_kills / (this.final_deaths == 0 ? 1 : (float) this.final_deaths); - this.wlr = (float) this.wins / (this.losses == 0 ? 1 : (float) this.losses); - - this.time_played = JsonUtil.getInt(mwdata, "time_played") + JsonUtil.getInt(mwdata, "time_played_standard"); // additionner les deux / en minutes + chosen_class = JsonUtil.getString(mwdata, "chosen_class"); + chosen_skin_class = JsonUtil.getString(mwdata, "chosen_skin_" + chosen_class); + coins = JsonUtil.getInt(mwdata, "coins"); + mythic_favor = JsonUtil.getInt(mwdata, "mythic_favor"); + wither_damage = JsonUtil.getInt(mwdata, "wither_damage") + JsonUtil.getInt(mwdata, "witherDamage"); // add both to get wither damage + wither_kills = JsonUtil.getInt(mwdata, "wither_kills"); + wins = JsonUtil.getInt(mwdata, "wins"); + wins_face_off = JsonUtil.getInt(mwdata, "wins_face_off"); + wins_practice = JsonUtil.getInt(mwdata, "wins_practice"); + losses = JsonUtil.getInt(mwdata, "losses"); + kills = JsonUtil.getInt(mwdata, "kills"); + defender_kills = JsonUtil.getInt(mwdata, "defender_kills"); + //assists = JsonUtil.getInt(mwdata,"assists"); + deaths = JsonUtil.getInt(mwdata, "deaths"); + final_kills = JsonUtil.getInt(mwdata, "final_kills"); + //final_kills_standard = JsonUtil.getInt(mwdata,"final_kills_standard"); + //final_assists = JsonUtil.getInt(mwdata,"final_assists"); + //final_assists_standard = JsonUtil.getInt(mwdata,"final_assists_standard"); + final_deaths = JsonUtil.getInt(mwdata, "final_deaths") + JsonUtil.getInt(mwdata, "finalDeaths"); + + kdr = (float) kills / (deaths == 0 ? 1 : (float) deaths); + fkdr = (float) final_kills / (final_deaths == 0 ? 1 : (float) final_deaths); + wlr = (float) wins / (losses == 0 ? 1 : (float) losses); + + time_played = JsonUtil.getInt(mwdata, "time_played") + JsonUtil.getInt(mwdata, "time_played_standard"); // additionner les deux / en minutes + games_played = wins + losses; // doesn't count the draws + fkpergame = (float) final_kills / (games_played == 0 ? 1 : (float) games_played); + wither_damage_game = wither_damage / (games_played == 0 ? 1 : (float) games_played); + def_kill_game = defender_kills / (games_played == 0 ? 1 : (float) games_played); // computes the number of prestiges - this.classesdata = JsonUtil.getJsonObject(mwdata, "classes"); + classesdata = JsonUtil.getJsonObject(mwdata, "classes"); - if (this.classesdata == null) { + if (classesdata == null) { return; } @@ -102,7 +113,7 @@ public MegaWallsStats(JsonObject playerData) { if (classeobj == null) { continue; } - this.nbprestiges = this.nbprestiges + JsonUtil.getInt(classeobj, "prestige"); + nbprestiges = nbprestiges + JsonUtil.getInt(classeobj, "prestige"); int classpoints = JsonUtil.getInt(mwdata, classname + "_final_kills_standard") + JsonUtil.getInt(mwdata, classname + "_final_assists_standard") + JsonUtil.getInt(mwdata, classname + "_wins_standard") * 10; @@ -110,44 +121,54 @@ public MegaWallsStats(JsonObject playerData) { classpointsMap.put(classname, classpoints); } - this.games_played = this.wins + this.losses; // doesn't count the draws - this.fkpergame = (float) this.final_kills / (this.games_played == 0 ? 1 : (float) this.games_played); - this.wither_damage_game = this.wither_damage / (this.games_played == 0 ? 1 : (float) this.games_played); - this.def_kill_game = this.defender_kills / (this.games_played == 0 ? 1 : (float) this.games_played); + final JsonElement achievementsOneTime = playerData.get("achievementsOneTime"); + + if (achievementsOneTime != null && achievementsOneTime.isJsonArray()) { + for (JsonElement jsonElement : achievementsOneTime.getAsJsonArray()) { + final String achievementName = jsonElement.getAsString(); + if (achievementName != null && achievementName.startsWith("walls3_legendary_")) { + legendary_skins++; + } + } + } } public float getFkdr() { - return this.fkdr; + return fkdr; } public float getWlr() { - return this.wlr; + return wlr; } public float getFkpergame() { - return this.fkpergame; + return fkpergame; } public int getGames_played() { - return this.games_played; + return games_played; + } + + public int getLegSkins() { + return legendary_skins; } public JsonObject getClassesdata() { - return this.classesdata; + return classesdata; } public IChatComponent getClassPointsMessage(String formattedname, String playername) { IChatComponent imsg = new ChatComponentText(EnumChatFormatting.AQUA + ChatUtil.bar() + "\n") .appendSibling(ChatUtil.PlanckeHeaderText(formattedname, playername, " - Mega Walls Classpoints\n\n")); - for (Map.Entry entry : this.classpointsMap.entrySet()) { + for (Map.Entry entry : classpointsMap.entrySet()) { imsg.appendSibling(new ChatComponentText(EnumChatFormatting.GREEN + ChatUtil.capitalizeFirstLetter(entry.getKey())) .setChatStyle(new ChatStyle() .setChatHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ChatComponentText(EnumChatFormatting.YELLOW + "Click for " + entry.getKey() + " stats"))) .setChatClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/plancke " + playername + " mw " + entry.getKey())))) .appendSibling(new ChatComponentText(" : " + formatClasspoint(entry.getValue()) + "\n")); } - imsg.appendSibling(new ChatComponentText(EnumChatFormatting.GREEN + "Total : " + EnumChatFormatting.GOLD + this.total_classpoints + "\n")); + imsg.appendSibling(new ChatComponentText(EnumChatFormatting.GREEN + "Total : " + EnumChatFormatting.GOLD + total_classpoints + "\n")); imsg.appendSibling(new ChatComponentText(EnumChatFormatting.AQUA + ChatUtil.bar())); return imsg; } @@ -174,47 +195,52 @@ public IChatComponent getFormattedMessage(String formattedname, String playernam String[][] matrix1 = { { - EnumChatFormatting.AQUA + "Kills : " + EnumChatFormatting.GOLD + ChatUtil.formatInt(this.kills) + " ", - EnumChatFormatting.AQUA + "Deaths : " + EnumChatFormatting.RED + ChatUtil.formatInt(this.deaths) + " ", - EnumChatFormatting.AQUA + "K/D Ratio : " + (this.kdr > 1 ? EnumChatFormatting.GOLD : EnumChatFormatting.RED) + String.format("%.3f", this.kdr) + EnumChatFormatting.AQUA + "Kills : " + EnumChatFormatting.GOLD + ChatUtil.formatInt(kills) + " ", + EnumChatFormatting.AQUA + "Deaths : " + EnumChatFormatting.RED + ChatUtil.formatInt(deaths) + " ", + EnumChatFormatting.AQUA + "K/D Ratio : " + (kdr > 1 ? EnumChatFormatting.GOLD : EnumChatFormatting.RED) + String.format("%.3f", kdr) }, { - EnumChatFormatting.AQUA + "Final Kills : " + EnumChatFormatting.GOLD + ChatUtil.formatInt(this.final_kills) + " ", - EnumChatFormatting.AQUA + "Final Deaths : " + EnumChatFormatting.RED + ChatUtil.formatInt(this.final_deaths) + " ", - EnumChatFormatting.AQUA + "FK/D Ratio : " + (this.fkdr > 1 ? EnumChatFormatting.GOLD : EnumChatFormatting.RED) + String.format("%.3f", this.fkdr) + EnumChatFormatting.AQUA + "Final Kills : " + EnumChatFormatting.GOLD + ChatUtil.formatInt(final_kills) + " ", + EnumChatFormatting.AQUA + "Final Deaths : " + EnumChatFormatting.RED + ChatUtil.formatInt(final_deaths) + " ", + EnumChatFormatting.AQUA + "FK/D Ratio : " + (fkdr > 1 ? EnumChatFormatting.GOLD : EnumChatFormatting.RED) + String.format("%.3f", fkdr) }, { - EnumChatFormatting.AQUA + "Wins : " + EnumChatFormatting.GOLD + ChatUtil.formatInt(this.wins) + " ", - EnumChatFormatting.AQUA + "Losses : " + EnumChatFormatting.RED + ChatUtil.formatInt(this.losses) + " ", - EnumChatFormatting.AQUA + "W/L Ratio : " + (this.wlr > 0.25f ? EnumChatFormatting.GOLD : EnumChatFormatting.RED) + String.format("%.3f", this.wlr) + EnumChatFormatting.AQUA + "Wins : " + EnumChatFormatting.GOLD + ChatUtil.formatInt(wins) + " ", + EnumChatFormatting.AQUA + "Losses : " + EnumChatFormatting.RED + ChatUtil.formatInt(losses) + " ", + EnumChatFormatting.AQUA + "W/L Ratio : " + (wlr > 0.25f ? EnumChatFormatting.GOLD : EnumChatFormatting.RED) + String.format("%.3f", wlr) }}; String[][] matrix2 = { { - EnumChatFormatting.AQUA + "Games played : " + EnumChatFormatting.GOLD + ChatUtil.formatInt(this.games_played) + " ", - EnumChatFormatting.AQUA + "FK/game : " + (this.fkpergame > 1 ? EnumChatFormatting.GOLD : EnumChatFormatting.RED) + String.format("%.3f", this.fkpergame) + EnumChatFormatting.AQUA + "Games played : " + EnumChatFormatting.GOLD + ChatUtil.formatInt(games_played) + " ", + EnumChatFormatting.AQUA + "FK/game : " + (fkpergame > 1 ? EnumChatFormatting.GOLD : EnumChatFormatting.RED) + String.format("%.3f", fkpergame) + }, + + { + EnumChatFormatting.AQUA + "Wither damage : " + EnumChatFormatting.GOLD + ChatUtil.formatInt(wither_damage) + " ", + EnumChatFormatting.AQUA + "Defending Kills : " + EnumChatFormatting.GOLD + ChatUtil.formatInt(defender_kills) }, { - EnumChatFormatting.AQUA + "Wither damage : " + EnumChatFormatting.GOLD + ChatUtil.formatInt(this.wither_damage) + " ", - EnumChatFormatting.AQUA + "Defending Kills : " + EnumChatFormatting.GOLD + ChatUtil.formatInt(this.defender_kills) + EnumChatFormatting.AQUA + "Wither dmg/game : " + EnumChatFormatting.GOLD + ((int) wither_damage_game) + " ", + EnumChatFormatting.AQUA + "Def Kills/game : " + EnumChatFormatting.GOLD + String.format("%.3f", def_kill_game) }, { - EnumChatFormatting.AQUA + "Wither dmg/game : " + EnumChatFormatting.GOLD + ((int) this.wither_damage_game) + " ", - EnumChatFormatting.AQUA + "Def Kills/game : " + EnumChatFormatting.GOLD + String.format("%.3f", this.def_kill_game) + EnumChatFormatting.AQUA + "Wither kills : " + EnumChatFormatting.GOLD + ChatUtil.formatInt(wither_kills) + " ", + EnumChatFormatting.AQUA + "Leg skins : " + (legendary_skins == 24 ? EnumChatFormatting.GOLD : EnumChatFormatting.GREEN) + legendary_skins + EnumChatFormatting.GOLD + "/24" }, { - EnumChatFormatting.AQUA + "Faceoff wins : " + EnumChatFormatting.GOLD + ChatUtil.formatInt(this.wins_face_off) + " ", - EnumChatFormatting.AQUA + "Practice wins : " + EnumChatFormatting.GOLD + ChatUtil.formatInt(this.wins_practice) + EnumChatFormatting.AQUA + "Faceoff wins : " + EnumChatFormatting.GOLD + ChatUtil.formatInt(wins_face_off) + " ", + EnumChatFormatting.AQUA + "Practice wins : " + EnumChatFormatting.GOLD + ChatUtil.formatInt(wins_practice) }, { - EnumChatFormatting.AQUA + "Coins : " + EnumChatFormatting.GOLD + ChatUtil.formatInt(this.coins) + " ", - EnumChatFormatting.AQUA + "Mythic favors : " + EnumChatFormatting.GOLD + ChatUtil.formatInt(this.mythic_favor) + "\n" + EnumChatFormatting.AQUA + "Coins : " + EnumChatFormatting.GOLD + ChatUtil.formatInt(coins) + " ", + EnumChatFormatting.AQUA + "Mythic favors : " + EnumChatFormatting.GOLD + ChatUtil.formatInt(mythic_favor) + "\n" }}; return new ChatComponentText(EnumChatFormatting.AQUA + ChatUtil.bar() + "\n") @@ -222,15 +248,15 @@ public IChatComponent getFormattedMessage(String formattedname, String playernam .appendSibling(ChatUtil.PlanckeHeaderText(formattedname, playername, " - Mega Walls stats")) .appendSibling(new ChatComponentText("\n" + "\n" + - ChatUtil.centerLine(EnumChatFormatting.GREEN + "Prestiges : " + EnumChatFormatting.GOLD + ChatUtil.formatInt(this.nbprestiges) + " " - + EnumChatFormatting.GREEN + " Playtime (approx.) : " + EnumChatFormatting.GOLD + String.format("%.2f", this.time_played / 60f) + "h") + "\n")) + ChatUtil.centerLine(EnumChatFormatting.GREEN + "Prestiges : " + EnumChatFormatting.GOLD + ChatUtil.formatInt(nbprestiges) + " " + + EnumChatFormatting.GREEN + " Playtime (approx.) : " + EnumChatFormatting.GOLD + String.format("%.2f", time_played / 60f) + "h") + "\n")) .appendSibling(new ChatComponentText( - ChatUtil.centerLine(EnumChatFormatting.GREEN + "Selected class : " + EnumChatFormatting.GOLD + (this.chosen_class == null ? "None" : this.chosen_class) + " " - + EnumChatFormatting.GREEN + " Selected skin : " + EnumChatFormatting.GOLD + (this.chosen_skin_class == null ? (this.chosen_class == null ? "None" : this.chosen_class) : this.chosen_skin_class)) + "\n" + "\n") + ChatUtil.centerLine(EnumChatFormatting.GREEN + "Selected class : " + EnumChatFormatting.GOLD + (chosen_class == null ? "None" : chosen_class) + " " + + EnumChatFormatting.GREEN + " Selected skin : " + EnumChatFormatting.GOLD + (chosen_skin_class == null ? (chosen_class == null ? "None" : chosen_class) : chosen_skin_class)) + "\n" + "\n") .setChatStyle(new ChatStyle() .setChatHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ChatComponentText(EnumChatFormatting.YELLOW + "Click for this class' stats"))) - .setChatClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/plancke " + playername + " mw " + (this.chosen_class == null ? "None" : this.chosen_class))))) + .setChatClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/plancke " + playername + " mw " + (chosen_class == null ? "None" : chosen_class))))) .appendSibling(new ChatComponentText(ChatUtil.alignText(matrix2) + ChatUtil.alignText(matrix1))) From d265f2fcd847d904c29a04efa3b1c97b42f2e478 Mon Sep 17 00:00:00 2001 From: Alexdoru <57050655+alexdoru@users.noreply.github.com> Date: Sun, 19 Jun 2022 00:48:50 +0200 Subject: [PATCH 12/37] keep the alias for yourself when you change your nick (cherry picked from commit d4a8bd7cdea9a561114ad53e0bda0bef7b21e6b6) --- .../asm/hooks/GuiScreenBookHook.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/java/fr/alexdoru/megawallsenhancementsmod/asm/hooks/GuiScreenBookHook.java b/src/main/java/fr/alexdoru/megawallsenhancementsmod/asm/hooks/GuiScreenBookHook.java index 3543e983..2d5b0215 100644 --- a/src/main/java/fr/alexdoru/megawallsenhancementsmod/asm/hooks/GuiScreenBookHook.java +++ b/src/main/java/fr/alexdoru/megawallsenhancementsmod/asm/hooks/GuiScreenBookHook.java @@ -2,6 +2,7 @@ import fr.alexdoru.megawallsenhancementsmod.MegaWallsEnhancementsMod; import fr.alexdoru.megawallsenhancementsmod.config.ConfigHandler; +import fr.alexdoru.megawallsenhancementsmod.events.SquadEvent; import net.minecraft.client.Minecraft; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; @@ -39,6 +40,12 @@ public static void onBookInit(ItemStack book) { if (matcher.find()) { final String newNick = matcher.group(1); if (newNick != null && !newNick.equals("")) { + if (!ConfigHandler.hypixelNick.equals("")) { + String oldAliasForNick = SquadEvent.getSquad().remove(ConfigHandler.hypixelNick); + if (oldAliasForNick != null) { + SquadEvent.addPlayer(newNick, oldAliasForNick); + } + } ConfigHandler.hypixelNick = newNick; ConfigHandler.saveConfig(); return; From ed3bebd31413d162b981bad09b3bdc781c9d7f2b Mon Sep 17 00:00:00 2001 From: Alexdoru <57050655+alexdoru@users.noreply.github.com> Date: Sun, 19 Jun 2022 01:07:15 +0200 Subject: [PATCH 13/37] added wither damage/game and def kills/game to plancke class stats (cherry picked from commit 73867f49d544a89c81667f2e1c33c471f39ab0ef) --- .../MegaWallsClassStats.java | 188 +++++++++--------- .../MegaWallsStats.java | 2 +- 2 files changed, 99 insertions(+), 91 deletions(-) diff --git a/src/main/java/fr/alexdoru/megawallsenhancementsmod/api/hypixelplayerdataparser/MegaWallsClassStats.java b/src/main/java/fr/alexdoru/megawallsenhancementsmod/api/hypixelplayerdataparser/MegaWallsClassStats.java index 658a4467..e81cb2ec 100644 --- a/src/main/java/fr/alexdoru/megawallsenhancementsmod/api/hypixelplayerdataparser/MegaWallsClassStats.java +++ b/src/main/java/fr/alexdoru/megawallsenhancementsmod/api/hypixelplayerdataparser/MegaWallsClassStats.java @@ -31,6 +31,8 @@ public class MegaWallsClassStats { private float kdr = 0; private float fkdr = 0; private float wlr = 0; + private float wither_damage_game = 0; + private float def_kill_game = 0; private int games_played = 0; private float fkpergame = 0; private int classname_final_assists_standard = 0; @@ -84,77 +86,78 @@ public MegaWallsClassStats(JsonObject playerData, String classname) { JsonObject mwdata = mwElem.getAsJsonObject(); - this.classname = classname.toLowerCase(); - this.classnameuppercase = classname; - this.chosen_skin_class = JsonUtil.getString(mwdata, "chosen_skin_" + this.classnameuppercase); + classname = classname.toLowerCase(); + classnameuppercase = classname; + chosen_skin_class = JsonUtil.getString(mwdata, "chosen_skin_" + classnameuppercase); - this.coins = JsonUtil.getInt(mwdata, "coins"); + coins = JsonUtil.getInt(mwdata, "coins"); - this.classname_kills = JsonUtil.getInt(mwdata, this.classname + "_kills"); - this.classname_deaths = JsonUtil.getInt(mwdata, this.classname + "_deaths"); - this.classname_wins = JsonUtil.getInt(mwdata, this.classname + "_wins"); - this.classname_losses = JsonUtil.getInt(mwdata, this.classname + "_losses"); - this.classname_final_kills = JsonUtil.getInt(mwdata, this.classname + "_final_kills"); - this.classname_final_deaths = JsonUtil.getInt(mwdata, this.classname + "_final_deaths"); - this.classname_time_played = JsonUtil.getInt(mwdata, this.classname + "_time_played"); + classname_kills = JsonUtil.getInt(mwdata, classname + "_kills"); + classname_deaths = JsonUtil.getInt(mwdata, classname + "_deaths"); + classname_wins = JsonUtil.getInt(mwdata, classname + "_wins"); + classname_losses = JsonUtil.getInt(mwdata, classname + "_losses"); + classname_final_kills = JsonUtil.getInt(mwdata, classname + "_final_kills"); + classname_final_deaths = JsonUtil.getInt(mwdata, classname + "_final_deaths"); + classname_time_played = JsonUtil.getInt(mwdata, classname + "_time_played"); - this.kdr = (float) this.classname_kills / (this.classname_deaths == 0 ? 1 : (float) this.classname_deaths); - this.fkdr = (float) this.classname_final_kills / (this.classname_final_deaths == 0 ? 1 : (float) this.classname_final_deaths); - this.wlr = (float) this.classname_wins / (this.classname_losses == 0 ? 1 : (float) this.classname_losses); + kdr = (float) classname_kills / (classname_deaths == 0 ? 1 : (float) classname_deaths); + fkdr = (float) classname_final_kills / (classname_final_deaths == 0 ? 1 : (float) classname_final_deaths); + wlr = (float) classname_wins / (classname_losses == 0 ? 1 : (float) classname_losses); // to compute classpoints - int classname_final_kills_standard = JsonUtil.getInt(mwdata, this.classname + "_final_kills_standard"); - this.classname_final_assists_standard = JsonUtil.getInt(mwdata, this.classname + "_final_assists_standard"); - int classname_wins_standard = JsonUtil.getInt(mwdata, this.classname + "_wins_standard"); - this.classpoints = classname_final_kills_standard + this.classname_final_assists_standard + classname_wins_standard * 10; + int classname_final_kills_standard = JsonUtil.getInt(mwdata, classname + "_final_kills_standard"); + classname_final_assists_standard = JsonUtil.getInt(mwdata, classname + "_final_assists_standard"); + int classname_wins_standard = JsonUtil.getInt(mwdata, classname + "_wins_standard"); + classpoints = classname_final_kills_standard + classname_final_assists_standard + classname_wins_standard * 10; - this.games_played = this.classname_wins + this.classname_losses; // doesn't count the draws - this.fkpergame = (float) this.classname_final_kills / (this.games_played == 0 ? 1 : (float) this.games_played); + games_played = classname_wins + classname_losses; // doesn't count the draws + fkpergame = (float) classname_final_kills / (games_played == 0 ? 1 : (float) games_played); JsonObject classesdata = JsonUtil.getJsonObject(mwdata, "classes"); if (classesdata == null) return; - JsonObject classeobj = JsonUtil.getJsonObject(classesdata, this.classname); + JsonObject classeobj = JsonUtil.getJsonObject(classesdata, classname); if (classeobj == null) return; JsonElement boolelem = classeobj.get("unlocked"); if (boolelem != null) { - this.unlocked = boolelem.getAsBoolean(); + unlocked = boolelem.getAsBoolean(); } - this.skill_level_a = Math.max(JsonUtil.getInt(classeobj, "skill_level_a"), 1); - this.skill_level_b = Math.max(JsonUtil.getInt(classeobj, "skill_level_b"), 1); - this.skill_level_c = Math.max(JsonUtil.getInt(classeobj, "skill_level_c"), 1); - this.skill_level_d = Math.max(JsonUtil.getInt(classeobj, "skill_level_d"), 1); - this.skill_level_g = Math.max(JsonUtil.getInt(classeobj, "skill_level_g"), 1); - this.prestige = JsonUtil.getInt(classeobj, "prestige"); - this.enderchest_rows = Math.max(JsonUtil.getInt(classeobj, "enderchest_rows"), 3); + skill_level_a = Math.max(JsonUtil.getInt(classeobj, "skill_level_a"), 1); + skill_level_b = Math.max(JsonUtil.getInt(classeobj, "skill_level_b"), 1); + skill_level_c = Math.max(JsonUtil.getInt(classeobj, "skill_level_c"), 1); + skill_level_d = Math.max(JsonUtil.getInt(classeobj, "skill_level_d"), 1); + skill_level_g = Math.max(JsonUtil.getInt(classeobj, "skill_level_g"), 1); + prestige = JsonUtil.getInt(classeobj, "prestige"); + enderchest_rows = Math.max(JsonUtil.getInt(classeobj, "enderchest_rows"), 3); /* * fields below are for the game stats */ - this.classname_assists = JsonUtil.getInt(mwdata, this.classname + "_assists"); - this.classname_wither_damage = JsonUtil.getInt(mwdata, this.classname + "_wither_damage"); - this.classname_defender_kills = JsonUtil.getInt(mwdata, this.classname + "_defender_kills"); - //this.classname_defender_assists = JsonUtil.getInt(mwdata,this.classname + "_defender_assists"); - this.classname_a_activations = JsonUtil.getInt(mwdata, this.classname + "_a_activations"); - //this.classname_a_activations_deathmatch = JsonUtil.getInt(mwdata,this.classname + "_a_activations_deathmatch"); - this.classname_a_damage_dealt = JsonUtil.getInt(mwdata, this.classname + "_a_damage_dealt"); - this.classname_arrows_fired = JsonUtil.getInt(mwdata, this.classname + "_arrows_fired"); - this.classname_arrows_hit = JsonUtil.getInt(mwdata, this.classname + "_arrows_hit"); - this.classname_blocks_placed = JsonUtil.getInt(mwdata, this.classname + "_blocks_placed"); - this.classname_meters_walked = JsonUtil.getInt(mwdata, this.classname + "_meters_walked"); - this.classname_self_healed = JsonUtil.getInt(mwdata, this.classname + "_self_healed"); - this.classname_allies_healed = JsonUtil.getInt(mwdata, this.classname + "_allies_healed"); + classname_assists = JsonUtil.getInt(mwdata, classname + "_assists"); + classname_wither_damage = JsonUtil.getInt(mwdata, classname + "_wither_damage"); + classname_defender_kills = JsonUtil.getInt(mwdata, classname + "_defender_kills"); + //classname_defender_assists = JsonUtil.getInt(mwdata,classname + "_defender_assists"); + classname_a_activations = JsonUtil.getInt(mwdata, classname + "_a_activations"); + //classname_a_activations_deathmatch = JsonUtil.getInt(mwdata,classname + "_a_activations_deathmatch"); + classname_a_damage_dealt = JsonUtil.getInt(mwdata, classname + "_a_damage_dealt"); + classname_arrows_fired = JsonUtil.getInt(mwdata, classname + "_arrows_fired"); + classname_arrows_hit = JsonUtil.getInt(mwdata, classname + "_arrows_hit"); + classname_blocks_placed = JsonUtil.getInt(mwdata, classname + "_blocks_placed"); + classname_meters_walked = JsonUtil.getInt(mwdata, classname + "_meters_walked"); + classname_self_healed = JsonUtil.getInt(mwdata, classname + "_self_healed"); + classname_allies_healed = JsonUtil.getInt(mwdata, classname + "_allies_healed"); + wither_damage_game = classname_wither_damage / (games_played == 0 ? 1 : (float) games_played); + def_kill_game = classname_defender_kills / (games_played == 0 ? 1 : (float) games_played); } /* * Returns this minus the input */ public void minus(MegaWallsClassStats mwclassStats) throws IllegalArgumentException, IllegalAccessException { - for (Field field : this.getClass().getDeclaredFields()) { if (field.getType() == int.class) { if (!field.isAccessible()) { @@ -170,54 +173,54 @@ public void minus(MegaWallsClassStats mwclassStats) throws IllegalArgumentExcept */ public IChatComponent getGameStatMessage(String formattedname) { - float arrowaccuracy = 100f * (float) this.classname_arrows_hit / (float) (this.classname_arrows_fired == 0 ? 1 : this.classname_arrows_fired); + float arrowaccuracy = 100f * (float) classname_arrows_hit / (float) (classname_arrows_fired == 0 ? 1 : classname_arrows_fired); String[][] matrix1 = { { - EnumChatFormatting.GREEN + "Kills : " + EnumChatFormatting.GOLD + formatInt(this.classname_kills) + " ", - EnumChatFormatting.GREEN + "Assists : " + EnumChatFormatting.GOLD + formatInt(this.classname_assists) + EnumChatFormatting.GREEN + "Kills : " + EnumChatFormatting.GOLD + formatInt(classname_kills) + " ", + EnumChatFormatting.GREEN + "Assists : " + EnumChatFormatting.GOLD + formatInt(classname_assists) }, { - EnumChatFormatting.GREEN + "Final Kills : " + EnumChatFormatting.GOLD + formatInt(this.classname_final_kills) + " ", - EnumChatFormatting.GREEN + "Final Assists : " + EnumChatFormatting.GOLD + formatInt(this.classname_final_assists_standard), + EnumChatFormatting.GREEN + "Final Kills : " + EnumChatFormatting.GOLD + formatInt(classname_final_kills) + " ", + EnumChatFormatting.GREEN + "Final Assists : " + EnumChatFormatting.GOLD + formatInt(classname_final_assists_standard), }, { - EnumChatFormatting.GREEN + "Deaths : " + EnumChatFormatting.GOLD + formatInt(this.classname_deaths) + " ", - EnumChatFormatting.GREEN + "Final Death : " + EnumChatFormatting.GOLD + formatInt(this.classname_final_deaths), + EnumChatFormatting.GREEN + "Deaths : " + EnumChatFormatting.GOLD + formatInt(classname_deaths) + " ", + EnumChatFormatting.GREEN + "Final Death : " + EnumChatFormatting.GOLD + formatInt(classname_final_deaths), }, { - EnumChatFormatting.GREEN + "Ability activations : " + EnumChatFormatting.GOLD + formatInt(this.classname_a_activations) + " ", - EnumChatFormatting.GREEN + "Ability Damage : " + EnumChatFormatting.GOLD + formatInt(this.classname_a_damage_dealt / 2) + EnumChatFormatting.RED + "\u2764", + EnumChatFormatting.GREEN + "Ability activations : " + EnumChatFormatting.GOLD + formatInt(classname_a_activations) + " ", + EnumChatFormatting.GREEN + "Ability Damage : " + EnumChatFormatting.GOLD + formatInt(classname_a_damage_dealt / 2) + EnumChatFormatting.RED + "\u2764", }, { - EnumChatFormatting.GREEN + "Wither Damage : " + EnumChatFormatting.GOLD + formatInt(this.classname_wither_damage) + " ", - EnumChatFormatting.GREEN + "Defender kills : " + EnumChatFormatting.GOLD + formatInt(this.classname_defender_kills), + EnumChatFormatting.GREEN + "Wither Damage : " + EnumChatFormatting.GOLD + formatInt(classname_wither_damage) + " ", + EnumChatFormatting.GREEN + "Defender kills : " + EnumChatFormatting.GOLD + formatInt(classname_defender_kills), }, { - EnumChatFormatting.GREEN + "Self healed : " + EnumChatFormatting.GOLD + formatInt(this.classname_self_healed / 2) + EnumChatFormatting.RED + "\u2764" + " ", - EnumChatFormatting.GREEN + "Allies healed : " + EnumChatFormatting.GOLD + formatInt(this.classname_allies_healed / 2) + EnumChatFormatting.RED + "\u2764", + EnumChatFormatting.GREEN + "Self healed : " + EnumChatFormatting.GOLD + formatInt(classname_self_healed / 2) + EnumChatFormatting.RED + "\u2764" + " ", + EnumChatFormatting.GREEN + "Allies healed : " + EnumChatFormatting.GOLD + formatInt(classname_allies_healed / 2) + EnumChatFormatting.RED + "\u2764", }, { - EnumChatFormatting.GREEN + "Blocks placed : " + EnumChatFormatting.GOLD + formatInt(this.classname_blocks_placed) + " ", - EnumChatFormatting.GREEN + "Meters walked : " + EnumChatFormatting.GOLD + formatInt(this.classname_meters_walked), + EnumChatFormatting.GREEN + "Blocks placed : " + EnumChatFormatting.GOLD + formatInt(classname_blocks_placed) + " ", + EnumChatFormatting.GREEN + "Meters walked : " + EnumChatFormatting.GOLD + formatInt(classname_meters_walked), }}; IChatComponent imsg = new ChatComponentText(EnumChatFormatting.BLUE + bar() + "\n") - .appendSibling(new ChatComponentText(centerLine(formattedname + EnumChatFormatting.GOLD + " - Game stats - " + this.classnameuppercase))); + .appendSibling(new ChatComponentText(centerLine(formattedname + EnumChatFormatting.GOLD + " - Game stats - " + classnameuppercase))); - if (this.games_played != 1) { - imsg.appendSibling(new ChatComponentText("\n" + centerLine(EnumChatFormatting.DARK_RED + "These stats are for " + this.games_played + " games, not one."))); + if (games_played != 1) { + imsg.appendSibling(new ChatComponentText("\n" + centerLine(EnumChatFormatting.DARK_RED + "These stats are for " + games_played + " games, not one."))); } imsg.appendSibling(new ChatComponentText("\n" + "\n" + alignText(matrix1))) - .appendSibling(new ChatComponentText(centerLine(EnumChatFormatting.GREEN + "Arrows shot : " + EnumChatFormatting.GOLD + this.classname_arrows_fired - + EnumChatFormatting.GREEN + " Arrows hits : " + EnumChatFormatting.GOLD + this.classname_arrows_hit + .appendSibling(new ChatComponentText(centerLine(EnumChatFormatting.GREEN + "Arrows shot : " + EnumChatFormatting.GOLD + classname_arrows_fired + + EnumChatFormatting.GREEN + " Arrows hits : " + EnumChatFormatting.GOLD + classname_arrows_hit + EnumChatFormatting.GREEN + " Arrows accuracy : " + EnumChatFormatting.GOLD + String.format("%.2f", arrowaccuracy) + "%" + "\n"))) .appendSibling(new ChatComponentText(EnumChatFormatting.BLUE + bar())); return imsg; @@ -227,44 +230,49 @@ public IChatComponent getFormattedMessage(String formattedname, String playernam String[][] matrix1 = { { - EnumChatFormatting.AQUA + "Kills : " + EnumChatFormatting.GOLD + formatInt(this.classname_kills) + " ", - EnumChatFormatting.AQUA + "Deaths : " + EnumChatFormatting.RED + formatInt(this.classname_deaths) + " ", - EnumChatFormatting.AQUA + "K/D Ratio : " + (this.kdr > 1 ? EnumChatFormatting.GOLD : EnumChatFormatting.RED) + String.format("%.3f", this.kdr) + EnumChatFormatting.AQUA + "Kills : " + EnumChatFormatting.GOLD + formatInt(classname_kills) + " ", + EnumChatFormatting.AQUA + "Deaths : " + EnumChatFormatting.RED + formatInt(classname_deaths) + " ", + EnumChatFormatting.AQUA + "K/D Ratio : " + (kdr > 1 ? EnumChatFormatting.GOLD : EnumChatFormatting.RED) + String.format("%.3f", kdr) }, { - EnumChatFormatting.AQUA + "Final Kills : " + EnumChatFormatting.GOLD + formatInt(this.classname_final_kills) + " ", - EnumChatFormatting.AQUA + "Final Deaths : " + EnumChatFormatting.RED + formatInt(this.classname_final_deaths) + " ", - EnumChatFormatting.AQUA + "FK/D Ratio : " + (this.fkdr > 1 ? EnumChatFormatting.GOLD : EnumChatFormatting.RED) + String.format("%.3f", this.fkdr) + EnumChatFormatting.AQUA + "Final Kills : " + EnumChatFormatting.GOLD + formatInt(classname_final_kills) + " ", + EnumChatFormatting.AQUA + "Final Deaths : " + EnumChatFormatting.RED + formatInt(classname_final_deaths) + " ", + EnumChatFormatting.AQUA + "FK/D Ratio : " + (fkdr > 1 ? EnumChatFormatting.GOLD : EnumChatFormatting.RED) + String.format("%.3f", fkdr) }, { - EnumChatFormatting.AQUA + "Wins : " + EnumChatFormatting.GOLD + formatInt(this.classname_wins) + " ", - EnumChatFormatting.AQUA + "Losses : " + EnumChatFormatting.RED + formatInt(this.classname_losses) + " ", - EnumChatFormatting.AQUA + "W/L Ratio : " + (this.wlr > 0.25f ? EnumChatFormatting.GOLD : EnumChatFormatting.RED) + String.format("%.3f", this.wlr) + "\n" + EnumChatFormatting.AQUA + "Wins : " + EnumChatFormatting.GOLD + formatInt(classname_wins) + " ", + EnumChatFormatting.AQUA + "Losses : " + EnumChatFormatting.RED + formatInt(classname_losses) + " ", + EnumChatFormatting.AQUA + "W/L Ratio : " + (wlr > 0.25f ? EnumChatFormatting.GOLD : EnumChatFormatting.RED) + String.format("%.3f", wlr) + "\n" }}; String[][] matrix2 = { { - EnumChatFormatting.AQUA + "Wither damage : " + EnumChatFormatting.GOLD + formatInt(this.classname_wither_damage) + " ", - EnumChatFormatting.AQUA + "Defending Kills : " + EnumChatFormatting.GOLD + formatInt(this.classname_defender_kills) + EnumChatFormatting.AQUA + "Wither damage : " + EnumChatFormatting.GOLD + formatInt(classname_wither_damage) + " ", + EnumChatFormatting.AQUA + "Defending Kills : " + EnumChatFormatting.GOLD + formatInt(classname_defender_kills) + }, + + { + EnumChatFormatting.AQUA + "Wither dmg/game : " + EnumChatFormatting.GOLD + ((int) wither_damage_game) + " ", + EnumChatFormatting.AQUA + "Def Kills/game : " + EnumChatFormatting.GOLD + String.format("%.2f", def_kill_game) }, { - EnumChatFormatting.AQUA + "Games played : " + EnumChatFormatting.GOLD + formatInt(this.games_played) + " ", - EnumChatFormatting.AQUA + "FK/game : " + (this.fkpergame > 1 ? EnumChatFormatting.GOLD : EnumChatFormatting.RED) + String.format("%.3f", this.fkpergame) + EnumChatFormatting.AQUA + "Games played : " + EnumChatFormatting.GOLD + formatInt(games_played) + " ", + EnumChatFormatting.AQUA + "FK/game : " + (fkpergame > 1 ? EnumChatFormatting.GOLD : EnumChatFormatting.RED) + String.format("%.3f", fkpergame) }, }; IChatComponent msg; - if (this.unlocked || this.classname.equals("hunter") || this.classname.equals("shark") || this.classname.equals("cow")) { + if (unlocked || classname.equals("hunter") || classname.equals("shark") || classname.equals("cow")) { msg = new ChatComponentText(EnumChatFormatting.AQUA + bar() + "\n") - .appendSibling(PlanckeHeaderText(formattedname, playername, " - Mega Walls " + this.classnameuppercase + " stats")) + .appendSibling(PlanckeHeaderText(formattedname, playername, " - Mega Walls " + classnameuppercase + " stats")) .appendSibling(new ChatComponentText("\n" + "\n" + alignText(matrix1)) .setChatStyle(new ChatStyle() @@ -274,28 +282,28 @@ public IChatComponent getFormattedMessage(String formattedname, String playernam .appendSibling(new ChatComponentText(alignText(matrix2) + - centerLine(EnumChatFormatting.GREEN + "Selected skin : " + EnumChatFormatting.GOLD + (this.chosen_skin_class == null ? (this.classnameuppercase == null ? "None" : this.classnameuppercase) : this.chosen_skin_class)) + "\n" + "\n" + centerLine(EnumChatFormatting.GREEN + "Selected skin : " + EnumChatFormatting.GOLD + (chosen_skin_class == null ? (classnameuppercase == null ? "None" : classnameuppercase) : chosen_skin_class)) + "\n" + "\n" - + centerLine(EnumChatFormatting.GREEN + "Classpoints : " + EnumChatFormatting.GOLD + this.classpoints + " " - + EnumChatFormatting.GREEN + " Playtime (approx.) : " + EnumChatFormatting.GOLD + String.format("%.2f", this.classname_time_played / 60f) + "h") + "\n" + + centerLine(EnumChatFormatting.GREEN + "Classpoints : " + EnumChatFormatting.GOLD + classpoints + " " + + EnumChatFormatting.GREEN + " Playtime (approx.) : " + EnumChatFormatting.GOLD + String.format("%.2f", classname_time_played / 60f) + "h") + "\n" + centerLine(EnumChatFormatting.GREEN + "Kit : " - + (this.skill_level_d == 5 ? EnumChatFormatting.GOLD : EnumChatFormatting.DARK_GRAY) + intToRoman(this.skill_level_d) + " " - + (this.skill_level_a == 5 ? EnumChatFormatting.GOLD : EnumChatFormatting.DARK_GRAY) + intToRoman(this.skill_level_a) + " " - + (this.skill_level_b == 3 ? EnumChatFormatting.GOLD : EnumChatFormatting.DARK_GRAY) + intToRoman(this.skill_level_b) + " " - + (this.skill_level_c == 3 ? EnumChatFormatting.GOLD : EnumChatFormatting.DARK_GRAY) + intToRoman(this.skill_level_c) + " " - + (this.skill_level_g == 3 ? EnumChatFormatting.GOLD : EnumChatFormatting.DARK_GRAY) + intToRoman(this.skill_level_g) + " " + + (skill_level_d == 5 ? EnumChatFormatting.GOLD : EnumChatFormatting.DARK_GRAY) + intToRoman(skill_level_d) + " " + + (skill_level_a == 5 ? EnumChatFormatting.GOLD : EnumChatFormatting.DARK_GRAY) + intToRoman(skill_level_a) + " " + + (skill_level_b == 3 ? EnumChatFormatting.GOLD : EnumChatFormatting.DARK_GRAY) + intToRoman(skill_level_b) + " " + + (skill_level_c == 3 ? EnumChatFormatting.GOLD : EnumChatFormatting.DARK_GRAY) + intToRoman(skill_level_c) + " " + + (skill_level_g == 3 ? EnumChatFormatting.GOLD : EnumChatFormatting.DARK_GRAY) + intToRoman(skill_level_g) + " " - + EnumChatFormatting.GREEN + "Prestige : " + (this.prestige == 0 ? EnumChatFormatting.DARK_GRAY : EnumChatFormatting.GOLD) + intToRoman(this.prestige) + " " - + EnumChatFormatting.GREEN + "Echest rows : " + (this.enderchest_rows == 5 ? EnumChatFormatting.GOLD : EnumChatFormatting.DARK_GRAY) + this.enderchest_rows) + "\n" + + EnumChatFormatting.GREEN + "Prestige : " + (prestige == 0 ? EnumChatFormatting.DARK_GRAY : EnumChatFormatting.GOLD) + intToRoman(prestige) + " " + + EnumChatFormatting.GREEN + "Echest rows : " + (enderchest_rows == 5 ? EnumChatFormatting.GOLD : EnumChatFormatting.DARK_GRAY) + enderchest_rows) + "\n" + EnumChatFormatting.AQUA + bar())); } else { msg = new ChatComponentText(EnumChatFormatting.AQUA + bar() + "\n" - + centerLine(formattedname + EnumChatFormatting.GOLD + " - Mega Walls " + this.classnameuppercase + " stats") + "\n" + "\n" - + centerLine(formattedname + EnumChatFormatting.RED + " didn't purchased " + EnumChatFormatting.GOLD + this.classnameuppercase) + "\n" + + centerLine(formattedname + EnumChatFormatting.GOLD + " - Mega Walls " + classnameuppercase + " stats") + "\n" + "\n" + + centerLine(formattedname + EnumChatFormatting.RED + " didn't purchased " + EnumChatFormatting.GOLD + classnameuppercase) + "\n" + EnumChatFormatting.AQUA + bar()); } diff --git a/src/main/java/fr/alexdoru/megawallsenhancementsmod/api/hypixelplayerdataparser/MegaWallsStats.java b/src/main/java/fr/alexdoru/megawallsenhancementsmod/api/hypixelplayerdataparser/MegaWallsStats.java index 3a80526a..1737a101 100644 --- a/src/main/java/fr/alexdoru/megawallsenhancementsmod/api/hypixelplayerdataparser/MegaWallsStats.java +++ b/src/main/java/fr/alexdoru/megawallsenhancementsmod/api/hypixelplayerdataparser/MegaWallsStats.java @@ -225,7 +225,7 @@ public IChatComponent getFormattedMessage(String formattedname, String playernam { EnumChatFormatting.AQUA + "Wither dmg/game : " + EnumChatFormatting.GOLD + ((int) wither_damage_game) + " ", - EnumChatFormatting.AQUA + "Def Kills/game : " + EnumChatFormatting.GOLD + String.format("%.3f", def_kill_game) + EnumChatFormatting.AQUA + "Def Kills/game : " + EnumChatFormatting.GOLD + String.format("%.2f", def_kill_game) }, { From 244a25ec1169be6caa3410ba07ecb4d8f3d8102b Mon Sep 17 00:00:00 2001 From: Alexdoru <57050655+alexdoru@users.noreply.github.com> Date: Fri, 24 Jun 2022 21:53:33 +0200 Subject: [PATCH 14/37] new scangame flag with amount of legendary skins (cherry picked from commit cc2e0a4ab3c7edde2fd1d86d57802fee148ffc32) --- .../commands/CommandScanGame.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/main/java/fr/alexdoru/megawallsenhancementsmod/commands/CommandScanGame.java b/src/main/java/fr/alexdoru/megawallsenhancementsmod/commands/CommandScanGame.java index 8303063d..86d8bd99 100644 --- a/src/main/java/fr/alexdoru/megawallsenhancementsmod/commands/CommandScanGame.java +++ b/src/main/java/fr/alexdoru/megawallsenhancementsmod/commands/CommandScanGame.java @@ -194,6 +194,17 @@ public String call() { } + if (imsg == null) { + float ratio = megawallsstats.getLegSkins() * 12f / (megawallsstats.getGames_played() == 0 ? 1 : megawallsstats.getGames_played()); + if (ratio >= 1) { + imsg = getFormattedNameWithPlanckeClickEvent(networkPlayerInfo).appendSibling(new ChatComponentText( + EnumChatFormatting.GRAY + " played : " + EnumChatFormatting.GOLD + megawallsstats.getGames_played() + + EnumChatFormatting.GRAY + " and has : " + EnumChatFormatting.GOLD + megawallsstats.getLegSkins() + + EnumChatFormatting.GRAY + " legendary skin" + (megawallsstats.getLegSkins() > 1 ? "s" : "") + )); + } + } + if (imsg != null) { ChatUtil.addChatMessage(new ChatComponentText(ChatUtil.getTagMW()).appendSibling(imsg)); CommandScanGame.put(uuid, imsg); From 09ff412eded9eaa231f76d20869dba2876dcdb30 Mon Sep 17 00:00:00 2001 From: Alexdoru <57050655+alexdoru@users.noreply.github.com> Date: Sat, 25 Jun 2022 14:00:36 +0200 Subject: [PATCH 15/37] fix renegade damage hud not working (cherry picked from commit 23abe2365df7375fd01612ba96f3a6a0c77f333d) --- .../fr/alexdoru/megawallsenhancementsmod/gui/ArrowHitGui.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/fr/alexdoru/megawallsenhancementsmod/gui/ArrowHitGui.java b/src/main/java/fr/alexdoru/megawallsenhancementsmod/gui/ArrowHitGui.java index 5fc3bed1..c336348d 100644 --- a/src/main/java/fr/alexdoru/megawallsenhancementsmod/gui/ArrowHitGui.java +++ b/src/main/java/fr/alexdoru/megawallsenhancementsmod/gui/ArrowHitGui.java @@ -91,7 +91,7 @@ public static boolean processMessage(String msg, String fmsg) { Matcher matcherRend = PATTERN_REND.matcher(msg); if (matcherRend.matches()) { - HPvalue = "-" + Float.parseFloat(matcherRend.group(2)); + HPvalue = "-" + Float.parseFloat(matcherRend.group(1)); hittime = System.currentTimeMillis() + 1000L; normalhit = true; Color = EnumChatFormatting.GREEN; From e3fafb0b6489998ed2623508cc40a5330722034a Mon Sep 17 00:00:00 2001 From: Alexdoru <57050655+alexdoru@users.noreply.github.com> Date: Sat, 25 Jun 2022 14:00:50 +0200 Subject: [PATCH 16/37] move name format method for arrow hit hud (cherry picked from commit d036ed8c489409f6efddedce9e4312810b6db34d) --- .../gui/ArrowHitGui.java | 26 ++++++++++++++++--- .../utils/NameUtil.java | 17 ------------ 2 files changed, 22 insertions(+), 21 deletions(-) diff --git a/src/main/java/fr/alexdoru/megawallsenhancementsmod/gui/ArrowHitGui.java b/src/main/java/fr/alexdoru/megawallsenhancementsmod/gui/ArrowHitGui.java index c336348d..f52a0498 100644 --- a/src/main/java/fr/alexdoru/megawallsenhancementsmod/gui/ArrowHitGui.java +++ b/src/main/java/fr/alexdoru/megawallsenhancementsmod/gui/ArrowHitGui.java @@ -1,8 +1,12 @@ package fr.alexdoru.megawallsenhancementsmod.gui; +import fr.alexdoru.fkcountermod.FKCounterMod; +import fr.alexdoru.megawallsenhancementsmod.asm.hooks.NetHandlerPlayClientHook; import fr.alexdoru.megawallsenhancementsmod.config.ConfigHandler; +import fr.alexdoru.megawallsenhancementsmod.data.MWPlayerData; import fr.alexdoru.megawallsenhancementsmod.utils.ChatUtil; -import fr.alexdoru.megawallsenhancementsmod.utils.NameUtil; +import net.minecraft.client.network.NetworkPlayerInfo; +import net.minecraft.scoreboard.ScorePlayerTeam; import net.minecraft.util.ChatComponentText; import net.minecraft.util.EnumChatFormatting; @@ -45,7 +49,7 @@ public static boolean processMessage(String msg, String fmsg) { hittime = System.currentTimeMillis(); instance.updateDisplayText(); String playername = matcherArrowHit.group(1); - ChatUtil.addChatMessage(new ChatComponentText(fmsg.replaceFirst(playername, NameUtil.getFormattedName(playername)))); + ChatUtil.addChatMessage(new ChatComponentText(fmsg.replaceFirst(playername, getFormattedName(playername)))); return true; } @@ -59,7 +63,7 @@ public static boolean processMessage(String msg, String fmsg) { setColor(HPvalue); instance.updateDisplayText(); String playername = matcherRenegadeHit.group(1); - ChatUtil.addChatMessage(new ChatComponentText(fmsg.replaceFirst(playername, NameUtil.getFormattedName(playername)))); + ChatUtil.addChatMessage(new ChatComponentText(fmsg.replaceFirst(playername, getFormattedName(playername)))); return true; } @@ -84,7 +88,7 @@ public static boolean processMessage(String msg, String fmsg) { Color = EnumChatFormatting.GREEN; instance.updateDisplayText(); String playername = matcherLeapDirectHit.group(1); - ChatUtil.addChatMessage(new ChatComponentText(fmsg.replaceFirst(playername, NameUtil.getFormattedName(playername)))); + ChatUtil.addChatMessage(new ChatComponentText(fmsg.replaceFirst(playername, getFormattedName(playername)))); return true; } @@ -153,4 +157,18 @@ public boolean isEnabled() { return System.currentTimeMillis() - hittime < 1000L; } + private static String getFormattedName(String playername) { + if (FKCounterMod.isInMwGame) { + final NetworkPlayerInfo networkPlayerInfo = NetHandlerPlayClientHook.playerInfoMap.get(playername); + if (networkPlayerInfo != null) { + final MWPlayerData mwPlayerData = MWPlayerData.dataCache.get(networkPlayerInfo.getGameProfile().getId()); + if (mwPlayerData != null && mwPlayerData.P5Tag != null && mwPlayerData.originalP4Tag != null) { + return ScorePlayerTeam.formatPlayerName(networkPlayerInfo.getPlayerTeam(), playername).replace(mwPlayerData.originalP4Tag, mwPlayerData.P5Tag); + } + return ScorePlayerTeam.formatPlayerName(networkPlayerInfo.getPlayerTeam(), playername); + } + } + return playername; + } + } diff --git a/src/main/java/fr/alexdoru/megawallsenhancementsmod/utils/NameUtil.java b/src/main/java/fr/alexdoru/megawallsenhancementsmod/utils/NameUtil.java index c398dbe1..888b42e0 100644 --- a/src/main/java/fr/alexdoru/megawallsenhancementsmod/utils/NameUtil.java +++ b/src/main/java/fr/alexdoru/megawallsenhancementsmod/utils/NameUtil.java @@ -275,23 +275,6 @@ public static IChatComponent getTransformedDisplayName(GameProfile gameProfileIn return null; } - /** - * Returns name formatted with teaml format, has prestige 5 tag but not icons at the start - */ - public static String getFormattedName(String playername) { - if (FKCounterMod.isInMwGame) { - final NetworkPlayerInfo networkPlayerInfo = NetHandlerPlayClientHook.playerInfoMap.get(playername); - if (networkPlayerInfo != null) { - final MWPlayerData mwPlayerData = ((GameProfileAccessor) networkPlayerInfo.getGameProfile()).getMWPlayerData(); - if (mwPlayerData != null && mwPlayerData.P5Tag != null && mwPlayerData.originalP4Tag != null) { - return ScorePlayerTeam.formatPlayerName(networkPlayerInfo.getPlayerTeam(), playername).replace(mwPlayerData.originalP4Tag, mwPlayerData.P5Tag); - } - return ScorePlayerTeam.formatPlayerName(networkPlayerInfo.getPlayerTeam(), playername); - } - } - return playername; - } - public static void refreshAllNamesInWorld() { mc.getNetHandler().getPlayerInfoMap().forEach(p -> { if (p != null) { From a1f4c8445037e0a8a5ee99e55e5c22b3193511c3 Mon Sep 17 00:00:00 2001 From: Alexdoru <57050655+alexdoru@users.noreply.github.com> Date: Sat, 25 Jun 2022 15:07:05 +0200 Subject: [PATCH 17/37] zzzzzzzzzzzzzz (cherry picked from commit 492ff1a14a5fc76dae1f5c61f879e080d0a32bb7) --- .../fkcountermod/utils/ScoreboardUtils.java | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/src/main/java/fr/alexdoru/fkcountermod/utils/ScoreboardUtils.java b/src/main/java/fr/alexdoru/fkcountermod/utils/ScoreboardUtils.java index 71b168f0..f9f64459 100644 --- a/src/main/java/fr/alexdoru/fkcountermod/utils/ScoreboardUtils.java +++ b/src/main/java/fr/alexdoru/fkcountermod/utils/ScoreboardUtils.java @@ -40,31 +40,22 @@ public static List getFormattedSidebarText() { * Item at index 0 is the first line etc */ public static List getFormattedSidebarText(Scoreboard scoreboard) { - List lines = new ArrayList<>(); ScoreObjective objective = scoreboard.getObjectiveInDisplaySlot(1); - if (objective == null) { return lines; } - Collection scores = scoreboard.getSortedScores(objective); - - List list = scores.stream() - .filter(input -> input != null && input.getPlayerName() != null && !input.getPlayerName().startsWith("#")) - .collect(Collectors.toList()); - + List list = scores.stream().filter(input -> input != null && input.getPlayerName() != null && !input.getPlayerName().startsWith("#")).collect(Collectors.toList()); if (list.size() > 15) { scores = Lists.newArrayList(Iterables.skip(list, scores.size() - 15)); } else { scores = list; } - for (Score score : scores) { ScorePlayerTeam team = scoreboard.getPlayersTeam(score.getPlayerName()); lines.add(ScorePlayerTeam.formatPlayerName(team, "")); } - Collections.reverse(lines); return lines; } @@ -106,11 +97,9 @@ public static List stripControlCodes(List ListIn) { */ public static String getSidebarTitle(Scoreboard scoreboard) { ScoreObjective objective = scoreboard.getObjectiveInDisplaySlot(1); - if (objective == null) { return ""; } - return objective.getDisplayName(); } From 355e3bab8fe5fde7453e4fd0fe3877755c72dd65 Mon Sep 17 00:00:00 2001 From: Alexdoru <57050655+alexdoru@users.noreply.github.com> Date: Sat, 25 Jun 2022 15:15:10 +0200 Subject: [PATCH 18/37] added back debugscoreboard (cherry picked from commit b9c53e8e6a3054eebe70b0d45e94da9088102099) --- .../alexdoru/nocheatersmod/commands/CommandNocheaters.java | 7 ++++++- .../fr/alexdoru/nocheatersmod/events/GameInfoGrabber.java | 2 ++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/main/java/fr/alexdoru/nocheatersmod/commands/CommandNocheaters.java b/src/main/java/fr/alexdoru/nocheatersmod/commands/CommandNocheaters.java index f0d1f12a..20400013 100644 --- a/src/main/java/fr/alexdoru/nocheatersmod/commands/CommandNocheaters.java +++ b/src/main/java/fr/alexdoru/nocheatersmod/commands/CommandNocheaters.java @@ -10,6 +10,7 @@ import fr.alexdoru.megawallsenhancementsmod.utils.*; import fr.alexdoru.nocheatersmod.data.WDR; import fr.alexdoru.nocheatersmod.data.WdredPlayers; +import fr.alexdoru.nocheatersmod.events.GameInfoGrabber; import fr.alexdoru.nocheatersmod.events.ReportQueue; import fr.alexdoru.nocheatersmod.util.NoCheatersMessages; import net.minecraft.client.Minecraft; @@ -369,12 +370,16 @@ public void processCommand(ICommandSender sender, String[] args) { } else if (args[0].equalsIgnoreCase("debugreportqueue")) { ReportQueue.isDebugMode = !ReportQueue.isDebugMode; - if(ReportQueue.isDebugMode) { + if (ReportQueue.isDebugMode) { debug("enabled debug report queue"); } else { debug("disabled debug report queue"); } + } else if (args[0].equalsIgnoreCase("getscoreboard")) { + + GameInfoGrabber.debugGetScoreboard(); + } else { addChatMessage(getCommandHelp()); diff --git a/src/main/java/fr/alexdoru/nocheatersmod/events/GameInfoGrabber.java b/src/main/java/fr/alexdoru/nocheatersmod/events/GameInfoGrabber.java index eeeed6f0..ea4c1623 100644 --- a/src/main/java/fr/alexdoru/nocheatersmod/events/GameInfoGrabber.java +++ b/src/main/java/fr/alexdoru/nocheatersmod/events/GameInfoGrabber.java @@ -2,6 +2,7 @@ import fr.alexdoru.fkcountermod.FKCounterMod; import fr.alexdoru.fkcountermod.utils.ScoreboardUtils; +import fr.alexdoru.megawallsenhancementsmod.asm.ASMLoadingPlugin; import net.minecraft.util.ChatComponentText; import java.util.Date; @@ -44,6 +45,7 @@ public static void debugGetScoreboard() { } for (String sidebarScore : scoresColor) { addChatMessage(new ChatComponentText(sidebarScore)); + ASMLoadingPlugin.logger.info(sidebarScore); } } From 840d20cb6b6f1d3a61a242d5f18f857677cf261d Mon Sep 17 00:00:00 2001 From: Alexdoru <57050655+alexdoru@users.noreply.github.com> Date: Sat, 25 Jun 2022 19:57:03 +0200 Subject: [PATCH 19/37] zzzzzzzzzz (cherry picked from commit 0531509a23a3cab5e2095cead6847f7dfe0eb83d) --- .../utils/DateUtil.java | 24 ------------------- 1 file changed, 24 deletions(-) diff --git a/src/main/java/fr/alexdoru/megawallsenhancementsmod/utils/DateUtil.java b/src/main/java/fr/alexdoru/megawallsenhancementsmod/utils/DateUtil.java index b8c9314e..d160a5ac 100644 --- a/src/main/java/fr/alexdoru/megawallsenhancementsmod/utils/DateUtil.java +++ b/src/main/java/fr/alexdoru/megawallsenhancementsmod/utils/DateUtil.java @@ -7,79 +7,55 @@ public class DateUtil { public static String localformatTimestamp(long epoch) { - SimpleDateFormat Df = new SimpleDateFormat("dd/MM/yyyy 'at' HH:mm:ss"); //SimpleDateFormat Df = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); //Calendar currentTime = Calendar.getInstance(); return Df.format(epoch); - } public static String ESTformatTimestamp(long epoch) { - SimpleDateFormat ESTDf = new SimpleDateFormat("dd/MM/yyyy 'at' HH:mm:ss 'EST'"); //SimpleDateFormat ESTDf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); TimeZone etTimeZone = TimeZone.getTimeZone("America/New_York"); ESTDf.setTimeZone(etTimeZone); //Calendar currentTime = Calendar.getInstance(); return ESTDf.format(epoch); - } public static String localformatTimestampday(long epoch) { - SimpleDateFormat Df = new SimpleDateFormat("dd/MM/yyyy"); return Df.format(epoch); - } /** * Returns the time since input as a string message */ public static String timeSince(long epoch) { - long diff = (new Date()).getTime() - epoch; - if (diff < 1000 * 60) { // less than 60 sec - return diff / 1000 + "sec"; - } else if (diff < 1000 * 60 * 60) { // less than 60 minutes - long sec; long min; - sec = diff / 1000; min = sec / 60; - return min + "min" + sec % 60 + "sec"; - - } else if (diff < 1000 * 60 * 60 * 24) { // less than 24hours - long min; long hours; - min = diff / (1000 * 60); hours = min / 60; - return hours + "h" + min % 60 + "min"; - } else { // more than a day - long min; long hours; long days; - min = diff / (1000 * 60); hours = min / 60; days = hours / 24; - return days + (days == 1 ? "day" : "days") + hours % 24 + "h"; //return String.valueOf(days) + (days==1?"day":"days") + String.valueOf(hours%24) + "h" + String.valueOf(min%60) + "min"; - } - } } From 5d43217fb62bf8a83bf63896b2f97c451eff67f4 Mon Sep 17 00:00:00 2001 From: Alexdoru <57050655+alexdoru@users.noreply.github.com> Date: Sat, 25 Jun 2022 23:36:00 +0200 Subject: [PATCH 20/37] should fix not detecting pregame lobby during mythic games (cherry picked from commit f8f94a8026ea7f524cd2d84ba9d3df7ad47488dc) --- .../fkcountermod/utils/ScoreboardParser.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/main/java/fr/alexdoru/fkcountermod/utils/ScoreboardParser.java b/src/main/java/fr/alexdoru/fkcountermod/utils/ScoreboardParser.java index fac51625..e6d3a9d5 100644 --- a/src/main/java/fr/alexdoru/fkcountermod/utils/ScoreboardParser.java +++ b/src/main/java/fr/alexdoru/fkcountermod/utils/ScoreboardParser.java @@ -13,7 +13,7 @@ public class ScoreboardParser { private static final Pattern GAME_ID_PATTERN = Pattern.compile("\\s*\\d+/\\d+/\\d+\\s+([\\d\\w]+)\\s*", Pattern.CASE_INSENSITIVE); private static final Pattern MW_TITLE_PATTERN = Pattern.compile("\\s*MEGA\\sWALLS\\s*", Pattern.CASE_INSENSITIVE); private static final Pattern MW_INGAME_PATTERN = Pattern.compile("[0-9]+\\sFinals?\\s[0-9]+\\sF\\.\\sAssists?"); - private static final Pattern PREGAME_LOBBY_PATTERN = Pattern.compile("\\s*Players:\\s*[0-9]+/[0-9]+\\s*"); + private static final Pattern PREGAME_LOBBY_PATTERN = Pattern.compile("Players:\\s*[0-9]+/[0-9]+"); private static final Pattern WITHER_ALIVE_PATTERN = Pattern.compile("\\s*\\[.\\] Wither HP: ?(\\d+).*", Pattern.CASE_INSENSITIVE); private static final Pattern WITHER_ALIVE_HEART_PATTERN = Pattern.compile("\\s*\\[.\\] Wither [\u2764\u2665]: ?(\\d+).*", Pattern.CASE_INSENSITIVE); @@ -45,6 +45,14 @@ public ScoreboardParser(Scoreboard scoreboard) { Matcher matcher = GAME_ID_PATTERN.matcher(scoresRaw.get(0)); if (!matcher.matches()) { + for (String line : scoresRaw) { + if (PREGAME_LOBBY_PATTERN.matcher(line).find()) { + gameId = null; + preGameLobby = true; + isInMwGame = false; + return; + } + } return; } @@ -55,7 +63,7 @@ public ScoreboardParser(Scoreboard scoreboard) { isInMwGame = true; continue; } - if (PREGAME_LOBBY_PATTERN.matcher(line).matches()) { + if (PREGAME_LOBBY_PATTERN.matcher(line).find()) { gameId = null; preGameLobby = true; isInMwGame = false; From f6dc1b3f18e53f6d65ed651141f02fd95b782e1f Mon Sep 17 00:00:00 2001 From: Alexdoru <57050655+alexdoru@users.noreply.github.com> Date: Sat, 25 Jun 2022 23:40:30 +0200 Subject: [PATCH 21/37] add format long method (cherry picked from commit 61b63d70f8feea031f9dc0f02bf422750054f0ce) --- .../alexdoru/megawallsenhancementsmod/utils/ChatUtil.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/java/fr/alexdoru/megawallsenhancementsmod/utils/ChatUtil.java b/src/main/java/fr/alexdoru/megawallsenhancementsmod/utils/ChatUtil.java index 5310cf87..589feaab 100644 --- a/src/main/java/fr/alexdoru/megawallsenhancementsmod/utils/ChatUtil.java +++ b/src/main/java/fr/alexdoru/megawallsenhancementsmod/utils/ChatUtil.java @@ -188,6 +188,13 @@ public static String capitalizeFirstLetter(String string) { * Returns the integer as a String with a space for thousands delimiter */ public static String formatInt(int number) { + return formatLong(number); + } + + /** + * Returns the integer as a String with a space for thousands delimiter + */ + public static String formatLong(long number) { String str = String.valueOf(number); char separator = ' '; int iterator = 1; From b204d8ae578cdf532bcd2fb2c18796dc3c9fb035 Mon Sep 17 00:00:00 2001 From: Alexdoru <57050655+alexdoru@users.noreply.github.com> Date: Sun, 26 Jun 2022 15:43:58 +0200 Subject: [PATCH 22/37] unused import (cherry picked from commit 9bbbfe1fe8d73313029c64b088244406d4694517) --- .../alexdoru/megawallsenhancementsmod/commands/CommandName.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/fr/alexdoru/megawallsenhancementsmod/commands/CommandName.java b/src/main/java/fr/alexdoru/megawallsenhancementsmod/commands/CommandName.java index ac290813..82a18702 100644 --- a/src/main/java/fr/alexdoru/megawallsenhancementsmod/commands/CommandName.java +++ b/src/main/java/fr/alexdoru/megawallsenhancementsmod/commands/CommandName.java @@ -18,7 +18,6 @@ import java.util.List; import static fr.alexdoru.megawallsenhancementsmod.utils.ChatUtil.addChatMessage; -import static fr.alexdoru.megawallsenhancementsmod.utils.ChatUtil.getTagMW; public class CommandName extends CommandBase { From be4b8d7d21504ce36b5bc1dfeb9123853ab11856 Mon Sep 17 00:00:00 2001 From: Alexdoru <57050655+alexdoru@users.noreply.github.com> Date: Sun, 26 Jun 2022 18:42:34 +0200 Subject: [PATCH 23/37] added kill message in kill counter (cherry picked from commit a88c02b0e7858ba08243b037272be60d87f81cdf) --- .../java/fr/alexdoru/fkcountermod/events/KillCounter.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/fr/alexdoru/fkcountermod/events/KillCounter.java b/src/main/java/fr/alexdoru/fkcountermod/events/KillCounter.java index 460ce625..a0eefbea 100644 --- a/src/main/java/fr/alexdoru/fkcountermod/events/KillCounter.java +++ b/src/main/java/fr/alexdoru/fkcountermod/events/KillCounter.java @@ -105,7 +105,9 @@ public class KillCounter { "(\\w{1,16}) went up in flames\\.", "(\\w{1,16}) burned to death\\.", "(\\w{1,16}) suffocated in a wall\\.", - "(\\w{1,16}) fell out of the world\\." + "(\\w{1,16}) fell out of the world\\.", + "(\\w{1,16}) had a block fall on them\\.", + "(\\w{1,16}) drowned\\." }; private static final String[] SCOREBOARD_PREFIXES = {"[R]", "[G]", "[Y]", "[B]"}; private static final String[] DEFAULT_PREFIXES = {"c", "a", "e", "9"}; // RED GREEN YELLOW BLUE From cebfb74a9659d19315c2593e524bd7ebfa5454b9 Mon Sep 17 00:00:00 2001 From: Alexdoru <57050655+alexdoru@users.noreply.github.com> Date: Sun, 26 Jun 2022 19:06:30 +0200 Subject: [PATCH 24/37] opti imports (cherry picked from commit 43495c65511f182088bca6f24b86094e995afdd2) --- src/main/java/fr/alexdoru/nocheatersmod/NoCheatersMod.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/java/fr/alexdoru/nocheatersmod/NoCheatersMod.java b/src/main/java/fr/alexdoru/nocheatersmod/NoCheatersMod.java index 9f58d907..67a2a5bb 100644 --- a/src/main/java/fr/alexdoru/nocheatersmod/NoCheatersMod.java +++ b/src/main/java/fr/alexdoru/nocheatersmod/NoCheatersMod.java @@ -1,6 +1,9 @@ package fr.alexdoru.nocheatersmod; -import fr.alexdoru.nocheatersmod.commands.*; +import fr.alexdoru.nocheatersmod.commands.CommandNocheaters; +import fr.alexdoru.nocheatersmod.commands.CommandReport; +import fr.alexdoru.nocheatersmod.commands.CommandUnWDR; +import fr.alexdoru.nocheatersmod.commands.CommandWDR; import fr.alexdoru.nocheatersmod.data.WdredPlayers; import fr.alexdoru.nocheatersmod.events.NoCheatersEvents; import net.minecraft.client.Minecraft; From d3c4de2e3cad32a0b31174855684e9343eb2823a Mon Sep 17 00:00:00 2001 From: Alexdoru <57050655+alexdoru@users.noreply.github.com> Date: Sun, 26 Jun 2022 20:29:09 +0200 Subject: [PATCH 25/37] zzzzz (cherry picked from commit 108b9b0731271922ef0e83d232f9b46f269f3536) --- .../java/fr/alexdoru/nocheatersmod/commands/CommandWDR.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/fr/alexdoru/nocheatersmod/commands/CommandWDR.java b/src/main/java/fr/alexdoru/nocheatersmod/commands/CommandWDR.java index 8688cecb..10ba0ef0 100644 --- a/src/main/java/fr/alexdoru/nocheatersmod/commands/CommandWDR.java +++ b/src/main/java/fr/alexdoru/nocheatersmod/commands/CommandWDR.java @@ -201,7 +201,7 @@ public static void handleWDRCommand(String[] args, boolean sentFromAutoReport, b ReportQueue.INSTANCE.addReportTimestamp(true); if (FKCounterMod.preGameLobby) { - ChatUtil.addChatMessage(new ChatComponentText(ChatUtil.getChatReportingAdvice())); + addChatMessage(new ChatComponentText(getChatReportingAdvice())); } CachedMojangUUID apireq; From f0322174d593d2feab89bf386155e2fbaa243b1c Mon Sep 17 00:00:00 2001 From: Alexdoru <57050655+alexdoru@users.noreply.github.com> Date: Mon, 27 Jun 2022 01:41:08 +0200 Subject: [PATCH 26/37] changed fks HUD in player mode (cherry picked from commit a1ba358f89e92c8c848431ba86188f20eb44b0ee) --- .../fkcountermod/gui/FKCounterGui.java | 27 +++++++++++-------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/src/main/java/fr/alexdoru/fkcountermod/gui/FKCounterGui.java b/src/main/java/fr/alexdoru/fkcountermod/gui/FKCounterGui.java index 125aca98..091aafe5 100644 --- a/src/main/java/fr/alexdoru/fkcountermod/gui/FKCounterGui.java +++ b/src/main/java/fr/alexdoru/fkcountermod/gui/FKCounterGui.java @@ -27,12 +27,12 @@ public class FKCounterGui extends MyCachedGui { + EnumChatFormatting.YELLOW + "3" + EnumChatFormatting.DARK_GRAY + " / " + EnumChatFormatting.BLUE + "4"; /*used as an example when in the settings*/ - private static final String DUMMY_TEXT_PLAYERS = EnumChatFormatting.RED + "Red" + EnumChatFormatting.WHITE + ": 12 " + EnumChatFormatting.GRAY + "- RedPlayer (5)\n" - + EnumChatFormatting.GREEN + "Green" + EnumChatFormatting.WHITE + ": 9 " + EnumChatFormatting.GRAY + "- GreenPlayer (4)\n" - + EnumChatFormatting.YELLOW + "Yellow" + EnumChatFormatting.WHITE + ": 5 " + EnumChatFormatting.GRAY + "- YellowPlayer (3)\n" - + EnumChatFormatting.BLUE + "Blue" + EnumChatFormatting.WHITE + ": 4 " + EnumChatFormatting.GRAY + "- BluePlayer (2)"; + private static final String DUMMY_TEXT_PLAYERS = EnumChatFormatting.RED + "R" + EnumChatFormatting.WHITE + " 12 :" + EnumChatFormatting.WHITE + " RedPlayer (5)\n" + + EnumChatFormatting.GREEN + "G" + EnumChatFormatting.WHITE + " 9 :" + EnumChatFormatting.WHITE + " GreenPlayer (4)\n" + + EnumChatFormatting.YELLOW + "Y" + EnumChatFormatting.WHITE + " 5 :" + EnumChatFormatting.WHITE + " YellowPlayer (3)\n" + + EnumChatFormatting.BLUE + "B" + EnumChatFormatting.WHITE + " 4 :" + EnumChatFormatting.WHITE + " BluePlayer (2)"; public static FKCounterGui instance; - private final int BACKGROUND_COLOR = new Color(0, 0, 0, 64).getRGB(); + private final int BACKGROUND_COLOR = new Color(0, 0, 0, 96).getRGB(); private final int DUMMY_BACKGROUND_COLOR = new Color(255, 255, 255, 127).getRGB(); public FKCounterGui() { @@ -60,7 +60,7 @@ public void render() { int x = absolutePos[0]; int y = absolutePos[1]; if (ConfigHandler.draw_background) { - drawRect(x - 1, y - 1, x + getWidth(), y + getHeight(), BACKGROUND_COLOR); + drawRect(x - 2, y - 2, x + getWidth() + 1, y + getHeight(), BACKGROUND_COLOR); } GlStateManager.pushMatrix(); { @@ -150,23 +150,28 @@ public void updateDisplayText() { if (i != 0) { strBuilder.append("\n"); } - strBuilder.append(getColorPrefixFromTeam(team)) - .append(getTeamNameFromTeam(team)).append(EnumChatFormatting.WHITE) - .append(": ").append(getKills(team)); + strBuilder.append(getColorPrefixFromTeam(team)).append(getTeamNameFromTeam(team).charAt(0)).append(EnumChatFormatting.WHITE).append(" ").append(getKills(team)); HashMap teamkillsmap = KillCounter.sortByDecreasingValue1(KillCounter.getPlayers(team)); if (!teamkillsmap.isEmpty()) { int playerAmount = 0; + boolean isFirst = true; for (Entry playerEntry : teamkillsmap.entrySet()) { + if (isFirst) { + strBuilder.append(" : "); + } else { + strBuilder.append(" - "); + } String squadname = SquadEvent.getSquad().get(playerEntry.getKey()); if (squadname != null) { - strBuilder.append(EnumChatFormatting.GRAY).append(" - ").append(squadname).append(" (").append(playerEntry.getValue()).append(")"); + strBuilder.append(squadname).append(" (").append(playerEntry.getValue()).append(")"); } else { - strBuilder.append(EnumChatFormatting.GRAY).append(" - ").append(playerEntry.getKey()).append(" (").append(playerEntry.getValue()).append(")"); + strBuilder.append(playerEntry.getKey()).append(" (").append(playerEntry.getValue()).append(")"); } playerAmount++; if (playerAmount == ConfigHandler.playerAmount) { break; } + isFirst = false; } } i++; From 3b4e44c63d54c42b26463cb6325c9cb2d61fc3d4 Mon Sep 17 00:00:00 2001 From: Alexdoru <57050655+alexdoru@users.noreply.github.com> Date: Mon, 27 Jun 2022 02:07:38 +0200 Subject: [PATCH 27/37] getSquadname method (cherry picked from commit 7c52fe43b2eab17c2b82dfe2a0570813d0894f04) --- .../commands/CommandFKCounter.java | 8 +------ .../fkcountermod/events/KillCounter.java | 23 ++----------------- .../fkcountermod/gui/FKCounterGui.java | 7 +----- .../commands/CommandSquad.java | 4 ++-- .../events/SquadEvent.java | 12 ++++++++++ 5 files changed, 18 insertions(+), 36 deletions(-) diff --git a/src/main/java/fr/alexdoru/fkcountermod/commands/CommandFKCounter.java b/src/main/java/fr/alexdoru/fkcountermod/commands/CommandFKCounter.java index 035ba03c..4dde66a8 100644 --- a/src/main/java/fr/alexdoru/fkcountermod/commands/CommandFKCounter.java +++ b/src/main/java/fr/alexdoru/fkcountermod/commands/CommandFKCounter.java @@ -60,13 +60,7 @@ public void processCommand(ICommandSender sender, String[] args) { .append(": "); for (Iterator> iterator = sortByDecreasingValue1(getPlayers(TEAM)).entrySet().iterator(); iterator.hasNext(); ) { Map.Entry entry = iterator.next(); - String name = entry.getKey(); - String squadname = SquadEvent.getSquad().get(name); - if (squadname != null) { - strBuilder.append(squadname).append(" (").append(entry.getValue()).append(")"); - } else { - strBuilder.append(name).append(" (").append(entry.getValue()).append(")"); - } + strBuilder.append(SquadEvent.getSquadname(entry.getKey())).append(" (").append(entry.getValue()).append(")"); if (iterator.hasNext()) { strBuilder.append(", "); } diff --git a/src/main/java/fr/alexdoru/fkcountermod/events/KillCounter.java b/src/main/java/fr/alexdoru/fkcountermod/events/KillCounter.java index a0eefbea..78b9c1e6 100644 --- a/src/main/java/fr/alexdoru/fkcountermod/events/KillCounter.java +++ b/src/main/java/fr/alexdoru/fkcountermod/events/KillCounter.java @@ -167,7 +167,6 @@ public static boolean processMessage(String FormattedText, String UnformattedTex String killer = matcher.group(2); String killedTeamColor = StringUtil.getLastFormattingCodeBefore(FormattedText, killedPlayer).replace("\u00a7",""); String killerTeamColor = StringUtil.getLastFormattingCodeBefore(FormattedText, killer).replace("\u00a7",""); - if (!killedTeamColor.equals("") && !killerTeamColor.equals("")) { if (removeKilledPlayer(killedPlayer, killedTeamColor)) { addKill(killer, killerTeamColor); @@ -176,23 +175,10 @@ public static boolean processMessage(String FormattedText, String UnformattedTex } FKCounterGui.instance.updateDisplayText(); } - if (ConfigHandler.strengthParticules) { spawnParticles(killer); } - - String squadmate = SquadEvent.getSquad().get(killer); - if (squadmate != null) { - ChatUtil.addChatMessage(new ChatComponentText(FormattedText.replace(killer, squadmate))); - return true; - } - squadmate = SquadEvent.getSquad().get(killedPlayer); - if (squadmate != null) { - ChatUtil.addChatMessage(new ChatComponentText(FormattedText.replace(killedPlayer, squadmate))); - return true; - } - - ChatUtil.addChatMessage(new ChatComponentText(FormattedText)); + ChatUtil.addChatMessage(new ChatComponentText(FormattedText.replace(killer, SquadEvent.getSquadname(killer)).replace(killedPlayer, SquadEvent.getSquadname(killedPlayer)))); return true; } @@ -205,12 +191,7 @@ public static boolean processMessage(String FormattedText, String UnformattedTex } FKCounterGui.instance.updateDisplayText(); } - String squadmate = SquadEvent.getSquad().get(killedPlayer); - if (squadmate != null) { - ChatUtil.addChatMessage(new ChatComponentText(FormattedText.replace(killedPlayer, squadmate))); - return true; - } - ChatUtil.addChatMessage(new ChatComponentText(FormattedText)); + ChatUtil.addChatMessage(new ChatComponentText(FormattedText.replace(killedPlayer, SquadEvent.getSquadname(killedPlayer)))); return true; } diff --git a/src/main/java/fr/alexdoru/fkcountermod/gui/FKCounterGui.java b/src/main/java/fr/alexdoru/fkcountermod/gui/FKCounterGui.java index 091aafe5..29e62bef 100644 --- a/src/main/java/fr/alexdoru/fkcountermod/gui/FKCounterGui.java +++ b/src/main/java/fr/alexdoru/fkcountermod/gui/FKCounterGui.java @@ -161,12 +161,7 @@ public void updateDisplayText() { } else { strBuilder.append(" - "); } - String squadname = SquadEvent.getSquad().get(playerEntry.getKey()); - if (squadname != null) { - strBuilder.append(squadname).append(" (").append(playerEntry.getValue()).append(")"); - } else { - strBuilder.append(playerEntry.getKey()).append(" (").append(playerEntry.getValue()).append(")"); - } + strBuilder.append(SquadEvent.getSquadname(playerEntry.getKey())).append(" (").append(playerEntry.getValue()).append(")"); playerAmount++; if (playerAmount == ConfigHandler.playerAmount) { break; diff --git a/src/main/java/fr/alexdoru/megawallsenhancementsmod/commands/CommandSquad.java b/src/main/java/fr/alexdoru/megawallsenhancementsmod/commands/CommandSquad.java index 40b9c54c..bd8359bb 100644 --- a/src/main/java/fr/alexdoru/megawallsenhancementsmod/commands/CommandSquad.java +++ b/src/main/java/fr/alexdoru/megawallsenhancementsmod/commands/CommandSquad.java @@ -102,9 +102,9 @@ public void processCommand(ICommandSender sender, String[] args) { for (Entry entry : squad.entrySet()) { String displayname = entry.getKey(); - String fakename = entry.getValue(); + String squadname = entry.getValue(); imsg.appendSibling(new ChatComponentText(EnumChatFormatting.DARK_GRAY + "- " + EnumChatFormatting.GOLD + displayname - + (displayname.equals(fakename) ? "" : EnumChatFormatting.GREEN + " renamed as : " + EnumChatFormatting.GOLD + entry.getValue()) + "\n")); + + (displayname.equals(squadname) ? "" : EnumChatFormatting.GREEN + " renamed as : " + EnumChatFormatting.GOLD + entry.getValue()) + "\n")); } addChatMessage(imsg); diff --git a/src/main/java/fr/alexdoru/megawallsenhancementsmod/events/SquadEvent.java b/src/main/java/fr/alexdoru/megawallsenhancementsmod/events/SquadEvent.java index 19511039..2c238b46 100644 --- a/src/main/java/fr/alexdoru/megawallsenhancementsmod/events/SquadEvent.java +++ b/src/main/java/fr/alexdoru/megawallsenhancementsmod/events/SquadEvent.java @@ -55,6 +55,18 @@ public static HashMap getSquad() { return squadmap; } + /** + * Returns the input name if the player is not in the squad + * Returns the alias if the player is in the squad + */ + public static String getSquadname(String playername) { + final String squadname = squadmap.get(playername); + if (squadname == null) { + return playername; + } + return squadname; + } + /** * At the start of any game it checks the scoreboard for teamates and adds them to the team * if you have the same teamates it keeps the nicks you gave them From 6b285f382a2156ae5639c9df986d123c55f43975 Mon Sep 17 00:00:00 2001 From: Alexdoru <57050655+alexdoru@users.noreply.github.com> Date: Tue, 28 Jun 2022 20:18:43 +0200 Subject: [PATCH 28/37] zzzzzzzz --- .../asm/transformers/EntityPlayerTransformer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/fr/alexdoru/megawallsenhancementsmod/asm/transformers/EntityPlayerTransformer.java b/src/main/java/fr/alexdoru/megawallsenhancementsmod/asm/transformers/EntityPlayerTransformer.java index b91e6e1e..50a22ffa 100644 --- a/src/main/java/fr/alexdoru/megawallsenhancementsmod/asm/transformers/EntityPlayerTransformer.java +++ b/src/main/java/fr/alexdoru/megawallsenhancementsmod/asm/transformers/EntityPlayerTransformer.java @@ -25,7 +25,7 @@ public ClassNode transform(ClassNode classNode, InjectionStatus status) { && ((MethodInsnNode) insnNode).name.equals(ASMLoadingPlugin.isObf ? "a" : "formatPlayerName") && ((MethodInsnNode) insnNode).desc.equals(ASMLoadingPlugin.isObf ? "(Lauq;Ljava/lang/String;)Ljava/lang/String;" : "(Lnet/minecraft/scoreboard/Team;Ljava/lang/String;)Ljava/lang/String;")) { /* - * Replaces line 1422 : + * Replaces line 2422 : * ichatcomponent.appendSibling(new ChatComponentText(ScorePlayerTeam.formatPlayerName(this.getTeam(), this.getDisplayNameString()))); * With : * ichatcomponent.appendSibling(new ChatComponentText(EntityPlayerHook.getTransformedDisplayName(ScorePlayerTeam.formatPlayerName(this.getTeam(), this.getDisplayNameString()), this.gameProfile))); From caacbcfc829b86ec4ef4dd3dc3fc4e01362b93a6 Mon Sep 17 00:00:00 2001 From: Alexdoru <57050655+alexdoru@users.noreply.github.com> Date: Thu, 30 Jun 2022 02:47:35 +0200 Subject: [PATCH 29/37] added one kill counter message --- src/main/java/fr/alexdoru/fkcountermod/events/KillCounter.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/fr/alexdoru/fkcountermod/events/KillCounter.java b/src/main/java/fr/alexdoru/fkcountermod/events/KillCounter.java index 78b9c1e6..1adf9faa 100644 --- a/src/main/java/fr/alexdoru/fkcountermod/events/KillCounter.java +++ b/src/main/java/fr/alexdoru/fkcountermod/events/KillCounter.java @@ -105,6 +105,7 @@ public class KillCounter { "(\\w{1,16}) went up in flames\\.", "(\\w{1,16}) burned to death\\.", "(\\w{1,16}) suffocated in a wall\\.", + "(\\w{1,16}) suffocated\\.", "(\\w{1,16}) fell out of the world\\.", "(\\w{1,16}) had a block fall on them\\.", "(\\w{1,16}) drowned\\." From 0968946a22ebfb47241b41ae0879757a5104aeba Mon Sep 17 00:00:00 2001 From: Alexdoru <57050655+alexdoru@users.noreply.github.com> Date: Fri, 1 Jul 2022 03:04:18 +0200 Subject: [PATCH 30/37] new color code method in stringutils --- .../fkcountermod/events/KillCounter.java | 6 ++-- .../fkcountermod/utils/ScoreboardParser.java | 36 +++++++++---------- .../utils/StringUtil.java | 21 +++++++++++ 3 files changed, 41 insertions(+), 22 deletions(-) diff --git a/src/main/java/fr/alexdoru/fkcountermod/events/KillCounter.java b/src/main/java/fr/alexdoru/fkcountermod/events/KillCounter.java index 1adf9faa..0fc3ed9b 100644 --- a/src/main/java/fr/alexdoru/fkcountermod/events/KillCounter.java +++ b/src/main/java/fr/alexdoru/fkcountermod/events/KillCounter.java @@ -166,8 +166,8 @@ public static boolean processMessage(String FormattedText, String UnformattedTex if (matcher.groupCount() == 2) { String killedPlayer = matcher.group(1); String killer = matcher.group(2); - String killedTeamColor = StringUtil.getLastFormattingCodeBefore(FormattedText, killedPlayer).replace("\u00a7",""); - String killerTeamColor = StringUtil.getLastFormattingCodeBefore(FormattedText, killer).replace("\u00a7",""); + String killedTeamColor = StringUtil.getLastColorCodeBefore(FormattedText, killedPlayer).replace("\u00a7", ""); + String killerTeamColor = StringUtil.getLastColorCodeBefore(FormattedText, killer).replace("\u00a7", ""); if (!killedTeamColor.equals("") && !killerTeamColor.equals("")) { if (removeKilledPlayer(killedPlayer, killedTeamColor)) { addKill(killer, killerTeamColor); @@ -185,7 +185,7 @@ public static boolean processMessage(String FormattedText, String UnformattedTex if (matcher.groupCount() == 1) { String killedPlayer = matcher.group(1); - String killedTeamColor = StringUtil.getLastFormattingCodeBefore(FormattedText, killedPlayer).replace("\u00a7",""); + String killedTeamColor = StringUtil.getLastColorCodeBefore(FormattedText, killedPlayer).replace("\u00a7", ""); if (!killedTeamColor.equals("")) { if (removeKilledPlayer(killedPlayer, killedTeamColor)) { playersPresentInGame.add(killedPlayer); diff --git a/src/main/java/fr/alexdoru/fkcountermod/utils/ScoreboardParser.java b/src/main/java/fr/alexdoru/fkcountermod/utils/ScoreboardParser.java index e6d3a9d5..a1dea7a3 100644 --- a/src/main/java/fr/alexdoru/fkcountermod/utils/ScoreboardParser.java +++ b/src/main/java/fr/alexdoru/fkcountermod/utils/ScoreboardParser.java @@ -1,6 +1,7 @@ package fr.alexdoru.fkcountermod.utils; import fr.alexdoru.megawallsenhancementsmod.gui.LastWitherHPGui; +import fr.alexdoru.megawallsenhancementsmod.utils.StringUtil; import net.minecraft.scoreboard.Scoreboard; import java.util.ArrayList; @@ -36,16 +37,16 @@ public ScoreboardParser(Scoreboard scoreboard) { return; } isMWEnvironement = true; - List scoresColor = ScoreboardUtils.getFormattedSidebarText(scoreboard); - List scoresRaw = ScoreboardUtils.stripControlCodes(scoresColor); + List formattedSidebarLines = ScoreboardUtils.getFormattedSidebarText(scoreboard); + List unformattedSidebarLines = ScoreboardUtils.stripControlCodes(formattedSidebarLines); - if (scoresRaw.size() == 0) { + if (unformattedSidebarLines.size() == 0) { return; } - Matcher matcher = GAME_ID_PATTERN.matcher(scoresRaw.get(0)); + Matcher matcher = GAME_ID_PATTERN.matcher(unformattedSidebarLines.get(0)); if (!matcher.matches()) { - for (String line : scoresRaw) { + for (String line : unformattedSidebarLines) { if (PREGAME_LOBBY_PATTERN.matcher(line).find()) { gameId = null; preGameLobby = true; @@ -58,7 +59,7 @@ public ScoreboardParser(Scoreboard scoreboard) { gameId = matcher.group(1); - for (String line : scoresRaw) { + for (String line : unformattedSidebarLines) { if (MW_INGAME_PATTERN.matcher(line).find()) { isInMwGame = true; continue; @@ -71,38 +72,35 @@ public ScoreboardParser(Scoreboard scoreboard) { } } - if (scoresRaw.size() < 7) { + if (unformattedSidebarLines.size() < 7) { return; } - if (scoresRaw.get(1).contains("Walls Fall:") || scoresRaw.get(1).contains("Gates Open:")) { + if (unformattedSidebarLines.get(1).contains("Walls Fall:") || unformattedSidebarLines.get(1).contains("Gates Open:")) { isitPrepPhase = true; } int eliminated_teams = 0; int witherHP = 1000; - for (int i = 3; i < Math.min(scoresRaw.size(), 7); i++) { + for (int i = 3; i < Math.min(unformattedSidebarLines.size(), 7); i++) { - String line = scoresRaw.get(i); + String line = unformattedSidebarLines.get(i); /*Wither alive detection*/ final Matcher matcher1 = WITHER_ALIVE_PATTERN.matcher(line); + String colorCode; if (matcher1.matches()) { - - String lineColor = scoresColor.get(i); - String colorCode = lineColor.split("\u00a7")[1].substring(0, 1); + String formattedLine = formattedSidebarLines.get(i); + colorCode = StringUtil.getLastColorCodeBefore(formattedLine, "["); aliveWithers.add(colorCode); witherHP = Integer.parseInt(matcher1.group(1)); - } else { final Matcher matcher2 = WITHER_ALIVE_HEART_PATTERN.matcher(line); if (matcher2.matches()) { - - String lineColor = scoresColor.get(i); - String colorCode = lineColor.split("\u00a7")[1].substring(0, 1); + String formattedLine = formattedSidebarLines.get(i); + colorCode = StringUtil.getLastColorCodeBefore(formattedLine, "["); aliveWithers.add(colorCode); witherHP = 2 * Integer.parseInt(matcher2.group(1)); - } } @@ -112,7 +110,7 @@ public ScoreboardParser(Scoreboard scoreboard) { } - if (eliminated_teams == 3 || scoresRaw.get(1).contains("None!:")) { + if (eliminated_teams == 3 || unformattedSidebarLines.get(1).contains("None!:")) { hasgameended = true; } diff --git a/src/main/java/fr/alexdoru/megawallsenhancementsmod/utils/StringUtil.java b/src/main/java/fr/alexdoru/megawallsenhancementsmod/utils/StringUtil.java index 84334b28..f64b046b 100644 --- a/src/main/java/fr/alexdoru/megawallsenhancementsmod/utils/StringUtil.java +++ b/src/main/java/fr/alexdoru/megawallsenhancementsmod/utils/StringUtil.java @@ -13,6 +13,7 @@ public class StringUtil { private static final Pattern FORMATTING_CODE_PATTERN = Pattern.compile("(?i)" + '\u00a7' + "[0-9A-FK-OR]"); + private static final Pattern COLOR_CODE_PATTERN = Pattern.compile("(?i)" + '\u00a7' + "[0-9A-F]"); /** * On hypixel the chat messages sent by players follow the pattern: @@ -72,6 +73,26 @@ public static String getLastFormattingCodeBefore(String message, String target) return getLastFormattingCodeOf(split[0]); } + /** + * Returns only color codes, Self-explanatory, returns "" if it can't find the last color code + */ + public static String getLastColorCodeOf(String text) { + final Matcher matcher = COLOR_CODE_PATTERN.matcher(text); + String s = ""; + while (matcher.find()) { + s = matcher.group(); + } + return s; + } + + public static String getLastColorCodeBefore(String message, String target) { + String[] split = message.split(target, 2); + if (split.length != 2) { + return ""; + } + return getLastColorCodeOf(split[0]); + } + public static IChatComponent censorChatMessage(String message, String messageSender) { String[] split = message.split(messageSender, 2); if (split.length != 2) { From 3d4df090fcf8fc1c002d9c05c116334aae0f9af7 Mon Sep 17 00:00:00 2001 From: Alexdoru <57050655+alexdoru@users.noreply.github.com> Date: Fri, 1 Jul 2022 03:05:04 +0200 Subject: [PATCH 31/37] move format name method again --- .../gui/ArrowHitGui.java | 25 +++---------------- .../utils/NameUtil.java | 15 +++++++++++ 2 files changed, 19 insertions(+), 21 deletions(-) diff --git a/src/main/java/fr/alexdoru/megawallsenhancementsmod/gui/ArrowHitGui.java b/src/main/java/fr/alexdoru/megawallsenhancementsmod/gui/ArrowHitGui.java index f52a0498..b60f37e5 100644 --- a/src/main/java/fr/alexdoru/megawallsenhancementsmod/gui/ArrowHitGui.java +++ b/src/main/java/fr/alexdoru/megawallsenhancementsmod/gui/ArrowHitGui.java @@ -1,12 +1,9 @@ package fr.alexdoru.megawallsenhancementsmod.gui; import fr.alexdoru.fkcountermod.FKCounterMod; -import fr.alexdoru.megawallsenhancementsmod.asm.hooks.NetHandlerPlayClientHook; import fr.alexdoru.megawallsenhancementsmod.config.ConfigHandler; -import fr.alexdoru.megawallsenhancementsmod.data.MWPlayerData; import fr.alexdoru.megawallsenhancementsmod.utils.ChatUtil; -import net.minecraft.client.network.NetworkPlayerInfo; -import net.minecraft.scoreboard.ScorePlayerTeam; +import fr.alexdoru.megawallsenhancementsmod.utils.NameUtil; import net.minecraft.util.ChatComponentText; import net.minecraft.util.EnumChatFormatting; @@ -49,7 +46,7 @@ public static boolean processMessage(String msg, String fmsg) { hittime = System.currentTimeMillis(); instance.updateDisplayText(); String playername = matcherArrowHit.group(1); - ChatUtil.addChatMessage(new ChatComponentText(fmsg.replaceFirst(playername, getFormattedName(playername)))); + ChatUtil.addChatMessage(new ChatComponentText(FKCounterMod.isInMwGame ? fmsg.replaceFirst(playername, NameUtil.getFormattedName(playername)) : fmsg)); return true; } @@ -63,7 +60,7 @@ public static boolean processMessage(String msg, String fmsg) { setColor(HPvalue); instance.updateDisplayText(); String playername = matcherRenegadeHit.group(1); - ChatUtil.addChatMessage(new ChatComponentText(fmsg.replaceFirst(playername, getFormattedName(playername)))); + ChatUtil.addChatMessage(new ChatComponentText(FKCounterMod.isInMwGame ? fmsg.replaceFirst(playername, NameUtil.getFormattedName(playername)) : fmsg)); return true; } @@ -88,7 +85,7 @@ public static boolean processMessage(String msg, String fmsg) { Color = EnumChatFormatting.GREEN; instance.updateDisplayText(); String playername = matcherLeapDirectHit.group(1); - ChatUtil.addChatMessage(new ChatComponentText(fmsg.replaceFirst(playername, getFormattedName(playername)))); + ChatUtil.addChatMessage(new ChatComponentText(FKCounterMod.isInMwGame ? fmsg.replaceFirst(playername, NameUtil.getFormattedName(playername)) : fmsg)); return true; } @@ -157,18 +154,4 @@ public boolean isEnabled() { return System.currentTimeMillis() - hittime < 1000L; } - private static String getFormattedName(String playername) { - if (FKCounterMod.isInMwGame) { - final NetworkPlayerInfo networkPlayerInfo = NetHandlerPlayClientHook.playerInfoMap.get(playername); - if (networkPlayerInfo != null) { - final MWPlayerData mwPlayerData = MWPlayerData.dataCache.get(networkPlayerInfo.getGameProfile().getId()); - if (mwPlayerData != null && mwPlayerData.P5Tag != null && mwPlayerData.originalP4Tag != null) { - return ScorePlayerTeam.formatPlayerName(networkPlayerInfo.getPlayerTeam(), playername).replace(mwPlayerData.originalP4Tag, mwPlayerData.P5Tag); - } - return ScorePlayerTeam.formatPlayerName(networkPlayerInfo.getPlayerTeam(), playername); - } - } - return playername; - } - } diff --git a/src/main/java/fr/alexdoru/megawallsenhancementsmod/utils/NameUtil.java b/src/main/java/fr/alexdoru/megawallsenhancementsmod/utils/NameUtil.java index 888b42e0..6a274ab0 100644 --- a/src/main/java/fr/alexdoru/megawallsenhancementsmod/utils/NameUtil.java +++ b/src/main/java/fr/alexdoru/megawallsenhancementsmod/utils/NameUtil.java @@ -267,6 +267,21 @@ public static void transformGameProfile(GameProfile gameProfileIn, boolean force } + /** + * Returns the formatted team name with additionnal prestige V tag + */ + public static String getFormattedName(String playername) { + final NetworkPlayerInfo networkPlayerInfo = NetHandlerPlayClientHook.playerInfoMap.get(playername); + if (networkPlayerInfo != null) { + final MWPlayerData mwPlayerData = MWPlayerData.dataCache.get(networkPlayerInfo.getGameProfile().getId()); + if (mwPlayerData != null && mwPlayerData.P5Tag != null && mwPlayerData.originalP4Tag != null) { + return ScorePlayerTeam.formatPlayerName(networkPlayerInfo.getPlayerTeam(), playername).replace(mwPlayerData.originalP4Tag, mwPlayerData.P5Tag); + } + return ScorePlayerTeam.formatPlayerName(networkPlayerInfo.getPlayerTeam(), playername); + } + return playername; + } + public static IChatComponent getTransformedDisplayName(GameProfile gameProfileIn) { MWPlayerData mwPlayerData = ((GameProfileAccessor) gameProfileIn).getMWPlayerData(); if (mwPlayerData != null) { From e98193c528a0c91e4f9db078b68f028697372e3d Mon Sep 17 00:00:00 2001 From: Alexdoru <57050655+alexdoru@users.noreply.github.com> Date: Fri, 1 Jul 2022 04:18:51 +0200 Subject: [PATCH 32/37] fix ScoreboardParser --- .../java/fr/alexdoru/fkcountermod/utils/ScoreboardParser.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/fr/alexdoru/fkcountermod/utils/ScoreboardParser.java b/src/main/java/fr/alexdoru/fkcountermod/utils/ScoreboardParser.java index a1dea7a3..04a39bfc 100644 --- a/src/main/java/fr/alexdoru/fkcountermod/utils/ScoreboardParser.java +++ b/src/main/java/fr/alexdoru/fkcountermod/utils/ScoreboardParser.java @@ -91,14 +91,14 @@ public ScoreboardParser(Scoreboard scoreboard) { String colorCode; if (matcher1.matches()) { String formattedLine = formattedSidebarLines.get(i); - colorCode = StringUtil.getLastColorCodeBefore(formattedLine, "["); + colorCode = StringUtil.getLastColorCodeBefore(formattedLine, "\\[").replace("\u00a7", ""); aliveWithers.add(colorCode); witherHP = Integer.parseInt(matcher1.group(1)); } else { final Matcher matcher2 = WITHER_ALIVE_HEART_PATTERN.matcher(line); if (matcher2.matches()) { String formattedLine = formattedSidebarLines.get(i); - colorCode = StringUtil.getLastColorCodeBefore(formattedLine, "["); + colorCode = StringUtil.getLastColorCodeBefore(formattedLine, "\\[").replace("\u00a7", ""); aliveWithers.add(colorCode); witherHP = 2 * Integer.parseInt(matcher2.group(1)); } From 34754892f74ac841ae65c1af369154cf354caa7c Mon Sep 17 00:00:00 2001 From: Alexdoru <57050655+alexdoru@users.noreply.github.com> Date: Fri, 1 Jul 2022 18:47:36 +0200 Subject: [PATCH 33/37] fix crash when opening certain books --- .../asm/hooks/GuiScreenBookHook.java | 58 ++++++++++--------- 1 file changed, 31 insertions(+), 27 deletions(-) diff --git a/src/main/java/fr/alexdoru/megawallsenhancementsmod/asm/hooks/GuiScreenBookHook.java b/src/main/java/fr/alexdoru/megawallsenhancementsmod/asm/hooks/GuiScreenBookHook.java index 2d5b0215..4a9ee617 100644 --- a/src/main/java/fr/alexdoru/megawallsenhancementsmod/asm/hooks/GuiScreenBookHook.java +++ b/src/main/java/fr/alexdoru/megawallsenhancementsmod/asm/hooks/GuiScreenBookHook.java @@ -24,40 +24,44 @@ public class GuiScreenBookHook { private static final Pattern nickGenerationPagePattern = Pattern.compile("We've generated a random username for you:\\s*\\w{2,16}"); public static void onBookInit(ItemStack book) { - isOnNickGenerationPage = false; - if (book.hasTagCompound()) { - NBTTagCompound nbttagcompound = book.getTagCompound(); - NBTTagList bookPages = nbttagcompound.getTagList("pages", 8); - if (bookPages != null) { - bookPages = (NBTTagList) bookPages.copy(); - int bookTotalPages = bookPages.tagCount(); - if (bookTotalPages < 1) { - bookTotalPages = 1; - } - for (int i = 0; i < bookTotalPages; i++) { - String pagetext = EnumChatFormatting.getTextWithoutFormattingCodes(IChatComponent.Serializer.jsonToComponent(bookPages.getStringTagAt(i)).getUnformattedText().replace("\n", "")); - Matcher matcher = nickSuccessPagePattern.matcher(pagetext); - if (matcher.find()) { - final String newNick = matcher.group(1); - if (newNick != null && !newNick.equals("")) { - if (!ConfigHandler.hypixelNick.equals("")) { - String oldAliasForNick = SquadEvent.getSquad().remove(ConfigHandler.hypixelNick); - if (oldAliasForNick != null) { - SquadEvent.addPlayer(newNick, oldAliasForNick); + try { + isOnNickGenerationPage = false; + if (book.hasTagCompound()) { + NBTTagCompound nbttagcompound = book.getTagCompound(); + NBTTagList bookPages = nbttagcompound.getTagList("pages", 8); + if (bookPages != null) { + bookPages = (NBTTagList) bookPages.copy(); + int bookTotalPages = bookPages.tagCount(); + if (bookTotalPages < 1) { + bookTotalPages = 1; + } + for (int i = 0; i < bookTotalPages; i++) { + String pagetext = EnumChatFormatting.getTextWithoutFormattingCodes(IChatComponent.Serializer.jsonToComponent(bookPages.getStringTagAt(i)).getUnformattedText().replace("\n", "")); + Matcher matcher = nickSuccessPagePattern.matcher(pagetext); + if (matcher.find()) { + final String newNick = matcher.group(1); + if (newNick != null && !newNick.equals("")) { + if (!ConfigHandler.hypixelNick.equals("")) { + String oldAliasForNick = SquadEvent.getSquad().remove(ConfigHandler.hypixelNick); + if (oldAliasForNick != null) { + SquadEvent.addPlayer(newNick, oldAliasForNick); + } } + ConfigHandler.hypixelNick = newNick; + ConfigHandler.saveConfig(); + return; } - ConfigHandler.hypixelNick = newNick; - ConfigHandler.saveConfig(); + } + matcher = nickGenerationPagePattern.matcher(pagetext); + if (matcher.find()) { + isOnNickGenerationPage = true; return; } } - matcher = nickGenerationPagePattern.matcher(pagetext); - if (matcher.find()) { - isOnNickGenerationPage = true; - return; - } } } + } catch (Exception e) { + e.printStackTrace(); } } From 7f5959c7826d4a80d74602024c3c8c22faacf760 Mon Sep 17 00:00:00 2001 From: Alexdoru <57050655+alexdoru@users.noreply.github.com> Date: Fri, 1 Jul 2022 19:29:06 +0200 Subject: [PATCH 34/37] show prestiges in the /plancke name mw cp --- .../MegaWallsStats.java | 25 ++++++++++++------- .../utils/ChatUtil.java | 1 - 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/src/main/java/fr/alexdoru/megawallsenhancementsmod/api/hypixelplayerdataparser/MegaWallsStats.java b/src/main/java/fr/alexdoru/megawallsenhancementsmod/api/hypixelplayerdataparser/MegaWallsStats.java index 1737a101..b8bb6613 100644 --- a/src/main/java/fr/alexdoru/megawallsenhancementsmod/api/hypixelplayerdataparser/MegaWallsStats.java +++ b/src/main/java/fr/alexdoru/megawallsenhancementsmod/api/hypixelplayerdataparser/MegaWallsStats.java @@ -17,7 +17,10 @@ public class MegaWallsStats { - private final LinkedHashMap classpointsMap = new LinkedHashMap<>(); + /** + * First element of the array is the prestige level, second element is the amount of classpoints + */ + private final LinkedHashMap classpointsMap = new LinkedHashMap<>(); private String chosen_class; private String chosen_skin_class; private int coins = 0; @@ -113,12 +116,13 @@ public MegaWallsStats(JsonObject playerData) { if (classeobj == null) { continue; } - nbprestiges = nbprestiges + JsonUtil.getInt(classeobj, "prestige"); - int classpoints = JsonUtil.getInt(mwdata, classname + "_final_kills_standard") + final int prestige = JsonUtil.getInt(classeobj, "prestige"); + nbprestiges = nbprestiges + prestige; + final int classpoints = JsonUtil.getInt(mwdata, classname + "_final_kills_standard") + JsonUtil.getInt(mwdata, classname + "_final_assists_standard") + JsonUtil.getInt(mwdata, classname + "_wins_standard") * 10; total_classpoints += classpoints; - classpointsMap.put(classname, classpoints); + classpointsMap.put(classname, new Integer[]{prestige, classpoints}); } final JsonElement achievementsOneTime = playerData.get("achievementsOneTime"); @@ -161,12 +165,15 @@ public JsonObject getClassesdata() { public IChatComponent getClassPointsMessage(String formattedname, String playername) { IChatComponent imsg = new ChatComponentText(EnumChatFormatting.AQUA + ChatUtil.bar() + "\n") .appendSibling(ChatUtil.PlanckeHeaderText(formattedname, playername, " - Mega Walls Classpoints\n\n")); - for (Map.Entry entry : classpointsMap.entrySet()) { + for (Map.Entry entry : classpointsMap.entrySet()) { imsg.appendSibling(new ChatComponentText(EnumChatFormatting.GREEN + ChatUtil.capitalizeFirstLetter(entry.getKey())) - .setChatStyle(new ChatStyle() - .setChatHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ChatComponentText(EnumChatFormatting.YELLOW + "Click for " + entry.getKey() + " stats"))) - .setChatClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/plancke " + playername + " mw " + entry.getKey())))) - .appendSibling(new ChatComponentText(" : " + formatClasspoint(entry.getValue()) + "\n")); + .setChatStyle(new ChatStyle() + .setChatHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ChatComponentText(EnumChatFormatting.YELLOW + "Click for " + entry.getKey() + " stats"))) + .setChatClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/plancke " + playername + " mw " + entry.getKey())))); + if (entry.getValue()[0] != 0) { + imsg.appendSibling(new ChatComponentText(EnumChatFormatting.GOLD + " P" + ChatUtil.intToRoman(entry.getValue()[0]))); + } + imsg.appendSibling(new ChatComponentText(" : " + formatClasspoint(entry.getValue()[1]) + "\n")); } imsg.appendSibling(new ChatComponentText(EnumChatFormatting.GREEN + "Total : " + EnumChatFormatting.GOLD + total_classpoints + "\n")); imsg.appendSibling(new ChatComponentText(EnumChatFormatting.AQUA + ChatUtil.bar())); diff --git a/src/main/java/fr/alexdoru/megawallsenhancementsmod/utils/ChatUtil.java b/src/main/java/fr/alexdoru/megawallsenhancementsmod/utils/ChatUtil.java index 589feaab..5a16f1cc 100644 --- a/src/main/java/fr/alexdoru/megawallsenhancementsmod/utils/ChatUtil.java +++ b/src/main/java/fr/alexdoru/megawallsenhancementsmod/utils/ChatUtil.java @@ -227,7 +227,6 @@ public static String intToRoman(int number) { return "V"; default: return String.valueOf(number); - } } From 8425a148afeda98ba31b9097427bc52ee530ed97 Mon Sep 17 00:00:00 2001 From: Alexdoru <57050655+alexdoru@users.noreply.github.com> Date: Fri, 1 Jul 2022 20:48:51 +0200 Subject: [PATCH 35/37] advice to boosting report when you report a bhopper that joined in party --- .../events/ChatEvents.java | 10 ++ .../utils/PartyDetection.java | 97 +++++++++++++++++++ .../nocheatersmod/commands/CommandWDR.java | 3 + 3 files changed, 110 insertions(+) create mode 100644 src/main/java/fr/alexdoru/megawallsenhancementsmod/utils/PartyDetection.java diff --git a/src/main/java/fr/alexdoru/megawallsenhancementsmod/events/ChatEvents.java b/src/main/java/fr/alexdoru/megawallsenhancementsmod/events/ChatEvents.java index df8fa265..9eafc4cd 100644 --- a/src/main/java/fr/alexdoru/megawallsenhancementsmod/events/ChatEvents.java +++ b/src/main/java/fr/alexdoru/megawallsenhancementsmod/events/ChatEvents.java @@ -11,6 +11,7 @@ import fr.alexdoru.megawallsenhancementsmod.gui.KillCooldownGui; import fr.alexdoru.megawallsenhancementsmod.utils.ChatUtil; import fr.alexdoru.megawallsenhancementsmod.utils.HypixelApiKeyUtil; +import fr.alexdoru.megawallsenhancementsmod.utils.PartyDetection; import fr.alexdoru.megawallsenhancementsmod.utils.StringUtil; import fr.alexdoru.nocheatersmod.data.WDR; import fr.alexdoru.nocheatersmod.data.WdredPlayers; @@ -45,6 +46,7 @@ public class ChatEvents { private static final Pattern DREADLORD_STRENGTH_PATTERN = Pattern.compile("\u00a74\u00a7lSOUL SIPHON \u00a7c\u00a7l85% ([0-9])s"); private static final Pattern HEROBRINE_STRENGTH_PATTERN = Pattern.compile("\u00a7e\u00a7lPOWER \u00a7c\u00a7l85% ([0-9])s"); private static final Pattern HUNTER_PRE_STRENGTH_PATTERN = Pattern.compile("\u00a7a\u00a7lF\\.O\\.N\\. \u00a77\\(\u00a7l\u00a7c\u00a7lStrength\u00a77\\) \u00a7e\u00a7l([0-9]+)"); + private static final Pattern PLAYER_JOIN_PATTERN = Pattern.compile("^(\\w{1,16}) has joined \\([0-9]{1,3}/[0-9]{1,3}\\)!"); private static final Pattern ZOMBIE_STRENGTH_PATTERN = Pattern.compile("\u00a72\u00a7lBERSERK \u00a7c\u00a7l75% ([0-9])s"); private static final Pattern MESSAGE_PATTERN = Pattern.compile("^(?:|\\[SHOUT\\] |\\[SPECTATOR\\] )(?:|\\[[A-Z]{3,6}\\] )(?:|\\[((?:MV|VI)P\\+?\\+?)\\] )(\\w{2,16}):.*"); private static long lastStrength = 0; @@ -170,6 +172,14 @@ public void onChatMessage(ClientChatReceivedEvent event) { return; } + if (FKCounterMod.preGameLobby) { + Matcher playerJoinMatcher = PLAYER_JOIN_PATTERN.matcher(msg); + if (playerJoinMatcher.matches()) { + PartyDetection.onPlayerJoin(playerJoinMatcher.group(1), System.currentTimeMillis()); + return; + } + } + if (msg.equals(BAN_MESSAGE)) { new DelayedTask(NetHandlerPlayClientHook::printDisconnectedPlayers, 20); //return; diff --git a/src/main/java/fr/alexdoru/megawallsenhancementsmod/utils/PartyDetection.java b/src/main/java/fr/alexdoru/megawallsenhancementsmod/utils/PartyDetection.java new file mode 100644 index 00000000..7c054b79 --- /dev/null +++ b/src/main/java/fr/alexdoru/megawallsenhancementsmod/utils/PartyDetection.java @@ -0,0 +1,97 @@ +package fr.alexdoru.megawallsenhancementsmod.utils; + +import fr.alexdoru.fkcountermod.utils.DelayedTask; +import fr.alexdoru.megawallsenhancementsmod.asm.hooks.NetHandlerPlayClientHook; +import net.minecraft.client.network.NetworkPlayerInfo; +import net.minecraft.event.ClickEvent; +import net.minecraft.event.HoverEvent; +import net.minecraft.scoreboard.ScorePlayerTeam; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.ChatStyle; +import net.minecraft.util.EnumChatFormatting; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +import static fr.alexdoru.megawallsenhancementsmod.utils.ChatUtil.addChatMessage; +import static fr.alexdoru.megawallsenhancementsmod.utils.ChatUtil.getTagNoCheaters; + +public class PartyDetection { + + private static String lastPlayerJoining = ""; + private static long timeLastJoin = 0; + private static final HashMap> partysMap = new HashMap<>(); + + public static void onPlayerJoin(String playername, long jointime) { + + if (timeLastJoin != 0 && jointime - timeLastJoin > 25L * 60L * 1000L) { + partysMap.clear(); + } + + if (jointime - timeLastJoin < 101L && !lastPlayerJoining.equals("")) { + final List partyLastPlayer = partysMap.get(lastPlayerJoining); + final List partyPlayer = partysMap.get(playername); + if (partyLastPlayer != null && partyPlayer != null) { + addAllWithoutDuplicates(partyLastPlayer, partyPlayer); + partysMap.put(playername, partyLastPlayer); + } else if (partyLastPlayer != null) { + partyLastPlayer.add(playername); + partysMap.put(playername, partyLastPlayer); + } else if (partyPlayer != null) { + partyPlayer.add(lastPlayerJoining); + partysMap.put(lastPlayerJoining, partyPlayer); + } else { + final List newParty = new ArrayList<>(); + newParty.add(lastPlayerJoining); + newParty.add(playername); + partysMap.put(lastPlayerJoining, newParty); + partysMap.put(playername, newParty); + } + } + + lastPlayerJoining = playername; + timeLastJoin = jointime; + + } + + private static void addAllWithoutDuplicates(List listToKeep, List listToAdd) { + for (String s : listToAdd) { + if (!listToKeep.contains(s)) { + listToKeep.add(s); + } + } + } + + public static void printBoostingReportAdvice(String playername) { + final List partyList = partysMap.get(playername); + if (partyList != null) { + final NetworkPlayerInfo infoPlayername = NetHandlerPlayClientHook.playerInfoMap.get(playername); + if (infoPlayername == null) { + return; + } + final String teamColorPlayername = StringUtil.getLastColorCodeBefore(ScorePlayerTeam.formatPlayerName(infoPlayername.getPlayerTeam(), playername), playername); + final ChatComponentText imsg = new ChatComponentText(getTagNoCheaters() + EnumChatFormatting.GREEN + "This player joined in a party with : "); + for (String player : partyList) { + if (!player.equals(playername)) { + final NetworkPlayerInfo networkPlayerInfo = NetHandlerPlayClientHook.playerInfoMap.get(player); + if (networkPlayerInfo != null) { + final String teamColorPlayer = StringUtil.getLastColorCodeBefore(ScorePlayerTeam.formatPlayerName(networkPlayerInfo.getPlayerTeam(), player), player); + if (!teamColorPlayername.equals("") && teamColorPlayername.equals(teamColorPlayer)) { + imsg.appendSibling(new ChatComponentText(NameUtil.getFormattedName(player) + " ") + .setChatStyle(new ChatStyle() + .setChatHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ChatComponentText(EnumChatFormatting.YELLOW + "Click here to report " + player + " for boosting"))) + .setChatClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/report " + player + " -b BOO -C")) + )); + } + } + } + } + imsg.appendSibling(new ChatComponentText(EnumChatFormatting.GREEN + "you could boosting report them as well.")); + new DelayedTask(() -> addChatMessage(imsg), 10); + } + } + +} + + diff --git a/src/main/java/fr/alexdoru/nocheatersmod/commands/CommandWDR.java b/src/main/java/fr/alexdoru/nocheatersmod/commands/CommandWDR.java index 10ba0ef0..76a4c9cf 100644 --- a/src/main/java/fr/alexdoru/nocheatersmod/commands/CommandWDR.java +++ b/src/main/java/fr/alexdoru/nocheatersmod/commands/CommandWDR.java @@ -198,6 +198,9 @@ public static void handleWDRCommand(String[] args, boolean sentFromAutoReport, b } } + if (arraycheats.contains("bhop")) { + PartyDetection.printBoostingReportAdvice(playername); + } ReportQueue.INSTANCE.addReportTimestamp(true); if (FKCounterMod.preGameLobby) { From b2b01b60a6b20ae96418865acdaa298e83b52b7c Mon Sep 17 00:00:00 2001 From: Alexdoru <57050655+alexdoru@users.noreply.github.com> Date: Sat, 2 Jul 2022 14:42:26 +0200 Subject: [PATCH 36/37] addallias command --- .../MegaWallsEnhancementsMod.java | 1 + .../commands/CommandAddAlias.java | 76 +++++++++++++++++++ 2 files changed, 77 insertions(+) create mode 100644 src/main/java/fr/alexdoru/megawallsenhancementsmod/commands/CommandAddAlias.java diff --git a/src/main/java/fr/alexdoru/megawallsenhancementsmod/MegaWallsEnhancementsMod.java b/src/main/java/fr/alexdoru/megawallsenhancementsmod/MegaWallsEnhancementsMod.java index 34762064..a21a7ad2 100644 --- a/src/main/java/fr/alexdoru/megawallsenhancementsmod/MegaWallsEnhancementsMod.java +++ b/src/main/java/fr/alexdoru/megawallsenhancementsmod/MegaWallsEnhancementsMod.java @@ -60,6 +60,7 @@ public void init(FMLInitializationEvent event) { ClientCommandHandler.instance.registerCommand(new CommandStalk()); ClientCommandHandler.instance.registerCommand(new CommandPlancke()); ClientCommandHandler.instance.registerCommand(new CommandScanGame()); + ClientCommandHandler.instance.registerCommand(new CommandAddAlias()); ClientCommandHandler.instance.registerCommand(new CommandHypixelShout()); ClientCommandHandler.instance.registerCommand(new CommandHypixelReply()); ClientCommandHandler.instance.registerCommand(new CommandMWEnhancements()); diff --git a/src/main/java/fr/alexdoru/megawallsenhancementsmod/commands/CommandAddAlias.java b/src/main/java/fr/alexdoru/megawallsenhancementsmod/commands/CommandAddAlias.java new file mode 100644 index 00000000..5877fc57 --- /dev/null +++ b/src/main/java/fr/alexdoru/megawallsenhancementsmod/commands/CommandAddAlias.java @@ -0,0 +1,76 @@ +package fr.alexdoru.megawallsenhancementsmod.commands; + +import fr.alexdoru.megawallsenhancementsmod.utils.ChatUtil; +import fr.alexdoru.megawallsenhancementsmod.utils.NameUtil; +import fr.alexdoru.megawallsenhancementsmod.utils.TabCompletionUtil; +import net.minecraft.client.Minecraft; +import net.minecraft.client.network.NetworkPlayerInfo; +import net.minecraft.command.CommandBase; +import net.minecraft.command.CommandException; +import net.minecraft.command.ICommandSender; +import net.minecraft.util.BlockPos; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.EnumChatFormatting; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; + +public class CommandAddAlias extends CommandBase { + + public static final HashMap renamingMap = new HashMap<>(); + + @Override + public String getCommandName() { + return "addalias"; + } + + @Override + public String getCommandUsage(ICommandSender sender) { + return "/addalias"; + } + + @Override + public void processCommand(ICommandSender sender, String[] args) throws CommandException { + if (args.length == 1 && args[0].equals("clearall")) { + renamingMap.clear(); + ChatUtil.addChatMessage(new ChatComponentText(EnumChatFormatting.GREEN + "Cleared alias for all players.")); + return; + } else if (args.length == 1 && args[0].equals("list")) { + ChatUtil.addChatMessage(new ChatComponentText(EnumChatFormatting.GREEN + "In this lobby :\n")); + for (NetworkPlayerInfo networkPlayerInfo : Minecraft.getMinecraft().getNetHandler().getPlayerInfoMap()) { + final String alias = renamingMap.get(networkPlayerInfo.getGameProfile().getName()); + if (alias != null) { + ChatUtil.addChatMessage(new ChatComponentText(NameUtil.getFormattedName(networkPlayerInfo.getGameProfile().getName()) + EnumChatFormatting.RESET + " (" + alias + ")")); + } + } + return; + } + if (args.length != 2) { + ChatUtil.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "Usage : /addalias ")); + return; + } + if (args[0].equals("remove")) { + renamingMap.remove(args[1]); + NameUtil.updateGameProfileAndName(args[1], true); + ChatUtil.addChatMessage(new ChatComponentText(EnumChatFormatting.GREEN + "Removed alias for " + EnumChatFormatting.GOLD + args[1])); + return; + } + renamingMap.put(args[0], args[1]); + NameUtil.updateGameProfileAndName(args[0], true); + ChatUtil.addChatMessage(new ChatComponentText(EnumChatFormatting.GREEN + "Added alias for " + EnumChatFormatting.GOLD + args[0] + EnumChatFormatting.GREEN + " : " + EnumChatFormatting.GOLD + args[1])); + } + + @Override + public boolean canCommandSenderUseCommand(ICommandSender sender) { + return true; + } + + @Override + public List addTabCompletionOptions(ICommandSender sender, String[] args, BlockPos pos) { + final List onlinePlayersByName = TabCompletionUtil.getOnlinePlayersByName(); + onlinePlayersByName.addAll(Arrays.asList("clearall", "list", "remove")); + return getListOfStringsMatchingLastWord(args, onlinePlayersByName); + } + +} From b72f3e99cf021d9c87fe68e9928230df78fd42b0 Mon Sep 17 00:00:00 2001 From: Alexdoru <57050655+alexdoru@users.noreply.github.com> Date: Sat, 2 Jul 2022 14:49:05 +0200 Subject: [PATCH 37/37] RELEASE 2.1 ------------------------------ --- build.gradle | 2 +- .../megawallsenhancementsmod/MegaWallsEnhancementsMod.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index 5e629485..a348c32d 100644 --- a/build.gradle +++ b/build.gradle @@ -12,7 +12,7 @@ buildscript { } apply plugin: 'net.minecraftforge.gradle.forge' -version = "2.0" +version = "2.1" group = "fr.alexdoru" archivesBaseName = "[1.8.9]MegaWallsEnhancements" diff --git a/src/main/java/fr/alexdoru/megawallsenhancementsmod/MegaWallsEnhancementsMod.java b/src/main/java/fr/alexdoru/megawallsenhancementsmod/MegaWallsEnhancementsMod.java index a21a7ad2..d5fb980b 100644 --- a/src/main/java/fr/alexdoru/megawallsenhancementsmod/MegaWallsEnhancementsMod.java +++ b/src/main/java/fr/alexdoru/megawallsenhancementsmod/MegaWallsEnhancementsMod.java @@ -24,7 +24,7 @@ public class MegaWallsEnhancementsMod { public static final String modid = "mwenhancements"; public static final String modName = "MegaWallsEnhancements"; - public static final String version = "2.0"; + public static final String version = "2.1"; public static final KeyBinding toggleDroppedItemLimit = new KeyBinding("Toggle dropped item limit", 0, "MegaWallsEnhancements"); public static final KeyBinding newNickKey = new KeyBinding("New Random Nick", 0, "MegaWallsEnhancements"); public static File configurationFile;