├── .github └── workflows │ ├── gradle.yml │ └── junit.yml ├── .gitignore ├── LICENSE.md ├── README.md ├── build.gradle.kts ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── settings.gradle.kts └── src ├── main ├── java │ └── me │ │ ├── aurora │ │ └── client │ │ │ ├── Aurora.java │ │ │ ├── commands │ │ │ ├── ConfigCommand.java │ │ │ ├── CrabbyCommand.java │ │ │ └── HUDCommand.java │ │ │ ├── config │ │ │ ├── Config.java │ │ │ ├── HUDEdit.java │ │ │ └── MainHud.java │ │ │ ├── events │ │ │ └── TickEndEvent.java │ │ │ ├── features │ │ │ ├── Module.java │ │ │ ├── dungeons │ │ │ │ ├── AutoBuyArrows.java │ │ │ │ ├── AutoSell.java │ │ │ │ ├── AutoTank.java │ │ │ │ ├── Ghostblock.java │ │ │ │ ├── NoBedrock.java │ │ │ │ ├── NoDowntime.java │ │ │ │ ├── TerminalAnnouncer.java │ │ │ │ ├── WitherCloakAura.java │ │ │ │ └── WitherDoorRemover.java │ │ │ ├── garden │ │ │ │ ├── AutoComposter.java │ │ │ │ └── GrassESP.java │ │ │ ├── macros │ │ │ │ ├── BedrockFailsafe.java │ │ │ │ ├── F11.java │ │ │ │ ├── HotbarFailsafe.java │ │ │ │ ├── PathFailsafe.java │ │ │ │ ├── RotationFailsafe.java │ │ │ │ └── WorldChangeFailsafe.java │ │ │ ├── mining │ │ │ │ ├── GemstoneScanner.java │ │ │ │ └── StructureScanner.java │ │ │ ├── misc │ │ │ │ ├── AntiLimbo.java │ │ │ │ ├── AutoHarp.java │ │ │ │ ├── AutoJoinSkyblock.java │ │ │ │ ├── AutoSellBz.java │ │ │ │ ├── AutoSex.java │ │ │ │ ├── AutoWardrobe.java │ │ │ │ ├── HarpStealer.java │ │ │ │ ├── MelodyThrottle.java │ │ │ │ ├── RatEsp.java │ │ │ │ └── UpdateReminder.java │ │ │ ├── movement │ │ │ │ ├── AotvAura.java │ │ │ │ ├── AutoRogue.java │ │ │ │ ├── AutoSprint.java │ │ │ │ ├── FreeCam.java │ │ │ │ ├── NoSlow.java │ │ │ │ └── VClip.java │ │ │ ├── troll │ │ │ │ ├── AprilLimbo.java │ │ │ │ ├── Hilary.java │ │ │ │ └── SlayerDrops.java │ │ │ └── visual │ │ │ │ ├── Element.java │ │ │ │ ├── FPS.java │ │ │ │ ├── Keystrokes.java │ │ │ │ ├── LegacyModuleList.java │ │ │ │ ├── PacketDebug.java │ │ │ │ ├── Speedometer.java │ │ │ │ └── Watermark.java │ │ │ ├── krypton │ │ │ ├── KeyBindHandler.java │ │ │ ├── Main.java │ │ │ ├── Parser.java │ │ │ ├── execs │ │ │ │ ├── IExec.java │ │ │ │ ├── Print.java │ │ │ │ ├── SwapHotbar.java │ │ │ │ └── Wait.java │ │ │ └── management │ │ │ │ ├── MathVariableParser.java │ │ │ │ └── StringVariableParser.java │ │ │ └── utils │ │ │ ├── BindUtils.java │ │ │ ├── BlockDirUtils.java │ │ │ ├── BlockRenderUtils.java │ │ │ ├── CalculationUtils.java │ │ │ ├── DrawUtils.java │ │ │ ├── FPSUtils.java │ │ │ ├── InventoryUtils.java │ │ │ ├── ItemUtils.java │ │ │ ├── LookupBlockUtils.java │ │ │ ├── MessageUtils.java │ │ │ ├── MouseUtils.java │ │ │ ├── PacketHandler.java │ │ │ ├── PacketUtils.java │ │ │ ├── PapiezUtils.java │ │ │ ├── ReflectionUtils.java │ │ │ ├── RemoteUtils.java │ │ │ ├── RotationUtils.java │ │ │ ├── ThemeUtils.java │ │ │ ├── Timer.java │ │ │ ├── capes │ │ │ ├── CapeDatabase.java │ │ │ ├── CapeLayer.java │ │ │ └── CapeManager.java │ │ │ ├── conditions │ │ │ └── ConditionUtils.java │ │ │ ├── font │ │ │ ├── FontCore.java │ │ │ ├── FontDefiner.java │ │ │ └── FontRender.java │ │ │ ├── hud │ │ │ ├── ModuleEditor.java │ │ │ └── ModuleEditorHandler.java │ │ │ ├── iteration │ │ │ ├── BlockOperation.java │ │ │ └── LoopUtils.java │ │ │ ├── rotation │ │ │ ├── AngleUtils.java │ │ │ └── Rotation.java │ │ │ └── string │ │ │ └── StringUtils.java │ │ └── gabagool │ │ └── pico │ │ └── collections │ │ ├── CheckedArrayList.java │ │ ├── SemiCheckedArrayList.java │ │ ├── UncheckedArrayList.java │ │ └── util │ │ └── Conc.java └── resources │ ├── assets │ └── dailydungeons │ │ └── res │ │ ├── biglogo.png │ │ ├── bigrat.png │ │ ├── crab.png │ │ ├── dys.ttf │ │ ├── kanit.ttf │ │ └── oldkanit.ttf │ └── mcmod.info └── test ├── CalculationUtilsTest.java └── NetworkFeaturesTest.java /.github/workflows/gradle.yml: -------------------------------------------------------------------------------- 1 | # This workflow is designed for automation of Aurora deployment 2 | 3 | name: Build (Automatic) 4 | 5 | on: 6 | push: 7 | branches: [ "main" ] 8 | pull_request: 9 | branches: [ "main" ] 10 | 11 | jobs: 12 | build: 13 | runs-on: ubuntu-latest 14 | steps: 15 | - uses: actions/checkout@v3 16 | - name: Set up JDK 8 17 | uses: actions/setup-java@v3 18 | with: 19 | java-version: '17' 20 | distribution: 'temurin' 21 | - name: Fix execution permissions 22 | run: chmod +x gradlew 23 | - name: Build with Gradle 24 | run: ./gradlew build 25 | - name: Collect build artifact 26 | uses: actions/upload-artifact@v3 27 | with: 28 | name: binary 29 | path: build/libs/bin.jar 30 | -------------------------------------------------------------------------------- /.github/workflows/junit.yml: -------------------------------------------------------------------------------- 1 | name: Test using JUnit5 2 | on: 3 | push: 4 | branches: [ "main" ] 5 | pull_request: 6 | branches: [ "main" ] 7 | 8 | permissions: 9 | checks: write 10 | 11 | jobs: 12 | test: 13 | runs-on: ubuntu-latest 14 | steps: 15 | - uses: actions/checkout@v3 16 | - name: Set up JDK 8 17 | uses: actions/setup-java@v3 18 | with: 19 | java-version: '17' 20 | distribution: 'temurin' 21 | - name: Fix execution permissions 22 | run: chmod +x gradlew 23 | - name: Build with Gradle 24 | run: ./gradlew build 25 | - name: Execute test 26 | run: ./gradlew test 27 | - name: Publish Test Report 28 | uses: mikepenz/action-junit-report@v3 29 | if: success() || failure() # always run even if the previous step fails 30 | with: 31 | report_paths: '**/build/test-results/test/TEST-*.xml' 32 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .gradle 2 | .idea 3 | .vscode 4 | build -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # **Aurora** 2 | **Repository for source code of Aurora - truly free (as in freedom!) and very lightweight minecraft addon designed for Hypixel Skyblock.** 3 | 4 | [![GPLv3 Logo](https://upload.wikimedia.org/wikipedia/commons/thumb/9/93/GPLv3_Logo.svg/192px-GPLv3_Logo.svg.png)](https://commons.wikimedia.org/wiki/File:GPLv3_Logo.svg "Free Software Foundation, Public domain, via Wikimedia Commons") 5 | 6 | ![stars](https://img.shields.io/github/stars/AuroraQoL/AuroraClient?style=social) 7 | [![downloads](https://img.shields.io/github/downloads/AuroraQoL/AuroraClient/total)](https://github.com/AuroraQoL/AuroraClient/releases/latest) 8 | ![commit](https://img.shields.io/github/last-commit/AuroraQoL/AuroraClient) 9 | [![discord](https://badges.aleen42.com/src/discord.svg)](https://discord.gg/9GJXNKfHkC) 10 | ![build](https://github.com/AuroraQoL/AuroraClient/actions/workflows/gradle.yml/badge.svg) 11 | 12 | > We've implemented JUnit5-powered automatic tests for some Aurora features and core utils to ensure stability. To check the results, look bellow. 13 | 14 | [![Test using JUnit5](https://github.com/AuroraQoL/AuroraClient/actions/workflows/junit.yml/badge.svg)](https://github.com/AuroraQoL/AuroraClient/actions/workflows/junit.yml) 15 | 16 | ## Join Aurora Discord community! 17 | https://discord.gg/9GJXNKfHkC 18 | 19 | ## Check our website! 20 | https://auroraclient.lol/ 21 | -------------------------------------------------------------------------------- /build.gradle.kts: -------------------------------------------------------------------------------- 1 | import dev.architectury.pack200.java.Pack200Adapter 2 | 3 | plugins { 4 | id("com.github.johnrengelman.shadow") version "7.1.2" 5 | id("gg.essential.loom") version "0.10.0.+" 6 | id("io.github.juuxel.loom-quiltflower-mini") version "7d04f32023" 7 | id("dev.architectury.architectury-pack200") version "0.1.3" 8 | java 9 | idea 10 | } 11 | 12 | version = "3.1.0" 13 | group = "me.aurora.client" 14 | 15 | base { 16 | archivesName.set("AuroraClient") 17 | } 18 | 19 | loom { 20 | silentMojangMappingsLicense() 21 | launchConfigs { 22 | getByName("client") { 23 | arg("--tweakClass", "gg.essential.loader.stage0.EssentialSetupTweaker") 24 | } 25 | } 26 | runConfigs { 27 | getByName("client") { 28 | isIdeConfigGenerated = true 29 | } 30 | remove(getByName("server")) 31 | } 32 | forge { 33 | pack200Provider.set(Pack200Adapter()) 34 | } 35 | } 36 | 37 | val include: Configuration by configurations.creating { 38 | configurations.implementation.get().extendsFrom(this) 39 | } 40 | 41 | repositories { 42 | mavenCentral() 43 | maven("https://repo.sk1er.club/repository/maven-public/") 44 | maven("https://jitpack.io/") 45 | maven("https://repo.spongepowered.org/repository/maven-public/") 46 | maven("https://maven.ilarea.ru/releases") 47 | } 48 | 49 | dependencies { 50 | minecraft("com.mojang:minecraft:1.8.9") 51 | mappings("de.oceanlabs.mcp:mcp_stable:22-1.8.9") 52 | forge("net.minecraftforge:forge:1.8.9-11.15.1.2318-1.8.9") 53 | 54 | include("net.objecthunter:exp4j:0.4.8") 55 | 56 | include("me.cephetir:bladecore-loader-1.8.9-forge:1.2") 57 | implementation("me.cephetir:bladecore-1.8.9-forge:0.0.2-d") 58 | 59 | include("me.cephetir:communist-scanner:1.1.5") 60 | 61 | compileOnly("org.projectlombok:lombok:1.18.26") 62 | annotationProcessor("org.projectlombok:lombok:1.18.26") 63 | testCompileOnly("org.projectlombok:lombok:1.18.26") 64 | testAnnotationProcessor("org.projectlombok:lombok:1.18.26") 65 | testImplementation("org.junit.jupiter:junit-jupiter-api:5.8.1") 66 | testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.8.1") 67 | } 68 | 69 | sourceSets { 70 | main { 71 | output.setResourcesDir(file("${buildDir}/classes/java/main")) 72 | } 73 | test { 74 | java { 75 | srcDirs("src/test") 76 | } 77 | } 78 | } 79 | 80 | tasks { 81 | processResources { 82 | inputs.property("version", project.version) 83 | inputs.property("mcversion", "1.8.9") 84 | 85 | filesMatching("mcmod.info") { 86 | expand(mapOf("version" to project.version, "mcversion" to "1.8.9")) 87 | } 88 | dependsOn(compileJava) 89 | } 90 | jar { 91 | manifest { 92 | attributes( 93 | mapOf( 94 | "ForceLoadAsMod" to true, 95 | "ModSide" to "CLIENT", 96 | "ModType" to "FML", 97 | "TweakClass" to "me.cephetir.bladecore.loader.BladeCoreTweaker", 98 | "TweakOrder" to "0" 99 | ) 100 | ) 101 | } 102 | dependsOn(shadowJar) 103 | enabled = false 104 | } 105 | remapJar { 106 | archiveFileName.set("bin.jar") 107 | input.set(shadowJar.get().archiveFile) 108 | } 109 | shadowJar { 110 | archiveClassifier.set("dev") 111 | duplicatesStrategy = DuplicatesStrategy.EXCLUDE 112 | configurations = listOf(include) 113 | 114 | exclude( 115 | "**/LICENSE.md", 116 | "**/LICENSE.txt", 117 | "**/LICENSE", 118 | "**/NOTICE", 119 | "**/NOTICE.txt", 120 | "pack.mcmeta", 121 | "dummyThing", 122 | "**/module-info.class", 123 | "META-INF/proguard/**", 124 | "META-INF/maven/**", 125 | "META-INF/versions/**", 126 | "META-INF/com.android.tools/**", 127 | "fabric.mod.json" 128 | ) 129 | mergeServiceFiles() 130 | } 131 | withType { 132 | options.encoding = "UTF-8" 133 | sourceCompatibility = JavaVersion.VERSION_1_8.toString() 134 | targetCompatibility = JavaVersion.VERSION_1_8.toString() 135 | } 136 | } 137 | 138 | tasks.test { 139 | useJUnitPlatform() 140 | } -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx4G 2 | org.gradle.caching=true 3 | org.gradle.parallel=true 4 | loom.platform=forge -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AuroraQoL/AuroraClient/45275a0221b60986d5eb052cc2d53090171c1e53/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Mon Sep 14 12:28:28 PDT 2015 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-bin.zip -------------------------------------------------------------------------------- /gradlew: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | ############################################################################## 4 | ## 5 | ## Gradle start up script for UN*X 6 | ## 7 | ############################################################################## 8 | 9 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 10 | DEFAULT_JVM_OPTS="" 11 | 12 | APP_NAME="Gradle" 13 | APP_BASE_NAME=`basename "$0"` 14 | 15 | # Use the maximum available, or set MAX_FD != -1 to use that value. 16 | MAX_FD="maximum" 17 | 18 | warn ( ) { 19 | echo "$*" 20 | } 21 | 22 | die ( ) { 23 | echo 24 | echo "$*" 25 | echo 26 | exit 1 27 | } 28 | 29 | # OS specific support (must be 'true' or 'false'). 30 | cygwin=false 31 | msys=false 32 | darwin=false 33 | case "`uname`" in 34 | CYGWIN* ) 35 | cygwin=true 36 | ;; 37 | Darwin* ) 38 | darwin=true 39 | ;; 40 | MINGW* ) 41 | msys=true 42 | ;; 43 | esac 44 | 45 | # For Cygwin, ensure paths are in UNIX format before anything is touched. 46 | if $cygwin ; then 47 | [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"` 48 | fi 49 | 50 | # Attempt to set APP_HOME 51 | # Resolve links: $0 may be a link 52 | PRG="$0" 53 | # Need this for relative symlinks. 54 | while [ -h "$PRG" ] ; do 55 | ls=`ls -ld "$PRG"` 56 | link=`expr "$ls" : '.*-> \(.*\)$'` 57 | if expr "$link" : '/.*' > /dev/null; then 58 | PRG="$link" 59 | else 60 | PRG=`dirname "$PRG"`"/$link" 61 | fi 62 | done 63 | SAVED="`pwd`" 64 | cd "`dirname \"$PRG\"`/" >&- 65 | APP_HOME="`pwd -P`" 66 | cd "$SAVED" >&- 67 | 68 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar 69 | 70 | # Determine the Java command to use to start the JVM. 71 | if [ -n "$JAVA_HOME" ] ; then 72 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then 73 | # IBM's JDK on AIX uses strange locations for the executables 74 | JAVACMD="$JAVA_HOME/jre/sh/java" 75 | else 76 | JAVACMD="$JAVA_HOME/bin/java" 77 | fi 78 | if [ ! -x "$JAVACMD" ] ; then 79 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME 80 | 81 | Please set the JAVA_HOME variable in your environment to match the 82 | location of your Java installation." 83 | fi 84 | else 85 | JAVACMD="java" 86 | which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 87 | 88 | Please set the JAVA_HOME variable in your environment to match the 89 | location of your Java installation." 90 | fi 91 | 92 | # Increase the maximum file descriptors if we can. 93 | if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then 94 | MAX_FD_LIMIT=`ulimit -H -n` 95 | if [ $? -eq 0 ] ; then 96 | if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then 97 | MAX_FD="$MAX_FD_LIMIT" 98 | fi 99 | ulimit -n $MAX_FD 100 | if [ $? -ne 0 ] ; then 101 | warn "Could not set maximum file descriptor limit: $MAX_FD" 102 | fi 103 | else 104 | warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" 105 | fi 106 | fi 107 | 108 | # For Darwin, add options to specify how the application appears in the dock 109 | if $darwin; then 110 | GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" 111 | fi 112 | 113 | # For Cygwin, switch paths to Windows format before running java 114 | if $cygwin ; then 115 | APP_HOME=`cygpath --path --mixed "$APP_HOME"` 116 | CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` 117 | 118 | # We build the pattern for arguments to be converted via cygpath 119 | ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` 120 | SEP="" 121 | for dir in $ROOTDIRSRAW ; do 122 | ROOTDIRS="$ROOTDIRS$SEP$dir" 123 | SEP="|" 124 | done 125 | OURCYGPATTERN="(^($ROOTDIRS))" 126 | # Add a user-defined pattern to the cygpath arguments 127 | if [ "$GRADLE_CYGPATTERN" != "" ] ; then 128 | OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" 129 | fi 130 | # Now convert the arguments - kludge to limit ourselves to /bin/sh 131 | i=0 132 | for arg in "$@" ; do 133 | CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` 134 | CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option 135 | 136 | if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition 137 | eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` 138 | else 139 | eval `echo args$i`="\"$arg\"" 140 | fi 141 | i=$((i+1)) 142 | done 143 | case $i in 144 | (0) set -- ;; 145 | (1) set -- "$args0" ;; 146 | (2) set -- "$args0" "$args1" ;; 147 | (3) set -- "$args0" "$args1" "$args2" ;; 148 | (4) set -- "$args0" "$args1" "$args2" "$args3" ;; 149 | (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; 150 | (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; 151 | (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; 152 | (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; 153 | (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; 154 | esac 155 | fi 156 | 157 | # Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules 158 | function splitJvmOpts() { 159 | JVM_OPTS=("$@") 160 | } 161 | eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS 162 | JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" 163 | 164 | exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" 165 | -------------------------------------------------------------------------------- /gradlew.bat: -------------------------------------------------------------------------------- 1 | @if "%DEBUG%" == "" @echo off 2 | @rem ########################################################################## 3 | @rem 4 | @rem Gradle startup script for Windows 5 | @rem 6 | @rem ########################################################################## 7 | 8 | @rem Set local scope for the variables with windows NT shell 9 | if "%OS%"=="Windows_NT" setlocal 10 | 11 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 12 | set DEFAULT_JVM_OPTS= 13 | 14 | set DIRNAME=%~dp0 15 | if "%DIRNAME%" == "" set DIRNAME=. 16 | set APP_BASE_NAME=%~n0 17 | set APP_HOME=%DIRNAME% 18 | 19 | @rem Find java.exe 20 | if defined JAVA_HOME goto findJavaFromJavaHome 21 | 22 | set JAVA_EXE=java.exe 23 | %JAVA_EXE% -version >NUL 2>&1 24 | if "%ERRORLEVEL%" == "0" goto init 25 | 26 | echo. 27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 28 | echo. 29 | echo Please set the JAVA_HOME variable in your environment to match the 30 | echo location of your Java installation. 31 | 32 | goto fail 33 | 34 | :findJavaFromJavaHome 35 | set JAVA_HOME=%JAVA_HOME:"=% 36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 37 | 38 | if exist "%JAVA_EXE%" goto init 39 | 40 | echo. 41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 42 | echo. 43 | echo Please set the JAVA_HOME variable in your environment to match the 44 | echo location of your Java installation. 45 | 46 | goto fail 47 | 48 | :init 49 | @rem Get command-line arguments, handling Windowz variants 50 | 51 | if not "%OS%" == "Windows_NT" goto win9xME_args 52 | if "%@eval[2+2]" == "4" goto 4NT_args 53 | 54 | :win9xME_args 55 | @rem Slurp the command line arguments. 56 | set CMD_LINE_ARGS= 57 | set _SKIP=2 58 | 59 | :win9xME_args_slurp 60 | if "x%~1" == "x" goto execute 61 | 62 | set CMD_LINE_ARGS=%* 63 | goto execute 64 | 65 | :4NT_args 66 | @rem Get arguments from the 4NT Shell from JP Software 67 | set CMD_LINE_ARGS=%$ 68 | 69 | :execute 70 | @rem Setup the command line 71 | 72 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 73 | 74 | @rem Execute Gradle 75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% 76 | 77 | :end 78 | @rem End local scope for the variables with windows NT shell 79 | if "%ERRORLEVEL%"=="0" goto mainEnd 80 | 81 | :fail 82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 83 | rem the _cmd.exe /c_ return code! 84 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 85 | exit /b 1 86 | 87 | :mainEnd 88 | if "%OS%"=="Windows_NT" endlocal 89 | 90 | :omega 91 | -------------------------------------------------------------------------------- /settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenLocal() 4 | gradlePluginPortal() 5 | mavenCentral() 6 | maven("https://oss.sonatype.org/content/repositories/snapshots") 7 | maven("https://maven.architectury.dev/") 8 | maven("https://maven.fabricmc.net") 9 | maven("https://maven.minecraftforge.net/") 10 | maven("https://maven.ilarea.ru/snapshots") 11 | maven("https://jitpack.io") 12 | } 13 | resolutionStrategy { 14 | eachPlugin { 15 | when (requested.id.id) { 16 | "net.minecraftforge.gradle.forge" -> useModule("com.github.asbyth:ForgeGradle:${requested.version}") 17 | "io.github.juuxel.loom-quiltflower-mini" -> useModule("com.github.Cephetir:loom-quiltflower-mini:${requested.version}") 18 | } 19 | } 20 | } 21 | } 22 | 23 | rootProject.name = "AuroraClient" -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/Aurora.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client; 2 | 3 | import gg.essential.api.EssentialAPI; 4 | import gg.essential.api.commands.Command; 5 | import lombok.Getter; 6 | import lombok.Setter; 7 | import lombok.SneakyThrows; 8 | import me.aurora.client.commands.ConfigCommand; 9 | import me.aurora.client.commands.CrabbyCommand; 10 | import me.aurora.client.commands.HUDCommand; 11 | import me.aurora.client.config.Config; 12 | import me.aurora.client.config.HUDEdit; 13 | import me.aurora.client.events.TickEndEvent; 14 | import me.aurora.client.features.Module; 15 | import me.aurora.client.features.dungeons.*; 16 | import me.aurora.client.features.garden.AutoComposter; 17 | import me.aurora.client.features.garden.GrassESP; 18 | import me.aurora.client.features.mining.GemstoneScanner; 19 | import me.aurora.client.features.mining.StructureScanner; 20 | import me.aurora.client.features.misc.*; 21 | import me.aurora.client.features.movement.*; 22 | import me.aurora.client.features.macros.*; 23 | import me.aurora.client.features.troll.Hilary; 24 | import me.aurora.client.features.visual.*; 25 | import me.aurora.client.krypton.Main; 26 | import me.aurora.client.utils.BindUtils; 27 | import me.aurora.client.utils.FPSUtils; 28 | import me.aurora.client.utils.PacketHandler; 29 | import me.aurora.client.utils.RemoteUtils; 30 | import me.aurora.client.utils.PapiezUtils; 31 | import me.aurora.client.utils.capes.CapeDatabase; 32 | import me.aurora.client.utils.capes.CapeManager; 33 | import me.cephetir.communistscanner.CommunistScanners; 34 | import me.cephetir.communistscanner.StructureCallBack; 35 | import net.minecraft.client.Minecraft; 36 | import net.minecraft.client.gui.GuiScreen; 37 | import net.minecraft.util.BlockPos; 38 | import net.minecraftforge.client.event.RenderGameOverlayEvent; 39 | import net.minecraftforge.common.MinecraftForge; 40 | import net.minecraftforge.fml.common.Mod; 41 | import net.minecraftforge.fml.common.Mod.EventHandler; 42 | import net.minecraftforge.fml.common.event.FMLInitializationEvent; 43 | import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; 44 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 45 | import net.minecraftforge.fml.common.gameevent.TickEvent; 46 | import org.jetbrains.annotations.NotNull; 47 | import org.lwjgl.input.Keyboard; 48 | import org.lwjgl.opengl.Display; 49 | 50 | import java.io.File; 51 | import java.net.URL; 52 | import java.nio.file.Files; 53 | import java.nio.file.StandardCopyOption; 54 | import java.util.*; 55 | 56 | @Mod(modid = "bossbar_customizer", name = "BossbarCustomizer", version = "1.2.1", clientSideOnly = true) 57 | public class Aurora { 58 | public static final int CURRENT_VERSION_BUILD = 3999; 59 | @Getter 60 | private static final Set hudModules = new HashSet<>(); 61 | public static final Minecraft mc = Minecraft.getMinecraft(); 62 | @Getter 63 | private static final HUDEdit hudEdit = new HUDEdit(); 64 | @Setter 65 | private static GuiScreen guiToOpen = null; 66 | private static File modFile = null; 67 | @Getter 68 | private static final ArrayList modules = new ArrayList<>(); 69 | @Getter 70 | private static final boolean isSupporter = false; 71 | @Getter 72 | private static final String GUI_COMMAND = "aurorahud"; 73 | 74 | @EventHandler 75 | @SneakyThrows 76 | public void init(FMLInitializationEvent event) { 77 | Display.setTitle("Aurora 4.0"); 78 | MinecraftForge.EVENT_BUS.register(this); 79 | new Config().preload(); 80 | CapeDatabase.getInstance().init(); 81 | CommunistScanners.init(new StructureCallBack() { 82 | @Override 83 | public void newStructure(@NotNull String server, @NotNull String name, @NotNull BlockPos blockPos) { 84 | StructureScanner.addStructure(server, blockPos, name, true); 85 | } 86 | }); 87 | BindUtils.registerBinds( 88 | new BindUtils.Bind(Keyboard.KEY_NONE, "AutoSellBazaar"), 89 | new BindUtils.Bind(Keyboard.KEY_G, "GhostBlocks"), 90 | new BindUtils.Bind(Keyboard.KEY_L, "FreeCam"), 91 | new BindUtils.Bind(Keyboard.KEY_NONE, "VClip"), 92 | new BindUtils.Bind(Keyboard.KEY_K, "FastJoin"), 93 | new BindUtils.Bind(Keyboard.KEY_J, "AutoArrows"), 94 | new BindUtils.Bind(Keyboard.KEY_U, "F11Macro"), 95 | new BindUtils.Bind(Keyboard.KEY_F, "AutoWardrobe") 96 | ); 97 | registerModules(new LegacyModuleList(), new AutoSell(), new Ghostblock(), new WitherDoorRemover(), 98 | new AotvAura(), new HarpStealer(), new NoSlow(), new GemstoneScanner(), 99 | new AutoJoinSkyblock(), new AutoRogue(), new AutoHarp(), new MelodyThrottle(), 100 | new StructureScanner(), new NoDowntime(), new AutoSprint(), new AutoSex(), 101 | new WitherCloakAura(), new AutoTank(), new NoBedrock(), new F11(), new VClip(), 102 | new AntiLimbo(), new AutoSellBz(), new GrassESP(), 103 | new AutoComposter(), new RatEsp(), new TerminalAnnouncer()/*, new FreeCam()*/); 104 | if (!isSupporter) { 105 | registerHud(new Watermark(), new Keystrokes(), new PacketDebug(), new FPS()); 106 | } 107 | registerEvents(new TickEndEvent(), new Main(), new PacketHandler(), new FPSUtils(), 108 | new PapiezUtils(), new CapeManager(), new AutoBuyArrows(), new BedrockFailsafe(), new HotbarFailsafe(), 109 | new WorldChangeFailsafe(), new PathFailsafe(), new Hilary(), new AutoWardrobe()); 110 | registerCommand(new CrabbyCommand(), new HUDCommand(), new ConfigCommand()); 111 | if (RemoteUtils.isOutdated(CURRENT_VERSION_BUILD)) 112 | Runtime.getRuntime().addShutdownHook(new Thread(this::update)); 113 | } 114 | 115 | @SubscribeEvent 116 | public void onTick(TickEvent event) { 117 | if (guiToOpen != null) { 118 | mc.displayGuiScreen(guiToOpen); 119 | setGuiToOpen(null); 120 | } 121 | } 122 | 123 | @SneakyThrows 124 | @SuppressWarnings("unused") 125 | private void update() { 126 | if (Config.autoUpdate) { 127 | Random r = new Random(); 128 | File updater = new File(System.getProperty("java.io.tmpdir") + "aurora_updater_" + r.nextInt() + ".jar"); 129 | Files.copy(new URL("https://github.com/Gabagooooooooooool/AuroraUpdater/releases/download/1.0/updater.jar").openStream(), updater.toPath(), StandardCopyOption.REPLACE_EXISTING); 130 | System.err.println("Updating..."); 131 | Process p = new ProcessBuilder("java", "-jar", "\"" + updater.getAbsolutePath() + "\"", "1000", "\"" + modFile.getAbsolutePath() + "\"", "mainrepo").start(); 132 | } 133 | } 134 | 135 | @Mod.EventHandler 136 | public void preInit(FMLPreInitializationEvent event) { 137 | modFile = event.getSourceFile(); 138 | } 139 | 140 | @SubscribeEvent 141 | public void renderGameOverlayEvent(RenderGameOverlayEvent.Post event) { 142 | hudModules.forEach(getHudEdit()::RenderGUI); 143 | } 144 | 145 | private void registerModules(Module... modules1) { 146 | Set blacklisted = RemoteUtils.getBlacklistedModules(); 147 | System.err.println("Blacklisted Aurora modules:"); 148 | blacklisted.forEach(System.err::println); 149 | for (Module module : modules1) { 150 | if (blacklisted.contains(module.name())) continue; 151 | getModules().add(module); 152 | MinecraftForge.EVENT_BUS.register(module); 153 | } 154 | } 155 | 156 | private void registerEvents(Object... events) { 157 | for (Object event : events) 158 | MinecraftForge.EVENT_BUS.register(event); 159 | } 160 | 161 | private void registerHud(Element... elements) { 162 | hudModules.addAll(Arrays.asList(elements)); 163 | } 164 | 165 | private void registerCommand(Command... commands) { 166 | for (Command command : commands) 167 | EssentialAPI.getCommandRegistry().registerCommand(command); 168 | } 169 | } 170 | -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/commands/ConfigCommand.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.commands; 2 | 3 | import gg.essential.api.EssentialAPI; 4 | import gg.essential.api.commands.Command; 5 | import gg.essential.api.commands.DefaultHandler; 6 | 7 | public class ConfigCommand extends Command { 8 | public ConfigCommand() { 9 | super("aurora", true, false); 10 | } 11 | 12 | @DefaultHandler 13 | public void handle() { 14 | EssentialAPI.getGuiUtil().openScreen(new me.aurora.client.config.MainHud()); 15 | } 16 | } -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/commands/CrabbyCommand.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.commands; 2 | 3 | import gg.essential.api.commands.Command; 4 | import gg.essential.api.commands.DefaultHandler; 5 | import me.aurora.client.utils.MessageUtils; 6 | 7 | public class CrabbyCommand extends Command { 8 | 9 | public CrabbyCommand() { 10 | super("crabby", true, false); 11 | } 12 | 13 | @DefaultHandler 14 | public void handle() { 15 | MessageUtils.sendDelayedMultilinePlayerMessage( 16 | 100, 17 | "゜░゜░゜゜゜゜░゜░゜", 18 | "░゜░゜░゜゜░゜░゜░゜", 19 | "░゜゜゜░゜゜░゜゜゜░゜", 20 | "゜░゜░゜゜゜゜░゜░゜", 21 | "゜░゜░゜゜゜゜░゜░゜", 22 | "゜░゜゜░░░░゜゜░゜", 23 | "░゜゜゜゜゜゜゜゜゜゜░", 24 | "░゜▀゜█▄▄█゜▀゜░", 25 | "░゜゜゜゜゜゜゜゜゜゜░", 26 | "゜░░░░░░░░░░゜" 27 | ); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/commands/HUDCommand.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.commands; 2 | 3 | import gg.essential.api.commands.Command; 4 | import gg.essential.api.commands.DefaultHandler; 5 | import me.aurora.client.Aurora; 6 | 7 | 8 | public class HUDCommand extends Command { 9 | public HUDCommand() { 10 | super("aurorahud", true, false); 11 | } 12 | 13 | @DefaultHandler 14 | public void handle() { 15 | Aurora.getHudEdit().display(); 16 | } 17 | } -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/config/HUDEdit.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.config; 2 | 3 | import me.aurora.client.features.visual.Element; 4 | import me.aurora.client.utils.hud.ModuleEditorHandler; 5 | import net.minecraft.client.gui.Gui; 6 | 7 | import java.awt.*; 8 | 9 | public class HUDEdit extends ModuleEditorHandler { 10 | /** 11 | * IMPLEMENTED/MODIFIED FROM 12 | * https://github.com/Papa-Stalin/ClientAPI 13 | * UNDER MIT LICENSE 14 | */ 15 | private Element drag; 16 | private int dragX; 17 | private int dragY; 18 | 19 | @Override 20 | public void render(int x, int y, int w, int h, int mouseX, int mouseY, Element component) { 21 | if (component.equals(drag)) { 22 | component.setX(dragX + mouseX); 23 | component.setY(dragY + mouseY); 24 | } 25 | 26 | Gui.drawRect(x - 2, y - 2, x + w + 2, y + h + 2, new Color(0x92FFFFFF, true).getRGB()); 27 | renderModule(component); 28 | } 29 | 30 | @Override 31 | public void clickComponent(int mouseX, int mouseY, int mouseButton, Element component) { 32 | if (mouseButton == 0) { 33 | drag = component; 34 | dragX = component.getX() - mouseX; 35 | dragY = component.getY() - mouseY; 36 | } 37 | } 38 | 39 | @Override 40 | public void mouseReleased(int mouseX, int mouseY, int state) { 41 | drag = null; 42 | } 43 | 44 | @Override 45 | public void onClose() { 46 | // ClientAPI.getModuleManager().getModule("HUDEditor").disable(); 47 | } 48 | } -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/config/MainHud.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.config; 2 | 3 | import gg.essential.api.EssentialAPI; 4 | import me.aurora.client.Aurora; 5 | import me.aurora.client.utils.ThemeUtils; 6 | import net.minecraft.client.gui.Gui; 7 | import net.minecraft.client.gui.GuiButton; 8 | import net.minecraft.client.gui.GuiScreen; 9 | import net.minecraft.client.gui.ScaledResolution; 10 | import net.minecraft.client.renderer.GlStateManager; 11 | import net.minecraft.util.ResourceLocation; 12 | 13 | import java.util.Arrays; 14 | import java.util.concurrent.CompletableFuture; 15 | 16 | public class MainHud extends GuiScreen { 17 | 18 | @Override 19 | public void initGui() { 20 | super.initGui(); 21 | this.buttonList.addAll(Arrays.asList( 22 | buttonConstructor(1, -25, "Config"), 23 | buttonConstructor(2, 0, "Edit HUD"), 24 | buttonConstructor(3, 25, "Close"), 25 | buttonConstructor(4, 50, "Don't click this.") 26 | )); 27 | } 28 | 29 | @Override 30 | protected void actionPerformed(GuiButton button) { 31 | switch (button.id) { 32 | case 1: 33 | EssentialAPI.getGuiUtil().openScreen(Config.INSTANCE.gui()); 34 | break; 35 | case 2: 36 | if (Aurora.isSupporter()) { 37 | CompletableFuture 38 | .runAsync(() -> mc.thePlayer.closeScreen()) 39 | .thenRun(() -> mc.thePlayer.sendChatMessage("/aurora_hud_supporter")); 40 | } else { 41 | Aurora.getHudEdit().display(); 42 | } 43 | ; 44 | break; 45 | case 3: 46 | mc.thePlayer.closeScreen(); 47 | break; 48 | case 4: 49 | System.exit(0); // trol 50 | break; 51 | } 52 | } 53 | 54 | @Override 55 | public void drawScreen(int mouseX, int mouseY, float partialTicks) { 56 | this.drawDefaultBackground(); 57 | ScaledResolution scaledResolution = new ScaledResolution(mc); 58 | GlStateManager.pushMatrix(); 59 | mc.getTextureManager().bindTexture(new ResourceLocation("dailydungeons:res/biglogo.png")); 60 | GlStateManager.color(ThemeUtils.getFloatValue(0, 0), ThemeUtils.getFloatValue(0, 1), ThemeUtils.getFloatValue(0, 2)); 61 | Gui.drawModalRectWithCustomSizedTexture(scaledResolution.getScaledWidth() / 2 - 64, scaledResolution.getScaledHeight() / 2 - 64, 0, 0, 128, 32, 128, 32); 62 | GlStateManager.popMatrix(); 63 | super.drawScreen(mouseX, mouseY, partialTicks); 64 | } 65 | 66 | @Override 67 | public boolean doesGuiPauseGame() { 68 | return true; 69 | } 70 | 71 | private GuiButton buttonConstructor(int id, int heightOffset, String text) { 72 | final int buttonHeight = 20; 73 | final int buttonWidth = 128; 74 | final int centerPos = this.width / 2 - buttonWidth / 2; 75 | final int baseHeight = this.height / 2; 76 | return new GuiButton(id, centerPos, baseHeight + heightOffset, buttonWidth, buttonHeight, text); 77 | } 78 | } -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/events/TickEndEvent.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.events; 2 | 3 | import net.minecraftforge.common.MinecraftForge; 4 | import net.minecraftforge.fml.common.eventhandler.Event; 5 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 6 | import net.minecraftforge.fml.common.gameevent.TickEvent; 7 | 8 | /** 9 | * IMPLEMENTED FROM SHADYADDONS 10 | * 11 | * @author jxee 12 | */ 13 | public class TickEndEvent extends Event { 14 | private static int staticCount = 0; 15 | public int count; 16 | 17 | public TickEndEvent() { 18 | count = staticCount; 19 | } 20 | 21 | public boolean every(int ticks) { 22 | return count % ticks == 0; 23 | } 24 | 25 | @SubscribeEvent 26 | public void onTick(TickEvent.ClientTickEvent event) { 27 | if (event.phase == TickEvent.Phase.END) { 28 | MinecraftForge.EVENT_BUS.post(new TickEndEvent()); 29 | staticCount++; 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/features/Module.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.features; 2 | 3 | public interface Module { 4 | boolean toggled(); 5 | 6 | String name(); 7 | } 8 | -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/features/dungeons/AutoBuyArrows.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.features.dungeons; 2 | 3 | import me.aurora.client.Aurora; 4 | import me.aurora.client.config.Config; 5 | import me.aurora.client.features.Module; 6 | import me.aurora.client.utils.BindUtils; 7 | import me.aurora.client.utils.InventoryUtils; 8 | import me.aurora.client.utils.MessageUtils; 9 | import me.aurora.client.utils.Timer; 10 | import me.aurora.client.utils.conditions.ConditionUtils; 11 | import net.minecraft.client.Minecraft; 12 | import net.minecraft.client.gui.inventory.GuiChest; 13 | import net.minecraft.init.Blocks; 14 | import net.minecraft.inventory.InventoryBasic; 15 | import net.minecraft.inventory.Slot; 16 | import net.minecraft.item.ItemBlock; 17 | import net.minecraftforge.client.event.ClientChatReceivedEvent; 18 | import net.minecraftforge.client.event.GuiScreenEvent; 19 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 20 | import net.minecraftforge.fml.common.gameevent.InputEvent; 21 | import net.minecraftforge.fml.common.gameevent.TickEvent; 22 | import scala.reflect.internal.Names; 23 | 24 | import java.util.Set; 25 | 26 | 27 | public class AutoBuyArrows { 28 | private final Minecraft mc = Aurora.mc; 29 | public static boolean buying = false; 30 | 31 | public static boolean inBazaar = false; 32 | public static boolean inSlimeMenu = false; 33 | public static boolean inInstaBuy = false; 34 | public static boolean inSandMenu = false; 35 | public static boolean inIceMenu = false; 36 | public static boolean inIceBuyingMenu = false; 37 | int[] slimeSlots = {12, 10, 14}; 38 | int[] armorShredSlots = {9, 33, 11, 10, 12}; 39 | int[] icySlots = {12, 10, 14}; 40 | private int ticks; 41 | 42 | @SubscribeEvent 43 | public void onKeyPress(InputEvent.KeyInputEvent event) { 44 | if(BindUtils.isBindPressed("AutoArrows")) { 45 | buying = true; 46 | } 47 | } 48 | 49 | @SubscribeEvent 50 | public void onTick(TickEvent.PlayerTickEvent event) { 51 | if(++ticks < Config.auto_arrow_window_click_delay) return; 52 | ticks = 0; 53 | if (buying && ConditionUtils.inSkyblock()) { 54 | switch(Config.arrowtype) { 55 | case 0: 56 | if(!inSlimeMenu) mc.thePlayer.sendChatMessage("/bz Slimeball"); 57 | if(inSlimeMenu && !inInstaBuy) { 58 | InventoryUtils.clickSlot(slimeSlots[0], 0, 0); 59 | InventoryUtils.clickSlot(slimeSlots[1], 0, 0); 60 | } 61 | if(inInstaBuy) { 62 | InventoryUtils.clickSlot(14, 0, 0); 63 | mc.thePlayer.closeScreen(); 64 | 65 | } 66 | break; 67 | case 1: 68 | if(!inSandMenu) mc.thePlayer.sendChatMessage("/bz Enchanted Sand"); 69 | if(inSandMenu && !inInstaBuy) { 70 | InventoryUtils.clickSlot(armorShredSlots[2], 0, 0); 71 | InventoryUtils.clickSlot(armorShredSlots[3], 0, 0); 72 | } 73 | if(inInstaBuy) { 74 | InventoryUtils.clickSlot(armorShredSlots[4], 0, 0); 75 | mc.thePlayer.closeScreen(); 76 | } 77 | break; 78 | case 2: // ICY 79 | mc.thePlayer.sendChatMessage("/bz Packed Ice"); 80 | if(inIceMenu && !inInstaBuy) { 81 | InventoryUtils.clickSlot(icySlots[0], 0, 0); 82 | InventoryUtils.clickSlot(icySlots[1], 0, 0); 83 | } 84 | if(inInstaBuy) { 85 | InventoryUtils.clickSlot(icySlots[2], 0, 0); 86 | mc.thePlayer.closeScreen(); 87 | } 88 | break; 89 | default: 90 | break; 91 | } 92 | } 93 | } 94 | 95 | @SubscribeEvent 96 | public void onChat(ClientChatReceivedEvent event) { 97 | String message = event.message.getUnformattedText(); 98 | if(message.contains("This server is restarting") || message.contains("This menu has been throttled") || message.contains("volatile market")) { 99 | new Thread(()-> { 100 | try { 101 | buying = false; 102 | mc.thePlayer.closeScreen(); 103 | MessageUtils.sendClientMessage("Detected interruption in buying, sending to island and trying again.."); 104 | Thread.sleep(500); 105 | mc.thePlayer.sendChatMessage("/is"); 106 | Thread.sleep(5500); 107 | buying = true; 108 | } catch (InterruptedException e) { 109 | e.printStackTrace(); 110 | } 111 | }).start(); 112 | } 113 | if(message.contains("afford this!") || message.contains("occurred in your connection")) { 114 | MessageUtils.sendClientMessage("Ran out of money! Stopping.."); 115 | mc.thePlayer.closeScreen(); 116 | buying = false; 117 | } 118 | if(message.contains("Bought 64x Enchanted Sand")) { 119 | buying = false; 120 | mc.thePlayer.closeScreen(); 121 | } 122 | if(message.contains("Bought ") && message.contains("Slimeball")) { 123 | buying = false; 124 | mc.thePlayer.closeScreen(); 125 | } 126 | if(message.contains("the server is about to restart!")) { 127 | MessageUtils.sendClientMessage("Server about to restart. stopping.."); 128 | buying = false; 129 | } 130 | } 131 | 132 | 133 | @SubscribeEvent 134 | public void onBackgroundRender(GuiScreenEvent.BackgroundDrawnEvent event) { 135 | String chestName = InventoryUtils.getGuiName(event.gui); 136 | inBazaar = chestName.contains("Bazaar"); 137 | inSlimeMenu = chestName.contains("Slimeball"); 138 | inInstaBuy = chestName.contains("Instant Buy"); 139 | inSandMenu = chestName.contains("Enchanted Sand"); 140 | inIceMenu = chestName.contains("Packed Ice"); 141 | inIceBuyingMenu = chestName.contains("Packed Ice"); 142 | } 143 | } -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/features/dungeons/AutoSell.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.features.dungeons; 2 | 3 | import me.aurora.client.config.Config; 4 | import me.aurora.client.events.TickEndEvent; 5 | import me.aurora.client.features.Module; 6 | import me.aurora.client.utils.MessageUtils; 7 | import me.aurora.client.utils.conditions.ConditionUtils; 8 | import me.aurora.client.utils.InventoryUtils; 9 | import net.minecraft.client.gui.inventory.GuiChest; 10 | import net.minecraft.init.Blocks; 11 | import net.minecraft.inventory.Slot; 12 | import net.minecraft.item.Item; 13 | import net.minecraft.item.ItemStack; 14 | import net.minecraftforge.client.event.GuiScreenEvent; 15 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 16 | 17 | import java.util.Arrays; 18 | import java.util.HashSet; 19 | import java.util.Set; 20 | 21 | import static me.aurora.client.Aurora.mc; 22 | 23 | /** 24 | * @author jxee Gabagooooooooooool 25 | * @version 2.0 26 | * @credit ShadyAddons (jxee) 27 | * @brief Auto Sell 28 | */ 29 | public class AutoSell implements Module { 30 | 31 | private final Set dungeonShit = new HashSet<>(Arrays.asList( 32 | "Training Weight", 33 | "Health Potion VIII Splash Potion", 34 | "Healing Potion 8 Slash Potion", 35 | "Beating Heart", 36 | "Premium Flesh", 37 | "Mimic Fragment", 38 | "Enchanted Rotten Flesh", 39 | "Enchanted Bone", 40 | "Defuse Kit", 41 | "Enchanted Ice", 42 | "Optic Lense", 43 | "Tripwire Hook", 44 | "Button", 45 | "Carpet", 46 | "Lever", 47 | "Rune", 48 | "Journal Entry", 49 | "Sign")); 50 | private boolean inTradeGui = false; 51 | private int tickCount = 0; 52 | 53 | public String name() { 54 | return "AutoSell"; 55 | } 56 | 57 | public boolean toggled() { 58 | return Config.autoSell; 59 | } 60 | 61 | @SubscribeEvent 62 | public void onTick(TickEndEvent event) { 63 | tickCount++; 64 | if (tickCount % 4 == 0 && inTradeGui && toggled() && ConditionUtils.inSkyblock() && mc.currentScreen instanceof GuiChest) { 65 | ItemStack checkedStack = ((GuiChest) mc.currentScreen).inventorySlots.inventorySlots.get(49).getStack(); 66 | if (checkedStack != null && checkedStack.getItem() != Item.getItemFromBlock(Blocks.barrier)) { 67 | mc.thePlayer.inventoryContainer.inventorySlots.stream().filter(this::properItem).findFirst().ifPresent(slot -> { 68 | mc.playerController.windowClick(mc.thePlayer.openContainer.windowId, 45 + slot.slotNumber, 2, 3, mc.thePlayer); 69 | MessageUtils.sendClientMessage("Selling trash..."); 70 | }); 71 | } 72 | } 73 | } 74 | 75 | @SubscribeEvent 76 | public void onRenderGuiBackground(GuiScreenEvent.DrawScreenEvent.Pre event) { 77 | if (ConditionUtils.inSkyblock() && toggled() && event.gui instanceof GuiChest) { 78 | String guiName = InventoryUtils.getGuiName(event.gui); 79 | inTradeGui = guiName.contains("Trades") || guiName.contains("Booster Cookie"); 80 | } 81 | } 82 | 83 | public boolean properItem(Slot checkedSlot) { 84 | return dungeonShit.contains(checkedSlot.getStack().getDisplayName()); 85 | } 86 | } 87 | 88 | -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/features/dungeons/AutoTank.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.features.dungeons; 2 | 3 | import me.aurora.client.config.Config; 4 | import me.aurora.client.features.Module; 5 | import me.aurora.client.utils.MouseUtils; 6 | import me.aurora.client.utils.PacketUtils; 7 | import me.aurora.client.utils.RotationUtils; 8 | import me.aurora.client.utils.conditions.ConditionUtils; 9 | import net.minecraft.network.play.client.C0BPacketEntityAction; 10 | import net.minecraft.util.BlockPos; 11 | import net.minecraftforge.event.world.WorldEvent; 12 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 13 | import net.minecraftforge.fml.common.gameevent.TickEvent; 14 | 15 | import static me.aurora.client.Aurora.mc; 16 | import static me.aurora.client.utils.MouseUtils.ClickType.RIGHT; 17 | import static net.minecraft.network.play.client.C0BPacketEntityAction.Action.START_SNEAKING; 18 | import static net.minecraft.network.play.client.C0BPacketEntityAction.Action.STOP_SNEAKING; 19 | 20 | /** 21 | * @author jxee OctoSplash01 Gabagooooooooooool 22 | * @version 2.0 23 | * @credit ShadyAddons (jxee) 24 | * @brief Auto Maxor Platform TP 25 | * @todo Check code 26 | */ 27 | public class AutoTank implements Module { 28 | 29 | private boolean teleported = false; 30 | 31 | public String name() { 32 | return "AutoTank"; 33 | } 34 | 35 | public boolean toggled() { 36 | return Config.autoTank; 37 | } 38 | 39 | @SubscribeEvent 40 | public void onTick(TickEvent.PlayerTickEvent event) { 41 | if (toggled() && !teleported && ConditionUtils.inSkyblock() && mc.thePlayer.posX == 73.5 && mc.thePlayer.posZ == 14.5) { 42 | setSneakStatus(true); 43 | RotationUtils.look(RotationUtils.getRotationToBlock(new BlockPos(73.5, 224, 70.5))); 44 | teleported = true; 45 | MouseUtils.click(RIGHT); 46 | setSneakStatus(false); 47 | } 48 | } 49 | 50 | @SubscribeEvent 51 | public void onWorldLoad(WorldEvent.Load event) { 52 | teleported = false; 53 | } 54 | 55 | private void setSneakStatus(boolean status) { 56 | mc.thePlayer.movementInput.sneak = status; 57 | PacketUtils.sendPacket(new C0BPacketEntityAction(mc.thePlayer, status ? START_SNEAKING : STOP_SNEAKING)); 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/features/dungeons/Ghostblock.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.features.dungeons; 2 | 3 | import me.aurora.client.config.Config; 4 | import me.aurora.client.features.Module; 5 | import me.aurora.client.utils.BindUtils; 6 | import me.aurora.client.utils.Timer; 7 | import net.minecraft.block.Block; 8 | import net.minecraft.init.Blocks; 9 | import net.minecraft.util.MovingObjectPosition; 10 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 11 | import net.minecraftforge.fml.common.gameevent.TickEvent; 12 | 13 | import java.util.ArrayList; 14 | import java.util.Arrays; 15 | 16 | import static me.aurora.client.Aurora.mc; 17 | 18 | /** 19 | * @author Gabagooooooooooool OctoSplash01 20 | * @version 2.0 21 | * @brief Ghostblocks + Range + Blacklisted Blocks + Legit Mode 22 | */ 23 | public class Ghostblock implements Module { 24 | private volatile static double lastUsed; 25 | private final ArrayList dontGhost = new ArrayList<>(Arrays.asList( 26 | Blocks.chest, //secret chests 27 | Blocks.lever, //secret levers 28 | Blocks.command_block, //terminals 29 | Blocks.skull, //wither essence 30 | Blocks.bed, //if someone plays bedwars with aurora for whatever reason XD 31 | Blocks.trapped_chest)); //mimic (mimic is a mob that is hidden in a trapped chest) 32 | Timer timer = new Timer(); 33 | 34 | public String name() { 35 | return "Ghostblock"; 36 | } 37 | 38 | public boolean toggled() { 39 | return Config.ghostblocks; 40 | } 41 | 42 | @SubscribeEvent 43 | public void onTick(TickEvent.PlayerTickEvent event) { 44 | if (BindUtils.isBindDown("GhostBlocks") && toggled() && ((System.currentTimeMillis() - lastUsed) > (Config.ghostblocks_delay * 1000))) { 45 | MovingObjectPosition blockPos = mc.thePlayer.rayTrace(Config.ghostblocks_range, 1); 46 | Block currentBlock = mc.theWorld.getBlockState(blockPos.getBlockPos()).getBlock(); 47 | switch (Config.ghostblocksMode) { 48 | case 0: 49 | if (!dontGhost.contains(currentBlock)) { 50 | lastUsed = System.currentTimeMillis(); 51 | mc.theWorld.setBlockToAir(blockPos.getBlockPos()); 52 | } 53 | break; 54 | case 1: 55 | if (!dontGhost.contains(currentBlock)) { 56 | lastUsed = System.currentTimeMillis(); 57 | mc.theWorld.setBlockToAir(blockPos.getBlockPos()); 58 | if (timer.timeBetween(50, true)) { 59 | mc.thePlayer.swingItem(); 60 | } 61 | } 62 | break; 63 | } 64 | } 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/features/dungeons/NoBedrock.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.features.dungeons; 2 | 3 | import me.aurora.client.config.Config; 4 | import me.aurora.client.features.Module; 5 | import me.aurora.client.utils.conditions.ConditionUtils; 6 | import me.aurora.client.utils.iteration.LoopUtils; 7 | import net.minecraft.init.Blocks; 8 | import net.minecraft.util.BlockPos; 9 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 10 | import net.minecraftforge.fml.common.gameevent.TickEvent; 11 | 12 | import static me.aurora.client.Aurora.mc; 13 | 14 | /** 15 | * @author Gabagooooooooooool 16 | * @version 2.0 17 | * @brief Removes bedrock 18 | */ 19 | 20 | public class NoBedrock implements Module { 21 | 22 | private boolean readyToScan = true; 23 | 24 | public String name() { 25 | return "SecretsUnblock"; 26 | } 27 | 28 | public boolean toggled() { 29 | return Config.ghost_secretsUnblock; 30 | } 31 | 32 | @SubscribeEvent 33 | public void onTick(TickEvent.PlayerTickEvent event) { 34 | if (toggled() && ((mc.theWorld.getTotalWorldTime() % 128L == 0) && readyToScan && ConditionUtils.inGame())) 35 | new Thread(() -> scanBlocks((int) mc.thePlayer.posX, (int) mc.thePlayer.posY, (int) mc.thePlayer.posZ), "NoBedrock_thread").start(); 36 | } 37 | 38 | public void scanBlocks(int StartX, int StartY, int StartZ) { 39 | readyToScan = false; 40 | LoopUtils.brLoop(StartX, StartY, StartZ, 128, (x, y, z) -> { 41 | BlockPos checked = new BlockPos(x, y, z); 42 | if (mc.theWorld.getBlockState(checked).getBlock() == Blocks.bedrock) 43 | mc.theWorld.setBlockToAir(checked); 44 | }); 45 | readyToScan = true; 46 | } 47 | } 48 | 49 | -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/features/dungeons/NoDowntime.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.features.dungeons; 2 | 3 | import lombok.*; 4 | import me.aurora.client.config.Config; 5 | import me.aurora.client.features.Module; 6 | import me.aurora.client.utils.MessageUtils; 7 | import me.aurora.client.utils.conditions.ConditionUtils; 8 | import net.minecraftforge.client.event.ClientChatReceivedEvent; 9 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 10 | 11 | import java.util.LinkedList; 12 | import java.util.Queue; 13 | import java.util.concurrent.ScheduledThreadPoolExecutor; 14 | import java.util.concurrent.TimeUnit; 15 | 16 | import static me.aurora.client.Aurora.mc; 17 | 18 | /** 19 | * @author Gabagooooooooooool 20 | * @version 2.0 21 | */ 22 | public class NoDowntime implements Module { 23 | 24 | private static final Queue messagesQueue = new LinkedList<>(); 25 | 26 | public String name() { 27 | return "NoDowntime"; 28 | } 29 | 30 | public boolean toggled() { 31 | return Config.noDowntime; 32 | } 33 | 34 | @SubscribeEvent 35 | @SneakyThrows 36 | public void onChat(ClientChatReceivedEvent event) { 37 | if (Config.noDowntime && ConditionUtils.inSkyblock()) { 38 | String message = event.message.getFormattedText().replaceAll("§.", ""); 39 | messagesQueue.offer(message); 40 | if (messagesQueue.size() > 3) messagesQueue.poll(); 41 | if (message.matches(".*Defeated*.(Bonzo|Scarf|Professor|Thorn|Livid|Sadan|Necron)*.in.*") && !messagesQueue.isEmpty()) { 42 | CatacombType type = messagesQueue.peek().contains("Master") ? CatacombType.MASTER_CATACOMBS : CatacombType.CATACOMBS; 43 | type.setFloor(getFloor(message)); 44 | MessageUtils.sendClientMessage("Waiting..."); 45 | if (type.getFloor() != 0) { 46 | new ScheduledThreadPoolExecutor(1).schedule(() -> { 47 | int floor = type.getFloor(); 48 | mc.thePlayer.sendChatMessage(String.format("/joindungon %s %s", type.getNaming(), floor)); 49 | MessageUtils.sendClientMessage(String.format("Joining %sCatacombs Floor %s", type == CatacombType.CATACOMBS ? "" : "Master Mode ", floor)); 50 | }, Config.noDowntime_ParameterDelay, TimeUnit.SECONDS); 51 | } 52 | } 53 | } 54 | } 55 | 56 | private int getFloor(String message) { 57 | if (message.contains("Bonzo")) { 58 | return 1; 59 | } else if (message.contains("Scarf")) { 60 | return 2; 61 | } else if (message.contains("Professor")) { 62 | return 3; 63 | } else if (message.contains("Thorn")) { 64 | return 4; 65 | } else if (message.contains("Livid")) { 66 | return 5; 67 | } else if (message.contains("Sadan")) { 68 | return 6; 69 | } else if (message.contains("Necron")) { 70 | return 7; 71 | } 72 | return 0; 73 | } 74 | 75 | @RequiredArgsConstructor 76 | protected enum CatacombType { 77 | CATACOMBS("catacombs"), MASTER_CATACOMBS("master_catacombs"); 78 | @NonNull 79 | @Getter 80 | private final String naming; 81 | @Getter 82 | @Setter 83 | private int floor; 84 | } 85 | } -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/features/dungeons/TerminalAnnouncer.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.features.dungeons; 2 | 3 | import me.aurora.client.config.Config; 4 | import me.aurora.client.features.Module; 5 | import me.aurora.client.utils.InventoryUtils; 6 | import me.aurora.client.utils.Timer; 7 | import net.minecraft.client.gui.inventory.GuiChest; 8 | import net.minecraftforge.client.event.GuiScreenEvent; 9 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 10 | 11 | import java.util.HashMap; 12 | import java.util.Map; 13 | 14 | import static me.aurora.client.Aurora.mc; 15 | 16 | public class TerminalAnnouncer implements Module { 17 | 18 | private final Timer timer = new Timer(); 19 | private final HashMap terminalDefinition = new HashMap() {{ 20 | put("Change all to same color!", "Color Terminal"); 21 | put("Select all the", "Select Color Terminal"); 22 | put("What starts with:", "Letter Terminal"); 23 | put("Click in order!", "Numbers Terminal"); 24 | put("Click the button on time!", "Melody Terminal"); 25 | put("Correct all the panes!", "Panes Terminal"); 26 | }}; 27 | private String currentTerminal; 28 | 29 | public String name() { 30 | return "TerminalAnnouncer"; 31 | } 32 | 33 | public boolean toggled() { 34 | return Config.terminalAnnouncer; 35 | } 36 | 37 | @SubscribeEvent 38 | public void onBackgroundRender(GuiScreenEvent.BackgroundDrawnEvent event) { 39 | currentTerminal = terminalDefinition.entrySet().stream().filter(val -> InventoryUtils.getGuiName(event.gui).contains(val.getKey())).findFirst().map(Map.Entry::getValue).orElse(null); 40 | } 41 | 42 | @SubscribeEvent 43 | public void onGuiDraw(GuiScreenEvent.BackgroundDrawnEvent event) { 44 | if (toggled() && mc.currentScreen instanceof GuiChest && currentTerminal != null && timer.timeBetween(5000, true)) 45 | mc.thePlayer.sendChatMessage("/pc I'm currently in: " + currentTerminal); 46 | } 47 | } 48 | 49 | -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/features/dungeons/WitherCloakAura.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.features.dungeons; 2 | 3 | import me.aurora.client.config.Config; 4 | import me.aurora.client.features.Module; 5 | import me.aurora.client.utils.ItemUtils; 6 | import me.aurora.client.utils.conditions.ConditionUtils; 7 | import net.minecraft.item.ItemStack; 8 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 9 | import net.minecraftforge.fml.common.gameevent.TickEvent; 10 | 11 | import static me.aurora.client.Aurora.mc; 12 | 13 | /** 14 | * @author jxee OctoSplash01 Gabagooooooooooool 15 | * @version 2.0 16 | * @credit ShadyAddons (jxee) 17 | * @brief Automaticly uses Wither Cloak 18 | * @todo Find more ways to optimize the code (Held Item?) 19 | */ 20 | public class WitherCloakAura implements Module { 21 | 22 | public static void useItem(String itemId) { 23 | for (int i = 0; i < 8; i++) { 24 | ItemStack item = mc.thePlayer.inventory.getStackInSlot(i); 25 | if (itemId.equals(ItemUtils.getSkyBlockID(item))) { 26 | int previousItem = mc.thePlayer.inventory.currentItem; 27 | mc.thePlayer.inventory.currentItem = i; 28 | mc.playerController.sendUseItem(mc.thePlayer, mc.theWorld, item); 29 | mc.thePlayer.inventory.currentItem = previousItem; 30 | return; 31 | } 32 | } 33 | } 34 | 35 | public String name() { 36 | return "WitherCloakAura"; 37 | } 38 | 39 | public boolean toggled() { 40 | return Config.witherCloakAura; 41 | } 42 | 43 | @SubscribeEvent 44 | public void onTick(TickEvent.PlayerTickEvent event) { 45 | if (toggled() && ConditionUtils.inSkyblock() && mc.thePlayer.isInLava() && mc.thePlayer.inventory.currentItem == 0) { 46 | useItem("WITHER_CLOAK_SWORD"); 47 | } 48 | } 49 | } -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/features/dungeons/WitherDoorRemover.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.features.dungeons; 2 | 3 | import me.aurora.client.config.Config; 4 | import me.aurora.client.features.Module; 5 | import me.aurora.client.utils.iteration.LoopUtils; 6 | import net.minecraft.init.Blocks; 7 | import net.minecraft.util.BlockPos; 8 | import net.minecraft.util.MovingObjectPosition; 9 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 10 | import net.minecraftforge.fml.common.gameevent.InputEvent; 11 | import org.lwjgl.input.Keyboard; 12 | 13 | import static me.aurora.client.Aurora.mc; 14 | 15 | /** 16 | * @author Gabagooooooooooool 17 | * @version 3.1 18 | * @brief This automaticly removes wither doors 19 | */ 20 | public class WitherDoorRemover implements Module { 21 | 22 | public String name() { 23 | return "WitherDoorRemover"; 24 | } 25 | 26 | public boolean toggled() { 27 | return Config.witherDoorRemover; 28 | } 29 | 30 | @SubscribeEvent 31 | public void onKeyPress(InputEvent.KeyInputEvent event) { 32 | if (Keyboard.isKeyDown(Keyboard.KEY_H) && toggled()) { 33 | MovingObjectPosition keyBlock = mc.thePlayer.rayTrace(mc.playerController.getBlockReachDistance(), 1); 34 | LoopUtils.brLoop(keyBlock.getBlockPos().getX(), keyBlock.getBlockPos().getY(), keyBlock.getBlockPos().getZ(), 5, 35 | (x, y, z) -> { 36 | BlockPos tempBlockPos = new BlockPos(x, y, z); 37 | if (mc.theWorld.getBlockState(tempBlockPos).getBlock() == Blocks.coal_block) 38 | mc.theWorld.setBlockToAir(tempBlockPos); 39 | }); 40 | } 41 | } 42 | } 43 | 44 | -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/features/garden/AutoComposter.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.features.garden; 2 | 3 | import me.aurora.client.config.Config; 4 | import me.aurora.client.features.Module; 5 | import me.aurora.client.utils.InventoryUtils; 6 | import net.minecraft.client.gui.inventory.GuiChest; 7 | import net.minecraft.init.Items; 8 | import net.minecraftforge.client.event.GuiScreenEvent; 9 | import net.minecraftforge.event.world.WorldEvent; 10 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 11 | import net.minecraftforge.fml.common.gameevent.TickEvent; 12 | 13 | import static me.aurora.client.Aurora.mc; 14 | 15 | /** 16 | * @author Gabagooooooooooool 17 | * @version 1.1 18 | * @brief Automatic Composter 19 | * @todo Rewrite States Using Enums 20 | * @todo Move inventory name to dedicated utility & integrate 21 | */ 22 | public class AutoComposter implements Module { 23 | private int delay = 0; 24 | private boolean inComposter = false; 25 | private boolean prevComposter = false; 26 | private String prevName = ""; 27 | private boolean fuelAdded = false; 28 | private boolean cropsAdded = false; 29 | private boolean compostCollected = false; 30 | 31 | public String name() { 32 | return "AutoComposter"; 33 | } 34 | 35 | public boolean toggled() { 36 | return Config.autoComposter; 37 | } 38 | 39 | @SubscribeEvent 40 | public void onGui(GuiScreenEvent.InitGuiEvent.Post event) { 41 | fuelAdded = false; 42 | cropsAdded = false; 43 | compostCollected = false; 44 | } 45 | 46 | @SubscribeEvent 47 | public void onBackgroundRender(GuiScreenEvent.BackgroundDrawnEvent event) { 48 | String chestName = InventoryUtils.getGuiName(event.gui); 49 | if (chestName.contains("Confirm") && prevName.contains("Composter")) prevComposter = true; 50 | prevName = chestName; 51 | inComposter = chestName.contains("Composter"); 52 | if (!chestName.contains("Confirm") && !chestName.contains("Composter")) { 53 | prevComposter = false; 54 | fuelAdded = false; 55 | cropsAdded = false; 56 | compostCollected = false; 57 | } 58 | } 59 | 60 | 61 | @SubscribeEvent 62 | public void onTick(TickEvent event) { 63 | if (delay % Config.composter_delay == 0 && Config.autoComposter) { 64 | if (mc.currentScreen instanceof GuiChest && inComposter) { 65 | boolean actionDone = false; 66 | if (!cropsAdded) { 67 | switch (Config.composter_crop) { 68 | case 0: 69 | mc.playerController.windowClick(mc.thePlayer.openContainer.windowId, 48, 1, 0, mc.thePlayer); 70 | actionDone = true; 71 | cropsAdded = true; 72 | break; 73 | case 2: 74 | cropsAdded = true; 75 | break; 76 | case 1: 77 | mc.playerController.windowClick(mc.thePlayer.openContainer.windowId, 48, 0, 0, mc.thePlayer); 78 | actionDone = true; 79 | cropsAdded = true; 80 | break; 81 | } 82 | } 83 | if (!fuelAdded && !actionDone) { 84 | if (Config.composter_fuel) { 85 | mc.playerController.windowClick(mc.thePlayer.openContainer.windowId, 50, 0, 0, mc.thePlayer); 86 | actionDone = true; 87 | } 88 | fuelAdded = true; 89 | } 90 | if (!compostCollected && !actionDone) { 91 | if (mc.thePlayer.openContainer.inventorySlots.get(22).getStack().getItem() == Items.skull) { 92 | if (Config.composter_compost) { 93 | mc.playerController.windowClick(mc.thePlayer.openContainer.windowId, 22, 0, 0, mc.thePlayer); 94 | } 95 | compostCollected = true; 96 | } 97 | } 98 | } else if (mc.currentScreen instanceof GuiChest && prevComposter) { 99 | mc.playerController.windowClick(mc.thePlayer.openContainer.windowId, 11, 0, 0, mc.thePlayer); 100 | } 101 | } 102 | delay++; 103 | if (delay > 10000) delay = 0; 104 | } 105 | 106 | @SubscribeEvent 107 | public void onWorldChange(WorldEvent.Load event) { 108 | inComposter = false; 109 | fuelAdded = false; 110 | cropsAdded = false; 111 | compostCollected = false; 112 | } 113 | } -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/features/garden/GrassESP.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.features.garden; 2 | 3 | import me.aurora.client.config.Config; 4 | import me.aurora.client.features.Module; 5 | import me.aurora.client.utils.BlockRenderUtils; 6 | import me.aurora.client.utils.conditions.ConditionUtils; 7 | import me.aurora.client.utils.iteration.LoopUtils; 8 | import net.minecraft.block.BlockTallGrass; 9 | import net.minecraft.init.Blocks; 10 | import net.minecraft.util.BlockPos; 11 | import net.minecraftforge.client.event.RenderWorldLastEvent; 12 | import net.minecraftforge.event.world.WorldEvent; 13 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 14 | import net.minecraftforge.fml.common.gameevent.TickEvent; 15 | 16 | import java.awt.*; 17 | import java.util.Set; 18 | import java.util.concurrent.ConcurrentHashMap; 19 | 20 | import static me.aurora.client.Aurora.mc; 21 | 22 | /** 23 | * @author Gabagooooooooooool 24 | * @version 1.0 25 | * @brief Grass ESP 26 | * Back to the original state 27 | */ 28 | public class GrassESP implements Module { 29 | boolean readyToScan = true; 30 | private Set grassBlocks = ConcurrentHashMap.newKeySet(); 31 | private Set tempGrassBlocks = ConcurrentHashMap.newKeySet(); 32 | 33 | public String name() { 34 | return "GrassESP"; 35 | } 36 | 37 | public boolean toggled() { 38 | return Config.grassEsp; 39 | } 40 | 41 | @SubscribeEvent 42 | public void onTick(TickEvent.PlayerTickEvent event) { 43 | if (Config.grassEsp && readyToScan && ConditionUtils.inGame()) { 44 | readyToScan = false; 45 | new Thread(() -> scanBlocks((int) mc.thePlayer.posX, (int) mc.thePlayer.posY, (int) mc.thePlayer.posZ), "GrassScan").start(); 46 | } 47 | 48 | } 49 | 50 | public void scanBlocks(int StartX, int StartY, int StartZ) { 51 | tempGrassBlocks.clear(); 52 | grassBlocks.stream().filter(b -> !blockIsGrass(b)).forEach(tempGrassBlocks::add); 53 | tempGrassBlocks.forEach(b -> { 54 | grassBlocks.remove(b); 55 | }); 56 | LoopUtils.brLoop(StartX, StartY, StartZ, 50, (x, y, z) -> { 57 | BlockPos block = new BlockPos(x, y, z); 58 | if (blockIsGrass(block)) grassBlocks.add(block); 59 | }); 60 | readyToScan = true; 61 | } 62 | 63 | @SubscribeEvent 64 | public void onRenderWorld(RenderWorldLastEvent event) { 65 | if (Config.grassEsp) 66 | grassBlocks.stream().filter(this::blockIsGrass).forEach(b -> BlockRenderUtils.drawOutlinedBoundingBox(b, new Color(146, 255, 65, 255), 3, event.partialTicks)); 67 | 68 | } 69 | 70 | @SubscribeEvent 71 | public void onWorldChange(WorldEvent.Load event) { 72 | readyToScan = true; 73 | grassBlocks.clear(); 74 | } 75 | 76 | private boolean blockIsGrass(BlockPos b) { 77 | if (mc.theWorld.getBlockState(b).getBlock() == Blocks.tallgrass) 78 | return (mc.theWorld.getBlockState(b).getValue(BlockTallGrass.TYPE) == BlockTallGrass.EnumType.GRASS); 79 | return false; 80 | } 81 | } -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/features/macros/BedrockFailsafe.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.features.macros; 2 | 3 | import me.aurora.client.Aurora; 4 | import me.aurora.client.config.Config; 5 | import me.aurora.client.utils.MessageUtils; 6 | import me.aurora.client.utils.RotationUtils; 7 | import me.aurora.client.utils.iteration.LoopUtils; 8 | import me.aurora.client.utils.rotation.Rotation; 9 | import net.minecraft.client.settings.KeyBinding; 10 | import net.minecraft.init.Blocks; 11 | import net.minecraft.util.BlockPos; 12 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 13 | import net.minecraftforge.fml.common.gameevent.TickEvent; 14 | 15 | import java.util.*; 16 | 17 | import static me.aurora.client.Aurora.mc; 18 | import static me.aurora.client.utils.MessageUtils.fakeMacroMessages; 19 | 20 | public class BedrockFailsafe { 21 | 22 | public boolean hasBeenStopped = false; 23 | private int ticks; 24 | 25 | @SubscribeEvent 26 | public void onTick(TickEvent.PlayerTickEvent event) { 27 | if(Config.BedrockFailsafe && Config.f11Macro) { 28 | new Thread(() -> scanBlocks((int) mc.thePlayer.posX, (int) mc.thePlayer.posY, (int) mc.thePlayer.posZ), "bedrockCheck_thread").start(); 29 | } 30 | } 31 | 32 | public void scanBlocks(int StartX, int StartY, int StartZ) { 33 | int playerX = Aurora.mc.thePlayer.getPosition().getX(); 34 | int playerY = Aurora.mc.thePlayer.getPosition().getY(); 35 | int playerZ = Aurora.mc.thePlayer.getPosition().getZ(); 36 | LoopUtils.brLoop(StartX, StartY, StartZ, 5, (x, y, z) -> { 37 | BlockPos checked = new BlockPos(x, y, z); 38 | if (mc.theWorld.getBlockState(checked).getBlock() == Blocks.bedrock && !hasBeenStopped) { 39 | if (++ticks < 100) return; 40 | ticks = 0; 41 | mc.theWorld.playSound(playerX, playerY, playerZ, "random.orb", 100, 5, false); 42 | MessageUtils.sendClientMessage("Bedrock Box Detected! Stopping macro.."); 43 | Config.f11Macro = false; 44 | hasBeenStopped = true; 45 | fakeMovements(); 46 | } 47 | }); 48 | } 49 | 50 | public void fakeMovements() { 51 | Config.f11Macro = false; 52 | F11.stopAllMovement(); 53 | int chuj = MessageUtils.random.nextInt(fakeMacroMessages.length); 54 | String randomString = fakeMacroMessages[chuj]; 55 | mc.thePlayer.sendChatMessage(randomString); 56 | 57 | new Thread(()-> { 58 | try { 59 | Thread.sleep(2000); 60 | mc.thePlayer.sendChatMessage(fakeMacroMessages[chuj]); 61 | } catch (InterruptedException e) { 62 | throw new RuntimeException(e); 63 | } 64 | } 65 | ).start(); 66 | 67 | Random rYaw = new Random(); 68 | Random rPitch = new Random(); 69 | int randomYaw = rYaw.nextInt(180); 70 | int randomPitch = rPitch.nextInt(90); 71 | RotationUtils.smoothLook(new RotationUtils.Rotation(randomPitch, randomYaw), 20, null); 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/features/macros/F11.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.features.macros; 2 | 3 | import me.aurora.client.config.Config; 4 | import me.aurora.client.features.Module; 5 | import me.aurora.client.utils.BindUtils; 6 | import me.aurora.client.utils.MessageUtils; 7 | import net.minecraft.client.Minecraft; 8 | import net.minecraft.client.settings.KeyBinding; 9 | import net.minecraft.entity.player.EntityPlayer; 10 | import net.minecraftforge.event.entity.living.LivingEvent; 11 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 12 | import net.minecraftforge.fml.common.gameevent.InputEvent; 13 | import net.minecraftforge.fml.common.gameevent.TickEvent; 14 | 15 | import java.util.Arrays; 16 | 17 | import static me.aurora.client.Aurora.mc; 18 | 19 | public class F11 implements Module { 20 | 21 | public String name() { 22 | return "Macro"; 23 | } 24 | 25 | public boolean toggled() { 26 | return Config.f11Macro; 27 | } 28 | 29 | 30 | public static KeyBinding[] bindArray = { 31 | mc.gameSettings.keyBindAttack, 32 | mc.gameSettings.keyBindBack, 33 | mc.gameSettings.keyBindLeft, 34 | mc.gameSettings.keyBindRight, 35 | mc.gameSettings.keyBindUseItem, 36 | mc.gameSettings.keyBindForward 37 | }; 38 | 39 | 40 | public static void stopAllMovement() { 41 | for(KeyBinding bind : bindArray) { 42 | KeyBinding.setKeyBindState(bind.getKeyCode(), false); 43 | } 44 | } 45 | 46 | @SubscribeEvent 47 | public void LivingUpdateEvent(LivingEvent.LivingUpdateEvent event) { 48 | if (BindUtils.isBindPressed("F11Macro") && toggled()) { 49 | MessageUtils.sendClientMessage("Toggled F11 Macro, press the keys you set to come back."); 50 | Minecraft.getMinecraft().gameSettings.pauseOnLostFocus = false; 51 | if (event.entityLiving instanceof EntityPlayer) { 52 | if (mc.currentScreen == null) { 53 | if (Config.f11Forward) { 54 | KeyBinding.setKeyBindState(mc.gameSettings.keyBindForward.getKeyCode(), true); 55 | } 56 | if (Config.f11Back) { 57 | KeyBinding.setKeyBindState(mc.gameSettings.keyBindBack.getKeyCode(), true); 58 | } 59 | if (Config.f11Left) { 60 | KeyBinding.setKeyBindState(mc.gameSettings.keyBindLeft.getKeyCode(), true); 61 | } 62 | if (Config.f11Right) { 63 | KeyBinding.setKeyBindState(mc.gameSettings.keyBindRight.getKeyCode(), true); 64 | } 65 | if (Config.f11LeftClick) { 66 | KeyBinding.setKeyBindState(mc.gameSettings.keyBindAttack.getKeyCode(), true); 67 | } 68 | if (Config.f11RightClick) { 69 | KeyBinding.setKeyBindState(mc.gameSettings.keyBindUseItem.getKeyCode(), true); 70 | } 71 | } 72 | KeyBinding.setKeyBindState(Minecraft.getMinecraft().gameSettings.keyBindFullscreen.getKeyCode(), true); 73 | } 74 | } else { 75 | Minecraft.getMinecraft().gameSettings.pauseOnLostFocus = true; 76 | } 77 | } 78 | 79 | } 80 | -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/features/macros/HotbarFailsafe.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.features.macros; 2 | 3 | import me.aurora.client.Aurora; 4 | import me.aurora.client.config.Config; 5 | import me.aurora.client.utils.MessageUtils; 6 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 7 | import net.minecraftforge.fml.common.gameevent.TickEvent; 8 | 9 | import java.util.Arrays; 10 | import java.util.Random; 11 | 12 | public class HotbarFailsafe { 13 | 14 | @SubscribeEvent 15 | public void onTick(TickEvent.PlayerTickEvent event) { 16 | if(event.player != null && Config.hotbar_failsafe && Config.f11Macro) { 17 | if(Aurora.mc.thePlayer.inventory.currentItem != Config.farming_tool_slot) { 18 | failsafe(); 19 | } 20 | } 21 | } 22 | 23 | public void failsafe() { 24 | new Thread(()-> { 25 | try { 26 | Random random = new Random(); 27 | int randomMessage = random.nextInt(MessageUtils.fakeMacroMessages.length); 28 | Config.f11Macro = false; 29 | F11.stopAllMovement(); 30 | Thread.sleep(1500); 31 | Aurora.mc.thePlayer.sendChatMessage(MessageUtils.fakeMacroMessages[randomMessage]); 32 | Aurora.mc.thePlayer.inventory.currentItem = Config.farming_tool_slot; 33 | } catch (InterruptedException e) { 34 | throw new RuntimeException(e); 35 | } 36 | }).start(); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/features/macros/PathFailsafe.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.features.macros; 2 | 3 | import me.aurora.client.Aurora; 4 | import me.aurora.client.config.Config; 5 | import me.aurora.client.utils.MessageUtils; 6 | 7 | import me.aurora.client.utils.RotationUtils; 8 | import net.minecraft.init.Blocks; 9 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 10 | import net.minecraftforge.fml.common.gameevent.TickEvent; 11 | 12 | import java.util.Random; 13 | 14 | import static me.aurora.client.utils.BlockDirUtils.*; 15 | 16 | public class PathFailsafe { 17 | @SubscribeEvent 18 | public void onTick(TickEvent.PlayerTickEvent event) { 19 | if(Config.path_failsafe) { 20 | if (Config.f11Macro) { 21 | if (getLeftBlock() == Blocks.dirt || getRightBlock() == Blocks.dirt || 22 | getRightTopBlock() == Blocks.dirt || getLeftTopBlock() == Blocks.dirt) { 23 | MessageUtils.sendClientMessage("Detected path block, stopping macro and triggering failsafe.."); 24 | } 25 | } 26 | } 27 | } 28 | 29 | public void fake() { 30 | Random rPitch = new Random(); 31 | Random rYaw = new Random(); 32 | int randomPitch = rPitch.nextInt(90); 33 | int randomYaw = rYaw.nextInt(180); 34 | RotationUtils.smoothLook(new RotationUtils.Rotation(randomPitch, randomYaw), 20, null); 35 | Aurora.mc.thePlayer.sendChatMessage("wtf"); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/features/macros/RotationFailsafe.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.features.macros; 2 | 3 | import me.aurora.client.Aurora; 4 | import me.aurora.client.config.Config; 5 | import me.aurora.client.utils.MessageUtils; 6 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 7 | import net.minecraftforge.fml.common.gameevent.TickEvent; 8 | 9 | import java.util.Random; 10 | 11 | import static me.aurora.client.Aurora.mc; 12 | 13 | public class RotationFailsafe { 14 | 15 | public int playerX = mc.thePlayer.getPosition().getX(); 16 | public int playerY = mc.thePlayer.getPosition().getY(); 17 | public int playerZ = mc.thePlayer.getPosition().getZ(); 18 | 19 | 20 | @SubscribeEvent 21 | public void onTick(TickEvent.PlayerTickEvent event) { 22 | if(event.player != null && Config.rotation_check && Config.f11Macro) { 23 | if (Aurora.mc.thePlayer.rotationPitch > Config.f11pitch + Config.rotation_sensitivity 24 | || Aurora.mc.thePlayer.rotationPitch < Config.f11pitch - Config.rotation_sensitivity 25 | || Aurora.mc.thePlayer.rotationYaw > Config.f11yaw + Config.rotation_sensitivity 26 | || Aurora.mc.thePlayer.rotationYaw < Config.f11yaw - Config.rotation_sensitivity) { 27 | failsafe(); 28 | } 29 | } 30 | } 31 | 32 | public void failsafe() { 33 | new Thread(() -> { 34 | try { 35 | mc.theWorld.playSound(playerX, playerY, playerZ, "random.orb", 100, 5, false); 36 | F11.stopAllMovement(); 37 | Thread.sleep(1500); 38 | Random random = new Random(); 39 | int ran = random.nextInt(MessageUtils.fakeMacroMessages.length); 40 | Aurora.mc.thePlayer.sendChatMessage(MessageUtils.fakeMacroMessages[ran]); 41 | } catch (InterruptedException e) { 42 | throw new RuntimeException(e); 43 | } 44 | }).start(); 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/features/macros/WorldChangeFailsafe.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.features.macros; 2 | 3 | import me.aurora.client.Aurora; 4 | import me.aurora.client.config.Config; 5 | import net.minecraftforge.client.event.ClientChatReceivedEvent; 6 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 7 | 8 | public class WorldChangeFailsafe { 9 | 10 | @SubscribeEvent 11 | public void chat(ClientChatReceivedEvent event) { 12 | if(event.message.getUnformattedText().contains("Sending to server ") && Config.f11Macro) { 13 | failsafe(); 14 | } 15 | } 16 | public void failsafe() { 17 | new Thread(() -> { 18 | try { 19 | Thread.sleep(2500); 20 | F11.stopAllMovement(); 21 | Thread.sleep(2500); 22 | Aurora.mc.thePlayer.sendChatMessage("wow"); 23 | Thread.sleep(5000); 24 | Aurora.mc.thePlayer.sendChatMessage("/warp garden"); 25 | } catch (InterruptedException e) { 26 | throw new RuntimeException(e); 27 | } 28 | }).start(); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/features/mining/GemstoneScanner.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.features.mining; 2 | 3 | import me.aurora.client.config.Config; 4 | import me.aurora.client.features.Module; 5 | import me.aurora.client.utils.BlockRenderUtils; 6 | import me.aurora.client.utils.conditions.ConditionUtils; 7 | import net.minecraft.block.BlockStainedGlass; 8 | import net.minecraft.client.Minecraft; 9 | import net.minecraft.init.Blocks; 10 | import net.minecraft.item.EnumDyeColor; 11 | import net.minecraft.util.BlockPos; 12 | import net.minecraftforge.client.event.RenderWorldLastEvent; 13 | import net.minecraftforge.event.world.WorldEvent; 14 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 15 | import net.minecraftforge.fml.common.gameevent.TickEvent; 16 | 17 | import java.awt.*; 18 | import java.util.concurrent.ConcurrentHashMap; 19 | import java.util.stream.IntStream; 20 | 21 | /** 22 | * @author Gabagooooooooooool 23 | * @version 2.1 24 | * Gemstone Scanner (ESP) 25 | */ 26 | 27 | public class GemstoneScanner implements Module { 28 | private final ConcurrentHashMap espModeMap = new ConcurrentHashMap<>(); 29 | private final ConcurrentHashMap textModeMap = new ConcurrentHashMap<>(); 30 | boolean readyToScan = true; 31 | Minecraft mc = Minecraft.getMinecraft(); 32 | private ConcurrentHashMap espModeTemportaryMap = new ConcurrentHashMap<>(); 33 | private ConcurrentHashMap textModeTemportaryMap = new ConcurrentHashMap<>(); 34 | 35 | public String name() { 36 | return "GemstoneScanner"; 37 | } 38 | 39 | public boolean toggled() { 40 | return Config.gemstoneEsp; 41 | } 42 | 43 | @SubscribeEvent 44 | public void onTick(TickEvent.PlayerTickEvent event) { 45 | if (Config.gemstoneEsp && (Config.gemstoneEsp_ParameterAggressiveScan || ((mc.theWorld.getTotalWorldTime() % (2L * Config.gemstoneEsp_ParameterRange)) == 0)) && readyToScan && ConditionUtils.inGame()) { 46 | readyToScan = false; 47 | new Thread(() -> scanBlocks((int) mc.thePlayer.posX, (int) mc.thePlayer.posY, (int) mc.thePlayer.posZ), "ScannerThread").start(); 48 | } 49 | 50 | } 51 | 52 | public void scanBlocks(int StartX, int StartY, int StartZ) { 53 | if (!Config.gemstoneEsp_ParameterKeep) { 54 | removeMissing(espModeMap, textModeMap); 55 | } 56 | // LoopUtils.brLoopBound(StartX, StartY, StartZ, Config.gemstoneEsp_ParameterRange, lambda, 0, 255); 57 | IntStream.range(StartX - Config.gemstoneEsp_ParameterRange, StartX + Config.gemstoneEsp_ParameterRange).forEach(x -> { 58 | IntStream.range(StartY - Config.gemstoneEsp_ParameterRange, StartY + Config.gemstoneEsp_ParameterRange).forEach(y -> { 59 | IntStream.range(StartZ - Config.gemstoneEsp_ParameterRange, StartZ + Config.gemstoneEsp_ParameterRange).filter(z -> (mc.theWorld.getBlockState(new BlockPos(x, y, z)).getBlock() == Blocks.stained_glass_pane || mc.theWorld.getBlockState(new BlockPos(x, y, z)).getBlock() == Blocks.stained_glass)).forEach(z -> { 60 | EnumDyeColor blockColor = mc.theWorld.getBlockState(new BlockPos(x, y, z)).getValue(BlockStainedGlass.COLOR); 61 | if (Config.gemstoneEsp_ParameterVisualType == 2) { 62 | switch (blockColor) { 63 | case RED: 64 | textModeMap.put(new BlockPos(x, y, z), "\247cR"); 65 | break; 66 | case PURPLE: 67 | textModeMap.put(new BlockPos(x, y, z), "\2475A"); 68 | break; 69 | case LIME: 70 | textModeMap.put(new BlockPos(x, y, z), "\247aJ"); 71 | break; 72 | case LIGHT_BLUE: 73 | textModeMap.put(new BlockPos(x, y, z), "\2479A"); 74 | break; 75 | case ORANGE: 76 | textModeMap.put(new BlockPos(x, y, z), "\2476A"); 77 | break; 78 | case YELLOW: 79 | textModeMap.put(new BlockPos(x, y, z), "\247eT"); 80 | break; 81 | case MAGENTA: 82 | textModeMap.put(new BlockPos(x, y, z), "\247dJ"); 83 | break; 84 | } 85 | } else { 86 | switch (blockColor) { 87 | case RED: 88 | espModeMap.put(new BlockPos(x, y, z), new Color(165, 59, 62, 150)); 89 | break; 90 | case PURPLE: 91 | espModeMap.put(new BlockPos(x, y, z), new Color(180, 12, 246, 150)); 92 | break; 93 | case LIME: 94 | espModeMap.put(new BlockPos(x, y, z), new Color(177, 250, 69, 150)); 95 | break; 96 | case LIGHT_BLUE: 97 | espModeMap.put(new BlockPos(x, y, z), new Color(19, 119, 217, 150)); 98 | break; 99 | case ORANGE: 100 | espModeMap.put(new BlockPos(x, y, z), new Color(246, 131, 0, 150)); 101 | break; 102 | case YELLOW: 103 | espModeMap.put(new BlockPos(x, y, z), new Color(198, 183, 45, 150)); 104 | break; 105 | case MAGENTA: 106 | espModeMap.put(new BlockPos(x, y, z), new Color(223, 23, 173, 150)); 107 | break; 108 | } 109 | } 110 | }); 111 | }); 112 | }); 113 | readyToScan = true; 114 | } 115 | 116 | @SubscribeEvent 117 | public void onRenderWorld(RenderWorldLastEvent event) { 118 | if (Config.gemstoneEsp) { 119 | if (Config.gemstoneEsp_ParameterVisualType == 0) { 120 | if (!espModeMap.entrySet().isEmpty()) espModeTemportaryMap = espModeMap; 121 | espModeTemportaryMap.entrySet().stream().filter(b -> { 122 | return (mc.theWorld.getBlockState(b.getKey()).getBlock() != Blocks.air); 123 | }).forEach(b -> BlockRenderUtils.drawOutlinedBoundingBox(b.getKey(), b.getValue(), Config.gemstoneEsp_thicc, event.partialTicks)); 124 | } else if (Config.gemstoneEsp_ParameterVisualType == 1) { 125 | if (!espModeMap.entrySet().isEmpty()) espModeTemportaryMap = espModeMap; 126 | espModeTemportaryMap.entrySet().stream().filter(b -> { 127 | return (mc.theWorld.getBlockState(b.getKey()).getBlock() != Blocks.air); 128 | }).forEach(b -> BlockRenderUtils.highlightBlock(b.getKey(), b.getValue(), event.partialTicks)); 129 | } else { 130 | if (!textModeMap.entrySet().isEmpty()) textModeTemportaryMap = textModeMap; 131 | textModeTemportaryMap.entrySet().stream().filter(b -> { 132 | return (mc.theWorld.getBlockState(b.getKey()).getBlock() != Blocks.air); 133 | }).forEach(b -> BlockRenderUtils.renderBeaconText(b.getValue(), b.getKey(), event.partialTicks)); 134 | } 135 | } 136 | } 137 | 138 | @SubscribeEvent 139 | public void onWorldChange(WorldEvent.Load event) { 140 | espModeMap.clear(); 141 | textModeMap.clear(); 142 | } 143 | 144 | @SafeVarargs 145 | private final void removeMissing(ConcurrentHashMap... hashmaps) { 146 | for (ConcurrentHashMap hashmap : hashmaps) { 147 | hashmap.entrySet().removeIf(x -> mc.theWorld.getBlockState(x.getKey()).getBlock() == Blocks.stained_glass_pane || mc.theWorld.getBlockState(x.getKey()).getBlock() == Blocks.stained_glass); 148 | } 149 | } 150 | 151 | } 152 | 153 | -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/features/misc/AntiLimbo.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.features.misc; 2 | 3 | import me.aurora.client.Aurora; 4 | import me.aurora.client.config.Config; 5 | import me.aurora.client.features.Module; 6 | import me.aurora.client.utils.MessageUtils; 7 | import me.aurora.client.utils.string.StringUtils; 8 | import net.minecraftforge.client.event.ClientChatReceivedEvent; 9 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 10 | 11 | /** 12 | * @author OctoSplash01 Gabagooooooooooool 13 | * @version 1.1 14 | * @brief AntiLimbo 15 | */ 16 | public class AntiLimbo implements Module { 17 | public String name() { 18 | return "AntiLimbo"; 19 | } 20 | 21 | public boolean toggled() { 22 | return Config.antiLimbo; 23 | } 24 | 25 | @SubscribeEvent 26 | public void onChat(ClientChatReceivedEvent event) { 27 | if (toggled() && event.type == 0 && StringUtils.removeFormatting(event.message.getFormattedText()).contains("You are playing on profile")) { 28 | Aurora.mc.thePlayer.sendChatMessage("/is"); 29 | MessageUtils.sendClientMessage("Warping back to island"); 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/features/misc/AutoHarp.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.features.misc; 2 | 3 | import me.aurora.client.config.Config; 4 | import me.aurora.client.features.Module; 5 | 6 | public class AutoHarp implements Module { 7 | public String name() { 8 | return "AutoHarp"; 9 | } 10 | 11 | public boolean toggled() { 12 | return Config.autoHarp; 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/features/misc/AutoJoinSkyblock.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.features.misc; 2 | 3 | import me.aurora.client.Aurora; 4 | import me.aurora.client.config.Config; 5 | import me.aurora.client.features.Module; 6 | import me.aurora.client.utils.BindUtils; 7 | import me.aurora.client.utils.MessageUtils; 8 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 9 | import net.minecraftforge.fml.common.gameevent.InputEvent; 10 | 11 | /** 12 | * @author OctoSplash01 Gabagooooooooooool 13 | * @version 2.0 14 | * @brief Automaticly Joins Skyblock 15 | */ 16 | public class AutoJoinSkyblock implements Module { 17 | public String name() { 18 | return "AutoJoinSkyblock"; 19 | } 20 | 21 | public boolean toggled() { 22 | return Config.fastJoin; 23 | } 24 | 25 | @SubscribeEvent 26 | public void onKeyPress(InputEvent.KeyInputEvent event) { 27 | if (BindUtils.isBindDown("FastJoin") && toggled()) { 28 | Aurora.mc.thePlayer.sendChatMessage("/play sb"); 29 | MessageUtils.sendClientMessage("Auto Joining SkyBlock..."); 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/features/misc/AutoSellBz.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.features.misc; 2 | 3 | import me.aurora.client.config.Config; 4 | import me.aurora.client.features.Module; 5 | import me.aurora.client.utils.BindUtils; 6 | import me.aurora.client.utils.InventoryUtils; 7 | import me.aurora.client.utils.MessageUtils; 8 | import net.minecraft.client.gui.inventory.GuiChest; 9 | import net.minecraftforge.client.event.ClientChatReceivedEvent; 10 | import net.minecraftforge.client.event.GuiScreenEvent; 11 | import net.minecraftforge.event.world.WorldEvent; 12 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 13 | import net.minecraftforge.fml.common.gameevent.InputEvent; 14 | import net.minecraftforge.fml.common.gameevent.TickEvent; 15 | 16 | import static me.aurora.client.Aurora.mc; 17 | 18 | public class AutoSellBz implements Module { 19 | private int delay = 0; 20 | private boolean inBazaar = false; 21 | private boolean areYouSure = false; 22 | private boolean readyToSell = false; 23 | 24 | public String name() { 25 | return "AutoSellBZ"; 26 | } 27 | 28 | public boolean toggled() { 29 | return Config.autoSellBz; 30 | } 31 | 32 | @SubscribeEvent 33 | public void onChat(ClientChatReceivedEvent event) { 34 | if (Config.autoSellBz && event.type == 0) { 35 | String message = event.message.getFormattedText().replaceAll("\u00a7.", ""); 36 | if (message.equals("Your inventory is full!") | message.contains("Inventory full? Don't forget to check out your Storage inside the SkyBlock Menu!") && Config.autoSellBzType == 1) { 37 | readyToSell = true; 38 | mc.thePlayer.sendChatMessage("/bz"); 39 | MessageUtils.sendClientMessage("Selling Items on Bazaar..."); 40 | } else if (message.equals("[Bazaar] Executing instant sell...")) { 41 | readyToSell = false; 42 | mc.thePlayer.closeScreen(); 43 | MessageUtils.sendClientMessage("Sold Items on Bazaar"); 44 | } else if (message.equals("[Bazaar] You don't have anything to sell!")) { 45 | readyToSell = false; 46 | mc.thePlayer.closeScreen(); 47 | MessageUtils.sendClientMessage("No Items to Sell"); 48 | } 49 | } 50 | } 51 | 52 | @SubscribeEvent 53 | public void onKeyPress(InputEvent.KeyInputEvent event) { 54 | if (Config.autoSellBz && Config.autoSellBzType == 0 && BindUtils.isBindPressed("AutoSellBazaar")) { 55 | readyToSell = true; 56 | mc.thePlayer.sendChatMessage("/bz"); 57 | MessageUtils.sendClientMessage("Selling Items on Bazaar..."); 58 | } 59 | } 60 | 61 | @SubscribeEvent 62 | public void onBackgroundRender(GuiScreenEvent.BackgroundDrawnEvent event) { 63 | String chestName = InventoryUtils.getGuiName(event.gui); 64 | inBazaar = chestName.contains("Bazaar"); 65 | areYouSure = chestName.contains("Are you sure"); 66 | } 67 | 68 | @SubscribeEvent 69 | public void onTick(TickEvent event) { 70 | if (delay % 20 == 0) { 71 | if (mc.currentScreen instanceof GuiChest) { 72 | if (inBazaar && Config.autoSellBz && readyToSell) { 73 | mc.playerController.windowClick(mc.thePlayer.openContainer.windowId, 47, 1, 0, mc.thePlayer); 74 | } else if (areYouSure && Config.autoSellBz && readyToSell) { 75 | mc.playerController.windowClick(mc.thePlayer.openContainer.windowId, 11, 1, 0, mc.thePlayer); 76 | } 77 | } 78 | } 79 | delay++; 80 | } 81 | 82 | @SubscribeEvent 83 | public void onWorldChange(WorldEvent.Load event) { 84 | readyToSell = false; 85 | } 86 | } -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/features/misc/AutoSex.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.features.misc; 2 | 3 | import me.aurora.client.config.Config; 4 | import me.aurora.client.features.Module; 5 | import me.aurora.client.utils.Timer; 6 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 7 | import net.minecraftforge.fml.common.gameevent.TickEvent; 8 | 9 | import static me.aurora.client.Aurora.mc; 10 | 11 | public class AutoSex implements Module { 12 | String ign = Config.sexAuraKurwa; 13 | Timer timer = new Timer(); 14 | 15 | public String name() { 16 | return "SexAura"; 17 | } 18 | 19 | public boolean toggled() { 20 | return Config.sexAura; 21 | } 22 | 23 | @SubscribeEvent 24 | public void onTick(TickEvent.PlayerTickEvent e) { 25 | if (toggled() && timer.timeBetween(5000, true)) { 26 | switch (Config.sexAuraMode) { 27 | case 0: 28 | mc.thePlayer.sendChatMessage("/msg Aleksiiiio oj oj oj aleksio raaaaaawr kurrrrrrrrrcze pieczone"); 29 | mc.thePlayer.sendChatMessage("/f Aleksiiiio"); 30 | mc.thePlayer.sendChatMessage("/p Aleksiiiio"); 31 | case 1: 32 | mc.thePlayer.sendChatMessage("/msg " + ign + " oj oj oj " + ign + " raaaaaawr kurrrrrrrrrcze pieczone"); 33 | mc.thePlayer.sendChatMessage("/f " + ign); 34 | mc.thePlayer.sendChatMessage("/p " + ign); 35 | } 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/features/misc/AutoWardrobe.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.features.misc; 2 | 3 | 4 | import me.aurora.client.config.Config; 5 | import me.aurora.client.features.Module; 6 | import me.aurora.client.utils.BindUtils; 7 | import me.aurora.client.utils.InventoryUtils; 8 | import me.aurora.client.utils.MessageUtils; 9 | import me.aurora.client.utils.Timer; 10 | import net.minecraft.client.gui.inventory.GuiChest; 11 | import net.minecraft.item.ItemDye; 12 | import net.minecraftforge.client.event.GuiScreenEvent; 13 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 14 | import net.minecraftforge.fml.common.gameevent.InputEvent; 15 | import net.minecraftforge.fml.common.gameevent.TickEvent; 16 | 17 | import static me.aurora.client.Aurora.mc; 18 | 19 | public class AutoWardrobe implements Module { 20 | 21 | 22 | @Override 23 | public boolean toggled() { 24 | return Config.AutoWD; 25 | } 26 | 27 | @Override 28 | public String name() { 29 | return "Auto Wardrobe"; 30 | } 31 | 32 | private boolean inWardrobe = false; 33 | private boolean readyToSwitch = false; 34 | private int ticks; 35 | 36 | Timer timer = new Timer(); 37 | 38 | @SubscribeEvent 39 | public void onBackgroundRender(GuiScreenEvent.BackgroundDrawnEvent event) { 40 | String chestName = InventoryUtils.getGuiName(event.gui); 41 | inWardrobe = chestName.contains("Wardrobe"); 42 | } 43 | 44 | @SubscribeEvent 45 | public void onTick(TickEvent.PlayerTickEvent event) { 46 | if (mc.currentScreen instanceof GuiChest && toggled()) { 47 | if (inWardrobe && readyToSwitch) { 48 | if(timer.timeBetween(200, true)) { 49 | InventoryUtils.clickSlot(35 + Config.wd_slot, 0, 0); 50 | } 51 | if(timer.timeBetween(200, true)) { 52 | mc.thePlayer.closeScreen(); 53 | } 54 | } 55 | } 56 | } 57 | 58 | @SubscribeEvent 59 | public void onKeyPress(InputEvent.KeyInputEvent event) { 60 | if (BindUtils.isBindPressed("AutoWardrobe")) { 61 | readyToSwitch = true; 62 | mc.thePlayer.sendChatMessage("/wd"); 63 | MessageUtils.sendClientMessage("Opening Wardrobe.."); 64 | } 65 | } 66 | 67 | } 68 | -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/features/misc/HarpStealer.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.features.misc; 2 | 3 | import me.aurora.client.config.Config; 4 | import me.aurora.client.features.Module; 5 | 6 | @Deprecated 7 | public class HarpStealer implements Module { 8 | public String name() { 9 | return "HarpStealer"; 10 | } 11 | 12 | public boolean toggled() { 13 | return Config.harpStealer; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/features/misc/MelodyThrottle.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.features.misc; 2 | 3 | import me.aurora.client.config.Config; 4 | import me.aurora.client.features.Module; 5 | import me.aurora.client.utils.MessageUtils; 6 | import me.aurora.client.utils.string.StringUtils; 7 | import net.minecraftforge.client.event.ClientChatReceivedEvent; 8 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 9 | 10 | import static me.aurora.client.Aurora.mc; 11 | 12 | /** 13 | * @author OctoSplash01 Gabagooooooooooool 14 | * @version 1.1 15 | * @brief Melody throttle notifier 16 | */ 17 | public class MelodyThrottle implements Module { 18 | public String name() { 19 | return "MelodyThrottle"; 20 | } 21 | 22 | public boolean toggled() { 23 | return Config.melodyThrottle; 24 | } 25 | 26 | @SubscribeEvent 27 | public void onChat(ClientChatReceivedEvent event) { 28 | if (Config.melodyThrottle && event.type == 0 && StringUtils.removeFormatting(event.message.getFormattedText()).contains("This menu has been throttled!")) { 29 | mc.thePlayer.sendChatMessage("/pc i am being throttled"); 30 | MessageUtils.sendClientMessage("Melody Is Being Throttled"); 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/features/misc/RatEsp.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.features.misc; 2 | 3 | import me.aurora.client.config.Config; 4 | import me.aurora.client.features.Module; 5 | import net.minecraft.client.entity.EntityOtherPlayerMP; 6 | import net.minecraft.client.gui.Gui; 7 | import net.minecraft.client.renderer.GlStateManager; 8 | import net.minecraft.util.ResourceLocation; 9 | import net.minecraftforge.client.event.RenderWorldLastEvent; 10 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 11 | import org.lwjgl.opengl.GL11; 12 | 13 | import static me.aurora.client.Aurora.mc; 14 | 15 | /** 16 | * @author Gabagooooooooooool 17 | * @version 1.2 18 | * @brief Rat/Crabby ESP 19 | */ 20 | public class RatEsp implements Module { 21 | private static final ResourceLocation CRABBY = new ResourceLocation("dailydungeons:res/crab.png"); 22 | private static final ResourceLocation RAT = new ResourceLocation("dailydungeons:res/bigrat.png"); 23 | 24 | /** 25 | * Following method has been circulating in Minecraft Hacking Community for a while, making it impossible to trace original author. 26 | */ 27 | @SubscribeEvent 28 | public void onRender(RenderWorldLastEvent event) { 29 | if (toggled()) { 30 | mc.theWorld.getLoadedEntityList().stream().filter(EntityOtherPlayerMP.class::isInstance).forEach(entity -> { 31 | double x = entity.lastTickPosX + (entity.posX - entity.lastTickPosX) * event.partialTicks - mc.getRenderManager().viewerPosX; 32 | double y = entity.lastTickPosY + (entity.posY - entity.lastTickPosY) * event.partialTicks - mc.getRenderManager().viewerPosY; 33 | double z = entity.lastTickPosZ + (entity.posZ - entity.lastTickPosZ) * event.partialTicks - mc.getRenderManager().viewerPosZ; 34 | GL11.glPushMatrix(); 35 | GL11.glTranslated(x, y - 0.2, z); 36 | GL11.glScalef(0.03f, 0.03f, 0.03f); 37 | GL11.glRotated(-mc.getRenderManager().playerViewY, 0.0, 1.0, 0.0); 38 | GlStateManager.disableDepth(); 39 | GlStateManager.color(1.0f, 1.0f, 1.0f, 1.0f); 40 | mc.getTextureManager().bindTexture(Config.ratEsp_crabbyMode ? CRABBY : RAT); 41 | Gui.drawModalRectWithCustomSizedTexture(50, 90, 0.0f, 0.0f, -100, -100, -100.0f, -100.0f); 42 | GlStateManager.enableDepth(); 43 | GL11.glPopMatrix(); 44 | }); 45 | } 46 | } 47 | 48 | @Override 49 | public boolean toggled() { 50 | return Config.ratEsp; 51 | } 52 | 53 | @Override 54 | public String name() { 55 | return "RatESP"; 56 | } 57 | } -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/features/misc/UpdateReminder.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.features.misc; 2 | 3 | import gg.essential.api.EssentialAPI; 4 | import lombok.SneakyThrows; 5 | import me.aurora.client.features.Module; 6 | import me.aurora.client.utils.RemoteUtils; 7 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 8 | import net.minecraftforge.fml.common.gameevent.PlayerEvent; 9 | 10 | import static me.aurora.client.Aurora.CURRENT_VERSION_BUILD; 11 | 12 | public class UpdateReminder implements Module { 13 | public String name() { 14 | return "UpdateReminder"; 15 | } 16 | 17 | public boolean toggled() { 18 | return false; 19 | } 20 | 21 | @SubscribeEvent 22 | @SneakyThrows 23 | public void onPlayerJoin(PlayerEvent.PlayerLoggedInEvent event) { 24 | if (RemoteUtils.isOutdated(CURRENT_VERSION_BUILD)) 25 | EssentialAPI.getNotifications().push("This Version of Aurora is Outdated", "Please Update!"); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/features/movement/AotvAura.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.features.movement; 2 | 3 | 4 | import me.aurora.client.config.Config; 5 | import me.aurora.client.features.Module; 6 | import me.aurora.client.utils.ItemUtils; 7 | import me.aurora.client.utils.conditions.ConditionUtils; 8 | import net.minecraft.item.ItemStack; 9 | import net.minecraftforge.event.entity.player.PlayerInteractEvent; 10 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 11 | 12 | import static me.aurora.client.Aurora.mc; 13 | 14 | 15 | /** 16 | * @author jxee OctoSplash01 Gabagooooooooooool 17 | * @version 1.1 18 | * @credit ShadyAddons (jxee) 19 | * @brief AOTV/E Aura 20 | */ 21 | public class AotvAura implements Module { 22 | public String name() { 23 | return "AotvAura"; 24 | } 25 | 26 | public boolean toggled() { 27 | return Config.aotvAura; 28 | } 29 | 30 | @SubscribeEvent 31 | public void onInteract(PlayerInteractEvent event) { 32 | if (toggled() && ConditionUtils.inSkyblock() && mc.thePlayer.inventory.currentItem == 0 && event.action == PlayerInteractEvent.Action.RIGHT_CLICK_AIR) { 33 | for (int i = 0; i < 8; i++) { 34 | ItemStack item = mc.thePlayer.inventory.getStackInSlot(i); 35 | if (ItemUtils.getSkyBlockID(item).matches("ASPECT_OF_THE_END|ASPECT_OF_THE_VOID")) { 36 | event.setCanceled(true); 37 | mc.thePlayer.inventory.currentItem = i; 38 | mc.playerController.sendUseItem(mc.thePlayer, mc.theWorld, item); 39 | mc.thePlayer.inventory.currentItem = 0; 40 | break; 41 | } 42 | } 43 | } 44 | } 45 | } 46 | 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/features/movement/AutoRogue.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.features.movement; 2 | 3 | import me.aurora.client.config.Config; 4 | import me.aurora.client.features.Module; 5 | import me.aurora.client.utils.ItemUtils; 6 | import me.aurora.client.utils.Timer; 7 | import me.aurora.client.utils.conditions.ConditionUtils; 8 | import net.minecraft.entity.player.EntityPlayer; 9 | import net.minecraft.item.ItemStack; 10 | import net.minecraftforge.event.entity.living.LivingEvent; 11 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 12 | 13 | import static me.aurora.client.Aurora.mc; 14 | 15 | /** 16 | * @author jxee OctoSplash01 Gabagooooooooooool 17 | * @version 1.1 18 | * @credit ShadyAddons (jxee) 19 | * @brief Rogue Sword Aura 20 | */ 21 | public class AutoRogue implements Module { 22 | Timer timer = new Timer(); 23 | 24 | public static void useItem(String itemId) { 25 | for (int i = 0; i < 8; i++) { 26 | ItemStack item = mc.thePlayer.inventory.getStackInSlot(i); 27 | if (itemId.equals(ItemUtils.getSkyBlockID(item))) { 28 | int previousItem = mc.thePlayer.inventory.currentItem; 29 | mc.thePlayer.inventory.currentItem = i; 30 | mc.playerController.sendUseItem(mc.thePlayer, mc.theWorld, item); 31 | mc.thePlayer.inventory.currentItem = previousItem; 32 | return; 33 | } 34 | } 35 | } 36 | 37 | public String name() { 38 | return "RogueSwordAura"; 39 | } 40 | 41 | public boolean toggled() { 42 | return Config.rogueSwordAura; 43 | } 44 | 45 | @SubscribeEvent 46 | public void LivingUpdateEvent(LivingEvent.LivingUpdateEvent event) { 47 | if (event.entityLiving instanceof EntityPlayer && toggled() && ConditionUtils.inSkyblock() && (timer.timeBetween(30000, true))) { 48 | useItem("ROGUE_SWORD"); 49 | } 50 | } 51 | } 52 | 53 | 54 | 55 | 56 | -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/features/movement/AutoSprint.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.features.movement; 2 | 3 | import lombok.AllArgsConstructor; 4 | import me.aurora.client.config.Config; 5 | import me.aurora.client.features.Module; 6 | import net.minecraft.client.gui.GuiChat; 7 | import net.minecraft.client.settings.GameSettings; 8 | import net.minecraft.client.settings.KeyBinding; 9 | import net.minecraft.entity.player.EntityPlayer; 10 | import net.minecraftforge.event.entity.living.LivingEvent; 11 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 12 | 13 | import static me.aurora.client.Aurora.mc; 14 | 15 | /** 16 | * @author OctoSplash01 Gabagooooooooooool 17 | * @version 1.1 18 | * @brief Auto Sprint 19 | */ 20 | public class AutoSprint implements Module { 21 | public String name() { 22 | return "AutoSprint"; 23 | } 24 | 25 | public boolean toggled() { 26 | return Config.autoSprint; 27 | } 28 | 29 | @SubscribeEvent 30 | public void LivingUpdateEvent(LivingEvent.LivingUpdateEvent event) { 31 | if (toggled() && event.entityLiving instanceof EntityPlayer && !(mc.currentScreen instanceof GuiChat) && !mc.thePlayer.isSneaking() && !mc.thePlayer.isUsingItem() && !mc.thePlayer.isCollidedHorizontally) { 32 | switch (Config.autoSprintSettings) { 33 | case 0: // Legit 34 | if (mc.thePlayer.onGround && Key.FORWARD.keyDown()) 35 | mc.thePlayer.setSprinting(true); 36 | break; 37 | case 1: // Omnidirectional 38 | if (Key.FORWARD.keyDown() || Key.LEFT.keyDown() || Key.RIGHT.keyDown() || Key.BACK.keyDown()) 39 | mc.thePlayer.setSprinting(true); 40 | break; 41 | } 42 | } 43 | } 44 | 45 | @AllArgsConstructor 46 | private enum Key { 47 | FORWARD(mc.gameSettings.keyBindForward), 48 | LEFT(mc.gameSettings.keyBindLeft), 49 | RIGHT(mc.gameSettings.keyBindRight), 50 | BACK(mc.gameSettings.keyBindBack); 51 | private final KeyBinding keyBinding; 52 | 53 | boolean keyDown() { 54 | return GameSettings.isKeyDown(keyBinding); 55 | } 56 | } 57 | } -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/features/movement/FreeCam.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.features.movement; 2 | 3 | 4 | /** 5 | * @author Gabagooooooooooool 6 | * @version 1.0 7 | * @brief Freecam 8 | */ 9 | public class FreeCam { 10 | 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/features/movement/NoSlow.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.features.movement; 2 | 3 | import me.aurora.client.config.Config; 4 | import me.aurora.client.features.Module; 5 | import me.aurora.client.utils.ItemUtils; 6 | import me.aurora.client.utils.PacketUtils; 7 | import net.minecraft.network.play.client.C08PacketPlayerBlockPlacement; 8 | import net.minecraft.util.BlockPos; 9 | import net.minecraftforge.event.entity.player.PlayerInteractEvent; 10 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 11 | 12 | import java.util.Arrays; 13 | import java.util.HashSet; 14 | import java.util.Set; 15 | 16 | import static me.aurora.client.Aurora.mc; 17 | 18 | /** 19 | * @author OctoSplash01 Gabagooooooooooool 20 | * @version 1.1 21 | * @brief No Slowdown 22 | */ 23 | public class NoSlow implements Module { 24 | // Since set access is O(n) it's better to use it instead of list which access time is higher. 25 | // Using String[] would also be a good choice but would make a lot of mess. 26 | private final Set validItems = new HashSet<>(Arrays.asList( 27 | "HYPERION", 28 | "VALKYRIE", 29 | "SCYLLA", 30 | "ASTRAEA", 31 | "ASPECT_OF_THE_END", 32 | "ROGUE_SWORD")); 33 | 34 | public String name() { 35 | return "NoSlow"; 36 | } 37 | 38 | public boolean toggled() { 39 | return Config.noSlowdown; 40 | } 41 | 42 | @SubscribeEvent 43 | public void onInteract(PlayerInteractEvent event) { 44 | if (toggled() && event.action == PlayerInteractEvent.Action.RIGHT_CLICK_AIR && validItems.contains(ItemUtils.getSkyBlockID(mc.thePlayer.getHeldItem()))) { 45 | event.setCanceled(true); 46 | if (mc.gameSettings.keyBindUseItem.isKeyDown()) 47 | PacketUtils.sendPacket(new C08PacketPlayerBlockPlacement(new BlockPos(-1, -1, -1), 255, mc.thePlayer.getHeldItem(), 0, 0, 0)); 48 | } 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/features/movement/VClip.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.features.movement; 2 | 3 | import me.aurora.client.config.Config; 4 | import me.aurora.client.features.Module; 5 | import me.aurora.client.utils.BindUtils; 6 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 7 | import net.minecraftforge.fml.common.gameevent.InputEvent; 8 | 9 | import static me.aurora.client.Aurora.mc; 10 | 11 | public class VClip implements Module { 12 | public String name() { 13 | return "VClip"; 14 | } 15 | 16 | public boolean toggled() { 17 | return Config.verticalClip; 18 | } 19 | 20 | @SubscribeEvent 21 | public void onKeyPress(InputEvent.KeyInputEvent event) { 22 | if (BindUtils.isBindPressed("VClip") && toggled()) 23 | mc.thePlayer.setPosition(mc.thePlayer.posX, mc.thePlayer.posY - Config.verticalClip_ParameterDistance, mc.thePlayer.posZ); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/features/troll/AprilLimbo.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.features.troll; 2 | 3 | import me.aurora.client.utils.conditions.ConditionUtils; 4 | import net.minecraft.client.Minecraft; 5 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 6 | import net.minecraftforge.fml.common.gameevent.TickEvent; 7 | 8 | import java.util.Calendar; 9 | import java.util.Random; 10 | 11 | public class AprilLimbo { 12 | @SubscribeEvent 13 | public void onTick(TickEvent.PlayerTickEvent event) { 14 | Random random = new Random(); 15 | int a = random.nextInt(10000); 16 | if (event.player != null && ConditionUtils.inSkyblock() && Calendar.MONTH == 4 && Calendar.DAY_OF_MONTH == 1 && a == 1) { 17 | Minecraft.getMinecraft().thePlayer.sendChatMessage("/limbo"); 18 | //display ban screen 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/features/troll/Hilary.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.features.troll; 2 | 3 | import me.aurora.client.config.Config; 4 | import net.minecraft.client.Minecraft; 5 | import net.minecraft.util.ChatComponentText; 6 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 7 | import net.minecraftforge.fml.common.gameevent.TickEvent; 8 | 9 | import java.util.Arrays; 10 | import java.util.List; 11 | import java.util.Random; 12 | 13 | public class Hilary { 14 | 15 | private int ticks; 16 | public boolean hasSentInLast15Minutes = false; 17 | public static String[] messages = { 18 | "Just checked your skills, ain't looking too good..", 19 | "Send me furry porn GumTune#9663", 20 | "Hop in Hypixel discord vc, we need to talk.", 21 | "You know i can see chat messages, right?", 22 | "If i sold ALL my armor sets, ALL my pet collection " + 23 | "(which is worth alot even with candied pets)" + 24 | "I would EASILY be able to afford a tier boosted " + 25 | "ender dragon and a giant's sword, which would " + 26 | "put me farther along in progression than most players.", 27 | "Having fun? : )", 28 | "Any last words?", 29 | "Suggestion | MoniseurHase#1418 Add auto terminals. Unbannable version: Click anywhere on screen to click on the right spot. NEU does the same with Storage overlay so why not.", 30 | "Beamed by defrost (your uuid is being uploaded as we speak)", 31 | "How many creative minds do you have again? Its ridiculous that you think your opinion holds any ground against mine with an idea that the admins took and used all the time. I am an endgame player - if i sold ALL my skyblock cakes, ALL my pet collection (which is worth a lot even with candied pets) I can easily afford a tier boosted ender dragon and a giant's sword, which effectively makes me a lot farther along than most other end game players.", 32 | "You really thought that wasnt detectable?", 33 | "https://imgur.com/B6xBaEX This could be us but you playin", 34 | "Aurora Client is ratted. We have everyone's UUID" 35 | }; 36 | 37 | public static String[] senders = { 38 | "§r§c[§r§fYOUTUBE§r§c] §r§cRefraction", 39 | "§r§d[PIG§r§b+++§r§d] Technoblade", 40 | "§r§c[ADMIN] Plancke", 41 | "§r§c[ADMIN] Minikloon", 42 | "§r§c[ADMIN] Nitroholic", 43 | "§r§c[ADMIN] Jayavarmen", 44 | "§r§d§lsincerity", 45 | "§r§c[§r§fYOUTUBE§r§c] §r§cThirtyVirus", 46 | "§r§s§ldefrost", 47 | "§r§c[§r§fYOUTUBE§r§c] §r§cPalikka", 48 | "§r§c[OWNER] hypixel", 49 | "§r§c[OWNER] GumTune", 50 | "§r§6[MVP§r§0++§r§6] kDarko", 51 | "§r§c[ADMIN] Dctr", 52 | "§r§b[MV§r§5+§r§b] egom" 53 | }; 54 | 55 | public static List messagesList = Arrays.asList(messages); 56 | public static List sendersList = Arrays.asList(senders); 57 | 58 | @SubscribeEvent 59 | public void sendHilaryChat(TickEvent.PlayerTickEvent event) { 60 | 61 | if(++ticks < 90000) return; 62 | ticks = 0; 63 | 64 | Random randomSender = new Random(); 65 | int randomSenderNumber = randomSender.nextInt(senders.length); 66 | 67 | Random randomMessage = new Random(); 68 | int randomMessageNumber = randomMessage.nextInt(messages.length); 69 | 70 | if (event.player != null && Config.hilary) { 71 | Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText("§dFrom " + sendersList.get(randomSenderNumber) + "§7: " + "§7" + messagesList.get(randomMessageNumber))); 72 | } 73 | } 74 | } 75 | -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/features/troll/SlayerDrops.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.features.troll; 2 | 3 | import me.aurora.client.utils.conditions.ConditionUtils; 4 | import net.minecraft.client.Minecraft; 5 | import net.minecraft.util.ChatComponentText; 6 | import net.minecraftforge.client.event.ClientChatReceivedEvent; 7 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 8 | 9 | public class SlayerDrops { 10 | @SubscribeEvent 11 | public void chatRecieved(ClientChatReceivedEvent event) { 12 | String msg = event.message.getUnformattedText(); 13 | if (msg.contains("SLAIN") && ConditionUtils.inCoalMine()) { 14 | Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText("§d§lCRAZY RARE DROP! §r§7(§r§6Warden Heart§r§7) §r§b(+184% ✯ Magic Find)")); 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/features/visual/Element.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.features.visual; 2 | 3 | public class Element { 4 | public boolean isHudModule = true; 5 | public int width = 0; 6 | public int height = 0; 7 | 8 | public int getX() { 9 | return 0; 10 | } 11 | 12 | public void setX(int pos) { 13 | } 14 | 15 | public int getY() { 16 | return 0; 17 | } 18 | 19 | public void setY(int pos) { 20 | } 21 | 22 | public void editorDraw() { 23 | } 24 | 25 | public void guiDraw() { 26 | } 27 | 28 | public boolean enabled() { 29 | return true; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/features/visual/FPS.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.features.visual; 2 | 3 | import me.aurora.client.config.Config; 4 | import me.aurora.client.utils.FPSUtils; 5 | import me.aurora.client.utils.ThemeUtils; 6 | import me.aurora.client.utils.font.FontDefiner; 7 | import me.aurora.client.utils.font.FontRender; 8 | 9 | public class FPS extends Element { 10 | private static final FontRender fontRenderer = FontDefiner.getFontRenderer(30f); 11 | private static int fpsCache = 0; 12 | private static boolean fpsDoUpdate; 13 | 14 | public FPS() { 15 | width = 65; 16 | height = 15; 17 | } 18 | 19 | @Override 20 | public int getX() { 21 | return Config.FPS_X; 22 | } 23 | 24 | @Override 25 | public void setX(int val) { 26 | Config.FPS_X = val; 27 | } 28 | 29 | @Override 30 | public int getY() { 31 | return Config.FPS_Y; 32 | } 33 | 34 | @Override 35 | public void setY(int val) { 36 | Config.FPS_Y = val; 37 | } 38 | 39 | @Override 40 | public boolean enabled() { 41 | return Config.hudFPS; 42 | } 43 | 44 | @Override 45 | public void guiDraw() { 46 | if (fpsDoUpdate) fpsCache = FPSUtils.getFPS(); 47 | fpsDoUpdate = !fpsDoUpdate; 48 | renderFps(fpsCache); 49 | } 50 | 51 | @Override 52 | public void editorDraw() { 53 | renderFps(1337); 54 | } 55 | 56 | private void renderFps(int fps) { 57 | int rbw = ThemeUtils.currentColorGet(0); 58 | fontRenderer.drawStringWithShadow("\247lFPS\247r:\2477 " + fps, getX(), getY(), 0xFFFFFF); 59 | for (int i = 0; i < 2; i++) { 60 | fontRenderer.drawStringWithShadow("\247lFPS", getX(), getY(), rbw); 61 | } 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/features/visual/Keystrokes.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.features.visual; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.Getter; 6 | import me.aurora.client.config.Config; 7 | import me.aurora.client.utils.DrawUtils; 8 | import me.aurora.client.utils.ThemeUtils; 9 | import me.aurora.client.utils.font.FontDefiner; 10 | import me.aurora.client.utils.font.FontRender; 11 | import net.minecraft.client.gui.Gui; 12 | import net.minecraft.client.renderer.GlStateManager; 13 | import net.minecraft.client.settings.GameSettings; 14 | import net.minecraft.client.settings.KeyBinding; 15 | 16 | import java.awt.*; 17 | 18 | import static me.aurora.client.Aurora.mc; 19 | 20 | public class Keystrokes extends Element { 21 | 22 | private final Color standby = new Color(21, 20, 20, 36); 23 | private final Color pressed = new Color(238, 231, 231, 37); 24 | 25 | private final KeystrokesElement[] keystrokesElements = { 26 | new KeystrokesElement(25, 0, mc.gameSettings.keyBindForward, "W"), 27 | new KeystrokesElement(0, 25, mc.gameSettings.keyBindLeft, "A"), 28 | new KeystrokesElement(25, 25, mc.gameSettings.keyBindBack, "S"), 29 | new KeystrokesElement(50, 25, mc.gameSettings.keyBindRight, "D"), 30 | 31 | }; 32 | 33 | private final FontRender fontRenderer = FontDefiner.getFontRenderer(25f); 34 | 35 | public Keystrokes() { 36 | width = 200; 37 | height = 200; 38 | } 39 | 40 | @Override 41 | public int getX() { 42 | return Config.KEYSTROKES_X; 43 | } 44 | 45 | @Override 46 | public int getY() { 47 | return Config.KEYSTROKES_Y; 48 | } 49 | 50 | @Override 51 | public void setX(int val) { 52 | Config.KEYSTROKES_X = val; 53 | } 54 | 55 | @Override 56 | public void setY(int val) { 57 | Config.KEYSTROKES_Y = val; 58 | } 59 | 60 | @Override 61 | public boolean enabled() { 62 | return Config.hudKeystrokes; 63 | } 64 | 65 | @Override 66 | public void guiDraw() { 67 | renderKeystrokes(); 68 | } 69 | 70 | @Override 71 | public void editorDraw() { 72 | renderKeystrokes(); 73 | } 74 | 75 | private void renderKeystrokes() { 76 | GlStateManager.pushMatrix(); 77 | for (KeystrokesElement key : keystrokesElements) { 78 | int x = key.getX() + getX(); 79 | int y = key.getY() + getY(); 80 | DrawUtils.drawOutlinedRect(x, y, 23, 23, key.isActive() ? pressed : standby, key.getPosColor()); 81 | fontRenderer.drawStringWithShadow(key.getRenderName(), x + 6, y + 4, key.getPosColor().getRGB()); 82 | } 83 | GlStateManager.resetColor(); 84 | GlStateManager.popMatrix(); 85 | } 86 | 87 | @AllArgsConstructor 88 | @Data 89 | private static class KeystrokesElement { 90 | private int x; 91 | private int y; 92 | private KeyBinding boundKey; 93 | private String renderName; 94 | 95 | public boolean isActive() { 96 | return boundKey.isKeyDown(); 97 | } 98 | 99 | private Color getPosColor() { 100 | return new Color(ThemeUtils.currentColorGet(((x + y) / 25f) * 0.1f)); 101 | } 102 | } 103 | } 104 | -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/features/visual/LegacyModuleList.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.features.visual; 2 | 3 | import lombok.SneakyThrows; 4 | import me.aurora.client.Aurora; 5 | import me.aurora.client.config.Config; 6 | import me.aurora.client.features.Module; 7 | import me.aurora.client.utils.ThemeUtils; 8 | import me.aurora.client.utils.font.FontDefiner; 9 | import me.aurora.client.utils.font.FontRender; 10 | import net.minecraft.client.gui.Gui; 11 | import net.minecraft.client.gui.ScaledResolution; 12 | import net.minecraft.client.renderer.GlStateManager; 13 | import net.minecraftforge.client.event.RenderGameOverlayEvent; 14 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 15 | import org.lwjgl.opengl.GL11; 16 | import org.lwjgl.util.vector.Vector2f; 17 | 18 | import java.awt.Color; 19 | import java.util.Deque; 20 | import java.util.LinkedList; 21 | import java.util.List; 22 | import java.util.Objects; 23 | import java.util.stream.Collectors; 24 | 25 | import static me.aurora.client.Aurora.mc; 26 | 27 | /** 28 | * @author Gabagooooooooooool 29 | * @version 4.0 30 | * @brief Simple Module List 31 | */ 32 | 33 | public class LegacyModuleList implements Module { 34 | 35 | public String name() { 36 | return "ModuleList"; 37 | } 38 | 39 | public boolean toggled() { 40 | return Config.hudArraylist; 41 | } 42 | 43 | private static final FontRender fontRenderer = FontDefiner.getFontRenderer(); 44 | 45 | @SubscribeEvent 46 | @SneakyThrows 47 | public void onRender(RenderGameOverlayEvent event) { 48 | if (!(event.type == RenderGameOverlayEvent.ElementType.TEXT && toggled())) return; 49 | ScaledResolution scaledResolution = new ScaledResolution(mc); 50 | int currentModule = 0; 51 | Deque edgesQueue = new LinkedList<>(); 52 | List modules = Aurora.getModules().stream().filter(Module::toggled).map(Module::name).sorted(fontRenderer).collect(Collectors.toList()); 53 | for (String moduleName : modules) { 54 | int currentPhase = currentModule; 55 | currentModule++; 56 | int color = ThemeUtils.currentColorGet(currentPhase * 0.07f); 57 | int xPos = (int) (scaledResolution.getScaledWidth() - fontRenderer.getStringWidth(moduleName)); 58 | int yPos = currentPhase * 11; 59 | int leftX = xPos - 4; 60 | int bottomY = yPos + 11; 61 | Gui.drawRect(leftX, yPos, scaledResolution.getScaledWidth(), bottomY, new Color(0, 0, 0, 30).getRGB()); 62 | edgesQueue.addLast(new Vector2f(leftX, yPos)); 63 | edgesQueue.addLast(new Vector2f(leftX, bottomY)); 64 | fontRenderer.drawStringWithShadow(moduleName, xPos - 1.5f, yPos + 1f, color); 65 | } 66 | if (!edgesQueue.isEmpty()) { 67 | Vector2f last = edgesQueue.getLast(); 68 | edgesQueue.add(new Vector2f(scaledResolution.getScaledWidth(), last.getY())); 69 | GL11.glLineWidth(2f); 70 | GlStateManager.pushMatrix(); 71 | GlStateManager.disableTexture2D(); 72 | GlStateManager.disableBlend(); 73 | GlStateManager.enableAlpha(); 74 | GL11.glEnable(GL11.GL_LINE_SMOOTH); 75 | GL11.glHint(GL11.GL_LINE_SMOOTH_HINT, GL11.GL_NICEST); 76 | float current = 0; 77 | while (edgesQueue.size() > 1) { 78 | float currentOffset = current * 0.07f; 79 | current += 0.5f; 80 | Vector2f currVector = edgesQueue.pollFirst(); 81 | Vector2f nextVector = edgesQueue.peekFirst(); 82 | if (Objects.nonNull(currVector) && Objects.nonNull(nextVector)) { 83 | GL11.glBegin(GL11.GL_LINES); 84 | GL11.glColor4f(ThemeUtils.getFloatValue(currentOffset, 0), ThemeUtils.getFloatValue(currentOffset, 1), ThemeUtils.getFloatValue(currentOffset, 2), 0.5f); 85 | GL11.glVertex2f(currVector.getX(), currVector.getY()); 86 | GL11.glVertex2f(nextVector.getX(), nextVector.getY()); 87 | GL11.glEnd(); 88 | } 89 | } 90 | GL11.glColor4f(1f,1f,1f,1f); 91 | GlStateManager.popMatrix(); 92 | GlStateManager.enableTexture2D(); 93 | GlStateManager.enableBlend(); 94 | GlStateManager.disableAlpha(); 95 | GL11.glDisable(GL11.GL_LINE_SMOOTH); 96 | } 97 | } 98 | } 99 | 100 | -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/features/visual/PacketDebug.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.features.visual; 2 | 3 | import me.aurora.client.config.Config; 4 | import me.aurora.client.utils.PacketHandler; 5 | import me.aurora.client.utils.font.FontDefiner; 6 | import me.aurora.client.utils.font.FontRender; 7 | 8 | import java.text.DecimalFormat; 9 | 10 | public class PacketDebug extends Element { 11 | private static final FontRender fontRenderer = FontDefiner.getFontRenderer(); 12 | 13 | public PacketDebug() { 14 | width = 200; 15 | height = 10; 16 | } 17 | 18 | @Override 19 | public int getX() { 20 | return Config.PACKET_X; 21 | } 22 | 23 | @Override 24 | public void setX(int val) { 25 | Config.PACKET_X = val; 26 | } 27 | 28 | @Override 29 | public int getY() { 30 | return Config.PACKET_Y; 31 | } 32 | 33 | @Override 34 | public void setY(int val) { 35 | Config.PACKET_Y = val; 36 | } 37 | 38 | @Override 39 | public boolean enabled() { 40 | return Config.hudPacket; 41 | } 42 | 43 | @Override 44 | public void guiDraw() { 45 | fontRenderer.drawStringWithShadow("Time since last packet: " + new DecimalFormat("#.#").format((double) (System.currentTimeMillis() - PacketHandler.lastPacket) / 1000d) + "s", getX(), getY(), 0xFF0000); 46 | } 47 | 48 | @Override 49 | public void editorDraw() { 50 | fontRenderer.drawStringWithShadow("Time since last packet: 6.9s", getX(), getY(), 0xFF0000); 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/features/visual/Speedometer.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.features.visual; 2 | 3 | import me.aurora.client.Aurora; 4 | import me.aurora.client.config.Config; 5 | import me.aurora.client.utils.DrawUtils; 6 | import me.aurora.client.utils.ThemeUtils; 7 | import net.minecraft.client.renderer.GlStateManager; 8 | import net.minecraft.client.renderer.Tessellator; 9 | import net.minecraft.client.renderer.WorldRenderer; 10 | import net.minecraft.client.renderer.vertex.DefaultVertexFormats; 11 | import org.lwjgl.opengl.GL11; 12 | 13 | import java.util.ArrayList; 14 | import java.util.LinkedList; 15 | import java.util.List; 16 | import java.util.Queue; 17 | 18 | public class Speedometer extends Element { 19 | public Speedometer() { 20 | width = 100; 21 | height = 50; 22 | } 23 | 24 | private long tickCounter = 0; 25 | private int inactiveSince = 0; 26 | private final Queue speed = new LinkedList<>(); 27 | private final List lastEntries = new ArrayList<>(); 28 | 29 | @Override 30 | public int getX() { 31 | return Config.SPEED_X; 32 | } 33 | 34 | @Override 35 | public int getY() { 36 | return Config.SPEED_Y; 37 | } 38 | 39 | @Override 40 | public void editorDraw() { 41 | guiDraw(); 42 | } 43 | 44 | @Override 45 | public void setX(int x) { 46 | Config.SPEED_X = x; 47 | } 48 | 49 | @Override 50 | public void setY(int y) { 51 | Config.SPEED_Y = y; 52 | } 53 | 54 | private double getTotalMovement() { 55 | return Math.abs(Aurora.mc.thePlayer.motionX) + Math.abs(Aurora.mc.thePlayer.motionY) + Math.abs(Aurora.mc.thePlayer.motionZ); 56 | } 57 | 58 | private double getMin() { 59 | return speed.stream().min(Double::compareTo).orElse(Double.MIN_VALUE); 60 | } 61 | 62 | private double getMax() { 63 | return speed.stream().max(Double::compareTo).orElse(Double.MAX_VALUE); 64 | } 65 | 66 | private double getRange() { 67 | return getMax() - getMin(); 68 | } 69 | 70 | /** 71 | * {@link #isInactive()} could be used, but this isn't good for performance as calculation is performed twice. 72 | * therefore, an ugly solution will be used 73 | */ 74 | private double getOffsetY(double value) { 75 | double range = getRange(); 76 | if (range == 0) return getY() + height; 77 | else return getY() + (getMax() - value) / range * height; 78 | } 79 | 80 | private boolean isInactive() { 81 | return getRange() == 0; 82 | } 83 | 84 | private double getOffsetX(double pos) { 85 | int posCurr = width + getX() - speed.size(); 86 | return posCurr + pos; 87 | } 88 | 89 | public void guiDraw() { 90 | tickCounter++; 91 | lastEntries.add(getTotalMovement()); 92 | if (tickCounter % 5 == 0) { 93 | speed.offer(lastEntries.stream().mapToDouble(Double::doubleValue).average().orElse(0d)); 94 | lastEntries.clear(); 95 | if (tickCounter % 60 == 0) { 96 | if (isInactive()) { 97 | if (inactiveSince < 19) { 98 | inactiveSince++; 99 | } 100 | } 101 | else { 102 | int i = 0; 103 | while (inactiveSince > 0 && i < 3) { 104 | i++; 105 | inactiveSince--; 106 | } 107 | } 108 | } 109 | } 110 | 111 | if (speed.size() > width) 112 | speed.remove(); 113 | 114 | GlStateManager.pushMatrix(); 115 | GlStateManager.enableBlend(); 116 | GlStateManager.enableAlpha(); 117 | GlStateManager.disableTexture2D(); 118 | 119 | GL11.glEnable(GL11.GL_LINE_SMOOTH); 120 | GL11.glHint(GL11.GL_LINE_SMOOTH, GL11.GL_NICEST); 121 | 122 | GL11.glLineWidth(3f); 123 | 124 | float[] color = DrawUtils.translateToFloat(ThemeUtils.getThemeColor(0f)); 125 | GlStateManager.color(color[0], color[1], color[2], 1.0f - (0.05f * inactiveSince)); 126 | 127 | Tessellator tessellator = Tessellator.getInstance(); 128 | WorldRenderer worldRenderer = tessellator.getWorldRenderer(); 129 | 130 | worldRenderer.begin(GL11.GL_LINE_STRIP, DefaultVertexFormats.POSITION); 131 | 132 | int counter = 0; 133 | for (double d : speed) { 134 | worldRenderer.pos(getOffsetX(counter), getOffsetY(d), 0).endVertex(); 135 | counter++; 136 | } 137 | 138 | tessellator.draw(); 139 | 140 | GL11.glDisable(GL11.GL_LINE_SMOOTH); 141 | 142 | GlStateManager.resetColor(); 143 | GlStateManager.popMatrix(); 144 | GlStateManager.disableBlend(); 145 | GlStateManager.disableAlpha(); 146 | GlStateManager.enableTexture2D(); 147 | } 148 | 149 | @Override 150 | public boolean enabled() { 151 | return Config.hudSpeedgraph; 152 | } 153 | } 154 | -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/features/visual/Watermark.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.features.visual; 2 | 3 | import me.aurora.client.config.Config; 4 | import me.aurora.client.utils.ThemeUtils; 5 | import me.aurora.client.utils.font.FontDefiner; 6 | import me.aurora.client.utils.font.FontRender; 7 | 8 | public class Watermark extends Element { 9 | private static final FontRender fontRenderer = FontDefiner.getFontRenderer(); 10 | private static final FontRender logoRenderer = FontDefiner.getFontRenderer(30f); 11 | public Watermark() { 12 | width = 125; 13 | height = 20; 14 | } 15 | 16 | @Override 17 | public int getX(){ 18 | return Config.WATERMARK_X; 19 | } 20 | @Override 21 | public int getY(){ 22 | return Config.WATERMARK_Y; 23 | } 24 | @Override 25 | public void setX(int val){ 26 | Config.WATERMARK_X = val; 27 | } 28 | 29 | @Override 30 | public void setY(int val){ 31 | Config.WATERMARK_Y = val; 32 | } 33 | @Override 34 | public boolean enabled(){ 35 | return Config.hudWatermark; 36 | } 37 | @Override 38 | public void guiDraw(){ 39 | drawForVersion("4.0-Free"); 40 | } 41 | @Override 42 | public void editorDraw(){ 43 | drawForVersion("6.9-Funny"); 44 | } 45 | 46 | private void drawForVersion(String buildID){ 47 | logoRenderer.drawStringWithShadow("\247lAurora", getX(), getY(), ThemeUtils.currentColorGet(0)); 48 | fontRenderer.drawStringWithShadow("Version " + buildID, getX(), getY()+15, 0x444444); 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/krypton/KeyBindHandler.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.krypton; 2 | 3 | import java.util.ArrayList; 4 | 5 | public class KeyBindHandler { 6 | public static int getKeyCode(ArrayList Script) { 7 | return Integer.parseInt(Script.get(Script.indexOf("KEYBIND:") + 1)); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/krypton/Main.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.krypton; 2 | 3 | import me.aurora.client.config.Config; 4 | import net.minecraft.client.Minecraft; 5 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 6 | import net.minecraftforge.fml.common.gameevent.InputEvent; 7 | import org.lwjgl.input.Keyboard; 8 | 9 | import java.util.ArrayList; 10 | import java.util.Arrays; 11 | import java.util.concurrent.CompletableFuture; 12 | 13 | public class Main { 14 | 15 | @SubscribeEvent 16 | public void key(InputEvent.KeyInputEvent e) { 17 | if (Minecraft.getMinecraft().theWorld == null || Minecraft.getMinecraft().thePlayer == null) 18 | return; 19 | try { 20 | if (Keyboard.isCreated()) { 21 | if (Keyboard.getEventKeyState()) { 22 | int keyCode = Keyboard.getEventKey(); 23 | if (keyCode <= 0) 24 | return; 25 | if (Config.script.length() <= 1) 26 | return; 27 | if (keyCode == KeyBindHandler.getKeyCode(splitLines(Config.script))) { 28 | CompletableFuture.runAsync(() -> { 29 | Parser.execute(splitLines(Config.script)); 30 | }); 31 | } 32 | } 33 | } 34 | } catch (Exception q) { 35 | q.printStackTrace(); 36 | } 37 | } 38 | 39 | public ArrayList splitLines(String input) { 40 | String[] lineArray = input.split("\n"); 41 | return new ArrayList<>(Arrays.asList(lineArray)); 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/krypton/Parser.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.krypton; 2 | 3 | import me.aurora.client.krypton.execs.IExec; 4 | import me.aurora.client.krypton.execs.Print; 5 | import me.aurora.client.krypton.execs.SwapHotbar; 6 | import me.aurora.client.krypton.execs.Wait; 7 | 8 | import java.util.ArrayList; 9 | import java.util.HashMap; 10 | import java.util.Map; 11 | 12 | public class Parser { 13 | private static final Map twoLineExecs = new HashMap() {{ 14 | put("PRINT:", new Print()); 15 | put("WAIT:", new Wait()); 16 | put("SWAPHOTBAR:", new SwapHotbar()); 17 | }}; 18 | 19 | public static void execute(ArrayList script) { 20 | for (int i = 0; i < script.size(); i++) { 21 | String currLine = script.get(i); 22 | int temp = exMov(new ArrayList(script.subList(i, script.size()))); 23 | i += temp; 24 | } 25 | } 26 | 27 | public static Integer exMov(ArrayList subArray) { 28 | int toMove = 0; 29 | if (twoLineExecs.containsKey(subArray.get(0))) { 30 | toMove += twoLineExecs.get(subArray.get(0)).exec(subArray.get(1)); 31 | } 32 | return toMove; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/krypton/execs/IExec.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.krypton.execs; 2 | 3 | public interface IExec { 4 | Integer exec(String parameter); 5 | } 6 | -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/krypton/execs/Print.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.krypton.execs; 2 | 3 | import me.aurora.client.krypton.management.StringVariableParser; 4 | import me.aurora.client.utils.MessageUtils; 5 | 6 | public class Print implements IExec { 7 | 8 | @Override 9 | public Integer exec(String parameter) { 10 | MessageUtils.sendClientMessage(StringVariableParser.parseVar(parameter)); 11 | return 1; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/krypton/execs/SwapHotbar.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.krypton.execs; 2 | 3 | import me.aurora.client.krypton.management.MathVariableParser; 4 | import net.minecraft.network.play.client.C09PacketHeldItemChange; 5 | 6 | import static me.aurora.client.Aurora.mc; 7 | 8 | //implemented from https://github.com/ShadyAddons/ShadyAddons/blob/main/src/main/java/cheaters/get/banned/features/routines/actions/SwapHotbarAction.java 9 | public class SwapHotbar implements IExec { 10 | @Override 11 | public Integer exec(String parameter) { 12 | mc.thePlayer.sendQueue.addToSendQueue(new C09PacketHeldItemChange((int) MathVariableParser.parseMath(parameter))); 13 | mc.thePlayer.inventory.currentItem = (int) MathVariableParser.parseMath(parameter); 14 | return 1; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/krypton/execs/Wait.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.krypton.execs; 2 | 3 | import me.aurora.client.krypton.management.MathVariableParser; 4 | 5 | public class Wait implements IExec { 6 | @Override 7 | public Integer exec(String parameter) { 8 | try { 9 | Thread.sleep((int) MathVariableParser.parseMath(parameter)); 10 | } catch (InterruptedException e) { 11 | throw new RuntimeException(e); 12 | } 13 | return 1; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/krypton/management/MathVariableParser.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.krypton.management; 2 | 3 | public class MathVariableParser { 4 | public static double parseMath(String expression) { 5 | return Double.parseDouble(expression); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/krypton/management/StringVariableParser.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.krypton.management; 2 | 3 | public class StringVariableParser { 4 | public static String parseVar(String expression) { 5 | return expression; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/utils/BindUtils.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.utils; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | import net.minecraft.client.settings.KeyBinding; 6 | import net.minecraftforge.fml.client.registry.ClientRegistry; 7 | 8 | import java.util.HashMap; 9 | 10 | /** 11 | * @author Gabagooooooooooool 12 | * @version 2.0 13 | * @brief Binding Utils 14 | */ 15 | public class BindUtils { 16 | private static final HashMap bindMap = new HashMap<>(); 17 | 18 | public static void registerBinds(Bind... binds) { 19 | for (Bind bind : binds) { 20 | String bindName = bind.getBindName(); 21 | bindMap.put(bindName, new KeyBinding(bindName, bind.getBindKey(), "Aurora")); 22 | ClientRegistry.registerKeyBinding(bindMap.get(bindName)); 23 | } 24 | } 25 | 26 | public static boolean isBindPressed(String bindName) { 27 | return bindMap.get(bindName).isPressed(); 28 | } 29 | 30 | public static boolean isBindDown(String bindName) { 31 | return bindMap.get(bindName).isKeyDown(); 32 | } 33 | 34 | @AllArgsConstructor 35 | @Getter 36 | public static class Bind { 37 | private final int bindKey; 38 | private final String bindName; 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/utils/BlockDirUtils.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.utils; 2 | 3 | import net.minecraft.client.Minecraft; 4 | import net.minecraft.block.*; 5 | import net.minecraft.block.state.IBlockState; 6 | import net.minecraft.client.Minecraft; 7 | import net.minecraft.init.Blocks; 8 | import net.minecraft.item.EnumDyeColor; 9 | import net.minecraft.util.BlockPos; 10 | import net.minecraft.util.MovingObjectPosition; 11 | import net.minecraft.util.Vec3; 12 | import net.minecraft.util.Vec3i; 13 | 14 | import static me.aurora.client.utils.rotation.AngleUtils.get360RotationYaw; 15 | 16 | public class BlockDirUtils { 17 | private static final Minecraft mc = Minecraft.getMinecraft(); 18 | private static final Block[] walkables = { Blocks.air, Blocks.water, Blocks.flowing_water, Blocks.dark_oak_fence_gate, Blocks.acacia_fence_gate, Blocks.birch_fence_gate, Blocks.oak_fence_gate, Blocks.jungle_fence_gate, Blocks.spruce_fence_gate, Blocks.wall_sign, Blocks.reeds, Blocks.pumpkin_stem, Blocks.melon_stem, Blocks.iron_trapdoor, Blocks.stone_stairs, Blocks.carpet, Blocks.stone_slab, Blocks.stone_slab2, Blocks.wooden_slab, Blocks.snow_layer, Blocks.trapdoor }; 19 | private static final Block[] walkablesMushroom = { Blocks.air, Blocks.water, Blocks.flowing_water, Blocks.dark_oak_fence_gate, Blocks.acacia_fence_gate, Blocks.birch_fence_gate, Blocks.oak_fence_gate, Blocks.jungle_fence_gate, Blocks.spruce_fence_gate, Blocks.wall_sign, Blocks.reeds, Blocks.pumpkin_stem, Blocks.melon_stem, Blocks.iron_trapdoor, Blocks.stone_stairs, Blocks.carpet, Blocks.stone_slab, Blocks.stone_slab2, Blocks.wooden_slab, Blocks.snow_layer, Blocks.trapdoor }; 20 | private static final Block[] walkablesCactus = { Blocks.air, Blocks.water, Blocks.flowing_water, Blocks.dark_oak_fence_gate, Blocks.acacia_fence_gate, Blocks.birch_fence_gate, Blocks.oak_fence_gate, Blocks.jungle_fence_gate, Blocks.spruce_fence_gate, Blocks.wall_sign, Blocks.reeds, Blocks.pumpkin_stem, Blocks.melon_stem, Blocks.iron_trapdoor, Blocks.stone_stairs, Blocks.snow_layer, Blocks.trapdoor }; 21 | 22 | public static int getUnitX(){ 23 | return getUnitX((mc.thePlayer.rotationYaw % 360 + 360) % 360); 24 | } 25 | 26 | public static int getUnitZ(){ 27 | return getUnitZ((mc.thePlayer.rotationYaw % 360 + 360) % 360); 28 | 29 | } 30 | 31 | public static int getUnitX(float modYaw) { 32 | if (get360RotationYaw(modYaw) < 45 || get360RotationYaw(modYaw) > 315) { 33 | return 0; 34 | } else if (get360RotationYaw(modYaw) < 135) { 35 | return -1; 36 | } else if (get360RotationYaw(modYaw) < 225) { 37 | return 0; 38 | } else { 39 | return 1; 40 | } 41 | } 42 | 43 | public static int getUnitZ(float modYaw) { 44 | if (get360RotationYaw(modYaw) < 45 || get360RotationYaw(modYaw) > 315) { 45 | return 1; 46 | } else if (get360RotationYaw(modYaw) < 135) { 47 | return 0; 48 | } else if (get360RotationYaw(modYaw) < 225) { 49 | return -1; 50 | } else { 51 | return 0; 52 | } 53 | } 54 | 55 | public static Block getBlock(BlockPos blockPos) { 56 | return mc.theWorld.getBlockState(blockPos).getBlock(); 57 | } 58 | 59 | public static boolean isRelativeBlockPassable(float x, float y, float z) { 60 | return getRelativeBlock(x, y, z).isPassable(mc.theWorld, getRelativeBlockPos(x, y, z)); 61 | } 62 | 63 | public static Block getRelativeBlock(float x, float y, float z) { 64 | return (mc.theWorld.getBlockState( 65 | new BlockPos( 66 | mc.thePlayer.posX + (getUnitX() * z) + (getUnitZ() * -1 * x), 67 | ((mc.thePlayer.posY % 1) > 0.7 ? Math.ceil(mc.thePlayer.posY) : mc.thePlayer.posY) + y, 68 | mc.thePlayer.posZ + (getUnitZ() * z) + (getUnitX() * x) 69 | )).getBlock()); 70 | } 71 | public static BlockPos getRelativeBlockPos(float x, float y, float z) { 72 | return new BlockPos( 73 | mc.thePlayer.posX + (getUnitX() * z) + (getUnitZ() * -1 * x), 74 | ((mc.thePlayer.posY % 1) > 0.7 ? Math.ceil(mc.thePlayer.posY) : mc.thePlayer.posY) + y, 75 | mc.thePlayer.posZ + (getUnitZ() * z) + (getUnitX() * x) 76 | ); 77 | } 78 | 79 | public static Block getRelativeBlock(float x, float y, float z, float yaw) { 80 | return (mc.theWorld.getBlockState( 81 | new BlockPos( 82 | mc.thePlayer.posX + (getUnitX(yaw) * z) + (getUnitZ(yaw) * -1 * x), 83 | ((mc.thePlayer.posY % 1) > 0.7 ? Math.ceil(mc.thePlayer.posY) : mc.thePlayer.posY) + y, 84 | mc.thePlayer.posZ + (getUnitZ(yaw) * z) + (getUnitX(yaw) * x) 85 | )).getBlock()); 86 | } 87 | public static BlockPos getRelativeBlockPos(float x, float y, float z, float yaw) { 88 | return new BlockPos( 89 | mc.thePlayer.posX + (getUnitX(yaw) * z) + (getUnitZ(yaw) * -1 * x), 90 | ((mc.thePlayer.posY % 1) > 0.7 ? Math.ceil(mc.thePlayer.posY) : mc.thePlayer.posY) + y, 91 | mc.thePlayer.posZ + (getUnitZ(yaw) * z) + (getUnitX(yaw) * x) 92 | ); 93 | } 94 | public static int bedrockCount() { 95 | int count = 0; 96 | for(int i = 0; i < 10; i++){ 97 | for(int j = 0; j < 10; j++){ 98 | if(getBlock(mc.thePlayer.getPosition().add(i, 1, j)).equals(Blocks.bedrock)) 99 | count ++; 100 | } 101 | } 102 | return count; 103 | } 104 | public static boolean isWater(Block b){ 105 | return b.equals(Blocks.water) || b.equals(Blocks.flowing_water); 106 | } 107 | 108 | public static Block getLeftBlock(int yaw){ 109 | return getRelativeBlock(-1, 0, 0, mc.thePlayer.rotationYaw - yaw); 110 | } 111 | public static Block getRightBlock(int yaw){ 112 | return getRelativeBlock(1, 0, 0, mc.thePlayer.rotationYaw - yaw); 113 | } 114 | 115 | public static Block getLeftTopBlock(int yaw) { 116 | return getRelativeBlock(-1, 1, 0, mc.thePlayer.rotationYaw - yaw); 117 | } 118 | 119 | public static Block getRightTopBlock(int yaw) { 120 | return getRelativeBlock(1, 1, 0, mc.thePlayer.rotationYaw - yaw); 121 | } 122 | 123 | 124 | public static Block getLeftBlock(){ 125 | return getRelativeBlock(-1, 0, 0, mc.thePlayer.rotationYaw); 126 | } 127 | public static Block getRightBlock(){ 128 | return getRelativeBlock(1, 0, 0, mc.thePlayer.rotationYaw); 129 | } 130 | 131 | public static Block getLeftTopBlock() { 132 | return getRelativeBlock(-1, 1, 0, mc.thePlayer.rotationYaw); 133 | } 134 | 135 | public static Block getRightTopBlock() { 136 | return getRelativeBlock(1, 1, 0, mc.thePlayer.rotationYaw); 137 | } 138 | 139 | public static Block getBackBlock(){ 140 | return getRelativeBlock(0, 0, -1); 141 | } 142 | public static Block getFrontBlock(){ 143 | return getRelativeBlock(0, 0, 1); 144 | } 145 | 146 | 147 | public static boolean isBlockVisible(BlockPos pos) { 148 | MovingObjectPosition mop = mc.theWorld.rayTraceBlocks(new Vec3(mc.thePlayer.posX, mc.thePlayer.posY + mc.thePlayer.getEyeHeight(), mc.thePlayer.posZ), new Vec3(pos.getX() + 0.5, pos.getY() + 0.5, pos.getZ() + 0.5)); 149 | return mop == null || (mop.typeOfHit == MovingObjectPosition.MovingObjectType.ENTITY && mop.entityHit.getDistance(pos.getX(), pos.getY(), pos.getZ()) < 2) || mop.getBlockPos().equals(pos); 150 | } 151 | } 152 | -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/utils/CalculationUtils.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.utils; 2 | 3 | import net.minecraft.util.BlockPos; 4 | 5 | /** 6 | * @author Gabagooooooooooool 7 | * @version 1.0 8 | * @brief Calculation Utilities 9 | */ 10 | public class CalculationUtils { 11 | public static double blockEuclideanDistance(BlockPos a, BlockPos b) { 12 | return Math.sqrt(Math.pow(a.getX() - b.getX(), 2) + Math.pow(a.getY() - b.getY(), 2) + Math.pow(a.getZ() - b.getZ(), 2)); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/utils/DrawUtils.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.utils; 2 | 3 | import lombok.experimental.UtilityClass; 4 | import net.minecraft.client.gui.Gui; 5 | import net.minecraft.client.renderer.GlStateManager; 6 | import org.lwjgl.opengl.GL11; 7 | 8 | import java.awt.*; 9 | 10 | @UtilityClass 11 | public class DrawUtils { 12 | 13 | public void drawOutlinedRect(int x, int y, int width, int height, Color fill, Color outline) { 14 | GlStateManager.pushMatrix(); 15 | GlStateManager.pushMatrix(); 16 | GlStateManager.enableBlend(); 17 | GlStateManager.enableAlpha(); 18 | GlStateManager.disableTexture2D(); 19 | 20 | int xEnd = x+width; 21 | int yEnd = y+height; 22 | 23 | Gui.drawRect(x, y, xEnd, yEnd, fill.getRGB()); 24 | 25 | GlStateManager.popMatrix(); 26 | GlStateManager.enableBlend(); 27 | GlStateManager.enableAlpha(); 28 | GlStateManager.disableTexture2D(); 29 | 30 | GL11.glLineWidth(2f); 31 | GL11.glEnable(GL11.GL_LINE_SMOOTH); 32 | GL11.glHint(GL11.GL_LINE_SMOOTH_HINT, GL11.GL_NICEST); 33 | 34 | float[] outlineColor = translateToFloat(outline); 35 | 36 | GlStateManager.color(outlineColor[0], outlineColor[1], outlineColor[2], 1f); 37 | 38 | GL11.glBegin(GL11.GL_LINE_LOOP); 39 | 40 | GL11.glVertex2d(x, y); 41 | GL11.glVertex2d(x, yEnd); 42 | GL11.glVertex2d(xEnd, yEnd); 43 | GL11.glVertex2d(xEnd, y); 44 | 45 | GL11.glEnd(); 46 | 47 | GL11.glDisable(GL11.GL_LINE_SMOOTH); 48 | 49 | GlStateManager.enableTexture2D(); 50 | GlStateManager.disableAlpha(); 51 | GlStateManager.disableBlend(); 52 | GlStateManager.resetColor(); 53 | GlStateManager.popMatrix(); 54 | } 55 | 56 | public float[] translateToFloat(Color color) { 57 | return new float[] { color.getRed() / 255f, color.getGreen() / 255f, color.getBlue() / 255f, color.getAlpha() / 255f }; 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/utils/FPSUtils.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.utils; 2 | 3 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 4 | import net.minecraftforge.fml.common.gameevent.TickEvent; 5 | 6 | import java.util.Set; 7 | import java.util.concurrent.ConcurrentHashMap; 8 | 9 | /** 10 | * @author Gabagooooooooooool 11 | * @version 1.0 12 | * @brief Precise FPS Utilities 13 | */ 14 | public class FPSUtils { 15 | 16 | private static final Set lastFps = ConcurrentHashMap.newKeySet(); 17 | private static boolean half = true; 18 | 19 | public static Integer getFPS() { 20 | lastFps.removeIf(x -> System.currentTimeMillis() - x > 1000); 21 | return lastFps.size(); 22 | } 23 | 24 | @SubscribeEvent 25 | public void onRender(TickEvent.RenderTickEvent event) { 26 | if (half = !half) lastFps.add(System.currentTimeMillis()); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/utils/InventoryUtils.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.utils; 2 | // implemented from https://github.com/ShadyAddons/ShadyAddons on GPLv3 3 | 4 | import me.aurora.client.Aurora; 5 | import me.aurora.client.utils.conditions.ConditionUtils; 6 | import net.minecraft.client.gui.GuiScreen; 7 | import net.minecraft.client.gui.inventory.GuiChest; 8 | import net.minecraft.inventory.ContainerChest; 9 | 10 | /** 11 | * MODIFIED FROM SHADYADDONS 12 | * 13 | * @author jxee 14 | */ 15 | 16 | public class InventoryUtils { 17 | public static String getGuiName(GuiScreen gui) { 18 | if (gui instanceof GuiChest) { 19 | return ((ContainerChest) ((GuiChest) gui).inventorySlots).getLowerChestInventory().getDisplayName().getUnformattedText(); 20 | } 21 | return ""; 22 | } 23 | 24 | public static String getInventoryName() { 25 | if (!ConditionUtils.inGame()) return "null"; 26 | return Aurora.mc.thePlayer.openContainer.inventorySlots.get(0).inventory.getName(); 27 | } 28 | 29 | public static void clickSlot(int slotId, int mouseButton, int mode) { 30 | Aurora.mc.playerController.windowClick(Aurora.mc.thePlayer.openContainer.windowId, slotId, mouseButton, mode, Aurora.mc.thePlayer); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/utils/ItemUtils.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.utils; 2 | 3 | import net.minecraft.item.ItemStack; 4 | import net.minecraft.nbt.NBTTagCompound; 5 | 6 | /** 7 | * @author jxee Gabagooooooooooool 8 | * @version 1.1 9 | * @credit ShadyAddons (jxee) 10 | * @brief Item ID Utils 11 | */ 12 | public class ItemUtils { 13 | public static String getSkyBlockID(ItemStack item) { 14 | if (item != null) { 15 | NBTTagCompound extraAttributes = item.getSubCompound("ExtraAttributes", false); 16 | if (extraAttributes != null && extraAttributes.hasKey("id")) 17 | return extraAttributes.getString("id"); 18 | } 19 | return null; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/utils/LookupBlockUtils.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.utils; 2 | 3 | import net.minecraft.block.Block; 4 | import net.minecraft.block.BlockStone; 5 | import net.minecraft.init.Blocks; 6 | import net.minecraft.util.BlockPos; 7 | 8 | import static me.aurora.client.Aurora.mc; 9 | 10 | /** 11 | * @author Gabagooooooooooool 12 | * @version 1.2 13 | * Util for verifying stacked blocks integrity. 14 | */ 15 | public class LookupBlockUtils { 16 | public static boolean blocksAbove(BlockPos baseBlock, Block[] blockList, BlockStone.EnumType[] stoneParameters) { 17 | int x = baseBlock.getX(); 18 | int y = baseBlock.getY(); 19 | int z = baseBlock.getZ(); 20 | for (int i = 0; i < blockList.length; i++) { 21 | if (mc.theWorld.getBlockState(new BlockPos(x, y + i, z)).getBlock() == blockList[i]) { 22 | if (stoneParameters[i] != null && (mc.theWorld.getBlockState(new BlockPos(x, y + i, z)).getBlock() == Blocks.stone)) { 23 | if (mc.theWorld.getBlockState(new BlockPos(x, y + i, z)).getValue(BlockStone.VARIANT) != stoneParameters[i]) 24 | return false; 25 | } 26 | } else { 27 | return false; 28 | } 29 | } 30 | return true; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/utils/MessageUtils.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.utils; 2 | 3 | import me.aurora.client.Aurora; 4 | import net.minecraft.util.ChatComponentText; 5 | import scala.actors.threadpool.Arrays; 6 | 7 | import java.util.*; 8 | import java.util.concurrent.CompletableFuture; 9 | 10 | import static me.aurora.client.Aurora.mc; 11 | 12 | public class MessageUtils { 13 | 14 | public static void sendClientMessage(String message) { 15 | Aurora.mc.thePlayer.addChatMessage(new ChatComponentText("\2479\247lAURORA \2477| \247r" + message.replace("&", "\247"))); 16 | } 17 | 18 | public static void sendMultilineClientMessage(String... messages) { 19 | for (String message : messages) { 20 | sendClientMessage(message); 21 | } 22 | } 23 | 24 | public static void sendDelayedMultilinePlayerMessage(int delay, String... msgs) { 25 | CompletableFuture.runAsync(() -> { 26 | for (String msg : msgs) { 27 | try { 28 | Thread.sleep(delay); 29 | } catch (InterruptedException ignored) { 30 | } 31 | mc.thePlayer.sendChatMessage(msg); 32 | } 33 | }); 34 | } 35 | 36 | public static Random random = new Random(); 37 | public static String[] fakeMacroMessages = { 38 | "wtf", 39 | "what?", 40 | "hi admins", 41 | "first time getting checked", 42 | "wow", 43 | "lol", 44 | "???" 45 | }; 46 | } 47 | -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/utils/MouseUtils.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.utils; 2 | 3 | import static me.aurora.client.Aurora.mc; 4 | 5 | /** 6 | * @author jxee Gabagooooooooooool 7 | * @version 2.0 8 | * @credit ShadyAddons (jxee) 9 | * @brief Mouse Utils 10 | */ 11 | public class MouseUtils { 12 | 13 | public static void click(ClickType click) { 14 | switch (click) { 15 | case LEFT: 16 | tryInvoke("func_147116_af", "clickMouse"); 17 | break; 18 | case MIDDLE: 19 | tryInvoke("func_147112_ai", "middleClickMouse"); 20 | break; 21 | case RIGHT: 22 | tryInvoke("func_147121_ag", "rightClickMouse"); 23 | break; 24 | } 25 | } 26 | 27 | @Deprecated 28 | public static void rightClick() { 29 | tryInvoke("func_147121_ag", "rightClickMouse"); 30 | } 31 | 32 | @Deprecated 33 | public static void leftClick() { 34 | tryInvoke("func_147116_af", "clickMouse"); 35 | } 36 | 37 | @Deprecated 38 | public static void middleClick() { 39 | tryInvoke("func_147112_ai", "middleClickMouse"); 40 | } 41 | 42 | private static void tryInvoke(String obfName, String normalName) { 43 | if (!ReflectionUtils.invoke(mc, obfName)) 44 | ReflectionUtils.invoke(mc, normalName); 45 | } 46 | 47 | public enum ClickType { 48 | LEFT, MIDDLE, RIGHT 49 | } 50 | 51 | } 52 | -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/utils/PacketHandler.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.utils; 2 | 3 | import io.netty.channel.ChannelHandler; 4 | import io.netty.channel.ChannelHandlerContext; 5 | import io.netty.channel.ChannelPipeline; 6 | import io.netty.channel.SimpleChannelInboundHandler; 7 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 8 | import net.minecraftforge.fml.common.network.FMLNetworkEvent; 9 | 10 | /** 11 | * @author Dragonain (hypixel.net forums) 12 | * @author TheAlphaEpsilon 13 | */ 14 | 15 | @ChannelHandler.Sharable 16 | public class PacketHandler extends SimpleChannelInboundHandler { 17 | 18 | public static boolean firstConnection = true; 19 | public static long lastPacket = 0; 20 | 21 | public PacketHandler() { 22 | super(false); 23 | } 24 | 25 | @Override 26 | protected void channelRead0(ChannelHandlerContext ctx, Object msg) { 27 | lastPacket = System.currentTimeMillis(); 28 | ctx.fireChannelRead(msg); 29 | } 30 | 31 | @SubscribeEvent 32 | public void join(FMLNetworkEvent.ClientConnectedToServerEvent e) { 33 | if (firstConnection) { 34 | firstConnection = false; 35 | ChannelPipeline pipeline = e.manager.channel().pipeline(); 36 | pipeline.addBefore("packet_handler", this.getClass().getName(), this); 37 | } 38 | } 39 | 40 | @SubscribeEvent 41 | public void leave(FMLNetworkEvent.ClientDisconnectionFromServerEvent e) { 42 | firstConnection = true; 43 | } 44 | } -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/utils/PacketUtils.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.utils; 2 | 3 | import me.aurora.client.Aurora; 4 | import net.minecraft.network.Packet; 5 | 6 | /** 7 | * IMPLEMENTED FROM SHADYADDONS 8 | * 9 | * @author jxee 10 | */ 11 | 12 | public class PacketUtils { 13 | public static void sendPacket(Packet packet) { 14 | Aurora.mc.getNetHandler().addToSendQueue(packet); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/utils/PapiezUtils.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.utils; 2 | 3 | import me.aurora.client.utils.conditions.ConditionUtils; 4 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 5 | import net.minecraftforge.fml.common.gameevent.TickEvent; 6 | 7 | import java.time.LocalTime; 8 | 9 | public class PapiezUtils { 10 | private boolean papiezSent = false; 11 | private boolean kukurykuSent = false; 12 | 13 | @SubscribeEvent 14 | public void onTick(TickEvent event) { 15 | if (!ConditionUtils.inGame()) return; 16 | LocalTime localTime = LocalTime.now(); 17 | if (localTime.getHour() == 21 && localTime.getMinute() == 37) { 18 | if (!papiezSent) { 19 | MessageUtils.sendClientMessage("PAPIEŻOWA"); 20 | papiezSent = true; 21 | } 22 | } 23 | else if (localTime.getHour() == 8) { 24 | if (!kukurykuSent) { 25 | MessageUtils.sendClientMessage("KUKURYKU"); 26 | kukurykuSent = true; 27 | } 28 | } 29 | else { 30 | papiezSent = kukurykuSent = false; 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/utils/ReflectionUtils.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.utils; 2 | 3 | import java.lang.reflect.Field; 4 | import java.lang.reflect.Method; 5 | 6 | /** 7 | * IMPLEMENTED FROM SHADYADDONS 8 | * 9 | * @author jxee 10 | */ 11 | public class ReflectionUtils { 12 | 13 | public static boolean invoke(Object object, String methodName) { 14 | try { 15 | final Method method = object.getClass().getDeclaredMethod(methodName); 16 | method.setAccessible(true); 17 | method.invoke(object); 18 | return true; 19 | } catch (Exception ignored) { 20 | } 21 | return false; 22 | } 23 | 24 | public static Object field(Object object, String name) { 25 | try { 26 | Field field = object.getClass().getDeclaredField(name); 27 | field.setAccessible(true); 28 | return field.get(object); 29 | } catch (Exception ignored) { 30 | } 31 | return null; 32 | } 33 | 34 | } -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/utils/RemoteUtils.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.utils; 2 | 3 | import lombok.SneakyThrows; 4 | 5 | import java.io.BufferedReader; 6 | import java.io.InputStreamReader; 7 | import java.net.URL; 8 | import java.util.Map; 9 | import java.util.Scanner; 10 | import java.util.Set; 11 | import java.util.stream.Collectors; 12 | 13 | /** 14 | * @author Gabagooooooooooool 15 | * @version 1.2 16 | * Basic utilty for checking if current version is the newest one. 17 | */ 18 | 19 | public class RemoteUtils { 20 | @SneakyThrows 21 | public static boolean isOutdated(int num) { 22 | return new Scanner(new URL("https://raw.githubusercontent.com/Gabagooooooooooool/sup/main/ver.txt").openConnection().getInputStream()).nextInt() > num; 23 | } 24 | 25 | @SneakyThrows 26 | public static Set getBlacklistedModules() { 27 | return new BufferedReader(new InputStreamReader(new URL("https://raw.githubusercontent.com/Gabagooooooooooool/AuroraData/main/modules/RemotelyDisabled.aurf").openConnection().getInputStream())).lines().filter(b -> !b.startsWith(";")).collect(Collectors.toSet()); 28 | } 29 | 30 | @SneakyThrows 31 | public static Map getCapeUsers() { 32 | return new BufferedReader(new InputStreamReader(new URL("https://raw.githubusercontent.com/AuroraQoL/AuroraCapesFreeServerXD/main/Capes.aurf").openConnection().getInputStream())).lines().filter(b -> !b.startsWith(";")).map(s -> s.split("\\|")).filter(e -> e.length > 2).collect(Collectors.toMap(k -> k[1], v -> v[2])); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/utils/RotationUtils.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.utils; 2 | 3 | import lombok.AllArgsConstructor; 4 | import net.minecraft.util.BlockPos; 5 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 6 | import net.minecraftforge.fml.common.gameevent.TickEvent; 7 | 8 | import static me.aurora.client.Aurora.mc; 9 | 10 | public class RotationUtils { 11 | 12 | public static float yawDifference; 13 | private static float pitchDifference; 14 | private static int ticks = -1; 15 | private static int tickCounter = 0; 16 | private static Runnable callback = null; 17 | 18 | private static double wrapAngleTo180(double angle) { 19 | return angle - Math.floor(angle / 360 + 0.5) * 360; 20 | } 21 | 22 | public static Rotation getRotationToBlock(BlockPos block) { 23 | double diffX = block.getX() - mc.thePlayer.posX + 0.5; 24 | double diffY = block.getY() - mc.thePlayer.posY + 0.5 - mc.thePlayer.getEyeHeight(); 25 | double diffZ = block.getZ() - mc.thePlayer.posZ + 0.5; 26 | double dist = Math.sqrt(diffX * diffX + diffZ * diffZ); 27 | float pitch = (float) -Math.atan2(dist, diffY); 28 | float yaw = (float) Math.atan2(diffZ, diffX); 29 | pitch = (float) wrapAngleTo180((pitch * 180F / Math.PI + 90) * -1); 30 | yaw = (float) wrapAngleTo180((yaw * 180 / Math.PI) - 90); 31 | 32 | return new Rotation(pitch, yaw); 33 | } 34 | 35 | public static void smoothLook(Rotation rotation, int ticks, Runnable callback) { 36 | if (ticks == 0) { 37 | look(rotation); 38 | if (callback != null) callback.run(); 39 | return; 40 | } 41 | 42 | RotationUtils.callback = callback; 43 | 44 | pitchDifference = rotation.pitch - mc.thePlayer.rotationPitch; 45 | yawDifference = rotation.yaw - mc.thePlayer.rotationYaw; 46 | 47 | RotationUtils.ticks = ticks * 20; 48 | RotationUtils.tickCounter = 0; 49 | } 50 | 51 | public static void smartLook(Rotation rotation, int ticksPer180, Runnable callback) { 52 | float rotationDifference = Math.max( 53 | Math.abs(rotation.pitch - mc.thePlayer.rotationPitch), 54 | Math.abs(rotation.yaw - mc.thePlayer.rotationYaw) 55 | ); 56 | smoothLook(rotation, (int) (rotationDifference / 180 * ticksPer180), callback); 57 | } 58 | 59 | public static void look(Rotation rotation) { 60 | mc.thePlayer.rotationPitch = rotation.pitch; 61 | mc.thePlayer.rotationYaw = rotation.yaw; 62 | } 63 | 64 | @SubscribeEvent 65 | public void onTick(TickEvent event) { 66 | if (tickCounter < ticks) { 67 | mc.thePlayer.rotationPitch += pitchDifference / ticks; 68 | mc.thePlayer.rotationYaw += yawDifference / ticks; 69 | tickCounter++; 70 | } else if (callback != null) { 71 | callback.run(); 72 | callback = null; 73 | } 74 | } 75 | 76 | @AllArgsConstructor 77 | public static class Rotation { 78 | public float pitch; 79 | public float yaw; 80 | } 81 | 82 | } -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/utils/ThemeUtils.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.utils; 2 | 3 | import me.aurora.client.config.Config; 4 | 5 | import java.awt.*; 6 | 7 | /** 8 | * @author Gabagooooooooooool 9 | * @version 1.1 10 | * Basic utility for aurora theming engine. 11 | */ 12 | 13 | public class ThemeUtils { 14 | public static Color getThemeColor(float offset) { 15 | double colorOffset = Math.abs(System.currentTimeMillis() / 16L) / 100.0 + offset; 16 | switch (Config.hudThemeColor) { 17 | case 0: 18 | return getRainbow(-4000, (int) (offset * 3000)); 19 | case 1: 20 | return getGradientOffset(new Color(223, 94, 255), new Color(0, 170, 255).brighter(), colorOffset); 21 | case 2: 22 | return getGradientOffset(new Color(255, 0, 255), new Color(255, 255, 0), colorOffset); 23 | case 3: 24 | return getGradientOffset(new Color(0, 132, 99), new Color(255, 255, 99), colorOffset); 25 | case 4: 26 | return getGradientOffset(new Color(255, 0, 0), new Color(255, 255, 0), colorOffset); 27 | case 5: 28 | return getGradientOffset(new Color(0, 0, 255), new Color(0, 255, 132), colorOffset); 29 | case 6: 30 | return getGradientOffset(new Color(250, 250, 250), new Color(5, 5, 5), colorOffset); 31 | case 7: 32 | return getGradientOffset(new Color(231, 239, 239), new Color(16, 16, 24), colorOffset); 33 | } 34 | return Color.WHITE; 35 | } 36 | 37 | public static int currentColorGet(float offset) { 38 | return getThemeColor(offset).getRGB(); 39 | } 40 | 41 | public static float getFloatValue(float offset, int color) { 42 | Color tempC = new Color(ThemeUtils.currentColorGet(offset)); 43 | int tempC_ = 0; 44 | switch (color) { 45 | case 0: 46 | tempC_ = tempC.getRed(); 47 | break; 48 | case 1: 49 | tempC_ = tempC.getGreen(); 50 | break; 51 | case 2: 52 | tempC_ = tempC.getBlue(); 53 | break; 54 | 55 | } 56 | return (((float) tempC_) / 255F); 57 | } 58 | 59 | /** 60 | * Following method has been circulating in Minecraft Hacking Community for a while, making it impossible to trace original author. 61 | */ 62 | protected static Color getGradientOffset(final Color color1, final Color color2, double offset) { 63 | if (offset > 1.0) { 64 | final double left = offset % 1.0; 65 | final int off = (int) offset; 66 | offset = ((off % 2 == 0) ? left : (1.0 - left)); 67 | } 68 | final double inverse_percent = 1.0 - offset; 69 | final int redPart = (int) (color1.getRed() * inverse_percent + color2.getRed() * offset); 70 | final int greenPart = (int) (color1.getGreen() * inverse_percent + color2.getGreen() * offset); 71 | final int bluePart = (int) (color1.getBlue() * inverse_percent + color2.getBlue() * offset); 72 | return new Color(redPart, greenPart, bluePart); 73 | } 74 | 75 | /** 76 | * Following method has been circulating in Minecraft Hacking Community for a while, making it impossible to trace original author. 77 | */ 78 | protected static Color getRainbow(final int speed, final int offset) { 79 | float hue = (System.currentTimeMillis() + offset) % speed; 80 | return Color.getHSBColor(hue / speed, 0.9f, 1f); 81 | } 82 | } 83 | -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/utils/Timer.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.utils; 2 | 3 | public class Timer { 4 | public long lastMS = System.currentTimeMillis(); 5 | 6 | public boolean timeBetween(long time, boolean reset) { 7 | if (System.currentTimeMillis() - this.lastMS > time) { 8 | if (reset) this.lastMS = System.currentTimeMillis(); 9 | return true; 10 | } 11 | return false; 12 | } 13 | } -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/utils/capes/CapeDatabase.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.utils.capes; 2 | 3 | import lombok.Getter; 4 | import me.aurora.client.utils.RemoteUtils; 5 | import net.minecraft.client.renderer.texture.DynamicTexture; 6 | import net.minecraft.util.ResourceLocation; 7 | 8 | import javax.imageio.ImageIO; 9 | import java.io.IOException; 10 | import java.net.URL; 11 | import java.util.HashMap; 12 | import java.util.Map; 13 | 14 | import static me.aurora.client.Aurora.mc; 15 | 16 | public class CapeDatabase { 17 | @Getter 18 | private static final CapeDatabase instance = new CapeDatabase(); 19 | private final Map cachedCapeTextures = new HashMap<>(); 20 | 21 | public boolean userHasCape(String username) { 22 | return cachedCapeTextures.containsKey(username.toLowerCase()); 23 | } 24 | 25 | public ResourceLocation getUserCape(String username) { 26 | return cachedCapeTextures.get(username.toLowerCase()); 27 | } 28 | 29 | public void init() { 30 | RemoteUtils.getCapeUsers().forEach( 31 | (username, capeUrl) -> { 32 | try { 33 | cachedCapeTextures.put( 34 | username.toLowerCase(), 35 | mc.getTextureManager().getDynamicTextureLocation("auroraskull" + username, new DynamicTexture(ImageIO.read(new URL(capeUrl)))) 36 | ); 37 | } catch (IOException ignored) { 38 | } 39 | } 40 | ); 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/utils/capes/CapeLayer.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.utils.capes; 2 | 3 | import lombok.AllArgsConstructor; 4 | import net.minecraft.client.entity.AbstractClientPlayer; 5 | import net.minecraft.client.renderer.GlStateManager; 6 | import net.minecraft.client.renderer.entity.RenderPlayer; 7 | import net.minecraft.client.renderer.entity.layers.LayerRenderer; 8 | import net.minecraft.entity.player.EnumPlayerModelParts; 9 | import net.minecraft.util.MathHelper; 10 | import net.minecraft.util.ResourceLocation; 11 | 12 | /** 13 | * @author Revxrsal Gabagooooooooooool 14 | * @version 1.1 15 | * Implemented from github.com/Revxrsal/SimpleCapes under Apache Commons 2.0 License 16 | */ 17 | @AllArgsConstructor 18 | public class CapeLayer implements LayerRenderer { 19 | private final RenderPlayer playerRenderer; 20 | 21 | @Override 22 | public void doRenderLayer(AbstractClientPlayer entity, float limbSwing, float limbSwingAmount, float partialTicks, float ageInTicks, float netHeadYaw, float headPitch, float scale) { 23 | ResourceLocation capeLoc = CapeDatabase.getInstance().getUserCape(entity.getName()); 24 | if (capeLoc == null) return; 25 | if (!entity.isInvisible() && entity.isWearing(EnumPlayerModelParts.CAPE)) { 26 | float f9 = entity.isSneaking() ? .1F : .14F; 27 | float f10 = entity.isSneaking() ? .09F : 0F; 28 | GlStateManager.color(1F, 1F, 1F, 1F); 29 | this.playerRenderer.bindTexture(capeLoc); 30 | GlStateManager.pushMatrix(); 31 | GlStateManager.translate(0.0F, f10, f9); 32 | double d0 = entity.prevChasingPosX + (entity.chasingPosX - entity.prevChasingPosX) * partialTicks - (entity.prevPosX + (entity.posX - entity.prevPosX) * partialTicks); 33 | double d1 = entity.prevChasingPosY + (entity.chasingPosY - entity.prevChasingPosY) * partialTicks - (entity.prevPosY + (entity.posY - entity.prevPosY) * partialTicks); 34 | double d2 = entity.prevChasingPosZ + (entity.chasingPosZ - entity.prevChasingPosZ) * partialTicks - (entity.prevPosZ + (entity.posZ - entity.prevPosZ) * partialTicks); 35 | float f = entity.prevRenderYawOffset + (entity.renderYawOffset - entity.prevRenderYawOffset) * partialTicks; 36 | double d3 = MathHelper.sin(f * .017453292F); 37 | double d4 = -MathHelper.cos(f * .017453292F); 38 | float f1 = (float) d1 * 10F; 39 | f1 = MathHelper.clamp_float(f1, 3F, 32F); 40 | float f2 = Math.max((float) (d0 * d3 + d2 * d4) * 100F, 0F); 41 | float f3 = (float) (d0 * d4 - d2 * d3) * 100F; 42 | float f4 = entity.prevCameraYaw + (entity.cameraYaw - entity.prevCameraYaw) * partialTicks; 43 | f1 += MathHelper.sin((entity.prevDistanceWalkedModified + (entity.distanceWalkedModified - entity.prevDistanceWalkedModified) * partialTicks) * 6F) * 32F * f4; 44 | if (entity.isSneaking()) f1 += 20F; 45 | GlStateManager.rotate(5F + f2 / 2F + f1, 1F, 0F, 0F); 46 | GlStateManager.rotate(f3 / 2F, 0F, 0F, 1F); 47 | GlStateManager.rotate(-f3 / 2F, 0F, 1F, 0F); 48 | GlStateManager.rotate(180F, 0F, 1F, 0F); 49 | this.playerRenderer.getMainModel().renderCape(.0625F); 50 | GlStateManager.popMatrix(); 51 | } 52 | } 53 | 54 | @Override 55 | public boolean shouldCombineTextures() { 56 | return false; 57 | } 58 | } -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/utils/capes/CapeManager.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.utils.capes; 2 | 3 | import net.minecraft.entity.player.EntityPlayer; 4 | import net.minecraft.entity.player.EnumPlayerModelParts; 5 | import net.minecraftforge.event.entity.EntityJoinWorldEvent; 6 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 7 | 8 | import static me.aurora.client.Aurora.mc; 9 | 10 | public class CapeManager { 11 | @SubscribeEvent 12 | public void onJoin(EntityJoinWorldEvent event) { 13 | if (event.entity instanceof EntityPlayer && CapeDatabase.getInstance().userHasCape(event.entity.getName())) { 14 | mc.gameSettings.setModelPartEnabled(EnumPlayerModelParts.CAPE, true); 15 | mc.getRenderManager().getSkinMap().values().forEach(p -> p.addLayer(new CapeLayer(p))); 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/utils/conditions/ConditionUtils.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.utils.conditions; 2 | 3 | import me.aurora.client.utils.string.StringUtils; 4 | import me.cephetir.bladecore.core.listeners.SkyblockIsland; 5 | import me.cephetir.bladecore.core.listeners.SkyblockListener; 6 | import net.minecraft.scoreboard.ScoreObjective; 7 | 8 | import static me.aurora.client.Aurora.mc; 9 | 10 | /** 11 | * @author Gabagooooooooooool 12 | * @version 2.0 13 | * @brief Condition Utilities 14 | */ 15 | public class ConditionUtils { 16 | public static boolean inGame() { 17 | return (mc.thePlayer != null && mc.theWorld != null); 18 | } 19 | 20 | public static boolean inSkyblock() { 21 | if (!inGame()) return false; 22 | ScoreObjective scoreboardObj = mc.theWorld.getScoreboard().getObjectiveInDisplaySlot(1); 23 | return scoreboardObj != null && (StringUtils.removeFormatting(scoreboardObj.getDisplayName()).contains("SKYBLOCK") || StringUtils.removeFormatting(scoreboardObj.getDisplayName()).contains("SKIBLOCK")); 24 | } 25 | 26 | public static boolean inCoalMine() { 27 | if (!inGame()) return false; 28 | return SkyblockListener.INSTANCE.getLocation().equals("Coal Mine"); 29 | } 30 | 31 | public static boolean inEnd() { 32 | if (!inGame()) return false; 33 | return SkyblockListener.INSTANCE.getIsland() == SkyblockIsland.TheEnd; 34 | } 35 | 36 | public static boolean inDragonsNest() { 37 | if (!inGame()) return false; 38 | return SkyblockListener.INSTANCE.getLocation().equals("Dragon's Nest"); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/utils/font/FontCore.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.utils.font; 2 | 3 | import net.minecraft.client.renderer.texture.DynamicTexture; 4 | import org.lwjgl.opengl.GL11; 5 | 6 | import java.awt.*; 7 | import java.awt.geom.Rectangle2D; 8 | import java.awt.image.BufferedImage; 9 | 10 | /** 11 | * Implemented from some russian minecraft forum idk 12 | */ 13 | public class FontCore { 14 | protected CharData[] charData = new CharData[256]; 15 | protected Font font; 16 | protected boolean antiAlias; 17 | protected int fontHeight = -1; 18 | protected int charOffset = 0; 19 | protected DynamicTexture tex; 20 | float imgSize = 512; 21 | boolean fractionalMetrics; 22 | 23 | public FontCore(Font font, boolean antiAlias, boolean fractionalMetrics) { 24 | this.font = font; 25 | this.antiAlias = antiAlias; 26 | this.fractionalMetrics = fractionalMetrics; 27 | this.tex = this.setupTexture(font, antiAlias, fractionalMetrics, this.charData); 28 | } 29 | 30 | protected DynamicTexture setupTexture(Font font, boolean antiAlias, boolean fractionalMetrics, CharData[] chars) { 31 | BufferedImage img = this.generateFontImage(font, antiAlias, fractionalMetrics, chars); 32 | 33 | try { 34 | return new DynamicTexture(img); 35 | } catch (Exception e) { 36 | e.printStackTrace(); 37 | return null; 38 | } 39 | } 40 | 41 | protected BufferedImage generateFontImage(Font font, boolean antiAlias, boolean fractionalMetrics, CharData[] chars) { 42 | int imgSize = (int) this.imgSize; 43 | BufferedImage bufferedImage = new BufferedImage(imgSize, imgSize, 2); 44 | Graphics2D graphics = (Graphics2D) bufferedImage.getGraphics(); 45 | graphics.setFont(font); 46 | graphics.setColor(new Color(255, 255, 255, 0)); 47 | graphics.fillRect(0, 0, imgSize, imgSize); 48 | graphics.setColor(Color.WHITE); 49 | graphics.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS, fractionalMetrics ? RenderingHints.VALUE_FRACTIONALMETRICS_ON : RenderingHints.VALUE_FRACTIONALMETRICS_OFF); 50 | graphics.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, antiAlias ? RenderingHints.VALUE_TEXT_ANTIALIAS_ON : RenderingHints.VALUE_TEXT_ANTIALIAS_OFF); 51 | graphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING, antiAlias ? RenderingHints.VALUE_ANTIALIAS_ON : RenderingHints.VALUE_ANTIALIAS_OFF); 52 | FontMetrics fontMetrics = graphics.getFontMetrics(); 53 | int charHeight = 0; 54 | int positionX = 0; 55 | int positionY = 1; 56 | int index = 0; 57 | 58 | while (index < chars.length) { 59 | char c = (char) index; 60 | CharData charData = new CharData(); 61 | Rectangle2D dimensions = fontMetrics.getStringBounds(String.valueOf(c), graphics); 62 | charData.width = dimensions.getBounds().width + 8; 63 | charData.height = dimensions.getBounds().height; 64 | 65 | if (positionX + charData.width >= imgSize) { 66 | positionX = 0; 67 | positionY += charHeight; 68 | charHeight = 0; 69 | } 70 | 71 | if (charData.height > charHeight) { 72 | charHeight = charData.height; 73 | } 74 | 75 | charData.storedX = positionX; 76 | charData.storedY = positionY; 77 | 78 | if (charData.height > this.fontHeight) { 79 | this.fontHeight = charData.height; 80 | } 81 | 82 | chars[index] = charData; 83 | graphics.drawString(String.valueOf(c), positionX + 2, positionY + fontMetrics.getAscent()); 84 | positionX += charData.width; 85 | ++index; 86 | } 87 | 88 | return bufferedImage; 89 | } 90 | 91 | public void drawChar(CharData[] chars, char c, float x, float y) throws ArrayIndexOutOfBoundsException { 92 | try { 93 | this.drawQuad(x, y, chars[c].width, chars[c].height, chars[c].storedX, chars[c].storedY, chars[c].width, chars[c].height); 94 | } catch (Exception e) { 95 | e.printStackTrace(); 96 | } 97 | } 98 | 99 | protected void drawQuad(float x2, float y2, float width, float height, float srcX, float srcY, float srcWidth, float srcHeight) { 100 | float renderSRCX = srcX / this.imgSize; 101 | float renderSRCY = srcY / this.imgSize; 102 | float renderSRCWidth = srcWidth / this.imgSize; 103 | float renderSRCHeight = srcHeight / this.imgSize; 104 | GL11.glTexCoord2f(renderSRCX + renderSRCWidth, renderSRCY); 105 | GL11.glVertex2d(x2 + width, y2); 106 | GL11.glTexCoord2f(renderSRCX, renderSRCY); 107 | GL11.glVertex2d(x2, y2); 108 | GL11.glTexCoord2f(renderSRCX, renderSRCY + renderSRCHeight); 109 | GL11.glVertex2d(x2, y2 + height); 110 | GL11.glTexCoord2f(renderSRCX, renderSRCY + renderSRCHeight); 111 | GL11.glVertex2d(x2, y2 + height); 112 | GL11.glTexCoord2f(renderSRCX + renderSRCWidth, renderSRCY + renderSRCHeight); 113 | GL11.glVertex2d(x2 + width, y2 + height); 114 | GL11.glTexCoord2f(renderSRCX + renderSRCWidth, renderSRCY); 115 | GL11.glVertex2d(x2 + width, y2); 116 | } 117 | 118 | public void setAntiAlias(boolean antiAlias) { 119 | if (this.antiAlias != antiAlias) { 120 | this.antiAlias = antiAlias; 121 | this.tex = this.setupTexture(this.font, antiAlias, this.fractionalMetrics, this.charData); 122 | } 123 | } 124 | 125 | public boolean isFractionalMetrics() { 126 | return this.fractionalMetrics; 127 | } 128 | 129 | public void setFractionalMetrics(boolean fractionalMetrics) { 130 | if (this.fractionalMetrics != fractionalMetrics) { 131 | this.fractionalMetrics = fractionalMetrics; 132 | this.tex = this.setupTexture(this.font, this.antiAlias, fractionalMetrics, this.charData); 133 | } 134 | } 135 | 136 | public void setFont(Font font) { 137 | this.font = font; 138 | this.tex = this.setupTexture(font, this.antiAlias, this.fractionalMetrics, this.charData); 139 | } 140 | 141 | protected static class CharData { 142 | public int width, height, 143 | storedX, storedY; 144 | 145 | protected CharData() { 146 | } 147 | } 148 | } 149 | -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/utils/font/FontDefiner.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.utils.font; 2 | 3 | import me.aurora.client.config.Config; 4 | import net.minecraft.client.Minecraft; 5 | import net.minecraft.util.ResourceLocation; 6 | 7 | import java.awt.*; 8 | 9 | public class FontDefiner { 10 | public static FontRender getFontRenderer(float size) { 11 | FontRender tempRenderer; 12 | try { 13 | tempRenderer = new FontRender(Font.createFont(Font.TRUETYPE_FONT, Minecraft.getMinecraft().getResourceManager().getResource(getFontLocation()).getInputStream()).deriveFont(Font.PLAIN, size), true, false); 14 | } catch (Exception e) { 15 | throw new RuntimeException(e); 16 | } 17 | return tempRenderer; 18 | } 19 | 20 | public static FontRender getFontRenderer() { 21 | return getFontRenderer(19f); 22 | } 23 | 24 | private static ResourceLocation getFontLocation() { 25 | String location = "dailydungeons:res/"; 26 | switch (Config.hudFont) { 27 | case 0: 28 | location += "kanit.ttf"; 29 | break; 30 | case 1: 31 | location += "oldkanit.ttf"; 32 | break; 33 | case 2: 34 | location += "dys.ttf"; 35 | break; 36 | } 37 | return new ResourceLocation(location); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/utils/hud/ModuleEditor.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.utils.hud; 2 | 3 | import me.aurora.client.Aurora; 4 | import me.aurora.client.features.visual.Element; 5 | import net.minecraft.client.gui.Gui; 6 | import net.minecraft.client.gui.GuiScreen; 7 | import net.minecraft.util.ResourceLocation; 8 | 9 | 10 | /** 11 | * @author Papa-Stalin Gabagooooooooooool 12 | * @version 1.1 13 | * @credit ClientAPI (Papa-Stalin) 14 | * @brief Module Editor 15 | */ 16 | public class ModuleEditor extends GuiScreen { 17 | 18 | @Override 19 | public void drawScreen(int mouseX, int mouseY, float partialTicks) { 20 | mc.getTextureManager().bindTexture(new ResourceLocation("dailydungeons:res/crab.png")); 21 | Gui.drawModalRectWithCustomSizedTexture(5, 5, 0, 0, 100, 100, 100, 100); 22 | this.drawDefaultBackground(); 23 | for (Element m : Aurora.getHudModules()) { 24 | Aurora.getHudEdit().render(m.getX(), m.getY(), m.width, m.height, mouseX, mouseY, m); 25 | } 26 | } 27 | 28 | @Override 29 | protected void mouseClicked(int mouseX, int mouseY, int mouseButton) { 30 | for (Element m : Aurora.getHudModules()) { 31 | if (isHover(m.getX(), m.getY(), m.width, m.height, mouseX, mouseY)) { 32 | Aurora.getHudEdit().clickComponent(mouseX, mouseY, mouseButton, m); 33 | } 34 | } 35 | } 36 | 37 | @Override 38 | protected void mouseReleased(int mouseX, int mouseY, int state) { 39 | Aurora.getHudEdit().mouseReleased(mouseX, mouseY, state); 40 | } 41 | 42 | @Override 43 | public void initGui() { 44 | } 45 | 46 | @Override 47 | public void onGuiClosed() { 48 | Aurora.getHudEdit().onClose(); 49 | } 50 | 51 | @Override 52 | public boolean doesGuiPauseGame() { 53 | return Aurora.getHudEdit().doesPauseGame(); 54 | } 55 | 56 | 57 | private boolean isHover(int x, int y, int w, int h, int mX, int mY) { 58 | return mX >= x && mX <= x + w && mY >= y && mY <= y + h; 59 | } 60 | 61 | } 62 | -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/utils/hud/ModuleEditorHandler.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.utils.hud; 2 | 3 | import me.aurora.client.Aurora; 4 | import me.aurora.client.features.visual.Element; 5 | import net.minecraft.client.Minecraft; 6 | import scala.xml.Elem; 7 | 8 | import static me.aurora.client.Aurora.mc; 9 | 10 | /** 11 | * @author Papa-Stalin Gabagooooooooooool 12 | * @version 1.1 13 | * @credit ClientAPI (Papa-Stalin) 14 | * @brief Module Editor 15 | */ 16 | public class ModuleEditorHandler { 17 | private ModuleEditor moduleEditor; 18 | 19 | public final void display() { 20 | 21 | if (moduleEditor == null) 22 | moduleEditor = new ModuleEditor(); 23 | moduleEditor.initGui(); 24 | Aurora.setGuiToOpen(moduleEditor); 25 | 26 | } 27 | 28 | public final void hide() { 29 | if (mc.currentScreen instanceof ModuleEditor) 30 | mc.displayGuiScreen(null); 31 | } 32 | 33 | public void onOpen() {} 34 | 35 | public void onClose() {} 36 | 37 | public void render(int x, int y, int w, int h, int mouseX, int mouseY, Element component) { 38 | } 39 | 40 | public void clickComponent(int mouseX, int mouseY, int mouseButton, Element component) { 41 | } 42 | 43 | public void mouseReleased(int mouseX, int mouseY, int state) { 44 | } 45 | 46 | public boolean doesPauseGame() { 47 | return false; 48 | } 49 | 50 | public final void renderModule(Element component) { 51 | component.editorDraw(); 52 | } 53 | 54 | public final ModuleEditor getModuleEditor() { 55 | return moduleEditor; 56 | } 57 | 58 | public void RenderGUI(Element m) { 59 | if (!(mc.currentScreen instanceof ModuleEditor) && m.enabled()) m.guiDraw(); 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/utils/iteration/BlockOperation.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.utils.iteration; 2 | 3 | public interface BlockOperation { 4 | void activate(int x, int y, int z); 5 | } 6 | -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/utils/iteration/LoopUtils.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.utils.iteration; 2 | 3 | import net.minecraft.util.BlockPos; 4 | import net.minecraft.world.chunk.Chunk; 5 | 6 | import static me.aurora.client.Aurora.mc; 7 | 8 | public class LoopUtils { 9 | public static void brLoop(int startX, int startY, int startZ, int radius, BlockOperation lambdaThree) { 10 | for (int x = startX - radius; x <= startX + radius; x++) { 11 | for (int y = startY - radius; y <= startY + radius; y++) { 12 | for (int z = startZ - radius; z <= startZ + radius; z++) { 13 | lambdaThree.activate(x, y, z); 14 | } 15 | } 16 | } 17 | } 18 | 19 | public static void brLoopBoundChunk(int startX, int startY, int startZ, int radius, BlockOperation lambdaThree, int downBoundary, int upperBoundary) { 20 | int chunkRadius = (int) Math.ceil(radius / 16); 21 | Chunk startCh = mc.theWorld.getChunkFromBlockCoords(new BlockPos(startX, startY, startZ)); 22 | int startChX = startCh.xPosition; 23 | int startChZ = startCh.zPosition; 24 | for (int chX = startChX - chunkRadius; chX <= startChX + chunkRadius; chX++) { 25 | for (int chZ = startChZ - chunkRadius; chZ <= startChZ + chunkRadius; chZ++) { 26 | Chunk checkChunk = mc.theWorld.getChunkFromChunkCoords(chX, chZ); 27 | if (!checkChunk.isLoaded()) continue; 28 | for (int x = 0; x < 17; x++) { 29 | for (int y = downBoundary; y <= upperBoundary; y++) { 30 | for (int z = 0; z < 17; z++) { 31 | lambdaThree.activate(x + (checkChunk.xPosition * 16), y, z + (checkChunk.zPosition * 16)); 32 | } 33 | } 34 | } 35 | } 36 | } 37 | } 38 | 39 | public static void brLoopBound(int startX, int startY, int startZ, int radius, BlockOperation lambdaThree, int downBoundary, int upperBoundary) { 40 | for (int x = startX - radius; x <= startX + radius; x++) { 41 | for (int y = Math.max(startY - radius, downBoundary); y <= Math.min(startY + radius, upperBoundary); y++) { 42 | for (int z = startZ - radius; z <= startZ + radius; z++) { 43 | lambdaThree.activate(x, y, z); 44 | } 45 | } 46 | } 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/utils/rotation/AngleUtils.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.utils.rotation; 2 | 3 | import net.minecraft.client.Minecraft; 4 | 5 | /** 6 | * @author night0721 Gabagooooooooooool 7 | * @version 1.1 8 | * @credit Lilaise (night0721) 9 | * @brief Angle Utilities 10 | */ 11 | public class AngleUtils { 12 | private static final Minecraft mc = Minecraft.getMinecraft(); 13 | 14 | public static float get360RotationYaw(float yaw) { 15 | return (yaw % 360 + 360) % 360; 16 | } 17 | 18 | public static float get360RotationYaw() { 19 | return get360RotationYaw(mc.thePlayer.rotationYaw); 20 | } 21 | 22 | public static float clockwiseDifference(float initialYaw360, float targetYaw360) { 23 | return get360RotationYaw(targetYaw360 - initialYaw360); 24 | } 25 | 26 | public static float antiClockwiseDifference(float initialYaw360, float targetYaw360) { 27 | return get360RotationYaw(initialYaw360 - targetYaw360); 28 | } 29 | 30 | public static float smallestAngleDifference(float initialYaw360, float targetYaw360) { 31 | return Math.min(clockwiseDifference(initialYaw360, targetYaw360), antiClockwiseDifference(initialYaw360, targetYaw360)); 32 | } 33 | 34 | public static float getClosest() { 35 | if (get360RotationYaw() < 45 || get360RotationYaw() > 315) { 36 | return 0f; 37 | } else if (get360RotationYaw() < 135) { 38 | return 90f; 39 | } else if (get360RotationYaw() < 225) { 40 | return 180f; 41 | } else { 42 | return 270f; 43 | } 44 | } 45 | 46 | public static float getClosest(float yaw) { 47 | if (yaw < 45 || yaw > 315) { 48 | return 0f; 49 | } else if (yaw < 135) { 50 | return 90f; 51 | } else if (yaw < 225) { 52 | return 180f; 53 | } else { 54 | return 270f; 55 | } 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/utils/rotation/Rotation.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.utils.rotation; 2 | 3 | import static me.aurora.client.Aurora.mc; 4 | 5 | /** 6 | * @author night0721 Gabagooooooooooool 7 | * @version 1.1 8 | * @credit Lilaise (night0721) 9 | * @brief Rotation Utilities 10 | * I decided to use primitive array instead of pair to improve performance 11 | */ 12 | public class Rotation { 13 | private final float[] start = new float[2]; 14 | private final float[] target = new float[2]; 15 | private final float[] difference = new float[2]; 16 | public boolean rotating; 17 | public boolean completed; 18 | private long startTime; 19 | private long endTime; 20 | 21 | public void easeTo(float yaw, float pitch, long time) { 22 | completed = false; 23 | rotating = true; 24 | startTime = System.currentTimeMillis(); 25 | endTime = System.currentTimeMillis() + time; 26 | start[0] = (mc.thePlayer.rotationYaw); 27 | start[1] = (mc.thePlayer.rotationPitch); 28 | target[0] = (AngleUtils.get360RotationYaw(yaw)); 29 | target[1] = (pitch); 30 | getDifference(); 31 | } 32 | 33 | public void lockAngle(float yaw, float pitch) { 34 | if (mc.thePlayer.rotationYaw != yaw || mc.thePlayer.rotationPitch != pitch && !rotating) 35 | easeTo(yaw, pitch, 1000); 36 | } 37 | 38 | public void update() { 39 | if (System.currentTimeMillis() <= endTime) { 40 | if (shouldRotateClockwise()) { 41 | mc.thePlayer.rotationYaw = start[0] + interpolate(difference[0]); 42 | } else { 43 | mc.thePlayer.rotationYaw = start[0] - interpolate(difference[0]); 44 | } 45 | mc.thePlayer.rotationPitch = start[1] + interpolate(difference[1]); 46 | } else if (!completed) { 47 | if (shouldRotateClockwise()) { 48 | System.out.println("Rotation final st - " + start[0] + ", " + mc.thePlayer.rotationYaw); 49 | mc.thePlayer.rotationYaw = target[0]; 50 | System.out.println("Rotation final - " + start[0] + difference[0]); 51 | } else { 52 | mc.thePlayer.rotationYaw = target[0]; 53 | System.out.println("Rotation final - " + (start[0] - difference[0])); 54 | } 55 | mc.thePlayer.rotationPitch = start[1] + difference[1]; 56 | completed = true; 57 | rotating = false; 58 | } 59 | } 60 | 61 | private boolean shouldRotateClockwise() { 62 | return AngleUtils.clockwiseDifference(AngleUtils.get360RotationYaw(start[0]), target[0]) < 180; 63 | } 64 | 65 | public void reset() { 66 | completed = false; 67 | rotating = false; 68 | } 69 | 70 | private void getDifference() { 71 | difference[0] = (AngleUtils.smallestAngleDifference(AngleUtils.get360RotationYaw(), target[0])); 72 | difference[1] = (target[1] - start[1]); 73 | } 74 | 75 | private float interpolate(float difference) { 76 | final float spentMillis = System.currentTimeMillis() - startTime; 77 | final float relativeProgress = spentMillis / (endTime - startTime); 78 | return (difference) * easeOutSine(relativeProgress); 79 | } 80 | 81 | private float easeOutCubic(double number) { 82 | return (float) (1.0 - Math.pow(1.0 - number, 3.0)); 83 | } 84 | 85 | private float easeOutSine(double number) { 86 | return (float) Math.sin((number * Math.PI) / 2); 87 | } 88 | } -------------------------------------------------------------------------------- /src/main/java/me/aurora/client/utils/string/StringUtils.java: -------------------------------------------------------------------------------- 1 | package me.aurora.client.utils.string; 2 | 3 | /** 4 | * @author Gabagooooooooooool 5 | * @version 1.0 6 | * @brief String Utilities 7 | */ 8 | public class StringUtils { 9 | public static String removeFormatting(String input) { 10 | return input.replaceAll("[§|&][0-9,a-f,k-o,r]", ""); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/me/gabagool/pico/collections/CheckedArrayList.java: -------------------------------------------------------------------------------- 1 | package me.gabagool.pico.collections; 2 | 3 | import java.util.ArrayList; 4 | import java.util.Collection; 5 | 6 | @SuppressWarnings("unused") 7 | public class CheckedArrayList extends ArrayList { 8 | private final Class chClass; 9 | 10 | public CheckedArrayList(Class chClass) { 11 | this.chClass = chClass; 12 | } 13 | 14 | @SuppressWarnings("unchecked") 15 | public void addAllMixed(Object... objects) { 16 | for (Object obj : objects) { 17 | if (obj.getClass().isArray()) { 18 | for (Object elem : (Object[]) obj) if (elem.getClass().isInstance(chClass)) this.add((T) elem); 19 | } else if (obj instanceof Collection) { 20 | for (Object elem : ((Collection) obj)) if (elem.getClass().isInstance(chClass)) this.add((T) elem); 21 | } else if (obj.getClass().isInstance(chClass)) { 22 | this.add((T) obj); 23 | } else throw new RuntimeException("Bad object type: " + obj.getClass()); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/me/gabagool/pico/collections/SemiCheckedArrayList.java: -------------------------------------------------------------------------------- 1 | package me.gabagool.pico.collections; 2 | 3 | import java.util.ArrayList; 4 | import java.util.Collection; 5 | 6 | @SuppressWarnings("unused") 7 | public class SemiCheckedArrayList extends ArrayList { 8 | @SuppressWarnings("unchecked") 9 | public void addAllMixed(Class chClass, Object... objects) { 10 | for (Object obj : objects) { 11 | if (obj.getClass().isArray()) { 12 | for (Object elem : (Object[]) obj) if (elem.getClass().isInstance(chClass)) this.add((T) elem); 13 | } else if (obj instanceof Collection) { 14 | for (Object elem : ((Collection) obj)) if (elem.getClass().isInstance(chClass)) this.add((T) elem); 15 | } else if (obj.getClass().isInstance(chClass)) { 16 | this.add((T) obj); 17 | } else throw new RuntimeException("Bad object type: " + obj.getClass()); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/me/gabagool/pico/collections/UncheckedArrayList.java: -------------------------------------------------------------------------------- 1 | package me.gabagool.pico.collections; 2 | 3 | import java.util.ArrayList; 4 | import java.util.Arrays; 5 | import java.util.Collection; 6 | 7 | @SuppressWarnings("unused") 8 | 9 | public class UncheckedArrayList extends ArrayList { 10 | @SuppressWarnings("unchecked") 11 | public void addAllMixed(Object... objects) { 12 | for (Object obj : objects) { 13 | if (obj.getClass().isArray()) this.addAll(Arrays.asList((T[]) obj)); 14 | else if (obj instanceof Collection) { 15 | for (Object elem : (Collection) obj) this.add((T) elem); 16 | } else this.add((T) obj); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/me/gabagool/pico/collections/util/Conc.java: -------------------------------------------------------------------------------- 1 | package me.gabagool.pico.collections.util; 2 | 3 | import java.util.Set; 4 | 5 | import static java.util.concurrent.ConcurrentHashMap.newKeySet; 6 | 7 | @SuppressWarnings("unused") 8 | public class Conc { 9 | public static Set newConcSet(int capacity) { 10 | return newKeySet(capacity); 11 | } 12 | 13 | public static Set newConcSet() { 14 | return newKeySet(); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/main/resources/assets/dailydungeons/res/biglogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AuroraQoL/AuroraClient/45275a0221b60986d5eb052cc2d53090171c1e53/src/main/resources/assets/dailydungeons/res/biglogo.png -------------------------------------------------------------------------------- /src/main/resources/assets/dailydungeons/res/bigrat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AuroraQoL/AuroraClient/45275a0221b60986d5eb052cc2d53090171c1e53/src/main/resources/assets/dailydungeons/res/bigrat.png -------------------------------------------------------------------------------- /src/main/resources/assets/dailydungeons/res/crab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AuroraQoL/AuroraClient/45275a0221b60986d5eb052cc2d53090171c1e53/src/main/resources/assets/dailydungeons/res/crab.png -------------------------------------------------------------------------------- /src/main/resources/assets/dailydungeons/res/dys.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AuroraQoL/AuroraClient/45275a0221b60986d5eb052cc2d53090171c1e53/src/main/resources/assets/dailydungeons/res/dys.ttf -------------------------------------------------------------------------------- /src/main/resources/assets/dailydungeons/res/kanit.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AuroraQoL/AuroraClient/45275a0221b60986d5eb052cc2d53090171c1e53/src/main/resources/assets/dailydungeons/res/kanit.ttf -------------------------------------------------------------------------------- /src/main/resources/assets/dailydungeons/res/oldkanit.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AuroraQoL/AuroraClient/45275a0221b60986d5eb052cc2d53090171c1e53/src/main/resources/assets/dailydungeons/res/oldkanit.ttf -------------------------------------------------------------------------------- /src/main/resources/mcmod.info: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "modid": "dailydungeons", 4 | "name": "§lDailyDungeons QOL", 5 | "description": "§7Simple modification with additional hypixel features", 6 | "version": "${version}", 7 | "mcversion": "${mcversion}", 8 | "url": "", 9 | "updateUrl": "", 10 | "authorList": [ 11 | "Gabagool Development", 12 | "OctoSplash01" 13 | ], 14 | "logoFile": "", 15 | "screenshots": [], 16 | "dependencies": [] 17 | } 18 | ] -------------------------------------------------------------------------------- /src/test/CalculationUtilsTest.java: -------------------------------------------------------------------------------- 1 | import me.aurora.client.utils.CalculationUtils; 2 | import net.minecraft.util.BlockPos; 3 | import org.junit.jupiter.api.DisplayName; 4 | import org.junit.jupiter.api.RepeatedTest; 5 | 6 | import java.util.Random; 7 | 8 | import static org.junit.jupiter.api.Assertions.assertEquals; 9 | 10 | public class CalculationUtilsTest { 11 | @RepeatedTest(5) 12 | @DisplayName("Euclidean distance calculation test") 13 | void testEuclidean() { 14 | Random r = new Random(); 15 | int[] pos = new int[6]; 16 | for (int i = 0; i <= 5; i++) pos[i] = r.nextInt(500); 17 | assertEquals(CalculationUtils.blockEuclideanDistance(new BlockPos(pos[0], pos[2], pos[4]), new BlockPos(pos[1], pos[3], pos[5])), Math.sqrt(Math.pow(pos[1] - pos[0], 2) + Math.pow(pos[3] - pos[2], 2) + Math.pow(pos[5] - pos[4], 2)), "Calculations should be equal to the standard ones"); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/test/NetworkFeaturesTest.java: -------------------------------------------------------------------------------- 1 | import me.aurora.client.Aurora; 2 | import me.aurora.client.utils.RemoteUtils; 3 | import org.junit.jupiter.api.DisplayName; 4 | import org.junit.jupiter.api.Test; 5 | import org.junit.platform.commons.logging.Logger; 6 | import org.junit.platform.commons.logging.LoggerFactory; 7 | 8 | import static org.junit.jupiter.api.Assertions.assertNotNull; 9 | import static org.junit.jupiter.api.Assertions.assertTrue; 10 | 11 | public class NetworkFeaturesTest { 12 | 13 | final Logger logger = LoggerFactory.getLogger(RemoteUtils.class); 14 | 15 | @Test 16 | @DisplayName("Version checker test") 17 | void testUpdater() { 18 | assertTrue(RemoteUtils.isOutdated(-1), "Negative version numbers should always be outdated"); 19 | if (!RemoteUtils.isOutdated(Aurora.CURRENT_VERSION_BUILD - 1)) 20 | logger.warn(() -> "Versions older than current version should be outdated. Ignore this message if you are using prerelease version"); 21 | } 22 | 23 | @Test 24 | @DisplayName("Disabled features test") 25 | void testDisabled() { 26 | assertNotNull(RemoteUtils.getBlacklistedModules(), "There is a placeholder module put in blacklisted modules remote source."); 27 | assertTrue(RemoteUtils.getBlacklistedModules().contains("Placeholder"), "There is a placeholder module put in blacklisted modules remote source."); 28 | } 29 | } 30 | --------------------------------------------------------------------------------