From b3b549e693d0c747d4d4362b7fb7231dcb85fb98 Mon Sep 17 00:00:00 2001 From: kirillsaint Date: Sat, 22 Jul 2023 14:09:31 +0600 Subject: [PATCH] Zoom --- .../client/gui/lite/clickgui/ClickGUI.java | 54 ++++++++++--------- .../client/gui/modmenu/ModMenu.java | 10 +++- .../client/gui/modmenu/ModSettings.java | 4 ++ .../client/keybinds/KeyBindManager.java | 3 +- .../client/mixin/mixins/MinecraftMixin.java | 13 +++-- .../client/mods/player/ZoomMod.java | 31 +++++------ 6 files changed, 70 insertions(+), 45 deletions(-) diff --git a/src/main/java/net/silentclient/client/gui/lite/clickgui/ClickGUI.java b/src/main/java/net/silentclient/client/gui/lite/clickgui/ClickGUI.java index 9e3e041..e3b37b1 100644 --- a/src/main/java/net/silentclient/client/gui/lite/clickgui/ClickGUI.java +++ b/src/main/java/net/silentclient/client/gui/lite/clickgui/ClickGUI.java @@ -16,7 +16,6 @@ import net.silentclient.client.gui.elements.Button; import net.silentclient.client.gui.elements.Input; import net.silentclient.client.gui.elements.Switch; import net.silentclient.client.gui.font.SilentFontRenderer; -import net.silentclient.client.gui.font.SilentFontRenderer.FontType; import net.silentclient.client.gui.hud.HUDConfigScreen; import net.silentclient.client.gui.lite.clickgui.utils.GlUtils; import net.silentclient.client.gui.lite.clickgui.utils.MouseUtils; @@ -124,30 +123,33 @@ public class ClickGUI extends SilentScreen { boolean headerHovered = MouseUtils.isInside(mouseX, mouseY, modOffsetX, y, width, 25); if(selectedCategory != ModCategory.PLUS && selectedCategory != ModCategory.CONFIGS) { for(Mod m : getMods()) { - float switchX = modOffsetX + ((65 / 2) - (15 / 2)); - float switchY = y + modOffsetY - scrollAnimation.getValue() + 55; - boolean switchHovered = selectedCategory.equals(ModCategory.MODS) && Switch.isHovered(mouseX, mouseY, switchX, switchY) && !headerHovered; - boolean isHovered = MouseUtils.isInside(mouseX, mouseY, modOffsetX, y + modOffsetY - scrollAnimation.getValue(), 65, 70) && !headerHovered && !switchHovered && (Client.getInstance().getSettingsManager().getSettingByMod(m).size() != 0 || m.getName() == "Auto Text"); - RenderUtil.drawRoundedOutline(modOffsetX, y + modOffsetY - scrollAnimation.getValue(), 65, 70, 3, 1, Theme.borderColor().getRGB()); - RenderUtil.drawRoundedRect(modOffsetX, y + modOffsetY - scrollAnimation.getValue(), 65, 70, 3, new Color(255, 255, 255, isHovered ? 30 : 0).getRGB()); - GL11.glColor4f(1, 1, 1, 1); - Client.getInstance().getSilentFontRenderer().drawString(m.getName(), modOffsetX + ((65 / 2) - ((Client.getInstance().getSilentFontRenderer().getStringWidth(m.getName(), 8, FontType.HEADER)) / 2)), y + modOffsetY - scrollAnimation.getValue() + 4, 8, FontType.HEADER); - if(m.getIcon() != null) { - RenderUtil.drawImage(new ResourceLocation(m.getIcon()), modOffsetX + ((65 / 2) - 10), y + modOffsetY - scrollAnimation.getValue() + ((70 / 2) - 10), 20, 20, false); - } - if(selectedCategory.equals(ModCategory.MODS)) { - Switch.render(mouseX, mouseY, switchX, switchY, m.switchAniamation, m.isEnabled(), m.isForceDisabled()); - } - - if(m.isUpdated() || m.isNew()) { - String status = "UPDATED"; - if(m.isNew()) { - status = "NEW"; + + if(mouseInContent(x, (int) (modOffsetY - scrollAnimation.getValue()), y + 25, height - 25) || mouseInContent(x, (int) (modOffsetY - scrollAnimation.getValue() + 70), y + 25, height - 25)) { + float switchX = modOffsetX + ((65 / 2) - (15 / 2)); + float switchY = y + modOffsetY - scrollAnimation.getValue() + 55; + boolean switchHovered = selectedCategory.equals(ModCategory.MODS) && Switch.isHovered(mouseX, mouseY, switchX, switchY) && !headerHovered; + boolean isHovered = MouseUtils.isInside(mouseX, mouseY, modOffsetX, y + modOffsetY - scrollAnimation.getValue(), 65, 70) && !headerHovered && !switchHovered && (Client.getInstance().getSettingsManager().getSettingByMod(m).size() != 0 || m.getName() == "Auto Text"); + RenderUtil.drawRoundedOutline(modOffsetX, y + modOffsetY - scrollAnimation.getValue(), 65, 70, 3, 1, Theme.borderColor().getRGB()); + RenderUtil.drawRoundedRect(modOffsetX, y + modOffsetY - scrollAnimation.getValue(), 65, 70, 3, new Color(255, 255, 255, isHovered ? 30 : 0).getRGB()); + GL11.glColor4f(1, 1, 1, 1); + Client.getInstance().getSilentFontRenderer().drawString(m.getName(), modOffsetX + ((65 / 2) - ((Client.getInstance().getSilentFontRenderer().getStringWidth(m.getName(), 8, SilentFontRenderer.FontType.HEADER)) / 2)), y + modOffsetY - scrollAnimation.getValue() + 4, 8, SilentFontRenderer.FontType.HEADER); + if(m.getIcon() != null) { + RenderUtil.drawImage(new ResourceLocation(m.getIcon()), modOffsetX + ((65 / 2) - 10), y + modOffsetY - scrollAnimation.getValue() + ((70 / 2) - 10), 20, 20, false); + } + if(selectedCategory.equals(ModCategory.MODS)) { + Switch.render(mouseX, mouseY, switchX, switchY, m.switchAniamation, m.isEnabled(), m.isForceDisabled()); + } + + if(m.isUpdated() || m.isNew()) { + String status = "UPDATED"; + if(m.isNew()) { + status = "NEW"; + } + float badgeX = modOffsetX + ((65 / 2) - 15); + float badgeY = y + modOffsetY - scrollAnimation.getValue() + 13; + RenderUtil.drawRoundedRect(badgeX, badgeY, 30, 8, 8, Color.RED.getRGB()); + Client.getInstance().getSilentFontRenderer().drawString(status, badgeX + (status.equals("UPDATED") ? 3 : 9), badgeY + 1, 6, SilentFontRenderer.FontType.HEADER); } - float badgeX = modOffsetX + ((65 / 2) - 15); - float badgeY = y + modOffsetY - scrollAnimation.getValue() + 13; - RenderUtil.drawRoundedRect(badgeX, badgeY, 30, 8, 8, Color.RED.getRGB()); - Client.getInstance().getSilentFontRenderer().drawString(status, badgeX + (status.equals("UPDATED") ? 3 : 9), badgeY + 1, 6, SilentFontRenderer.FontType.HEADER); } modOffsetY += column == 4 ? 75 : 0; @@ -247,6 +249,10 @@ public class ClickGUI extends SilentScreen { } } + public static boolean mouseInContent(int mouseX, int mouseY, int y, int height) { + return MouseUtils.isInside(mouseX, mouseY, mouseX, y,mouseX + 1, height); + } + private ArrayList getMods() { if(this.silentInputs.get(0).getValue().trim().equals("") || !selectedCategory.equals(ModCategory.MODS)) { return Client.getInstance().getModInstances().getModByCategory(selectedCategory); 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 7796479..eeb91f4 100644 --- a/src/main/java/net/silentclient/client/gui/modmenu/ModMenu.java +++ b/src/main/java/net/silentclient/client/gui/modmenu/ModMenu.java @@ -108,7 +108,6 @@ public class ModMenu extends SilentScreen { } public static void drawOverlayListBase(float height, String header) { - ModMenu.introAnimation.setAnimation(0, 30); GlStateManager.translate(ModMenu.introAnimation.getValue(), 0, 0); RenderUtils.drawRect(0, 0, 150, height, Theme.backgroundColor().getRGB()); RenderUtil.drawImage(new ResourceLocation("silentclient/logos/logo.png"), 3, 3, 97.7F, 19); @@ -122,6 +121,9 @@ public class ModMenu extends SilentScreen { if(ModMenu.introAnimation.getValue() == 0) { ModMenu.loaded = true; } + if(!loaded) { + ModMenu.introAnimation.setAnimation(0, 30); + } MenuBlurUtils.renderBackground(this); ModMenu.drawOverlayListBase(height, modCategory == ModCategory.PLUS ? "Premium" : null); @@ -345,8 +347,12 @@ public class ModMenu extends SilentScreen { scrollAnimation.setValue(0); } + public static boolean mouseInContent(int mouseX, int mouseY, float height, boolean mainMenu) { + return MouseUtils.isInside(mouseX, mouseY, 0, 66, 150, height - 66 - (mainMenu ? 21 : 0)); + } + public static boolean mouseInContent(int mouseX, int mouseY, float height) { - return MouseUtils.isInside(mouseX, mouseY, 0, 66, 150, height - 66 - 21); + return mouseInContent(mouseX, mouseY, height, true); } @Override 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 500381a..769656e 100644 --- a/src/main/java/net/silentclient/client/gui/modmenu/ModSettings.java +++ b/src/main/java/net/silentclient/client/gui/modmenu/ModSettings.java @@ -172,6 +172,10 @@ public class ModSettings extends SilentScreen { protected void mouseClicked(int mouseX, int mouseY, int mouseButton) throws IOException { super.mouseClicked(mouseX, mouseY, mouseButton); + if(!ModMenu.mouseInContent(mouseX, mouseY, height, false)) { + return; + } + float settingY = 66 - scrollAnimation.getValue(); int inputIndex = 0; diff --git a/src/main/java/net/silentclient/client/keybinds/KeyBindManager.java b/src/main/java/net/silentclient/client/keybinds/KeyBindManager.java index 89719b6..1df6344 100644 --- a/src/main/java/net/silentclient/client/keybinds/KeyBindManager.java +++ b/src/main/java/net/silentclient/client/keybinds/KeyBindManager.java @@ -1,6 +1,5 @@ package net.silentclient.client.keybinds; -import net.minecraft.client.Minecraft; import net.minecraft.client.settings.GameSettings; import net.minecraft.client.settings.KeyBinding; import org.apache.commons.lang3.ArrayUtils; @@ -11,10 +10,12 @@ import java.util.Arrays; public class KeyBindManager { public KeyBinding CLICKGUI = new KeyBinding("Silent Client - Mod Menu", Keyboard.KEY_RSHIFT, "Silent Client"); public KeyBinding PERSPECTIVE = new KeyBinding("Silent Client - Perspective", Keyboard.KEY_LMENU, "Silent Client"); + public KeyBinding ZOOM = new KeyBinding("Silent Client - Zoom", Keyboard.KEY_C, "Silent Client"); public KeyBindManager(GameSettings gameSettings) { this.registerKeyBind(gameSettings, CLICKGUI); this.registerKeyBind(gameSettings, PERSPECTIVE); + this.registerKeyBind(gameSettings, ZOOM); } public void registerKeyBind(GameSettings gameSettings, KeyBinding key) { diff --git a/src/main/java/net/silentclient/client/mixin/mixins/MinecraftMixin.java b/src/main/java/net/silentclient/client/mixin/mixins/MinecraftMixin.java index 1c50b92..bfc579c 100644 --- a/src/main/java/net/silentclient/client/mixin/mixins/MinecraftMixin.java +++ b/src/main/java/net/silentclient/client/mixin/mixins/MinecraftMixin.java @@ -23,6 +23,7 @@ import net.silentclient.client.gui.lite.LiteMainMenu; import net.silentclient.client.gui.silentmainmenu.SilentMainMenu; import net.silentclient.client.gui.util.BackgroundPanorama; import net.silentclient.client.hooks.MinecraftHook; +import net.silentclient.client.mods.player.ZoomMod; import net.silentclient.client.mods.render.AnimationsMod; import net.silentclient.client.mods.settings.FPSBoostMod; import org.apache.commons.lang3.SystemUtils; @@ -36,9 +37,7 @@ import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Overwrite; import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.Redirect; +import org.spongepowered.asm.mixin.injection.*; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import java.io.File; @@ -213,6 +212,14 @@ public abstract class MinecraftMixin { event.call(); } + @Redirect(method = "runTick", at = @At(value = "INVOKE", target = "Lorg/lwjgl/input/Mouse;getEventDWheel()I")) + public int cancelScroll() { + if(!Client.getInstance().getModInstances().getZoomMod().isEnabled() || !Client.getInstance().getModInstances().getZoomMod().isActive() || !Client.getInstance().getSettingsManager().getSettingByClass(ZoomMod.class, "Scroll").getValBoolean()) { + return Mouse.getEventDWheel(); + } + return 0; + } + @Inject(method = "setInitialDisplayMode", at = @At(value = "HEAD"), cancellable = true) private void setInitialDisplayMode(CallbackInfo ci) throws LWJGLException { MinecraftHook.displayFix(ci, fullscreen, displayWidth, displayHeight); diff --git a/src/main/java/net/silentclient/client/mods/player/ZoomMod.java b/src/main/java/net/silentclient/client/mods/player/ZoomMod.java index 3d33a66..ddd663c 100644 --- a/src/main/java/net/silentclient/client/mods/player/ZoomMod.java +++ b/src/main/java/net/silentclient/client/mods/player/ZoomMod.java @@ -8,6 +8,7 @@ import net.silentclient.client.event.impl.EventZoomFov; import net.silentclient.client.gui.animation.SimpleAnimation; import net.silentclient.client.mods.Mod; import net.silentclient.client.mods.ModCategory; +import org.lwjgl.input.Keyboard; public class ZoomMod extends Mod { public ZoomMod() { @@ -37,21 +38,21 @@ public class ZoomMod extends Mod { @EventTarget public void onTick(ClientTickEvent event) { -// if(mc.gameSettings.ofKeyBindZoom.isKeyDown()) { -// if(!active) { -// active = true; -// lastSensitivity = mc.gameSettings.mouseSensitivity; -// resetFactor(); -// wasCinematic = this.mc.gameSettings.smoothCamera; -// mc.gameSettings.smoothCamera = Client.getInstance().getSettingsManager().getSettingByName(this, "Smooth Camera").getValBoolean(); -// mc.renderGlobal.setDisplayListEntitiesDirty(); -// } -// }else if(active) { -// active = false; -// setFactor(1); -// mc.gameSettings.mouseSensitivity = lastSensitivity; -// mc.gameSettings.smoothCamera = wasCinematic; -// } + if(Keyboard.isKeyDown(Client.getInstance().getKeyBindManager().ZOOM.getKeyCode()) && mc.inGameHasFocus) { + if(!active) { + active = true; + lastSensitivity = mc.gameSettings.mouseSensitivity; + resetFactor(); + wasCinematic = this.mc.gameSettings.smoothCamera; + mc.gameSettings.smoothCamera = Client.getInstance().getSettingsManager().getSettingByName(this, "Smooth Camera").getValBoolean(); + mc.renderGlobal.setDisplayListEntitiesDirty(); + } + }else if(active) { + active = false; + setFactor(1); + mc.gameSettings.mouseSensitivity = lastSensitivity; + mc.gameSettings.smoothCamera = wasCinematic; + } } @EventTarget