diff options
Diffstat (limited to 'src/main/java/com/thatgravyboat/skyblockhud/location/LocationHandler.java')
-rw-r--r-- | src/main/java/com/thatgravyboat/skyblockhud/location/LocationHandler.java | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/src/main/java/com/thatgravyboat/skyblockhud/location/LocationHandler.java b/src/main/java/com/thatgravyboat/skyblockhud/location/LocationHandler.java new file mode 100644 index 000000000..cfbfdc324 --- /dev/null +++ b/src/main/java/com/thatgravyboat/skyblockhud/location/LocationHandler.java @@ -0,0 +1,44 @@ +package com.thatgravyboat.skyblockhud.location; + +import com.thatgravyboat.skyblockhud.api.events.LocationChangeEvent; +import com.thatgravyboat.skyblockhud.api.events.SidebarLineUpdateEvent; +import java.util.Locale; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; + +public class LocationHandler { + + private static Locations currentLocation = Locations.NONE; + + @SubscribeEvent + public void onSidebarLineUpdate(SidebarLineUpdateEvent event) { + if (event.rawLine.contains("\u23E3")) { + String objectiveName = event.objective.getDisplayName().replaceAll("(?i)\\u00A7.", ""); + if (objectiveName.toLowerCase(Locale.ENGLISH).endsWith("guest")) { + LocationHandler.setCurrentLocation(Locations.GUESTISLAND); + } else { + LocationHandler.handleLocation(event.formattedLine); + } + } + } + + public static void setCurrentLocation(Locations location) { + currentLocation = location; + } + + public static Locations getCurrentLocation() { + return currentLocation; + } + + public static void handleLocation(String locationLine) { + String location = locationLine.replace(" ", "").toUpperCase(Locale.ENGLISH).trim(); + if (location.startsWith("THECATACOMBS")) { + MinecraftForge.EVENT_BUS.post(new LocationChangeEvent(currentLocation, Locations.CATACOMBS)); + currentLocation = Locations.CATACOMBS; + } else { + Locations locations = Locations.get(location.replaceAll("[^A-Za-z0-9]", "")); + MinecraftForge.EVENT_BUS.post(new LocationChangeEvent(currentLocation, locations)); + currentLocation = locations; + } + } +} |