diff --git a/src/main/java/net/silentclient/client/gui/lite/clickgui/ModSettings.java b/src/main/java/net/silentclient/client/gui/lite/clickgui/ModSettings.java index c5ba2a2..79a2e59 100644 --- a/src/main/java/net/silentclient/client/gui/lite/clickgui/ModSettings.java +++ b/src/main/java/net/silentclient/client/gui/lite/clickgui/ModSettings.java @@ -16,7 +16,6 @@ import net.silentclient.client.gui.lite.clickgui.utils.MouseUtils.Scroll; import net.silentclient.client.gui.elements.*; import net.silentclient.client.gui.font.SilentFontRenderer; import net.silentclient.client.gui.hud.HUDConfigScreen; -import net.silentclient.client.gui.notification.NotificationManager; import net.silentclient.client.gui.theme.Theme; import net.silentclient.client.gui.util.RenderUtil; import net.silentclient.client.mods.Mod; @@ -362,7 +361,7 @@ public class ModSettings extends SilentScreen { settingY += settingHeight; } - mod.customComponentClick(x + 100, (int) (y + 30 + scrollY), mouseX, mouseY, mouseButton, this); + mod.customLiteComponentClick(x + 100, (int) (y + 30 + scrollY), mouseX, mouseY, mouseButton, this); } @Override diff --git a/src/main/java/net/silentclient/client/gui/modmenu/ModMenu.java b/src/main/java/net/silentclient/client/gui/modmenu/ModMenu.java index 8fd34d3..a707608 100644 --- a/src/main/java/net/silentclient/client/gui/modmenu/ModMenu.java +++ b/src/main/java/net/silentclient/client/gui/modmenu/ModMenu.java @@ -257,8 +257,11 @@ public class ModMenu extends SilentScreen { newScrollY += amountScrolled; else newScrollY = 0; - if(newScrollY < scrollHeight && scrollHeight > height - 25) { + if((newScrollY < scrollHeight && scrollHeight > height - 25) || amountScrolled < 0) { this.scrollY = (float) newScrollY; + if(this.scrollY < 0) { + this.scrollY = 0; + } } } } diff --git a/src/main/java/net/silentclient/client/gui/modmenu/ModSettings.java b/src/main/java/net/silentclient/client/gui/modmenu/ModSettings.java index 50cc017..ffd035f 100644 --- a/src/main/java/net/silentclient/client/gui/modmenu/ModSettings.java +++ b/src/main/java/net/silentclient/client/gui/modmenu/ModSettings.java @@ -77,6 +77,10 @@ public class ModSettings extends SilentScreen { ModMenu.trimContentStart(width, height); float settingY = 66 - scrollAnimation.getValue(); int inputIndex = 0; + GlStateManager.color(1, 1, 1, 1); + mod.renderCustomComponent(3, (int) settingY, 144, height, mouseX, mouseY); + + settingY += mod.customComponentHeight() + 30; for (Setting setting : Client.getInstance().getSettingsManager().getSettingByMod(mod)) { if(mod.getName() == "Crosshair" && Client.getInstance().getSettingsManager().getSettingByClass(CrosshairMod.class, "Preset Crosshair").getValBoolean() && setting.getName() != "Scale" && setting.getName() != "Crosshair Color" && setting.getName() != "Vanilla Blendering") { @@ -156,8 +160,11 @@ public class ModSettings extends SilentScreen { else newScrollY = 0; Client.logger.info(String.format("newscroll: %s, scrollheight: %s, height: %s", newScrollY, scrollHeight, height)); - if(newScrollY < scrollHeight && scrollHeight > height) { + if((newScrollY < scrollHeight && scrollHeight > height) || amountScrolled < 0) { this.scrollY = (float) newScrollY; + if(this.scrollY < 0) { + this.scrollY = 0; + } } } } @@ -169,6 +176,10 @@ public class ModSettings extends SilentScreen { float settingY = 66 - scrollAnimation.getValue(); int inputIndex = 0; + mod.customComponentClick(0, (int) settingY, mouseX, mouseY, mouseButton, this); + + settingY += mod.customComponentHeight(); + for (Setting setting : Client.getInstance().getSettingsManager().getSettingByMod(mod)) { if(mod.getName() == "Crosshair" && Client.getInstance().getSettingsManager().getSettingByClass(CrosshairMod.class, "Preset Crosshair").getValBoolean() && setting.getName() != "Scale" && setting.getName() != "Crosshair Color" && setting.getName() != "Vanilla Blendering") { continue; diff --git a/src/main/java/net/silentclient/client/mods/Mod.java b/src/main/java/net/silentclient/client/mods/Mod.java index 30cb4c1..e3b6691 100644 --- a/src/main/java/net/silentclient/client/mods/Mod.java +++ b/src/main/java/net/silentclient/client/mods/Mod.java @@ -1,8 +1,5 @@ package net.silentclient.client.mods; -import java.awt.Color; -import java.util.ArrayList; - import net.minecraft.client.Minecraft; import net.minecraft.client.gui.FontRenderer; import net.minecraft.client.gui.GuiScreen; @@ -13,6 +10,9 @@ import net.silentclient.client.gui.hud.ScreenPosition; import net.silentclient.client.utils.MenuBlurUtils; import net.silentclient.client.utils.RawInputHandler; +import java.awt.*; +import java.util.ArrayList; + public class Mod implements IMod { private boolean isEnabled; @@ -183,6 +183,10 @@ public class Mod implements IMod { return 0; } + public void customLiteComponentClick(int x, int y, int mouseX, int mouseY, int mouseButton, GuiScreen screen) { + + } + public void renderCustomComponent(int x, int y, int width, int height, int mouseX, int mouseY) { return; } @@ -194,9 +198,9 @@ public class Mod implements IMod { public int customComponentHeight() { return 0; } - + public void customComponentClick(int x, int y, int mouseX, int mouseY, int mouseButton, GuiScreen screen) { - + } public void onChangeSettingValue(Setting setting) { diff --git a/src/main/java/net/silentclient/client/mods/player/AutoTextMod.java b/src/main/java/net/silentclient/client/mods/player/AutoTextMod.java index a568641..b441f88 100644 --- a/src/main/java/net/silentclient/client/mods/player/AutoTextMod.java +++ b/src/main/java/net/silentclient/client/mods/player/AutoTextMod.java @@ -1,14 +1,5 @@ package net.silentclient.client.mods.player; -import java.awt.Color; -import java.io.IOException; -import java.util.ArrayList; -import java.util.regex.Pattern; - -import net.silentclient.client.gui.SilentScreen; -import net.silentclient.client.utils.MenuBlurUtils; -import org.lwjgl.input.Keyboard; - import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.renderer.GlStateManager; @@ -16,18 +7,25 @@ import net.minecraft.util.ResourceLocation; import net.silentclient.client.Client; import net.silentclient.client.event.EventTarget; import net.silentclient.client.event.impl.KeyEvent; -import net.silentclient.client.gui.lite.clickgui.utils.MouseUtils; -import net.silentclient.client.gui.lite.clickgui.utils.RenderUtils; +import net.silentclient.client.gui.SilentScreen; import net.silentclient.client.gui.elements.Button; import net.silentclient.client.gui.elements.IconButton; import net.silentclient.client.gui.elements.Input; import net.silentclient.client.gui.font.SilentFontRenderer; -import net.silentclient.client.gui.notification.NotificationManager; +import net.silentclient.client.gui.lite.clickgui.utils.MouseUtils; +import net.silentclient.client.gui.lite.clickgui.utils.RenderUtils; import net.silentclient.client.gui.theme.Theme; import net.silentclient.client.mods.CustomFontRenderer; import net.silentclient.client.mods.Mod; import net.silentclient.client.mods.ModCategory; +import net.silentclient.client.utils.MenuBlurUtils; import net.silentclient.client.utils.NotificationUtils; +import org.lwjgl.input.Keyboard; + +import java.awt.*; +import java.io.IOException; +import java.util.ArrayList; +import java.util.regex.Pattern; public class AutoTextMod extends Mod { @@ -59,19 +57,50 @@ public class AutoTextMod extends Mod { componentHeight = spacing - 30; } - + + @Override + public void renderCustomComponent(int x, int y, int width, int height, int mouseX, int mouseY) { + CustomFontRenderer font = new CustomFontRenderer(); + font.setRenderMode(CustomFontRenderer.RenderMode.CUSTOM); + + font.drawString("Macros:", x, y, -1, 14); + + font.drawString("Create Macro", x + customComponentWidth() - font.getStringWidth("Create Macro", 12, SilentFontRenderer.FontType.TITLE), y, MouseUtils.isInside(mouseX, mouseY, x + customComponentWidth() - font.getStringWidth("Create Macro", 12, SilentFontRenderer.FontType.TITLE), y, font.getStringWidth("Create Macro", 12, SilentFontRenderer.FontType.TITLE), 12) ? new Color(255, 255, 255, 127).getRGB() : -1, 12); + + int spacing = y + 20; + + for(AutoTextCommand command : commands) { + font.drawString("Command: " + command.getCommand(), x, spacing, -1, 12); + font.drawString("Key: " + Keyboard.getKeyName(command.getKey()), x, spacing + 10, -1, 12); + font.drawString("Remove", x, spacing + 20, MouseUtils.isInside(mouseX, mouseY, x, spacing + 20, font.getStringWidth("Remove"), 12) ? new Color(255, 255, 255, 127).getRGB() : -1, 12); + spacing += 40; + } + + componentHeight = spacing - 30; + } + @Override public int customComponentLiteHeight() { return componentHeight; } - + + @Override + public int customComponentHeight() { + return customComponentLiteHeight(); + } + @Override public int customComponentLiteWidth() { return 290; } - + @Override - public void customComponentClick(int x, int y, int mouseX, int mouseY, int mouseButton, GuiScreen screen) { + public int customComponentWidth() { + return 144; + } + + @Override + public void customLiteComponentClick(int x, int y, int mouseX, int mouseY, int mouseButton, GuiScreen screen) { CustomFontRenderer font = new CustomFontRenderer(); font.setRenderMode(CustomFontRenderer.RenderMode.CUSTOM); @@ -91,7 +120,29 @@ public class AutoTextMod extends Mod { spacing += 40; } } - + + @Override + public void customComponentClick(int x, int y, int mouseX, int mouseY, int mouseButton, GuiScreen screen) { + CustomFontRenderer font = new CustomFontRenderer(); + font.setRenderMode(CustomFontRenderer.RenderMode.CUSTOM); + + if(MouseUtils.isInside(mouseX, mouseY, x + customComponentWidth() - font.getStringWidth("Create Macro", 12, SilentFontRenderer.FontType.TITLE), y, font.getStringWidth("Create Macro", 12, SilentFontRenderer.FontType.TITLE), 12)) { + mc.displayGuiScreen(new AutoTextAddCommandGui(screen)); + } + + int spacing = y + 20; + for(AutoTextCommand command : commands) { + if(MouseUtils.isInside(mouseX, mouseY, x, spacing + 20, font.getStringWidth("Remove", 12, SilentFontRenderer.FontType.TITLE), 12)) { + try { + this.removeCommand(command.getCommand(), command.getKey()); + } catch(Exception err) { + err.printStackTrace(); + } + } + spacing += 40; + } + } + public void removeCommand(String commandText, int key) { ArrayList newCommands = new ArrayList(); diff --git a/src/main/java/net/silentclient/client/mods/render/CrosshairMod.java b/src/main/java/net/silentclient/client/mods/render/CrosshairMod.java index 4aec253..ae0a433 100644 --- a/src/main/java/net/silentclient/client/mods/render/CrosshairMod.java +++ b/src/main/java/net/silentclient/client/mods/render/CrosshairMod.java @@ -193,7 +193,7 @@ public class CrosshairMod extends Mod { } @Override - public void customComponentClick(int x, int y, int mouseX, int mouseY, int mouseButton, GuiScreen screen) { + public void customLiteComponentClick(int x, int y, int mouseX, int mouseY, int mouseButton, GuiScreen screen) { int widthComponent = 190 * 2; int buttonWidth = (widthComponent - 108) / 2; if(MouseUtils.isInside(mouseX, mouseY, x, y, buttonWidth, 20)) {