diff options
Diffstat (limited to 'src/main')
4 files changed, 871 insertions, 899 deletions
diff --git a/src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java b/src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java index b8606b87..5cc0f1b8 100644 --- a/src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java +++ b/src/main/java/de/hysky/skyblocker/config/SkyblockerConfig.java @@ -17,1008 +17,997 @@ import java.util.ArrayList; import java.util.List; public class SkyblockerConfig { - @SerialEntry - public int version = 1; - - @SerialEntry - public General general = new General(); - - @SerialEntry - public Locations locations = new Locations(); - - @SerialEntry - public Slayer slayer = new Slayer(); - - @SerialEntry - public QuickNav quickNav = new QuickNav(); - - @SerialEntry - public Messages messages = new Messages(); - - @SerialEntry - public RichPresence richPresence = new RichPresence(); - - public static class QuickNav { - @SerialEntry - public boolean enableQuickNav = true; - - @SerialEntry - public QuickNavItem button1 = new QuickNavItem(true, new ItemData("diamond_sword"), "Your Skills", "/skills"); - - @SerialEntry - public QuickNavItem button2 = new QuickNavItem(true, new ItemData("painting"), "Collections", "/collection"); - - /* REGEX Explanation - * "Pets" : simple match on letters - * "(?: \\(\\d+\\/\\d+\\))?" : optional match on the non-capturing group for the page in the format " ($number/$number)" - */ - @SerialEntry - public QuickNavItem button3 = new QuickNavItem(true, new ItemData("bone"), "Pets(:? \\(\\d+\\/\\d+\\))?", "/pets"); - - /* REGEX Explanation - * "Wardrobe" : simple match on letters - * " \\([12]\\/2\\)" : match on the page either " (1/2)" or " (2/2)" - */ - @SerialEntry - public QuickNavItem button4 = new QuickNavItem(true, - new ItemData("leather_chestplate", 1, "tag:{display:{color:8991416}}"), "Wardrobe \\([12]/2\\)", - "/wardrobe"); - - @SerialEntry - public QuickNavItem button5 = new QuickNavItem(true, new ItemData("player_head", 1, - "tag:{SkullOwner:{Id:[I;-2081424676,-57521078,-2073572414,158072763],Properties:{textures:[{Value:\"ewogICJ0aW1lc3RhbXAiIDogMTU5MTMxMDU4NTYwOSwKICAicHJvZmlsZUlkIiA6ICI0MWQzYWJjMmQ3NDk0MDBjOTA5MGQ1NDM0ZDAzODMxYiIsCiAgInByb2ZpbGVOYW1lIiA6ICJNZWdha2xvb24iLAogICJzaWduYXR1cmVSZXF1aXJlZCIgOiB0cnVlLAogICJ0ZXh0dXJlcyIgOiB7CiAgICAiU0tJTiIgOiB7CiAgICAgICJ1cmwiIDogImh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvODBhMDc3ZTI0OGQxNDI3NzJlYTgwMDg2NGY4YzU3OGI5ZDM2ODg1YjI5ZGFmODM2YjY0YTcwNjg4MmI2ZWMxMCIKICAgIH0KICB9Cn0=\"}]}}}"), - "Sack of Sacks", "/sacks"); - - /* REGEX Explanation - * "(?:Rift )?" : optional match on the non-capturing group "Rift " - * "Storage" : simple match on letters - * "(?: \\([12]\\/2\\))?" : optional match on the non-capturing group " (1/2)" or " (2/2)" - */ - @SerialEntry - public QuickNavItem button6 = new QuickNavItem(true, new ItemData("ender_chest"), - "(?:Rift )?Storage(?: \\(1/2\\))?", "/storage"); - - @SerialEntry - public QuickNavItem button7 = new QuickNavItem(true, new ItemData("player_head", 1, - "tag:{SkullOwner:{Id:[I;-300151517,-631415889,-1193921967,-1821784279],Properties:{textures:[{Value:\"e3RleHR1cmVzOntTS0lOOnt1cmw6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZDdjYzY2ODc0MjNkMDU3MGQ1NTZhYzUzZTA2NzZjYjU2M2JiZGQ5NzE3Y2Q4MjY5YmRlYmVkNmY2ZDRlN2JmOCJ9fX0=\"}]}}}"), - "none", "/hub"); - - @SerialEntry - public QuickNavItem button8 = new QuickNavItem(true, new ItemData("player_head", 1, - "tag:{SkullOwner:{Id:[I;1605800870,415127827,-1236127084,15358548],Properties:{textures:[{Value:\"e3RleHR1cmVzOntTS0lOOnt1cmw6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNzg5MWQ1YjI3M2ZmMGJjNTBjOTYwYjJjZDg2ZWVmMWM0MGExYjk0MDMyYWU3MWU3NTQ3NWE1NjhhODI1NzQyMSJ9fX0=\"}]}}}"), - "none", "/warp dungeon_hub"); + @SerialEntry + public int version = 1; + + @SerialEntry + public General general = new General(); + + @SerialEntry + public Locations locations = new Locations(); + + @SerialEntry + public Slayer slayer = new Slayer(); + + @SerialEntry + public QuickNav quickNav = new QuickNav(); + + @SerialEntry + public Messages messages = new Messages(); + + @SerialEntry + public RichPresence richPresence = new RichPresence(); + + public static class QuickNav { + @SerialEntry + public boolean enableQuickNav = true; + + @SerialEntry + public QuickNavItem button1 = new QuickNavItem(true, new ItemData("diamond_sword"), "Your Skills", "/skills"); + + @SerialEntry + public QuickNavItem button2 = new QuickNavItem(true, new ItemData("painting"), "Collections", "/collection"); + + /* REGEX Explanation + * "Pets" : simple match on letters + * "(?: \\(\\d+\\/\\d+\\))?" : optional match on the non-capturing group for the page in the format " ($number/$number)" + */ + @SerialEntry + public QuickNavItem button3 = new QuickNavItem(true, new ItemData("bone"), "Pets(:? \\(\\d+\\/\\d+\\))?", "/pets"); + + /* REGEX Explanation + * "Wardrobe" : simple match on letters + * " \\([12]\\/2\\)" : match on the page either " (1/2)" or " (2/2)" + */ + @SerialEntry + public QuickNavItem button4 = new QuickNavItem(true, + new ItemData("leather_chestplate", 1, "tag:{display:{color:8991416}}"), "Wardrobe \\([12]/2\\)", + "/wardrobe"); + + @SerialEntry + public QuickNavItem button5 = new QuickNavItem(true, new ItemData("player_head", 1, + "tag:{SkullOwner:{Id:[I;-2081424676,-57521078,-2073572414,158072763],Properties:{textures:[{Value:\"ewogICJ0aW1lc3RhbXAiIDogMTU5MTMxMDU4NTYwOSwKICAicHJvZmlsZUlkIiA6ICI0MWQzYWJjMmQ3NDk0MDBjOTA5MGQ1NDM0ZDAzODMxYiIsCiAgInByb2ZpbGVOYW1lIiA6ICJNZWdha2xvb24iLAogICJzaWduYXR1cmVSZXF1aXJlZCIgOiB0cnVlLAogICJ0ZXh0dXJlcyIgOiB7CiAgICAiU0tJTiIgOiB7CiAgICAgICJ1cmwiIDogImh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvODBhMDc3ZTI0OGQxNDI3NzJlYTgwMDg2NGY4YzU3OGI5ZDM2ODg1YjI5ZGFmODM2YjY0YTcwNjg4MmI2ZWMxMCIKICAgIH0KICB9Cn0=\"}]}}}"), + "Sack of Sacks", "/sacks"); + + /* REGEX Explanation + * "(?:Rift )?" : optional match on the non-capturing group "Rift " + * "Storage" : simple match on letters + * "(?: \\([12]\\/2\\))?" : optional match on the non-capturing group " (1/2)" or " (2/2)" + */ + @SerialEntry + public QuickNavItem button6 = new QuickNavItem(true, new ItemData("ender_chest"), + "(?:Rift )?Storage(?: \\(1/2\\))?", "/storage"); + + @SerialEntry + public QuickNavItem button7 = new QuickNavItem(true, new ItemData("player_head", 1, + "tag:{SkullOwner:{Id:[I;-300151517,-631415889,-1193921967,-1821784279],Properties:{textures:[{Value:\"e3RleHR1cmVzOntTS0lOOnt1cmw6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZDdjYzY2ODc0MjNkMDU3MGQ1NTZhYzUzZTA2NzZjYjU2M2JiZGQ5NzE3Y2Q4MjY5YmRlYmVkNmY2ZDRlN2JmOCJ9fX0=\"}]}}}"), + "none", "/hub"); - @SerialEntry - public QuickNavItem button9 = new QuickNavItem(true, new ItemData("player_head", 1, - "tag:{SkullOwner:{Id:[I;-562285948,532499670,-1705302742,775653035],Properties:{textures:[{Value:\"eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjVkZjU1NTkyNjQzMGQ1ZDc1YWRlZDIxZGQ5NjE5Yjc2YzViN2NhMmM3ZjU0MDE0NDA1MjNkNTNhOGJjZmFhYiJ9fX0=\"}]}}}"), - "Visit prtl", "/visit prtl"); - - @SerialEntry - public QuickNavItem button10 = new QuickNavItem(true, new ItemData("enchanting_table"), "Enchant Item", - "/etable"); + @SerialEntry + public QuickNavItem button8 = new QuickNavItem(true, new ItemData("player_head", 1, + "tag:{SkullOwner:{Id:[I;1605800870,415127827,-1236127084,15358548],Properties:{textures:[{Value:\"e3RleHR1cmVzOntTS0lOOnt1cmw6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNzg5MWQ1YjI3M2ZmMGJjNTBjOTYwYjJjZDg2ZWVmMWM0MGExYjk0MDMyYWU3MWU3NTQ3NWE1NjhhODI1NzQyMSJ9fX0=\"}]}}}"), + "none", "/warp dungeon_hub"); - @SerialEntry - public QuickNavItem button11 = new QuickNavItem(true, new ItemData("anvil"), "Anvil", "/anvil"); + @SerialEntry + public QuickNavItem button9 = new QuickNavItem(true, new ItemData("player_head", 1, + "tag:{SkullOwner:{Id:[I;-562285948,532499670,-1705302742,775653035],Properties:{textures:[{Value:\"eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjVkZjU1NTkyNjQzMGQ1ZDc1YWRlZDIxZGQ5NjE5Yjc2YzViN2NhMmM3ZjU0MDE0NDA1MjNkNTNhOGJjZmFhYiJ9fX0=\"}]}}}"), + "Visit prtl", "/visit prtl"); - @SerialEntry - public QuickNavItem button12 = new QuickNavItem(true, new ItemData("crafting_table"), "Craft Item", "/craft"); - } + @SerialEntry + public QuickNavItem button10 = new QuickNavItem(true, new ItemData("enchanting_table"), "Enchant Item", + "/etable"); - public static class QuickNavItem { - public QuickNavItem(Boolean render, ItemData itemData, String uiTitle, String clickEvent) { - this.render = render; - this.item = itemData; - this.clickEvent = clickEvent; - this.uiTitle = uiTitle; - } + @SerialEntry + public QuickNavItem button11 = new QuickNavItem(true, new ItemData("anvil"), "Anvil", "/anvil"); - @SerialEntry - public Boolean render; + @SerialEntry + public QuickNavItem button12 = new QuickNavItem(true, new ItemData("crafting_table"), "Craft Item", "/craft"); + } - @SerialEntry - public ItemData item; + public static class QuickNavItem { + public QuickNavItem(Boolean render, ItemData itemData, String uiTitle, String clickEvent) { + this.render = render; + this.item = itemData; + this.clickEvent = clickEvent; + this.uiTitle = uiTitle; + } - @SerialEntry - public String uiTitle; + @SerialEntry + public Boolean render; - @SerialEntry - public String clickEvent; - } + @SerialEntry + public ItemData item; - public static class ItemData { - public ItemData(String itemName, int count, String nbt) { - this.itemName = itemName; - this.count = count; - this.nbt = nbt; - } + @SerialEntry + public String uiTitle; - public ItemData(String itemName) { - this.itemName = itemName; - this.count = 1; - this.nbt = ""; - } + @SerialEntry + public String clickEvent; + } - @SerialEntry - public String itemName; + public static class ItemData { + public ItemData(String itemName, int count, String nbt) { + this.itemName = itemName; + this.count = count; + this.nbt = nbt; + } - @SerialEntry - public int count; + public ItemData(String itemName) { + this.itemName = itemName; + this.count = 1; + this.nbt = ""; + } - @SerialEntry - public String nbt; - } + @SerialEntry + public String itemName; - public static class General { - @SerialEntry - public boolean enableTips = true; + @SerialEntry + public int count; - @SerialEntry - public boolean acceptReparty = true; + @SerialEntry + public String nbt; + } - @SerialEntry - public boolean betterPartyFinder = true; + public static class General { + @SerialEntry + public boolean enableTips = true; - @SerialEntry - public boolean backpackPreviewWithoutShift = false; + @SerialEntry + public boolean acceptReparty = true; - @SerialEntry - public boolean compactorDeletorPreview = true; + @SerialEntry + public boolean betterPartyFinder = true; - @SerialEntry - public boolean hideEmptyTooltips = true; + @SerialEntry + public boolean backpackPreviewWithoutShift = false; - @SerialEntry - public boolean hideStatusEffectOverlay = false; - - @SerialEntry - public boolean dontStripSkinAlphaValues = true; + @SerialEntry + public boolean compactorDeletorPreview = true; - @SerialEntry - public TabHudConf tabHud = new TabHudConf(); + @SerialEntry + public boolean hideEmptyTooltips = true; - @SerialEntry - public Bars bars = new Bars(); + @SerialEntry + public boolean hideStatusEffectOverlay = false; - @SerialEntry - public Experiments experiments = new Experiments(); + @SerialEntry + public boolean dontStripSkinAlphaValues = true; - @SerialEntry - public Fishing fishing = new Fishing(); + @SerialEntry + public TabHudConf tabHud = new TabHudConf(); - @SerialEntry - public FairySouls fairySouls = new FairySouls(); + @SerialEntry + public Bars bars = new Bars(); - @SerialEntry - public MythologicalRitual mythologicalRitual = new MythologicalRitual(); + @SerialEntry + public Experiments experiments = new Experiments(); - @SerialEntry - public ItemCooldown itemCooldown = new ItemCooldown(); + @SerialEntry + public Fishing fishing = new Fishing(); - @SerialEntry - public Shortcuts shortcuts = new Shortcuts(); + @SerialEntry + public FairySouls fairySouls = new FairySouls(); - @SerialEntry - public Waypoints waypoints = new Waypoints(); + @SerialEntry + public MythologicalRitual mythologicalRitual = new MythologicalRitual(); - @SerialEntry - public QuiverWarning quiverWarning = new QuiverWarning(); + @SerialEntry + public ItemCooldown itemCooldown = new ItemCooldown(); - @SerialEntry - public ItemList itemList = new ItemList(); + @SerialEntry + public Shortcuts shortcuts = new Shortcuts(); - @SerialEntry - public ItemTooltip itemTooltip = new ItemTooltip(); + @SerialEntry + public Waypoints waypoints = new Waypoints(); - @SerialEntry - public ItemInfoDisplay itemInfoDisplay = new ItemInfoDisplay(); + @SerialEntry + public QuiverWarning quiverWarning = new QuiverWarning(); - @SerialEntry - public WikiLookup wikiLookup = new WikiLookup(); + @SerialEntry + public ItemList itemList = new ItemList(); - @SerialEntry - public ChestValue chestValue = new ChestValue(); + @SerialEntry + public ItemTooltip itemTooltip = new ItemTooltip(); - @SerialEntry - public SpecialEffects specialEffects = new SpecialEffects(); + @SerialEntry + public ItemInfoDisplay itemInfoDisplay = new ItemInfoDisplay(); - @SerialEntry - public Hitbox hitbox = new Hitbox(); + @SerialEntry + public WikiLookup wikiLookup = new WikiLookup(); - @SerialEntry - public TitleContainer titleContainer = new TitleContainer(); + @SerialEntry + public ChestValue chestValue = new ChestValue(); - @SerialEntry - public TeleportOverlay teleportOverlay = new TeleportOverlay(); + @SerialEntry + public SpecialEffects specialEffects = new SpecialEffects(); - @SerialEntry - public FlameOverlay flameOverlay = new FlameOverlay(); + @SerialEntry + public Hitbox hitbox = new Hitbox(); - @SerialEntry - public List<Integer> lockedSlots = new ArrayList<>(); + @SerialEntry + public TitleContainer titleContainer = new TitleContainer(); - @SerialEntry - public ObjectOpenHashSet<String> protectedItems = new ObjectOpenHashSet<>(); + @SerialEntry + public TeleportOverlay teleportOverlay = new TeleportOverlay(); - @SerialEntry - public Object2ObjectOpenHashMap<String, Text> customItemNames = new Object2ObjectOpenHashMap<>(); + @SerialEntry + public FlameOverlay flameOverlay = new FlameOverlay(); - @SerialEntry - public Object2IntOpenHashMap<String> customDyeColors = new Object2IntOpenHashMap<>(); + @SerialEntry + public List<Integer> lockedSlots = new ArrayList<>(); - @SerialEntry - public Object2ObjectOpenHashMap<String, CustomArmorTrims.ArmorTrimId> customArmorTrims = new Object2ObjectOpenHashMap<>(); - } + @SerialEntry + public ObjectOpenHashSet<String> protectedItems = new ObjectOpenHashSet<>(); - public static class TabHudConf { - @SerialEntry - public boolean tabHudEnabled = true; + @SerialEntry + public Object2ObjectOpenHashMap<String, Text> customItemNames = new Object2ObjectOpenHashMap<>(); - @SerialEntry - public int tabHudScale = 100; + @SerialEntry + public Object2IntOpenHashMap<String> customDyeColors = new Object2IntOpenHashMap<>(); - @SerialEntry - public boolean plainPlayerNames = false; + @SerialEntry + public Object2ObjectOpenHashMap<String, CustomArmorTrims.ArmorTrimId> customArmorTrims = new Object2ObjectOpenHashMap<>(); + } - @SerialEntry - public NameSorting nameSorting = NameSorting.DEFAULT; - } + public static class TabHudConf { + @SerialEntry + public boolean tabHudEnabled = true; - public enum NameSorting { - DEFAULT, ALPHABETICAL; + @SerialEntry + public int tabHudScale = 100; - @Override - public String toString() { - return switch (this) { - case DEFAULT -> "Default"; - case ALPHABETICAL -> "Alphabetical"; - }; - } - } + @SerialEntry + public boolean plainPlayerNames = false; - public static class Bars { - @SerialEntry - public boolean enableBars = true; + @SerialEntry + public NameSorting nameSorting = NameSorting.DEFAULT; + } - @SerialEntry - public BarPositions barPositions = new BarPositions(); - } + public enum NameSorting { + DEFAULT, ALPHABETICAL; - public static class BarPositions { - @SerialEntry - public BarPosition healthBarPosition = BarPosition.LAYER1; + @Override + public String toString() { + return switch (this) { + case DEFAULT -> "Default"; + case ALPHABETICAL -> "Alphabetical"; + }; + } + } - @SerialEntry - public BarPosition manaBarPosition = BarPosition.LAYER1; + public static class Bars { + @SerialEntry + public boolean enableBars = true; - @SerialEntry - public BarPosition defenceBarPosition = BarPosition.LAYER1; + @SerialEntry + public BarPositions barPositions = new BarPositions(); + } - @SerialEntry - public BarPosition experienceBarPosition = BarPosition.LAYER1; + public static class BarPositions { + @SerialEntry + public BarPosition healthBarPosition = BarPosition.LAYER1; - } + @SerialEntry + public BarPosition manaBarPosition = BarPosition.LAYER1; - public enum BarPosition { - LAYER1, LAYER2, RIGHT, NONE; + @SerialEntry + public BarPosition defenceBarPosition = BarPosition.LAYER1; - @Override - public String toString() { - return I18n.translate("text.autoconfig.skyblocker.option.general.bars.barpositions." + name()); - } + @SerialEntry + public BarPosition experienceBarPosition = BarPosition.LAYER1; - public int toInt() { - return switch (this) { - case LAYER1 -> 0; - case LAYER2 -> 1; - case RIGHT -> 2; - case NONE -> -1; - }; - } - } + } - public static class Experiments { - @SerialEntry - public boolean enableChronomatronSolver = true; + public enum BarPosition { + LAYER1, LAYER2, RIGHT, NONE; - @SerialEntry - public boolean enableSuperpairsSolver = true; + @Override + public String toString() { + return I18n.translate("text.autoconfig.skyblocker.option.general.bars.barpositions." + name()); + } - @SerialEntry - public boolean enableUltrasequencerSolver = true; - } + public int toInt() { + return switch (this) { + case LAYER1 -> 0; + case LAYER2 -> 1; + case RIGHT -> 2; + case NONE -> -1; + }; + } + } - public static class Fishing { - @SerialEntry - public boolean enableFishingHelper = true; - } + public static class Experiments { + @SerialEntry + public boolean enableChronomatronSolver = true; - public static class FairySouls { - @SerialEntry - public boolean enableFairySoulsHelper = false; + @SerialEntry + public boolean enableSuperpairsSolver = true; - @SerialEntry - public boolean highlightFoundSouls = true; + @SerialEntry + public boolean enableUltrasequencerSolver = true; + } - @SerialEntry - public boolean highlightOnlyNearbySouls = false; - } + public static class Fishing { + @SerialEntry + public boolean enableFishingHelper = true; + } - public static class MythologicalRitual { - @SerialEntry - public boolean enableMythologicalRitualHelper = true; - } + public static class FairySouls { + @SerialEntry + public boolean enableFairySoulsHelper = false; - public static class ItemCooldown { - @SerialEntry - public boolean enableItemCooldowns = true; - } + @SerialEntry + public boolean highlightFoundSouls = true; - public static class Shortcuts { - @SerialEntry - public boolean enableShortcuts = true; - - @SerialEntry - public boolean enableCommandShortcuts = true; - - @SerialEntry - public boolean enableCommandArgShortcuts = true; - } - - public static class Waypoints { - @SerialEntry - public boolean enableWaypoints = true; - - @SerialEntry - public Waypoint.Type waypointType = Waypoint.Type.WAYPOINT; - } + @SerialEntry + public boolean highlightOnlyNearbySouls = false; + } - public static class QuiverWarning { - @SerialEntry - public boolean enableQuiverWarning = true; + public static class MythologicalRitual { + @SerialEntry + public boolean enableMythologicalRitualHelper = true; + } - @SerialEntry - public boolean enableQuiverWarningInDungeons = true; + public static class ItemCooldown { + @SerialEntry + public boolean enableItemCooldowns = true; + } - @SerialEntry - public boolean enableQuiverWarningAfterDungeon = true; - } + public static class Shortcuts { + @SerialEntry + public boolean enableShortcuts = true; + + @SerialEntry + public boolean enableCommandShortcuts = true; + + @SerialEntry + public boolean enableCommandArgShortcuts = true; + } + + public static class Waypoints { + @SerialEntry + public boolean enableWaypoints = true; + + @SerialEntry + public Waypoint.Type waypointType = Waypoint.Type.WAYPOINT; + } - public static class Hitbox { - @SerialEntry - public boolean oldFarmlandHitbox = false; + public static class QuiverWarning { + @SerialEntry + public boolean enableQuiverWarning = true; - @SerialEntry - public boolean oldLeverHitbox = false; - } - - public static class TitleContainer { - @SerialEntry - public float titleContainerScale = 100; - - @SerialEntry - public int x = 540; - - @SerialEntry - public int y = 10; - - @SerialEntry - public Direction direction = Direction.HORIZONTAL; - - @SerialEntry - public Alignment alignment = Alignment.MIDDLE; - } + @SerialEntry + public boolean enableQuiverWarningInDungeons = true; - public static class TeleportOverlay { - @SerialEntry - public boolean enableTeleportOverlays = true; + @SerialEntry + public boolean enableQuiverWarningAfterDungeon = true; + } - @SerialEntry - public boolean enableWeirdTransmission = true; + public static class Hitbox { + @SerialEntry + public boolean oldFarmlandHitbox = false; - @SerialEntry - public boolean enableInstantTransmission = true; + @SerialEntry + public boolean oldLeverHitbox = false; + } + + public static class TitleContainer { + @SerialEntry + public float titleContainerScale = 100; + + @SerialEntry + public int x = 540; + + @SerialEntry + public int y = 10; + + @SerialEntry + public Direction direction = Direction.HORIZONTAL; + + @SerialEntry + public Alignment alignment = Alignment.MIDDLE; + } - @SerialEntry - public boolean enableEtherTransmission = true; + public static class TeleportOverlay { + @SerialEntry + public boolean enableTeleportOverlays = true; - @SerialEntry - public boolean enableSinrecallTransmission = true; + @SerialEntry + public boolean enableWeirdTransmission = true; - @SerialEntry - public boolean enableWitherImpact = true; - } + @SerialEntry + public boolean enableInstantTransmission = true; - public static class FlameOverlay { - @SerialEntry - public float flameHeight = 0f; + @SerialEntry + public boolean enableEtherTransmission = true; - @SerialEntry - public float flameOpacity = 0f; - } + @SerialEntry + public boolean enableSinrecallTransmission = true; - public enum Direction { - HORIZONTAL, VERTICAL; + @SerialEntry + public boolean enableWitherImpact = true; + } - @Override - public String toString() { - return switch (this) { - case HORIZONTAL -> "Horizontal"; - case VERTICAL -> "Vertical"; - }; - } - } + public static class FlameOverlay { + @SerialEntry + public float flameHeight = 0f; - public enum Alignment { - LEFT, RIGHT, MIDDLE; + @SerialEntry + public float flameOpacity = 0f; + } - @Override - public String toString() { - return switch (this) { - case LEFT -> "Left"; - case RIGHT -> "Right"; - case MIDDLE -> "Middle"; - }; - } - } + public enum Direction { + HORIZONTAL, VERTICAL; - public static class RichPresence { - @SerialEntry - public boolean enableRichPresence = false; + @Override + public String toString() { + return switch (this) { + case HORIZONTAL -> "Horizontal"; + case VERTICAL -> "Vertical"; + }; + } + } - @SerialEntry - public Info info = Info.LOCATION; + public enum Alignment { + LEFT, RIGHT, MIDDLE; - @SerialEntry - public boolean cycleMode = false; + @Override + public String toString() { + return switch (this) { + case LEFT -> "Left"; + case RIGHT -> "Right"; + case MIDDLE -> "Middle"; + }; + } + } - @SerialEntry - public String customMessage = "Playing Skyblock"; - } + public static class RichPresence { + @SerialEntry + public boolean enableRichPresence = false; - public static class ItemList { - @SerialEntry - public boolean enableItemList = true; - } + @SerialEntry + public Info info = Info.LOCATION; - public enum Average { - ONE_DAY, THREE_DAY, BOTH; + @SerialEntry + public boolean cycleMode = false; - @Override - public String toString() { - return I18n.translate("text.autoconfig.skyblocker.option.general.itemTooltip.avg." + name()); - } - } + @SerialEntry + public String customMessage = "Playing Skyblock"; + } - public static class ItemTooltip { - @SerialEntry - public boolean enableNPCPrice = true; + public static class ItemList { + @SerialEntry + public boolean enableItemList = true; + } - @SerialEntry - public boolean enableMotesPrice = true; + public enum Average { + ONE_DAY, THREE_DAY, BOTH; - @SerialEntry - public boolean enableAvgBIN = true; + @Override + public String toString() { + return I18n.translate("text.autoconfig.skyblocker.option.general.itemTooltip.avg." + name()); + } + } - @SerialEntry - public Average avg = Average.THREE_DAY; + public static class ItemTooltip { + @SerialEntry + public boolean enableNPCPrice = true; - @SerialEntry - public boolean enableLowestBIN = true; + @SerialEntry + public boolean enableMotesPrice = true; - @SerialEntry - public boolean enableBazaarPrice = true; + @SerialEntry + public boolean enableAvgBIN = true; - @SerialEntry - public boolean enableObtainedDate = true; + @SerialEntry + public Average avg = Average.THREE_DAY; - @SerialEntry - public boolean enableMuseumInfo = true; + @SerialEntry + public boolean enableLowestBIN = true; - @SerialEntry - public boolean enableExoticTooltip = true; - } + @SerialEntry + public boolean enableBazaarPrice = true; - public static class ItemInfoDisplay { - @SerialEntry - public boolean attributeShardInfo = true; + @SerialEntry + public boolean enableObtainedDate = true; - @SerialEntry - public boolean itemRarityBackgrounds = false; + @SerialEntry + public boolean enableMuseumInfo = true; - @SerialEntry - public RarityBackgroundStyle itemRarityBackgroundStyle = RarityBackgroundStyle.CIRCULAR; + @SerialEntry + public boolean enableExoticTooltip = true; + } - @SerialEntry - public float itemRarityBackgroundsOpacity = 1f; - } + public static class ItemInfoDisplay { + @SerialEntry + public boolean attributeShardInfo = true; - public enum RarityBackgroundStyle { - CIRCULAR(new Identifier(SkyblockerMod.NAMESPACE, "item_rarity_background_circular")), - SQUARE(new Identifier(SkyblockerMod.NAMESPACE, "item_rarity_background_square")); + @SerialEntry + public boolean itemRarityBackgrounds = false; - public final Identifier tex; + @SerialEntry + public RarityBackgroundStyle itemRarityBackgroundStyle = RarityBackgroundStyle.CIRCULAR; - RarityBackgroundStyle(Identifier tex) { - this.tex = tex; - } + @SerialEntry + public float itemRarityBackgroundsOpacity = 1f; + } - @Override - public String toString() { - return switch (this) { - case CIRCULAR -> "Circular"; - case SQUARE -> "Square"; - }; - } - } + public enum RarityBackgroundStyle { + CIRCULAR(new Identifier(SkyblockerMod.NAMESPACE, "item_rarity_background_circular")), + SQUARE(new Identifier(SkyblockerMod.NAMESPACE, "item_rarity_background_square")); - public static class WikiLookup { - @SerialEntry - public boolean enableWikiLookup = true; + public final Identifier tex; - @SerialEntry - public boolean officialWiki = false; - } + RarityBackgroundStyle(Identifier tex) { + this.tex = tex; + } - public static class ChestValue { - @SerialEntry - public boolean enableChestValue = true; + @Override + public String toString() { + return switch (this) { + case CIRCULAR -> "Circular"; + case SQUARE -> "Square"; + }; + } + } - @SerialEntry - public Formatting color = Formatting.DARK_GREEN; + public static class WikiLookup { + @SerialEntry + public boolean enableWikiLookup = true; - @SerialEntry - public Formatting incompleteColor = Formatting.BLUE; - } + @SerialEntry + public boolean officialWiki = false; + } - public static class SpecialEffects { - @SerialEntry - public boolean rareDungeonDropEffects = true; - } + public static class ChestValue { + @SerialEntry + public boolean enableChestValue = true; - public static class Locations { - @SerialEntry - public Barn barn = new Barn(); + @SerialEntry + public Formatting color = Formatting.DARK_GREEN; - @SerialEntry - public Dungeons dungeons = new Dungeons(); + @SerialEntry + public Formatting incompleteColor = Formatting.BLUE; + } - @SerialEntry - public DwarvenMines dwarvenMines = new DwarvenMines(); + public static class SpecialEffects { + @SerialEntry + public boolean rareDungeonDropEffects = true; + } - @SerialEntry - public Rift rift = new Rift(); + public static class Locations { + @SerialEntry + public Barn barn = new Barn(); - @SerialEntry - public SpidersDen spidersDen = new SpidersDen(); - } + @SerialEntry + public Dungeons dungeons = new Dungeons(); - public static class Dungeons { - @SerialEntry - public SecretWaypoints secretWaypoints = new SecretWaypoints(); + @SerialEntry + public DwarvenMines dwarvenMines = new DwarvenMines(); - @SerialEntry - public DoorHighlight doorHighlight = new DoorHighlight(); + @SerialEntry + public Rift rift = new Rift(); - @SerialEntry - public DungeonScore dungeonScore = new DungeonScore(); + @SerialEntry + public SpidersDen spidersDen = new SpidersDen(); + } - @SerialEntry - public DungeonChestProfit dungeonChestProfit = new DungeonChestProfit(); + public static class Dungeons { + @SerialEntry + public SecretWaypoints secretWaypoints = new SecretWaypoints(); - @SerialEntry - public MimicMessage mimicMessage = new MimicMessage(); + @SerialEntry + public DoorHighlight doorHighlight = new DoorHighlight(); - @SerialEntry - public boolean croesusHelper = true; + @SerialEntry + public DungeonScore dungeonScore = new DungeonScore(); - @SerialEntry - public boolean enableMap = true; + @SerialEntry + public DungeonChestProfit dungeonChestProfit = new DungeonChestProfit(); - @SerialEntry - public float mapScaling = 1f; + @SerialEntry + public MimicMessage mimicMessage = new MimicMessage(); - @SerialEntry - public int mapX = 2; + @SerialEntry + public boolean croesusHelper = true; - @SerialEntry - public int mapY = 2; + @SerialEntry + public boolean enableMap = true; - @SerialEntry - public boolean playerSecretsTracker = false; + @SerialEntry + public float mapScaling = 1f; - @SerialEntry - public boolean starredMobGlow = true; + @SerialEntry + public int mapX = 2; - @SerialEntry - public boolean solveThreeWeirdos = true; + @SerialEntry + public int mapY = 2; - @SerialEntry - public boolean blazeSolver = true; + @SerialEntry + public boolean playerSecretsTracker = false; - @SerialEntry - public boolean creeperSolver = true; + @SerialEntry + public boolean starredMobGlow = true; - @SerialEntry - public boolean solveTrivia = true; + @SerialEntry + public boolean solveThreeWeirdos = true; - @SerialEntry - public boolean solveTicTacToe = true; + @SerialEntry + public boolean blazeSolver = true; - @SerialEntry - public boolean solveWaterboard = true; + @SerialEntry + public boolean creeperSolver = true; - @SerialEntry - public boolean fireFreezeStaffTimer = true; + @SerialEntry + public boolean solveTrivia = true; - @SerialEntry - public boolean floor3GuardianHealthDisplay = true; + @SerialEntry + public boolean solveTicTacToe = true; - @SerialEntry - public boolean allowDroppingProtectedItems = false; + @SerialEntry + public boolean solveWaterboard = true; - @SerialEntry - public LividColor lividColor = new LividColor(); + @SerialEntry + public boolean fireFreezeStaffTimer = true; - @SerialEntry - public Terminals terminals = new Terminals(); - } + @SerialEntry + public boolean floor3GuardianHealthDisplay = true; - public static class SecretWaypoints { - @SerialEntry - public boolean enableRoomMatching = true; + @SerialEntry + public boolean allowDroppingProtectedItems = false; - @SerialEntry - public boolean enableSecretWaypoints = true; + @SerialEntry + public LividColor lividColor = new LividColor(); - @SerialEntry - public Waypoint.Type waypointType = Waypoint.Type.WAYPOINT; + @SerialEntry + public Terminals terminals = new Terminals(); + } - @SerialEntry - public boolean showSecretText = true; + public static class SecretWaypoints { + @SerialEntry + public boolean enableRoomMatching = true; - @SerialEntry - public boolean enableEntranceWaypoints = true; + @SerialEntry + public boolean enableSecretWaypoints = true; - @SerialEntry - public boolean enableSuperboomWaypoints = true; + @SerialEntry + public Waypoint.Type waypointType = Waypoint.Type.WAYPOINT; - @SerialEntry - public boolean enableChestWaypoints = true; + @SerialEntry + public boolean showSecretText = true; - @SerialEntry - public boolean enableItemWaypoints = true; + @SerialEntry + public boolean enableEntranceWaypoints = true; - @SerialEntry - public boolean enableBatWaypoints = true; + @SerialEntry + public boolean enableSuperboomWaypoints = true; - @SerialEntry - public boolean enableWitherWaypoints = true; + @SerialEntry + public boolean enableChestWaypoints = true; - @SerialEntry - public boolean enableLeverWaypoints = true; + @SerialEntry + public boolean enableItemWaypoints = true; - @SerialEntry - public boolean enableFairySoulWaypoints = true; + @SerialEntry + public boolean enableBatWaypoints = true; - @SerialEntry - public boolean enableStonkWaypoints = true; + @SerialEntry + public boolean enableWitherWaypoints = true; - @SerialEntry - public boolean enableAotvWaypoints = true; + @SerialEntry + public boolean enableLeverWaypoints = true; - @SerialEntry - public boolean enablePearlWaypoints = true; + @SerialEntry + public boolean enableFairySoulWaypoints = true; - @SerialEntry - public boolean enableDefaultWaypoints = true; - } + @SerialEntry + public boolean enableStonkWaypoints = true; - public static class DoorHighlight { - @SerialEntry - public boolean enableDoorHighlight = true; + @SerialEntry + public boolean enableAotvWaypoints = true; - @SerialEntry - public Type doorHighlightType = Type.OUTLINED_HIGHLIGHT; + @SerialEntry + public boolean enablePearlWaypoints = true; - public enum Type { - HIGHLIGHT, - OUTLINED_HIGHLIGHT, - OUTLINE; + @SerialEntry + public boolean enableDefaultWaypoints = true; + } - @Override - public String toString() { - return switch (this) { - case HIGHLIGHT -> "Highlight"; - case OUTLINED_HIGHLIGHT -> "Outlined Highlight"; - case OUTLINE -> "Outline"; - }; - } - } - } + public static class DoorHighlight { + @SerialEntry + public boolean enableDoorHighlight = true; - public static class DungeonScore { - @SerialEntry - public boolean enableDungeonScore270Message = false; + @SerialEntry + public Type doorHighlightType = Type.OUTLINED_HIGHLIGHT; - @SerialEntry - public boolean enableDungeonScore270Title = false; + public enum Type { + HIGHLIGHT, + OUTLINED_HIGHLIGHT, + OUTLINE; - @SerialEntry - public boolean enableDungeonScore270Sound = false; + @Override + public String toString() { + return switch (this) { + case HIGHLIGHT -> "Highlight"; + case OUTLINED_HIGHLIGHT -> "Outlined Highlight"; + case OUTLINE -> "Outline"; + }; + } + } + } - @SerialEntry - public String dungeonScore270Message = "270 Score Reached!"; + public static class DungeonScore { + @SerialEntry + public boolean enableDungeonScore270Message = false; - @SerialEntry - public boolean enableDungeonScore300Message = true; + @SerialEntry + public boolean enableDungeonScore270Title = false; - @SerialEntry - public boolean enableDungeonScore300Title = true; + @SerialEntry + public boolean enableDungeonScore270Sound = false; - @SerialEntry - public boolean enableDungeonScore300Sound = true; + @SerialEntry + public String dungeonScore270Message = "270 Score Reached!"; - @SerialEntry - public String dungeonScore300Message = "300 Score Reached!"; + @SerialEntry + public boolean enableDungeonScore300Message = true; - @SerialEntry - public boolean enableScoreHUD = true; + @SerialEntry + public boolean enableDungeonScore300Title = true; - @SerialEntry - public int scoreX = 29; + @SerialEntry + public boolean enableDungeonScore300Sound = true; - @SerialEntry - public int scoreY = 134; + @SerialEntry + public String dungeonScore300Message = "300 Score Reached!"; - @SerialEntry - public float scoreScaling = 1f; - } + @SerialEntry + public boolean enableScoreHUD = true; - public static class DungeonChestProfit { - @SerialEntry - public boolean enableProfitCalculator = true; + @SerialEntry + public int scoreX = 29; - @SerialEntry - public boolean includeKismet = false; + @SerialEntry + public int scoreY = 134; - @SerialEntry - public boolean includeEssence = true; + @SerialEntry + public float scoreScaling = 1f; + } - @SerialEntry - public int neutralThreshold = 1000; + public static class DungeonChestProfit { + @SerialEntry + public boolean enableProfitCalculator = true; - @SerialEntry - public Formatting neutralColor = Formatting.DARK_GRAY; + @SerialEntry + public boolean includeKismet = false; - @SerialEntry - public Formatting profitColor = Formatting.DARK_GREEN; + @SerialEntry + public boolean includeEssence = true; - @SerialEntry - public Formatting lossColor = Formatting.RED; + @SerialEntry + public int neutralThreshold = 1000; - @SerialEntry - public Formatting incompleteColor = Formatting.BLUE; - } + @SerialEntry + public Formatting neutralColor = Formatting.DARK_GRAY; - public static class MimicMessage { - @SerialEntry - public boolean sendMimicMessage = true; + @SerialEntry + public Formatting profitColor = Formatting.DARK_GREEN; - @SerialEntry - public String mimicMessage = "Mimic dead!"; - } + @SerialEntry + public Formatting lossColor = Formatting.RED; - public static class LividColor { - @SerialEntry - public boolean enableLividColorGlow = true; + @SerialEntry + public Formatting incompleteColor = Formatting.BLUE; + } - @SerialEntry - public boolean enableLividColorText = true; + public static class MimicMessage { + @SerialEntry + public boolean sendMimicMessage = true; - @SerialEntry - public boolean enableLividColorTitle = true; + @SerialEntry + public String mimicMessage = "Mimic dead!"; + } - @SerialEntry - public String lividColorText = "The livid color is [color]"; - } + public static class LividColor { + @SerialEntry + public boolean enableLividColorGlow = true; - public static class Terminals { - @SerialEntry - public boolean solveColor = true; + @SerialEntry + public boolean enableLividColorText = true; - @SerialEntry - public boolean solveOrder = true; + @SerialEntry + public boolean enableLividColorTitle = true; - @SerialEntry - public boolean solveStartsWith = true; - } + @SerialEntry + public String lividColorText = "The livid color is [color]"; + } - public static class DwarvenMines { - @SerialEntry - public boolean enableDrillFuel = true; + public static class Terminals { + @SerialEntry + public boolean solveColor = true; - @SerialEntry - public boolean solveFetchur = true; + @SerialEntry + public boolean solveOrder = true; - @SerialEntry - public boolean solvePuzzler = true; + @SerialEntry + public boolean solveStartsWith = true; + } - @SerialEntry - public DwarvenHud dwarvenHud = new DwarvenHud(); - } + public static class DwarvenMines { + @SerialEntry + public boolean enableDrillFuel = true; - public static class DwarvenHud { - @SerialEntry - public boolean enabled = true; + @SerialEntry + public boolean solveFetchur = true; - @SerialEntry - public DwarvenHudStyle style = DwarvenHudStyle.SIMPLE; + @SerialEntry + public boolean solvePuzzler = true; - @SerialEntry - public boolean enableBackground = true; + @SerialEntry + public DwarvenHud dwarvenHud = new DwarvenHud(); + } - @SerialEntry - public int x = 10; + public static class DwarvenHud { + @SerialEntry + public boolean enabled = true; - @SerialEntry - public int y = 10; - } + @SerialEntry + public DwarvenHudStyle style = DwarvenHudStyle.SIMPLE; - public enum DwarvenHudStyle { - SIMPLE, FANCY, CLASSIC; + @SerialEntry + public boolean enableBackground = true; - @Override - public String toString() { - return switch (this) { - case SIMPLE -> "Simple"; - case FANCY -> "Fancy"; - case CLASSIC -> "Classic"; - }; - } - } + @SerialEntry + public int x = 10; - public static class Barn { - @SerialEntry - public boolean solveHungryHiker = true; + @SerialEntry + public int y = 10; + } - @SerialEntry - public boolean solveTreasureHunter = true; - } + public enum DwarvenHudStyle { + SIMPLE, FANCY, CLASSIC; - public static class Rift { - @SerialEntry - public boolean mirrorverseWaypoints = true; + @Override + public String toString() { + return switch (this) { + case SIMPLE -> "Simple"; + case FANCY -> "Fancy"; + case CLASSIC -> "Classic"; + }; + } + } - @SerialEntry - public boolean blobbercystGlow = true; + public static class Barn { + @SerialEntry + public boolean solveHungryHiker = true; - @SerialEntry - public boolean enigmaSoulWaypoints = false; + @SerialEntry + public boolean solveTreasureHunter = true; + } - @SerialEntry - public boolean highlightFoundEnigmaSouls = true; + public static class Rift { + @SerialEntry + public boolean mirrorverseWaypoints = true; - @SerialEntry - public int mcGrubberStacks = 0; - } + @SerialEntry + public boolean blobbercystGlow = true; - public static class SpidersDen { - @SerialEntry - public Relics relics = new Relics(); - } + @SerialEntry + public boolean enigmaSoulWaypoints = false; - public static class Relics { - @SerialEntry - public boolean enableRelicsHelper = false; + @SerialEntry + public boolean highlightFoundEnigmaSouls = true; - @SerialEntry - public boolean highlightFoundRelics = true; - } + @SerialEntry + public int mcGrubberStacks = 0; + } - public static class Slayer { - @SerialEntry - public VampireSlayer vampireSlayer = new VampireSlayer(); + public static class SpidersDen { + @SerialEntry + public Relics relics = new Relics(); + } - @SerialEntry - public EndermanSlayer endermanSlayer = new EndermanSlayer(); - } + public static class Relics { + @SerialEntry + public boolean enableRelicsHelper = false; - public static class EndermanSlayer { - @SerialEntry - public boolean highlightNukekubiHeads = true; + @SerialEntry + public boolean highlightFoundRelics = true; + } - @SerialEntry - public boolean highlightBeacons = true; - } + public static class Slayer { + @SerialEntry + public VampireSlayer vampireSlayer = new VampireSlayer(); + } - public static class VampireSlayer { - @SerialEntry - public boolean enableEffigyWaypoints = true; + public static class VampireSlayer { + @SerialEntry + public boolean enableEffigyWaypoints = true; - @SerialEntry - public boolean compactEffigyWaypoints; + @SerialEntry + public boolean compactEffigyWaypoints; - @SerialEntry - public int effigyUpdateFrequency = 5; + @SerialEntry + public int effigyUpdateFrequency = 5; - @SerialEntry - public boolean enableHolyIceIndicator = true; + @SerialEntry + public boolean enableHolyIceIndicator = true; - @SerialEntry - public int holyIceIndicatorTickDelay = 10; + @SerialEntry + public int holyIceIndicatorTickDelay = 10; - @SerialEntry - public int holyIceUpdateFrequency = 5; + @SerialEntry + public int holyIceUpdateFrequency = 5; - @SerialEntry - public boolean enableHealingMelonIndicator = true; + @SerialEntry + public boolean enableHealingMelonIndicator = true; - @SerialEntry - public float healingMelonHealthThreshold = 4f; + @SerialEntry + public float healingMelonHealthThreshold = 4f; - @SerialEntry - public boolean enableSteakStakeIndicator = true; + @SerialEntry + public boolean enableSteakStakeIndicator = true; - @SerialEntry - public int steakStakeUpdateFrequency = 5; + @SerialEntry + public int steakStakeUpdateFrequency = 5; - @SerialEntry - public boolean enableManiaIndicator = true; + @SerialEntry + public boolean enableManiaIndicator = true; - @SerialEntry - public int maniaUpdateFrequency = 5; - } + @SerialEntry + public int maniaUpdateFrequency = 5; + } - public static class Messages { - @SerialEntry - public ChatFilterResult hideAbility = ChatFilterResult.PASS; + public static class Messages { + @SerialEntry + public ChatFilterResult hideAbility = ChatFilterResult.PASS; - @SerialEntry - public ChatFilterResult hideHeal = ChatFilterResult.PASS; + @SerialEntry + public ChatFilterResult hideHeal = ChatFilterResult.PASS; - @SerialEntry - public ChatFilterResult hideAOTE = ChatFilterResult.PASS; + @SerialEntry + public ChatFilterResult hideAOTE = ChatFilterResult.PASS; - @SerialEntry - public ChatFilterResult hideImplosion = ChatFilterResult.PASS; + @SerialEntry + public ChatFilterResult hideImplosion = ChatFilterResult.PASS; - @SerialEntry - public ChatFilterResult hideMoltenWave = ChatFilterResult.PASS; + @SerialEntry + public ChatFilterResult hideMoltenWave = ChatFilterResult.PASS; - @SerialEntry - public ChatFilterResult hideAds = ChatFilterResult.PASS; + @SerialEntry + public ChatFilterResult hideAds = ChatFilterResult.PASS; - @SerialEntry - public ChatFilterResult hideTeleportPad = ChatFilterResult.PASS; + @SerialEntry + public ChatFilterResult hideTeleportPad = ChatFilterResult.PASS; - @SerialEntry - public ChatFilterResult hideCombo = ChatFilterResult.PASS; + @SerialEntry + public ChatFilterResult hideCombo = ChatFilterResult.PASS; - @SerialEntry - public ChatFilterResult hideAutopet = ChatFilterResult.PASS; + @SerialEntry + public ChatFilterResult hideAutopet = ChatFilterResult.PASS; - @SerialEntry - public ChatFilterResult hideShowOff = ChatFilterResult.PASS; + @SerialEntry + public ChatFilterResult hideShowOff = ChatFilterResult.PASS; - @SerialEntry - public ChatFilterResult hideToggleSkyMall = ChatFilterResult.PASS; + @SerialEntry + public ChatFilterResult hideToggleSkyMall = ChatFilterResult.PASS; - @SerialEntry - public ChatFilterResult hideMimicKill = ChatFilterResult.PASS; + @SerialEntry + public ChatFilterResult hideMimicKill = ChatFilterResult.PASS; - @SerialEntry - public ChatFilterResult hideDeath = ChatFilterResult.PASS; + @SerialEntry + public ChatFilterResult hideDeath = ChatFilterResult.PASS; - @SerialEntry - public boolean hideMana = false; - } + @SerialEntry + public boolean hideMana = false; + } - public enum Info { - PURSE, BITS, LOCATION; + public enum Info { + PURSE, BITS, LOCATION; - @Override - public String toString() { - return I18n.translate("text.autoconfig.skyblocker.option.richPresence.info." + name()); - } - } + @Override + public String toString() { + return I18n.translate("text.autoconfig.skyblocker.option.richPresence.info." + name()); + } + } } diff --git a/src/main/java/de/hysky/skyblocker/mixin/ClientPlayNetworkHandlerMixin.java b/src/main/java/de/hysky/skyblocker/mixin/ClientPlayNetworkHandlerMixin.java index 9e11e5ff..738c2165 100644 --- a/src/main/java/de/hysky/skyblocker/mixin/ClientPlayNetworkHandlerMixin.java +++ b/src/main/java/de/hysky/skyblocker/mixin/ClientPlayNetworkHandlerMixin.java @@ -3,11 +3,13 @@ package de.hysky.skyblocker.mixin; import com.llamalad7.mixinextras.injector.ModifyExpressionValue; import com.llamalad7.mixinextras.injector.WrapWithCondition; import com.llamalad7.mixinextras.sugar.Local; +import de.hysky.skyblocker.config.SkyblockerConfig; import de.hysky.skyblocker.skyblock.FishingHelper; import de.hysky.skyblocker.skyblock.dungeon.DungeonScore; import de.hysky.skyblocker.skyblock.dungeon.secrets.DungeonManager; import de.hysky.skyblocker.skyblock.end.BeaconHighlighter; import de.hysky.skyblocker.skyblock.waypoint.MythologicalRitual; +import de.hysky.skyblocker.utils.SlayerUtils; import de.hysky.skyblocker.utils.Utils; import net.minecraft.client.MinecraftClient; import net.minecraft.client.network.ClientPlayNetworkHandler; @@ -79,9 +81,12 @@ public abstract class ClientPlayNetworkHandlerMixin { } @Inject(method = "onBlockUpdate", at = @At("RETURN")) private void skyblocker$onBlockUpdate(BlockUpdateS2CPacket packet, CallbackInfo ci) { - BeaconHighlighter.beaconPositions.remove(packet.getPos()); - if(packet.getState().toString().contains("minecraft:beacon")) { - BeaconHighlighter.beaconPositions.add(packet.getPos()); + if(Utils.isInTheEnd() && SlayerUtils.isInSlayer()) { + BeaconHighlighter.beaconPositions.remove(packet.getPos()); + if(packet.getState().toString().contains("minecraft:beacon")) { + BeaconHighlighter.beaconPositions.add(packet.getPos()); + } } + } } diff --git a/src/main/java/de/hysky/skyblocker/skyblock/end/BeaconHighlighter.java b/src/main/java/de/hysky/skyblocker/skyblock/end/BeaconHighlighter.java index 667318a4..65e9e639 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/end/BeaconHighlighter.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/end/BeaconHighlighter.java @@ -24,16 +24,17 @@ public class BeaconHighlighter { /** * Renders the beacon glow around it. It is rendered in a red color with 50% opacity, and * is visible through walls. + * * @param context An instance of WorldRenderContext for the RenderHelper to use */ public static void render(WorldRenderContext context) { - if(Utils.isInTheEnd() && SkyblockerConfigManager.get().slayer.endermanSlayer.highlightBeacons) + if (Utils.isInTheEnd() && SkyblockerConfigManager.get().slayer.endermanSlayer.highlightBeacons) beaconPositions.forEach((position) -> RenderHelper.renderFilled( - context, - position, - new float[]{1.0f, 0.0f, 0.0f}, - 0.5f, - false + context, + position, + new float[]{1.0f, 0.0f, 0.0f}, + 0.5f, + false )); } } diff --git a/src/main/java/de/hysky/skyblocker/skyblock/entity/MobGlow.java b/src/main/java/de/hysky/skyblocker/skyblock/entity/MobGlow.java index 4f789f7b..65ed9c03 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/entity/MobGlow.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/entity/MobGlow.java @@ -13,6 +13,7 @@ import net.minecraft.entity.Entity; import net.minecraft.entity.decoration.ArmorStandEntity; import net.minecraft.entity.passive.BatEntity; import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemStack; import net.minecraft.nbt.NbtElement; import net.minecraft.predicate.entity.EntityPredicates; import net.minecraft.util.Formatting; @@ -23,139 +24,115 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class MobGlow { - public static boolean shouldMobGlow(Entity entity) { - Box box = entity.getBoundingBox(); - - if (!entity.isInvisible() && OcclusionCulling.getReducedCuller().isVisible(box.minX, box.minY, box.minZ, box.maxX, box.maxY, box.maxZ)) { - String name = entity.getName().getString(); - - // Dungeons - if (Utils.isInDungeons()) { - - // Minibosses - if (entity instanceof PlayerEntity) { - switch (name) { - case "Lost Adventurer", "Shadow Assassin", "Diamond Guy": return SkyblockerConfigManager.get().locations.dungeons.starredMobGlow; - case "Arcade Livid", "Crossed Livid", "Doctor Livid", "Frog Livid", "Hockey Livid", - "Purple Livid", "Scream Livid", "Smile Livid", "Vendetta Livid": return LividColor.shouldGlow(name); - } - } - - // Regular Mobs - if (!(entity instanceof ArmorStandEntity)) { - List<ArmorStandEntity> armorStands = getArmorStands(entity.getWorld(), box); - - if (!armorStands.isEmpty() && armorStands.get(0).getName().getString().contains("✯")) return SkyblockerConfigManager.get().locations.dungeons.starredMobGlow; - } - - // Bats - return SkyblockerConfigManager.get().locations.dungeons.starredMobGlow && entity instanceof BatEntity; - } - - // Rift - if (Utils.isInTheRift()) { - if (entity instanceof PlayerEntity) { - switch (name) { - // They have a space in their name for some reason... - case "Blobbercyst ": return SkyblockerConfigManager.get().locations.rift.blobbercystGlow; - } - } - } - - - - } - - // Enderman Slayer - // Highlights Nukekubi Heads - if(SkyblockerConfigManager.get().slayer.endermanSlayer.highlightNukekubiHeads - && entity instanceof ArmorStandEntity) { - // check for items in the armor sets - for (net.minecraft.item.ItemStack armorItem : entity.getArmorItems()) { - // hacky way to check if an item is a player head w/o - // some shenanigans - if(!armorItem.toString().startsWith("1 player_head")) - continue; - - - if (armorItem.hasNbt()) { - assert armorItem.getNbt() != null; - // eb07594e2df273921a77c101d0bfdfa1115abed5b9b2029eb496ceba9bdbb4b3 is texture id - // for the nukekubi head, compare against it to exclusively find - // armorstands that are nukekubi heads - if (armorItem.getNbt().contains("SkullOwner")) { - // get the texture of the nukekubi head item itself and - // compare it - var texture = armorItem - .getNbt() - .getCompound("SkullOwner") - .getCompound("Properties") - .getList("textures", NbtElement.COMPOUND_TYPE) - .getCompound(0) - .getString("Value"); - - return texture.contains("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZWIwNzU5NGUyZGYyNzM5MjFhNzdjMTAxZDBiZmRmYTExMTVhYmVkNWI5YjIwMjllYjQ5NmNlYmE5YmRiYjRiMyJ9fX0="); - - } - } - } - } - - return false; - } - - private static List<ArmorStandEntity> getArmorStands(World world, Box box) { + public static boolean shouldMobGlow(Entity entity) { + Box box = entity.getBoundingBox(); + + if (!entity.isInvisible() && OcclusionCulling.getReducedCuller().isVisible(box.minX, box.minY, box.minZ, box.maxX, box.maxY, box.maxZ)) { + String name = entity.getName().getString(); + + // Dungeons + if (Utils.isInDungeons()) { + + // Minibosses + if (entity instanceof PlayerEntity) { + switch (name) { + case "Lost Adventurer", "Shadow Assassin", "Diamond Guy": + return SkyblockerConfigManager.get().locations.dungeons.starredMobGlow; + case "Arcade Livid", "Crossed Livid", "Doctor Livid", "Frog Livid", "Hockey Livid", + "Purple Livid", "Scream Livid", "Smile Livid", "Vendetta Livid": + return LividColor.shouldGlow(name); + } + } + + // Regular Mobs + if (!(entity instanceof ArmorStandEntity)) { + List<ArmorStandEntity> armorStands = getArmorStands(entity.getWorld(), box); + + if (!armorStands.isEmpty() && armorStands.get(0).getName().getString().contains("✯")) + return SkyblockerConfigManager.get().locations.dungeons.starredMobGlow; + } + + // Bats + return SkyblockerConfigManager.get().locations.dungeons.starredMobGlow && entity instanceof BatEntity; + } + + // Rift + if (Utils.isInTheRift()) { + if (entity instanceof PlayerEntity) { + switch (name) { + // They have a space in their name for some reason... + case "Blobbercyst ": + return SkyblockerConfigManager.get().locations.rift.blobbercystGlow; + } + } + } + + + } + + // Enderman Slayer + // Highlights Nukekubi Heads + return SkyblockerConfigManager.get().slayer.endermanSlayer.highlightNukekubiHeads + && entity instanceof ArmorStandEntity + && isNukekubiHead((ArmorStandEntity) entity); + } + + private static boolean isNukekubiHead(ArmorStandEntity entity) { + for (ItemStack armorItem : entity.getArmorItems()) { + // hacky way to check if an item is a player head w/o + // some shenanigans + if (!armorItem.toString().startsWith("1 player_head")) + continue; + + if (armorItem.hasNbt()) { + assert armorItem.getNbt() != null; + // eb07594e2df273921a77c101d0bfdfa1115abed5b9b2029eb496ceba9bdbb4b3 is texture id + // for the nukekubi head, compare against it to exclusively find + // armorstands that are nukekubi heads + if (armorItem.getNbt().contains("SkullOwner")) { + // get the texture of the nukekubi head item itself and + // compare it + var texture = armorItem + .getNbt() + .getCompound("SkullOwner") + .getCompound("Properties") + .getList("textures", NbtElement.COMPOUND_TYPE) + .getCompound(0) + .getString("Value"); + + return texture.contains("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZWIwNzU5NGUyZGYyNzM5MjFhNzdjMTAxZDBiZmRmYTExMTVhYmVkNWI5YjIwMjllYjQ5NmNlYmE5YmRiYjRiMyJ9fX0="); + + } + } + } + return false; + } + + private static List<ArmorStandEntity> getArmorStands(World world, Box box) { return world.getEntitiesByClass(ArmorStandEntity.class, box.expand(0, 2, 0), EntityPredicates.NOT_MOUNTED); - } - - public static int getGlowColor(Entity entity) { - String name = entity.getName().getString(); - - if (entity instanceof PlayerEntity) { - return switch (name) { - case "Lost Adventurer" -> 0xfee15c; - case "Shadow Assassin" -> 0x5b2cb2; - case "Diamond Guy" -> 0x57c2f7; - case "Arcade Livid", "Crossed Livid", "Doctor Livid", "Frog Livid", "Hockey Livid", - "Purple Livid", "Scream Livid", "Smile Livid", "Vendetta Livid" -> LividColor.getGlowColor(name); - case "Blobbercyst " -> Formatting.GREEN.getColorValue(); - default -> 0xf57738; - }; - } - - // copypaste nukekebi head logic - if(entity instanceof ArmorStandEntity) { - for (net.minecraft.item.ItemStack armorItem : entity.getArmorItems()) { - // hacky way to check if an item is a player head w/o - // some shenanigans - if(!armorItem.toString().startsWith("1 player_head")) - continue; - - - if (armorItem.hasNbt()) { - assert armorItem.getNbt() != null; - // eb07594e2df273921a77c101d0bfdfa1115abed5b9b2029eb496ceba9bdbb4b3 is texture id - // for the nukekubi head, compare against it to exclusively find - // armorstands that are nukekubi heads - if (armorItem.getNbt().contains("SkullOwner")) { - // get the texture of the nukekebi head item itself and - // compare it - var texture = armorItem - .getNbt() - .getCompound("SkullOwner") - .getCompound("Properties") - .getList("textures", NbtElement.COMPOUND_TYPE) - .getCompound(0) - .getString("Value"); - - if(texture.contains("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZWIwNzU5NGUyZGYyNzM5MjFhNzdjMTAxZDBiZmRmYTExMTVhYmVkNWI5YjIwMjllYjQ5NmNlYmE5YmRiYjRiMyJ9fX0=")) { - return 0x990099; - } - } - } - } - } - - return 0xf57738; - } + } + + public static int getGlowColor(Entity entity) { + String name = entity.getName().getString(); + + if (entity instanceof PlayerEntity) { + return switch (name) { + case "Lost Adventurer" -> 0xfee15c; + case "Shadow Assassin" -> 0x5b2cb2; + case "Diamond Guy" -> 0x57c2f7; + case "Arcade Livid", "Crossed Livid", "Doctor Livid", "Frog Livid", "Hockey Livid", + "Purple Livid", "Scream Livid", "Smile Livid", "Vendetta Livid" -> + LividColor.getGlowColor(name); + case "Blobbercyst " -> Formatting.GREEN.getColorValue(); + default -> 0xf57738; + }; + } + + // copypaste nukekebi head logic + if (entity instanceof ArmorStandEntity && isNukekubiHead((ArmorStandEntity) entity)) { + return 0x990099; + } + + return 0xf57738; + } } |