diff options
26 files changed, 3455 insertions, 3289 deletions
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/dungeons/GuiDungeonMapEditor.java b/src/main/java/io/github/moulberry/notenoughupdates/dungeons/GuiDungeonMapEditor.java index b0e46e00..ea2631df 100644 --- a/src/main/java/io/github/moulberry/notenoughupdates/dungeons/GuiDungeonMapEditor.java +++ b/src/main/java/io/github/moulberry/notenoughupdates/dungeons/GuiDungeonMapEditor.java @@ -1,714 +1,715 @@ -package io.github.moulberry.notenoughupdates.dungeons; - -import io.github.moulberry.notenoughupdates.core.config.gui.GuiPositionEditor; -import io.github.moulberry.notenoughupdates.core.util.render.RenderUtils; -import io.github.moulberry.notenoughupdates.core.util.render.TextRenderUtils; -import io.github.moulberry.notenoughupdates.options.NEUConfig; -import io.github.moulberry.notenoughupdates.NotEnoughUpdates; -import io.github.moulberry.notenoughupdates.core.GuiElementColour; -import io.github.moulberry.notenoughupdates.core.config.annotations.ConfigEditorSlider; -import io.github.moulberry.notenoughupdates.core.config.annotations.ConfigOption; -import io.github.moulberry.notenoughupdates.itemeditor.GuiElementTextField; -import io.github.moulberry.notenoughupdates.util.SpecialColour; -import io.github.moulberry.notenoughupdates.util.Utils; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.GuiScreen; -import net.minecraft.client.gui.ScaledResolution; -import net.minecraft.client.renderer.GlStateManager; -import net.minecraft.client.renderer.OpenGlHelper; -import net.minecraft.client.shader.Framebuffer; -import net.minecraft.client.shader.Shader; -import net.minecraft.util.EnumChatFormatting; -import net.minecraft.util.Matrix4f; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.Vec4b; -import org.lwjgl.input.Keyboard; -import org.lwjgl.input.Mouse; -import org.lwjgl.opengl.GL11; - -import java.awt.*; -import java.io.IOException; -import java.lang.reflect.Field; -import java.util.*; -import java.util.List; -import static io.github.moulberry.notenoughupdates.util.GuiTextures.*; - -public class GuiDungeonMapEditor extends GuiScreen { - - public static final ResourceLocation BACKGROUND = new ResourceLocation("notenoughupdates:dungeon_map/editor/background.png"); - public static final ResourceLocation BUTTON = new ResourceLocation("notenoughupdates:button.png"); - private static final DungeonMap demoMap = new DungeonMap(); - - private int sizeX; - private int sizeY; - private int guiLeft; - private int guiTop; - - private List<Button> buttons = new ArrayList<>(); - - private GuiElementTextField blurField = new GuiElementTextField("", GuiElementTextField.NUM_ONLY | GuiElementTextField.NO_SPACE); - private GuiElementColour activeColourEditor = null; - - private Field clickedSlider; - - class Button { - private int id; - private int x; - private int y; - private String text; - private Color colour = new Color(-1, true); - private Field option; - private String displayName; - private String desc; - - public Button(int id, int x, int y, String text) { - this(id, x, y, text, null); - } - - public Button(int id, int x, int y, String text, Field option) { - this.id = id; - this.x = x; - this.y = y; - this.text = text; - this.option = option; - - if(option != null) { - ConfigOption optionAnnotation = option.getAnnotation(ConfigOption.class); - displayName = optionAnnotation.name(); - desc = optionAnnotation.desc(); - } - } - - public List<String> getTooltip() { - if(option == null) { - return null; - } - - List<String> tooltip = new ArrayList<>(); - tooltip.add(EnumChatFormatting.YELLOW+displayName); - for(String line : desc.split("\n")) { - tooltip.add(EnumChatFormatting.AQUA+line); - } - return tooltip; - } - - public void render() { - if(text == null) return; - - Minecraft.getMinecraft().getTextureManager().bindTexture(BUTTON); - if(isButtonPressed(id)) { - GlStateManager.color(colour.getRed()*0.85f/255f, colour.getGreen()*0.85f/255f, - colour.getBlue()*0.85f/255f, 1); - Utils.drawTexturedRect(guiLeft+x, guiTop+y, 48, 16, 1, 0, 1, 0, GL11.GL_NEAREST); - } else { - GlStateManager.color(colour.getRed()/255f, colour.getGreen()/255f, colour.getBlue()/255f, 1); - Utils.drawTexturedRect(guiLeft+x, guiTop+y, 48, 16, GL11.GL_NEAREST); - } - - if(text.length() > 0) { - Utils.drawStringCenteredScaledMaxWidth(text, Minecraft.getMinecraft().fontRendererObj , guiLeft+x+24, guiTop+y+8, false, 39, 0xFF000000); - } - } - - } - - public GuiDungeonMapEditor() { - NEUConfig.DungeonMap options = NotEnoughUpdates.INSTANCE.config.dungeonMap; - //Map Border Size - //buttons.add(new Button(0, 6, 37, "Small", options.dmBorderSize)); - //buttons.add(new Button(1, 52, 37, "Medium", options.dmBorderSize)); - //buttons.add(new Button(2, 98, 37, "Large", options.dmBorderSize)); - - //Map Rooms Size - //buttons.add(new Button(3, 6, 67+19, "Small", options.dmRoomSize)); - //buttons.add(new Button(4, 52, 67+19, "Medium", options.dmRoomSize)); - //buttons.add(new Button(5, 98, 67+19, "Large", options.dmRoomSize)); - - //Map Border Styles - buttons.add(new Button(6, 6, 97+30, "None")); - buttons.add(new Button(7, 52, 97+30, "Custom")); - buttons.add(new Button(8, 98, 97+30, "Stone")); - buttons.add(new Button(9, 6, 116+30, "Wood")); - buttons.add(new Button(10, 52, 116+30, "Rustic(S)")); - buttons.add(new Button(11, 98, 116+30, "Rustic(C)")); - buttons.add(new Button(12, 6, 135+30, "Fade")); - buttons.add(new Button(13, 52, 135+30, "Ribbons")); - buttons.add(new Button(14, 98, 135+30, "Paper")); - buttons.add(new Button(15, 6, 154+30, "Crimson")); - buttons.add(new Button(16, 52, 154+30, "Ornate")); - buttons.add(new Button(17, 98, 154+30, "Dragon")); - - try { - //Dungeon Map - buttons.add(new Button(18, 20+139, 36, "Yes/No", NEUConfig.DungeonMap.class.getDeclaredField("dmEnable"))); - //Center - buttons.add(new Button(19, 84+139, 36, "Player/Map", NEUConfig.DungeonMap.class.getDeclaredField("dmCenterPlayer"))); - //Rotate - buttons.add(new Button(20, 20+139, 65, "Player/No Rotate", NEUConfig.DungeonMap.class.getDeclaredField("dmRotatePlayer"))); - //Icon Style - buttons.add(new Button(21, 84+139, 65, "Default/Heads", NEUConfig.DungeonMap.class.getDeclaredField("dmPlayerHeads"))); - //Check Orient - buttons.add(new Button(22, 20+139, 94, "Normal/Reorient", NEUConfig.DungeonMap.class.getDeclaredField("dmOrientCheck"))); - //Check Center - buttons.add(new Button(23, 84+139, 94, "Yes/No", NEUConfig.DungeonMap.class.getDeclaredField("dmCenterCheck"))); - //Interpolation - buttons.add(new Button(24, 20+139, 123, "Yes/No", NEUConfig.DungeonMap.class.getDeclaredField("dmPlayerInterp"))); - //Compatibility - buttons.add(new Button(25, 84+139, 123, "Normal/No SHD/No FB/SHD", NEUConfig.DungeonMap.class.getDeclaredField("dmCompat"))); - - //Background - buttons.add(new Button(26, 20+139, 152, "", NEUConfig.DungeonMap.class.getDeclaredField("dmBackgroundColour"))); - //Border - buttons.add(new Button(27, 84+139, 152, "", NEUConfig.DungeonMap.class.getDeclaredField("dmBorderColour"))); - - //Chroma Mode - buttons.add(new Button(28, 84+139, 181, "Normal/Scroll", NEUConfig.DungeonMap.class.getDeclaredField("dmChromaBorder"))); - } catch(Exception e) { - e.printStackTrace(); - } - - //buttons.add(new Button(29, 52, 86+19, "XLarge", options.dmRoomSize)); - //buttons.add(new Button(30, 52, 56, "XLarge", options.dmBorderSize)); - - { - double val = NotEnoughUpdates.INSTANCE.config.dungeonMap.dmBackgroundBlur; - String strVal; - if(val % 1 == 0) { - strVal = Integer.toString((int)val); - } else { - strVal = Double.toString(val); - strVal = strVal.replaceAll("(\\.\\d\\d\\d)(?:\\d)+", "$1"); - strVal = strVal.replaceAll("0+$", ""); - } - blurField.setText(strVal); - } - } - - @Override - public void drawScreen(int mouseX, int mouseY, float partialTicks) { - ScaledResolution scaledResolution = Utils.pushGuiScale(2); - this.width = scaledResolution.getScaledWidth(); - this.height = scaledResolution.getScaledHeight(); - - mouseX = Mouse.getEventX() * this.width / this.mc.displayWidth; - mouseY = this.height - Mouse.getEventY() * this.height / this.mc.displayHeight - 1; - - List<String> tooltipToDisplay = null; - for(Button button : buttons) { - if(mouseX >= guiLeft+button.x && mouseX <= guiLeft+button.x+48 && - mouseY >= guiTop+button.y-13 && mouseY <= guiTop+button.y+16) { - if(button.id >= 6 && button.id <= 17) { - String mapDesc = null; - String mapCredit = null; - int id = button.id; - switch(id) { - case 6: - mapDesc = "No Border"; break; - case 7: - mapDesc = "Used by custom Resource Packs"; break; - case 8: - mapDesc = "Simple gray border"; mapCredit = "TomEngMaster"; break; - case 9: - mapDesc = "Viney wood border"; mapCredit = "iDevil4Hell"; break; - case 10: - mapDesc = "Steampunk-inspired square border"; mapCredit = "ThatGravyBoat"; break; - case 11: - mapDesc = "Steampunk-inspired circular border"; mapCredit = "ThatGravyBoat"; break; - case 12: - mapDesc = "Light fade border"; mapCredit = "Qwiken"; break; - case 13: - mapDesc = "Simple gray border with red ribbons"; mapCredit = "Sai"; break; - case 14: - mapDesc = "Paper border"; mapCredit = "KingJames02st"; break; - case 15: - mapDesc = "Nether-inspired border"; mapCredit = "DTRW191"; break; - case 16: - mapDesc = "Golden ornate border"; mapCredit = "iDevil4Hell"; break; - case 17: - mapDesc = "Stone dragon border"; mapCredit = "ImperiaL"; break; - } - - ArrayList<String> tooltip = new ArrayList<>(); - tooltip.add(EnumChatFormatting.YELLOW+"Border Style"); - tooltip.add(EnumChatFormatting.AQUA+"Customize the look of the dungeon border"); - tooltip.add(""); - if(mapDesc != null) tooltip.add(EnumChatFormatting.YELLOW+"Set to: "+EnumChatFormatting.AQUA+mapDesc); - if(mapCredit != null) tooltip.add(EnumChatFormatting.YELLOW+"Artist: "+EnumChatFormatting.GOLD+mapCredit); - tooltipToDisplay = tooltip; - } else { - tooltipToDisplay = button.getTooltip(); - } - break; - } - } - - this.sizeX = 431; - this.sizeY = 237; - this.guiLeft = (this.width - this.sizeX) / 2; - this.guiTop = (this.height-this.sizeY)/2; - - super.drawScreen(mouseX, mouseY, partialTicks); - drawDefaultBackground(); - - blurBackground(); - renderBlurredBackground(width, height, guiLeft+2, guiTop+2, sizeX-4, sizeY-4); - - Minecraft.getMinecraft().getTextureManager().bindTexture(BACKGROUND); - GlStateManager.color(1, 1, 1, 1); - Utils.drawTexturedRect(guiLeft, guiTop, sizeX, sizeY, GL11.GL_NEAREST); - - Minecraft.getMinecraft().fontRendererObj.drawString("NEU Dungeon Map Editor", guiLeft+8, guiTop+6, 0xFFB4B4B4); - - Utils.drawStringCenteredScaledMaxWidth("Border Size", Minecraft.getMinecraft().fontRendererObj, - guiLeft+76, guiTop+30, false, 137, 0xFFB4B4B4); - Utils.drawStringCenteredScaledMaxWidth("Rooms Size", Minecraft.getMinecraft().fontRendererObj, - guiLeft+76, guiTop+60, false, 137, 0xFFB4B4B4); - Utils.drawStringCenteredScaledMaxWidth("Icon Scale", Minecraft.getMinecraft().fontRendererObj, - guiLeft+76, guiTop+90, false, 137, 0xFFB4B4B4); - Utils.drawStringCenteredScaledMaxWidth("Border Style", Minecraft.getMinecraft().fontRendererObj, - guiLeft+76, guiTop+120, false, 137, 0xFFB4B4B4); - - Utils.drawStringCenteredScaledMaxWidth("Dungeon Map", Minecraft.getMinecraft().fontRendererObj, - guiLeft+44+139, guiTop+30, false, 60, 0xFFB4B4B4); - Utils.drawStringCenteredScaledMaxWidth("Center", Minecraft.getMinecraft().fontRendererObj, - guiLeft+108+139, guiTop+30, false, 60, 0xFFB4B4B4); - - Utils.drawStringCenteredScaledMaxWidth("Rotate", Minecraft.getMinecraft().fontRendererObj, - guiLeft+44+139, guiTop+59, false, 60, 0xFFB4B4B4); - Utils.drawStringCenteredScaledMaxWidth("Icon Style", Minecraft.getMinecraft().fontRendererObj, - guiLeft+108+139, guiTop+59, false, 60, 0xFFB4B4B4); - - Utils.drawStringCenteredScaledMaxWidth("Check Orient", Minecraft.getMinecraft().fontRendererObj, - guiLeft+44+139, guiTop+88, false, 60, 0xFFB4B4B4); - Utils.drawStringCenteredScaledMaxWidth("Check Center", Minecraft.getMinecraft().fontRendererObj, - guiLeft+108+139, guiTop+88, false, 60, 0xFFB4B4B4); - - Utils.drawStringCenteredScaledMaxWidth("Interpolation", Minecraft.getMinecraft().fontRendererObj, - guiLeft+44+139, guiTop+117, false, 60, 0xFFB4B4B4); - Utils.drawStringCenteredScaledMaxWidth("Compatibility", Minecraft.getMinecraft().fontRendererObj, - guiLeft+108+139, guiTop+117, false, 60, 0xFFB4B4B4); - - Utils.drawStringCenteredScaledMaxWidth("Background", Minecraft.getMinecraft().fontRendererObj, - guiLeft+44+139, guiTop+146, false, 60, 0xFFB4B4B4); - Utils.drawStringCenteredScaledMaxWidth("Border", Minecraft.getMinecraft().fontRendererObj, - guiLeft+108+139, guiTop+146, false, 60, 0xFFB4B4B4); - - Utils.drawStringCenteredScaledMaxWidth("BG Blur", Minecraft.getMinecraft().fontRendererObj, - guiLeft+44+139, guiTop+175, false, 60, 0xFFB4B4B4); - Utils.drawStringCenteredScaledMaxWidth("Chroma Type", Minecraft.getMinecraft().fontRendererObj, - guiLeft+108+139, guiTop+175, false, 60, 0xFFB4B4B4); - - Utils.drawStringCenteredScaledMaxWidth("Edit Map Position", Minecraft.getMinecraft().fontRendererObj, - guiLeft+76, guiTop+209, false, 200, 0xFFB4B4B4); - - try { - drawSlider(NEUConfig.DungeonMap.class.getDeclaredField("dmBorderSize"), guiLeft+76, guiTop+45); - drawSlider(NEUConfig.DungeonMap.class.getDeclaredField("dmRoomSize"), guiLeft+76, guiTop+75); - drawSlider(NEUConfig.DungeonMap.class.getDeclaredField("dmIconScale"), guiLeft+76, guiTop+105); - } catch(Exception e) { - e.printStackTrace(); - } - - NEUConfig.DungeonMap options = NotEnoughUpdates.INSTANCE.config.dungeonMap; - buttons.get(18-6).text = options.dmEnable ? "Enabled" : "Disabled"; - buttons.get(19-6).text = options.dmCenterPlayer ? "Player" : "Map"; - buttons.get(20-6).text = options.dmRotatePlayer ? "Player" : "Vertical"; - buttons.get(21-6).text = options.dmPlayerHeads <= 0 ? "Default" : options.dmPlayerHeads == 1 ? "Heads" : "Heads w/ Border"; - buttons.get(22-6).text = options.dmOrientCheck ? "Orient" : "Off"; - buttons.get(23-6).text = options.dmCenterCheck ? "Center" : "Off"; - buttons.get(24-6).text = options.dmPlayerInterp ? "Interp" : "No Interp"; - buttons.get(25-6).text = options.dmCompat <= 0 ? "Normal" : options.dmCompat >= 2 ? "No FB/SHD" : "No SHD"; - - buttons.get(26-6).colour = new Color(SpecialColour.specialToChromaRGB(options.dmBackgroundColour)); - buttons.get(27-6).colour = new Color(SpecialColour.specialToChromaRGB(options.dmBorderColour)); - - buttons.get(28-6).text = options.dmChromaBorder ? "Scroll" : "Normal"; - - blurField.setSize(48, 16); - blurField.render(guiLeft+20+139, guiTop+181); - - GlStateManager.color(1, 1, 1, 1); - Minecraft.getMinecraft().getTextureManager().bindTexture(button_tex); - RenderUtils.drawTexturedRect(guiLeft+52, guiTop+215, 48, 16); - TextRenderUtils.drawStringCenteredScaledMaxWidth("Edit", fontRendererObj, guiLeft+76, guiTop+223, - false, 48, 0xFF303030); - - Map<String, Vec4b> decorations = new HashMap<>(); - Vec4b vec4b = new Vec4b((byte)3, (byte)(((50)-64)*2), (byte)(((40)-64)*2), (byte)((60)*16/360)); - decorations.put(Minecraft.getMinecraft().thePlayer.getName(), vec4b); - - HashSet<String> players = new HashSet<>(); - players.add(Minecraft.getMinecraft().thePlayer.getName()); - GlStateManager.color(1, 1, 1, 1); - - demoMap.renderMap(guiLeft+357, guiTop+125, NotEnoughUpdates.INSTANCE.colourMap, decorations, 0, - players, false, partialTicks); - - for(Button button : buttons) { - button.render(); - } - - //List<String> textLines, final int mouseX, final int mouseY, final int screenWidth, final int screenHeight, final int maxTextWidth, FontRenderer font - if(tooltipToDisplay != null) { - Utils.drawHoveringText(tooltipToDisplay, mouseX, mouseY, width, height, 200, Minecraft.getMinecraft().fontRendererObj); - } - - Utils.pushGuiScale(-1); - - if(activeColourEditor != null) { - activeColourEditor.render(); - } - } - - public void drawSlider(Field option, int centerX, int centerY) { - float value; - float minValue; - float maxValue; - try { - value = ((Number)option.get(NotEnoughUpdates.INSTANCE.config.dungeonMap)).floatValue(); - - ConfigEditorSlider sliderAnnotation = option.getAnnotation(ConfigEditorSlider.class); - minValue = sliderAnnotation.minValue(); - maxValue = sliderAnnotation.maxValue(); - } catch(Exception e) { - e.printStackTrace(); - return; - } - - float sliderAmount = Math.max(0, Math.min(1, (value-minValue)/(maxValue-minValue))); - int sliderAmountI = (int)(96*sliderAmount); - - GlStateManager.color(1f, 1f, 1f, 1f); - Minecraft.getMinecraft().getTextureManager().bindTexture(slider_on_large); - Utils.drawTexturedRect(centerX-48, centerY-8, sliderAmountI, 16, - 0, sliderAmount, 0, 1, GL11.GL_NEAREST); - - Minecraft.getMinecraft().getTextureManager().bindTexture(slider_off_large); - Utils.drawTexturedRect(centerX-48+sliderAmountI, centerY-8, 96-sliderAmountI, 16, - sliderAmount, 1, 0, 1, GL11.GL_NEAREST); - - Minecraft.getMinecraft().getTextureManager().bindTexture(slider_button); - Utils.drawTexturedRect(centerX-48+sliderAmountI-4, centerY-8, 8, 16, - 0, 1, 0, 1, GL11.GL_NEAREST); - } - - @Override - protected void mouseClickMove(int mouseX, int mouseY, int clickedMouseButton, long timeSinceLastClick) { - super.mouseClickMove(mouseX, mouseY, clickedMouseButton, timeSinceLastClick); - - if(clickedSlider != null) { - float minValue; - float maxValue; - try { - ConfigEditorSlider sliderAnnotation = clickedSlider.getAnnotation(ConfigEditorSlider.class); - minValue = sliderAnnotation.minValue(); - maxValue = sliderAnnotation.maxValue(); - } catch(Exception e) { - e.printStackTrace(); - return; - } - - float sliderAmount = (mouseX - (guiLeft+76-48))/96f; - double val = minValue+(maxValue-minValue)*sliderAmount; - if(Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)) { - val = Math.round(val); - } - float value = (float)Math.max(minValue, Math.min(maxValue, val)); - try { - if(clickedSlider.getType() == int.class) { - clickedSlider.set(NotEnoughUpdates.INSTANCE.config.dungeonMap, Math.round(value)); - } else { - clickedSlider.set(NotEnoughUpdates.INSTANCE.config.dungeonMap, value); - } - } catch(Exception e) { - e.printStackTrace(); - } - } - - } - - @Override - protected void mouseClicked(int mouseX, int mouseY, int mouseButton) { - for(Button button : buttons) { - if(mouseX >= guiLeft+button.x && mouseX <= guiLeft+button.x+48 && - mouseY >= guiTop+button.y && mouseY <= guiTop+button.y+16) { - buttonClicked(mouseX, mouseY, button.id); - - blurField.otherComponentClick(); - return; - } - } - - clickedSlider = null; - if(mouseX >= guiLeft+76-48 && mouseX <= guiLeft+76+48) { - try { - if(mouseY > guiTop+45-8 && mouseY < guiTop+45+8) { - clickedSlider = NEUConfig.DungeonMap.class.getDeclaredField("dmBorderSize"); - return; - } else if(mouseY > guiTop+75-8 && mouseY < guiTop+75+8) { - clickedSlider = NEUConfig.DungeonMap.class.getDeclaredField("dmRoomSize"); - return; - } else if(mouseY > guiTop+105-8 && mouseY < guiTop+105+8) { - clickedSlider = NEUConfig.DungeonMap.class.getDeclaredField("dmIconScale"); - return; - } - } catch(Exception e) { - e.printStackTrace(); - } - } - - if(mouseY > guiTop+181 && mouseY < guiTop+181+16) { - if(mouseX > guiLeft+20+139 && mouseX < guiLeft+20+139+48) { - blurField.mouseClicked(mouseX, mouseY, mouseButton); - return; - } - } else if(mouseY > guiTop+215 && mouseY < guiTop+215+16) { - if(mouseX > guiLeft+52 && mouseX < guiLeft+100) { - int size = 80 + Math.round(40*NotEnoughUpdates.INSTANCE.config.dungeonMap.dmBorderSize); - - Map<String, Vec4b> decorations = new HashMap<>(); - Vec4b vec4b = new Vec4b((byte)3, (byte)(((50)-64)*2), (byte)(((40)-64)*2), (byte)((60)*16/360)); - decorations.put(Minecraft.getMinecraft().thePlayer.getName(), vec4b); - - HashSet<String> players = new HashSet<>(); - players.add(Minecraft.getMinecraft().thePlayer.getName()); - GlStateManager.color(1, 1, 1, 1); - - Minecraft.getMinecraft().displayGuiScreen(new GuiPositionEditor( - NotEnoughUpdates.INSTANCE.config.dungeonMap.dmPosition, - size, size, () -> { - ScaledResolution scaledResolution = Utils.pushGuiScale(2); - demoMap.renderMap(NotEnoughUpdates.INSTANCE.config.dungeonMap.dmPosition.getAbsX(scaledResolution, size)+size/2, - NotEnoughUpdates.INSTANCE.config.dungeonMap.dmPosition.getAbsY(scaledResolution, size)+size/2, - NotEnoughUpdates.INSTANCE.colourMap, decorations, 0, - players, false, 0); - Utils.pushGuiScale(-1); - }, () -> { - }, () -> NotEnoughUpdates.INSTANCE.openGui = new GuiDungeonMapEditor() - ).withScale(2)); - return; - } - } - - blurField.otherComponentClick(); - } - - @Override - public void handleMouseInput() throws IOException { - super.handleMouseInput(); - - if(activeColourEditor != null) { - ScaledResolution realRes = new ScaledResolution(Minecraft.getMinecraft()); - int mouseX = Mouse.getEventX() * realRes.getScaledWidth() / this.mc.displayWidth; - int mouseY = realRes.getScaledHeight() - Mouse.getEventY() * realRes.getScaledHeight() / this.mc.displayHeight - 1; - activeColourEditor.mouseInput(mouseX, mouseY); - } - } - - @Override - public void handleKeyboardInput() throws IOException { - super.handleKeyboardInput(); - - if(activeColourEditor != null) { - activeColourEditor.keyboardInput(); - } - } - - @Override - protected void keyTyped(char typedChar, int keyCode) throws IOException { - super.keyTyped(typedChar, keyCode); - - if(blurField.getFocus()) { - blurField.keyTyped(typedChar, keyCode); - - try { - blurField.setCustomBorderColour(-1); - NotEnoughUpdates.INSTANCE.config.dungeonMap.dmBackgroundBlur = Float.parseFloat(blurField.getText()); - } catch(Exception e) { - blurField.setCustomBorderColour(Color.RED.getRGB()); - } - } - } - - private void buttonClicked(int mouseX, int mouseY, int id) { - NEUConfig.DungeonMap options = NotEnoughUpdates.INSTANCE.config.dungeonMap; - switch (id) { - case 0: - options.dmBorderSize = 0; break; - case 1: - options.dmBorderSize = 1; break; - case 2: - options.dmBorderSize = 2; break; - case 30: - options.dmBorderSize = 3; break; - case 3: - options.dmRoomSize = 0; break; - case 4: - options.dmRoomSize = 1; break; - case 5: - options.dmRoomSize = 2; break; - case 29: - options.dmRoomSize = 3; break; - case 18: - options.dmEnable = !options.dmEnable; break; - case 19: - options.dmCenterPlayer = !options.dmCenterPlayer; break; - case 20: - options.dmRotatePlayer = !options.dmRotatePlayer; break; - case 21: - options.dmPlayerHeads++; - if(options.dmPlayerHeads > 2) options.dmPlayerHeads = 0; break; - case 22: - options.dmOrientCheck = !options.dmOrientCheck; break; - case 23: - options.dmCenterCheck = !options.dmCenterCheck; break; - case 24: - options.dmPlayerInterp = !options.dmPlayerInterp; break; - case 25: - options.dmCompat++; - if(options.dmCompat > 2) options.dmCompat = 0; - break; - case 26: { - ScaledResolution realRes = new ScaledResolution(Minecraft.getMinecraft()); - mouseX = Mouse.getEventX() * realRes.getScaledWidth() / this.mc.displayWidth; - mouseY = realRes.getScaledHeight() - Mouse.getEventY() * realRes.getScaledHeight() / this.mc.displayHeight - 1; - activeColourEditor = new GuiElementColour(mouseX, mouseY, options.dmBackgroundColour, - (col) -> options.dmBackgroundColour = col, () -> activeColourEditor = null); - } - break; - case 27: { - ScaledResolution realRes = new ScaledResolution(Minecraft.getMinecraft()); - mouseX = Mouse.getEventX() * realRes.getScaledWidth() / this.mc.displayWidth; - mouseY = realRes.getScaledHeight() - Mouse.getEventY() * realRes.getScaledHeight() / this.mc.displayHeight - 1; - activeColourEditor = new GuiElementColour(mouseX, mouseY, options.dmBorderColour, - (col) -> options.dmBorderColour = col, () -> activeColourEditor = null); - } - break; - case 28: - options.dmChromaBorder = !options.dmChromaBorder; break; - default: - if(id >= 6 && id <= 17) { - options.dmBorderStyle = id-6; break; - } - }; - } - - private boolean isButtonPressed(int id) { - NEUConfig.DungeonMap options = NotEnoughUpdates.INSTANCE.config.dungeonMap; - - if(id >= 0 && id <= 2) { - return options.dmBorderSize == id; - } else if(id >= 3 && id <= 5) { - return options.dmRoomSize == id-3; - } else if(id >= 6 && id <= 17) { - return options.dmBorderStyle == id-6; - } else if(id == 29) { - return options.dmRoomSize == 3; - } else if(id == 30) { - return options.dmBorderSize == 3; - } - return false; - } - - Shader blurShaderHorz = null; - Framebuffer blurOutputHorz = null; - Shader blurShaderVert = null; - Framebuffer blurOutputVert = null; - - /** - * Creates a projection matrix that projects from our coordinate space [0->width; 0->height] to OpenGL coordinate - * space [-1 -> 1; 1 -> -1] (Note: flipped y-axis). - * - * This is so that we can render to and from the framebuffer in a way that is familiar to us, instead of needing to - * apply scales and translations manually. - */ - private Matrix4f createProjectionMatrix(int width, int height) { - Matrix4f projMatrix = new Matrix4f(); - projMatrix.setIdentity(); - projMatrix.m00 = 2.0F / (float)width; - projMatrix.m11 = 2.0F / (float)(-height); - projMatrix.m22 = -0.0020001999F; - projMatrix.m33 = 1.0F; - projMatrix.m03 = -1.0F; - projMatrix.m13 = 1.0F; - projMatrix.m23 = -1.0001999F; - return projMatrix; - } - - private double lastBgBlurFactor = -1; - private void blurBackground() { - if(!OpenGlHelper.isFramebufferEnabled()) return; - - int width = Minecraft.getMinecraft().displayWidth; - int height = Minecraft.getMinecraft().displayHeight; - - if(blurOutputHorz == null) { - blurOutputHorz = new Framebuffer(width, height, false); - blurOutputHorz.setFramebufferFilter(GL11.GL_NEAREST); - } - if(blurOutputVert == null) { - blurOutputVert = new Framebuffer(width, height, false); - blurOutputVert.setFramebufferFilter(GL11.GL_NEAREST); - } - if(blurOutputHorz.framebufferWidth != width || blurOutputHorz.framebufferHeight != height) { - blurOutputHorz.createBindFramebuffer(width, height); - blurShaderHorz.setProjectionMatrix(createProjectionMatrix(width, height)); - Minecraft.getMinecraft().getFramebuffer().bindFramebuffer(false); - } - if(blurOutputVert.framebufferWidth != width || blurOutputVert.framebufferHeight != height) { - blurOutputVert.createBindFramebuffer(width, height); - blurShaderVert.setProjectionMatrix(createProjectionMatrix(width, height)); - Minecraft.getMinecraft().getFramebuffer().bindFramebuffer(false); - } - - if(blurShaderHorz == null) { - try { - blurShaderHorz = new Shader(Minecraft.getMinecraft().getResourceManager(), "blur", - Minecraft.getMinecraft().getFramebuffer(), blurOutputHorz); - blurShaderHorz.getShaderManager().getShaderUniform("BlurDir").set(1, 0); - blurShaderHorz.setProjectionMatrix(createProjectionMatrix(width, height)); - } catch(Exception e) { } - } - if(blurShaderVert == null) { - try { - blurShaderVert = new Shader(Minecraft.getMinecraft().getResourceManager(), "blur", - blurOutputHorz, blurOutputVert); - blurShaderVert.getShaderManager().getShaderUniform("BlurDir").set(0, 1); - blurShaderVert.setProjectionMatrix(createProjectionMatrix(width, height)); - } catch(Exception e) { } - } - if(blurShaderHorz != null && blurShaderVert != null) { - if(15 != lastBgBlurFactor) { - blurShaderHorz.getShaderManager().getShaderUniform("Radius").set((float)15); - blurShaderVert.getShaderManager().getShaderUniform("Radius").set((float)15); - lastBgBlurFactor = 15; - } - GL11.glPushMatrix(); - blurShaderHorz.loadShader(0); - blurShaderVert.loadShader(0); - GlStateManager.enableDepth(); - GL11.glPopMatrix(); - - Minecraft.getMinecraft().getFramebuffer().bindFramebuffer(false); - } - } - - /** - * Renders a subsection of the blurred framebuffer on to the corresponding section of the screen. - * Essentially, this method will "blur" the background inside the bounds specified by [x->x+blurWidth, y->y+blurHeight] - */ - public void renderBlurredBackground(int width, int height, int x, int y, int blurWidth, int blurHeight) { - if(!OpenGlHelper.isFramebufferEnabled()) return; - - float uMin = x/(float)width; - float uMax = (x+blurWidth)/(float)width; - float vMin = (height-y)/(float)height; - float vMax = (height-y-blurHeight)/(float)height; - - blurOutputVert.bindFramebufferTexture(); - GlStateManager.color(1f, 1f, 1f, 1f); - Utils.drawTexturedRect(x, y, blurWidth, blurHeight, uMin, uMax, vMin, vMax); - blurOutputVert.unbindFramebufferTexture(); - } - -} +package io.github.moulberry.notenoughupdates.dungeons;
+
+import io.github.moulberry.notenoughupdates.core.config.gui.GuiPositionEditor;
+import io.github.moulberry.notenoughupdates.core.util.render.RenderUtils;
+import io.github.moulberry.notenoughupdates.core.util.render.TextRenderUtils;
+import io.github.moulberry.notenoughupdates.options.NEUConfig;
+import io.github.moulberry.notenoughupdates.NotEnoughUpdates;
+import io.github.moulberry.notenoughupdates.core.GuiElementColour;
+import io.github.moulberry.notenoughupdates.core.config.annotations.ConfigEditorSlider;
+import io.github.moulberry.notenoughupdates.core.config.annotations.ConfigOption;
+import io.github.moulberry.notenoughupdates.itemeditor.GuiElementTextField;
+import io.github.moulberry.notenoughupdates.options.seperateSections.DungeonMapConfig;
+import io.github.moulberry.notenoughupdates.util.SpecialColour;
+import io.github.moulberry.notenoughupdates.util.Utils;
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.gui.GuiScreen;
+import net.minecraft.client.gui.ScaledResolution;
+import net.minecraft.client.renderer.GlStateManager;
+import net.minecraft.client.renderer.OpenGlHelper;
+import net.minecraft.client.shader.Framebuffer;
+import net.minecraft.client.shader.Shader;
+import net.minecraft.util.EnumChatFormatting;
+import net.minecraft.util.Matrix4f;
+import net.minecraft.util.ResourceLocation;
+import net.minecraft.util.Vec4b;
+import org.lwjgl.input.Keyboard;
+import org.lwjgl.input.Mouse;
+import org.lwjgl.opengl.GL11;
+
+import java.awt.*;
+import java.io.IOException;
+import java.lang.reflect.Field;
+import java.util.*;
+import java.util.List;
+import static io.github.moulberry.notenoughupdates.util.GuiTextures.*;
+
+public class GuiDungeonMapEditor extends GuiScreen {
+
+ public static final ResourceLocation BACKGROUND = new ResourceLocation("notenoughupdates:dungeon_map/editor/background.png");
+ public static final ResourceLocation BUTTON = new ResourceLocation("notenoughupdates:button.png");
+ private static final DungeonMap demoMap = new DungeonMap();
+
+ private int sizeX;
+ private int sizeY;
+ private int guiLeft;
+ private int guiTop;
+
+ private List<Button> buttons = new ArrayList<>();
+
+ private GuiElementTextField blurField = new GuiElementTextField("", GuiElementTextField.NUM_ONLY | GuiElementTextField.NO_SPACE);
+ private GuiElementColour activeColourEditor = null;
+
+ private Field clickedSlider;
+
+ class Button {
+ private int id;
+ private int x;
+ private int y;
+ private String text;
+ private Color colour = new Color(-1, true);
+ private Field option;
+ private String displayName;
+ private String desc;
+
+ public Button(int id, int x, int y, String text) {
+ this(id, x, y, text, null);
+ }
+
+ public Button(int id, int x, int y, String text, Field option) {
+ this.id = id;
+ this.x = x;
+ this.y = y;
+ this.text = text;
+ this.option = option;
+
+ if(option != null) {
+ ConfigOption optionAnnotation = option.getAnnotation(ConfigOption.class);
+ displayName = optionAnnotation.name();
+ desc = optionAnnotation.desc();
+ }
+ }
+
+ public List<String> getTooltip() {
+ if(option == null) {
+ return null;
+ }
+
+ List<String> tooltip = new ArrayList<>();
+ tooltip.add(EnumChatFormatting.YELLOW+displayName);
+ for(String line : desc.split("\n")) {
+ tooltip.add(EnumChatFormatting.AQUA+line);
+ }
+ return tooltip;
+ }
+
+ public void render() {
+ if(text == null) return;
+
+ Minecraft.getMinecraft().getTextureManager().bindTexture(BUTTON);
+ if(isButtonPressed(id)) {
+ GlStateManager.color(colour.getRed()*0.85f/255f, colour.getGreen()*0.85f/255f,
+ colour.getBlue()*0.85f/255f, 1);
+ Utils.drawTexturedRect(guiLeft+x, guiTop+y, 48, 16, 1, 0, 1, 0, GL11.GL_NEAREST);
+ } else {
+ GlStateManager.color(colour.getRed()/255f, colour.getGreen()/255f, colour.getBlue()/255f, 1);
+ Utils.drawTexturedRect(guiLeft+x, guiTop+y, 48, 16, GL11.GL_NEAREST);
+ }
+
+ if(text.length() > 0) {
+ Utils.drawStringCenteredScaledMaxWidth(text, Minecraft.getMinecraft().fontRendererObj , guiLeft+x+24, guiTop+y+8, false, 39, 0xFF000000);
+ }
+ }
+
+ }
+
+ public GuiDungeonMapEditor() {
+ DungeonMapConfig options = NotEnoughUpdates.INSTANCE.config.dungeonMap;
+ //Map Border Size
+ //buttons.add(new Button(0, 6, 37, "Small", options.dmBorderSize));
+ //buttons.add(new Button(1, 52, 37, "Medium", options.dmBorderSize));
+ //buttons.add(new Button(2, 98, 37, "Large", options.dmBorderSize));
+
+ //Map Rooms Size
+ //buttons.add(new Button(3, 6, 67+19, "Small", options.dmRoomSize));
+ //buttons.add(new Button(4, 52, 67+19, "Medium", options.dmRoomSize));
+ //buttons.add(new Button(5, 98, 67+19, "Large", options.dmRoomSize));
+
+ //Map Border Styles
+ buttons.add(new Button(6, 6, 97+30, "None"));
+ buttons.add(new Button(7, 52, 97+30, "Custom"));
+ buttons.add(new Button(8, 98, 97+30, "Stone"));
+ buttons.add(new Button(9, 6, 116+30, "Wood"));
+ buttons.add(new Button(10, 52, 116+30, "Rustic(S)"));
+ buttons.add(new Button(11, 98, 116+30, "Rustic(C)"));
+ buttons.add(new Button(12, 6, 135+30, "Fade"));
+ buttons.add(new Button(13, 52, 135+30, "Ribbons"));
+ buttons.add(new Button(14, 98, 135+30, "Paper"));
+ buttons.add(new Button(15, 6, 154+30, "Crimson"));
+ buttons.add(new Button(16, 52, 154+30, "Ornate"));
+ buttons.add(new Button(17, 98, 154+30, "Dragon"));
+
+ try {
+ //Dungeon Map
+ buttons.add(new Button(18, 20+139, 36, "Yes/No", DungeonMapConfig.class.getDeclaredField("dmEnable")));
+ //Center
+ buttons.add(new Button(19, 84+139, 36, "Player/Map", DungeonMapConfig.class.getDeclaredField("dmCenterPlayer")));
+ //Rotate
+ buttons.add(new Button(20, 20+139, 65, "Player/No Rotate", DungeonMapConfig.class.getDeclaredField("dmRotatePlayer")));
+ //Icon Style
+ buttons.add(new Button(21, 84+139, 65, "Default/Heads", DungeonMapConfig.class.getDeclaredField("dmPlayerHeads")));
+ //Check Orient
+ buttons.add(new Button(22, 20+139, 94, "Normal/Reorient", DungeonMapConfig.class.getDeclaredField("dmOrientCheck")));
+ //Check Center
+ buttons.add(new Button(23, 84+139, 94, "Yes/No", DungeonMapConfig.class.getDeclaredField("dmCenterCheck")));
+ //Interpolation
+ buttons.add(new Button(24, 20+139, 123, "Yes/No", DungeonMapConfig.class.getDeclaredField("dmPlayerInterp")));
+ //Compatibility
+ buttons.add(new Button(25, 84+139, 123, "Normal/No SHD/No FB/SHD", DungeonMapConfig.class.getDeclaredField("dmCompat")));
+
+ //Background
+ buttons.add(new Button(26, 20+139, 152, "", DungeonMapConfig.class.getDeclaredField("dmBackgroundColour")));
+ //Border
+ buttons.add(new Button(27, 84+139, 152, "", DungeonMapConfig.class.getDeclaredField("dmBorderColour")));
+
+ //Chroma Mode
+ buttons.add(new Button(28, 84+139, 181, "Normal/Scroll", DungeonMapConfig.class.getDeclaredField("dmChromaBorder")));
+ } catch(Exception e) {
+ e.printStackTrace();
+ }
+
+ //buttons.add(new Button(29, 52, 86+19, "XLarge", options.dmRoomSize));
+ //buttons.add(new Button(30, 52, 56, "XLarge", options.dmBorderSize));
+
+ {
+ double val = NotEnoughUpdates.INSTANCE.config.dungeonMap.dmBackgroundBlur;
+ String strVal;
+ if(val % 1 == 0) {
+ strVal = Integer.toString((int)val);
+ } else {
+ strVal = Double.toString(val);
+ strVal = strVal.replaceAll("(\\.\\d\\d\\d)(?:\\d)+", "$1");
+ strVal = strVal.replaceAll("0+$", "");
+ }
+ blurField.setText(strVal);
+ }
+ }
+
+ @Override
+ public void drawScreen(int mouseX, int mouseY, float partialTicks) {
+ ScaledResolution scaledResolution = Utils.pushGuiScale(2);
+ this.width = scaledResolution.getScaledWidth();
+ this.height = scaledResolution.getScaledHeight();
+
+ mouseX = Mouse.getEventX() * this.width / this.mc.displayWidth;
+ mouseY = this.height - Mouse.getEventY() * this.height / this.mc.displayHeight - 1;
+
+ List<String> tooltipToDisplay = null;
+ for(Button button : buttons) {
+ if(mouseX >= guiLeft+button.x && mouseX <= guiLeft+button.x+48 &&
+ mouseY >= guiTop+button.y-13 && mouseY <= guiTop+button.y+16) {
+ if(button.id >= 6 && button.id <= 17) {
+ String mapDesc = null;
+ String mapCredit = null;
+ int id = button.id;
+ switch(id) {
+ case 6:
+ mapDesc = "No Border"; break;
+ case 7:
+ mapDesc = "Used by custom Resource Packs"; break;
+ case 8:
+ mapDesc = "Simple gray border"; mapCredit = "TomEngMaster"; break;
+ case 9:
+ mapDesc = "Viney wood border"; mapCredit = "iDevil4Hell"; break;
+ case 10:
+ mapDesc = "Steampunk-inspired square border"; mapCredit = "ThatGravyBoat"; break;
+ case 11:
+ mapDesc = "Steampunk-inspired circular border"; mapCredit = "ThatGravyBoat"; break;
+ case 12:
+ mapDesc = "Light fade border"; mapCredit = "Qwiken"; break;
+ case 13:
+ mapDesc = "Simple gray border with red ribbons"; mapCredit = "Sai"; break;
+ case 14:
+ mapDesc = "Paper border"; mapCredit = "KingJames02st"; break;
+ case 15:
+ mapDesc = "Nether-inspired border"; mapCredit = "DTRW191"; break;
+ case 16:
+ mapDesc = "Golden ornate border"; mapCredit = "iDevil4Hell"; break;
+ case 17:
+ mapDesc = "Stone dragon border"; mapCredit = "ImperiaL"; break;
+ }
+
+ ArrayList<String> tooltip = new ArrayList<>();
+ tooltip.add(EnumChatFormatting.YELLOW+"Border Style");
+ tooltip.add(EnumChatFormatting.AQUA+"Customize the look of the dungeon border");
+ tooltip.add("");
+ if(mapDesc != null) tooltip.add(EnumChatFormatting.YELLOW+"Set to: "+EnumChatFormatting.AQUA+mapDesc);
+ if(mapCredit != null) tooltip.add(EnumChatFormatting.YELLOW+"Artist: "+EnumChatFormatting.GOLD+mapCredit);
+ tooltipToDisplay = tooltip;
+ } else {
+ tooltipToDisplay = button.getTooltip();
+ }
+ break;
+ }
+ }
+
+ this.sizeX = 431;
+ this.sizeY = 237;
+ this.guiLeft = (this.width - this.sizeX) / 2;
+ this.guiTop = (this.height-this.sizeY)/2;
+
+ super.drawScreen(mouseX, mouseY, partialTicks);
+ drawDefaultBackground();
+
+ blurBackground();
+ renderBlurredBackground(width, height, guiLeft+2, guiTop+2, sizeX-4, sizeY-4);
+
+ Minecraft.getMinecraft().getTextureManager().bindTexture(BACKGROUND);
+ GlStateManager.color(1, 1, 1, 1);
+ Utils.drawTexturedRect(guiLeft, guiTop, sizeX, sizeY, GL11.GL_NEAREST);
+
+ Minecraft.getMinecraft().fontRendererObj.drawString("NEU Dungeon Map Editor", guiLeft+8, guiTop+6, 0xFFB4B4B4);
+
+ Utils.drawStringCenteredScaledMaxWidth("Border Size", Minecraft.getMinecraft().fontRendererObj,
+ guiLeft+76, guiTop+30, false, 137, 0xFFB4B4B4);
+ Utils.drawStringCenteredScaledMaxWidth("Rooms Size", Minecraft.getMinecraft().fontRendererObj,
+ guiLeft+76, guiTop+60, false, 137, 0xFFB4B4B4);
+ Utils.drawStringCenteredScaledMaxWidth("Icon Scale", Minecraft.getMinecraft().fontRendererObj,
+ guiLeft+76, guiTop+90, false, 137, 0xFFB4B4B4);
+ Utils.drawStringCenteredScaledMaxWidth("Border Style", Minecraft.getMinecraft().fontRendererObj,
+ guiLeft+76, guiTop+120, false, 137, 0xFFB4B4B4);
+
+ Utils.drawStringCenteredScaledMaxWidth("Dungeon Map", Minecraft.getMinecraft().fontRendererObj,
+ guiLeft+44+139, guiTop+30, false, 60, 0xFFB4B4B4);
+ Utils.drawStringCenteredScaledMaxWidth("Center", Minecraft.getMinecraft().fontRendererObj,
+ guiLeft+108+139, guiTop+30, false, 60, 0xFFB4B4B4);
+
+ Utils.drawStringCenteredScaledMaxWidth("Rotate", Minecraft.getMinecraft().fontRendererObj,
+ guiLeft+44+139, guiTop+59, false, 60, 0xFFB4B4B4);
+ Utils.drawStringCenteredScaledMaxWidth("Icon Style", Minecraft.getMinecraft().fontRendererObj,
+ guiLeft+108+139, guiTop+59, false, 60, 0xFFB4B4B4);
+
+ Utils.drawStringCenteredScaledMaxWidth("Check Orient", Minecraft.getMinecraft().fontRendererObj,
+ guiLeft+44+139, guiTop+88, false, 60, 0xFFB4B4B4);
+ Utils.drawStringCenteredScaledMaxWidth("Check Center", Minecraft.getMinecraft().fontRendererObj,
+ guiLeft+108+139, guiTop+88, false, 60, 0xFFB4B4B4);
+
+ Utils.drawStringCenteredScaledMaxWidth("Interpolation", Minecraft.getMinecraft().fontRendererObj,
+ guiLeft+44+139, guiTop+117, false, 60, 0xFFB4B4B4);
+ Utils.drawStringCenteredScaledMaxWidth("Compatibility", Minecraft.getMinecraft().fontRendererObj,
+ guiLeft+108+139, guiTop+117, false, 60, 0xFFB4B4B4);
+
+ Utils.drawStringCenteredScaledMaxWidth("Background", Minecraft.getMinecraft().fontRendererObj,
+ guiLeft+44+139, guiTop+146, false, 60, 0xFFB4B4B4);
+ Utils.drawStringCenteredScaledMaxWidth("Border", Minecraft.getMinecraft().fontRendererObj,
+ guiLeft+108+139, guiTop+146, false, 60, 0xFFB4B4B4);
+
+ Utils.drawStringCenteredScaledMaxWidth("BG Blur", Minecraft.getMinecraft().fontRendererObj,
+ guiLeft+44+139, guiTop+175, false, 60, 0xFFB4B4B4);
+ Utils.drawStringCenteredScaledMaxWidth("Chroma Type", Minecraft.getMinecraft().fontRendererObj,
+ guiLeft+108+139, guiTop+175, false, 60, 0xFFB4B4B4);
+
+ Utils.drawStringCenteredScaledMaxWidth("Edit Map Position", Minecraft.getMinecraft().fontRendererObj,
+ guiLeft+76, guiTop+209, false, 200, 0xFFB4B4B4);
+
+ try {
+ drawSlider(DungeonMapConfig.class.getDeclaredField("dmBorderSize"), guiLeft+76, guiTop+45);
+ drawSlider(DungeonMapConfig.class.getDeclaredField("dmRoomSize"), guiLeft+76, guiTop+75);
+ drawSlider(DungeonMapConfig.class.getDeclaredField("dmIconScale"), guiLeft+76, guiTop+105);
+ } catch(Exception e) {
+ e.printStackTrace();
+ }
+
+ DungeonMapConfig options = NotEnoughUpdates.INSTANCE.config.dungeonMap;
+ buttons.get(18-6).text = options.dmEnable ? "Enabled" : "Disabled";
+ buttons.get(19-6).text = options.dmCenterPlayer ? "Player" : "Map";
+ buttons.get(20-6).text = options.dmRotatePlayer ? "Player" : "Vertical";
+ buttons.get(21-6).text = options.dmPlayerHeads <= 0 ? "Default" : options.dmPlayerHeads == 1 ? "Heads" : "Heads w/ Border";
+ buttons.get(22-6).text = options.dmOrientCheck ? "Orient" : "Off";
+ buttons.get(23-6).text = options.dmCenterCheck ? "Center" : "Off";
+ buttons.get(24-6).text = options.dmPlayerInterp ? "Interp" : "No Interp";
+ buttons.get(25-6).text = options.dmCompat <= 0 ? "Normal" : options.dmCompat >= 2 ? "No FB/SHD" : "No SHD";
+
+ buttons.get(26-6).colour = new Color(SpecialColour.specialToChromaRGB(options.dmBackgroundColour));
+ buttons.get(27-6).colour = new Color(SpecialColour.specialToChromaRGB(options.dmBorderColour));
+
+ buttons.get(28-6).text = options.dmChromaBorder ? "Scroll" : "Normal";
+
+ blurField.setSize(48, 16);
+ blurField.render(guiLeft+20+139, guiTop+181);
+
+ GlStateManager.color(1, 1, 1, 1);
+ Minecraft.getMinecraft().getTextureManager().bindTexture(button_tex);
+ RenderUtils.drawTexturedRect(guiLeft+52, guiTop+215, 48, 16);
+ TextRenderUtils.drawStringCenteredScaledMaxWidth("Edit", fontRendererObj, guiLeft+76, guiTop+223,
+ false, 48, 0xFF303030);
+
+ Map<String, Vec4b> decorations = new HashMap<>();
+ Vec4b vec4b = new Vec4b((byte)3, (byte)(((50)-64)*2), (byte)(((40)-64)*2), (byte)((60)*16/360));
+ decorations.put(Minecraft.getMinecraft().thePlayer.getName(), vec4b);
+
+ HashSet<String> players = new HashSet<>();
+ players.add(Minecraft.getMinecraft().thePlayer.getName());
+ GlStateManager.color(1, 1, 1, 1);
+
+ demoMap.renderMap(guiLeft+357, guiTop+125, NotEnoughUpdates.INSTANCE.colourMap, decorations, 0,
+ players, false, partialTicks);
+
+ for(Button button : buttons) {
+ button.render();
+ }
+
+ //List<String> textLines, final int mouseX, final int mouseY, final int screenWidth, final int screenHeight, final int maxTextWidth, FontRenderer font
+ if(tooltipToDisplay != null) {
+ Utils.drawHoveringText(tooltipToDisplay, mouseX, mouseY, width, height, 200, Minecraft.getMinecraft().fontRendererObj);
+ }
+
+ Utils.pushGuiScale(-1);
+
+ if(activeColourEditor != null) {
+ activeColourEditor.render();
+ }
+ }
+
+ public void drawSlider(Field option, int centerX, int centerY) {
+ float value;
+ float minValue;
+ float maxValue;
+ try {
+ value = ((Number)option.get(NotEnoughUpdates.INSTANCE.config.dungeonMap)).floatValue();
+
+ ConfigEditorSlider sliderAnnotation = option.getAnnotation(ConfigEditorSlider.class);
+ minValue = sliderAnnotation.minValue();
+ maxValue = sliderAnnotation.maxValue();
+ } catch(Exception e) {
+ e.printStackTrace();
+ return;
+ }
+
+ float sliderAmount = Math.max(0, Math.min(1, (value-minValue)/(maxValue-minValue)));
+ int sliderAmountI = (int)(96*sliderAmount);
+
+ GlStateManager.color(1f, 1f, 1f, 1f);
+ Minecraft.getMinecraft().getTextureManager().bindTexture(slider_on_large);
+ Utils.drawTexturedRect(centerX-48, centerY-8, sliderAmountI, 16,
+ 0, sliderAmount, 0, 1, GL11.GL_NEAREST);
+
+ Minecraft.getMinecraft().getTextureManager().bindTexture(slider_off_large);
+ Utils.drawTexturedRect(centerX-48+sliderAmountI, centerY-8, 96-sliderAmountI, 16,
+ sliderAmount, 1, 0, 1, GL11.GL_NEAREST);
+
+ Minecraft.getMinecraft().getTextureManager().bindTexture(slider_button);
+ Utils.drawTexturedRect(centerX-48+sliderAmountI-4, centerY-8, 8, 16,
+ 0, 1, 0, 1, GL11.GL_NEAREST);
+ }
+
+ @Override
+ protected void mouseClickMove(int mouseX, int mouseY, int clickedMouseButton, long timeSinceLastClick) {
+ super.mouseClickMove(mouseX, mouseY, clickedMouseButton, timeSinceLastClick);
+
+ if(clickedSlider != null) {
+ float minValue;
+ float maxValue;
+ try {
+ ConfigEditorSlider sliderAnnotation = clickedSlider.getAnnotation(ConfigEditorSlider.class);
+ minValue = sliderAnnotation.minValue();
+ maxValue = sliderAnnotation.maxValue();
+ } catch(Exception e) {
+ e.printStackTrace();
+ return;
+ }
+
+ float sliderAmount = (mouseX - (guiLeft+76-48))/96f;
+ double val = minValue+(maxValue-minValue)*sliderAmount;
+ if(Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)) {
+ val = Math.round(val);
+ }
+ float value = (float)Math.max(minValue, Math.min(maxValue, val));
+ try {
+ if(clickedSlider.getType() == int.class) {
+ clickedSlider.set(NotEnoughUpdates.INSTANCE.config.dungeonMap, Math.round(value));
+ } else {
+ clickedSlider.set(NotEnoughUpdates.INSTANCE.config.dungeonMap, value);
+ }
+ } catch(Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ }
+
+ @Override
+ protected void mouseClicked(int mouseX, int mouseY, int mouseButton) {
+ for(Button button : buttons) {
+ if(mouseX >= guiLeft+button.x && mouseX <= guiLeft+button.x+48 &&
+ mouseY >= guiTop+button.y && mouseY <= guiTop+button.y+16) {
+ buttonClicked(mouseX, mouseY, button.id);
+
+ blurField.otherComponentClick();
+ return;
+ }
+ }
+
+ clickedSlider = null;
+ if(mouseX >= guiLeft+76-48 && mouseX <= guiLeft+76+48) {
+ try {
+ if(mouseY > guiTop+45-8 && mouseY < guiTop+45+8) {
+ clickedSlider = DungeonMapConfig.class.getDeclaredField("dmBorderSize");
+ return;
+ } else if(mouseY > guiTop+75-8 && mouseY < guiTop+75+8) {
+ clickedSlider = DungeonMapConfig.class.getDeclaredField("dmRoomSize");
+ return;
+ } else if(mouseY > guiTop+105-8 && mouseY < guiTop+105+8) {
+ clickedSlider = DungeonMapConfig.class.getDeclaredField("dmIconScale");
+ return;
+ }
+ } catch(Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ if(mouseY > guiTop+181 && mouseY < guiTop+181+16) {
+ if(mouseX > guiLeft+20+139 && mouseX < guiLeft+20+139+48) {
+ blurField.mouseClicked(mouseX, mouseY, mouseButton);
+ return;
+ }
+ } else if(mouseY > guiTop+215 && mouseY < guiTop+215+16) {
+ if(mouseX > guiLeft+52 && mouseX < guiLeft+100) {
+ int size = 80 + Math.round(40*NotEnoughUpdates.INSTANCE.config.dungeonMap.dmBorderSize);
+
+ Map<String, Vec4b> decorations = new HashMap<>();
+ Vec4b vec4b = new Vec4b((byte)3, (byte)(((50)-64)*2), (byte)(((40)-64)*2), (byte)((60)*16/360));
+ decorations.put(Minecraft.getMinecraft().thePlayer.getName(), vec4b);
+
+ HashSet<String> players = new HashSet<>();
+ players.add(Minecraft.getMinecraft().thePlayer.getName());
+ GlStateManager.color(1, 1, 1, 1);
+
+ Minecraft.getMinecraft().displayGuiScreen(new GuiPositionEditor(
+ NotEnoughUpdates.INSTANCE.config.dungeonMap.dmPosition,
+ size, size, () -> {
+ ScaledResolution scaledResolution = Utils.pushGuiScale(2);
+ demoMap.renderMap(NotEnoughUpdates.INSTANCE.config.dungeonMap.dmPosition.getAbsX(scaledResolution, size)+size/2,
+ NotEnoughUpdates.INSTANCE.config.dungeonMap.dmPosition.getAbsY(scaledResolution, size)+size/2,
+ NotEnoughUpdates.INSTANCE.colourMap, decorations, 0,
+ players, false, 0);
+ Utils.pushGuiScale(-1);
+ }, () -> {
+ }, () -> NotEnoughUpdates.INSTANCE.openGui = new GuiDungeonMapEditor()
+ ).withScale(2));
+ return;
+ }
+ }
+
+ blurField.otherComponentClick();
+ }
+
+ @Override
+ public void handleMouseInput() throws IOException {
+ super.handleMouseInput();
+
+ if(activeColourEditor != null) {
+ ScaledResolution realRes = new ScaledResolution(Minecraft.getMinecraft());
+ int mouseX = Mouse.getEventX() * realRes.getScaledWidth() / this.mc.displayWidth;
+ int mouseY = realRes.getScaledHeight() - Mouse.getEventY() * realRes.getScaledHeight() / this.mc.displayHeight - 1;
+ activeColourEditor.mouseInput(mouseX, mouseY);
+ }
+ }
+
+ @Override
+ public void handleKeyboardInput() throws IOException {
+ super.handleKeyboardInput();
+
+ if(activeColourEditor != null) {
+ activeColourEditor.keyboardInput();
+ }
+ }
+
+ @Override
+ protected void keyTyped(char typedChar, int keyCode) throws IOException {
+ super.keyTyped(typedChar, keyCode);
+
+ if(blurField.getFocus()) {
+ blurField.keyTyped(typedChar, keyCode);
+
+ try {
+ blurField.setCustomBorderColour(-1);
+ NotEnoughUpdates.INSTANCE.config.dungeonMap.dmBackgroundBlur = Float.parseFloat(blurField.getText());
+ } catch(Exception e) {
+ blurField.setCustomBorderColour(Color.RED.getRGB());
+ }
+ }
+ }
+
+ private void buttonClicked(int mouseX, int mouseY, int id) {
+ DungeonMapConfig options = NotEnoughUpdates.INSTANCE.config.dungeonMap;
+ switch (id) {
+ case 0:
+ options.dmBorderSize = 0; break;
+ case 1:
+ options.dmBorderSize = 1; break;
+ case 2:
+ options.dmBorderSize = 2; break;
+ case 30:
+ options.dmBorderSize = 3; break;
+ case 3:
+ options.dmRoomSize = 0; break;
+ case 4:
+ options.dmRoomSize = 1; break;
+ case 5:
+ options.dmRoomSize = 2; break;
+ case 29:
+ options.dmRoomSize = 3; break;
+ case 18:
+ options.dmEnable = !options.dmEnable; break;
+ case 19:
+ options.dmCenterPlayer = !options.dmCenterPlayer; break;
+ case 20:
+ options.dmRotatePlayer = !options.dmRotatePlayer; break;
+ case 21:
+ options.dmPlayerHeads++;
+ if(options.dmPlayerHeads > 2) options.dmPlayerHeads = 0; break;
+ case 22:
+ options.dmOrientCheck = !options.dmOrientCheck; break;
+ case 23:
+ options.dmCenterCheck = !options.dmCenterCheck; break;
+ case 24:
+ options.dmPlayerInterp = !options.dmPlayerInterp; break;
+ case 25:
+ options.dmCompat++;
+ if(options.dmCompat > 2) options.dmCompat = 0;
+ break;
+ case 26: {
+ ScaledResolution realRes = new ScaledResolution(Minecraft.getMinecraft());
+ mouseX = Mouse.getEventX() * realRes.getScaledWidth() / this.mc.displayWidth;
+ mouseY = realRes.getScaledHeight() - Mouse.getEventY() * realRes.getScaledHeight() / this.mc.displayHeight - 1;
+ activeColourEditor = new GuiElementColour(mouseX, mouseY, options.dmBackgroundColour,
+ (col) -> options.dmBackgroundColour = col, () -> activeColourEditor = null);
+ }
+ break;
+ case 27: {
+ ScaledResolution realRes = new ScaledResolution(Minecraft.getMinecraft());
+ mouseX = Mouse.getEventX() * realRes.getScaledWidth() / this.mc.displayWidth;
+ mouseY = realRes.getScaledHeight() - Mouse.getEventY() * realRes.getScaledHeight() / this.mc.displayHeight - 1;
+ activeColourEditor = new GuiElementColour(mouseX, mouseY, options.dmBorderColour,
+ (col) -> options.dmBorderColour = col, () -> activeColourEditor = null);
+ }
+ break;
+ case 28:
+ options.dmChromaBorder = !options.dmChromaBorder; break;
+ default:
+ if(id >= 6 && id <= 17) {
+ options.dmBorderStyle = id-6; break;
+ }
+ };
+ }
+
+ private boolean isButtonPressed(int id) {
+ DungeonMapConfig options = NotEnoughUpdates.INSTANCE.config.dungeonMap;
+
+ if(id >= 0 && id <= 2) {
+ return options.dmBorderSize == id;
+ } else if(id >= 3 && id <= 5) {
+ return options.dmRoomSize == id-3;
+ } else if(id >= 6 && id <= 17) {
+ return options.dmBorderStyle == id-6;
+ } else if(id == 29) {
+ return options.dmRoomSize == 3;
+ } else if(id == 30) {
+ return options.dmBorderSize == 3;
+ }
+ return false;
+ }
+
+ Shader blurShaderHorz = null;
+ Framebuffer blurOutputHorz = null;
+ Shader blurShaderVert = null;
+ Framebuffer blurOutputVert = null;
+
+ /**
+ * Creates a projection matrix that projects from our coordinate space [0->width; 0->height] to OpenGL coordinate
+ * space [-1 -> 1; 1 -> -1] (Note: flipped y-axis).
+ *
+ * This is so that we can render to and from the framebuffer in a way that is familiar to us, instead of needing to
+ * apply scales and translations manually.
+ */
+ private Matrix4f createProjectionMatrix(int width, int height) {
+ Matrix4f projMatrix = new Matrix4f();
+ projMatrix.setIdentity();
+ projMatrix.m00 = 2.0F / (float)width;
+ projMatrix.m11 = 2.0F / (float)(-height);
+ projMatrix.m22 = -0.0020001999F;
+ projMatrix.m33 = 1.0F;
+ projMatrix.m03 = -1.0F;
+ projMatrix.m13 = 1.0F;
+ projMatrix.m23 = -1.0001999F;
+ return projMatrix;
+ }
+
+ private double lastBgBlurFactor = -1;
+ private void blurBackground() {
+ if(!OpenGlHelper.isFramebufferEnabled()) return;
+
+ int width = Minecraft.getMinecraft().displayWidth;
+ int height = Minecraft.getMinecraft().displayHeight;
+
+ if(blurOutputHorz == null) {
+ blurOutputHorz = new Framebuffer(width, height, false);
+ blurOutputHorz.setFramebufferFilter(GL11.GL_NEAREST);
+ }
+ if(blurOutputVert == null) {
+ blurOutputVert = new Framebuffer(width, height, false);
+ blurOutputVert.setFramebufferFilter(GL11.GL_NEAREST);
+ }
+ if(blurOutputHorz.framebufferWidth != width || blurOutputHorz.framebufferHeight != height) {
+ blurOutputHorz.createBindFramebuffer(width, height);
+ blurShaderHorz.setProjectionMatrix(createProjectionMatrix(width, height));
+ Minecraft.getMinecraft().getFramebuffer().bindFramebuffer(false);
+ }
+ if(blurOutputVert.framebufferWidth != width || blurOutputVert.framebufferHeight != height) {
+ blurOutputVert.createBindFramebuffer(width, height);
+ blurShaderVert.setProjectionMatrix(createProjectionMatrix(width, height));
+ Minecraft.getMinecraft().getFramebuffer().bindFramebuffer(false);
+ }
+
+ if(blurShaderHorz == null) {
+ try {
+ blurShaderHorz = new Shader(Minecraft.getMinecraft().getResourceManager(), "blur",
+ Minecraft.getMinecraft().getFramebuffer(), blurOutputHorz);
+ blurShaderHorz.getShaderManager().getShaderUniform("BlurDir").set(1, 0);
+ blurShaderHorz.setProjectionMatrix(createProjectionMatrix(width, height));
+ } catch(Exception e) { }
+ }
+ if(blurShaderVert == null) {
+ try {
+ blurShaderVert = new Shader(Minecraft.getMinecraft().getResourceManager(), "blur",
+ blurOutputHorz, blurOutputVert);
+ blurShaderVert.getShaderManager().getShaderUniform("BlurDir").set(0, 1);
+ blurShaderVert.setProjectionMatrix(createProjectionMatrix(width, height));
+ } catch(Exception e) { }
+ }
+ if(blurShaderHorz != null && blurShaderVert != null) {
+ if(15 != lastBgBlurFactor) {
+ blurShaderHorz.getShaderManager().getShaderUniform("Radius").set((float)15);
+ blurShaderVert.getShaderManager().getShaderUniform("Radius").set((float)15);
+ lastBgBlurFactor = 15;
+ }
+ GL11.glPushMatrix();
+ blurShaderHorz.loadShader(0);
+ blurShaderVert.loadShader(0);
+ GlStateManager.enableDepth();
+ GL11.glPopMatrix();
+
+ Minecraft.getMinecraft().getFramebuffer().bindFramebuffer(false);
+ }
+ }
+
+ /**
+ * Renders a subsection of the blurred framebuffer on to the corresponding section of the screen.
+ * Essentially, this method will "blur" the background inside the bounds specified by [x->x+blurWidth, y->y+blurHeight]
+ */
+ public void renderBlurredBackground(int width, int height, int x, int y, int blurWidth, int blurHeight) {
+ if(!OpenGlHelper.isFramebufferEnabled()) return;
+
+ float uMin = x/(float)width;
+ float uMax = (x+blurWidth)/(float)width;
+ float vMin = (height-y)/(float)height;
+ float vMax = (height-y-blurHeight)/(float)height;
+
+ blurOutputVert.bindFramebufferTexture();
+ GlStateManager.color(1f, 1f, 1f, 1f);
+ Utils.drawTexturedRect(x, y, blurWidth, blurHeight, uMin, uMax, vMin, vMax);
+ blurOutputVert.unbindFramebufferTexture();
+ }
+
+}
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/options/NEUConfig.java b/src/main/java/io/github/moulberry/notenoughupdates/options/NEUConfig.java index c6203059..b12e2ea5 100644 --- a/src/main/java/io/github/moulberry/notenoughupdates/options/NEUConfig.java +++ b/src/main/java/io/github/moulberry/notenoughupdates/options/NEUConfig.java @@ -1,2575 +1,419 @@ -package io.github.moulberry.notenoughupdates.options; - -import com.google.common.collect.Lists; -import com.google.gson.annotations.Expose; -import io.github.moulberry.notenoughupdates.NotEnoughUpdates; -import io.github.moulberry.notenoughupdates.core.GuiScreenElementWrapper; -import io.github.moulberry.notenoughupdates.core.config.Config; -import io.github.moulberry.notenoughupdates.core.config.Position; -import io.github.moulberry.notenoughupdates.core.config.annotations.*; -import io.github.moulberry.notenoughupdates.core.config.gui.GuiPositionEditor; -import io.github.moulberry.notenoughupdates.miscgui.GuiEnchantColour; -import io.github.moulberry.notenoughupdates.miscgui.GuiInvButtonEditor; -import io.github.moulberry.notenoughupdates.miscgui.NEUOverlayPlacements; -import io.github.moulberry.notenoughupdates.overlays.*; -import io.github.moulberry.notenoughupdates.util.SBInfo; -import net.minecraft.client.Minecraft; -import net.minecraft.util.EnumChatFormatting; -import net.minecraftforge.client.ClientCommandHandler; -import org.lwjgl.input.Keyboard; -import org.lwjgl.util.vector.Vector2f; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; - -public class NEUConfig extends Config { - - private void editOverlay(String activeConfig, TextOverlay overlay, Position position) { - Vector2f size = overlay.getDummySize(); - int width = (int)size.x; - int height = (int)size.y; - Minecraft.getMinecraft().displayGuiScreen(new GuiPositionEditor(position, width, height, () -> { - overlay.renderDummy(); - OverlayManager.dontRenderOverlay = overlay.getClass(); - }, () -> { - }, () -> NotEnoughUpdates.INSTANCE.openGui = new GuiScreenElementWrapper( - new NEUConfigEditor(NotEnoughUpdates.INSTANCE.config, activeConfig)) - )); - } - - @Override - public void executeRunnable(int runnableId) { - String activeConfigCategory = null; - if(Minecraft.getMinecraft().currentScreen instanceof GuiScreenElementWrapper) { - GuiScreenElementWrapper wrapper = (GuiScreenElementWrapper) Minecraft.getMinecraft().currentScreen; - if(wrapper.element instanceof NEUConfigEditor) { - activeConfigCategory = ((NEUConfigEditor)wrapper.element).getSelectedCategoryName(); - } - } - final String activeConfigCategoryF = activeConfigCategory; - - switch (runnableId) { - case 0: - ClientCommandHandler.instance.executeCommand(Minecraft.getMinecraft().thePlayer, "/neumap"); - return; - case 1: - editOverlay(activeConfigCategory, OverlayManager.miningOverlay, mining.overlayPosition); - return; - case 2: - Minecraft.getMinecraft().displayGuiScreen(new GuiPositionEditor( - NotEnoughUpdates.INSTANCE.config.mining.drillFuelBarPosition, - NotEnoughUpdates.INSTANCE.config.mining.drillFuelBarWidth, 12, () -> { - }, () -> { - }, () -> NotEnoughUpdates.INSTANCE.openGui = new GuiScreenElementWrapper( - new NEUConfigEditor(NotEnoughUpdates.INSTANCE.config, activeConfigCategoryF)) - )); - return; - case 3: - editOverlay(activeConfigCategory, OverlayManager.farmingOverlay, skillOverlays.farmingPosition); - return; - case 4: - editOverlay(activeConfigCategory, OverlayManager.petInfoOverlay, petOverlay.petInfoPosition); - return; - case 5: - editOverlay(activeConfigCategory, OverlayManager.timersOverlay, miscOverlays.todoPosition); - return; - case 6: - NotEnoughUpdates.INSTANCE.openGui = new NEUOverlayPlacements(); - return; - case 7: - NotEnoughUpdates.INSTANCE.openGui = new GuiInvButtonEditor(); - return; - case 8: - NotEnoughUpdates.INSTANCE.openGui = new GuiEnchantColour(); - return; - - } - } - - @Expose - @Category( - name = "Misc", - desc = "Miscellaneous options which don't fit into any other category" - ) - public Misc misc = new Misc(); - - @Expose - @Category( - name = "Notifications", - desc = "Notifications" - ) - public Notifications notifications = new Notifications(); - - @Expose - @Category( - name = "Item List", - desc = "Item List" - ) - public Itemlist itemlist = new Itemlist(); - - @Expose - @Category( - name = "Toolbar", - desc = "Toolbar" - ) - public Toolbar toolbar = new Toolbar(); - - @Expose - @Category( - name = "Inventory Buttons", - desc = "Inventory Buttons" - ) - public InventoryButtons inventoryButtons = new InventoryButtons(); - - - @Expose - @Category( - name = "Slot Locking", - desc = "Slot Locking" - ) - public SlotLocking slotLocking = new SlotLocking(); - - @Expose - @Category( - name = "Tooltip Tweaks", - desc = "Tooltip Tweaks" - ) - public TooltipTweaks tooltipTweaks = new TooltipTweaks(); - - @Expose - @Category( - name = "Item Overlays", - desc = "Item Overlays" - ) - public ItemOverlays itemOverlays = new ItemOverlays(); - - @Expose - @Category( - name = "Skill Overlays", - desc = "Skill Overlays" - ) - public SkillOverlays skillOverlays = new SkillOverlays(); - - @Expose - @Category( - name = "Misc Overlays", - desc = "Misc Overlays" - ) - public MiscOverlays miscOverlays = new MiscOverlays(); - - @Expose - @Category( - name = "Storage GUI", - desc = "Storage GUI" - ) - public StorageGUI storageGUI = new StorageGUI(); - - @Expose - @Category( - name = "Dungeons", - desc = "Dungeons" - ) - public Dungeons dungeons = new Dungeons(); - - - @Expose - @Category( - name = "Enchanting Solvers", - desc = "Enchanting Solvers" - ) - public EnchSolvers enchantingSolvers = new EnchSolvers(); - - @Expose - @Category( - name = "Mining", - desc = "Mining" - ) - public Mining mining = new Mining(); - - - @Expose - @Category( - name = "Fishing", - desc = "Fishing" - ) - public Fishing fishing = new Fishing(); - - @Expose - @Category( - name = "NEU Auction House", - desc = "NEU Auction House" - ) - public NeuAuctionHouse neuAuctionHouse = new NeuAuctionHouse(); - - @Expose - @Category( - name = "Improved SB Menus", - desc = "Improved SB Menus" - ) - public ImprovedSBMenu improvedSBMenu = new ImprovedSBMenu(); - - @Expose - @Category( - name = "Calendar", - desc = "Calendar" - ) - public Calendar calendar = new Calendar(); - - @Expose - @Category( - name = "Trade Menu", - desc = "Trade Menu" - ) - public TradeMenu tradeMenu = new TradeMenu(); - - @Expose - @Category( - name = "Pet Overlay", - desc = "Pet Overlay" - ) - public PetOverlay petOverlay = new PetOverlay(); - - @Expose - @Category( - name = "AH Search GUI", - desc = "AH Search GUI" - ) - public AuctionHouseSearch auctionHouseSearch = new AuctionHouseSearch(); - - @Expose - @Category( - name = "Accessory Bag Overlay", - desc = "Accessory Bag Overlay" - ) - public AccessoryBag accessoryBag = new AccessoryBag(); - - @Expose - @Category( - name = "Api Key", - desc = "Api Key" - ) - public ApiKey apiKey = new ApiKey(); - - @Expose - public Hidden hidden = new Hidden(); - - @Expose - public DungeonMap dungeonMap = new DungeonMap(); - - public static class Misc { - @Expose - @ConfigOption( - name = "Only Show on Skyblock", - desc = "The item list and some other GUI elements will only show on skyblock" - ) - @ConfigEditorBoolean - public boolean onlyShowOnSkyblock = true; - - @Expose - @ConfigOption( - name = "Hide Potion Effects", - desc = "Hide the potion effects inside your inventory while on skyblock" - ) - @ConfigEditorBoolean - public boolean hidePotionEffect = true; - - @Expose - @ConfigOption( - name = "Streamer Mode", - desc = "Randomize lobby names in the scoreboard and chat messages to help prevent stream sniping" - ) - @ConfigEditorBoolean - public boolean streamerMode = false; - - @Expose - @ConfigOption( - name = "GUI Click Sounds", - desc = "Play click sounds in various NEU-related GUIs when pressing buttons" - ) - @ConfigEditorBoolean - public boolean guiButtonClicks = true; - - @Expose - @ConfigOption( - name = "Damage Indicator Style", - desc = "Change the style of Skyblock damage indicators to be easier to read" - ) - @ConfigEditorDropdown( - values = {"Off", "Commas", "Shortened"} - ) - public int damageIndicatorStyle = 1; - - @Expose - @ConfigOption( - name = "Edit Enchant Colours", - desc = "Change the colours of certain skyblock enchants" - ) - @ConfigEditorButton(runnableId = 8, buttonText = "Open") - public boolean editEnchantColoursButton = true; - - @Expose - @ConfigOption( - name = "Chroma Text Speed", - desc = "Change the speed of chroma text for items names (/neucustomize) and enchant colours (/neuec) with the chroma colour code (&z)" - ) - @ConfigEditorSlider( - minValue = 10, - maxValue = 500, - minStep = 10 - ) - public int chromaSpeed = 100; - } - - public static class Notifications { - @Expose - @ConfigOption( - name = "Update Messages", - desc = "Give a notification in chat whenever a new version of NEU is released" - ) - @ConfigEditorBoolean - public boolean showUpdateMsg = true; - - @Expose - @ConfigOption( - name = "RAM Warning", - desc = "Warning when game starts with lots of RAM allocated\n"+ - "\u00a7cBefore disabling this, please seriously read the message. If you complain about FPS issues without listening to the warning, that's your fault." - ) - @ConfigEditorBoolean - public boolean doRamNotif = true; - - /*@Expose - @ConfigOption( - name = "Wrong Pet", - desc = "Gives a notification in chat whenever you're using a pet that doesnt match the same xp you're gathering." - ) - @ConfigEditorBoolean - public boolean showWrongPetMsg = false;*/ - } - - public static class Itemlist { - @Expose - @ConfigOption( - name = "Show Vanilla Items", - desc = "Vanilla items are included in the item list" - ) - @ConfigEditorBoolean - public boolean showVanillaItems = true; - - @Expose - @ConfigOption( - name = "Open Itemlist Arrow", - desc = "Creates an arrow on the right-side to open the item list when hovered" - ) - @ConfigEditorBoolean - public boolean tabOpen = true; - - @Expose - @ConfigOption( - name = "Keep Open", - desc = "Keeps the Itemlist open after the inventory is closed" - ) - @ConfigEditorBoolean - public boolean keepopen = false; - - @Expose - @ConfigOption( - name = "Item Style", - desc = "Sets the style of the background behind items" - ) - @ConfigEditorDropdown( - values = {"Round", "Square"} - ) - public int itemStyle = 0; - - @Expose - @ConfigOption( - name = "Pane Gui Scale", - desc = "Change the gui scale of the Itemlist" - ) - @ConfigEditorDropdown( - values = {"Default", "Small", "Medium", "Large", "Auto"} - ) - public int paneGuiScale = 0; - - @Expose - @ConfigOption( - name = "Background Blur", - desc = "Change the blur amount behind the Itemlist. 0 = off" - ) - @ConfigEditorSlider( - minValue = 0, - maxValue = 20, - minStep = 1 - ) - public int bgBlurFactor = 5; - - @Expose - @ConfigOption( - name = "Pane Width Multiplier", - desc = "Change the width of the Itemlist" - ) - @ConfigEditorSlider( - minValue = 0.5f, - maxValue = 1.5f, - minStep = 0.1f - ) - public float paneWidthMult = 1.0f; - - @Expose - @ConfigOption( - name = "Pane Padding", - desc = "Change the padding around the Itemlist" - ) - @ConfigEditorSlider( - minValue = 0f, - maxValue = 20f, - minStep = 1f - ) - public int panePadding = 10; - - @Expose - @ConfigOption( - name = "Foreground Colour", - desc = "Change the colour of foreground elements in the Itemlist" - ) - @ConfigEditorColour - public String foregroundColour = "00:255:100:100:100"; - - @Expose - @ConfigOption( - name = "Favourite Colour", - desc = "Change the colour of favourited elements in the Itemlist" - ) - @ConfigEditorColour - public String favouriteColour = "00:255:200:150:50"; - - @Expose - @ConfigOption( - name = "Pane Background Colour", - desc = "Change the colour of the Itemlist background" - ) - @ConfigEditorColour - public String backgroundColour = "15:6:0:0:255"; - } - - public static class Toolbar { - @Expose - @ConfigOption( - name = "Edit Toolbar Positions", - desc = "Edit the position of the QuickCommands / Search Bar" - ) - @ConfigEditorButton(runnableId = 6, buttonText = "Edit") - public boolean positionButton = true; - - @Expose - @ConfigOption( - name = "Show Quick Commands", - desc = "Show QuickCommands\u2122 in the NEU toolbar" - ) - @ConfigEditorBoolean - public boolean quickCommands = true; - - @Expose - @ConfigOption( - name = "Show Search Bar", - desc = "Show Itemlist search bar in the NEU toolbar" - ) - @ConfigEditorBoolean - public boolean searchBar = true; - - @Expose - @ConfigOption( - name = "Search Bar Width", - desc = "Change the width of the search bar" - ) - @ConfigEditorSlider( - minValue = 50f, - maxValue = 300f, - minStep = 10f - ) - public int searchBarWidth = 200; - - @Expose - @ConfigOption( - name = "Search Bar Height", - desc = "Change the height of the search bar" - ) - @ConfigEditorSlider( - minValue = 15f, - maxValue = 50f, - minStep = 1f - ) - public int searchBarHeight = 40; - - @Expose - @ConfigOption( - name = "Quick Commands Click Type", - desc = "Change the click type needed to trigger quick commands" - ) - @ConfigEditorDropdown( - values = {"Mouse Up", "Mouse Down"} - ) - public int quickCommandsClickType = 0; - } - - public static class InventoryButtons { - @Expose - @ConfigOption( - name = "Open Button Editor", - desc = "Open button editor GUI (/neubuttons)" - ) - @ConfigEditorButton(runnableId = 7, buttonText = "Open") - public boolean openEditorButton = true; - - @Expose - @ConfigOption( - name = "Always Hide \"Crafting\" Text", - desc = "Hide crafting text in inventory, even when no button is there" - ) - @ConfigEditorBoolean - public boolean hideCrafting = false; - - @Expose - @ConfigOption( - name = "Button Click Type", - desc = "Change the click type needed to trigger commands" - ) - @ConfigEditorDropdown( - values = {"Mouse Down", "Mouse Up"} - ) - public int clickType = 0; - } - - public static class SlotLocking { - @Expose - @ConfigOption( - name = "Enable Slot Locking", - desc = "Allows you to lock slots and create slot bindings" - ) - @ConfigEditorBoolean - public boolean enableSlotLocking = false; - - @Expose - @ConfigOption( - name = "Enable Slot Binding", - desc = "Allows you to create slot bindings\nNote: \"Enable Slot Locking\" must be on" - ) - @ConfigEditorBoolean - public boolean enableSlotBinding = true; - - @Expose - @ConfigOption( - name = "Don't Drop Bound Slots", - desc = "Slot bindings also act as locked slots (prevents dropping / moving in inventory)" - ) - @ConfigEditorBoolean - public boolean bindingAlsoLocks = false; - - @Expose - @ConfigOption( - name = "Slot Lock Key", - desc = "Click this key to LOCK a slot\n" + - "Hold this key and drag to BIND a slot" - ) - @ConfigEditorKeybind(defaultKey = Keyboard.KEY_L) - public int slotLockKey = Keyboard.KEY_L; - - @Expose - @ConfigOption( - name = "Lock Slots in Trade", - desc = "Prevents trading locked items in the custom trade windows" - ) - @ConfigEditorBoolean - public boolean lockSlotsInTrade = true; - - @Expose - @ConfigOption( - name = "Slot Lock Sound", - desc = "Play a ding when locking/unlocking slots" - ) - @ConfigEditorBoolean - public boolean slotLockSound = true; - - @Expose - @ConfigOption( - name = "Slot Lock Sound Vol.", - desc = "Set the volume of the ding sound" - ) - @ConfigEditorSlider( - minValue = 0, - maxValue = 100, - minStep = 1 - ) - public float slotLockSoundVol = 20; - } - - public static class TooltipTweaks { - @ConfigOption( - name = "Tooltip Price Information", - desc = "" - ) - @ConfigEditorAccordion(id = 0) - public boolean priceInfoAccordion = false; - - @Expose - @ConfigOption( - name = "Price Info (Auc)", - desc = "\u00a7rSelect what price information you would like to see on auctionable item tooltips\n" + - "\u00a7eDrag text to rearrange" - ) - @ConfigEditorDraggableList( - exampleText = {"\u00a7eLowest BIN", - "\u00a7eAH Price", - "\u00a7eAH Sales", - "\u00a7eRaw Craft Cost", - "\u00a7eAVG Lowest BIN", - "\u00a7eDungeon Costs"} - ) - @ConfigAccordionId(id = 0) - public List<Integer> priceInfoAuc = new ArrayList<>(Arrays.asList(0, 1, 2, 3, 5)); - - @Expose - @ConfigOption( - name = "Price Info (Baz)", - desc = "\u00a7rSelect what price information you would like to see on bazaar item tooltips\n" + - "\u00a7eDrag text to rearrange" - ) - @ConfigEditorDraggableList( - exampleText = {"\u00a7eBuy", "\u00a7eSell", "\u00a7eBuy (Insta)", "\u00a7eSell (Insta)", "\u00a7eRaw Craft Cost"} - ) - @ConfigAccordionId(id = 0) - public List<Integer> priceInfoBaz = new ArrayList<>(Arrays.asList(0, 1, 2, 3, 4)); - - @Expose - @ConfigOption( - name = "Price Info (Inv)", - desc = "Show price information for items in your inventory" - ) - @ConfigEditorBoolean - public boolean showPriceInfoInvItem = true; - - @Expose - @ConfigOption( - name = "Price Info (AH)", - desc = "Show price information for auctioned items" - ) - @ConfigEditorBoolean - public boolean showPriceInfoAucItem = true; - - @Expose - @ConfigOption( - name = "Missing Enchant List", - desc = "Show which enchants are missing on an item when pressing LSHIFT" - ) - @ConfigEditorBoolean - public boolean missingEnchantList = true; - - @Expose - @ConfigOption( - name = "Tooltip Border Colours", - desc = "Make the borders of tooltips match the rarity of the item (NEU Tooltips Only)" - ) - @ConfigEditorBoolean - public boolean tooltipBorderColours = true; - - @Expose - @ConfigOption( - name = "Tooltip Border Opacity", - desc = "Change the opacity of the rarity highlight (NEU Tooltips Only)" - ) - @ConfigEditorSlider( - minValue = 0f, - maxValue = 255f, - minStep = 1f - ) - public int tooltipBorderOpacity = 200; - } - - public static class ItemOverlays { - @ConfigOption( - name = "Treecapitator Overlay", - desc = "" - ) - @ConfigEditorAccordion(id = 0) - public boolean treecapAccordion = false; - - @Expose - @ConfigOption( - name = "Enable Treecap Overlay", - desc = "Show which blocks will be broken when using a Jungle Axe or Treecapitator" - ) - @ConfigEditorBoolean - @ConfigAccordionId(id = 0) - public boolean enableTreecapOverlay = true; - - @Expose - @ConfigOption( - name = "Overlay Colour", - desc = "Change the colour of the overlay" - ) - @ConfigEditorColour - @ConfigAccordionId(id = 0) - public String treecapOverlayColour = "00:50:64:224:208"; - - @Expose - @ConfigOption( - name = "Enable Monkey Pet Check", - desc = "Will check use the API to check what pet you're using\nto determine the cooldown based off of if you have monkey pet." - ) - @ConfigEditorBoolean - @ConfigAccordionId(id = 0) - public boolean enableMonkeyCheck = true; - - @ConfigOption( - name = "Builder's Wand Overlay", - desc = "" - ) - @ConfigEditorAccordion(id = 1) - public boolean wandAccordion = false; - - @Expose - @ConfigOption( - name = "Enable Wand Overlay", - desc = "Show which blocks will be placed when using the Builder's Wand" - ) - @ConfigEditorBoolean - @ConfigAccordionId(id = 1) - public boolean enableWandOverlay = true; - - @Expose - @ConfigOption( - name = "Wand Block Count", - desc = "Shows the total count of a block in your inventory" - ) - @ConfigEditorBoolean - @ConfigAccordionId(id = 1) - public boolean wandBlockCount = true; - - @Expose - @ConfigOption( - name = "Overlay Colour", - desc = "Change the colour of the ghost block outline" - ) - @ConfigEditorColour - @ConfigAccordionId(id = 1) - public String wandOverlayColour = "00:50:64:224:208"; - - @ConfigOption( - name = "Block Zapper Overlay", - desc = "" - ) - @ConfigEditorAccordion(id = 6) - public boolean zapperAccordion = false; - - @Expose - @ConfigOption( - name = "Enable Zapper Overlay", - desc = "Show which blocks will be destroyed when using the Block Zapper" - ) - @ConfigEditorBoolean - @ConfigAccordionId(id = 6) - public boolean enableZapperOverlay = true; - - @Expose - @ConfigOption( - name = "Overlay Colour", - desc = "Change the colour of the ghost block outline" - ) - @ConfigEditorColour - @ConfigAccordionId(id = 6) - public String zapperOverlayColour = "0:102:171:5:0"; - - @ConfigOption( - name = "Smooth AOTE", - desc = "" - ) - @ConfigEditorAccordion(id = 2) - public boolean aoteAccordion = false; - - @Expose - @ConfigOption( - name = "Enable Smooth AOTE", - desc = "Teleport smoothly to your destination when using AOTE" - ) - @ConfigEditorBoolean - @ConfigAccordionId(id = 2) - public boolean enableSmoothAOTE = true; - - @Expose - @ConfigOption( - name = "Enable Smooth Hyperion", - desc = "Teleport smoothly to your destination when using Hyperion" - ) - @ConfigEditorBoolean - @ConfigAccordionId(id = 2) - public boolean enableSmoothHyperion = true; - - @Expose - @ConfigOption( - name = "Smooth TP Time", - desc = "Change the amount of time (milliseconds) taken to teleport" - ) - @ConfigEditorSlider( - minValue = 0, - maxValue = 500, - minStep = 25 - ) - @ConfigAccordionId(id = 2) - public int smoothTpMillis = 175; - - @Expose - @ConfigOption( - name = "Disable Hyperion Particles", - desc = "Remove the explosion effect when using a hyperion" - ) - @ConfigEditorBoolean - @ConfigAccordionId(id = 2) - public boolean disableHyperionParticles = true; - - @ConfigOption( - name = "Bonemerang Overlay", - desc = "" - ) - @ConfigEditorAccordion(id = 3) - public boolean bonemerangAccordion = false; - - @Expose - @ConfigOption( - name = "Highlight Targeted Entities", - desc = "Highlight entities that will be hit by your bonemerang" - ) - @ConfigEditorBoolean - @ConfigAccordionId(id = 3) - public boolean highlightTargeted = true; - - @Expose - @ConfigOption( - name = "Break Warning", - desc = "Show a warning below your crosshair if the bonemerang will break on a block" - ) - @ConfigEditorBoolean - @ConfigAccordionId(id = 3) - public boolean showBreak = true; - - @ConfigOption( - name = "Minion Crystal Radius Overlay", - desc = "" - ) - @ConfigEditorAccordion(id = 5) - public boolean crystalAccordion = false; - - @Expose - @ConfigOption( - name = "Enable Crystal Overlay", - desc = "Show a block overlay for the effective radius of minion crystals (farming, mining, etc)" - ) - @ConfigEditorBoolean - @ConfigAccordionId(id = 5) - public boolean enableCrystalOverlay = true; - - @Expose - @ConfigOption( - name = "Always Show Crystal Overlay", - desc = "Show the crystal overlay, even when a minion crystal is not being held" - ) - @ConfigEditorBoolean - @ConfigAccordionId(id = 5) - public boolean alwaysShowCrystal = false; - } - - public static class SkillOverlays { - @Expose - @ConfigOption( - name = "Enable Farming Overlay", - desc = "Show an overlay while farming with useful information" - ) - @ConfigEditorBoolean - public boolean farmingOverlay = true; - - @Expose - @ConfigOption( - name = "Farming Text", - desc = "\u00a7eDrag text to change the appearance of the overlay\n" + - "\u00a7rHold a mathematical hoe or use an axe while gaining farming xp to show the overlay" - ) - @ConfigEditorDraggableList( - exampleText = {"\u00a7bCounter: \u00a7e37,547,860", - "\u00a7bCrops/m: \u00a7e38.29", - "\u00a7bFarm: \u00a7e12\u00a77 [\u00a7e|||||||||||||||||\u00a78||||||||\u00a77] \u00a7e67%", - "\u00a7bCurrent XP: \u00a7e6,734", - "\u00a7bRemaining XP: \u00a7e3,265", - "\u00a7bXP/h: \u00a7e238,129", - "\u00a7bYaw: \u00a7e68.25\u00a7l\u1D52", - "\u00a7bETA: 13h12m"} - ) - public List<Integer> farmingText = new ArrayList<>(Arrays.asList(0, 1, 2, 3, 4, 5, 7, 6)); - - @Expose - @ConfigOption( - name = "Farming Position", - desc = "Change the position of the Farming overlay" - ) - @ConfigEditorButton( - runnableId = 3, - buttonText = "Edit" - ) - public Position farmingPosition = new Position(10, 200); - - @Expose - @ConfigOption( - name = "Farming Style", - desc = "Change the style of the Farming overlay" - ) - @ConfigEditorDropdown( - values = {"Background", "No Shadow", "Shadow", "Full Shadow"} - ) - public int farmingStyle = 0; - } - - public static class Dungeons { - @ConfigOption( - name = "Dungeon Map", - desc = "" - ) - @ConfigEditorAccordion(id = 0) - public boolean dungeonMapAccordion = false; - - @Expose - @ConfigOption( - name = "Edit Dungeon Map", - desc = "The NEU dungeon map has it's own editor (/neumap).\n" + - "Click the button on the left to open it" - ) - @ConfigEditorButton( - runnableId = 0, - buttonText = "Edit" - ) - @ConfigAccordionId(id = 0) - public int editDungeonMap = 0; - - @Expose - @ConfigOption( - name = "Show Own Head As Marker", - desc = "If you have the \"Head\" icon style selected, don't replace your green marker with a head" - ) - @ConfigEditorBoolean - @ConfigAccordionId(id = 0) - public boolean showOwnHeadAsMarker = false; - - @ConfigOption( - name = "Dungeon Profit", - desc = "" - ) - @ConfigEditorAccordion(id = 1) - public boolean dungeonProfitAccordion = false; - - @Expose - @ConfigOption( - name = "Profit Type", - desc = "Set the price dataset used for calculating profit" - ) - @ConfigEditorDropdown( - values = {"Lowest BIN", "24 AVG Lowest Bin", "Auction AVG"} - ) - @ConfigAccordionId(id = 1) - public int profitType = 0; - - @Expose - @ConfigOption( - name = "Profit Display Location", - desc = "Set where the profit information is displayed\n" + - "Overlay = Overlay on right side of inventory\n" + - "GUI Title = Text displayed next to the inventory title\n" + - "Lore = Inside the \"Open Reward Chest\" item" - ) - @ConfigEditorDropdown( - values = {"Overlay", "GUI Title", "Lore", "Off"} - ) - @ConfigAccordionId(id = 1) - public int profitDisplayLoc = 0; - - - @ConfigOption( - name = "Dungeon Win Overlay", - desc = "" - ) - @ConfigEditorAccordion(id = 3) - public boolean dungeonWinAccordion = false; - - @Expose - @ConfigOption( - name = "Enable Dungeon Win", - desc = "Show a fancy win screen and stats when completing a dungeon" - ) - @ConfigEditorBoolean - @ConfigAccordionId(id = 3) - public boolean enableDungeonWin = true; - - @Expose - @ConfigOption( - name = "Dungeon Win Time", - desc = "Change the amount of time (milliseconds) that the win screen shows for" - ) - @ConfigEditorSlider( - minValue = 0, - maxValue = 20000, - minStep = 500 - ) - @ConfigAccordionId(id = 3) - public int dungeonWinMillis = 8000; - - @ConfigOption( - name = "Dungeon Block Overlay", - desc = "" - ) - @ConfigEditorAccordion(id = 2) - public boolean dungeonBlocksAccordion = false; - - @Expose - @ConfigOption( - name = "Enable Block Overlay", - desc = "Change the colour of certain blocks / entities while inside dungeons, but keeps the normal texture outside of dungeons" - ) - @ConfigEditorBoolean - @ConfigAccordionId(id = 2) - public boolean enableDungBlockOverlay = true; - - @Expose - @ConfigOption( - name = "Show Overlay Everywhere", - desc = "Show the dungeon block overlay even when not inside dungeons. Should only be used for testing." - ) - @ConfigEditorBoolean - @ConfigAccordionId(id = 2) - public boolean dungeonBlocksEverywhere = false; - - @Expose - @ConfigOption( - name = "Slow Update", - desc = "Updates the colour every second instead of every tick.\n" + - "\u00A7cWARNING: This will cause all texture animations (eg. flowing water) to update slowly.\n" + - "This should only be used on low-end machines" - ) - @ConfigEditorBoolean - @ConfigAccordionId(id = 2) - public boolean slowDungeonBlocks = false; - - @Expose - @ConfigOption( - name = "Cracked Bricks", - desc = "Change the colour of: Cracked Bricks" - ) - @ConfigEditorColour - @ConfigAccordionId(id = 2) - public String dungCrackedColour = "0:255:7:255:217"; - - @Expose - @ConfigOption( - name = "Dispensers", - desc = "Change the colour of: Dispensers" - ) - @ConfigEditorColour - @ConfigAccordionId(id = 2) - public String dungDispenserColour = "0:255:255:76:0"; - - @Expose - @ConfigOption( - name = "Levers", - desc = "Change the colour of: Levers" - ) - @ConfigEditorColour - @ConfigAccordionId(id = 2) - public String dungLeverColour = "0:252:24:249:255"; - - @Expose - @ConfigOption( - name = "Tripwire String", - desc = "Change the colour of: Tripwire String" - ) - @ConfigEditorColour - @ConfigAccordionId(id = 2) - public String dungTripWireColour = "0:255:255:0:0"; - - @Expose - @ConfigOption( - name = "Normal Chests", - desc = "Change the colour of: Normal Chests" - ) - @ConfigEditorColour - @ConfigAccordionId(id = 2) - public String dungChestColour = "0:255:0:163:36"; - - @Expose - @ConfigOption( - name = "Trapped Chests", - desc = "Change the colour of: Trapped Chests" - ) - @ConfigEditorColour - @ConfigAccordionId(id = 2) - public String dungTrappedChestColour = "0:255:0:163:36"; - - @Expose - @ConfigOption( - name = "Bats", - desc = "Change the colour of: Bats" - ) - @ConfigEditorColour - @ConfigAccordionId(id = 2) - public String dungBatColour = "0:255:12:255:0"; - } - - public static class MiscOverlays { - @ConfigOption( - name = "Todo Overlay", - desc = "" - ) - @ConfigEditorAccordion(id = 0) - public boolean todoAccordion = true; - - @Expose - @ConfigOption( - name = "Enable Todo Overlay", - desc = "Show an overlay that reminds you to do important tasks" - ) - @ConfigEditorBoolean - @ConfigAccordionId(id = 0) - public boolean todoOverlay = false; - - @Expose - @ConfigOption( - name = "Todo Text", - desc = "\u00a7eDrag text to change the appearance of the overlay\n" + - "\u00a7rIf you want to see the time until something is available, click \"Add\" and then the respective timer" - ) - @ConfigEditorDraggableList( - exampleText = { - "\u00a73Cakes: \u00a7e1d21h", - "\u00a73Cookie Buff: \u00a7e2d23h", - "\u00a73Godpot: \u00a7e19h", - "\u00a73Puzzler: \u00a7e13h", - "\u00a73Fetchur: \u00a7e3h38m", - "\u00a73Commissions: \u00a7e3h38m", - "\u00a73Experiments: \u00a7e3h38m"} - ) - @ConfigAccordionId(id = 0) - public List<Integer> todoText = new ArrayList<>(Arrays.asList(0, 1, 2, 3, 4, 5, 6)); - - @ConfigOption( - name = "Show Only If Soon", - desc = "" - ) - @ConfigAccordionId(id = 0) - @ConfigEditorAccordion(id = 1) - public boolean TodoAccordion = false; - - @Expose - @ConfigOption( - name = "Experimentation Display", - desc = "Change the way the experimentation timer displays\n" + - "Only when ready, When very Soon, When soon, When kinda soon or always." - ) - @ConfigAccordionId(id =1) - @ConfigEditorDropdown( - values = {"Only when ready", "When very Soon", "When soon", "When Kinda Soon", "Always"} - ) - public int experimentationDisplay = 0; - - - @Expose - @ConfigOption( - name = "Puzzler Reset Display", - desc = "Change the way the puzzler reset timer displays\n" + - "Only when ready, When very Soon, When soon, When kinda soon or always." - ) - @ConfigAccordionId(id =1) - @ConfigEditorDropdown( - values = {"Only when ready", "When very Soon", "When soon", "When Kinda Soon", "Always"} - ) - public int puzzlerDisplay = 0; - - @Expose - @ConfigOption( - name = "Fetchur Reset Display", - desc = "Change the way the fetchur reset timer displays\n" + - "Only when ready, When very Soon, When soon, When kinda soon or always." - ) - @ConfigAccordionId(id =1) - @ConfigEditorDropdown( - values = {"Only when ready", "When very Soon", "When soon", "When Kinda Soon", "Always"} - ) - public int fetchurDisplay = 0; - - @Expose - @ConfigOption( - name = "Commission timer Display", - desc = "Change the way the Commission timer displays\n" + - "Only when ready, When very Soon, When soon, When kinda soon or always." - ) - @ConfigAccordionId(id =1) - @ConfigEditorDropdown( - values = {"Only when ready", "When very Soon", "When soon", "When Kinda Soon", "Always"} - ) - public int commissionDisplay = 0; - - @Expose - @ConfigOption( - name = "Cake Buff Display", - desc = "Change the way the cake buff timer displays\n" + - "Only when ready, When very Soon, When soon, When kinda soon or always." - ) - @ConfigAccordionId(id =1) - @ConfigEditorDropdown( - values = {"Only when ready", "When very Soon", "When soon", "When Kinda Soon", "Always"} - ) - public int cakesDisplay = 0; - - @Expose - @ConfigOption( - name = "Cookie Buff Display", - desc = "Change the way the cookie buff displays\n" + - "Only when ready, When very Soon, When soon, When kinda soon or always." - ) - @ConfigAccordionId(id =1) - @ConfigEditorDropdown( - values = {"Only when ready", "When very Soon", "When soon", "When Kinda Soon", "Always"} - ) - public int cookieBuffDisplay = 0; - - @Expose - @ConfigOption( - name = "God Pot Display", - desc = "Change the way the god pot displays\n" + - "Only when ready, When very Soon, When soon, When kinda soon or always." - ) - @ConfigAccordionId(id =1) - @ConfigEditorDropdown( - values = {"Only when ready", "When very Soon", "When soon", "When Kinda Soon", "Always"} - ) - public int godpotDisplay = 0; - - @ConfigOption( - name = "Colours", - desc = "" - ) - - @ConfigEditorAccordion(id = 2) - @ConfigAccordionId(id = 0) - public boolean TodoColourAccordion = false; - - @Expose - @ConfigOption( - name = "Ready colour", - desc = "Change the colour of when the timer is ready" - - ) - @ConfigEditorDropdown( - values = {"Black", "Dark Blue", "Dark Green", "Dark Aqua", "Dark Red", "Dark Purple", "Gold", "Gray", "Dark Gray", "Blue", "Green", "Aqua", "Red", "Light Purple", "Yellow", "White"} - ) - @ConfigEditorAccordion(id = 2) - public int readyColour = 0; - - @Expose - @ConfigOption( - name = "Gone colour", - desc = "Change the colour of when the timer is gone" - - ) - @ConfigEditorDropdown( - values = {"Black", "Dark Blue", "Dark Green", "Dark Aqua", "Dark Red", "Dark Purple", "Gold", "Gray", "Dark Gray", "Blue", "Green", "Aqua", "Red", "Light Purple", "Yellow", "White"} - ) - @ConfigEditorAccordion(id = 2) - public int goneColour = 0; - - @Expose - @ConfigOption( - name = "Very soon colour", - desc = "Change the colour of when the timer is almost ready/gone" - - ) - @ConfigEditorDropdown( - values = {"Black", "Dark Blue", "Dark Green", "Dark Aqua", "Dark Red", "Dark Purple", "Gold", "Gray", "Dark Gray", "Blue", "Green", "Aqua", "Red", "Light Purple", "Yellow", "White"} - ) - @ConfigEditorAccordion(id = 2) - public int verySoonColour = 0; - - @Expose - @ConfigOption( - name = "Soon Colour", - desc = "Change the colour of when the timer is soon ready/gone" - - ) - @ConfigEditorDropdown( - values = {"Black", "Dark Blue", "Dark Green", "Dark Aqua", "Dark Red", "Dark Purple", "Gold", "Gray", "Dark Gray", "Blue", "Green", "Aqua", "Red", "Light Purple", "Yellow", "White"} - ) - @ConfigEditorAccordion(id = 2) - public int soonColour = 0; - - @Expose - @ConfigOption( - name = "Kinda Soon Colour", - desc = "Change the colour of when the timer is kinda soon ready/gone" - - ) - @ConfigEditorDropdown( - values = {"Black", "Dark Blue", "Dark Green", "Dark Aqua", "Dark Red", "Dark Purple", "Gold", "Gray", "Dark Gray", "Blue", "Green", "Aqua", "Red", "Light Purple", "Yellow", "White"} - ) - @ConfigEditorAccordion(id = 2) - public int kindaSoonColour = 0; - - - @Expose - @ConfigOption( - name = "Default Colour", - desc = "Change the default colour of the timers" - - ) - - @ConfigEditorDropdown( - values = {"Black", "Dark Blue", "Dark Green", "Dark Aqua", "Dark Red", "Dark Purple", "Gold", "Gray", "Dark Gray", "Blue", "Green", "Aqua", "Red", "Light Purple", "Yellow", "White"} - ) - @ConfigEditorAccordion(id = 2) - public int defaultColour = 0; - - @Expose - @ConfigOption( - name = "Todo Position", - desc = "Change the position of the Todo overlay" - ) - @ConfigEditorButton( - runnableId = 5, - buttonText = "Edit" - ) - @ConfigAccordionId(id = 0) - public Position todoPosition = new Position(100, 0); - - - @Expose - @ConfigOption( - name = "Todo Style", - desc = "Change the style of the todo overlay" - ) - @ConfigEditorDropdown( - values = {"Background", "No Shadow", "Shadow", "Full Shadow"} - ) - @ConfigAccordionId(id = 0) - public int todoStyle = 0; - - @Expose - @ConfigOption( - name = "Todo Icons", - desc = "Add little item icons next to the lines in the todo overlay" - ) - @ConfigEditorBoolean - @ConfigAccordionId(id = 0) - public boolean todoIcons = true; - } - - public static class StorageGUI { - @ConfigOption( - name = "Storage Overlay", - desc = "" - ) - @ConfigEditorAccordion(id = 1) - public boolean storageOverlayAccordion = false; - - @Expose - @ConfigOption( - name = "Enable Storage GUI", - desc = "Show a custom storage overlay when accessing /storage." + - "Makes switching between pages much easier and also allows for searching through all storages" - ) - @ConfigEditorBoolean - @ConfigAccordionId(id = 1) - public boolean enableStorageGUI = false; - - @Expose - @ConfigOption( - name = "Storage Height", - desc = "Change the height of the storage preview section. Increasing this allows more storages to be seen at once" - ) - @ConfigEditorSlider( - minValue = 104, - maxValue = 312, - minStep = 26 - ) - @ConfigAccordionId(id = 1) - public int storageHeight = 208; - - @Expose - @ConfigOption( - name = "Storage Style", - desc = "Change the visual style of the overlay" - ) - @ConfigEditorDropdown( - values = {"Transparent", "Minecraft", "Dark", "Custom"} - ) - @ConfigAccordionId(id = 1) - public int displayStyle = 0; - - @Expose - @ConfigOption( - name = "Enderchest Preview", - desc = "Preview Enderchest pages when hovering over the selector on the left side" - ) - @ConfigEditorBoolean - @ConfigAccordionId(id = 1) - public boolean enderchestPreview = true; - - @Expose - @ConfigOption( - name = "Backpack Preview", - desc = "Preview Backpacks when hovering over the selector on the left side" - ) - @ConfigEditorBoolean - @ConfigAccordionId(id = 1) - public boolean backpackPreview = false; - - @Expose - @ConfigOption( - name = "Compact Vertically", - desc = "Remove the space between backpacks when there is a size discrepancy" - ) - @ConfigEditorBoolean - @ConfigAccordionId(id = 1) - public boolean masonryMode = false; - - @ConfigOption( - name = "Inventory Backpacks", - desc = "" - ) - @ConfigEditorAccordion(id = 0) - public boolean inventorySlotAccordion = false; - - @Expose - @ConfigOption( - name = "Inventory Backpacks", - desc = "Add a \"10th slot\" to your inventory which allows you to quickly access your backpacks" - ) - @ConfigEditorBoolean - @ConfigAccordionId(id = 0) - public boolean showInvBackpack = false; - - //public boolean showInvBackpack = false; - - @Expose - @ConfigOption( - name = "Backpack Side", - desc = "Set which side of the hotbar the backpack slot shows" - ) - @ConfigEditorDropdown( - values = {"Left", "Right"} - ) - @ConfigAccordionId(id = 0) - public int backpackHotbarSide = 0; - - @Expose - @ConfigOption( - name = "Backpack Peeking", - desc = "When the backpack is selected, show it's contents on your screen" - ) - @ConfigEditorBoolean - @ConfigAccordionId(id = 0) - public boolean showInvBackpackPreview = true; - - @Expose - @ConfigOption( - name = "Backpack Opacity%", - desc = "Change the opacity of the backpack preview background" - ) - @ConfigEditorSlider( - minValue = 0, - maxValue = 100, - minStep = 5 - ) - @ConfigAccordionId(id = 0) - public int backpackOpacity = 50; - - @Expose - @ConfigOption( - name = "Backpack Scroll Key", - desc = "Change the key which needs to be pressed in order to allow backpacks to be scrolled between" - ) - @ConfigEditorKeybind(defaultKey = Keyboard.KEY_LSHIFT) - @ConfigAccordionId(id = 0) - public int backpackScrollKey = Keyboard.KEY_LSHIFT; - - @Expose - @ConfigOption( - name = "Backpack Hotkey", - desc = "Hotkey to quickly switch to the backpack slot" - ) - @ConfigEditorKeybind(defaultKey = Keyboard.KEY_GRAVE) - @ConfigAccordionId(id = 0) - public int backpackHotkey = Keyboard.KEY_GRAVE; - - @Expose - @ConfigOption( - name = "Arrow Key Backpacks", - desc = "Use arrow keys [LEFT],[RIGHT] to move between backpacks and [DOWN] to navigate backpack even when the slot is not selected. Keys are customizable below" - ) - @ConfigEditorBoolean - @ConfigAccordionId(id = 0) - public boolean arrowKeyBackpacks = false; - - @ConfigOption( - name = "Arrow Key Backpack Keybinds", - desc = "" - ) - @ConfigEditorAccordion(id = 2) - @ConfigAccordionId(id = 0) - public boolean backpackArrowAccordion = false; - - @Expose - @ConfigOption( - name = "Backpack Left", - desc = "Select the backpack to the left" - ) - @ConfigEditorKeybind(defaultKey = Keyboard.KEY_LEFT) - @ConfigAccordionId(id = 2) - public int arrowLeftKey = Keyboard.KEY_LEFT; - - @Expose - @ConfigOption( - name = "Backpack Right", - desc = "Select the backpack to the right" - ) - @ConfigEditorKeybind(defaultKey = Keyboard.KEY_RIGHT) - @ConfigAccordionId(id = 2) - public int arrowRightKey = Keyboard.KEY_RIGHT; - - @Expose - @ConfigOption( - name = "Backpack Open", - desc = "Open the selected backpack" - ) - @ConfigEditorKeybind(defaultKey = Keyboard.KEY_DOWN) - @ConfigAccordionId(id = 2) - public int arrowDownKey = Keyboard.KEY_DOWN; - } - - public static class EnchSolvers { - @Expose - @ConfigOption( - name = "Enable Solvers", - desc = "Turn on solvers for the experimentation table" - ) - @ConfigEditorBoolean - public boolean enableEnchantingSolvers = true; - - /*@Expose - @ConfigOption( - name = "Prevent Misclicks", - desc = "Prevent accidentally failing the Chronomatron and Ultrasequencer experiments" - ) - @ConfigEditorBoolean - public boolean preventMisclicks = true;*/ - - @Expose - @ConfigOption( - name = "Hide Tooltips", - desc = "Hide the tooltip of items in the Chronomatron and Ultrasequencer experiments" - ) - @ConfigEditorBoolean - public boolean hideTooltips = true; - - @Expose - @ConfigOption( - name = "Ultrasequencer Numbers", - desc = "Replace the items in the supersequencer with only numbers" - ) - @ConfigEditorBoolean - public boolean seqNumbers = false; - - @Expose - @ConfigOption( - name = "Ultrasequencer Next", - desc = "Set the colour of the glass pane shown behind the element in the ultrasequencer which is next" - ) - @ConfigEditorDropdown( - values = {"None", "White", "Orange", "Light Purple", "Light Blue", "Yellow", "Light Green", "Pink", - "Gray", "Light Gray", "Cyan", "Dark Purple", "Dark Blue", "Brown", "Dark Green", "Red", "Black"} - ) - public int seqNext = 6; - - @Expose - @ConfigOption( - name = "Ultrasequencer Upcoming", - desc = "Set the colour of the glass pane shown behind the element in the ultrasequencer which is coming after \"next\"" - ) - @ConfigEditorDropdown( - values = {"None", "White", "Orange", "Light Purple", "Light Blue", "Yellow", "Light Green", "Pink", - "Gray", "Light Gray", "Cyan", "Dark Purple", "Dark Blue", "Brown", "Dark Green", "Red", "Black"} - ) - public int seqUpcoming = 5; - - @Expose - @ConfigOption( - name = "Superpairs Matched", - desc = "Set the colour of the glass pane shown behind successfully matched pairs" - ) - @ConfigEditorDropdown( - values = {"None", "White", "Orange", "Light Purple", "Light Blue", "Yellow", "Light Green", "Pink", - "Gray", "Light Gray", "Cyan", "Dark Purple", "Dark Blue", "Brown", "Dark Green", "Red", "Black"} - ) - public int supMatched = 6; - - @Expose - @ConfigOption( - name = "Superpairs Possible", - desc = "Set the colour of the glass pane shown behind pairs which can be matched, but have not yet" - ) - @ConfigEditorDropdown( - values = {"None", "White", "Orange", "Light Purple", "Light Blue", "Yellow", "Light Green", "Pink", - "Gray", "Light Gray", "Cyan", "Dark Purple", "Dark Blue", "Brown", "Dark Green", "Red", "Black"} - ) - public int supPossible = 2; - - @Expose - @ConfigOption( - name = "Superpairs Unmatched", - desc = "Set the colour of the glass pane shown behind pairs which have been previously uncovered" - ) - @ConfigEditorDropdown( - values = {"None", "White", "Orange", "Light Purple", "Light Blue", "Yellow", "Light Green", "Pink", - "Gray", "Light Gray", "Cyan", "Dark Purple", "Dark Blue", "Brown", "Dark Green", "Red", "Black"} - ) - public int supUnmatched = 5; - - @Expose - @ConfigOption( - name = "Superpairs Powerups", - desc = "Set the colour of the glass pane shown behind powerups" - ) - @ConfigEditorDropdown( - values = {"None", "White", "Orange", "Light Purple", "Light Blue", "Yellow", "Light Green", "Pink", - "Gray", "Light Gray", "Cyan", "Dark Purple", "Dark Blue", "Brown", "Dark Green", "Red", "Black"} - ) - public int supPower = 11; - } - - public static class Mining { - @ConfigOption( - name = "Waypoints", - desc = "" - ) - @ConfigEditorAccordion(id = 0) - public boolean waypointsAccordion = false; - - @Expose - @ConfigOption( - name = "Mines Waypoints", - desc = "Show waypoints in the Dwarven mines to the various locations\n" + - "Use \"Commissions Only\" to only show active commission locations" - ) - @ConfigEditorDropdown( - values = {"Hide", "Commissions Only", "Always"}, - initialIndex = 1 - ) - @ConfigAccordionId(id = 0) - public int locWaypoints = 1; - - @Expose - @ConfigOption( - name = "Emissary Waypoints", - desc = "Show waypoints in the Dwarven mines to emissaries\n" + - "Use \"Commission End\" to only show after finishing commissions" - ) - @ConfigEditorDropdown( - values = {"Hide", "Commission End", "Always"}, - initialIndex = 1 - ) - @ConfigAccordionId(id = 0) - public int emissaryWaypoints = 1; - - @ConfigOption( - name = "Drill Fuel Bar", - desc = "" - ) - @ConfigEditorAccordion(id = 1) - public boolean drillAccordion = false; - - @Expose - @ConfigOption( - name = "Drill Fuel Bar", - desc = "Show a fancy drill fuel bar when holding a drill in mining areas" - ) - @ConfigEditorBoolean - @ConfigAccordionId(id = 1) - public boolean drillFuelBar = true; - - @Expose - @ConfigOption( - name = "Fuel Bar Width", - desc = "Change the width of the drill fuel bar" - ) - @ConfigEditorSlider( - minValue = 50, - maxValue = 400, - minStep = 10 - ) - @ConfigAccordionId(id = 1) - public int drillFuelBarWidth = 200; - - @Expose - @ConfigOption( - name = "Fuel Bar Position", - desc = "Set the position of the drill fuel bar" - ) - @ConfigEditorButton( - runnableId = 2, - buttonText = "Edit" - ) - @ConfigAccordionId(id = 1) - public Position drillFuelBarPosition = new Position(0, -100, true, false); - - @ConfigOption( - name = "Dwarven Overlay", - desc = "" - ) - @ConfigEditorAccordion(id = 2) - public boolean overlayAccordion = false; - - @Expose - @ConfigOption( - name = "Dwarven Overlay", - desc = "Show an overlay with useful information on the screen while in Dwarven Mines" - ) - @ConfigEditorBoolean - @ConfigAccordionId(id = 2) - public boolean dwarvenOverlay = true; - - @Expose - @ConfigOption( - name = "Dwarven Text", - desc = "\u00a7eDrag text to change the appearance of the overlay\n" + - "\u00a7rGo to the Dwarven Mines to show this overlay with useful information" - ) - @ConfigEditorDraggableList( - exampleText = {"\u00a73Goblin Slayer: \u00a7626.5%\n\u00a73Lucky Raffle: \u00a7c0.0%", - "\u00a73Mithril Powder: \u00a726,243", - "\u00a73Forge 1) \u00a79Diamonite\u00a77: \u00a7aReady!", - "\u00a73Forge 2) \u00a77EMPTY\n\u00a73Forge 3) \u00a77EMPTY\n\u00a73Forge 4) \u00a77EMPTY", - "\u00a73Pickaxe CD: \u00a7a78s"} - ) - @ConfigAccordionId(id = 2) - public List<Integer> dwarvenText = new ArrayList<>(Arrays.asList(0, 1, 4, 2, 3)); - - @Expose - @ConfigOption( - name = "Overlay Position", - desc = "Change the position of the Dwarven Mines information overlay (commisions, powder & forge statuses)" - ) - @ConfigEditorButton( - runnableId = 1, - buttonText = "Edit" - ) - @ConfigAccordionId(id = 2) - public Position overlayPosition = new Position(10, 100); - - @Expose - @ConfigOption( - name = "Overlay Style", - desc = "Change the style of the Dwarven Mines information overlay" - ) - @ConfigEditorDropdown( - values = {"Background", "No Shadow", "Shadow", "Full Shadow"} - ) - @ConfigAccordionId(id = 2) - public int overlayStyle = 0; - - @Expose - @ConfigOption( - name = "Puzzler Solver", - desc = "Show the correct block to mine for the puzzler puzzle in Dwarven Mines" - ) - @ConfigEditorBoolean - public boolean puzzlerSolver = true; - - @Expose - @ConfigOption( - name = "Titanium Alert", - desc = "Show an alert whenever titanium appears nearby" - ) - @ConfigEditorBoolean - public boolean titaniumAlert = true; - - - @Expose - @ConfigOption( - name = "Dwarven Mines Textures", - desc = "Allows texture packs to retexture blocks in the Dwarven Mines. If you don't have a texturepack that does this, you should leave this off" - ) - @ConfigEditorBoolean - public boolean dwarvenTextures = false; - - /*@Expose - @ConfigOption( - name = "Don't Mine Stone", - desc = "Prevent mining stone blocks in mining areas" - ) - @ConfigEditorBoolean - public boolean dontMineStone = true; - - @Expose - @ConfigOption( - name = "Reveal Mist Creepers", - desc = "Make the creepers in the Dwarven Mines mist visible" - ) - @ConfigEditorBoolean - public boolean revealMistCreepers = true;*/ - } - - public static class Fishing { - @Expose - @ConfigOption( - name = "Hide Other Players Fishing", - desc = "Convenience option to easily hide \u00a7lother players'\u00a7r bobbers, rod lines and fishing particles\n" + - "The advanced options below allow you to set the precise colour, particles, etc." - ) - @ConfigEditorBoolean - public boolean hideOtherPlayerAll = false; - - @ConfigOption( - name = "Incoming Fish Warning", - desc = "" - ) - @ConfigEditorAccordion(id = 3) - public boolean incomingFishAccordion = false; - - @Expose - @ConfigOption( - name = "Incoming Fish Warning", - desc = "Display a yellow '!' when a fish is incoming and a red '!' when you need to pull the fish up. " + - "The red '!' also takes your ping into account" - ) - @ConfigEditorBoolean - @ConfigAccordionId(id = 3) - public boolean incomingFishWarning = true; - - @Expose - @ConfigOption( - name = "Hooked Sound", - desc = "Play a high-pitched ding sound when the '!' turns red" - ) - @ConfigEditorBoolean - @ConfigAccordionId(id = 3) - public boolean incomingFishHookedSounds = true; - - @Expose - @ConfigOption( - name = "Approach Sound", - desc = "Play low-pitched ding sounds while the yellow '!' is visible" - ) - @ConfigEditorBoolean - @ConfigAccordionId(id = 3) - public boolean incomingFishIncSounds = false; - - @ConfigOption( - name = "Volumes", - desc = "" - ) - @ConfigAccordionId(id = 3) - @ConfigEditorAccordion(id = 5) - public boolean incomingFishVolumeAccordion = false; - - @Expose - @ConfigOption( - name = "Hooked Sound Vol.", - desc = "Set the volume of the hooked sound" - ) - @ConfigEditorSlider( - minValue = 0, - maxValue = 100, - minStep = 1 - ) - @ConfigAccordionId(id = 5) - public float incomingFishHookedSoundsVol = 25; - - @Expose - @ConfigOption( - name = "Approach Sound Vol.", - desc = "Set the volume of the approaching sound" - ) - @ConfigEditorSlider( - minValue = 0, - maxValue = 100, - minStep = 1 - ) - @ConfigAccordionId(id = 5) - public float incomingFishIncSoundsVol = 10; - - @ConfigOption( - name = "Fishing Particles", - desc = "" - ) - @ConfigEditorAccordion(id = 0) - public boolean particleAccordion = false; - - @Expose - @ConfigOption( - name = "Enable Custom Particles", - desc = "Allow you to modify the particles that appear when a fish is incoming for you and other players" - ) - @ConfigEditorBoolean - @ConfigAccordionId(id = 0) - public boolean enableCustomParticles = false; - - @ConfigOption( - name = "Your Particles", - desc = "" - ) - @ConfigEditorAccordion(id = 1) - @ConfigAccordionId(id = 0) - public boolean yourParticlesAccordion = false; - - @Expose - @ConfigOption( - name = "Particle Type", - desc = "Change the type of the particle that is spawned\n" + - "Particle types with (RGB) support custom colours\n" + - "Set to 'NONE' to disable particles" - ) - @ConfigEditorDropdown( - values = {"Default", "None", "Spark (RGB)", "Swirl (RGB)", "Dust (RGB)", "Flame", "Crit", "Magic Crit"} - ) - @ConfigAccordionId(id = 1) - public int yourParticleType = 0; - - @Expose - @ConfigOption( - name = "Custom Colour", - desc = "Set a custom colour for the particle\n" + - "Only works for particle types with (RGB)" - ) - @ConfigEditorColour - @ConfigAccordionId(id = 1) - public String yourParticleColour = "0:255:255:255:255"; - - @ConfigOption( - name = "Other Players' Particles", - desc = "" - ) - @ConfigEditorAccordion(id = 2) - @ConfigAccordionId(id = 0) - public boolean otherParticlesAccordion = false; - - @Expose - @ConfigOption( - name = "Particle Type", - desc = "Change the type of the particle that is spawned\n" + - "Particle types with (RGB) support custom colours\n" + - "Set to 'NONE' to disable particles" - ) - @ConfigEditorDropdown( - values = {"Default", "None", "Spark (RGB)", "Swirl (RGB)", "Dust (RGB)", "Flame", "Crit", "Magic Crit"} - ) - @ConfigAccordionId(id = 2) - public int otherParticleType = 0; - - @Expose - @ConfigOption( - name = "Custom Colour", - desc = "Set a custom colour for the particle\n" + - "Only works for particle types with (RGB)" - ) - @ConfigEditorColour - @ConfigAccordionId(id = 2) - public String otherParticleColour = "0:255:255:255:255"; - - @ConfigOption( - name = "Rod Line Colours", - desc = "" - ) - @ConfigEditorAccordion(id = 4) - public boolean rodAccordion = false; - - @Expose - @ConfigOption( - name = "Enable Rod Line Colours", - desc = "Change the colour of your and other players' rod lines\n" + - "Also fixes the position of the rod line" - ) - @ConfigEditorBoolean - @ConfigAccordionId(id = 4) - public boolean enableRodColours = true; - - @Expose - @ConfigOption( - name = "Own Rod Colour", - desc = "Change the colour of your own rod lines\n" + - "You can set the opacity to '0' to HIDE" - ) - @ConfigEditorColour - @ConfigAccordionId(id = 4) - public String ownRodColour = "0:255:0:0:0"; - - @Expose - @ConfigOption( - name = "Other Rod Colour", - desc = "Change the colour of other players' rod lines\n" + - "You can set the opacity to '0' to HIDE" - ) - @ConfigEditorColour - @ConfigAccordionId(id = 4) - public String otherRodColour = "0:255:0:0:0"; - } - - public static class NeuAuctionHouse { - @Expose - @ConfigOption( - name = "Enable NeuAH", - desc = "Turn on the NEU Auction House. \u00A7cWARNING: May negatively impact performance on low-end machines" - ) - @ConfigEditorBoolean - public boolean enableNeuAuctionHouse = false; - - @Expose - @ConfigOption( - name = "Disable AH Scroll", - desc = "Disable scrolling using the scroll wheel inside NeuAH.\n" + - "This should be used if you want to be able to scroll through tooltips" - ) - @ConfigEditorBoolean - public boolean disableAhScroll = false; - - @Expose - @ConfigOption( - name = "AH Notification (Mins)", - desc = "Change the amount of time (in minutes) before the \"Ending Soon\" notification for an auction you have bid on" - ) - @ConfigEditorSlider( - minValue = 1f, - maxValue = 10f, - minStep = 1f - ) - public int ahNotification = 5; - - @Expose - @ConfigOption( - name = "Price Filtering in NEU AH", - desc = "The ability to filter the price of items and their respective average BIN values" - ) - @ConfigEditorBoolean - public boolean priceFiltering = false; - } - - public static class ImprovedSBMenu { - @Expose - @ConfigOption( - name = "Enable Improved SB Menus", - desc = "Change the way that skyblock menus (eg. /sbmenu) look" - ) - @ConfigEditorBoolean - public boolean enableSbMenus = true; - - @Expose - @ConfigOption( - name = "Menu Background Style", - desc = "Change the style of the background of skyblock menus" - ) - @ConfigEditorDropdown( - values = {"Dark 1", "Dark 2", "Transparent", "Light 1", "Light 2", "Light 3", - "Unused 1", "Unused 2", "Unused 3", "Unused 4"} - ) - public int backgroundStyle = 0; - - @Expose - @ConfigOption( - name = "Button Background Style", - desc = "Change the style of the foreground elements in skyblock menus" - ) - @ConfigEditorDropdown( - values = {"Dark 1", "Dark 2", "Transparent", "Light 1", "Light 2", "Light 3", - "Unused 1", "Unused 2", "Unused 3", "Unused 4"} - ) - public int buttonStyle = 0; - - @Expose - @ConfigOption( - name = "Hide Empty Tooltips", - desc = "Hide the tooltips of glass panes with no text" - ) - @ConfigEditorBoolean - public boolean hideEmptyPanes = true; - } - - public static class Calendar { - @Expose - @ConfigOption( - name = "Event Notifications", - desc = "Display notifications for skyblock calendar events" - ) - @ConfigEditorBoolean - public boolean eventNotifications = true; - - @Expose - @ConfigOption( - name = "Starting Soon Time", - desc = "Display a notification before events start, time in seconds.\n" + - "0 = No prior notification" - ) - @ConfigEditorSlider( - minValue = 0f, - maxValue = 600f, - minStep = 30f - ) - public int startingSoonTime = 300; - - @Expose - @ConfigOption( - name = "Timer In Inventory", - desc = "Displays the time until the next event at the top of your screen when in inventories" - ) - @ConfigEditorBoolean - public boolean showEventTimerInInventory = true; - - @Expose - @ConfigOption( - name = "Notification Sounds", - desc = "Play a sound whenever events start" - ) - @ConfigEditorBoolean - public boolean eventNotificationSounds = true; - - @Expose - @ConfigOption( - name = "Spooky Night Notification", - desc = "Send a notification during spooky event when the time reaches 7pm" - ) - @ConfigEditorBoolean - public boolean spookyNightNotification = true; - } - - public static class TradeMenu { - @Expose - @ConfigOption( - name = "Enable Custom Trade Menu", - desc = "When trading with other players in skyblock, display a special GUI designed to prevent scamming" - ) - @ConfigEditorBoolean - public boolean enableCustomTrade = true; - - - @Expose - @ConfigOption( - name = "Price Information", - desc = "Show the price of items in the trade window on both sides" - ) - @ConfigEditorBoolean - public boolean customTradePrices = true; - - @Expose - public boolean customTradePriceStyle = true; - } - - public static class PetOverlay { - @Expose - @ConfigOption( - name = "Enable Pet Info Overlay", - desc = "Shows current active pet and pet exp on screen." - ) - @ConfigEditorBoolean - public boolean enablePetInfo = false; - - @Expose - @ConfigOption( - name = "Pet Info Position", - desc = "The position of the pet info." - ) - @ConfigEditorButton( - runnableId = 4, - buttonText = "Edit" - ) - public Position petInfoPosition = new Position(-1, -1); - - @Expose - @ConfigOption( - name = "Pet Overlay Text", - desc = "\u00a7eDrag text to change the appearance of the overlay\n" + - "\u00a7rEquip a pet to show the overlay" - ) - @ConfigEditorDraggableList( - exampleText = {"\u00a7a[Lvl 37] \u00a7fRock", - "\u00a7b2,312.9/2,700\u00a7e (85.7%)", - "\u00a7b2.3k/2.7k\u00a7e (85.7%)", - "\u00a7bXP/h: \u00a7e27,209", - "\u00a7bTotal XP: \u00a7e30,597.9", - "\u00a7bHeld Item: \u00a7fMining Exp Boost", - "\u00a7bUntil L38: \u00a7e5m13s", - "\u00a7bUntil L100: \u00a7e2d13h"} - ) - public List<Integer> petOverlayText = new ArrayList<>(Arrays.asList(0, 2, 3, 6, 4)); - - @Expose - @ConfigOption( - name = "Pet Overlay Icon", - desc = "Show the icon of the pet you have equiped in the overlay" - ) - @ConfigEditorBoolean - public boolean petOverlayIcon = true; - - @Expose - @ConfigOption( - name = "Pet Info Overlay Style", - desc = "Change the style of the Pet Info overlay" - ) - @ConfigEditorDropdown( - values = {"Background", "No Shadow", "Shadow Only", "Full Shadow"} - ) - public int petInfoOverlayStyle = 0; - - @Expose - @ConfigOption( - name = "Show Last Pet", - desc = "Show 2 pets on the overlay\nUseful if training two pets at once with autopet" - ) - @ConfigEditorBoolean - public boolean dualPets = false; - } - - public static class AuctionHouseSearch { - @Expose - @ConfigOption( - name = "Enable Search GUI", - desc = "Use the advanced search GUI with autocomplete and history instead of the normal sign GUI\n\u00a7eStar Selection Texture: Johnny#4567" - ) - @ConfigEditorBoolean - public boolean enableSearchOverlay = true; - - @Expose - @ConfigOption( - name = "Keep Previous Search", - desc = "Don't clear the search bar after closing the GUI" - ) - @ConfigEditorBoolean - public boolean keepPreviousSearch = false; - - @Expose - @ConfigOption( - name = "Past Searches", - desc = "Show past searches below the autocomplete box" - ) - @ConfigEditorBoolean - public boolean showPastSearches = true; - - @Expose - @ConfigOption( - name = "ESC to Full Close", - desc = "Make pressing ESCAPE close the search GUI without opening up the AH again\n" + - "ENTER can still be used to search" - ) - @ConfigEditorBoolean - public boolean escFullClose = true; - } - - public static class AccessoryBag { - @Expose - @ConfigOption( - name = "Enable Accessory Bag Overlay", - desc = "Show an overlay on the accessory bag screen which gives useful information about your accessories" - ) - @ConfigEditorBoolean - public boolean enableOverlay = true; - } - - public static class ApiKey { - @Expose - @ConfigOption( - name = "Api Key", - desc = "Hypixel api key" - ) - @ConfigEditorText - public String apiKey = ""; - } - - private static ArrayList<String> createDefaultQuickCommands() { - ArrayList<String> arr = new ArrayList<>(); - arr.add("/warp home:Warp Home:eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzljODg4MWU0MjkxNWE5ZDI5YmI2MWExNmZiMjZkMDU5OTEzMjA0ZDI2NWRmNWI0MzliM2Q3OTJhY2Q1NiJ9fX0="); - arr.add("/warp hub:Warp Hub:eyJ0aW1lc3RhbXAiOjE1NTkyMTU0MTY5MDksInByb2ZpbGVJZCI6IjQxZDNhYmMyZDc0OTQwMGM5MDkwZDU0MzRkMDM4MzFiIiwicHJvZmlsZU5hbWUiOiJNZWdha2xvb24iLCJzaWduYXR1cmVSZXF1aXJlZCI6dHJ1ZSwidGV4dHVyZXMiOnsiU0tJTiI6eyJ1cmwiOiJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlL2Q3Y2M2Njg3NDIzZDA1NzBkNTU2YWM1M2UwNjc2Y2I1NjNiYmRkOTcxN2NkODI2OWJkZWJlZDZmNmQ0ZTdiZjgifX19"); - arr.add("/warp dungeon_hub:Dungeon Hub:eyJ0aW1lc3RhbXAiOjE1Nzg0MDk0MTMxNjksInByb2ZpbGVJZCI6IjQxZDNhYmMyZDc0OTQwMGM5MDkwZDU0MzRkMDM4MzFiIiwicHJvZmlsZU5hbWUiOiJNZWdha2xvb24iLCJzaWduYXR1cmVSZXF1aXJlZCI6dHJ1ZSwidGV4dHVyZXMiOnsiU0tJTiI6eyJ1cmwiOiJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzliNTY4OTViOTY1OTg5NmFkNjQ3ZjU4NTk5MjM4YWY1MzJkNDZkYjljMWIwMzg5YjhiYmViNzA5OTlkYWIzM2QiLCJtZXRhZGF0YSI6eyJtb2RlbCI6InNsaW0ifX19fQ=="); - arr.add("/craft:Crafting Table:CRAFTING_TABLE"); - arr.add("/storage:Storage:CHEST"); - arr.add("/wardrobe:Wardrobe:LEATHER_CHESTPLATE"); - arr.add("/pets:Pets:BONE"); - arr.add("neuah:NEU Auction House:GOLD_BLOCK"); - arr.add("/bz:Bazaar:GOLD_BARDING"); - return arr; - } - - public HiddenProfileSpecific getProfileSpecific() { - if(SBInfo.getInstance().currentProfile == null) { - return null; - } - return hidden.profileSpecific.computeIfAbsent(SBInfo.getInstance().currentProfile, k-> new HiddenProfileSpecific()); - } - - public static class HiddenProfileSpecific { - @Expose public long godPotionDuration = 0L; - @Expose public long puzzlerCompleted = 0L; - @Expose public long firstCakeAte = 0L; - @Expose public long fetchurCompleted = 0L; - @Expose public long commissionsCompleted = 0L; - @Expose public long experimentsCompleted = 0L; - @Expose public long cookieBuffRemaining = 0L; - - @Expose public int commissionMilestone = 0; - } - - public static class Hidden { - @Expose public HashMap<String, HiddenProfileSpecific> profileSpecific = new HashMap<>(); - @Expose public List<InventoryButton> inventoryButtons = createDefaultInventoryButtons(); - - @Expose public boolean enableItemEditing = false; - @Expose public boolean cacheRenderedItempane = true; - @Expose public boolean autoupdate = true; - @Expose public String overlaySearchBar = ""; - @Expose public String overlayQuickCommand = ""; - @Expose public boolean dev = false; - @Expose public boolean loadedModBefore = false; - @Expose public String selectedCape = null; - @Expose public int compareMode = 0; - @Expose public int sortMode = 0; - @Expose public ArrayList<Boolean> compareAscending = Lists.newArrayList(true, true, true); - @Expose public ArrayList<String> favourites = new ArrayList<>(); - @Expose public ArrayList<String> previousAuctionSearches = new ArrayList<>(); - @Expose public ArrayList<String> eventFavourites = new ArrayList<>(); - @Expose public ArrayList<String> quickCommands = createDefaultQuickCommands(); - @Expose public ArrayList<String> enchantColours = Lists.newArrayList( - "[a-zA-Z\\- ]+:\u003e:9:6:0", - "[a-zA-Z\\- ]+:\u003e:6:c:0", - "[a-zA-Z\\- ]+:\u003e:5:5:0", - "Experience:\u003e:3:5:0", - "Life Steal:\u003e:3:5:0", - "Scavenger:\u003e:3:5:0", - "Looting:\u003e:3:5:0"); - } - - public static List<InventoryButton> createDefaultInventoryButtons() { - List<InventoryButton> buttons = new ArrayList<>(); - //Below crafting - buttons.add(new InventoryButton(87, 63, null, true, false, false, 0, "")); - buttons.add(new InventoryButton(87+21, 63, null, true, false, false, 0, "")); - buttons.add(new InventoryButton(87+21*2, 63, null, true, false, false, 0, "")); - buttons.add(new InventoryButton(87+21*3, 63, null, true, false, false, 0, "")); - - //Above crafting - buttons.add(new InventoryButton(87, 5, null, true, false, false, 0, "")); - buttons.add(new InventoryButton(87+21, 5, null, true, false, false, 0, "")); - buttons.add(new InventoryButton(87+21*2, 5, null, true, false, false, 0, "")); - buttons.add(new InventoryButton(87+21*3, 5, null, true, false, false, 0, "")); - - //Crafting square - buttons.add(new InventoryButton(87, 25, null, true, false, false, 0, "")); - buttons.add(new InventoryButton(87+18, 25, null, true, false, false, 0, "")); - buttons.add(new InventoryButton(87, 25+18, null, true, false, false, 0, "")); - buttons.add(new InventoryButton(87+18, 25+18, null, true, false, false, 0, "")); - - //Crafting result - buttons.add(new InventoryButton(143, 35, null, true, false, false, 0, "")); - - //Player menu area - buttons.add(new InventoryButton(60, 8, null, true, false, false, 0, "")); - buttons.add(new InventoryButton(60, 60, null, true, false, false, 0, "")); - buttons.add(new InventoryButton(26, 8, null, true, false, false, 0, "")); - buttons.add(new InventoryButton(26, 60, null, true, false, false, 0, "")); - - //Right side - for(int i=0; i<8; i++) { - int y = 2+20*i; - if(y < 80) { - buttons.add(new InventoryButton(2, 2+20*i, null, false, true, false, 0, "")); - } else { - buttons.add(new InventoryButton(2, 2+20*i-166, null, false, true, true, 0, "")); - } - } - - //Top side - for(int i=0; i<8; i++) { - buttons.add(new InventoryButton(4+21*i, -19, null, false, false, false, 0, "")); - } - - //Left side - for(int i=0; i<8; i++) { - int y = 2+20*i; - if(y < 80) { - buttons.add(new InventoryButton(-19, 2+20*i, null, false, false, false, 0, "")); - } else { - buttons.add(new InventoryButton(-19, 2+20*i-166, null, false, false, true, 0, "")); - } - } - - //Bottom side - for(int i=0; i<8; i++) { - buttons.add(new InventoryButton(4+21*i, 2, null, false, false, true, 0, "")); - } - return buttons; - } - - public static class InventoryButton { - @Expose public int x; - @Expose public int y; - @Expose public boolean playerInvOnly; - - @Expose public boolean anchorRight; - @Expose public boolean anchorBottom; - - @Expose public int backgroundIndex; - @Expose public String command; - @Expose public String icon; - - public boolean isActive() { - return command.trim().length() > 0; - } - - public InventoryButton(int x, int y, String icon, boolean playerInvOnly, boolean anchorRight, boolean anchorBottom, int backgroundIndex, String command) { - this.x = x; - this.y = y; - this.icon = icon; - this.playerInvOnly = playerInvOnly; - this.anchorRight = anchorRight; - this.anchorBottom = anchorBottom; - this.backgroundIndex = backgroundIndex; - this.command = command; - } - } - - public static class DungeonMap { - @Expose - @ConfigOption( - name = "Border Size", - desc = "Changes the size of the map border, without changing the size of the contents" - ) - @ConfigEditorSlider( - minValue = 0, - maxValue = 5, - minStep = 0.25f - ) - public float dmBorderSize = 1; - - @Expose - @ConfigOption( - name = "Room Size", - desc = "Changes the size of rooms. Useful for higher dungeons with larger maps" - ) - @ConfigEditorSlider( - minValue = 0, - maxValue = 5, - minStep = 0.25f - ) - public float dmRoomSize = 1; - - @Expose - @ConfigOption( - name = "Icon Size", - desc = "Changes the scale of room indicators and player icons" - ) - @ConfigEditorSlider( - minValue = 0.5f, - maxValue = 3f, - minStep = 0.25f - ) - public float dmIconScale = 1.0f; - - @Expose - @ConfigOption( - name = "Border Style", - desc = "Various custom borders from various talented artists.\nUse 'custom' if your texture pack has a custom border" - ) - public int dmBorderStyle = 0; - - @Expose - @ConfigOption( - name = "Show Dungeon Map", - desc = "Show/hide the NEU dungeon map" - ) - public boolean dmEnable = true; - - @Expose - @ConfigOption( - name = "Map Center", - desc = "Center on rooms, or center on your player" - ) - public boolean dmCenterPlayer = true; - - @Expose - @ConfigOption( - name = "Rotate with Player", - desc = "Rotate the map to face the same direction as your player" - ) - public boolean dmRotatePlayer = true; - - @Expose - @ConfigOption( - name = "Orient Checkmarks", - desc = "Checkmarks will always show vertically, regardless of rotation" - ) - public boolean dmOrientCheck = true; - - @Expose - @ConfigOption( - name = "Center Checkmarks", - desc = "Checkmarks will show closer to the center of rooms" - ) - public boolean dmCenterCheck = false; - - @Expose - @ConfigOption( - name = "Player Icon Style", - desc = "Various player icon styles" - ) - public int dmPlayerHeads = 0; - - @Expose - @ConfigOption( - name = "Interpolate Far Players", - desc = "Will make players far away move smoothly" - ) - public boolean dmPlayerInterp = true; - - @Expose - @ConfigOption( - name = "OpenGL Compatibility", - desc = "Compatiblity options for people with bad computers. ONLY use this if you know what you are doing, otherwise the map will look worse" - ) - public int dmCompat = 0; - - @Expose - @ConfigOption( - name = "Background Colour", - desc = "Colour of the map background. Supports opacity & chroma" - ) - public String dmBackgroundColour = "00:170:75:75:75"; - - @Expose - @ConfigOption( - name = "Border Colour", - desc = "Colour of the map border. Supports opacity & chroma. Turn off custom borders to see" - ) - public String dmBorderColour = "00:0:0:0:0"; - - @Expose - @ConfigOption( - name = "Chroma Border Mode", - desc = "Applies a hue offset around the map border" - ) - public boolean dmChromaBorder = false; - - @Expose - @ConfigOption( - name = "Background Blur Factor", - desc = "Changes the blur factor behind the map. Set to 0 to disable blur" - ) - public float dmBackgroundBlur = 0; - - @Expose - @ConfigOption( - name = "Position", - desc = "The position of the map" - ) - public Position dmPosition = new Position(10, 10); - } - -} +package io.github.moulberry.notenoughupdates.options;
+
+import com.google.common.collect.Lists;
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.notenoughupdates.NotEnoughUpdates;
+import io.github.moulberry.notenoughupdates.core.GuiScreenElementWrapper;
+import io.github.moulberry.notenoughupdates.core.config.Config;
+import io.github.moulberry.notenoughupdates.core.config.Position;
+import io.github.moulberry.notenoughupdates.core.config.annotations.*;
+import io.github.moulberry.notenoughupdates.core.config.gui.GuiPositionEditor;
+import io.github.moulberry.notenoughupdates.miscgui.GuiEnchantColour;
+import io.github.moulberry.notenoughupdates.miscgui.GuiInvButtonEditor;
+import io.github.moulberry.notenoughupdates.miscgui.NEUOverlayPlacements;
+import io.github.moulberry.notenoughupdates.options.seperateSections.*;
+import io.github.moulberry.notenoughupdates.overlays.*;
+import io.github.moulberry.notenoughupdates.util.SBInfo;
+import net.minecraft.client.Minecraft;
+import net.minecraftforge.client.ClientCommandHandler;
+import org.lwjgl.util.vector.Vector2f;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+public class NEUConfig extends Config {
+
+ private void editOverlay(String activeConfig, TextOverlay overlay, Position position) {
+ Vector2f size = overlay.getDummySize();
+ int width = (int)size.x;
+ int height = (int)size.y;
+ Minecraft.getMinecraft().displayGuiScreen(new GuiPositionEditor(position, width, height, () -> {
+ overlay.renderDummy();
+ OverlayManager.dontRenderOverlay = overlay.getClass();
+ }, () -> {
+ }, () -> NotEnoughUpdates.INSTANCE.openGui = new GuiScreenElementWrapper(
+ new NEUConfigEditor(NotEnoughUpdates.INSTANCE.config, activeConfig))
+ ));
+ }
+
+ @Override
+ public void executeRunnable(int runnableId) {
+ String activeConfigCategory = null;
+ if(Minecraft.getMinecraft().currentScreen instanceof GuiScreenElementWrapper) {
+ GuiScreenElementWrapper wrapper = (GuiScreenElementWrapper) Minecraft.getMinecraft().currentScreen;
+ if(wrapper.element instanceof NEUConfigEditor) {
+ activeConfigCategory = ((NEUConfigEditor)wrapper.element).getSelectedCategoryName();
+ }
+ }
+ final String activeConfigCategoryF = activeConfigCategory;
+
+ switch (runnableId) {
+ case 0:
+ ClientCommandHandler.instance.executeCommand(Minecraft.getMinecraft().thePlayer, "/neumap");
+ return;
+ case 1:
+ editOverlay(activeConfigCategory, OverlayManager.miningOverlay, mining.overlayPosition);
+ return;
+ case 2:
+ Minecraft.getMinecraft().displayGuiScreen(new GuiPositionEditor(
+ NotEnoughUpdates.INSTANCE.config.mining.drillFuelBarPosition,
+ NotEnoughUpdates.INSTANCE.config.mining.drillFuelBarWidth, 12, () -> {
+ }, () -> {
+ }, () -> NotEnoughUpdates.INSTANCE.openGui = new GuiScreenElementWrapper(
+ new NEUConfigEditor(NotEnoughUpdates.INSTANCE.config, activeConfigCategoryF))
+ ));
+ return;
+ case 3:
+ editOverlay(activeConfigCategory, OverlayManager.farmingOverlay, skillOverlays.farmingPosition);
+ return;
+ case 4:
+ editOverlay(activeConfigCategory, OverlayManager.petInfoOverlay, petOverlay.petInfoPosition);
+ return;
+ case 5:
+ editOverlay(activeConfigCategory, OverlayManager.timersOverlay, miscOverlays.todoPosition);
+ return;
+ case 6:
+ NotEnoughUpdates.INSTANCE.openGui = new NEUOverlayPlacements();
+ return;
+ case 7:
+ NotEnoughUpdates.INSTANCE.openGui = new GuiInvButtonEditor();
+ return;
+ case 8:
+ NotEnoughUpdates.INSTANCE.openGui = new GuiEnchantColour();
+ return;
+
+ }
+ }
+
+ @Expose
+ @Category(
+ name = "Misc",
+ desc = "Miscellaneous options which don't fit into any other category"
+ )
+ public Misc misc = new Misc();
+
+ @Expose
+ @Category(
+ name = "Notifications",
+ desc = "Notifications"
+ )
+ public Notifications notifications = new Notifications();
+
+ @Expose
+ @Category(
+ name = "Item List",
+ desc = "Item List"
+ )
+ public Itemlist itemlist = new Itemlist();
+
+ @Expose
+ @Category(
+ name = "Toolbar",
+ desc = "Toolbar"
+ )
+ public Toolbar toolbar = new Toolbar();
+
+ @Expose
+ @Category(
+ name = "Inventory Buttons",
+ desc = "Inventory Buttons"
+ )
+ public InventoryButtons inventoryButtons = new InventoryButtons();
+
+
+ @Expose
+ @Category(
+ name = "Slot Locking",
+ desc = "Slot Locking"
+ )
+ public SlotLocking slotLocking = new SlotLocking();
+
+ @Expose
+ @Category(
+ name = "Tooltip Tweaks",
+ desc = "Tooltip Tweaks"
+ )
+ public TooltipTweaks tooltipTweaks = new TooltipTweaks();
+
+ @Expose
+ @Category(
+ name = "Item Overlays",
+ desc = "Item Overlays"
+ )
+ public ItemOverlays itemOverlays = new ItemOverlays();
+
+ @Expose
+ @Category(
+ name = "Skill Overlays",
+ desc = "Skill Overlays"
+ )
+ public SkillOverlays skillOverlays = new SkillOverlays();
+
+ @Expose
+ @Category(
+ name = "Misc Overlays",
+ desc = "Misc Overlays"
+ )
+ public MiscOverlays miscOverlays = new MiscOverlays();
+
+ @Expose
+ @Category(
+ name = "Storage GUI",
+ desc = "Storage GUI"
+ )
+ public StorageGUI storageGUI = new StorageGUI();
+
+ @Expose
+ @Category(
+ name = "Dungeons",
+ desc = "Dungeons"
+ )
+ public Dungeons dungeons = new Dungeons();
+
+
+ @Expose
+ @Category(
+ name = "Enchanting Solvers",
+ desc = "Enchanting Solvers"
+ )
+ public EnchSolvers enchantingSolvers = new EnchSolvers();
+
+ @Expose
+ @Category(
+ name = "Mining",
+ desc = "Mining"
+ )
+ public Mining mining = new Mining();
+
+
+ @Expose
+ @Category(
+ name = "Fishing",
+ desc = "Fishing"
+ )
+ public Fishing fishing = new Fishing();
+
+ @Expose
+ @Category(
+ name = "NEU Auction House",
+ desc = "NEU Auction House"
+ )
+ public NeuAuctionHouse neuAuctionHouse = new NeuAuctionHouse();
+
+ @Expose
+ @Category(
+ name = "Improved SB Menus",
+ desc = "Improved SB Menus"
+ )
+ public ImprovedSBMenu improvedSBMenu = new ImprovedSBMenu();
+
+ @Expose
+ @Category(
+ name = "Calendar",
+ desc = "Calendar"
+ )
+ public Calendar calendar = new Calendar();
+
+ @Expose
+ @Category(
+ name = "Trade Menu",
+ desc = "Trade Menu"
+ )
+ public TradeMenu tradeMenu = new TradeMenu();
+
+ @Expose
+ @Category(
+ name = "Pet Overlay",
+ desc = "Pet Overlay"
+ )
+ public PetOverlay petOverlay = new PetOverlay();
+
+ @Expose
+ @Category(
+ name = "AH Search GUI",
+ desc = "AH Search GUI"
+ )
+ public AuctionHouseSearch auctionHouseSearch = new AuctionHouseSearch();
+
+ @Expose
+ @Category(
+ name = "Custom Music",
+ desc = "Custom Music"
+ )
+ public CustomMusicConfig customMusic = new CustomMusicConfig();
+
+ @Expose
+ @Category(
+ name = "Accessory Bag Overlay",
+ desc = "Accessory Bag Overlay"
+ )
+ public AccessoryBag accessoryBag = new AccessoryBag();
+
+ @Expose
+ @Category(
+ name = "Api Key",
+ desc = "Api Key"
+ )
+ public ApiKey apiKey = new ApiKey();
+
+ @Expose
+ public Hidden hidden = new Hidden();
+
+ @Expose
+ public DungeonMapConfig dungeonMap = new DungeonMapConfig();
+
+ public static class Hidden {
+ @Expose
+ public HashMap<String, NEUConfig.HiddenProfileSpecific> profileSpecific = new HashMap<>();
+ @Expose public List<NEUConfig.InventoryButton> inventoryButtons = createDefaultInventoryButtons();
+
+ @Expose public boolean enableItemEditing = false;
+ @Expose public boolean cacheRenderedItempane = true;
+ @Expose public boolean autoupdate = true;
+ @Expose public String overlaySearchBar = "";
+ @Expose public String overlayQuickCommand = "";
+ @Expose public boolean dev = false;
+ @Expose public boolean loadedModBefore = false;
+ @Expose public String selectedCape = null;
+ @Expose public int compareMode = 0;
+ @Expose public int sortMode = 0;
+ @Expose public ArrayList<Boolean> compareAscending = Lists.newArrayList(true, true, true);
+ @Expose public ArrayList<String> favourites = new ArrayList<>();
+ @Expose public ArrayList<String> previousAuctionSearches = new ArrayList<>();
+ @Expose public ArrayList<String> eventFavourites = new ArrayList<>();
+ @Expose public ArrayList<String> quickCommands = createDefaultQuickCommands();
+ @Expose public ArrayList<String> enchantColours = Lists.newArrayList(
+ "[a-zA-Z\\- ]+:\u003e:9:6:0",
+ "[a-zA-Z\\- ]+:\u003e:6:c:0",
+ "[a-zA-Z\\- ]+:\u003e:5:5:0",
+ "Experience:\u003e:3:5:0",
+ "Life Steal:\u003e:3:5:0",
+ "Scavenger:\u003e:3:5:0",
+ "Looting:\u003e:3:5:0");
+ }
+
+ private static ArrayList<String> createDefaultQuickCommands() {
+ ArrayList<String> arr = new ArrayList<>();
+ arr.add("/warp home:Warp Home:eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzljODg4MWU0MjkxNWE5ZDI5YmI2MWExNmZiMjZkMDU5OTEzMjA0ZDI2NWRmNWI0MzliM2Q3OTJhY2Q1NiJ9fX0=");
+ arr.add("/warp hub:Warp Hub:eyJ0aW1lc3RhbXAiOjE1NTkyMTU0MTY5MDksInByb2ZpbGVJZCI6IjQxZDNhYmMyZDc0OTQwMGM5MDkwZDU0MzRkMDM4MzFiIiwicHJvZmlsZU5hbWUiOiJNZWdha2xvb24iLCJzaWduYXR1cmVSZXF1aXJlZCI6dHJ1ZSwidGV4dHVyZXMiOnsiU0tJTiI6eyJ1cmwiOiJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlL2Q3Y2M2Njg3NDIzZDA1NzBkNTU2YWM1M2UwNjc2Y2I1NjNiYmRkOTcxN2NkODI2OWJkZWJlZDZmNmQ0ZTdiZjgifX19");
+ arr.add("/warp dungeon_hub:Dungeon Hub:eyJ0aW1lc3RhbXAiOjE1Nzg0MDk0MTMxNjksInByb2ZpbGVJZCI6IjQxZDNhYmMyZDc0OTQwMGM5MDkwZDU0MzRkMDM4MzFiIiwicHJvZmlsZU5hbWUiOiJNZWdha2xvb24iLCJzaWduYXR1cmVSZXF1aXJlZCI6dHJ1ZSwidGV4dHVyZXMiOnsiU0tJTiI6eyJ1cmwiOiJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzliNTY4OTViOTY1OTg5NmFkNjQ3ZjU4NTk5MjM4YWY1MzJkNDZkYjljMWIwMzg5YjhiYmViNzA5OTlkYWIzM2QiLCJtZXRhZGF0YSI6eyJtb2RlbCI6InNsaW0ifX19fQ==");
+ arr.add("/craft:Crafting Table:CRAFTING_TABLE");
+ arr.add("/storage:Storage:CHEST");
+ arr.add("/wardrobe:Wardrobe:LEATHER_CHESTPLATE");
+ arr.add("/pets:Pets:BONE");
+ arr.add("neuah:NEU Auction House:GOLD_BLOCK");
+ arr.add("/bz:Bazaar:GOLD_BARDING");
+ return arr;
+ }
+
+ public HiddenProfileSpecific getProfileSpecific() {
+ if(SBInfo.getInstance().currentProfile == null) {
+ return null;
+ }
+ return hidden.profileSpecific.computeIfAbsent(SBInfo.getInstance().currentProfile, k-> new HiddenProfileSpecific());
+ }
+
+ public static class HiddenProfileSpecific {
+
+ @Expose public long godPotionDuration = 0l;
+ @Expose public long puzzlerCompleted = 0L;
+ @Expose public long firstCakeAte = 0L;
+ @Expose public long fetchurCompleted = 0L;
+ @Expose public long commissionsCompleted = 0L;
+ @Expose public long experimentsCompleted = 0L;
+ @Expose public long cookieBuffRemaining = 0L;
+
+ @Expose public int commissionMilestone = 0;
+ }
+
+ public static List<InventoryButton> createDefaultInventoryButtons() {
+ List<InventoryButton> buttons = new ArrayList<>();
+ //Below crafting
+ buttons.add(new InventoryButton(87, 63, null, true, false, false, 0, ""));
+ buttons.add(new InventoryButton(87+21, 63, null, true, false, false, 0, ""));
+ buttons.add(new InventoryButton(87+21*2, 63, null, true, false, false, 0, ""));
+ buttons.add(new InventoryButton(87+21*3, 63, null, true, false, false, 0, ""));
+
+ //Above crafting
+ buttons.add(new InventoryButton(87, 5, null, true, false, false, 0, ""));
+ buttons.add(new InventoryButton(87+21, 5, null, true, false, false, 0, ""));
+ buttons.add(new InventoryButton(87+21*2, 5, null, true, false, false, 0, ""));
+ buttons.add(new InventoryButton(87+21*3, 5, null, true, false, false, 0, ""));
+
+ //Crafting square
+ buttons.add(new InventoryButton(87, 25, null, true, false, false, 0, ""));
+ buttons.add(new InventoryButton(87+18, 25, null, true, false, false, 0, ""));
+ buttons.add(new InventoryButton(87, 25+18, null, true, false, false, 0, ""));
+ buttons.add(new InventoryButton(87+18, 25+18, null, true, false, false, 0, ""));
+
+ //Crafting result
+ buttons.add(new InventoryButton(143, 35, null, true, false, false, 0, ""));
+
+ //Player menu area
+ buttons.add(new InventoryButton(60, 8, null, true, false, false, 0, ""));
+ buttons.add(new InventoryButton(60, 60, null, true, false, false, 0, ""));
+ buttons.add(new InventoryButton(26, 8, null, true, false, false, 0, ""));
+ buttons.add(new InventoryButton(26, 60, null, true, false, false, 0, ""));
+
+ //Right side
+ for(int i=0; i<8; i++) {
+ int y = 2+20*i;
+ if(y < 80) {
+ buttons.add(new InventoryButton(2, 2+20*i, null, false, true, false, 0, ""));
+ } else {
+ buttons.add(new InventoryButton(2, 2+20*i-166, null, false, true, true, 0, ""));
+ }
+ }
+
+ //Top side
+ for(int i=0; i<8; i++) {
+ buttons.add(new InventoryButton(4+21*i, -19, null, false, false, false, 0, ""));
+ }
+
+ //Left side
+ for(int i=0; i<8; i++) {
+ int y = 2+20*i;
+ if(y < 80) {
+ buttons.add(new InventoryButton(-19, 2+20*i, null, false, false, false, 0, ""));
+ } else {
+ buttons.add(new InventoryButton(-19, 2+20*i-166, null, false, false, true, 0, ""));
+ }
+ }
+
+ //Bottom side
+ for(int i=0; i<8; i++) {
+ buttons.add(new InventoryButton(4+21*i, 2, null, false, false, true, 0, ""));
+ }
+ return buttons;
+ }
+
+ public static class InventoryButton {
+ @Expose public int x;
+ @Expose public int y;
+ @Expose public boolean playerInvOnly;
+
+ @Expose public boolean anchorRight;
+ @Expose public boolean anchorBottom;
+
+ @Expose public int backgroundIndex;
+ @Expose public String command;
+ @Expose public String icon;
+
+ public boolean isActive() {
+ return command.trim().length() > 0;
+ }
+
+ public InventoryButton(int x, int y, String icon, boolean playerInvOnly, boolean anchorRight, boolean anchorBottom, int backgroundIndex, String command) {
+ this.x = x;
+ this.y = y;
+ this.icon = icon;
+ this.playerInvOnly = playerInvOnly;
+ this.anchorRight = anchorRight;
+ this.anchorBottom = anchorBottom;
+ this.backgroundIndex = backgroundIndex;
+ this.command = command;
+ }
+ }
+
+}
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/AccessoryBag.java b/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/AccessoryBag.java new file mode 100644 index 00000000..57bae5db --- /dev/null +++ b/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/AccessoryBag.java @@ -0,0 +1,15 @@ +package io.github.moulberry.notenoughupdates.options.seperateSections;
+
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.notenoughupdates.core.config.annotations.ConfigEditorBoolean;
+import io.github.moulberry.notenoughupdates.core.config.annotations.ConfigOption;
+
+public class AccessoryBag {
+ @Expose
+ @ConfigOption(
+ name = "Enable Accessory Bag Overlay",
+ desc = "Show an overlay on the accessory bag screen which gives useful information about your accessories"
+ )
+ @ConfigEditorBoolean
+ public boolean enableOverlay = true;
+}
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/ApiKey.java b/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/ApiKey.java new file mode 100644 index 00000000..18786446 --- /dev/null +++ b/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/ApiKey.java @@ -0,0 +1,15 @@ +package io.github.moulberry.notenoughupdates.options.seperateSections;
+
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.notenoughupdates.core.config.annotations.ConfigEditorText;
+import io.github.moulberry.notenoughupdates.core.config.annotations.ConfigOption;
+
+public class ApiKey {
+ @Expose
+ @ConfigOption(
+ name = "Api Key",
+ desc = "Hypixel api key"
+ )
+ @ConfigEditorText
+ public String apiKey = "";
+}
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/AuctionHouseSearch.java b/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/AuctionHouseSearch.java new file mode 100644 index 00000000..89e25222 --- /dev/null +++ b/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/AuctionHouseSearch.java @@ -0,0 +1,40 @@ +package io.github.moulberry.notenoughupdates.options.seperateSections;
+
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.notenoughupdates.core.config.annotations.ConfigEditorBoolean;
+import io.github.moulberry.notenoughupdates.core.config.annotations.ConfigOption;
+
+public class AuctionHouseSearch {
+ @Expose
+ @ConfigOption(
+ name = "Enable Search GUI",
+ desc = "Use the advanced search GUI with autocomplete and history instead of the normal sign GUI\n\u00a7eStar Selection Texture: Johnny#4567"
+ )
+ @ConfigEditorBoolean
+ public boolean enableSearchOverlay = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Keep Previous Search",
+ desc = "Don't clear the search bar after closing the GUI"
+ )
+ @ConfigEditorBoolean
+ public boolean keepPreviousSearch = false;
+
+ @Expose
+ @ConfigOption(
+ name = "Past Searches",
+ desc = "Show past searches below the autocomplete box"
+ )
+ @ConfigEditorBoolean
+ public boolean showPastSearches = true;
+
+ @Expose
+ @ConfigOption(
+ name = "ESC to Full Close",
+ desc = "Make pressing ESCAPE close the search GUI without opening up the AH again\n" +
+ "ENTER can still be used to search"
+ )
+ @ConfigEditorBoolean
+ public boolean escFullClose = true;
+}
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/Calendar.java b/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/Calendar.java new file mode 100644 index 00000000..fea9853a --- /dev/null +++ b/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/Calendar.java @@ -0,0 +1,53 @@ +package io.github.moulberry.notenoughupdates.options.seperateSections;
+
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.notenoughupdates.core.config.annotations.ConfigEditorBoolean;
+import io.github.moulberry.notenoughupdates.core.config.annotations.ConfigEditorSlider;
+import io.github.moulberry.notenoughupdates.core.config.annotations.ConfigOption;
+
+public class Calendar {
+ @Expose
+ @ConfigOption(
+ name = "Event Notifications",
+ desc = "Display notifications for skyblock calendar events"
+ )
+ @ConfigEditorBoolean
+ public boolean eventNotifications = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Starting Soon Time",
+ desc = "Display a notification before events start, time in seconds.\n" +
+ "0 = No prior notification"
+ )
+ @ConfigEditorSlider(
+ minValue = 0f,
+ maxValue = 600f,
+ minStep = 30f
+ )
+ public int startingSoonTime = 300;
+
+ @Expose
+ @ConfigOption(
+ name = "Timer In Inventory",
+ desc = "Displays the time until the next event at the top of your screen when in inventories"
+ )
+ @ConfigEditorBoolean
+ public boolean showEventTimerInInventory = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Notification Sounds",
+ desc = "Play a sound whenever events start"
+ )
+ @ConfigEditorBoolean
+ public boolean eventNotificationSounds = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Spooky Night Notification",
+ desc = "Send a notification during spooky event when the time reaches 7pm"
+ )
+ @ConfigEditorBoolean
+ public boolean spookyNightNotification = true;
+}
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/DungeonMapConfig.java b/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/DungeonMapConfig.java new file mode 100644 index 00000000..367a6eae --- /dev/null +++ b/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/DungeonMapConfig.java @@ -0,0 +1,142 @@ +package io.github.moulberry.notenoughupdates.options.seperateSections;
+
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.notenoughupdates.core.config.Position;
+import io.github.moulberry.notenoughupdates.core.config.annotations.ConfigEditorSlider;
+import io.github.moulberry.notenoughupdates.core.config.annotations.ConfigOption;
+
+public class DungeonMapConfig {
+ @Expose
+ @ConfigOption(
+ name = "Border Size",
+ desc = "Changes the size of the map border, without changing the size of the contents"
+ )
+ @ConfigEditorSlider(
+ minValue = 0,
+ maxValue = 5,
+ minStep = 0.25f
+ )
+ public float dmBorderSize = 1;
+
+ @Expose
+ @ConfigOption(
+ name = "Room Size",
+ desc = "Changes the size of rooms. Useful for higher dungeons with larger maps"
+ )
+ @ConfigEditorSlider(
+ minValue = 0,
+ maxValue = 5,
+ minStep = 0.25f
+ )
+ public float dmRoomSize = 1;
+
+ @Expose
+ @ConfigOption(
+ name = "Icon Size",
+ desc = "Changes the scale of room indicators and player icons"
+ )
+ @ConfigEditorSlider(
+ minValue = 0.5f,
+ maxValue = 3f,
+ minStep = 0.25f
+ )
+ public float dmIconScale = 1.0f;
+
+ @Expose
+ @ConfigOption(
+ name = "Border Style",
+ desc = "Various custom borders from various talented artists.\nUse 'custom' if your texture pack has a custom border"
+ )
+ public int dmBorderStyle = 0;
+
+ @Expose
+ @ConfigOption(
+ name = "Show Dungeon Map",
+ desc = "Show/hide the NEU dungeon map"
+ )
+ public boolean dmEnable = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Map Center",
+ desc = "Center on rooms, or center on your player"
+ )
+ public boolean dmCenterPlayer = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Rotate with Player",
+ desc = "Rotate the map to face the same direction as your player"
+ )
+ public boolean dmRotatePlayer = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Orient Checkmarks",
+ desc = "Checkmarks will always show vertically, regardless of rotation"
+ )
+ public boolean dmOrientCheck = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Center Checkmarks",
+ desc = "Checkmarks will show closer to the center of rooms"
+ )
+ public boolean dmCenterCheck = false;
+
+ @Expose
+ @ConfigOption(
+ name = "Player Icon Style",
+ desc = "Various player icon styles"
+ )
+ public int dmPlayerHeads = 0;
+
+ @Expose
+ @ConfigOption(
+ name = "Interpolate Far Players",
+ desc = "Will make players far away move smoothly"
+ )
+ public boolean dmPlayerInterp = true;
+
+ @Expose
+ @ConfigOption(
+ name = "OpenGL Compatibility",
+ desc = "Compatiblity options for people with bad computers. ONLY use this if you know what you are doing, otherwise the map will look worse"
+ )
+ public int dmCompat = 0;
+
+ @Expose
+ @ConfigOption(
+ name = "Background Colour",
+ desc = "Colour of the map background. Supports opacity & chroma"
+ )
+ public String dmBackgroundColour = "00:170:75:75:75";
+
+ @Expose
+ @ConfigOption(
+ name = "Border Colour",
+ desc = "Colour of the map border. Supports opacity & chroma. Turn off custom borders to see"
+ )
+ public String dmBorderColour = "00:0:0:0:0";
+
+ @Expose
+ @ConfigOption(
+ name = "Chroma Border Mode",
+ desc = "Applies a hue offset around the map border"
+ )
+ public boolean dmChromaBorder = false;
+
+ @Expose
+ @ConfigOption(
+ name = "Background Blur Factor",
+ desc = "Changes the blur factor behind the map. Set to 0 to disable blur"
+ )
+ public float dmBackgroundBlur = 0;
+
+ @Expose
+ @ConfigOption(
+ name = "Position",
+ desc = "The position of the map"
+ )
+ public Position dmPosition = new Position(10, 10);
+}
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/Dungeons.java b/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/Dungeons.java new file mode 100644 index 00000000..a1b34a6d --- /dev/null +++ b/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/Dungeons.java @@ -0,0 +1,199 @@ +package io.github.moulberry.notenoughupdates.options.seperateSections;
+
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.notenoughupdates.core.config.annotations.*;
+import org.lwjgl.input.Keyboard;
+
+public class Dungeons {
+ @ConfigOption(
+ name = "Dungeon Map",
+ desc = ""
+ )
+ @ConfigEditorAccordion(id = 0)
+ public boolean dungeonMapAccordion = false;
+
+ @Expose
+ @ConfigOption(
+ name = "Edit Dungeon Map",
+ desc = "The NEU dungeon map has it's own editor (/neumap).\n" +
+ "Click the button on the left to open it"
+ )
+ @ConfigEditorButton(
+ runnableId = 0,
+ buttonText = "Edit"
+ )
+ @ConfigAccordionId(id = 0)
+ public int editDungeonMap = 0;
+
+ @Expose
+ @ConfigOption(
+ name = "Show Own Head As Marker",
+ desc = "If you have the \"Head\" icon style selected, don't replace your green marker with a head"
+ )
+ @ConfigEditorBoolean
+ @ConfigAccordionId(id = 0)
+ public boolean showOwnHeadAsMarker = false;
+
+ @ConfigOption(
+ name = "Dungeon Profit",
+ desc = ""
+ )
+ @ConfigEditorAccordion(id = 1)
+ public boolean dungeonProfitAccordion = false;
+
+ @Expose
+ @ConfigOption(
+ name = "Profit Type",
+ desc = "Set the price dataset used for calculating profit"
+ )
+ @ConfigEditorDropdown(
+ values = {"Lowest BIN", "24 AVG Lowest Bin", "Auction AVG"}
+ )
+ @ConfigAccordionId(id = 1)
+ public int profitType = 0;
+
+ @Expose
+ @ConfigOption(
+ name = "Profit Display Location",
+ desc = "Set where the profit information is displayed\n" +
+ "Overlay = Overlay on right side of inventory\n" +
+ "GUI Title = Text displayed next to the inventory title\n" +
+ "Lore = Inside the \"Open Reward Chest\" item"
+ )
+ @ConfigEditorDropdown(
+ values = {"Overlay", "GUI Title", "Lore", "Off"}
+ )
+ @ConfigAccordionId(id = 1)
+ public int profitDisplayLoc = 0;
+
+
+ @ConfigOption(
+ name = "Dungeon Win Overlay",
+ desc = ""
+ )
+ @ConfigEditorAccordion(id = 3)
+ public boolean dungeonWinAccordion = false;
+
+ @Expose
+ @ConfigOption(
+ name = "Enable Dungeon Win",
+ desc = "Show a fancy win screen and stats when completing a dungeon"
+ )
+ @ConfigEditorBoolean
+ @ConfigAccordionId(id = 3)
+ public boolean enableDungeonWin = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Dungeon Win Time",
+ desc = "Change the amount of time (milliseconds) that the win screen shows for"
+ )
+ @ConfigEditorSlider(
+ minValue = 0,
+ maxValue = 20000,
+ minStep = 500
+ )
+ @ConfigAccordionId(id = 3)
+ public int dungeonWinMillis = 8000;
+
+ @ConfigOption(
+ name = "Dungeon Block Overlay",
+ desc = ""
+ )
+ @ConfigEditorAccordion(id = 2)
+ public boolean dungeonBlocksAccordion = false;
+
+ @Expose
+ @ConfigOption(
+ name = "Enable Block Overlay",
+ desc = "Change the colour of certain blocks / entities while inside dungeons, but keeps the normal texture outside of dungeons"
+ )
+ @ConfigEditorBoolean
+ @ConfigAccordionId(id = 2)
+ public boolean enableDungBlockOverlay = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Show Overlay Everywhere",
+ desc = "Show the dungeon block overlay even when not inside dungeons. Should only be used for testing."
+ )
+ @ConfigEditorBoolean
+ @ConfigAccordionId(id = 2)
+ public boolean dungeonBlocksEverywhere = false;
+
+ @Expose
+ @ConfigOption(
+ name = "Slow Update",
+ desc = "Updates the colour every second instead of every tick.\n" +
+ "\u00A7cWARNING: This will cause all texture animations (eg. flowing water) to update slowly.\n" +
+ "This should only be used on low-end machines"
+ )
+ @ConfigEditorBoolean
+ @ConfigAccordionId(id = 2)
+ public boolean slowDungeonBlocks = false;
+
+ @Expose
+ @ConfigOption(
+ name = "Cracked Bricks",
+ desc = "Change the colour of: Cracked Bricks"
+ )
+ @ConfigEditorColour
+ @ConfigAccordionId(id = 2)
+ public String dungCrackedColour = "0:255:7:255:217";
+
+ @Expose
+ @ConfigOption(
+ name = "Dispensers",
+ desc = "Change the colour of: Dispensers"
+ )
+ @ConfigEditorColour
+ @ConfigAccordionId(id = 2)
+ public String dungDispenserColour = "0:255:255:76:0";
+
+ @Expose
+ @ConfigOption(
+ name = "Levers",
+ desc = "Change the colour of: Levers"
+ )
+ @ConfigEditorColour
+ @ConfigAccordionId(id = 2)
+ public String dungLeverColour = "0:252:24:249:255";
+
+ @Expose
+ @ConfigOption(
+ name = "Tripwire String",
+ desc = "Change the colour of: Tripwire String"
+ )
+ @ConfigEditorColour
+ @ConfigAccordionId(id = 2)
+ public String dungTripWireColour = "0:255:255:0:0";
+
+ @Expose
+ @ConfigOption(
+ name = "Normal Chests",
+ desc = "Change the colour of: Normal Chests"
+ )
+ @ConfigEditorColour
+ @ConfigAccordionId(id = 2)
+ public String dungChestColour = "0:255:0:163:36";
+
+ @Expose
+ @ConfigOption(
+ name = "Trapped Chests",
+ desc = "Change the colour of: Trapped Chests"
+ )
+ @ConfigEditorColour
+ @ConfigAccordionId(id = 2)
+ public String dungTrappedChestColour = "0:255:0:163:36";
+
+ @Expose
+ @ConfigOption(
+ name = "Bats",
+ desc = "Change the colour of: Bats"
+ )
+ @ConfigEditorColour
+ @ConfigAccordionId(id = 2)
+ public String dungBatColour = "0:255:12:255:0";
+
+
+}
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/EnchSolvers.java b/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/EnchSolvers.java new file mode 100644 index 00000000..c7707973 --- /dev/null +++ b/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/EnchSolvers.java @@ -0,0 +1,106 @@ +package io.github.moulberry.notenoughupdates.options.seperateSections;
+
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.notenoughupdates.core.config.annotations.ConfigEditorBoolean;
+import io.github.moulberry.notenoughupdates.core.config.annotations.ConfigEditorDropdown;
+import io.github.moulberry.notenoughupdates.core.config.annotations.ConfigOption;
+
+public class EnchSolvers {
+ @Expose
+ @ConfigOption(
+ name = "Enable Solvers",
+ desc = "Turn on solvers for the experimentation table"
+ )
+ @ConfigEditorBoolean
+ public boolean enableEnchantingSolvers = true;
+
+ /*@Expose
+ @ConfigOption(
+ name = "Prevent Misclicks",
+ desc = "Prevent accidentally failing the Chronomatron and Ultrasequencer experiments"
+ )
+ @ConfigEditorBoolean
+ public boolean preventMisclicks = true;*/
+
+ @Expose
+ @ConfigOption(
+ name = "Hide Tooltips",
+ desc = "Hide the tooltip of items in the Chronomatron and Ultrasequencer experiments"
+ )
+ @ConfigEditorBoolean
+ public boolean hideTooltips = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Ultrasequencer Numbers",
+ desc = "Replace the items in the supersequencer with only numbers"
+ )
+ @ConfigEditorBoolean
+ public boolean seqNumbers = false;
+
+ @Expose
+ @ConfigOption(
+ name = "Ultrasequencer Next",
+ desc = "Set the colour of the glass pane shown behind the element in the ultrasequencer which is next"
+ )
+ @ConfigEditorDropdown(
+ values = {"None", "White", "Orange", "Light Purple", "Light Blue", "Yellow", "Light Green", "Pink",
+ "Gray", "Light Gray", "Cyan", "Dark Purple", "Dark Blue", "Brown", "Dark Green", "Red", "Black"}
+ )
+ public int seqNext = 6;
+
+ @Expose
+ @ConfigOption(
+ name = "Ultrasequencer Upcoming",
+ desc = "Set the colour of the glass pane shown behind the element in the ultrasequencer which is coming after \"next\""
+ )
+ @ConfigEditorDropdown(
+ values = {"None", "White", "Orange", "Light Purple", "Light Blue", "Yellow", "Light Green", "Pink",
+ "Gray", "Light Gray", "Cyan", "Dark Purple", "Dark Blue", "Brown", "Dark Green", "Red", "Black"}
+ )
+ public int seqUpcoming = 5;
+
+ @Expose
+ @ConfigOption(
+ name = "Superpairs Matched",
+ desc = "Set the colour of the glass pane shown behind successfully matched pairs"
+ )
+ @ConfigEditorDropdown(
+ values = {"None", "White", "Orange", "Light Purple", "Light Blue", "Yellow", "Light Green", "Pink",
+ "Gray", "Light Gray", "Cyan", "Dark Purple", "Dark Blue", "Brown", "Dark Green", "Red", "Black"}
+ )
+ public int supMatched = 6;
+
+ @Expose
+ @ConfigOption(
+ name = "Superpairs Possible",
+ desc = "Set the colour of the glass pane shown behind pairs which can be matched, but have not yet"
+ )
+ @ConfigEditorDropdown(
+ values = {"None", "White", "Orange", "Light Purple", "Light Blue", "Yellow", "Light Green", "Pink",
+ "Gray", "Light Gray", "Cyan", "Dark Purple", "Dark Blue", "Brown", "Dark Green", "Red", "Black"}
+ )
+ public int supPossible = 2;
+
+ @Expose
+ @ConfigOption(
+ name = "Superpairs Unmatched",
+ desc = "Set the colour of the glass pane shown behind pairs which have been previously uncovered"
+ )
+ @ConfigEditorDropdown(
+ values = {"None", "White", "Orange", "Light Purple", "Light Blue", "Yellow", "Light Green", "Pink",
+ "Gray", "Light Gray", "Cyan", "Dark Purple", "Dark Blue", "Brown", "Dark Green", "Red", "Black"}
+ )
+ public int supUnmatched = 5;
+
+ @Expose
+ @ConfigOption(
+ name = "Superpairs Powerups",
+ desc = "Set the colour of the glass pane shown behind powerups"
+ )
+ @ConfigEditorDropdown(
+ values = {"None", "White", "Orange", "Light Purple", "Light Blue", "Yellow", "Light Green", "Pink",
+ "Gray", "Light Gray", "Cyan", "Dark Purple", "Dark Blue", "Brown", "Dark Green", "Red", "Black"}
+ )
+ public int supPower = 11;
+}
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/Fishing.java b/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/Fishing.java new file mode 100644 index 00000000..3275ad46 --- /dev/null +++ b/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/Fishing.java @@ -0,0 +1,208 @@ +package io.github.moulberry.notenoughupdates.options.seperateSections;
+
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.notenoughupdates.core.config.annotations.*;
+
+public class Fishing {
+ @Expose
+ @ConfigOption(
+ name = "Hide Other Players Fishing",
+ desc = "Convenience option to easily hide \u00a7lother players'\u00a7r bobbers, rod lines and fishing particles\n" +
+ "The advanced options below allow you to set the precise colour, particles, etc."
+ )
+ @ConfigEditorBoolean
+ public boolean hideOtherPlayerAll = false;
+
+ @ConfigOption(
+ name = "Incoming Fish Warning",
+ desc = ""
+ )
+ @ConfigEditorAccordion(id = 3)
+ public boolean incomingFishAccordion = false;
+
+ @Expose
+ @ConfigOption(
+ name = "Incoming Fish Warning",
+ desc = "Display a yellow '!' when a fish is incoming and a red '!' when you need to pull the fish up. " +
+ "The red '!' also takes your ping into account"
+ )
+ @ConfigEditorBoolean
+ @ConfigAccordionId(id = 3)
+ public boolean incomingFishWarning = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Auto Fish",
+ desc = "shitty auto fish"
+ )
+ @ConfigEditorBoolean
+ @ConfigAccordionId(id = 3)
+ public boolean autoFish = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Hooked Sound",
+ desc = "Play a high-pitched ding sound when the '!' turns red"
+ )
+ @ConfigEditorBoolean
+ @ConfigAccordionId(id = 3)
+ public boolean incomingFishHookedSounds = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Approach Sound",
+ desc = "Play low-pitched ding sounds while the yellow '!' is visible"
+ )
+ @ConfigEditorBoolean
+ @ConfigAccordionId(id = 3)
+ public boolean incomingFishIncSounds = false;
+
+ @ConfigOption(
+ name = "Volumes",
+ desc = ""
+ )
+ @ConfigAccordionId(id = 3)
+ @ConfigEditorAccordion(id = 5)
+ public boolean incomingFishVolumeAccordion = false;
+
+ @Expose
+ @ConfigOption(
+ name = "Hooked Sound Vol.",
+ desc = "Set the volume of the hooked sound"
+ )
+ @ConfigEditorSlider(
+ minValue = 0,
+ maxValue = 100,
+ minStep = 1
+ )
+ @ConfigAccordionId(id = 5)
+ public float incomingFishHookedSoundsVol = 25;
+
+ @Expose
+ @ConfigOption(
+ name = "Approach Sound Vol.",
+ desc = "Set the volume of the approaching sound"
+ )
+ @ConfigEditorSlider(
+ minValue = 0,
+ maxValue = 100,
+ minStep = 1
+ )
+ @ConfigAccordionId(id = 5)
+ public float incomingFishIncSoundsVol = 10;
+
+ @ConfigOption(
+ name = "Fishing Particles",
+ desc = ""
+ )
+ @ConfigEditorAccordion(id = 0)
+ public boolean particleAccordion = false;
+
+ @Expose
+ @ConfigOption(
+ name = "Enable Custom Particles",
+ desc = "Allow you to modify the particles that appear when a fish is incoming for you and other players"
+ )
+ @ConfigEditorBoolean
+ @ConfigAccordionId(id = 0)
+ public boolean enableCustomParticles = false;
+
+ @ConfigOption(
+ name = "Your Particles",
+ desc = ""
+ )
+ @ConfigEditorAccordion(id = 1)
+ @ConfigAccordionId(id = 0)
+ public boolean yourParticlesAccordion = false;
+
+ @Expose
+ @ConfigOption(
+ name = "Particle Type",
+ desc = "Change the type of the particle that is spawned\n" +
+ "Particle types with (RGB) support custom colours\n" +
+ "Set to 'NONE' to disable particles"
+ )
+ @ConfigEditorDropdown(
+ values = {"Default", "None", "Spark (RGB)", "Swirl (RGB)", "Dust (RGB)", "Flame", "Crit", "Magic Crit"}
+ )
+ @ConfigAccordionId(id = 1)
+ public int yourParticleType = 0;
+
+ @Expose
+ @ConfigOption(
+ name = "Custom Colour",
+ desc = "Set a custom colour for the particle\n" +
+ "Only works for particle types with (RGB)"
+ )
+ @ConfigEditorColour
+ @ConfigAccordionId(id = 1)
+ public String yourParticleColour = "0:255:255:255:255";
+
+ @ConfigOption(
+ name = "Other Players' Particles",
+ desc = ""
+ )
+ @ConfigEditorAccordion(id = 2)
+ @ConfigAccordionId(id = 0)
+ public boolean otherParticlesAccordion = false;
+
+ @Expose
+ @ConfigOption(
+ name = "Particle Type",
+ desc = "Change the type of the particle that is spawned\n" +
+ "Particle types with (RGB) support custom colours\n" +
+ "Set to 'NONE' to disable particles"
+ )
+ @ConfigEditorDropdown(
+ values = {"Default", "None", "Spark (RGB)", "Swirl (RGB)", "Dust (RGB)", "Flame", "Crit", "Magic Crit"}
+ )
+ @ConfigAccordionId(id = 2)
+ public int otherParticleType = 0;
+
+ @Expose
+ @ConfigOption(
+ name = "Custom Colour",
+ desc = "Set a custom colour for the particle\n" +
+ "Only works for particle types with (RGB)"
+ )
+ @ConfigEditorColour
+ @ConfigAccordionId(id = 2)
+ public String otherParticleColour = "0:255:255:255:255";
+
+ @ConfigOption(
+ name = "Rod Line Colours",
+ desc = ""
+ )
+ @ConfigEditorAccordion(id = 4)
+ public boolean rodAccordion = false;
+
+ @Expose
+ @ConfigOption(
+ name = "Enable Rod Line Colours",
+ desc = "Change the colour of your and other players' rod lines\n" +
+ "Also fixes the position of the rod line"
+ )
+ @ConfigEditorBoolean
+ @ConfigAccordionId(id = 4)
+ public boolean enableRodColours = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Own Rod Colour",
+ desc = "Change the colour of your own rod lines\n" +
+ "You can set the opacity to '0' to HIDE"
+ )
+ @ConfigEditorColour
+ @ConfigAccordionId(id = 4)
+ public String ownRodColour = "0:255:0:0:0";
+
+ @Expose
+ @ConfigOption(
+ name = "Other Rod Colour",
+ desc = "Change the colour of other players' rod lines\n" +
+ "You can set the opacity to '0' to HIDE"
+ )
+ @ConfigEditorColour
+ @ConfigAccordionId(id = 4)
+ public String otherRodColour = "0:255:0:0:0";
+}
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/ImprovedSBMenu.java b/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/ImprovedSBMenu.java new file mode 100644 index 00000000..6a4cb65c --- /dev/null +++ b/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/ImprovedSBMenu.java @@ -0,0 +1,46 @@ +package io.github.moulberry.notenoughupdates.options.seperateSections;
+
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.notenoughupdates.core.config.annotations.ConfigEditorBoolean;
+import io.github.moulberry.notenoughupdates.core.config.annotations.ConfigEditorDropdown;
+import io.github.moulberry.notenoughupdates.core.config.annotations.ConfigOption;
+
+public class ImprovedSBMenu {
+ @Expose
+ @ConfigOption(
+ name = "Enable Improved SB Menus",
+ desc = "Change the way that skyblock menus (eg. /sbmenu) look"
+ )
+ @ConfigEditorBoolean
+ public boolean enableSbMenus = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Menu Background Style",
+ desc = "Change the style of the background of skyblock menus"
+ )
+ @ConfigEditorDropdown(
+ values = {"Dark 1", "Dark 2", "Transparent", "Light 1", "Light 2", "Light 3",
+ "Unused 1", "Unused 2", "Unused 3", "Unused 4"}
+ )
+ public int backgroundStyle = 0;
+
+ @Expose
+ @ConfigOption(
+ name = "Button Background Style",
+ desc = "Change the style of the foreground elements in skyblock menus"
+ )
+ @ConfigEditorDropdown(
+ values = {"Dark 1", "Dark 2", "Transparent", "Light 1", "Light 2", "Light 3",
+ "Unused 1", "Unused 2", "Unused 3", "Unused 4"}
+ )
+ public int buttonStyle = 0;
+
+ @Expose
+ @ConfigOption(
+ name = "Hide Empty Tooltips",
+ desc = "Hide the tooltips of glass panes with no text"
+ )
+ @ConfigEditorBoolean
+ public boolean hideEmptyPanes = true;
+}
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/InventoryButtons.java b/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/InventoryButtons.java new file mode 100644 index 00000000..a4b0616b --- /dev/null +++ b/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/InventoryButtons.java @@ -0,0 +1,35 @@ +package io.github.moulberry.notenoughupdates.options.seperateSections;
+
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.notenoughupdates.core.config.annotations.ConfigEditorBoolean;
+import io.github.moulberry.notenoughupdates.core.config.annotations.ConfigEditorButton;
+import io.github.moulberry.notenoughupdates.core.config.annotations.ConfigEditorDropdown;
+import io.github.moulberry.notenoughupdates.core.config.annotations.ConfigOption;
+
+public class InventoryButtons {
+ @Expose
+ @ConfigOption(
+ name = "Open Button Editor",
+ desc = "Open button editor GUI (/neubuttons)"
+ )
+ @ConfigEditorButton(runnableId = 7, buttonText = "Open")
+ public boolean openEditorButton = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Always Hide \"Crafting\" Text",
+ desc = "Hide crafting text in inventory, even when no button is there"
+ )
+ @ConfigEditorBoolean
+ public boolean hideCrafting = false;
+
+ @Expose
+ @ConfigOption(
+ name = "Button Click Type",
+ desc = "Change the click type needed to trigger commands"
+ )
+ @ConfigEditorDropdown(
+ values = {"Mouse Down", "Mouse Up"}
+ )
+ public int clickType = 0;
+}
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/ItemOverlays.java b/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/ItemOverlays.java new file mode 100644 index 00000000..ea3ee04b --- /dev/null +++ b/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/ItemOverlays.java @@ -0,0 +1,196 @@ +package io.github.moulberry.notenoughupdates.options.seperateSections;
+
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.notenoughupdates.core.config.annotations.*;
+
+public class ItemOverlays {
+ @ConfigOption(
+ name = "Treecapitator Overlay",
+ desc = ""
+ )
+ @ConfigEditorAccordion(id = 0)
+ public boolean treecapAccordion = false;
+
+ @Expose
+ @ConfigOption(
+ name = "Enable Treecap Overlay",
+ desc = "Show which blocks will be broken when using a Jungle Axe or Treecapitator"
+ )
+ @ConfigEditorBoolean
+ @ConfigAccordionId(id = 0)
+ public boolean enableTreecapOverlay = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Overlay Colour",
+ desc = "Change the colour of the overlay"
+ )
+ @ConfigEditorColour
+ @ConfigAccordionId(id = 0)
+ public String treecapOverlayColour = "00:50:64:224:208";
+
+ @Expose
+ @ConfigOption(
+ name = "Enable Monkey Pet Check",
+ desc = "Will check use the API to check what pet you're using\nto determine the cooldown based off of if you have monkey pet."
+ )
+ @ConfigEditorBoolean
+ @ConfigAccordionId(id = 0)
+ public boolean enableMonkeyCheck = true;
+
+ @ConfigOption(
+ name = "Builder's Wand Overlay",
+ desc = ""
+ )
+ @ConfigEditorAccordion(id = 1)
+ public boolean wandAccordion = false;
+
+ @Expose
+ @ConfigOption(
+ name = "Enable Wand Overlay",
+ desc = "Show which blocks will be placed when using the Builder's Wand"
+ )
+ @ConfigEditorBoolean
+ @ConfigAccordionId(id = 1)
+ public boolean enableWandOverlay = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Wand Block Count",
+ desc = "Shows the total count of a block in your inventory"
+ )
+ @ConfigEditorBoolean
+ @ConfigAccordionId(id = 1)
+ public boolean wandBlockCount = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Overlay Colour",
+ desc = "Change the colour of the ghost block outline"
+ )
+ @ConfigEditorColour
+ @ConfigAccordionId(id = 1)
+ public String wandOverlayColour = "00:50:64:224:208";
+
+ @ConfigOption(
+ name = "Block Zapper Overlay",
+ desc = ""
+ )
+ @ConfigEditorAccordion(id = 6)
+ public boolean zapperAccordion = false;
+
+ @Expose
+ @ConfigOption(
+ name = "Enable Zapper Overlay",
+ desc = "Show which blocks will be destroyed when using the Block Zapper"
+ )
+ @ConfigEditorBoolean
+ @ConfigAccordionId(id = 6)
+ public boolean enableZapperOverlay = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Overlay Colour",
+ desc = "Change the colour of the ghost block outline"
+ )
+ @ConfigEditorColour
+ @ConfigAccordionId(id = 6)
+ public String zapperOverlayColour = "0:102:171:5:0";
+
+ @ConfigOption(
+ name = "Smooth AOTE",
+ desc = ""
+ )
+ @ConfigEditorAccordion(id = 2)
+ public boolean aoteAccordion = false;
+
+ @Expose
+ @ConfigOption(
+ name = "Enable Smooth AOTE",
+ desc = "Teleport smoothly to your destination when using AOTE"
+ )
+ @ConfigEditorBoolean
+ @ConfigAccordionId(id = 2)
+ public boolean enableSmoothAOTE = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Enable Smooth Hyperion",
+ desc = "Teleport smoothly to your destination when using Hyperion"
+ )
+ @ConfigEditorBoolean
+ @ConfigAccordionId(id = 2)
+ public boolean enableSmoothHyperion = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Smooth TP Time",
+ desc = "Change the amount of time (milliseconds) taken to teleport"
+ )
+ @ConfigEditorSlider(
+ minValue = 0,
+ maxValue = 500,
+ minStep = 25
+ )
+ @ConfigAccordionId(id = 2)
+ public int smoothTpMillis = 175;
+
+ @Expose
+ @ConfigOption(
+ name = "Disable Hyperion Particles",
+ desc = "Remove the explosion effect when using a hyperion"
+ )
+ @ConfigEditorBoolean
+ @ConfigAccordionId(id = 2)
+ public boolean disableHyperionParticles = true;
+
+ @ConfigOption(
+ name = "Bonemerang Overlay",
+ desc = ""
+ )
+ @ConfigEditorAccordion(id = 3)
+ public boolean bonemerangAccordion = false;
+
+ @Expose
+ @ConfigOption(
+ name = "Highlight Targeted Entities",
+ desc = "Highlight entities that will be hit by your bonemerang"
+ )
+ @ConfigEditorBoolean
+ @ConfigAccordionId(id = 3)
+ public boolean highlightTargeted = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Break Warning",
+ desc = "Show a warning below your crosshair if the bonemerang will break on a block"
+ )
+ @ConfigEditorBoolean
+ @ConfigAccordionId(id = 3)
+ public boolean showBreak = true;
+
+ @ConfigOption(
+ name = "Minion Crystal Radius Overlay",
+ desc = ""
+ )
+ @ConfigEditorAccordion(id = 5)
+ public boolean crystalAccordion = false;
+
+ @Expose
+ @ConfigOption(
+ name = "Enable Crystal Overlay",
+ desc = "Show a block overlay for the effective radius of minion crystals (farming, mining, etc)"
+ )
+ @ConfigEditorBoolean
+ @ConfigAccordionId(id = 5)
+ public boolean enableCrystalOverlay = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Always Show Crystal Overlay",
+ desc = "Show the crystal overlay, even when a minion crystal is not being held"
+ )
+ @ConfigEditorBoolean
+ @ConfigAccordionId(id = 5)
+ public boolean alwaysShowCrystal = false;
+}
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/Itemlist.java b/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/Itemlist.java new file mode 100644 index 00000000..db078353 --- /dev/null +++ b/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/Itemlist.java @@ -0,0 +1,110 @@ +package io.github.moulberry.notenoughupdates.options.seperateSections;
+
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.notenoughupdates.core.config.annotations.*;
+
+public class Itemlist {
+ @Expose
+ @ConfigOption(
+ name = "Show Vanilla Items",
+ desc = "Vanilla items are included in the item list"
+ )
+ @ConfigEditorBoolean
+ public boolean showVanillaItems = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Open Itemlist Arrow",
+ desc = "Creates an arrow on the right-side to open the item list when hovered"
+ )
+ @ConfigEditorBoolean
+ public boolean tabOpen = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Keep Open",
+ desc = "Keeps the Itemlist open after the inventory is closed"
+ )
+ @ConfigEditorBoolean
+ public boolean keepopen = false;
+
+ @Expose
+ @ConfigOption(
+ name = "Item Style",
+ desc = "Sets the style of the background behind items"
+ )
+ @ConfigEditorDropdown(
+ values = {"Round", "Square"}
+ )
+ public int itemStyle = 0;
+
+ @Expose
+ @ConfigOption(
+ name = "Pane Gui Scale",
+ desc = "Change the gui scale of the Itemlist"
+ )
+ @ConfigEditorDropdown(
+ values = {"Default", "Small", "Medium", "Large", "Auto"}
+ )
+ public int paneGuiScale = 0;
+
+ @Expose
+ @ConfigOption(
+ name = "Background Blur",
+ desc = "Change the blur amount behind the Itemlist. 0 = off"
+ )
+ @ConfigEditorSlider(
+ minValue = 0,
+ maxValue = 20,
+ minStep = 1
+ )
+ public int bgBlurFactor = 5;
+
+ @Expose
+ @ConfigOption(
+ name = "Pane Width Multiplier",
+ desc = "Change the width of the Itemlist"
+ )
+ @ConfigEditorSlider(
+ minValue = 0.5f,
+ maxValue = 1.5f,
+ minStep = 0.1f
+ )
+ public float paneWidthMult = 1.0f;
+
+ @Expose
+ @ConfigOption(
+ name = "Pane Padding",
+ desc = "Change the padding around the Itemlist"
+ )
+ @ConfigEditorSlider(
+ minValue = 0f,
+ maxValue = 20f,
+ minStep = 1f
+ )
+ public int panePadding = 10;
+
+ @Expose
+ @ConfigOption(
+ name = "Foreground Colour",
+ desc = "Change the colour of foreground elements in the Itemlist"
+ )
+ @ConfigEditorColour
+ public String foregroundColour = "00:255:100:100:100";
+
+ @Expose
+ @ConfigOption(
+ name = "Favourite Colour",
+ desc = "Change the colour of favourited elements in the Itemlist"
+ )
+ @ConfigEditorColour
+ public String favouriteColour = "00:255:200:150:50";
+
+ @Expose
+ @ConfigOption(
+ name = "Pane Background Colour",
+ desc = "Change the colour of the Itemlist background"
+ )
+ @ConfigEditorColour
+ public String backgroundColour = "15:6:0:0:255";
+}
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/Mining.java b/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/Mining.java new file mode 100644 index 00000000..b7326ee3 --- /dev/null +++ b/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/Mining.java @@ -0,0 +1,181 @@ +package io.github.moulberry.notenoughupdates.options.seperateSections;
+
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.notenoughupdates.core.config.Position;
+import io.github.moulberry.notenoughupdates.core.config.annotations.*;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+public class Mining {
+ @ConfigOption(
+ name = "Waypoints",
+ desc = ""
+ )
+ @ConfigEditorAccordion(id = 0)
+ public boolean waypointsAccordion = false;
+
+ @Expose
+ @ConfigOption(
+ name = "Mines Waypoints",
+ desc = "Show waypoints in the Dwarven mines to the various locations\n" +
+ "Use \"Commissions Only\" to only show active commission locations"
+ )
+ @ConfigEditorDropdown(
+ values = {"Hide", "Commissions Only", "Always"},
+ initialIndex = 1
+ )
+ @ConfigAccordionId(id = 0)
+ public int locWaypoints = 1;
+
+ @Expose
+ @ConfigOption(
+ name = "Emissary Waypoints",
+ desc = "Show waypoints in the Dwarven mines to emissaries\n" +
+ "Use \"Commission End\" to only show after finishing commissions"
+ )
+ @ConfigEditorDropdown(
+ values = {"Hide", "Commission End", "Always"},
+ initialIndex = 1
+ )
+ @ConfigAccordionId(id = 0)
+ public int emissaryWaypoints = 1;
+
+ @ConfigOption(
+ name = "Drill Fuel Bar",
+ desc = ""
+ )
+ @ConfigEditorAccordion(id = 1)
+ public boolean drillAccordion = false;
+
+ @Expose
+ @ConfigOption(
+ name = "Drill Fuel Bar",
+ desc = "Show a fancy drill fuel bar when holding a drill in mining areas"
+ )
+ @ConfigEditorBoolean
+ @ConfigAccordionId(id = 1)
+ public boolean drillFuelBar = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Fuel Bar Width",
+ desc = "Change the width of the drill fuel bar"
+ )
+ @ConfigEditorSlider(
+ minValue = 50,
+ maxValue = 400,
+ minStep = 10
+ )
+ @ConfigAccordionId(id = 1)
+ public int drillFuelBarWidth = 200;
+
+ @Expose
+ @ConfigOption(
+ name = "Fuel Bar Position",
+ desc = "Set the position of the drill fuel bar"
+ )
+ @ConfigEditorButton(
+ runnableId = 2,
+ buttonText = "Edit"
+ )
+ @ConfigAccordionId(id = 1)
+ public Position drillFuelBarPosition = new Position(0, -100, true, false);
+
+ @ConfigOption(
+ name = "Dwarven Overlay",
+ desc = ""
+ )
+ @ConfigEditorAccordion(id = 2)
+ public boolean overlayAccordion = false;
+
+ @Expose
+ @ConfigOption(
+ name = "Dwarven Overlay",
+ desc = "Show an overlay with useful information on the screen while in Dwarven Mines"
+ )
+ @ConfigEditorBoolean
+ @ConfigAccordionId(id = 2)
+ public boolean dwarvenOverlay = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Dwarven Text",
+ desc = "\u00a7eDrag text to change the appearance of the overlay\n" +
+ "\u00a7rGo to the Dwarven Mines to show this overlay with useful information"
+ )
+ @ConfigEditorDraggableList(
+ exampleText = {"\u00a73Goblin Slayer: \u00a7626.5%\n\u00a73Lucky Raffle: \u00a7c0.0%",
+ "\u00a73Mithril Powder: \u00a726,243",
+ "\u00a73Forge 1) \u00a79Diamonite\u00a77: \u00a7aReady!",
+ "\u00a73Forge 2) \u00a77EMPTY\n\u00a73Forge 3) \u00a77EMPTY\n\u00a73Forge 4) \u00a77EMPTY",
+ "\u00a73Pickaxe CD: \u00a7a78s"}
+ )
+ @ConfigAccordionId(id = 2)
+ public List<Integer> dwarvenText = new ArrayList<>(Arrays.asList(0, 1, 4, 2, 3));
+
+ @Expose
+ @ConfigOption(
+ name = "Overlay Position",
+ desc = "Change the position of the Dwarven Mines information overlay (commisions, powder & forge statuses)"
+ )
+ @ConfigEditorButton(
+ runnableId = 1,
+ buttonText = "Edit"
+ )
+ @ConfigAccordionId(id = 2)
+ public Position overlayPosition = new Position(10, 100);
+
+ @Expose
+ @ConfigOption(
+ name = "Overlay Style",
+ desc = "Change the style of the Dwarven Mines information overlay"
+ )
+ @ConfigEditorDropdown(
+ values = {"Background", "No Shadow", "Shadow", "Full Shadow"}
+ )
+ @ConfigAccordionId(id = 2)
+ public int overlayStyle = 0;
+
+ @Expose
+ @ConfigOption(
+ name = "Puzzler Solver",
+ desc = "Show the correct block to mine for the puzzler puzzle in Dwarven Mines"
+ )
+ @ConfigEditorBoolean
+ public boolean puzzlerSolver = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Titanium Alert",
+ desc = "Show an alert whenever titanium appears nearby"
+ )
+ @ConfigEditorBoolean
+ public boolean titaniumAlert = true;
+
+
+ @Expose
+ @ConfigOption(
+ name = "Dwarven Mines Textures",
+ desc = "Allows texture packs to retexture blocks in the Dwarven Mines. If you don't have a texturepack that does this, you should leave this off"
+ )
+ @ConfigEditorBoolean
+ public boolean dwarvenTextures = false;
+
+ /*@Expose
+ @ConfigOption(
+ name = "Don't Mine Stone",
+ desc = "Prevent mining stone blocks in mining areas"
+ )
+ @ConfigEditorBoolean
+ public boolean dontMineStone = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Reveal Mist Creepers",
+ desc = "Make the creepers in the Dwarven Mines mist visible"
+ )
+ @ConfigEditorBoolean
+ public boolean revealMistCreepers = true;*/
+}
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/Misc.java b/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/Misc.java new file mode 100644 index 00000000..37c75d28 --- /dev/null +++ b/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/Misc.java @@ -0,0 +1,70 @@ +package io.github.moulberry.notenoughupdates.options.seperateSections;
+
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.notenoughupdates.core.config.annotations.*;
+
+public class Misc {
+ @Expose
+ @ConfigOption(
+ name = "Only Show on Skyblock",
+ desc = "The item list and some other GUI elements will only show on skyblock"
+ )
+ @ConfigEditorBoolean
+ public boolean onlyShowOnSkyblock = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Hide Potion Effects",
+ desc = "Hide the potion effects inside your inventory while on skyblock"
+ )
+ @ConfigEditorBoolean
+ public boolean hidePotionEffect = true;
+
+
+
+ @Expose
+ @ConfigOption(
+ name = "Streamer Mode",
+ desc = "Randomize lobby names in the scoreboard and chat messages to help prevent stream sniping"
+ )
+ @ConfigEditorBoolean
+ public boolean streamerMode = false;
+
+ @Expose
+ @ConfigOption(
+ name = "GUI Click Sounds",
+ desc = "Play click sounds in various NEU-related GUIs when pressing buttons"
+ )
+ @ConfigEditorBoolean
+ public boolean guiButtonClicks = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Damage Indicator Style",
+ desc = "Change the style of Skyblock damage indicators to be easier to read"
+ )
+ @ConfigEditorDropdown(
+ values = {"Off", "Commas", "Shortened"}
+ )
+ public int damageIndicatorStyle = 1;
+
+ @Expose
+ @ConfigOption(
+ name = "Edit Enchant Colours",
+ desc = "Change the colours of certain skyblock enchants"
+ )
+ @ConfigEditorButton(runnableId = 8, buttonText = "Open")
+ public boolean editEnchantColoursButton = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Chroma Text Speed",
+ desc = "Change the speed of chroma text for items names (/neucustomize) and enchant colours (/neuec) with the chroma colour code (&z)"
+ )
+ @ConfigEditorSlider(
+ minValue = 10,
+ maxValue = 500,
+ minStep = 10
+ )
+ public int chromaSpeed = 100;
+}
\ No newline at end of file diff --git a/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/MiscOverlays.java b/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/MiscOverlays.java new file mode 100644 index 00000000..d31370b7 --- /dev/null +++ b/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/MiscOverlays.java @@ -0,0 +1,256 @@ +package io.github.moulberry.notenoughupdates.options.seperateSections;
+
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.notenoughupdates.core.config.Position;
+import io.github.moulberry.notenoughupdates.core.config.annotations.*;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+public class MiscOverlays {
+ @ConfigOption(
+ name = "Todo Overlay",
+ desc = ""
+ )
+ @ConfigEditorAccordion(id = 0)
+ public boolean todoAccordion = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Enable Todo Overlay",
+ desc = "Show an overlay that reminds you to do important tasks"
+ )
+ @ConfigEditorBoolean
+ @ConfigAccordionId(id = 0)
+ public boolean todoOverlay = false;
+
+ @Expose
+ @ConfigOption(
+ name = "Todo Text",
+ desc = "\u00a7eDrag text to change the appearance of the overlay\n" +
+ "\u00a7rIf you want to see the time until something is available, click \"Add\" and then the respective timer"
+ )
+ @ConfigEditorDraggableList(
+ exampleText = {
+ "\u00a73Cakes: \u00a7e1d21h",
+ "\u00a73Cookie Buff: \u00a7e2d23h",
+ "\u00a73Godpot: \u00a7e19h",
+ "\u00a73Puzzler: \u00a7e13h",
+ "\u00a73Fetchur: \u00a7e3h38m",
+ "\u00a73Commissions: \u00a7e3h38m",
+ "\u00a73Experiments: \u00a7e3h38m"}
+ )
+ @ConfigAccordionId(id = 0)
+ public List<Integer> todoText = new ArrayList<>(Arrays.asList(0, 1, 2, 3, 4, 5, 6));
+
+ @ConfigOption(
+ name = "Show Only If Soon",
+ desc = ""
+ )
+ @ConfigAccordionId(id = 0)
+ @ConfigEditorAccordion(id = 1)
+ public boolean TodoAccordion = false;
+
+ @Expose
+ @ConfigOption(
+ name = "Experimentation Display",
+ desc = "Change the way the experimentation timer displays\n" +
+ "Only when ready, When very Soon, When soon, When kinda soon or always."
+ )
+ @ConfigAccordionId(id =1)
+ @ConfigEditorDropdown(
+ values = {"Only when ready", "When very Soon", "When soon", "When Kinda Soon", "Always"}
+ )
+ public int experimentationDisplay = 0;
+
+
+ @Expose
+ @ConfigOption(
+ name = "Puzzler Reset Display",
+ desc = "Change the way the puzzler reset timer displays\n" +
+ "Only when ready, When very Soon, When soon, When kinda soon or always."
+ )
+ @ConfigAccordionId(id =1)
+ @ConfigEditorDropdown(
+ values = {"Only when ready", "When very Soon", "When soon", "When Kinda Soon", "Always"}
+ )
+ public int puzzlerDisplay = 0;
+
+ @Expose
+ @ConfigOption(
+ name = "Fetchur Reset Display",
+ desc = "Change the way the fetchur reset timer displays\n" +
+ "Only when ready, When very Soon, When soon, When kinda soon or always."
+ )
+ @ConfigAccordionId(id =1)
+ @ConfigEditorDropdown(
+ values = {"Only when ready", "When very Soon", "When soon", "When Kinda Soon", "Always"}
+ )
+ public int fetchurDisplay = 0;
+
+ @Expose
+ @ConfigOption(
+ name = "Commission timer Display",
+ desc = "Change the way the Commission timer displays\n" +
+ "Only when ready, When very Soon, When soon, When kinda soon or always."
+ )
+ @ConfigAccordionId(id =1)
+ @ConfigEditorDropdown(
+ values = {"Only when ready", "When very Soon", "When soon", "When Kinda Soon", "Always"}
+ )
+ public int commissionDisplay = 0;
+
+ @Expose
+ @ConfigOption(
+ name = "Cake Buff Display",
+ desc = "Change the way the cake buff timer displays\n" +
+ "Only when ready, When very Soon, When soon, When kinda soon or always."
+ )
+ @ConfigAccordionId(id =1)
+ @ConfigEditorDropdown(
+ values = {"Only when ready", "When very Soon", "When soon", "When Kinda Soon", "Always"}
+ )
+ public int cakesDisplay = 0;
+
+ @Expose
+ @ConfigOption(
+ name = "Cookie Buff Display",
+ desc = "Change the way the cookie buff displays\n" +
+ "Only when ready, When very Soon, When soon, When kinda soon or always."
+ )
+ @ConfigAccordionId(id =1)
+ @ConfigEditorDropdown(
+ values = {"Only when ready", "When very Soon", "When soon", "When Kinda Soon", "Always"}
+ )
+ public int cookieBuffDisplay = 0;
+
+ @Expose
+ @ConfigOption(
+ name = "God Pot Display",
+ desc = "Change the way the god pot displays\n" +
+ "Only when ready, When very Soon, When soon, When kinda soon or always."
+ )
+ @ConfigAccordionId(id =1)
+ @ConfigEditorDropdown(
+ values = {"Only when ready", "When very Soon", "When soon", "When Kinda Soon", "Always"}
+ )
+ public int godpotDisplay = 0;
+
+ @ConfigOption(
+ name = "Colours",
+ desc = ""
+ )
+
+ @ConfigEditorAccordion(id = 2)
+ @ConfigAccordionId(id = 0)
+ public boolean TodoColourAccordion = false;
+
+ @Expose
+ @ConfigOption(
+ name = "Ready colour",
+ desc = "Change the colour of when the timer is ready"
+
+ )
+ @ConfigEditorDropdown(
+ values = {"Black", "Dark Blue", "Dark Green", "Dark Aqua", "Dark Red", "Dark Purple", "Gold", "Gray", "Dark Gray", "Blue", "Green", "Aqua", "Red", "Light Purple", "Yellow", "White"}
+ )
+ @ConfigAccordionId(id = 2)
+ public int readyColour = 0;
+
+ @Expose
+ @ConfigOption(
+ name = "Gone colour",
+ desc = "Change the colour of when the timer is gone"
+
+ )
+ @ConfigEditorDropdown(
+ values = {"Black", "Dark Blue", "Dark Green", "Dark Aqua", "Dark Red", "Dark Purple", "Gold", "Gray", "Dark Gray", "Blue", "Green", "Aqua", "Red", "Light Purple", "Yellow", "White"}
+ )
+ @ConfigAccordionId(id = 2)
+ public int goneColour = 0;
+
+ @Expose
+ @ConfigOption(
+ name = "Very soon colour",
+ desc = "Change the colour of when the timer is almost ready/gone"
+
+ )
+ @ConfigEditorDropdown(
+ values = {"Black", "Dark Blue", "Dark Green", "Dark Aqua", "Dark Red", "Dark Purple", "Gold", "Gray", "Dark Gray", "Blue", "Green", "Aqua", "Red", "Light Purple", "Yellow", "White"}
+ )
+ @ConfigAccordionId(id = 2)
+ public int verySoonColour = 0;
+
+ @Expose
+ @ConfigOption(
+ name = "Soon Colour",
+ desc = "Change the colour of when the timer is soon ready/gone"
+
+ )
+ @ConfigEditorDropdown(
+ values = {"Black", "Dark Blue", "Dark Green", "Dark Aqua", "Dark Red", "Dark Purple", "Gold", "Gray", "Dark Gray", "Blue", "Green", "Aqua", "Red", "Light Purple", "Yellow", "White"}
+ )
+ @ConfigAccordionId(id = 2)
+ public int soonColour = 0;
+
+ @Expose
+ @ConfigOption(
+ name = "Kinda Soon Colour",
+ desc = "Change the colour of when the timer is kinda soon ready/gone"
+
+ )
+ @ConfigEditorDropdown(
+ values = {"Black", "Dark Blue", "Dark Green", "Dark Aqua", "Dark Red", "Dark Purple", "Gold", "Gray", "Dark Gray", "Blue", "Green", "Aqua", "Red", "Light Purple", "Yellow", "White"}
+ )
+ @ConfigAccordionId(id = 2)
+ public int kindaSoonColour = 0;
+
+
+ @Expose
+ @ConfigOption(
+ name = "Default Colour",
+ desc = "Change the default colour of the timers"
+
+ )
+
+ @ConfigEditorDropdown(
+ values = {"Black", "Dark Blue", "Dark Green", "Dark Aqua", "Dark Red", "Dark Purple", "Gold", "Gray", "Dark Gray", "Blue", "Green", "Aqua", "Red", "Light Purple", "Yellow", "White"}
+ )
+ @ConfigAccordionId(id = 2)
+ public int defaultColour = 0;
+
+
+ @Expose
+ @ConfigOption(
+ name = "Todo Position",
+ desc = "Change the position of the Todo overlay"
+ )
+ @ConfigEditorButton(
+ runnableId = 5,
+ buttonText = "Edit"
+ )
+ @ConfigAccordionId(id = 0)
+ public Position todoPosition = new Position(100, 0);
+
+
+ @Expose
+ @ConfigOption(
+ name = "Todo Style",
+ desc = "Change the style of the todo overlay"
+ )
+ @ConfigEditorDropdown(
+ values = {"Background", "No Shadow", "Shadow", "Full Shadow"}
+ )
+ @ConfigAccordionId(id = 0)
+ public int todoStyle = 0;
+
+ @Expose
+ @ConfigOption(
+ name = "Todo Icons",
+ desc = "Add little item icons next to the lines in the todo overlay"
+ )
+ @ConfigEditorBoolean
+ @ConfigAccordionId(id = 0)
+ public boolean todoIcons = true;
+}
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/NeuAuctionHouse.java b/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/NeuAuctionHouse.java new file mode 100644 index 00000000..2833c085 --- /dev/null +++ b/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/NeuAuctionHouse.java @@ -0,0 +1,45 @@ +package io.github.moulberry.notenoughupdates.options.seperateSections;
+
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.notenoughupdates.core.config.annotations.ConfigEditorBoolean;
+import io.github.moulberry.notenoughupdates.core.config.annotations.ConfigEditorSlider;
+import io.github.moulberry.notenoughupdates.core.config.annotations.ConfigOption;
+
+public static class NeuAuctionHouse {
+ @Expose
+ @ConfigOption(
+ name = "Enable NeuAH",
+ desc = "Turn on the NEU Auction House. \u00A7cWARNING: May negatively impact performance on low-end machines"
+ )
+ @ConfigEditorBoolean
+ public boolean enableNeuAuctionHouse = false;
+
+ @Expose
+ @ConfigOption(
+ name = "Disable AH Scroll",
+ desc = "Disable scrolling using the scroll wheel inside NeuAH.\n" +
+ "This should be used if you want to be able to scroll through tooltips"
+ )
+ @ConfigEditorBoolean
+ public boolean disableAhScroll = false;
+
+ @Expose
+ @ConfigOption(
+ name = "AH Notification (Mins)",
+ desc = "Change the amount of time (in minutes) before the \"Ending Soon\" notification for an auction you have bid on"
+ )
+ @ConfigEditorSlider(
+ minValue = 1f,
+ maxValue = 10f,
+ minStep = 1f
+ )
+ public int ahNotification = 5;
+
+ @Expose
+ @ConfigOption(
+ name = "Price Filtering in NEU AH",
+ desc = "The ability to filter the price of items and their respective average BIN values"
+ )
+ @ConfigEditorBoolean
+ public boolean priceFiltering = false;
+}
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/Notifications.java b/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/Notifications.java new file mode 100644 index 00000000..b6c12077 --- /dev/null +++ b/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/Notifications.java @@ -0,0 +1,32 @@ +package io.github.moulberry.notenoughupdates.options.seperateSections;
+
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.notenoughupdates.core.config.annotations.ConfigEditorBoolean;
+import io.github.moulberry.notenoughupdates.core.config.annotations.ConfigOption;
+
+public class Notifications {
+ @Expose
+ @ConfigOption(
+ name = "Update Messages",
+ desc = "Give a notification in chat whenever a new version of NEU is released"
+ )
+ @ConfigEditorBoolean
+ public boolean showUpdateMsg = true;
+
+ @Expose
+ @ConfigOption(
+ name = "RAM Warning",
+ desc = "Warning when game starts with lots of RAM allocated\n"+
+ "\u00a7cBefore disabling this, please seriously read the message. If you complain about FPS issues without listening to the warning, that's your fault."
+ )
+ @ConfigEditorBoolean
+ public boolean doRamNotif = true;
+
+ /*@Expose
+ @ConfigOption(
+ name = "Wrong Pet",
+ desc = "Gives a notification in chat whenever you're using a pet that doesnt match the same xp you're gathering."
+ )
+ @ConfigEditorBoolean
+ public boolean showWrongPetMsg = false;*/
+}
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/PetOverlay.java b/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/PetOverlay.java new file mode 100644 index 00000000..f37280fa --- /dev/null +++ b/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/PetOverlay.java @@ -0,0 +1,74 @@ +package io.github.moulberry.notenoughupdates.options.seperateSections;
+
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.notenoughupdates.core.config.Position;
+import io.github.moulberry.notenoughupdates.core.config.annotations.*;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+public class PetOverlay {
+ @Expose
+ @ConfigOption(
+ name = "Enable Pet Info Overlay",
+ desc = "Shows current active pet and pet exp on screen."
+ )
+ @ConfigEditorBoolean
+ public boolean enablePetInfo = false;
+
+ @Expose
+ @ConfigOption(
+ name = "Pet Info Position",
+ desc = "The position of the pet info."
+ )
+ @ConfigEditorButton(
+ runnableId = 4,
+ buttonText = "Edit"
+ )
+ public Position petInfoPosition = new Position(-1, -1);
+
+ @Expose
+ @ConfigOption(
+ name = "Pet Overlay Text",
+ desc = "\u00a7eDrag text to change the appearance of the overlay\n" +
+ "\u00a7rEquip a pet to show the overlay"
+ )
+ @ConfigEditorDraggableList(
+ exampleText = {"\u00a7a[Lvl 37] \u00a7fRock",
+ "\u00a7b2,312.9/2,700\u00a7e (85.7%)",
+ "\u00a7b2.3k/2.7k\u00a7e (85.7%)",
+ "\u00a7bXP/h: \u00a7e27,209",
+ "\u00a7bTotal XP: \u00a7e30,597.9",
+ "\u00a7bHeld Item: \u00a7fMining Exp Boost",
+ "\u00a7bUntil L38: \u00a7e5m13s",
+ "\u00a7bUntil L100: \u00a7e2d13h"}
+ )
+ public List<Integer> petOverlayText = new ArrayList<>(Arrays.asList(0, 2, 3, 6, 4));
+
+ @Expose
+ @ConfigOption(
+ name = "Pet Overlay Icon",
+ desc = "Show the icon of the pet you have equiped in the overlay"
+ )
+ @ConfigEditorBoolean
+ public boolean petOverlayIcon = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Pet Info Overlay Style",
+ desc = "Change the style of the Pet Info overlay"
+ )
+ @ConfigEditorDropdown(
+ values = {"Background", "No Shadow", "Shadow Only", "Full Shadow"}
+ )
+ public int petInfoOverlayStyle = 0;
+
+ @Expose
+ @ConfigOption(
+ name = "Show Last Pet",
+ desc = "Show 2 pets on the overlay\nUseful if training two pets at once with autopet"
+ )
+ @ConfigEditorBoolean
+ public boolean dualPets = false;
+}
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/SkillOverlays.java b/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/SkillOverlays.java new file mode 100644 index 00000000..ba83fc0c --- /dev/null +++ b/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/SkillOverlays.java @@ -0,0 +1,58 @@ +package io.github.moulberry.notenoughupdates.options.seperateSections;
+
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.notenoughupdates.core.config.Position;
+import io.github.moulberry.notenoughupdates.core.config.annotations.*;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+public class SkillOverlays {
+ @Expose
+ @ConfigOption(
+ name = "Enable Farming Overlay",
+ desc = "Show an overlay while farming with useful information"
+ )
+ @ConfigEditorBoolean
+ public boolean farmingOverlay = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Farming Text",
+ desc = "\u00a7eDrag text to change the appearance of the overlay\n" +
+ "\u00a7rHold a mathematical hoe or use an axe while gaining farming xp to show the overlay"
+ )
+ @ConfigEditorDraggableList(
+ exampleText = {"\u00a7bCounter: \u00a7e37,547,860",
+ "\u00a7bCrops/m: \u00a7e38.29",
+ "\u00a7bFarm: \u00a7e12\u00a77 [\u00a7e|||||||||||||||||\u00a78||||||||\u00a77] \u00a7e67%",
+ "\u00a7bCurrent XP: \u00a7e6,734",
+ "\u00a7bRemaining XP: \u00a7e3,265",
+ "\u00a7bXP/h: \u00a7e238,129",
+ "\u00a7bYaw: \u00a7e68.25\u00a7l\u1D52",
+ "\u00a7bETA: 13h12m"}
+ )
+ public List<Integer> farmingText = new ArrayList<>(Arrays.asList(0, 1, 2, 3, 4, 5, 7, 6));
+
+ @Expose
+ @ConfigOption(
+ name = "Farming Position",
+ desc = "Change the position of the Farming overlay"
+ )
+ @ConfigEditorButton(
+ runnableId = 3,
+ buttonText = "Edit"
+ )
+ public Position farmingPosition = new Position(10, 200);
+
+ @Expose
+ @ConfigOption(
+ name = "Farming Style",
+ desc = "Change the style of the Farming overlay"
+ )
+ @ConfigEditorDropdown(
+ values = {"Background", "No Shadow", "Shadow", "Full Shadow"}
+ )
+ public int farmingStyle = 0;
+}
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/SlotLocking.java b/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/SlotLocking.java new file mode 100644 index 00000000..3da885a0 --- /dev/null +++ b/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/SlotLocking.java @@ -0,0 +1,71 @@ +package io.github.moulberry.notenoughupdates.options.seperateSections;
+
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.notenoughupdates.core.config.annotations.ConfigEditorBoolean;
+import io.github.moulberry.notenoughupdates.core.config.annotations.ConfigEditorKeybind;
+import io.github.moulberry.notenoughupdates.core.config.annotations.ConfigEditorSlider;
+import io.github.moulberry.notenoughupdates.core.config.annotations.ConfigOption;
+import org.lwjgl.input.Keyboard;
+
+public class SlotLocking {
+ @Expose
+ @ConfigOption(
+ name = "Enable Slot Locking",
+ desc = "Allows you to lock slots and create slot bindings"
+ )
+ @ConfigEditorBoolean
+ public boolean enableSlotLocking = false;
+
+ @Expose
+ @ConfigOption(
+ name = "Enable Slot Binding",
+ desc = "Allows you to create slot bindings\nNote: \"Enable Slot Locking\" must be on"
+ )
+ @ConfigEditorBoolean
+ public boolean enableSlotBinding = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Don't Drop Bound Slots",
+ desc = "Slot bindings also act as locked slots (prevents dropping / moving in inventory)"
+ )
+ @ConfigEditorBoolean
+ public boolean bindingAlsoLocks = false;
+
+ @Expose
+ @ConfigOption(
+ name = "Slot Lock Key",
+ desc = "Click this key to LOCK a slot\n" +
+ "Hold this key and drag to BIND a slot"
+ )
+ @ConfigEditorKeybind(defaultKey = Keyboard.KEY_L)
+ public int slotLockKey = Keyboard.KEY_L;
+
+ @Expose
+ @ConfigOption(
+ name = "Lock Slots in Trade",
+ desc = "Prevents trading locked items in the custom trade windows"
+ )
+ @ConfigEditorBoolean
+ public boolean lockSlotsInTrade = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Slot Lock Sound",
+ desc = "Play a ding when locking/unlocking slots"
+ )
+ @ConfigEditorBoolean
+ public boolean slotLockSound = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Slot Lock Sound Vol.",
+ desc = "Set the volume of the ding sound"
+ )
+ @ConfigEditorSlider(
+ minValue = 0,
+ maxValue = 100,
+ minStep = 1
+ )
+ public float slotLockSoundVol = 20;
+}
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/StorageGUI.java b/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/StorageGUI.java new file mode 100644 index 00000000..e54bd2f3 --- /dev/null +++ b/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/StorageGUI.java @@ -0,0 +1,188 @@ +package io.github.moulberry.notenoughupdates.options.seperateSections;
+
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.notenoughupdates.core.config.annotations.*;
+import org.lwjgl.input.Keyboard;
+
+public class StorageGUI {
+ @ConfigOption(
+ name = "Storage Overlay",
+ desc = ""
+ )
+ @ConfigEditorAccordion(id = 1)
+ public boolean storageOverlayAccordion = false;
+
+ @Expose
+ @ConfigOption(
+ name = "Enable Storage GUI",
+ desc = "Show a custom storage overlay when accessing /storage." +
+ "Makes switching between pages much easier and also allows for searching through all storages"
+ )
+ @ConfigEditorBoolean
+ @ConfigAccordionId(id = 1)
+ public boolean enableStorageGUI = false;
+
+ @Expose
+ @ConfigOption(
+ name = "Storage Height",
+ desc = "Change the height of the storage preview section. Increasing this allows more storages to be seen at once"
+ )
+ @ConfigEditorSlider(
+ minValue = 104,
+ maxValue = 312,
+ minStep = 26
+ )
+ @ConfigAccordionId(id = 1)
+ public int storageHeight = 208;
+
+ @Expose
+ @ConfigOption(
+ name = "Storage Style",
+ desc = "Change the visual style of the overlay"
+ )
+ @ConfigEditorDropdown(
+ values = {"Transparent", "Minecraft", "Dark", "Custom"}
+ )
+ @ConfigAccordionId(id = 1)
+ public int displayStyle = 0;
+
+ @Expose
+ @ConfigOption(
+ name = "Enderchest Preview",
+ desc = "Preview Enderchest pages when hovering over the selector on the left side"
+ )
+ @ConfigEditorBoolean
+ @ConfigAccordionId(id = 1)
+ public boolean enderchestPreview = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Backpack Preview",
+ desc = "Preview Backpacks when hovering over the selector on the left side"
+ )
+ @ConfigEditorBoolean
+ @ConfigAccordionId(id = 1)
+ public boolean backpackPreview = false;
+
+ @Expose
+ @ConfigOption(
+ name = "Compact Vertically",
+ desc = "Remove the space between backpacks when there is a size discrepancy"
+ )
+ @ConfigEditorBoolean
+ @ConfigAccordionId(id = 1)
+ public boolean masonryMode = false;
+
+ @ConfigOption(
+ name = "Inventory Backpacks",
+ desc = ""
+ )
+ @ConfigEditorAccordion(id = 0)
+ public boolean inventorySlotAccordion = false;
+
+ @Expose
+ @ConfigOption(
+ name = "Inventory Backpacks",
+ desc = "Add a \"10th slot\" to your inventory which allows you to quickly access your backpacks"
+ )
+ @ConfigEditorBoolean
+ @ConfigAccordionId(id = 0)
+ public boolean showInvBackpack = false;
+
+ //public boolean showInvBackpack = false;
+
+ @Expose
+ @ConfigOption(
+ name = "Backpack Side",
+ desc = "Set which side of the hotbar the backpack slot shows"
+ )
+ @ConfigEditorDropdown(
+ values = {"Left", "Right"}
+ )
+ @ConfigAccordionId(id = 0)
+ public int backpackHotbarSide = 0;
+
+ @Expose
+ @ConfigOption(
+ name = "Backpack Peeking",
+ desc = "When the backpack is selected, show it's contents on your screen"
+ )
+ @ConfigEditorBoolean
+ @ConfigAccordionId(id = 0)
+ public boolean showInvBackpackPreview = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Backpack Opacity%",
+ desc = "Change the opacity of the backpack preview background"
+ )
+ @ConfigEditorSlider(
+ minValue = 0,
+ maxValue = 100,
+ minStep = 5
+ )
+ @ConfigAccordionId(id = 0)
+ public int backpackOpacity = 50;
+
+ @Expose
+ @ConfigOption(
+ name = "Backpack Scroll Key",
+ desc = "Change the key which needs to be pressed in order to allow backpacks to be scrolled between"
+ )
+ @ConfigEditorKeybind(defaultKey = Keyboard.KEY_LSHIFT)
+ @ConfigAccordionId(id = 0)
+ public int backpackScrollKey = Keyboard.KEY_LSHIFT;
+
+ @Expose
+ @ConfigOption(
+ name = "Backpack Hotkey",
+ desc = "Hotkey to quickly switch to the backpack slot"
+ )
+ @ConfigEditorKeybind(defaultKey = Keyboard.KEY_GRAVE)
+ @ConfigAccordionId(id = 0)
+ public int backpackHotkey = Keyboard.KEY_GRAVE;
+
+ @Expose
+ @ConfigOption(
+ name = "Arrow Key Backpacks",
+ desc = "Use arrow keys [LEFT],[RIGHT] to move between backpacks and [DOWN] to navigate backpack even when the slot is not selected. Keys are customizable below"
+ )
+ @ConfigEditorBoolean
+ @ConfigAccordionId(id = 0)
+ public boolean arrowKeyBackpacks = false;
+
+ @ConfigOption(
+ name = "Arrow Key Backpack Keybinds",
+ desc = ""
+ )
+ @ConfigEditorAccordion(id = 2)
+ @ConfigAccordionId(id = 0)
+ public boolean backpackArrowAccordion = false;
+
+ @Expose
+ @ConfigOption(
+ name = "Backpack Left",
+ desc = "Select the backpack to the left"
+ )
+ @ConfigEditorKeybind(defaultKey = Keyboard.KEY_LEFT)
+ @ConfigAccordionId(id = 2)
+ public int arrowLeftKey = Keyboard.KEY_LEFT;
+
+ @Expose
+ @ConfigOption(
+ name = "Backpack Right",
+ desc = "Select the backpack to the right"
+ )
+ @ConfigEditorKeybind(defaultKey = Keyboard.KEY_RIGHT)
+ @ConfigAccordionId(id = 2)
+ public int arrowRightKey = Keyboard.KEY_RIGHT;
+
+ @Expose
+ @ConfigOption(
+ name = "Backpack Open",
+ desc = "Open the selected backpack"
+ )
+ @ConfigEditorKeybind(defaultKey = Keyboard.KEY_DOWN)
+ @ConfigAccordionId(id = 2)
+ public int arrowDownKey = Keyboard.KEY_DOWN;
+}
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/Toolbar.java b/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/Toolbar.java new file mode 100644 index 00000000..2cdbc0ab --- /dev/null +++ b/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/Toolbar.java @@ -0,0 +1,64 @@ +package io.github.moulberry.notenoughupdates.options.seperateSections;
+
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.notenoughupdates.core.config.annotations.*;
+
+public class Toolbar {
+ @Expose
+ @ConfigOption(
+ name = "Edit Toolbar Positions",
+ desc = "Edit the position of the QuickCommands / Search Bar"
+ )
+ @ConfigEditorButton(runnableId = 6, buttonText = "Edit")
+ public boolean positionButton = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Show Quick Commands",
+ desc = "Show QuickCommands\u2122 in the NEU toolbar"
+ )
+ @ConfigEditorBoolean
+ public boolean quickCommands = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Show Search Bar",
+ desc = "Show Itemlist search bar in the NEU toolbar"
+ )
+ @ConfigEditorBoolean
+ public boolean searchBar = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Search Bar Width",
+ desc = "Change the width of the search bar"
+ )
+ @ConfigEditorSlider(
+ minValue = 50f,
+ maxValue = 300f,
+ minStep = 10f
+ )
+ public int searchBarWidth = 200;
+
+ @Expose
+ @ConfigOption(
+ name = "Search Bar Height",
+ desc = "Change the height of the search bar"
+ )
+ @ConfigEditorSlider(
+ minValue = 15f,
+ maxValue = 50f,
+ minStep = 1f
+ )
+ public int searchBarHeight = 40;
+
+ @Expose
+ @ConfigOption(
+ name = "Quick Commands Click Type",
+ desc = "Change the click type needed to trigger quick commands"
+ )
+ @ConfigEditorDropdown(
+ values = {"Mouse Up", "Mouse Down"}
+ )
+ public int quickCommandsClickType = 0;
+}
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/TooltipTweaks.java b/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/TooltipTweaks.java new file mode 100644 index 00000000..e1b9780a --- /dev/null +++ b/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/TooltipTweaks.java @@ -0,0 +1,90 @@ +package io.github.moulberry.notenoughupdates.options.seperateSections;
+
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.notenoughupdates.core.config.annotations.*;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+public class TooltipTweaks {
+ @ConfigOption(
+ name = "Tooltip Price Information",
+ desc = ""
+ )
+ @ConfigEditorAccordion(id = 0)
+ public boolean priceInfoAccordion = false;
+
+ @Expose
+ @ConfigOption(
+ name = "Price Info (Auc)",
+ desc = "\u00a7rSelect what price information you would like to see on auctionable item tooltips\n" +
+ "\u00a7eDrag text to rearrange"
+ )
+ @ConfigEditorDraggableList(
+ exampleText = {"\u00a7eLowest BIN",
+ "\u00a7eAH Price",
+ "\u00a7eAH Sales",
+ "\u00a7eRaw Craft Cost",
+ "\u00a7eAVG Lowest BIN",
+ "\u00a7eDungeon Costs"}
+ )
+ @ConfigAccordionId(id = 0)
+ public List<Integer> priceInfoAuc = new ArrayList<>(Arrays.asList(0, 1, 2, 3, 5));
+
+ @Expose
+ @ConfigOption(
+ name = "Price Info (Baz)",
+ desc = "\u00a7rSelect what price information you would like to see on bazaar item tooltips\n" +
+ "\u00a7eDrag text to rearrange"
+ )
+ @ConfigEditorDraggableList(
+ exampleText = {"\u00a7eBuy", "\u00a7eSell", "\u00a7eBuy (Insta)", "\u00a7eSell (Insta)", "\u00a7eRaw Craft Cost"}
+ )
+ @ConfigAccordionId(id = 0)
+ public List<Integer> priceInfoBaz = new ArrayList<>(Arrays.asList(0, 1, 2, 3, 4));
+
+ @Expose
+ @ConfigOption(
+ name = "Price Info (Inv)",
+ desc = "Show price information for items in your inventory"
+ )
+ @ConfigEditorBoolean
+ public boolean showPriceInfoInvItem = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Price Info (AH)",
+ desc = "Show price information for auctioned items"
+ )
+ @ConfigEditorBoolean
+ public boolean showPriceInfoAucItem = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Missing Enchant List",
+ desc = "Show which enchants are missing on an item when pressing LSHIFT"
+ )
+ @ConfigEditorBoolean
+ public boolean missingEnchantList = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Tooltip Border Colours",
+ desc = "Make the borders of tooltips match the rarity of the item (NEU Tooltips Only)"
+ )
+ @ConfigEditorBoolean
+ public boolean tooltipBorderColours = true;
+
+ @Expose
+ @ConfigOption(
+ name = "Tooltip Border Opacity",
+ desc = "Change the opacity of the rarity highlight (NEU Tooltips Only)"
+ )
+ @ConfigEditorSlider(
+ minValue = 0f,
+ maxValue = 255f,
+ minStep = 1f
+ )
+ public int tooltipBorderOpacity = 200;
+}
\ No newline at end of file diff --git a/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/TradeMenu.java b/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/TradeMenu.java new file mode 100644 index 00000000..930316be --- /dev/null +++ b/src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/TradeMenu.java @@ -0,0 +1,27 @@ +package io.github.moulberry.notenoughupdates.options.seperateSections;
+
+import com.google.gson.annotations.Expose;
+import io.github.moulberry.notenoughupdates.core.config.annotations.ConfigEditorBoolean;
+import io.github.moulberry.notenoughupdates.core.config.annotations.ConfigOption;
+
+public class TradeMenu {
+ @Expose
+ @ConfigOption(
+ name = "Enable Custom Trade Menu",
+ desc = "When trading with other players in skyblock, display a special GUI designed to prevent scamming"
+ )
+ @ConfigEditorBoolean
+ public boolean enableCustomTrade = true;
+
+
+ @Expose
+ @ConfigOption(
+ name = "Price Information",
+ desc = "Show the price of items in the trade window on both sides"
+ )
+ @ConfigEditorBoolean
+ public boolean customTradePrices = true;
+
+ @Expose
+ public boolean customTradePriceStyle = true;
+}
|