From eba1a092fb96a628421867539875aae915ab6fb0 Mon Sep 17 00:00:00 2001 From: Colton Date: Sun, 5 May 2024 09:49:53 -0400 Subject: [PATCH] Fix for 1.20.5 Hopefully this fixes the gradle issues! --- .gitattributes | 9 + build.gradle | 10 - gradle.bat | 92 ----- gradle.properties | 10 +- settings.gradle | 18 +- src/main/java/net/aoba/gui/Color.java | 325 ++++++++++++++++++ src/main/java/net/aoba/gui/tabs/HudsTab.java | 112 ++++++ src/main/java/net/aoba/misc/Colors.java | 36 ++ src/main/java/net/aoba/misc/RainbowColor.java | 47 +++ .../java/net/aoba/mixin/ChatScreenMixin.java | 2 +- src/main/resources/aoba.mixins.json | 101 +++--- src/main/resources/assets/aoba/icon.png | Bin 0 -> 5806 bytes src/main/resources/fabric.mod.json | 58 ++-- 13 files changed, 623 insertions(+), 197 deletions(-) create mode 100644 .gitattributes delete mode 100644 gradle.bat create mode 100644 src/main/java/net/aoba/gui/Color.java create mode 100644 src/main/java/net/aoba/gui/tabs/HudsTab.java create mode 100644 src/main/java/net/aoba/misc/Colors.java create mode 100644 src/main/java/net/aoba/misc/RainbowColor.java create mode 100644 src/main/resources/assets/aoba/icon.png diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000..097f9f98 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,9 @@ +# +# https://help.github.com/articles/dealing-with-line-endings/ +# +# Linux start script should use lf +/gradlew text eol=lf + +# These are Windows script files and should use crlf +*.bat text eol=crlf + diff --git a/build.gradle b/build.gradle index b09bc166..ac97a03b 100644 --- a/build.gradle +++ b/build.gradle @@ -18,16 +18,6 @@ repositories { // for more information about repositories. } -loom { - splitEnvironmentSourceSets() - mods { - "aoba" { - sourceSet sourceSets.main - sourceSet sourceSets.client - } - } -} - dependencies { // To change the versions see the gradle.properties file minecraft "com.mojang:minecraft:${project.minecraft_version}" diff --git a/gradle.bat b/gradle.bat deleted file mode 100644 index 1cce1818..00000000 --- a/gradle.bat +++ /dev/null @@ -1,92 +0,0 @@ -@rem -@rem Copyright 2015 the original author or authors. -@rem -@rem Licensed under the Apache License, Version 2.0 (the "License"); -@rem you may not use this file except in compliance with the License. -@rem You may obtain a copy of the License at -@rem -@rem https://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, software -@rem distributed under the License is distributed on an "AS IS" BASIS, -@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@rem See the License for the specific language governing permissions and -@rem limitations under the License. -@rem - -@if "%DEBUG%"=="" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%"=="" set DIRNAME=. -@rem This is normally unused -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME%.. - -@rem Resolve any "." and ".." in APP_HOME to make it shorter. -for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" "-javaagent:%APP_HOME%/lib/agents/gradle-instrumentation-agent-8.7.jar" - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if %ERRORLEVEL% equ 0 goto execute - -echo. 1>&2 -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 -echo. 1>&2 -echo Please set the JAVA_HOME variable in your environment to match the 1>&2 -echo location of your Java installation. 1>&2 - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto execute - -echo. 1>&2 -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 -echo. 1>&2 -echo Please set the JAVA_HOME variable in your environment to match the 1>&2 -echo location of your Java installation. 1>&2 - -goto fail - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\lib\gradle-launcher-8.7.jar - - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.launcher.GradleMain %* - -:end -@rem End local scope for the variables with windows NT shell -if %ERRORLEVEL% equ 0 goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -set EXIT_CODE=%ERRORLEVEL% -if %EXIT_CODE% equ 0 set EXIT_CODE=1 -if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% -exit /b %EXIT_CODE% - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/gradle.properties b/gradle.properties index b660093f..35a32b54 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,5 @@ # Done to increase the memory available to gradle. -org.gradle.jvmargs=-Xmx2G +org.gradle.jvmargs=-Xmx1G org.gradle.parallel=true # Fabric Properties @@ -9,9 +9,9 @@ yarn_mappings=1.20.5+build.1 loader_version=0.15.11 # Mod Properties -mod_version = 1.4.1 -maven_group = net.aoba -archives_base_name = Aoba +mod_version=1.4.1 +maven_group=net.aoba +archives_base_name=Aoba # Dependencies -fabric_version=0.97.8+1.20.5 +fabric_version=0.97.8+1.20.5 \ No newline at end of file diff --git a/settings.gradle b/settings.gradle index b02216ba..75c4d726 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,10 +1,10 @@ pluginManagement { - repositories { - maven { - name = 'Fabric' - url = 'https://maven.fabricmc.net/' - } - mavenCentral() - gradlePluginPortal() - } -} + repositories { + maven { + name = 'Fabric' + url = 'https://maven.fabricmc.net/' + } + mavenCentral() + gradlePluginPortal() + } +} \ No newline at end of file diff --git a/src/main/java/net/aoba/gui/Color.java b/src/main/java/net/aoba/gui/Color.java new file mode 100644 index 00000000..1f7ffbae --- /dev/null +++ b/src/main/java/net/aoba/gui/Color.java @@ -0,0 +1,325 @@ +/* +* Aoba Hacked Client +* Copyright (C) 2019-2024 coltonk9043 +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*/ + +/** + * A class to represent Colors and their respective functions. + */ + +package net.aoba.gui; + +import org.apache.commons.lang3.StringUtils; +import org.joml.Vector3f; + +public class Color { + + public static Color WHITE = new Color(255, 255, 255); + + public int r; + public int g; + public int b; + public int alpha = 255; + + public float hue; + public float saturation; + public float luminance; + + /** + * Color Constructor using RGB color space. + * + * @param r Red component of a Color. + * @param g Green component of a Color. + * @param b Blue component of a Color. + */ + public Color(int r, int g, int b) { + this.r = r; + this.g = g; + this.b = b; + + HSVFromRGB(r, g, b); + } + + public Color(int r, int g, int b, int alpha) { + this.r = r; + this.g = g; + this.b = b; + + HSVFromRGB(r, g, b); + + this.alpha = alpha; + } + + private void HSVFromRGB(int r, int g, int b) { + // Calculate HSV value + float rPrime = r / 255.0f; + float gPrime = g / 255.0f; + float bPrime = b / 255.0f; + + float cMax = Math.max(rPrime, Math.max(gPrime, bPrime)); + float cMin = Math.min(rPrime, Math.min(gPrime, bPrime)); + + float delta = cMax - cMin; + + // Calculate Hue + if(delta == 0.0f) { + hue = 0.0f; + }else { + if (cMax == rPrime) { + hue = (60.0f * (((gPrime - bPrime) / delta) % 6)); + } else if (cMax == gPrime) { + hue = (60.0f * (((bPrime - rPrime) / delta) + 2)); + } else if (cMax == bPrime) { + hue = (60.0f * (((rPrime - gPrime) / delta) + 2)); + } + } + + // Calculate Saturation + if (cMax == 0.0f) + saturation = 0.0f; + else + saturation = delta / cMax; + + // Calculate Luminance + luminance = cMax; + } + + /** + * Color Constructor using HSV color space. + * + * @param hue + * @param saturation + * @param luminance + */ + public Color(float hue, float saturation, float luminance) { + this.setHSV(hue, saturation, luminance); + } + + /** + * Sets the RGB and HSV fields using inputs from an HSV color space. + * + * @param hue The hue of the HSV color space. + * @param saturation The saturation of the HSV color space. + * @param value + */ + public void setHSV(float hue, float saturation, float luminance) { + this.hue = hue; + this.saturation = saturation; + this.luminance = luminance; + Color vec = hsv2rgb(hue, saturation, luminance); + if(vec != null) { + this.r = vec.r; + this.g = vec.g; + this.b = vec.b; + } + } + + /** + * Sets the RGB fields using inputs from an RGB color space. + * + * @param r Red component of a Color. + * @param g Green component of a Color. + * @param b Blue component of a Color. + */ + public void setRGB(int r, int g, int b) { + this.r = r; + this.g = g; + this.b = b; + } + + public void setRGBA(int r, int g, int b, int alpha) { + this.r = r; + this.g = b; + this.b = b; + this.alpha = alpha; + } + + public void setAlpha(int alpha) { + this.alpha = alpha; + } + + /** + * Returns the Color as a string in format RRRGGGBBB. + * + * @return + */ + public String getColorAsString() { + String rs = Integer.toString((int) (r)); + String gs = Integer.toString((int) (g)); + String bs = Integer.toString((int) (b)); + return rs + gs + bs; + } + + /** + * Returns the color as an Integer for Minecraft Rendering. + * + * @return The color as an integer. + */ + public int getColorAsInt() { + // Perform shifts and Bitwise AND to get color value in integer format. + int Alpha = ((this.alpha) << 24) & 0xFF000000; + int R = ((this.r) << 16) & 0x00FF0000; + int G = ((this.g) << 8) & 0x0000FF00; + int B = (this.b) & 0x000000FF; + // Return the color as a combination of these values. + return Alpha | R | G | B; + } + + /** + * Returns the color as a string in Hex format. + * + * @return The color represented as Hex. + */ + public String getColorAsHex() { + return String.format("#%06X", this.getColorAsInt()); + } + + /** + * Gets the Red component as a float. + * + * @return Red component as a float. + */ + public float getRedFloat() { + return ((float) this.r) / 255.0f; + } + + /** + * Gets the Green component as a float. + * + * @return Green component as a float. + */ + public float getGreenFloat() { + return ((float) this.g) / 255.0f; + } + + /** + * Gets the Blue component as a float. + * + * @return Blue component as a float. + */ + public float getBlueFloat() { + return ((float) this.b) / 255.0f; + } + + public float getAlphaFloat() { + return ((float) this.alpha) / 255.0f; + } + + /** + * Converts RGB codes to a String. + * + * @param r Red component. + * @param g Green component. + * @param b Blue component. + * @return Color as a String. + */ + public static String rgbToString(int r, int g, int b) { + String rs = Integer.toString((int) (r)); + String gs = Integer.toString((int) (g)); + String bs = Integer.toString((int) (b)); + return rs + gs + bs; + } + + /** + * Converts RGB codes to an Integer. + * + * @param r Red component. + * @param g Green component. + * @param b Blue component. + * @return Color as an Integer. + */ + public static int rgbToInt(int r, int g, int b) { + String rs = Integer.toString((int) (r)); + String gs = Integer.toString((int) (g)); + String bs = Integer.toString((int) (b)); + return Integer.parseInt(rs + gs + bs); + } + + /** + * Converts RGB codes to Hex. + * + * @param r Red component. + * @param g Green component. + * @param b Blue component. + * @return Color as Hex. + */ + public static int convertRGBToHex(int r, int g, int b) { + String strr = StringUtils.leftPad(Integer.toHexString(r), 2, '0'); + String strg = StringUtils.leftPad(Integer.toHexString(g), 2, '0'); + String strb = StringUtils.leftPad(Integer.toHexString(b), 2, '0'); + String string = strr + strg + strb; + return Integer.parseInt(string, 16); + } + + /** + * Converts Hex codes to RGB. + * + * @param hex Color as Hex. + * @return Color from Hex Code. + */ + public static Color convertHextoRGB(String hex) { + String RString = hex.charAt(1) + "" + hex.charAt(2); + String GString = hex.charAt(3) + "" + hex.charAt(4); + String BString = hex.charAt(5) + "" + hex.charAt(6); + + float r = Integer.valueOf(RString, 16); + float g = Integer.valueOf(GString, 16); + float b = Integer.valueOf(BString, 16); + return new Color(r, g, b); + } + + /** + * Converts HSV into RGB color space. + * + * @param hue The hue of the HSV color space. + * @param saturation The saturation of the HSV color space. + * @param luminance The luminance of the HSV color space. + * @return The color represented by HSV. + */ + public static Color hsv2rgb(float hue, float saturation, float luminance) { + // Get the side that the colour is contained in. + float h = (hue / 60); + float chroma = luminance * saturation; + float x = chroma * (1 - Math.abs((h % 2) - 1)); + + // Depending on the side, set the Chroma component to the correct Color. + Vector3f rgbVec; + if (h >= 0 && h <= 1) { + rgbVec = new Vector3f(chroma, x, 0); + } else if (h >= 1 && h <= 2) { + rgbVec = new Vector3f(x, chroma, 0); + } else if (h >= 2 && h <= 3) { + rgbVec = new Vector3f(0, chroma, x); + } else if (h >= 3 && h <= 4) { + rgbVec = new Vector3f(0, x, chroma); + } else if (h >= 4 && h <= 5) { + rgbVec = new Vector3f(x, 0, chroma); + } else if (h >= 5 && h <= 6) { + rgbVec = new Vector3f(chroma, 0, x); + } else { + rgbVec = null; + } + + // If the Color does exist, add luminance and convert to RGB. + if (rgbVec != null) { + float m = luminance - chroma; + return new Color((int) (255.0f * (rgbVec.x + m)), (int) (255.0f * (rgbVec.y + m)), + (int) (255.0f * (rgbVec.z + m))); + } + return null; + } + +} diff --git a/src/main/java/net/aoba/gui/tabs/HudsTab.java b/src/main/java/net/aoba/gui/tabs/HudsTab.java new file mode 100644 index 00000000..ad7dfade --- /dev/null +++ b/src/main/java/net/aoba/gui/tabs/HudsTab.java @@ -0,0 +1,112 @@ +/* +* Aoba Hacked Client +* Copyright (C) 2019-2024 coltonk9043 +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*/ + +package net.aoba.gui.tabs; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Set; + +import net.aoba.Aoba; +import net.aoba.event.events.MouseScrollEvent; +import net.aoba.event.listeners.MouseScrollListener; +import net.aoba.gui.Color; +import net.aoba.gui.GuiManager; +import net.aoba.gui.font.FontManager; +import net.aoba.gui.hud.AbstractHud; +import net.aoba.gui.tabs.components.ColorPickerComponent; +import net.aoba.gui.tabs.components.HudComponent; +import net.aoba.gui.tabs.components.KeybindComponent; +import net.aoba.gui.tabs.components.ListComponent; +import net.aoba.gui.tabs.components.StackPanelComponent; +import net.aoba.gui.tabs.components.StringComponent; +import net.minecraft.client.font.TextRenderer; +import net.minecraft.client.gui.DrawContext; +import net.aoba.module.Module; +import net.aoba.settings.types.StringSetting; + +public class HudsTab extends ClickGuiTab implements MouseScrollListener { + + int visibleScrollElements; + int currentScroll; + + public HudsTab(AbstractHud[] abstractHuds) { + super("Hud Options", 50, 50, false); + + Aoba.getInstance().eventManager.AddListener(MouseScrollListener.class, this); + StackPanelComponent stackPanel = new StackPanelComponent(this); + stackPanel.setTop(30); + + List test = new ArrayList(); + + + HashMap fontRenderers = Aoba.getInstance().fontManager.fontRenderers; + Set set = fontRenderers.keySet(); + + for(String s : set) { + test.add(s); + } + + stackPanel.addChild(new StringComponent("Toggle HUD", stackPanel, GuiManager.foregroundColor.getValue(), true)); + + for(AbstractHud hud : abstractHuds) { + HudComponent hudComponent = new HudComponent(hud.getID(), stackPanel, hud); + stackPanel.addChild(hudComponent); + } + + // Keybinds Header + stackPanel.addChild(new StringComponent("Keybinds", stackPanel, GuiManager.foregroundColor.getValue(), true)); + + KeybindComponent clickGuiKeybindComponent = new KeybindComponent(stackPanel, Aoba.getInstance().hudManager.clickGuiButton); + clickGuiKeybindComponent.setHeight(30); + stackPanel.addChild(clickGuiKeybindComponent); + + // Hud Font Header + stackPanel.addChild(new StringComponent("HUD Font", stackPanel, GuiManager.foregroundColor.getValue(), true)); + + + + ListComponent listComponent = new ListComponent(stackPanel, test, Aoba.getInstance().fontManager.fontSetting); + stackPanel.addChild(listComponent); + + stackPanel.addChild(new StringComponent("HUD Colors", stackPanel, GuiManager.foregroundColor.getValue(), true)); + + stackPanel.addChild(new ColorPickerComponent(stackPanel, GuiManager.foregroundColor)); + stackPanel.addChild(new ColorPickerComponent(stackPanel, GuiManager.backgroundColor)); + stackPanel.addChild(new ColorPickerComponent(stackPanel, GuiManager.borderColor)); + + this.children.add(stackPanel); + this.setWidth(300); + } + + @Override + public void OnMouseScroll(MouseScrollEvent event) { + ArrayList modules = Aoba.getInstance().moduleManager.modules; + + if(event.GetVertical() > 0) + this.currentScroll = Math.min(currentScroll + 1, modules.size() - visibleScrollElements - 1); + else if(event.GetVertical() < 0) + this.currentScroll = Math.max(currentScroll - 1, 0); + } + + @Override + public void draw(DrawContext drawContext, float partialTicks) { + super.draw(drawContext, partialTicks); + } +} diff --git a/src/main/java/net/aoba/misc/Colors.java b/src/main/java/net/aoba/misc/Colors.java new file mode 100644 index 00000000..6f735b32 --- /dev/null +++ b/src/main/java/net/aoba/misc/Colors.java @@ -0,0 +1,36 @@ +/* +* Aoba Hacked Client +* Copyright (C) 2019-2024 coltonk9043 +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*/ + +package net.aoba.misc; + +import net.aoba.gui.Color; + +public class Colors { + public static final Color Red = new Color(255, 0, 0); + public static final Color Orange = new Color(255, 165, 0); + public static final Color Yellow = new Color(255, 255, 0); + public static final Color Green = new Color(0, 255, 0); + public static final Color Cyan = new Color(0, 255, 255); + public static final Color Blue = new Color(0, 0, 255); + public static final Color Purple = new Color(255, 0, 255); + public static final Color Pink = new Color(255, 192, 203); + public static final Color Black = new Color(0, 0, 0); + public static final Color Charcoal = new Color(54, 69, 79); + public static final Color Gray = new Color(127, 127, 127); + public static final Color White = new Color(255, 255, 255); +} diff --git a/src/main/java/net/aoba/misc/RainbowColor.java b/src/main/java/net/aoba/misc/RainbowColor.java new file mode 100644 index 00000000..290e0ed6 --- /dev/null +++ b/src/main/java/net/aoba/misc/RainbowColor.java @@ -0,0 +1,47 @@ +/* +* Aoba Hacked Client +* Copyright (C) 2019-2024 coltonk9043 +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*/ + +/** + * A class to represent a Color that iterates. + */ +package net.aoba.misc; + +import net.aoba.gui.Color; + +public class RainbowColor { + private Color color; + private float timer = 0f; + + public RainbowColor() { + this.color = new Color(255, 0, 0); + } + + public void update(float timerIncrement) { + if (timer >= (20 - timerIncrement)) { + timer = 0f; + this.color.setHSV(((this.color.hue + 1f) % 361), 1f, 1f); + } else { + timer++; + } + + } + + public Color getColor() { + return this.color; + } +} diff --git a/src/main/java/net/aoba/mixin/ChatScreenMixin.java b/src/main/java/net/aoba/mixin/ChatScreenMixin.java index 228b2140..5d39a850 100644 --- a/src/main/java/net/aoba/mixin/ChatScreenMixin.java +++ b/src/main/java/net/aoba/mixin/ChatScreenMixin.java @@ -108,7 +108,7 @@ protected void onRender(DrawContext context, int mouseX, int mouseY, float delta } @Inject(at = { - @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/hud/ChatHud;addToMessageHistory(Ljava/lang/String;)V", ordinal = 0, shift = At.Shift.AFTER) }, method = "sendMessage(Ljava/lang/String;Z)Z", cancellable = true) + @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/hud/ChatHud;addToMessageHistory(Ljava/lang/String;)V", shift = At.Shift.AFTER) }, method = "sendMessage(Ljava/lang/String;Z)V", cancellable = true) public void onSendMessage(String message, boolean addToHistory, CallbackInfo ci) { if (message.startsWith(CommandManager.PREFIX.getValue())) { Aoba.getInstance().commandManager.command(message.split(" ")); diff --git a/src/main/resources/aoba.mixins.json b/src/main/resources/aoba.mixins.json index 223d30e8..f57800dd 100644 --- a/src/main/resources/aoba.mixins.json +++ b/src/main/resources/aoba.mixins.json @@ -1,52 +1,51 @@ { - "required": true, - "minVersion": "0.8", - "package": "net.aoba.mixin", - "compatibilityLevel": "JAVA_21", - "mixins": [ - "interfaces.ILivingEntity", - "interfaces.IMinecraftClient", - "interfaces.IExplosionS2CPacket", - "interfaces.IEntityVelocityUpdateS2CPacket", - "interfaces.IPlayerInteractEntityC2SPacket" - ], - "client": [ - "AbstractBlockStateMixin", - "AbstractClientPlayerEntityMixin", - "AbstractSignEditScreenMixin", - "BackgroundRendererMixin", - "BlockMixin", - "BlockModelRendererMixin", - "CactusBlockMixin", - "ChatHudMixin", - "ChatInputSuggestorMixin", - "ChatScreenMixin", - "ChunkOcclusionDataBuilderMixin", - "ClientConnectionMixin", - "ClientPlayerEntityMixin", - "ClientPlayerInteractionManagerMixin", - "DeathScreenMixin", - "EntityMixin", - "EntityRendererMixin", - "FluidBlockMixin", - "GameRendererMixin", - "HungerManagerMixin", - "IngameHudMixin", - "KeyboardMixin", - "LightmapTextureManagerMixin", - "LivingEntityMixin", - "MinecraftClientMixin", - "MouseMixin", - "MultiplayerScreenMixin", - "PlayerEntityMixin", - "RenderTickCounterMixin", - "ScreenMixin", - "SimpleOptionMixin", - "TitleScreenMixin", - "WorldChunkMixin", - "WorldRendererMixin" - ], - "injectors": { - "defaultRequire": 1 - } -} + "required": true, + "package": "net.aoba.mixin", + "compatibilityLevel": "JAVA_21", + "mixins": [ + "interfaces.ILivingEntity", + "interfaces.IMinecraftClient", + "interfaces.IExplosionS2CPacket", + "interfaces.IEntityVelocityUpdateS2CPacket", + "interfaces.IPlayerInteractEntityC2SPacket" + ], + "client": [ + "AbstractBlockStateMixin", + "AbstractClientPlayerEntityMixin", + "AbstractSignEditScreenMixin", + "BackgroundRendererMixin", + "BlockMixin", + "BlockModelRendererMixin", + "CactusBlockMixin", + "ChatHudMixin", + "ChatInputSuggestorMixin", + "ChatScreenMixin", + "ChunkOcclusionDataBuilderMixin", + "ClientConnectionMixin", + "ClientPlayerEntityMixin", + "ClientPlayerInteractionManagerMixin", + "DeathScreenMixin", + "EntityMixin", + "EntityRendererMixin", + "FluidBlockMixin", + "GameRendererMixin", + "HungerManagerMixin", + "IngameHudMixin", + "KeyboardMixin", + "LightmapTextureManagerMixin", + "LivingEntityMixin", + "MinecraftClientMixin", + "MouseMixin", + "MultiplayerScreenMixin", + "PlayerEntityMixin", + "RenderTickCounterMixin", + "ScreenMixin", + "SimpleOptionMixin", + "TitleScreenMixin", + "WorldChunkMixin", + "WorldRendererMixin" + ], + "injectors": { + "defaultRequire": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/assets/aoba/icon.png b/src/main/resources/assets/aoba/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..b45d19a07fd6fc36eb6213a85a42308318ebc725 GIT binary patch literal 5806 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.15.10", - "fabric-api": ">=0.97.7", - "minecraft": "1.20.5", - "java": ">=21" - } -} + "schemaVersion": 1, + "id": "aoba", + "version": "1.4.1", + "name": "Aoba Hacked Client", + "description": "Custom hacked client running on Fabric 1.20.5", + "authors": [ + "Cocolots" + ], + "contact": { + "sources": "https://github.com/coltonk9043/Aoba-MC-Hacked-Client" + }, + "license": "CC0-1.0", + "icon": "assets/aoba/icon.png", + "environment": "*", + "entrypoints": { + "main": [ + "net.aoba.Aoba" + ] + }, + "mixins": [ + "aoba.mixins.json" + ], + "depends": { + "fabricloader": ">=0.15.11", + "minecraft": "~1.20.5", + "java": ">=21", + "fabric-api": "*" + } +} \ No newline at end of file