diff options
10 files changed, 81 insertions, 1 deletions
diff --git a/src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java b/src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java index b7a711ab..9c495382 100644 --- a/src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java +++ b/src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java @@ -20,6 +20,9 @@ public class SkyblockerConfig { public DungeonsConfig dungeons = new DungeonsConfig(); @SerialEntry + public ForagingConfig foraging = new ForagingConfig(); + + @SerialEntry public CrimsonIsleConfig crimsonIsle = new CrimsonIsleConfig(); @SerialEntry diff --git a/src/main/java/de/hysky/skyblocker/config/SkyblockerConfigManager.java b/src/main/java/de/hysky/skyblocker/config/SkyblockerConfigManager.java index b7728030..dd406b8a 100644 --- a/src/main/java/de/hysky/skyblocker/config/SkyblockerConfigManager.java +++ b/src/main/java/de/hysky/skyblocker/config/SkyblockerConfigManager.java @@ -75,6 +75,7 @@ public class SkyblockerConfigManager { .category(UIAndVisualsCategory.create(defaults, config)) .category(HelperCategory.create(defaults, config)) .category(DungeonsCategory.create(defaults, config)) + //.category(ForagingCategory.create(defaults, config)) .category(CrimsonIsleCategory.create(defaults, config)) .category(MiningCategory.create(defaults, config)) .category(FarmingCategory.create(defaults, config)) diff --git a/src/main/java/de/hysky/skyblocker/config/categories/ForagingCategory.java b/src/main/java/de/hysky/skyblocker/config/categories/ForagingCategory.java new file mode 100644 index 00000000..d5c844b7 --- /dev/null +++ b/src/main/java/de/hysky/skyblocker/config/categories/ForagingCategory.java @@ -0,0 +1,23 @@ +package de.hysky.skyblocker.config.categories; + +import de.hysky.skyblocker.config.SkyblockerConfig; +import dev.isxander.yacl3.api.ConfigCategory; +import net.minecraft.text.Text; + +public class ForagingCategory { + + public static ConfigCategory create(SkyblockerConfig defaults, SkyblockerConfig config) { + return ConfigCategory.createBuilder() + .name(Text.translatable("skyblocker.config.foraging")) + + //Modern Foraging island + + //Hunting - YACL doesn't like empty option groups + /*.group(OptionGroup.createBuilder() + .name(Text.translatable("skyblocker.config.foraging.hunting")) + + .build())*/ + + .build(); + } +} diff --git a/src/main/java/de/hysky/skyblocker/config/configs/ForagingConfig.java b/src/main/java/de/hysky/skyblocker/config/configs/ForagingConfig.java new file mode 100644 index 00000000..1a7c3598 --- /dev/null +++ b/src/main/java/de/hysky/skyblocker/config/configs/ForagingConfig.java @@ -0,0 +1,13 @@ +package de.hysky.skyblocker.config.configs; + +import dev.isxander.yacl3.config.v2.api.SerialEntry; + +public class ForagingConfig { + + @SerialEntry + public Hunting hunting = new Hunting(); + + public static class Hunting { + + } +} diff --git a/src/main/java/de/hysky/skyblocker/events/SkyblockEvents.java b/src/main/java/de/hysky/skyblocker/events/SkyblockEvents.java index 303e454f..c268103d 100644 --- a/src/main/java/de/hysky/skyblocker/events/SkyblockEvents.java +++ b/src/main/java/de/hysky/skyblocker/events/SkyblockEvents.java @@ -1,5 +1,6 @@ package de.hysky.skyblocker.events; +import de.hysky.skyblocker.utils.Location; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.fabricmc.fabric.api.event.Event; @@ -19,6 +20,12 @@ public final class SkyblockEvents { } }); + public static final Event<SkyblockEvents.SkyblockLocationChange> LOCATION_CHANGE = EventFactory.createArrayBacked(SkyblockEvents.SkyblockLocationChange.class, callbacks -> location -> { + for (SkyblockEvents.SkyblockLocationChange callback : callbacks) { + callback.onSkyblockLocationChange(location); + } + }); + @Environment(EnvType.CLIENT) @FunctionalInterface public interface SkyblockJoin { @@ -30,4 +37,10 @@ public final class SkyblockEvents { public interface SkyblockLeave { void onSkyblockLeave(); } + + @Environment(EnvType.CLIENT) + @FunctionalInterface + public interface SkyblockLocationChange { + void onSkyblockLocationChange(Location location); + } } diff --git a/src/main/java/de/hysky/skyblocker/skyblock/CompactDamage.java b/src/main/java/de/hysky/skyblocker/skyblock/CompactDamage.java index cff4997b..2837364b 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/CompactDamage.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/CompactDamage.java @@ -14,7 +14,7 @@ import java.util.regex.Pattern; public class CompactDamage { - private static final Pattern DAMAGE_PATTERN = Pattern.compile("(?:✧|✯)?[\\d,]+(?:✧|✯?)❤?"); + private static final Pattern DAMAGE_PATTERN = Pattern.compile("[✧✯]?[\\d,]+[✧✯]?❤?"); private CompactDamage() { } diff --git a/src/main/java/de/hysky/skyblocker/skyblock/foraging/ModernForagingIsland.java b/src/main/java/de/hysky/skyblocker/skyblock/foraging/ModernForagingIsland.java new file mode 100644 index 00000000..fd256681 --- /dev/null +++ b/src/main/java/de/hysky/skyblocker/skyblock/foraging/ModernForagingIsland.java @@ -0,0 +1,8 @@ +package de.hysky.skyblocker.skyblock.foraging; + +public class ModernForagingIsland { + + public static void init() { + + } +} diff --git a/src/main/java/de/hysky/skyblocker/utils/Location.java b/src/main/java/de/hysky/skyblocker/utils/Location.java index d5214afd..1f6c93a0 100644 --- a/src/main/java/de/hysky/skyblocker/utils/Location.java +++ b/src/main/java/de/hysky/skyblocker/utils/Location.java @@ -87,6 +87,10 @@ public enum Location { */ GLACITE_MINESHAFT("mineshaft"), /** + * Goodbye 1.8 hello 1.21 (and foraging 50 for all)! + */ + MODERN_FORAGING_ISLAND("placeholder"), + /** * Unknown Skyblock location */ UNKNOWN("unknown"); diff --git a/src/main/java/de/hysky/skyblocker/utils/Utils.java b/src/main/java/de/hysky/skyblocker/utils/Utils.java index 70dbdac6..62a3b897 100644 --- a/src/main/java/de/hysky/skyblocker/utils/Utils.java +++ b/src/main/java/de/hysky/skyblocker/utils/Utils.java @@ -74,6 +74,8 @@ public class Utils { private static long clientWorldJoinTime = 0; private static boolean sentLocRaw = false; private static boolean canSendLocRaw = false; + //This is required to prevent the location change event from being fired twice. + private static boolean locationChanged = true; private static String mayor = ""; @@ -118,6 +120,10 @@ public class Utils { return location == Location.KUUDRAS_HOLLOW; } + public static boolean isInModernForagingIsland() { + return location == Location.MODERN_FORAGING_ISLAND; + } + public static boolean isInjected() { return isInjected; } @@ -379,6 +385,7 @@ public class Utils { MessageScheduler.INSTANCE.sendMessageAfterCooldown("/locraw"); sentLocRaw = true; canSendLocRaw = false; + locationChanged = true; } } else { resetLocRawInfo(); @@ -409,6 +416,11 @@ public class Utils { if (locRaw.has("map")) { map = locRaw.get("map").getAsString(); } + + if (locationChanged) { + SkyblockEvents.LOCATION_CHANGE.invoker().onSkyblockLocationChange(location); + locationChanged = false; + } } /** diff --git a/src/main/resources/assets/skyblocker/lang/en_us.json b/src/main/resources/assets/skyblocker/lang/en_us.json index 4f00ff07..4304ff3d 100644 --- a/src/main/resources/assets/skyblocker/lang/en_us.json +++ b/src/main/resources/assets/skyblocker/lang/en_us.json @@ -185,6 +185,9 @@ "skyblocker.config.farming.garden.lockMouseTool": "Lock camera when holding a farming tool", "skyblocker.config.farming.garden.visitorHelper": "Visitor helper", + "skyblocker.config.foraging": "Foraging", + "skyblocker.config.foraging.hunting": "Hunting", + "skyblocker.config.general": "General", "skyblocker.config.general.chestValue.@Tooltip": "Calculate the value of this container.", |