From b0403a905f6abffb44d1bf3502ae4616f2cf68a9 Mon Sep 17 00:00:00 2001 From: Cow Date: Sun, 29 Mar 2020 18:38:54 +0200 Subject: Improved /moo stalk - Fixed NullPointer - Improved mode output to be more human-readable --- .../eu/olli/cowmoonication/util/HyStalking.java | 90 +++++++++++++++------- .../java/eu/olli/cowmoonication/util/Utils.java | 6 ++ 2 files changed, 70 insertions(+), 26 deletions(-) (limited to 'src/main/java/eu/olli/cowmoonication/util') diff --git a/src/main/java/eu/olli/cowmoonication/util/HyStalking.java b/src/main/java/eu/olli/cowmoonication/util/HyStalking.java index a46e1b5..a1f11ae 100644 --- a/src/main/java/eu/olli/cowmoonication/util/HyStalking.java +++ b/src/main/java/eu/olli/cowmoonication/util/HyStalking.java @@ -1,6 +1,6 @@ package eu.olli.cowmoonication.util; -import org.apache.commons.lang3.text.WordUtils; +import org.apache.commons.lang3.StringUtils; public class HyStalking { private boolean success; @@ -41,38 +41,76 @@ public class HyStalking { cleanGameType = GameType.valueOf(gameType).getCleanName(); } catch (IllegalArgumentException e) { // no matching game type found - cleanGameType = WordUtils.capitalizeFully(gameType.replace('_', ' ')); + cleanGameType = Utils.fancyCase(gameType); } return cleanGameType; } public String getMode() { - // list partially taken from https://api.hypixel.net/gameCounts?key=MOO - switch (mode) { + // modes partially taken from https://api.hypixel.net/gameCounts?key=MOO + if (mode == null) { + return null; + } + String gameType = getGameType(); + if (GameType.BEDWARS.cleanName.equals(gameType)) { + // BedWars related + String playerMode; + String specialMode; + int specialModeStart = StringUtils.ordinalIndexOf(mode, "_", 2); + if (specialModeStart > -1) { + playerMode = mode.substring(0, specialModeStart); + specialMode = mode.substring(specialModeStart + 1) + " "; + } else { + playerMode = mode; + specialMode = ""; + } + String playerModeClean; + switch (playerMode) { + case "EIGHT_ONE": + playerModeClean = "Solo"; + break; + case "EIGHT_TWO": + playerModeClean = "Doubles"; + break; + case "FOUR_THREE": + playerModeClean = "3v3v3v3"; + break; + case "FOUR_FOUR": + playerModeClean = "4v4v4v4"; + break; + case "TWO_FOUR": + playerModeClean = "4v4"; + break; + default: + playerModeClean = playerMode; + } + return Utils.fancyCase(specialMode + playerModeClean); + } else if (GameType.SKYBLOCK.cleanName.equals(gameType)) { // SkyBlock related - case "dynamic": - return "Private Island"; - case "hub": - return "Hub"; - case "combat_1": - return "Spider's Den"; - case "combat_2": - return "Blazing Fortress"; - case "combat_3": - return "The End"; - case "farming_1": - return "The Barn"; - case "farming_2": - return "Mushroom Desert"; - case "foraging_1": - return "The Park"; - case "mining_1": - return "Gold Mine"; - case "mining_2": - return "Deep Caverns"; - default: - return WordUtils.capitalizeFully(mode.replace('_', ' ')); + switch (mode) { + case "dynamic": + return "Private Island"; + case "hub": + return "Hub"; + case "combat_1": + return "Spider's Den"; + case "combat_2": + return "Blazing Fortress"; + case "combat_3": + return "The End"; + case "farming_1": + return "The Barn"; + case "farming_2": + return "Mushroom Desert"; + case "foraging_1": + return "The Park"; + case "mining_1": + return "Gold Mine"; + case "mining_2": + return "Deep Caverns"; + } } + return Utils.fancyCase(mode); } public String getMap() { diff --git a/src/main/java/eu/olli/cowmoonication/util/Utils.java b/src/main/java/eu/olli/cowmoonication/util/Utils.java index ec96bf1..dd68cc3 100644 --- a/src/main/java/eu/olli/cowmoonication/util/Utils.java +++ b/src/main/java/eu/olli/cowmoonication/util/Utils.java @@ -1,5 +1,7 @@ package eu.olli.cowmoonication.util; +import org.apache.commons.lang3.text.WordUtils; + import java.util.regex.Pattern; public final class Utils { @@ -16,4 +18,8 @@ public final class Utils { public static boolean isValidMcName(String username) { return VALID_USERNAME.matcher(username).matches(); } + + public static String fancyCase(String string) { + return WordUtils.capitalizeFully(string.replace('_', ' ')); + } } -- cgit