From 6f69d1e1aff688bf2f5ca34754640eed5102b045 Mon Sep 17 00:00:00 2001 From: RoseGoldIsntGay Date: Sun, 7 Nov 2021 18:34:22 +0200 Subject: committed or something --- .gitignore | 29 + build.gradle | 94 +++ gradle.properties | 1 + gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 59203 bytes gradle/wrapper/gradle-wrapper.properties | 5 + gradlew | 185 ++++++ gradlew.bat | 89 +++ settings.gradle | 31 + src/main/java/rosegoldaddons/Config.java | 52 ++ src/main/java/rosegoldaddons/FMLLoadingPlugin.java | 45 ++ src/main/java/rosegoldaddons/Main.java | 159 +++++ src/main/java/rosegoldaddons/OpenSettings.java | 57 ++ .../java/rosegoldaddons/commands/Backpack.java | 87 +++ .../java/rosegoldaddons/commands/LobbySwap.java | 57 ++ .../java/rosegoldaddons/commands/Rosedrobe.java | 90 +++ .../java/rosegoldaddons/commands/UseCooldown.java | 90 +++ .../java/rosegoldaddons/commands/WartSetup.java | 82 +++ .../rosegoldaddons/events/ReceivePacketEvent.java | 16 + .../events/RenderLivingEntityEvent.java | 26 + .../java/rosegoldaddons/features/AutoReady.java | 122 ++++ .../rosegoldaddons/features/BlockBreakAura.java | 98 +++ .../rosegoldaddons/features/CustomItemMacro.java | 77 +++ .../rosegoldaddons/features/EndermanMacro.java | 63 ++ .../java/rosegoldaddons/features/GhostMacro.java | 51 ++ .../rosegoldaddons/features/HardstoneMacro.java | 201 ++++++ .../rosegoldaddons/features/ItemFrameAura.java | 413 +++++++++++++ .../rosegoldaddons/features/PartyUntransfer.java | 34 + .../java/rosegoldaddons/features/PowderMacro.java | 98 +++ .../rosegoldaddons/features/SwordSwapping.java | 106 ++++ .../java/rosegoldaddons/features/WartMacro.java | 146 +++++ .../rosegoldaddons/mixins/MixinNetworkManager.java | 20 + .../mixins/MixinRendererLivingEntity.java | 28 + .../java/rosegoldaddons/utils/OpenSkyblockGui.java | 154 +++++ .../java/rosegoldaddons/utils/OutlineUtils.java | 152 +++++ .../java/rosegoldaddons/utils/RenderUtils.java | 682 +++++++++++++++++++++ .../java/rosegoldaddons/utils/RotationUtils.java | 110 ++++ src/main/resources/mcmod.info | 18 + src/main/resources/mixins.rosegoldaddons.json | 12 + 38 files changed, 3780 insertions(+) create mode 100644 .gitignore create mode 100644 build.gradle create mode 100644 gradle.properties create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100644 gradlew create mode 100644 gradlew.bat create mode 100644 settings.gradle create mode 100644 src/main/java/rosegoldaddons/Config.java create mode 100644 src/main/java/rosegoldaddons/FMLLoadingPlugin.java create mode 100644 src/main/java/rosegoldaddons/Main.java create mode 100644 src/main/java/rosegoldaddons/OpenSettings.java create mode 100644 src/main/java/rosegoldaddons/commands/Backpack.java create mode 100644 src/main/java/rosegoldaddons/commands/LobbySwap.java create mode 100644 src/main/java/rosegoldaddons/commands/Rosedrobe.java create mode 100644 src/main/java/rosegoldaddons/commands/UseCooldown.java create mode 100644 src/main/java/rosegoldaddons/commands/WartSetup.java create mode 100644 src/main/java/rosegoldaddons/events/ReceivePacketEvent.java create mode 100644 src/main/java/rosegoldaddons/events/RenderLivingEntityEvent.java create mode 100644 src/main/java/rosegoldaddons/features/AutoReady.java create mode 100644 src/main/java/rosegoldaddons/features/BlockBreakAura.java create mode 100644 src/main/java/rosegoldaddons/features/CustomItemMacro.java create mode 100644 src/main/java/rosegoldaddons/features/EndermanMacro.java create mode 100644 src/main/java/rosegoldaddons/features/GhostMacro.java create mode 100644 src/main/java/rosegoldaddons/features/HardstoneMacro.java create mode 100644 src/main/java/rosegoldaddons/features/ItemFrameAura.java create mode 100644 src/main/java/rosegoldaddons/features/PartyUntransfer.java create mode 100644 src/main/java/rosegoldaddons/features/PowderMacro.java create mode 100644 src/main/java/rosegoldaddons/features/SwordSwapping.java create mode 100644 src/main/java/rosegoldaddons/features/WartMacro.java create mode 100644 src/main/java/rosegoldaddons/mixins/MixinNetworkManager.java create mode 100644 src/main/java/rosegoldaddons/mixins/MixinRendererLivingEntity.java create mode 100644 src/main/java/rosegoldaddons/utils/OpenSkyblockGui.java create mode 100644 src/main/java/rosegoldaddons/utils/OutlineUtils.java create mode 100644 src/main/java/rosegoldaddons/utils/RenderUtils.java create mode 100644 src/main/java/rosegoldaddons/utils/RotationUtils.java create mode 100644 src/main/resources/mcmod.info create mode 100644 src/main/resources/mixins.rosegoldaddons.json diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..36367f5 --- /dev/null +++ b/.gitignore @@ -0,0 +1,29 @@ +# eclipse +eclipse +bin +*.launch +.settings +.metadata +.classpath +.project + +# idea +out +classes +*.ipr +*.iws +*.iml +.idea + +# gradle +build +.gradle + +#Netbeans +.nb-gradle +.nb-gradle-properties + +# other +run +.DS_Store +Thumbs.db \ No newline at end of file diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..dceb049 --- /dev/null +++ b/build.gradle @@ -0,0 +1,94 @@ +plugins { + id "net.minecraftforge.gradle.forge" version "6f53277" + id "com.github.johnrengelman.shadow" version "6.1.0" + id "org.spongepowered.mixin" version "0.6-SNAPSHOT" +} + +version = "2.0.1" +group = "rosegoldaddons" +archivesBaseName = "RoseGoldAddons" + +sourceCompatibility = targetCompatibility = 1.8 +compileJava.options.encoding = 'UTF-8' + +minecraft { + version = "1.8.9-11.15.1.2318-1.8.9" + runDir = "run" + mappings = "stable_22" + makeObfSourceJar = false + clientRunArgs += ["--tweakClass gg.essential.loader.stage0.EssentialSetupTweaker", "--mixin mixins.rosegoldaddons.json"] +} + +repositories { + mavenCentral() + maven { url "https://jitpack.io" } + maven { url "https://repo.spongepowered.org/repository/maven-public/" } + maven { url "https://repo.sk1er.club/repository/maven-public" } + maven { url "https://repo.sk1er.club/repository/maven-releases/" } +} + +configurations { + packageLib + configurations.implementation.extendsFrom(configurations.packageLib) +} + + +dependencies { + annotationProcessor("org.spongepowered:mixin:0.7.11-SNAPSHOT") + implementation("org.spongepowered:mixin:0.7.11-SNAPSHOT") + packageLib("gg.essential:loader-launchwrapper:1.1.1") + implementation("gg.essential:essential-1.8.9-forge:1498") +} + +mixin { + disableRefMapWarning = true + defaultObfuscationEnv searge + add sourceSets.main, "mixins.rosegoldaddons.refmap.json" +} + +jar { + + duplicatesStrategy = DuplicatesStrategy.EXCLUDE + + manifest.attributes( + "FMLCorePluginContainsFMLMod": true, + "FMLCorePlugin": "rosegoldaddons.FMLLoadingPlugin", + "ForceLoadAsMod": true, + "MixinConfigs": "mixins.rosegoldaddons.json", + "ModSide": "CLIENT", + "TweakClass": "gg.essential.loader.stage0.EssentialSetupTweaker", + "TweakOrder": "0" + ) + + enabled = false +} + +shadowJar { + archiveFileName = jar.archiveFileName + duplicatesStrategy = DuplicatesStrategy.EXCLUDE + configurations = [project.configurations.packageLib] +} + +reobf { + shadowJar { + classpath = sourceSets.main.compileClasspath + } +} + +processResources { + inputs.property "version", project.version + inputs.property "mcversion", project.minecraft.version + from(sourceSets.main.resources.srcDirs) { + include 'mcmod.info' + expand 'version':project.version, 'mcversion':project.minecraft.version + } + from(sourceSets.main.resources.srcDirs) { + exclude 'mcmod.info' + } +} + +sourceSets { + main { output.resourcesDir = java.outputDir } +} + +tasks.reobfJar.dependsOn(shadowJar) diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..bf86fb7 --- /dev/null +++ b/gradle.properties @@ -0,0 +1 @@ +org.gradle.jvmargs=-Xmx2G \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000..e708b1c Binary files /dev/null and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..8cf6eb5 --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.3-all.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew new file mode 100644 index 0000000..4f906e0 --- /dev/null +++ b/gradlew @@ -0,0 +1,185 @@ +#!/usr/bin/env sh + +# +# Copyright 2015 the original author or authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin or MSYS, switch paths to Windows format before running java +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=`expr $i + 1` + done + case $i in + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=`save "$@"` + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..107acd3 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,89 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..f66dbc7 --- /dev/null +++ b/settings.gradle @@ -0,0 +1,31 @@ +pluginManagement { + repositories { + mavenCentral() + gradlePluginPortal() + + // Add the Forge Repository (ForgeGradle fetches most of its stuff from here) + maven { + name = "Forge" + url = "https://maven.minecraftforge.net" + } + + // Add the Jitpack Repository (We fetch ForgeGradle from this) + maven { + name = "Jitpack" + url = "https://jitpack.io/" + } + } + resolutionStrategy { + eachPlugin { + // If the "net.minecraftforge.gradle.forge" plugin is requested we redirect it to asbyth's ForgeGradle fork + if (requested.id.id == "net.minecraftforge.gradle.forge") { + useModule("com.github.asbyth:ForgeGradle:${requested.version}") + } + if (requested.id.id == "org.spongepowered.mixin") { + useModule("com.github.xcfrg:MixinGradle:${requested.version}") + } + } + } +} + +rootProject.name = "ForgeTemplate" \ No newline at end of file diff --git a/src/main/java/rosegoldaddons/Config.java b/src/main/java/rosegoldaddons/Config.java new file mode 100644 index 0000000..0047b65 --- /dev/null +++ b/src/main/java/rosegoldaddons/Config.java @@ -0,0 +1,52 @@ +package rosegoldaddons; + +import gg.essential.vigilance.Vigilant; +import gg.essential.vigilance.data.Property; +import gg.essential.vigilance.data.PropertyType; + +import java.awt.*; +import java.io.File; +import java.util.Arrays; + +import java.io.File; + +public class Config extends Vigilant { + public static Config INSTANCE = new Config(); + + @Property(type = PropertyType.SWITCH, name = "Auto Start Dungeon + Ready", description = "Automatically starts the dungeon and gets ready.", + category = "RoseGoldAddons", subcategory = "General") + public boolean AutoReady = true; + + @Property(type = PropertyType.SWITCH, name = "Party Untransfer", description = "When you really dont wanna be party leader.", + category = "RoseGoldAddons", subcategory = "General") + public boolean AutoUntransfer = true; + + @Property(type = PropertyType.SWITCH, name = "Enderman ESP", description = "**NOT** Needed for enderman macro.", + category = "RoseGoldAddons", subcategory = "General") + public boolean EndermanESP = false; + + @Property(type = PropertyType.SWITCH, name = "Use Utility Items when Swapping", description = "Automatically use Tuba / Orb / Wand when AOTS or Whip swap are enabled", + category = "RoseGoldAddons", subcategory = "General") + public boolean UseUtility = false; + + @Property(type = PropertyType.SLIDER, name = "Sword Swap Delay", description = "How often to swap swords (in miliseconds)", + category = "RoseGoldAddons", subcategory = "General", max = 2000) + public int swapFrequency = 500; + + @Property(type = PropertyType.SLIDER, name = "ItemFrame Terminal Aura Delay", description = "How often to click an item frame (in miliseconds)", + category = "RoseGoldAddons", subcategory = "General", max = 500) + public int auraDelay = 10; + + @Property(type = PropertyType.SLIDER, name = "Smooth Look Velocity", description = "How fast should head rotation changes be (in miliseconds)", + category = "RoseGoldAddons", subcategory = "General", min = 1, max = 200) + public int smoothLookVelocity = 50; + + @Property(type = PropertyType.SLIDER, name = "Macro Range", description = "Look for entities only in radius of the player, 0 = unlimited", + category = "RoseGoldAddons", subcategory = "General", min = 0, max = 100) + public int macroRadius = 0; + + public Config() { + super(new File("./config/rosegoldaddons/config.toml"), "RoseGold Addons"); + initialize(); + } +} diff --git a/src/main/java/rosegoldaddons/FMLLoadingPlugin.java b/src/main/java/rosegoldaddons/FMLLoadingPlugin.java new file mode 100644 index 0000000..57d237e --- /dev/null +++ b/src/main/java/rosegoldaddons/FMLLoadingPlugin.java @@ -0,0 +1,45 @@ +package rosegoldaddons; + +import net.minecraftforge.common.ForgeVersion; +import net.minecraftforge.fml.relauncher.IFMLLoadingPlugin; +import org.spongepowered.asm.launch.MixinBootstrap; +import org.spongepowered.asm.mixin.MixinEnvironment; +import org.spongepowered.asm.mixin.Mixins; + + +import java.util.Map; + +@IFMLLoadingPlugin.MCVersion(ForgeVersion.mcVersion) +public class FMLLoadingPlugin implements IFMLLoadingPlugin { + + public FMLLoadingPlugin() { + MixinBootstrap.init(); + Mixins.addConfiguration("mixins.rosegoldaddons.json"); + MixinEnvironment.getCurrentEnvironment().setObfuscationContext("searge"); + } + + @Override + public String[] getASMTransformerClass() { + return new String[0]; + } + + @Override + public String getModContainerClass() { + return null; + } + + @Override + public String getSetupClass() { + return null; + } + + @Override + public void injectData(Map data) { + + } + + @Override + public String getAccessTransformerClass() { + return null; + } +} diff --git a/src/main/java/rosegoldaddons/Main.java b/src/main/java/rosegoldaddons/Main.java new file mode 100644 index 0000000..9c2a338 --- /dev/null +++ b/src/main/java/rosegoldaddons/Main.java @@ -0,0 +1,159 @@ +package rosegoldaddons; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.client.settings.KeyBinding; +import net.minecraft.util.ChatComponentText; +import net.minecraftforge.client.ClientCommandHandler; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.fml.client.registry.ClientRegistry; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.fml.common.event.FMLInitializationEvent; +import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; +import net.minecraftforge.fml.common.gameevent.InputEvent; +import net.minecraftforge.fml.common.gameevent.TickEvent; +import net.minecraftforge.fml.common.network.FMLNetworkEvent; +import org.lwjgl.input.Keyboard; +import rosegoldaddons.commands.*; +import rosegoldaddons.features.BlockBreakAura; +import rosegoldaddons.features.*; +import rosegoldaddons.utils.OpenSkyblockGui; + +import java.io.*; + +@Mod(modid = "timechanger", name = "RoseGold Addons", version = "2.1") +public class Main { + public static GuiScreen display = null; + public static Config configFile = Config.INSTANCE; + public static KeyBinding[] keyBinds = new KeyBinding[11]; + public static int tickCount = 0; + public static boolean endermanMacro = false; + public static boolean powderMacro = false; + public static String u = ""; + public static boolean AOTSMacro = false; + public static boolean SoulWhipMacro = false; + public static boolean verified = false; + public static boolean GhostMacro = false; + public static boolean legitToggle = false; + public static boolean gemNukeToggle = false; + public static boolean wartToggle = false; + public static boolean autoUseItems = false; + public static boolean autoHardStone = false; + + @Mod.EventHandler + public void onFMLInitialization(FMLPreInitializationEvent event) { + File directory = new File(event.getModConfigurationDirectory(), "rosegoldaddons"); + if (!directory.exists()) { + directory.mkdirs(); + } + } + + @Mod.EventHandler + public void init(FMLInitializationEvent event) { + MinecraftForge.EVENT_BUS.register(this); + MinecraftForge.EVENT_BUS.register(new AutoReady()); + MinecraftForge.EVENT_BUS.register(new OpenSkyblockGui()); + MinecraftForge.EVENT_BUS.register(new EndermanMacro()); + MinecraftForge.EVENT_BUS.register(new ItemFrameAura()); + MinecraftForge.EVENT_BUS.register(new PowderMacro()); + MinecraftForge.EVENT_BUS.register(new SwordSwapping()); + MinecraftForge.EVENT_BUS.register(new PartyUntransfer()); + MinecraftForge.EVENT_BUS.register(new GhostMacro()); + MinecraftForge.EVENT_BUS.register(new BlockBreakAura()); + MinecraftForge.EVENT_BUS.register(new WartMacro()); + MinecraftForge.EVENT_BUS.register(new CustomItemMacro()); + MinecraftForge.EVENT_BUS.register(new HardstoneMacro()); + + configFile.initialize(); + ClientCommandHandler.instance.registerCommand(new OpenSettings()); + ClientCommandHandler.instance.registerCommand(new Rosedrobe()); + ClientCommandHandler.instance.registerCommand(new LobbySwap()); + ClientCommandHandler.instance.registerCommand(new Backpack()); + ClientCommandHandler.instance.registerCommand(new WartSetup()); + ClientCommandHandler.instance.registerCommand(new UseCooldown()); + + keyBinds[0] = new KeyBinding("Custom Item Macro Toggle", Keyboard.KEY_NONE, "RoseGold Addons"); + keyBinds[1] = new KeyBinding("Toggle Enderman Macro", Keyboard.KEY_NONE, "RoseGold Addons"); + keyBinds[2] = new KeyBinding("Item Frame Aura", Keyboard.KEY_NONE, "RoseGold Addons"); + keyBinds[3] = new KeyBinding("Powder Macro Toggle", Keyboard.KEY_NONE, "RoseGold Addons"); + keyBinds[4] = new KeyBinding("AOTS SS Toggle", Keyboard.KEY_NONE, "RoseGold Addons"); + keyBinds[5] = new KeyBinding("Soul Whip SS Toggle", Keyboard.KEY_NONE, "RoseGold Addons"); + keyBinds[6] = new KeyBinding("Ghost Macro Toggle", Keyboard.KEY_NONE, "RoseGold Addons"); + keyBinds[7] = new KeyBinding("Item Frame Legit Mode Toggle", Keyboard.KEY_NONE, "RoseGold Addons"); + keyBinds[8] = new KeyBinding("Gemstone Smart Nuke", Keyboard.KEY_NONE, "RoseGold Addons"); + keyBinds[9] = new KeyBinding("Wart Macro", Keyboard.KEY_NONE, "RoseGold Addons"); + keyBinds[10] = new KeyBinding("Hardstone Macro", Keyboard.KEY_NONE, "RoseGold Addons"); + + for (KeyBinding keyBind : keyBinds) { + ClientRegistry.registerKeyBinding(keyBind); + } + } + + @SubscribeEvent + public void tick(TickEvent.ClientTickEvent event) { + if (event.phase != TickEvent.Phase.START) return; + if (display != null) { + try { + Minecraft.getMinecraft().displayGuiScreen(display); + } catch (Exception e) { + e.printStackTrace(); + } + display = null; + } + } + + @SubscribeEvent + public void connect(FMLNetworkEvent.ClientConnectedToServerEvent event) { + + } + + @SubscribeEvent + public void key(InputEvent.KeyInputEvent event) { + if (keyBinds[0].isPressed()) { + autoUseItems = !autoUseItems; + String str = autoUseItems ? "§aCustom Item Macro Activated" : "§cCustom Item Macro Deactivated"; + Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText(str)); + } else if (keyBinds[1].isPressed()) { + endermanMacro = !endermanMacro; + String str = endermanMacro ? "§aZealot Macro Activated" : "§cZealot Macro Deactivated"; + Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText(str)); + } else if (keyBinds[2].isPressed()) { + ItemFrameAura.mainAura(); + } else if (keyBinds[3].isPressed()) { + powderMacro = !powderMacro; + String str = powderMacro ? "§aPowder Macro Activated" : "§cPowder Macro Deactivated"; + Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText(str)); + } else if (keyBinds[4].isPressed()) { + AOTSMacro = !AOTSMacro; + String str = AOTSMacro ? "§aAOTS Macro Activated" : "§cAOTS Macro Deactivated"; + Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText(str)); + } else if (keyBinds[5].isPressed()) { + SoulWhipMacro = !SoulWhipMacro; + String str = SoulWhipMacro ? "§aSoul Whip Macro Activated" : "§cSoul Whip Macro Deactivated"; + Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText(str)); + } else if(keyBinds[6].isPressed()) { + GhostMacro = !GhostMacro; + String str = GhostMacro ? "§aGhost Macro Activated" : "§cGhost Macro Deactivated"; + Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText(str)); + } else if(keyBinds[7].isPressed()) { + legitToggle = !legitToggle; + String str = legitToggle ? "§aLegit Mode Activated" : "§cLegit Mode Deactivated"; + SwordSwapping.tickCount = 0; + Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText(str)); + } else if(keyBinds[8].isPressed()) { + gemNukeToggle = !gemNukeToggle; + String str = gemNukeToggle ? "§aGemstone Nuke Activated" : "§cGemstone Nuke Deactivated"; + Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText(str)); + } else if(keyBinds[9].isPressed()) { + wartToggle = !wartToggle; + String str = wartToggle ? "§aWart Macro Activated" : "§cWart Macro Deactivated"; + Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText(str)); + } else if(keyBinds[10].isPressed()) { + autoHardStone = !autoHardStone; + String str = autoHardStone ? "§aHardstone Macro Activated" : "§cHardstone Macro Deactivated"; + Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText(str)); + } + } + +} diff --git a/src/main/java/rosegoldaddons/OpenSettings.java b/src/main/java/rosegoldaddons/OpenSettings.java new file mode 100644 index 0000000..0e79b74 --- /dev/null +++ b/src/main/java/rosegoldaddons/OpenSettings.java @@ -0,0 +1,57 @@ +package rosegoldaddons; + +import net.minecraft.command.CommandBase; +import net.minecraft.command.ICommand; +import net.minecraft.command.ICommandSender; +import net.minecraft.util.BlockPos; +import org.jetbrains.annotations.NotNull; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +public class OpenSettings implements ICommand { + @Override + public String getCommandName() { + return "rosegoldaddons"; + } + + @Override + public String getCommandUsage(ICommandSender sender) { + return "/" + getCommandName(); + } + + @Override + public List getCommandAliases() { + return new ArrayList<>(Arrays.asList("rosegoldaddons", "rga")); + } + + @Override + public void processCommand(ICommandSender sender, String[] args) { + /*EntityPlayerSP player = (EntityPlayerSP) sender; + player.addChatMessage(new ChatComponentText("hi "+player.getName()+"!"));*/ + Main.display = Main.configFile.gui(); + return; + } + + @Override + public boolean canCommandSenderUseCommand(ICommandSender sender) { + return true; + } + + @Override + public List addTabCompletionOptions(ICommandSender sender, String[] args, BlockPos pos) { + return new ArrayList<>(); + } + + @Override + public boolean isUsernameIndex(String[] args, int index) { + return false; + } + + @Override + public int compareTo(@NotNull ICommand o) { + return 0; + } +} + diff --git a/src/main/java/rosegoldaddons/commands/Backpack.java b/src/main/java/rosegoldaddons/commands/Backpack.java new file mode 100644 index 0000000..f69cd87 --- /dev/null +++ b/src/main/java/rosegoldaddons/commands/Backpack.java @@ -0,0 +1,87 @@ +package rosegoldaddons.commands; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.inventory.GuiChest; +import net.minecraft.command.CommandBase; +import net.minecraft.command.CommandException; +import net.minecraft.command.ICommand; +import net.minecraft.command.ICommandSender; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.ContainerChest; +import net.minecraft.inventory.Slot; +import net.minecraft.util.BlockPos; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.StringUtils; +import net.minecraftforge.client.event.GuiScreenEvent; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; +import org.jetbrains.annotations.NotNull; +import rosegoldaddons.Main; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +public class Backpack implements ICommand { + public static boolean openBP = false; + public static int bpSlot = 0; + + @Override + public String getCommandName() { + return "backpack"; + } + + @Override + public String getCommandUsage(ICommandSender sender) { + return "/" + getCommandName(); + } + + @Override + public List getCommandAliases() { + return new ArrayList<>(Arrays.asList("backpack", "bp")); + } + + @Override + public void processCommand(ICommandSender sender, String[] args) throws CommandException { + if (args.length == 0) { + Minecraft.getMinecraft().thePlayer.sendChatMessage("/storage"); + } else { + if (isNumeric(args[0])) { + Minecraft.getMinecraft().thePlayer.sendChatMessage("/storage"); + openBP = true; + bpSlot = Integer.parseInt(args[0]); + } else { + Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText("§cInvalid Arguments.")); + return; + } + } + } + + @Override + public boolean canCommandSenderUseCommand(ICommandSender sender) { + return true; + } + + @Override + public List addTabCompletionOptions(ICommandSender sender, String[] args, BlockPos pos) { + return new ArrayList<>(); + } + + @Override + public boolean isUsernameIndex(String[] args, int index) { + return false; + } + + private boolean isNumeric(String str) { + try { + Double.parseDouble(str); + return true; + } catch (NumberFormatException e) { + return false; + } + } + + @Override + public int compareTo(@NotNull ICommand o) { + return 0; + } +} diff --git a/src/main/java/rosegoldaddons/commands/LobbySwap.java b/src/main/java/rosegoldaddons/commands/LobbySwap.java new file mode 100644 index 0000000..517354b --- /dev/null +++ b/src/main/java/rosegoldaddons/commands/LobbySwap.java @@ -0,0 +1,57 @@ +package rosegoldaddons.commands; + +import net.minecraft.client.Minecraft; +import net.minecraft.command.CommandException; +import net.minecraft.command.ICommand; +import net.minecraft.command.ICommandSender; +import net.minecraft.util.BlockPos; +import org.jetbrains.annotations.NotNull; + +import java.util.ArrayList; +import java.util.List; + +public class LobbySwap implements ICommand { + public static boolean swapLobby = false; + + @Override + public String getCommandName() { + return "lobbyswap"; + } + + @Override + public String getCommandUsage(ICommandSender sender) { + return "/" + getCommandName(); + } + + @Override + public List getCommandAliases() { + return new ArrayList<>(); + } + + @Override + public void processCommand(ICommandSender sender, String[] args) throws CommandException { + swapLobby = true; + Minecraft.getMinecraft().thePlayer.sendChatMessage("/sbmenu"); + + } + + @Override + public boolean canCommandSenderUseCommand(ICommandSender sender) { + return true; + } + + @Override + public List addTabCompletionOptions(ICommandSender sender, String[] args, BlockPos pos) { + return null; + } + + @Override + public boolean isUsernameIndex(String[] args, int index) { + return false; + } + + @Override + public int compareTo(@NotNull ICommand o) { + return 0; + } +} diff --git a/src/main/java/rosegoldaddons/commands/Rosedrobe.java b/src/main/java/rosegoldaddons/commands/Rosedrobe.java new file mode 100644 index 0000000..1f7fd62 --- /dev/null +++ b/src/main/java/rosegoldaddons/commands/Rosedrobe.java @@ -0,0 +1,90 @@ +package rosegoldaddons.commands; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.inventory.GuiChest; +import net.minecraft.command.CommandBase; +import net.minecraft.command.CommandException; +import net.minecraft.command.ICommand; +import net.minecraft.command.ICommandSender; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.ContainerChest; +import net.minecraft.inventory.Slot; +import net.minecraft.util.BlockPos; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.StringUtils; +import net.minecraftforge.client.event.GuiScreenEvent; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; +import org.jetbrains.annotations.NotNull; +import rosegoldaddons.Main; +import scala.actors.threadpool.Arrays; + +import java.util.ArrayList; +import java.util.List; + +public class Rosedrobe implements ICommand { + public static boolean openWardrobe = false; + public static int slot = 0; + int windowId; + + @Override + public String getCommandName() { + return "rosedrobe"; + } + + @Override + public String getCommandUsage(ICommandSender sender) { + return "/" + getCommandName(); + } + + @Override + public List getCommandAliases() { + return new ArrayList<>(); + } + + @Override + public void processCommand(ICommandSender sender, String[] args) throws CommandException { + if (args.length == 0) { + Minecraft.getMinecraft().thePlayer.sendChatMessage("/pets"); + slot = 0; + openWardrobe = true; + } else { + if (isNumeric(args[0])) { + Minecraft.getMinecraft().thePlayer.sendChatMessage("/pets"); + openWardrobe = true; + slot = Integer.parseInt(args[0]); + } else { + Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText("§cInvalid Arguments.")); + return; + } + } + } + + @Override + public boolean canCommandSenderUseCommand(ICommandSender sender) { + return true; + } + + @Override + public List addTabCompletionOptions(ICommandSender sender, String[] args, BlockPos pos) { + return new ArrayList<>(); + } + + @Override + public boolean isUsernameIndex(String[] args, int index) { + return false; + } + + private boolean isNumeric(String str) { + try { + Double.parseDouble(str); + return true; + } catch (NumberFormatException e) { + return false; + } + } + + @Override + public int compareTo(@NotNull ICommand o) { + return 0; + } +} diff --git a/src/main/java/rosegoldaddons/commands/UseCooldown.java b/src/main/java/rosegoldaddons/commands/UseCooldown.java new file mode 100644 index 0000000..912c75a --- /dev/null +++ b/src/main/java/rosegoldaddons/commands/UseCooldown.java @@ -0,0 +1,90 @@ +package rosegoldaddons.commands; + +import net.minecraft.client.Minecraft; +import net.minecraft.command.CommandException; +import net.minecraft.command.ICommand; +import net.minecraft.command.ICommandSender; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.util.BlockPos; +import net.minecraft.util.ChatComponentText; +import org.jetbrains.annotations.NotNull; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +public class UseCooldown implements ICommand { + public static HashMap items = new HashMap(); + + @Override + public String getCommandName() { + return "usecooldown"; + } + + @Override + public String getCommandUsage(ICommandSender sender) { + return "/" + getCommandName(); + } + + @Override + public List getCommandAliases() { + return new ArrayList<>(); + } + + @Override + public void processCommand(ICommandSender sender, String[] args) throws CommandException { + if (args.length == 1 && isNumeric(args[0])) { + InventoryPlayer inv = Minecraft.getMinecraft().thePlayer.inventory; + + ItemStack curStack = inv.getStackInSlot(Minecraft.getMinecraft().thePlayer.inventory.currentItem); + if (curStack != null) { + int cd = Integer.parseInt(args[0]); + if (cd == 0) { + items.remove(curStack.getDisplayName()); + Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText("§aSuccessfully Removed " + curStack.getDisplayName() + "§a.")); + return; + } + if (cd < 1) { + Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText("§cInvalid Miliseconds, Minimum delay 1 Milisecond.")); + return; + } + Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText("§aSuccessfully Added " + curStack.getDisplayName() + "§a with delay of " + cd + " ms.")); + items.put(curStack.getDisplayName(), cd); + } else { + Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText("§cError getting current held item.")); + } + } else { + Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText("§cInvalid Arguments.")); + } + } + + @Override + public boolean canCommandSenderUseCommand(ICommandSender sender) { + return true; + } + + @Override + public List addTabCompletionOptions(ICommandSender sender, String[] args, BlockPos pos) { + return new ArrayList<>(); + } + + @Override + public boolean isUsernameIndex(String[] args, int index) { + return false; + } + + private boolean isNumeric(String str) { + try { + Double.parseDouble(str); + return true; + } catch (NumberFormatException e) { + return false; + } + } + + @Override + public int compareTo(@NotNull ICommand o) { + return 0; + } +} diff --git a/src/main/java/rosegoldaddons/commands/WartSetup.java b/src/main/java/rosegoldaddons/commands/WartSetup.java new file mode 100644 index 0000000..a5cca13 --- /dev/null +++ b/src/main/java/rosegoldaddons/commands/WartSetup.java @@ -0,0 +1,82 @@ +package rosegoldaddons.commands; + +import net.minecraft.client.Minecraft; +import net.minecraft.command.CommandException; +import net.minecraft.command.ICommand; +import net.minecraft.command.ICommandSender; +import net.minecraft.util.BlockPos; +import net.minecraft.util.ChatComponentText; +import org.jetbrains.annotations.NotNull; + +import java.util.ArrayList; +import java.util.List; + +public class WartSetup implements ICommand { + public static int wartEnd = 99999; + public static String cardinal = "west"; + + @Override + public String getCommandName() { + return "wartsetup"; + } + + @Override + public String getCommandUsage(ICommandSender sender) { + return "/" + getCommandName(); + } + + @Override + public List getCommandAliases() { + return new ArrayList<>(); + } + + @Override + public void processCommand(ICommandSender sender, String[] args) throws CommandException { + if(args.length == 2) { + if(args[0].equals("west")) { + cardinal = "west"; + } else if(args[0].equals("north")) { + cardinal = "north"; + } else if(args[0].equals("east")) { + cardinal = "east"; + } else if(args[0].equals("south")) { + cardinal = "south"; + } + + if(isNumeric(args[1])) { + wartEnd = (int) Math.floor(Double.parseDouble(args[1])); + } + } else { + Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText("§cInvalid Arguments.")); + } + } + + @Override + public boolean canCommandSenderUseCommand(ICommandSender sender) { + return true; + } + + @Override + public List addTabCompletionOptions(ICommandSender sender, String[] args, BlockPos pos) { + return new ArrayList<>(); + } + + @Override + public boolean isUsernameIndex(String[] args, int index) { + return false; + } + + @Override + public int compareTo(@NotNull ICommand o) { + return 0; + } + + private boolean isNumeric(String str) { + try { + Double.parseDouble(str); + return true; + } catch (NumberFormatException e) { + return false; + } + } +} diff --git a/src/main/java/rosegoldaddons/events/ReceivePacketEvent.java b/src/main/java/rosegoldaddons/events/ReceivePacketEvent.java new file mode 100644 index 0000000..e658a1e --- /dev/null +++ b/src/main/java/rosegoldaddons/events/ReceivePacketEvent.java @@ -0,0 +1,16 @@ +package rosegoldaddons.events; + +import net.minecraft.network.Packet; +import net.minecraftforge.fml.common.eventhandler.Cancelable; +import net.minecraftforge.fml.common.eventhandler.Event; + +@Cancelable +public class ReceivePacketEvent extends Event { + + public Packet packet; + + public ReceivePacketEvent(Packet packet) { + this.packet = packet; + } + +} diff --git a/src/main/java/rosegoldaddons/events/RenderLivingEntityEvent.java b/src/main/java/rosegoldaddons/events/RenderLivingEntityEvent.java new file mode 100644 index 0000000..8a6c9ed --- /dev/null +++ b/src/main/java/rosegoldaddons/events/RenderLivingEntityEvent.java @@ -0,0 +1,26 @@ +package rosegoldaddons.events; + +import net.minecraft.client.model.ModelBase; +import net.minecraft.entity.EntityLivingBase; +import net.minecraftforge.fml.common.eventhandler.Cancelable; +import net.minecraftforge.fml.common.eventhandler.Event; + +@Cancelable +public class RenderLivingEntityEvent extends Event { + + public EntityLivingBase entity; + public float p_77036_2_, p_77036_3_, p_77036_4_, p_77036_5_, p_77036_6_, scaleFactor; + public ModelBase modelBase; + + public RenderLivingEntityEvent(EntityLivingBase entity, float p_77036_2_, float p_77036_3_, float p_77036_4_, float p_77036_5_, float p_77036_6_, float scaleFactor, ModelBase modelBase) { + this.entity = entity; + this.p_77036_2_ = p_77036_2_; + this.p_77036_3_ = p_77036_3_; + this.p_77036_4_ = p_77036_4_; + this.p_77036_5_ = p_77036_5_; + this.p_77036_6_ = p_77036_6_; + this.scaleFactor = scaleFactor; + this.modelBase = modelBase; + } + +} \ No newline at end of file diff --git a/src/main/java/rosegoldaddons/features/AutoReady.java b/src/main/java/rosegoldaddons/features/AutoReady.java new file mode 100644 index 0000000..12089a1 --- /dev/null +++ b/src/main/java/rosegoldaddons/features/AutoReady.java @@ -0,0 +1,122 @@ +package rosegoldaddons.features; + +import com.mojang.realmsclient.gui.ChatFormatting; + +import java.awt.Color; +import java.util.List; +import java.util.Locale; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.entity.EntityPlayerSP; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.client.gui.inventory.GuiChest; +import net.minecraft.client.network.NetHandlerPlayClient; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.ContainerChest; +import net.minecraft.inventory.Slot; +import net.minecraft.network.play.server.S45PacketTitle; +import net.minecraft.potion.Potion; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.IChatComponent; +import net.minecraft.util.StringUtils; +import net.minecraftforge.client.event.ClientChatReceivedEvent; +import net.minecraftforge.client.event.GuiScreenEvent; +import net.minecraftforge.client.event.RenderWorldLastEvent; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; +import rosegoldaddons.Config; +import rosegoldaddons.Main; +import rosegoldaddons.events.RenderLivingEntityEvent; +import rosegoldaddons.utils.OutlineUtils; +import net.minecraft.network.play.client.C02PacketUseEntity; +import net.minecraft.client.multiplayer.PlayerControllerMP; +import scala.collection.parallel.ParIterableLike; + +public class AutoReady { + boolean startDung = false; + boolean checkingEntities = false; + String currentMenu = ""; + static int windowId; + + private double getDist2Entities(Entity entity1, Entity entity2) { + return Math.sqrt(Math.pow((entity1.getPosition().getX() - entity2.getPosition().getX()), 2) + Math.pow((entity1.getPosition().getY() - entity2.getPosition().getY()), 2) + Math.pow((entity1.getPosition().getZ() - entity2.getPosition().getZ()), 2)); + } + + private static void interactWithEntity(Entity entity) { + PlayerControllerMP playerControllerMP = Minecraft.getMinecraft().playerController; + playerControllerMP.interactWithEntitySendPacket(Minecraft.getMinecraft().thePlayer, entity); + } + + @SubscribeEvent + public void renderWorld(RenderWorldLastEvent event) { + if (!Main.configFile.AutoReady || !startDung || checkingEntities) return; + new Thread(() -> { + try { + checkingEntities = true; + Thread.sleep(500); + Entity mort = null; + for (Entity entity1 : (Minecraft.getMinecraft().theWorld.loadedEntityList)) { + if (entity1.getName().contains("Mort")) { + mort = entity1; + interactWithEntity(mort); + startDung = false; + break; + } + } + checkingEntities = false; + } catch (Exception e) {} + }).start(); + } + + @SubscribeEvent + public void chat(ClientChatReceivedEvent event) { + if (!Main.configFile.AutoReady) return; + String message = StringUtils.stripControlCodes(event.message.getUnformattedText()).toLowerCase(); + if (message.contains("active potion effects have been paused")) { + startDung = true; + } + } + + @SubscribeEvent + public void guiDraw(GuiScreenEvent.BackgroundDrawnEvent event) { + if (!Main.configFile.AutoReady) return; + if (event.gui instanceof GuiChest) { + Container container = ((GuiChest) event.gui).inventorySlots; + if (container instanceof ContainerChest) { + String chestName = ((ContainerChest) container).getLowerChestInventory().getDisplayName().getUnformattedText(); + List invSlots = container.inventorySlots; + //Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText(chestName)); + if (chestName.contains("Start Dungeon?")) { + int i; + for(i = 0; i < invSlots.size(); i++) { + if(!invSlots.get(i).getHasStack()) continue; + String slotName = StringUtils.stripControlCodes(invSlots.get(i).getStack().getDisplayName()); + if(slotName.equals("Start Dungeon?")) { + clickSlot(invSlots.get(i)); + } + } + } else if (chestName.contains("Catacombs -")) { + int i; + for(i = 0; i < invSlots.size(); i++) { + if(!invSlots.get(i).getHasStack()) continue; + String slotName = StringUtils.stripControlCodes(invSlots.get(i).getStack().getDisplayName()); + if(slotName.contains(Minecraft.getMinecraft().thePlayer.getName())) { + i += 9; + if(invSlots.get(i).getHasStack()) { + if (StringUtils.stripControlCodes(invSlots.get(i).getStack().getDisplayName()).equals("Not Ready")) { + clickSlot(invSlots.get(i)); + } + } + } + } + } + } + } + } + + private void clickSlot(Slot slot) { + windowId = Minecraft.getMinecraft().thePlayer.openContainer.windowId; + Minecraft.getMinecraft().playerController.windowClick(windowId, slot.slotNumber, 1, 0, Minecraft.getMinecraft().thePlayer); + } +} diff --git a/src/main/java/rosegoldaddons/features/BlockBreakAura.java b/src/main/java/rosegoldaddons/features/BlockBreakAura.java new file mode 100644 index 0000000..e8b7219 --- /dev/null +++ b/src/main/java/rosegoldaddons/features/BlockBreakAura.java @@ -0,0 +1,98 @@ +package rosegoldaddons.features; + +import net.minecraft.block.Block; +import net.minecraft.block.state.IBlockState; +import net.minecraft.client.Minecraft; +import net.minecraft.client.multiplayer.PlayerControllerMP; +import net.minecraft.client.settings.KeyBinding; +import net.minecraft.init.Blocks; +import net.minecraft.network.play.client.C07PacketPlayerDigging; +import net.minecraft.util.*; +import net.minecraftforge.client.event.RenderWorldLastEvent; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; +import net.minecraftforge.fml.common.gameevent.TickEvent; +import rosegoldaddons.Main; +import rosegoldaddons.utils.RenderUtils; +import rosegoldaddons.utils.RotationUtils; + +import java.awt.*; +import java.lang.reflect.Method; +import java.util.ArrayList; + +public class BlockBreakAura { + BlockPos gem = null; + private Thread thread; + private boolean breaking = false; + + @SubscribeEvent + public void onTick(TickEvent.ClientTickEvent event) { + if(!Main.gemNukeToggle) { + if(breaking) { + KeyBinding.setKeyBindState(Minecraft.getMinecraft().gameSettings.keyBindAttack.getKeyCode(), false); + breaking = false; + } + return; + } + if(event.phase.toString().equals("START") && gem != null) { + RotationUtils.facePos(new Vec3(gem.getX()+0.5, gem.getY()-1, gem.getZ()+0.5)); + MovingObjectPosition objectMouseOver = Minecraft.getMinecraft().objectMouseOver; + if(objectMouseOver != null && objectMouseOver.typeOfHit.toString() == "BLOCK") { + BlockPos pos = objectMouseOver.getBlockPos(); + Block gem = Minecraft.getMinecraft().theWorld.getBlockState(pos).getBlock(); + if(gem == Blocks.stained_glass || gem == Blocks.stained_glass_pane) { + if(!breaking) { + KeyBinding.setKeyBindState(Minecraft.getMinecraft().gameSettings.keyBindAttack.getKeyCode(), true); + breaking = true; + } + } else { + if(breaking) { + KeyBinding.setKeyBindState(Minecraft.getMinecraft().gameSettings.keyBindAttack.getKeyCode(), false); + breaking = false; + } + } + + } + } + } + + @SubscribeEvent + public void renderWorld(RenderWorldLastEvent event) { + if(!Main.gemNukeToggle) return; + gem = closestGemstone(); + if (gem != null) { + RenderUtils.drawBlockBox(gem, Color.RED, true, event.partialTicks); + } + } + + private BlockPos closestGemstone() { + int r = 4; + BlockPos playerPos = Minecraft.getMinecraft().thePlayer.getPosition(); + playerPos.add(0, 1, 0); + Vec3 playerVec = Minecraft.getMinecraft().thePlayer.getPositionVector(); + Vec3i vec3i = new Vec3i(r, r, r); + ArrayList chests = new ArrayList(); + if (playerPos != null) { + for (BlockPos blockPos : BlockPos.getAllInBox(playerPos.add(vec3i), playerPos.subtract(vec3i))) { + IBlockState blockState = Minecraft.getMinecraft().theWorld.getBlockState(blockPos); + //Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText(blockState.getBlock().toString())); + if (blockState.getBlock() == Blocks.stained_glass) { + chests.add(new Vec3(blockPos.getX() + 0.5, blockPos.getY(), blockPos.getZ() + 0.5)); + } + } + } + double smallest = 9999; + Vec3 closest = null; + for (int i = 0; i < chests.size(); i++) { + double dist = chests.get(i).distanceTo(playerVec); + if (dist < smallest) { + smallest = dist; + closest = chests.get(i); + } + } + if (closest != null && smallest < 4) { + return new BlockPos(closest.xCoord, closest.yCoord, closest.zCoord); + } + return null; + } + +} diff --git a/src/main/java/rosegoldaddons/features/CustomItemMacro.java b/src/main/java/rosegoldaddons/features/CustomItemMacro.java new file mode 100644 index 0000000..57c650f --- /dev/null +++ b/src/main/java/rosegoldaddons/features/CustomItemMacro.java @@ -0,0 +1,77 @@ +package rosegoldaddons.features; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.settings.KeyBinding; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ChatComponentText; +import net.minecraftforge.client.event.RenderWorldLastEvent; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; +import net.minecraftforge.fml.common.gameevent.TickEvent; +import rosegoldaddons.Main; +import rosegoldaddons.commands.UseCooldown; +import rosegoldaddons.commands.WartSetup; + +import java.lang.reflect.Method; + +public class CustomItemMacro { + private Thread thread; + private int milis = 0; + + @SubscribeEvent + public void onRender(RenderWorldLastEvent event) { + if (!Main.autoUseItems) return; + if (thread == null || !thread.isAlive()) { + thread = new Thread(() -> { + try { + milis++; + int prevItem = Minecraft.getMinecraft().thePlayer.inventory.currentItem; + for (String i : UseCooldown.items.keySet()) { + //Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText(Math.floor(UseCooldown.items.get(i)/1000) + " " + milis)); + if (milis % Math.floor(UseCooldown.items.get(i)/100) == 0) { + int slot = findItemInHotbar(i); + if (slot != -1) { + Minecraft.getMinecraft().thePlayer.inventory.currentItem = slot; + rightClick(); + Thread.sleep(1); + } + } + } + Minecraft.getMinecraft().thePlayer.inventory.currentItem = prevItem; + Thread.sleep(100); + } catch (Exception e) { + e.printStackTrace(); + } + }, "Custom Item Use"); + thread.start(); + } + } + + public static void rightClick() { + try { + Method rightClickMouse = null; + try { + rightClickMouse = Minecraft.class.getDeclaredMethod("rightClickMouse"); + } catch (NoSuchMethodException e) { + rightClickMouse = Minecraft.class.getDeclaredMethod("func_147121_ag"); + } + rightClickMouse.setAccessible(true); + rightClickMouse.invoke(Minecraft.getMinecraft()); + } catch (Exception e) { + e.printStackTrace(); + } + } + + private static int findItemInHotbar(String name) { + InventoryPlayer inv = Minecraft.getMinecraft().thePlayer.inventory; + for (int i = 0; i < 9; i++) { + ItemStack curStack = inv.getStackInSlot(i); + if (curStack != null) { + if (curStack.getDisplayName().contains(name)) { + return i; + } + } + } + return -1; + } +} diff --git a/src/main/java/rosegoldaddons/features/EndermanMacro.java b/src/main/java/rosegoldaddons/features/EndermanMacro.java new file mode 100644 index 0000000..fb31a0b --- /dev/null +++ b/src/main/java/rosegoldaddons/features/EndermanMacro.java @@ -0,0 +1,63 @@ +package rosegoldaddons.features; + +import net.minecraft.client.Minecraft; +import net.minecraft.entity.Entity; +import net.minecraft.entity.monster.EntityCreeper; +import net.minecraft.entity.monster.EntityEnderman; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.IChatComponent; +import net.minecraftforge.client.event.RenderWorldEvent; +import net.minecraftforge.client.event.RenderWorldLastEvent; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; +import rosegoldaddons.Main; +import rosegoldaddons.events.RenderLivingEntityEvent; +import rosegoldaddons.utils.OutlineUtils; +import rosegoldaddons.utils.RenderUtils; +import rosegoldaddons.utils.RotationUtils; + +import java.awt.*; +import java.util.HashSet; +import java.util.Random; + +public class EndermanMacro { + + @SubscribeEvent + public void renderWorld(RenderWorldLastEvent event) { + if (Main.endermanMacro) { + Entity entity1 = getClosestEnderman(); + if(entity1 == null) return; + RenderUtils.drawEntityBox(entity1, Color.RED, true, event.partialTicks); + RotationUtils.faceEntity(entity1); + Random r = new Random(); + if(r.nextInt(1000) == 1) { + RotationUtils.antiAfk(); + } + } else if (Main.configFile.EndermanESP) { + for (Entity entity1 : (Minecraft.getMinecraft().theWorld.loadedEntityList)) { + if (entity1 instanceof EntityEnderman) { + RenderUtils.drawEntityBox(entity1, Color.RED, true, event.partialTicks); + } + } + } + } + + private static Entity getClosestEnderman() { + Entity eman = null; + Double closest = Double.valueOf(9999); + for (Entity entity1 : (Minecraft.getMinecraft().theWorld.loadedEntityList)) { + if (entity1 instanceof EntityEnderman && !(((EntityEnderman) entity1).getHealth() == 0)) { +