diff options
| author | ThatGravyBoat <thatgravyboat@gmail.com> | 2021-07-16 02:54:21 -0230 |
|---|---|---|
| committer | ThatGravyBoat <thatgravyboat@gmail.com> | 2021-07-16 02:54:21 -0230 |
| commit | 6fe4425be08747e258e7a53a9e530aab466bd0c4 (patch) | |
| tree | 708022d0eb938feeae0ec7d1d7d8b3924330b37e | |
| parent | a411d15e4d65f4f2776a98edb743c68d294aa9d4 (diff) | |
| download | SkyHanni-6fe4425be08747e258e7a53a9e530aab466bd0c4.tar.gz SkyHanni-6fe4425be08747e258e7a53a9e530aab466bd0c4.tar.bz2 SkyHanni-6fe4425be08747e258e7a53a9e530aab466bd0c4.zip | |
Added waypoint send command and clickable waypoint chat message
Fixed bug where better together event wouldn't pull number and didnt have its own icon.
Fixed where mithril and gemstone wouldn't get parsed in crystal hollows.
5 files changed, 65 insertions, 9 deletions
diff --git a/src/main/java/com/thatgravyboat/skyblockhud/ComponentHandler.java b/src/main/java/com/thatgravyboat/skyblockhud/ComponentHandler.java index d5ffbf961..ad986c700 100644 --- a/src/main/java/com/thatgravyboat/skyblockhud/ComponentHandler.java +++ b/src/main/java/com/thatgravyboat/skyblockhud/ComponentHandler.java @@ -43,7 +43,7 @@ public class ComponentHandler { if (formattedTabListPlayer.toLowerCase().contains("secrets found:")) DungeonHandler.parseTotalSecrets(formattedTabListPlayer); if (formattedTabListPlayer.toLowerCase().contains("deaths:")) DungeonHandler.parseDeaths(formattedTabListPlayer); if (formattedTabListPlayer.toLowerCase().contains("crypts:")) DungeonHandler.parseCrypts(formattedTabListPlayer); - } else if (LocationHandler.getCurrentLocation().getCategory().equals(LocationCategory.DWARVENMINES)) { + } else if (LocationHandler.getCurrentLocation().getCategory().isMiningCategory()) { if (formattedTabListPlayer.toLowerCase().contains("mithril powder:")) { MinesHandler.parseMithril(formattedTabListPlayer); } diff --git a/src/main/java/com/thatgravyboat/skyblockhud/config/SBHConfig.java b/src/main/java/com/thatgravyboat/skyblockhud/config/SBHConfig.java index 04d4a8c22..c04bcccb4 100644 --- a/src/main/java/com/thatgravyboat/skyblockhud/config/SBHConfig.java +++ b/src/main/java/com/thatgravyboat/skyblockhud/config/SBHConfig.java @@ -334,6 +334,12 @@ public class SBHConfig extends Config { @ConfigOption(name = "Auto Waypoint", desc = "Turns on auto waypoints for the main areas of crystal hollows.") @ConfigEditorBoolean public boolean autoWaypoint = true; + + @Expose + @ConfigOption(name = "Chat Waypoint Mode", desc = "Change the mode of the chat waypoint In Chat Bar will allow you to edit it before adding it to your waypoints.") + @ConfigEditorDropdown(values = { "Instant Add", "In chat bar" }) + public int chatWaypointMode = 1; + } public static class Trackers { diff --git a/src/main/java/com/thatgravyboat/skyblockhud/handlers/CrystalWaypoints.java b/src/main/java/com/thatgravyboat/skyblockhud/handlers/CrystalWaypoints.java index 54986e06e..690f7b33e 100644 --- a/src/main/java/com/thatgravyboat/skyblockhud/handlers/CrystalWaypoints.java +++ b/src/main/java/com/thatgravyboat/skyblockhud/handlers/CrystalWaypoints.java @@ -15,18 +15,26 @@ import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Set; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.command.ICommandSender; +import net.minecraft.event.ClickEvent; +import net.minecraft.event.HoverEvent; import net.minecraft.util.BlockPos; import net.minecraft.util.ChatComponentText; +import net.minecraft.util.ChatStyle; import net.minecraft.util.EnumChatFormatting; +import net.minecraftforge.client.event.ClientChatReceivedEvent; import net.minecraftforge.client.event.RenderWorldLastEvent; import net.minecraftforge.event.entity.EntityJoinWorldEvent; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; public class CrystalWaypoints { + public static final Pattern LOCATION_MESSAGE_REGEX = Pattern.compile("\\{(.*) : \\((-?\\d+)/(-?\\d+)/(-?\\d+)\\)}"); + public static final HashMap<String, BlockPos> waypoints = new HashMap<>(); private static final Set<Locations> IMPORTANT_WAYPOINTS = Sets.newHashSet(Locations.GOBLINQUEENSDEN, Locations.LOSTPRECURSORCITY, Locations.JUNGLETEMPLE, Locations.MINESOFDIVAN, Locations.KHAZADDM, Locations.FAIRYGROTTO); @@ -61,6 +69,34 @@ public class CrystalWaypoints { } } + @SubscribeEvent + public void onChatMessage(ClientChatReceivedEvent event){ + if (event.type != 2 && LocationHandler.getCurrentLocation().getCategory().equals(LocationCategory.CRYSTALHOLLOWS)) { + Matcher matcher = LOCATION_MESSAGE_REGEX.matcher(event.message.getUnformattedText()); + if (!matcher.find()) return; + ChatStyle style = new ChatStyle(); + style.setParentStyle(event.message.getChatStyle()); + ClickEvent.Action action = SkyblockHud.config.mining.chatWaypointMode == 0 ? ClickEvent.Action.RUN_COMMAND : ClickEvent.Action.SUGGEST_COMMAND; + style.setChatClickEvent(new ClickEvent( + action, + "/sbhpoints addat " + matcher.group(2) + " " + matcher.group(3) + " " + matcher.group(4) + " " + matcher.group(1) + )); + style.setChatHoverEvent(new HoverEvent( + HoverEvent.Action.SHOW_TEXT, + new ChatComponentText("Click to add waypoint!").setChatStyle(new ChatStyle().setBold(true)) + )); + event.message.setChatStyle(style); + } + } + + private static String copyWayPoint(String name){ + BlockPos pos = waypoints.get(name); + if (pos == null) { + return null; + } + return "{" + name + " : (" + pos.getX() + "/" + pos.getY() + "/" + pos.getZ() + ")}"; + } + public static class WaypointCommand extends SimpleCommand { public WaypointCommand() { @@ -84,6 +120,7 @@ public class CrystalWaypoints { } } break; + case "remove": if (LocationHandler.getCurrentLocation().getCategory().equals(LocationCategory.CRYSTALHOLLOWS)) { if (CrystalWaypoints.waypoints.containsKey(name)) { @@ -93,6 +130,7 @@ public class CrystalWaypoints { } } break; + case "move": if (LocationHandler.getCurrentLocation().getCategory().equals(LocationCategory.CRYSTALHOLLOWS)) { if (CrystalWaypoints.waypoints.containsKey(name)) { @@ -102,9 +140,11 @@ public class CrystalWaypoints { } } break; + case "clear": CrystalWaypoints.waypoints.clear(); break; + case "addat": if (LocationHandler.getCurrentLocation().getCategory().equals(LocationCategory.CRYSTALHOLLOWS)) { name = String.join(" ", Arrays.copyOfRange(args, 4, args.length)); @@ -121,26 +161,36 @@ public class CrystalWaypoints { } } break; + case "copy": - BlockPos pos = waypoints.get(name); - if (pos == null) { + String copyText = copyWayPoint(name); + if (copyText == null) { sbhMessage(sender, "No waypoint with that name!"); break; } - StringSelection clipboard = new StringSelection(name + " : (" + pos.getX() + "/" + pos.getY() + "/" + pos.getZ() + ")"); + StringSelection clipboard = new StringSelection(copyText); Toolkit.getDefaultToolkit().getSystemClipboard().setContents(clipboard, clipboard); break; + + case "send": + String sendText = copyWayPoint(name); + if (sendText == null) { + sbhMessage(sender, "No waypoint with that name!"); + break; + } + Minecraft.getMinecraft().thePlayer.sendChatMessage(sendText); + break; } } }, new TabCompleteRunnable() { @Override public List<String> tabComplete(ICommandSender sender, String[] args, BlockPos pos) { - if (args.length == 2 && Utils.equalsIgnoreCaseAnyOf(args[0], "remove", "copy", "move")) { + if (args.length == 2 && Utils.equalsIgnoreCaseAnyOf(args[0], "remove", "copy", "move", "send")) { return getListOfStringsMatchingLastWord(args, waypoints.keySet()); } if (args.length == 1) { - return getListOfStringsMatchingLastWord(args, Lists.newArrayList("add", "clear", "remove", "copy", "addat", "move")); + return getListOfStringsMatchingLastWord(args, Lists.newArrayList("add", "clear", "remove", "copy", "addat", "move", "send")); } if (args.length > 1 && args[0].equalsIgnoreCase("addat")) { return func_175771_a(args, 1, pos); diff --git a/src/main/java/com/thatgravyboat/skyblockhud/location/MinesHandler.java b/src/main/java/com/thatgravyboat/skyblockhud/location/MinesHandler.java index 35791e8ef..e4994d188 100644 --- a/src/main/java/com/thatgravyboat/skyblockhud/location/MinesHandler.java +++ b/src/main/java/com/thatgravyboat/skyblockhud/location/MinesHandler.java @@ -16,8 +16,8 @@ public class MinesHandler { NONE(0, "Unknown", false, false), TICKET(107, "Raffle", true, true), GOBLIN(99, "Goblin Raid", true, true), - WIND(107, "Gone With The Wind", false, false), - TOGETHER(107, "Better Together", false, true); + WIND(0, "Gone With The Wind", false, false), + TOGETHER(171, "Better Together", false, true); public int x; public String displayName; @@ -108,7 +108,7 @@ public class MinesHandler { if (event.formattedLine.toLowerCase(Locale.ENGLISH).contains("nearby players")) { MinesHandler.currentEvent = Event.TOGETHER; try { - MinesHandler.eventProgress = Integer.parseInt(event.formattedLine.toLowerCase().replace("nearby players", "")); + MinesHandler.eventProgress = Integer.parseInt(event.formattedLine.toLowerCase().replace("nearby players:", "")); } catch (Exception ignored) {} } diff --git a/src/main/resources/assets/skyblockhud/stats.png b/src/main/resources/assets/skyblockhud/stats.png Binary files differindex e1f1a2bbd..33513c855 100644 --- a/src/main/resources/assets/skyblockhud/stats.png +++ b/src/main/resources/assets/skyblockhud/stats.png |
