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 00000000..b45d19a0 Binary files /dev/null and b/src/main/resources/assets/aoba/icon.png differ diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 046ee17a..f4c541b7 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -1,30 +1,30 @@ { - "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/modid/icon.png", - "environment": "*", - "entrypoints": { - "main": [ - "net.aoba.Aoba" - ] - }, - "mixins": [ - "aoba.mixins.json" - ], - "depends": { - "fabricloader": ">=0.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