aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/rosegoldaddons/Config.java52
-rw-r--r--src/main/java/rosegoldaddons/FMLLoadingPlugin.java45
-rw-r--r--src/main/java/rosegoldaddons/Main.java159
-rw-r--r--src/main/java/rosegoldaddons/OpenSettings.java57
-rw-r--r--src/main/java/rosegoldaddons/commands/Backpack.java87
-rw-r--r--src/main/java/rosegoldaddons/commands/LobbySwap.java57
-rw-r--r--src/main/java/rosegoldaddons/commands/Rosedrobe.java90
-rw-r--r--src/main/java/rosegoldaddons/commands/UseCooldown.java90
-rw-r--r--src/main/java/rosegoldaddons/commands/WartSetup.java82
-rw-r--r--src/main/java/rosegoldaddons/events/ReceivePacketEvent.java16
-rw-r--r--src/main/java/rosegoldaddons/events/RenderLivingEntityEvent.java26
-rw-r--r--src/main/java/rosegoldaddons/features/AutoReady.java122
-rw-r--r--src/main/java/rosegoldaddons/features/BlockBreakAura.java98
-rw-r--r--src/main/java/rosegoldaddons/features/CustomItemMacro.java77
-rw-r--r--src/main/java/rosegoldaddons/features/EndermanMacro.java63
-rw-r--r--src/main/java/rosegoldaddons/features/GhostMacro.java51
-rw-r--r--src/main/java/rosegoldaddons/features/HardstoneMacro.java201
-rw-r--r--src/main/java/rosegoldaddons/features/ItemFrameAura.java413
-rw-r--r--src/main/java/rosegoldaddons/features/PartyUntransfer.java34
-rw-r--r--src/main/java/rosegoldaddons/features/PowderMacro.java98
-rw-r--r--src/main/java/rosegoldaddons/features/SwordSwapping.java106
-rw-r--r--src/main/java/rosegoldaddons/features/WartMacro.java146
-rw-r--r--src/main/java/rosegoldaddons/mixins/MixinNetworkManager.java20
-rw-r--r--src/main/java/rosegoldaddons/mixins/MixinRendererLivingEntity.java28
-rw-r--r--src/main/java/rosegoldaddons/utils/OpenSkyblockGui.java154
-rw-r--r--src/main/java/rosegoldaddons/utils/OutlineUtils.java152
-rw-r--r--src/main/java/rosegoldaddons/utils/RenderUtils.java682
-rw-r--r--src/main/java/rosegoldaddons/utils/RotationUtils.java110
28 files changed, 3316 insertions, 0 deletions
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<String, Object> 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<String> 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<String> 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<String> 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<String> 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<String> 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<String> 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<String> 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<String> 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<String, Integer> items = new HashMap<String, Integer>();
+
+ @Override
+ public String getCommandName() {
+ return "usecooldown";
+ }
+
+ @Override
+ public String getCommandUsage(ICommandSender sender) {
+ return "/" + getCommandName();
+ }
+
+ @Override
+ public List<String> 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<String> 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<String> 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<String> 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.