package io.github.moulberry.notenoughupdates.options; import com.google.gson.*; import io.github.moulberry.notenoughupdates.GuiEnchantColour; import io.github.moulberry.notenoughupdates.NEUOverlayPlacements; import io.github.moulberry.notenoughupdates.NotEnoughUpdates; import io.github.moulberry.notenoughupdates.mbgui.MBAnchorPoint; import io.github.moulberry.notenoughupdates.util.Utils; import net.minecraft.client.Minecraft; import net.minecraft.util.Util; import net.minecraftforge.client.ClientCommandHandler; import net.minecraftforge.client.ForgeHooksClient; import org.lwjgl.util.vector.Vector2f; import java.awt.*; import java.io.*; import java.lang.reflect.Field; import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class Options { /** * Ok, I'll be honest. I wrote this class without looking too much in to how to make proper serializable * variables with defaults values/etc. It works. I'm happy. */ public Option enableItemEditing = new Option( false, "Enable Item Editing", true, "Dev Feature."); public Option onlyShowOnSkyblock = new Option( true, "Only Show On Skyblock", false, "NEU Overlay only appears when you are playing Skyblock."); public Option hidePotionEffect = new Option( true, "Hide Potion Effects", false, "Potion effects are hidden in the inventory GUI. Contrib: All the gamers that play on GUI AUTO"); public Option showQuickCommands = new Option( true, "Quick Commands", false, "Shows QuickCommands™ above search bar."); public Option showUpdateMsg = new Option( true, "Show Update Notifs", false, "Shows update messages if NEU is out-of-date."); public Option tooltipBorderColours = new Option( true, "Coloured Tooltip Borders", false, "Makes the border of tooltips coloured. (Only NEU Tooltips)"); public Option advancedPriceInfo = new Option( false, "Adv. Item Price Info", false, "Shows some extra information about item prices."); public Option cacheRenderedItempane = new Option( true, "Cache Itempane", false, "Caches the drawn itempane, drastically improving performance. Animated textures will not work."); public Option streamerMode = new Option( false, "Streamer Mode", false, "Hides or randomises some stuff on your screen to prevent sniping."); public Option hideApiKey = new Option( false, "Hide Apikey Setting", false, "Hides the Apikey setting (please try not to leak Apikey if you're recording)"); public Option quickAHUpdate = new Option( false, "NeuAH Quick Update", false, "Will instantly update the whole AH when an api update is detected (aka as fast as possible). Warning: Uses lots of data."); public Option bgBlurFactor = new Option( 5.0, "Background Blur", false, "Changes the strength of pane background blur. 0-50.", 0, 50); public Option apiKey = new Option( "", "Api Key", false, "Type /api new to receive key and put it here."); public Option autoupdate = new Option( true, "Automatically Update Items", false, "If true, updated items will automatically download from the remote repository when you start the game. \nHIGHLY RECOMMENDED."); public Option quickcommandMousePress = new Option( false, "QuickCommand on Mouse Press", false, "If true, quickcommands will trigger on mouse down instead of mouse up."); public Option disableItemTabOpen = new Option( false, "No Tab Open", false, "If True, moving your mouse to the item tab on the right side won't open the itempane."); public Option keepopen = new Option( false, "Keep Itempane Open", false, "If true, the itempane will stay open after the gui is closed."); public Option itemStyle = new Option( true, "Circular Item Style", false, "Uses the circular item background style instead of the square style. Contrib: Calyps0"); public Option hideEmptyPanes = new Option( true, "Hide GUI Filler Tooltips", false, "Hides the tooltip of glass panes in skyblock GUIs. Contrib: ThatGravyBoat"); public Option paneWidthMult = new Option( 1.0, "Pane Width", false, "Changes how wide the item and info panes are. Value between 0.5-1.5.", 0.5, 1.5); public Option bgOpacity = new Option( 30.0, "Pane Background Opacity", false, "Changes the background colour opacity of item and info panes. Value between 0-255.", 0, 255); public Option fgOpacity = new Option( 255.0, "Item Background Opacity", false, "Changes the opacity of item background. Value between 0-255.", 0, 255); public Option itemHighlightOpacity = new Option( 178.0, "Item Highlight Opacity", false, "Changes the opacity of item highlights. Value between 0-255.", 0, 255); public Option panePadding = new Option( 10.0, "Pane Padding", false, "Changes the padding of the panes. Value between 0-20.", 0, 20); public Option ahNotification = new Option( 2.0, "AH Notification (Mins, 0 = off)", false, "Minutes before AH ends to notify. 0-10.", 0, 10); public Option tooltipBorderOpacity = new Option( 200.0, "Coloured Tooltip Border Opacity", false, "Coloured tooltips only apply to tooltips in my GUIs. Value between 0-255.", 0, 255); /** * OPTIONS THAT DON'T SHOW IN GUI */ public Option dev = new Option( false, "Show Dev Options", true, "Dev Feature. Please don't use."); public Option selectedCape = new Option( "", "Selected Cape", true, "Selected Cape"); public Option compareMode = new Option( 0.0, "Compare Mode", false, "Compare Mode"); public Option sortMode = new Option( 0.0, "Sort Mode", false, "Sort Mode"); public Option> compareAscending = new Option( Utils.createList(true, true, true), "Compare Ascending", false, "Compare Ascending"); public Option> favourites = new Option( new ArrayList(), "Favourites", false, "Favourites"); public Option>> collectionLog = new Option( new HashMap>(), "CollectionLog", false, "CollectionLog"); public Option> quickCommands = new Option( createDefaultQuickCommands(), "Quick Commands", false, "Quick Commands"); public Option overlaySearchBar = new Option( "", "OverlaySearchBar", false, "OverlaySearchBar"); public Option overlayQuickCommand = new Option( "", "OverlaySearchBar", false, "OverlaySearchBar"); public Option> enchantColours = new Option( Utils.createList("[a-zA-Z ]+:\u003e:9:6", "[a-zA-Z ]+:\u003e:6:c", "[a-zA-Z ]+:\u003e:5:5", "Experience:\u003e:3:5", "Life Steal:\u003e:3:5", "Scavenger:\u003e:3:5", "Looting:\u003e:3:5"), "enchantColours", false, "enchantColours"); private ArrayList createDefaultQuickCommands() { ArrayList arr = new ArrayList<>(); arr.add("/warp home:Warp Home:eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzljODg4MWU0MjkxNWE5ZDI5YmI2MWExNmZiMjZkMDU5OTEzMjA0ZDI2NWRmNWI0MzliM2Q3OTJhY2Q1NiJ9fX0="); arr.add("/warp hub:Warp Hub:eyJ0aW1lc3RhbXAiOjE1NTkyMTU0MTY5MDksInByb2ZpbGVJZCI6IjQxZDNhYmMyZDc0OTQwMGM5MDkwZDU0MzRkMDM4MzFiIiwicHJvZmlsZU5hbWUiOiJNZWdha2xvb24iLCJzaWduYXR1cmVSZXF1aXJlZCI6dHJ1ZSwidGV4dHVyZXMiOnsiU0tJTiI6eyJ1cmwiOiJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlL2Q3Y2M2Njg3NDIzZDA1NzBkNTU2YWM1M2UwNjc2Y2I1NjNiYmRkOTcxN2NkODI2OWJkZWJlZDZmNmQ0ZTdiZjgifX19"); arr.add("/craft:Crafting Table:CRAFTING_TABLE"); arr.add("/enderchest:Ender Chest:ENDER_CHEST"); arr.add("/wardrobe:Wardrobe:LEATHER_CHESTPLATE"); arr.add("/pets:Pets:BONE"); arr.add("neucl:Collection Log:MAP"); arr.add("neuah:NEU Auction House:GOLD_BLOCK"); return arr; } public class Button { public String displayName; public String desc; public Runnable click; public Button(String displayName, String desc, Runnable click) { this.displayName = displayName; this.desc = desc; this.click = click; } } private transient List