aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md1
-rw-r--r--src/main/java/me/Danker/TheMod.java123
-rw-r--r--src/main/java/me/Danker/commands/DHelpCommand.java2
-rw-r--r--src/main/java/me/Danker/commands/ToggleCommand.java31
-rw-r--r--src/main/java/me/Danker/gui/DankerGui.java35
-rw-r--r--src/main/java/me/Danker/gui/PuzzleSolversGui.java68
-rw-r--r--src/main/java/me/Danker/handlers/ConfigHandler.java8
-rw-r--r--src/main/java/me/Danker/utils/Utils.java98
8 files changed, 343 insertions, 23 deletions
diff --git a/README.md b/README.md
index a8fe6b7..3169eb0 100644
--- a/README.md
+++ b/README.md
@@ -22,6 +22,7 @@ Discord Server: https://discord.gg/QsEkNQS
- Fishing tracker (with graphic display) (scalable)
- Expertise kills in fishing rod lore
- Dungeons tracker (with graphic display) (scalable)
+- Dungeons puzzle solver (Riddle, trivia, blaze) (toggleable)
- Pet background colors based on level
- Golem spawning alerts (toggleable)
- Show total skill xp instead of progress to next level
diff --git a/src/main/java/me/Danker/TheMod.java b/src/main/java/me/Danker/TheMod.java
index abe5e7a..f5f508a 100644
--- a/src/main/java/me/Danker/TheMod.java
+++ b/src/main/java/me/Danker/TheMod.java
@@ -43,6 +43,7 @@ import me.Danker.gui.DankerGui;
import me.Danker.gui.DisplayGui;
import me.Danker.gui.EditLocationsGui;
import me.Danker.gui.OnlySlayerGui;
+import me.Danker.gui.PuzzleSolversGui;
import me.Danker.handlers.APIHandler;
import me.Danker.handlers.ConfigHandler;
import me.Danker.handlers.PacketHandler;
@@ -53,6 +54,7 @@ import net.minecraft.client.Minecraft;
import net.minecraft.client.entity.EntityPlayerSP;
import net.minecraft.client.gui.inventory.GuiChest;
import net.minecraft.client.settings.KeyBinding;
+import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.event.ClickEvent;
import net.minecraft.event.ClickEvent.Action;
@@ -62,6 +64,8 @@ import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.util.AxisAlignedBB;
+import net.minecraft.util.BlockPos;
import net.minecraft.util.ChatComponentText;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.IChatComponent;
@@ -70,6 +74,7 @@ import net.minecraftforge.client.ClientCommandHandler;
import net.minecraftforge.client.event.ClientChatReceivedEvent;
import net.minecraftforge.client.event.GuiScreenEvent;
import net.minecraftforge.client.event.RenderGameOverlayEvent;
+import net.minecraftforge.client.event.RenderWorldLastEvent;
import net.minecraftforge.client.event.sound.PlaySoundEvent;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.entity.EntityJoinWorldEvent;
@@ -113,6 +118,12 @@ public class TheMod
static int lastMouse = -1;
static boolean usingLabymod = false;
public static String guiToOpen = null;
+ static String[] riddleSolutions = {"The reward is not in my chest!", "At least one of them is lying, and the reward is not in",
+ "My chest doesn't have the reward. We are all telling the truth", "My chest has the reward and I'm telling the truth",
+ "The reward isn't in any of our chests", "Both of them are telling the truth."};
+ static Map<String, String> triviaSolutions = new HashMap<String, String>();
+ Entity highestBlaze = null;
+ Entity lowestBlaze = null;
static double dungeonStartTime = 0;
static double bloodOpenTime = 0;
@@ -165,6 +176,40 @@ public class TheMod
t6Enchants.put("9Thunderlord VI", "6Thunderlord VI");
t6Enchants.put("9Vampirism VI", "6Vampirism VI");
+ triviaSolutions.put("What is the status of The Watcher?", "Stalker");
+ triviaSolutions.put("What is the status of Bonzo?", "New Necromancer");
+ triviaSolutions.put("What is the status of Scarf?", "Apprentice Necromancer");
+ triviaSolutions.put("What is the status of The Professor?", "Professor");
+ triviaSolutions.put("What is the status of Thorn?", "Shaman Necromancer");
+ triviaSolutions.put("What is the status of Livid?", "Master Necromancer");
+ triviaSolutions.put("What is the status of Sadan?", "Necromancer Lord");
+ triviaSolutions.put("What is the status of Maxor?", "Young Wither");
+ triviaSolutions.put("What is the status of Goldor?", "Wither Soldier");
+ triviaSolutions.put("What is the status of Storm?", "Elementalist");
+ triviaSolutions.put("What is the status of Necron?", "Wither Lord");
+ triviaSolutions.put("How many total Fairy Souls are there?", "209 Fairy Souls");
+ triviaSolutions.put("How many Fairy Souls are there in Spider's Den?", "17 Fairy Souls");
+ triviaSolutions.put("How many Fairy Souls are there in The End?", "12 Fairy Souls");
+ triviaSolutions.put("How many Fairy Souls are there in The Barn?", "7 Fairy Souls");
+ triviaSolutions.put("How many Fairy Souls are there in Mushroom Desert?", "8 Fairy Souls");
+ triviaSolutions.put("How many Fairy Souls are there in Blazing Fortress?", "19 Fairy Souls");
+ triviaSolutions.put("How many Fairy Souls are there in The Park?", "11 Fairy Souls");
+ triviaSolutions.put("How many Fairy Souls are there in Jerry's Workshop?", "5 Fairy Souls");
+ triviaSolutions.put("How many Fairy Souls are there in The Hub?", "79 Fairy Souls");
+ triviaSolutions.put("How many Fairy Souls are there in Deep Caverns?", "21 Fairy Souls");
+ triviaSolutions.put("How many Fairy Souls are there in Gold Mine?", "12 Fairy Souls");
+ triviaSolutions.put("How many Fairy Souls are there in Dungeon Hub?", "7 Fairy Souls");
+ triviaSolutions.put("Which brother is on the Spider's Den?", "Rick");
+ triviaSolutions.put("What is the name of Rick's brother?", "Pat");
+ triviaSolutions.put("What is the name of the Painter in the Hub?", "Marco");
+ triviaSolutions.put("What is the name of the person that upgrades pets?", "Kat");
+ triviaSolutions.put("What is the name of the lady of the Nether?", "Elle");
+ triviaSolutions.put("Which villager in the Village gives you a Rogue Sword?", "Jamie");
+ triviaSolutions.put("How many unique minions are there?", "52 Minions");
+ triviaSolutions.put("Which of these enemies does not spawn in the Spider's Den?", "Zombie Spider OR Cave Spider OR Broodfather");
+ triviaSolutions.put("Which of these monsters only spawns at night?", "Zombie Villager OR Ghast");
+ triviaSolutions.put("Which of these is not a dragon in The End?", "Zoomer Dragon OR Weak Dragon OR Stonk Dragon OR Holy Dragon OR Boomer Dragon");
+
String patternString = "(" + String.join("|", t6Enchants.keySet()) + ")";
pattern = Pattern.compile(patternString);
@@ -282,6 +327,16 @@ public class TheMod
}
// Dungeon chat spoken by an NPC, containing :
+ if (ToggleCommand.threeManToggled && message.contains("[NPC]")) {
+ for (String solution : riddleSolutions) {
+ if (message.contains(solution)) {
+ String npcName = message.substring(message.indexOf("]") + 2, message.indexOf(":"));
+ Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText(EnumChatFormatting.DARK_GREEN + "" + EnumChatFormatting.BOLD + npcName + EnumChatFormatting.GREEN + " has the blessing."));
+ break;
+ }
+ }
+ }
+
if (message.contains("[BOSS] The Watcher: You have proven yourself. You may pass.")) {
watcherClearTime = System.currentTimeMillis() / 1000;
}
@@ -291,6 +346,15 @@ public class TheMod
if (message.contains(":")) return;
+ if (ToggleCommand.oruoToggled) {
+ for (String question : triviaSolutions.keySet()) {
+ if (message.contains(question)) {
+ Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText(EnumChatFormatting.GREEN + "Answer: " + EnumChatFormatting.DARK_GREEN + EnumChatFormatting.BOLD + triviaSolutions.get(question)));
+ break;
+ }
+ }
+ }
+
if (tc.gpartyToggled) {
if (message.contains(" has invited all members of ")) {
try {
@@ -1817,14 +1881,15 @@ public class TheMod
@SubscribeEvent
public void onTick(TickEvent.ClientTickEvent event) {
- // Check if player is in Skyblock every second
+ Minecraft mc = Minecraft.getMinecraft();
+ EntityPlayerSP player = mc.thePlayer;
+
+ // Checks every second
tickAmount++;
if (tickAmount % 20 == 0) {
- Minecraft mc = Minecraft.getMinecraft();
- EntityPlayerSP player = mc.thePlayer;
-
if (player != null) {
Utils.checkForSkyblock();
+ Utils.checkForDungeons();
}
if (DisplayCommand.auto && mc != null && mc.theWorld != null) {
@@ -1865,6 +1930,36 @@ public class TheMod
tickAmount = 0;
}
+ // Checks 5 times per second
+ if (tickAmount % 4 == 0) {
+ if (ToggleCommand.blazeToggled && Utils.inDungeons) {
+ List<Entity> entities = mc.theWorld.getLoadedEntityList();
+ int highestHealth = 0;
+ highestBlaze = null;
+ int lowestHealth = 99999999;
+ lowestBlaze = null;
+
+ for (Entity entity : entities) {
+ if (entity.getName().contains("Blaze") && entity.getName().contains("/")) {
+ String blazeName = StringUtils.stripControlCodes(entity.getName());
+ try {
+ int health = Integer.parseInt(blazeName.substring(blazeName.indexOf("/") + 1, blazeName.length() - 2));
+ if (health > highestHealth) {
+ highestHealth = health;
+ highestBlaze = entity;
+ }
+ if (health < lowestHealth) {
+ lowestHealth = health;
+ lowestBlaze = entity;
+ }
+ } catch (NumberFormatException ex) {
+ System.err.println(ex);
+ }
+ }
+ }
+ }
+ }
+
if (titleTimer >= 0) {
if (titleTimer == 0) {
showTitle = false;
@@ -1893,12 +1988,32 @@ public class TheMod
mc.displayGuiScreen(new OnlySlayerGui());
} else if (guiToOpen.equals("editlocations")) {
mc.displayGuiScreen(new EditLocationsGui());
+ } else if (guiToOpen.equals("puzzlesolvers")) {
+ mc.displayGuiScreen(new PuzzleSolversGui());
}
guiToOpen = null;
}
}
@SubscribeEvent
+ public void onWorldRender(RenderWorldLastEvent event) {
+ if (ToggleCommand.blazeToggled) {
+ if (lowestBlaze != null) {
+ BlockPos stringPos = new BlockPos(lowestBlaze.posX, lowestBlaze.posY + 1, lowestBlaze.posZ);
+ Utils.draw3DString(stringPos, EnumChatFormatting.BOLD + "Smallest", 0xFF0000, event.partialTicks);
+ AxisAlignedBB aabb = new AxisAlignedBB(lowestBlaze.posX - 0.5, lowestBlaze.posY - 2, lowestBlaze.posZ - 0.5, lowestBlaze.posX + 0.5, lowestBlaze.posY, lowestBlaze.posZ + 0.5);
+ Utils.draw3DBox(aabb, 0xFF, 0x00, 0x00, 0xFF, event.partialTicks);
+ }
+ if (highestBlaze != null) {
+ BlockPos stringPos = new BlockPos(highestBlaze.posX, highestBlaze.posY + 1, highestBlaze.posZ);
+ Utils.draw3DString(stringPos, EnumChatFormatting.BOLD + "Biggest", 0x40FF40, event.partialTicks);
+ AxisAlignedBB aabb = new AxisAlignedBB(highestBlaze.posX - 0.5, highestBlaze.posY - 2, highestBlaze.posZ - 0.5, highestBlaze.posX + 0.5, highestBlaze.posY, highestBlaze.posZ + 0.5);
+ Utils.draw3DBox(aabb, 0x00, 0xFF, 0x00, 0xFF, event.partialTicks);
+ }
+ }
+ }
+
+ @SubscribeEvent
public void onInteract(PlayerInteractEvent event) {
if (!Utils.inSkyblock || Minecraft.getMinecraft().thePlayer != event.entityPlayer) return;
ItemStack item = event.entityPlayer.getHeldItem();
diff --git a/src/main/java/me/Danker/commands/DHelpCommand.java b/src/main/java/me/Danker/commands/DHelpCommand.java
index 03aa318..1ed931f 100644
--- a/src/main/java/me/Danker/commands/DHelpCommand.java
+++ b/src/main/java/me/Danker/commands/DHelpCommand.java
@@ -34,7 +34,7 @@ public class DHelpCommand extends CommandBase {
EnumChatFormatting.GOLD + " Commands, " + EnumChatFormatting.GREEN + " Keybinds.\n" +
EnumChatFormatting.GOLD + " /dhelp" + EnumChatFormatting.AQUA + " - Returns this message.\n" +
EnumChatFormatting.GOLD + " /dsm" + EnumChatFormatting.AQUA + " - Opens the GUI for Danker's Skyblock Mod.\n" +
- EnumChatFormatting.GOLD + " /toggle <gparty/coords/golden/slayercount/rngesusalerts/splitfishing/chatmaddox/spiritbearalerts/aotd/lividdagger/sceptremessages/petcolors/dungeontimer/golemalerts/expertiselore/skill50display/outlinetext/list>" + EnumChatFormatting.AQUA + " - Toggles features. /toggle list returns values of every toggle.\n" +
+ EnumChatFormatting.GOLD + " /toggle <gparty/coords/golden/slayercount/rngesusalerts/splitfishing/chatmaddox/spiritbearalerts/aotd/lividdagger/sceptremessages/petcolors/dungeontimer/golemalerts/expertiselore/skill50display/outlinetext/threemanpuzzle/oruopuzzle/blazepuzzle/list>" + EnumChatFormatting.AQUA + " - Toggles features. /toggle list returns values of every toggle.\n" +
EnumChatFormatting.GOLD + " /setkey <key>" + EnumChatFormatting.AQUA + " - Sets API key.\n" +
EnumChatFormatting.GOLD + " /getkey" + EnumChatFormatting.AQUA + " - Returns key set with /setkey and copies it to your clipboard.\n" +
EnumChatFormatting.GOLD + " /loot <zombie/spider/wolf/fishing/catacombs> [winter/f(1-6)/session]" + EnumChatFormatting.AQUA + " - Returns loot received from slayer quests or fishing stats. /loot fishing winter returns winter sea creatures instead.\n" +
diff --git a/src/main/java/me/Danker/commands/ToggleCommand.java b/src/main/java/me/Danker/commands/ToggleCommand.java
index 2835db6..71dc6ac 100644
--- a/src/main/java/me/Danker/commands/ToggleCommand.java
+++ b/src/main/java/me/Danker/commands/ToggleCommand.java
@@ -30,6 +30,10 @@ public class ToggleCommand extends CommandBase implements ICommand {
public static boolean expertiseLoreToggled;
public static boolean skill50DisplayToggled;
public static boolean outlineTextToggled;
+ // Puzzle Solvers
+ public static boolean threeManToggled;
+ public static boolean oruoToggled;
+ public static boolean blazeToggled;
@Override
public String getCommandName() {
@@ -38,7 +42,9 @@ public class ToggleCommand extends CommandBase implements ICommand {
@Override
public String getCommandUsage(ICommandSender arg0) {
- return "/" + getCommandName() + " <gparty/coords/golden/slayercount/rngesusalerts/splitfishing/chatmaddox/spiritbearalert/aotd/lividdagger/sceptremessages/petcolors/dungeontimer/golemalerts/expertiselore/skill50display/outlinetext/list>";
+ return "/" + getCommandName() + " <gparty/coords/golden/slayercount/rngesusalerts/splitfishing/chatmaddox/spiritbearalert/" +
+ "aotd/lividdagger/sceptremessages/petcolors/dungeontimer/golemalerts/expertiselore/skill50display/" +
+ "outlinetext/threemanpuzzle/oruopuzzle/blazepuzzle/list>";
}
@Override
@@ -49,7 +55,11 @@ public class ToggleCommand extends CommandBase implements ICommand {
@Override
public List<String> addTabCompletionOptions(ICommandSender sender, String[] args, BlockPos pos) {
if (args.length == 1) {
- return getListOfStringsMatchingLastWord(args, "gparty", "coords", "golden", "slayercount", "rngesusalerts", "splitfishing", "chatmaddox", "spiritbearalerts", "aotd", "lividdagger", "sceptremessages", "petcolors", "dungeontimer", "golemalerts", "expertiselore", "skill50display", "outlinetext", "list");
+ return getListOfStringsMatchingLastWord(args, "gparty", "coords", "golden", "slayercount", "rngesusalerts",
+ "splitfishing", "chatmaddox", "spiritbearalerts", "aotd", "lividdagger",
+ "sceptremessages", "petcolors", "dungeontimer", "golemalerts",
+ "expertiselore", "skill50display", "outlinetext", "threemanpuzzle",
+ "oruopuzzle", "blazepuzzle", "list");
}
return null;
}
@@ -132,6 +142,18 @@ public class ToggleCommand extends CommandBase implements ICommand {
outlineTextToggled = !outlineTextToggled;
cf.writeBooleanConfig("toggles", "OutlineText", outlineTextToggled);
player.addChatMessage(new ChatComponentText(EnumChatFormatting.GREEN + "Outline displayed text has been set to " + EnumChatFormatting.DARK_GREEN + outlineTextToggled + EnumChatFormatting.GREEN + "."));
+ } else if (arg1[0].equalsIgnoreCase("threemanpuzzle")) {
+ threeManToggled = !threeManToggled;
+ cf.writeBooleanConfig("toggles", "ThreeManPuzzle", threeManToggled);
+ player.addChatMessage(new ChatComponentText(EnumChatFormatting.GREEN + "Three man puzzle solver has been set to " + EnumChatFormatting.DARK_GREEN + threeManToggled + EnumChatFormatting.GREEN + "."));
+ } else if (arg1[0].equalsIgnoreCase("oruopuzzle")) {
+ oruoToggled = !oruoToggled;
+ cf.writeBooleanConfig("toggles", "OruoPuzzle", oruoToggled);
+ player.addChatMessage(new ChatComponentText(EnumChatFormatting.GREEN + "Oruo trivia solver has been set to " + EnumChatFormatting.DARK_GREEN + threeManToggled + EnumChatFormatting.GREEN + "."));
+ } else if (arg1[0].equalsIgnoreCase("blazepuzzle")) {
+ blazeToggled = !blazeToggled;
+ cf.writeBooleanConfig("toggles", "BlazePuzzle", blazeToggled);
+ player.addChatMessage(new ChatComponentText(EnumChatFormatting.GREEN + "Blaze puzzle solver has been set to " + EnumChatFormatting.DARK_GREEN + threeManToggled + EnumChatFormatting.GREEN + "."));
} else if (arg1[0].equalsIgnoreCase("list")) {
player.addChatMessage(new ChatComponentText(EnumChatFormatting.GREEN + "Guild party notifications: " + EnumChatFormatting.DARK_GREEN + gpartyToggled + "\n" +
EnumChatFormatting.GREEN + " Coord/Angle display: " + EnumChatFormatting.DARK_GREEN + coordsToggled + "\n" +
@@ -149,7 +171,10 @@ public class ToggleCommand extends CommandBase implements ICommand {
EnumChatFormatting.GREEN + " Golem spawn alerts: " + EnumChatFormatting.DARK_GREEN + golemAlertToggled + "\n" +
EnumChatFormatting.GREEN + " Expertise in lore: " + EnumChatFormatting.DARK_GREEN + expertiseLoreToggled + "\n" +
EnumChatFormatting.GREEN + " Skill 50 display: " + EnumChatFormatting.DARK_GREEN + skill50DisplayToggled + "\n" +
- EnumChatFormatting.GREEN + " Outline displayed text: " + EnumChatFormatting.DARK_GREEN + outlineTextToggled));
+ EnumChatFormatting.GREEN + " Outline displayed text: " + EnumChatFormatting.DARK_GREEN + outlineTextToggled + "\n" +
+ EnumChatFormatting.GREEN + " Three man puzzle solver: " + EnumChatFormatting.DARK_GREEN + threeManToggled + "\n" +
+ EnumChatFormatting.GREEN + " Oruo trivia solver: " + EnumChatFormatting.DARK_GREEN + oruoToggled + "\n" +
+ EnumChatFormatting.GREEN + " Blaze puzzle solver: " + EnumChatFormatting.DARK_GREEN + blazeToggled));
} else {
player.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "Usage: " + getCommandUsage(arg0)));
}
diff --git a/src/main/java/me/Danker/gui/DankerGui.java b/src/main/java/me/Danker/gui/DankerGui.java
index 0ee10b9..37d1e01 100644
--- a/src/main/java/me/Danker/gui/DankerGui.java
+++ b/src/main/java/me/Danker/gui/DankerGui.java
@@ -26,6 +26,7 @@ public class DankerGui extends GuiScreen {
private GuiButton discordLink;
private GuiButton changeDisplay;
private GuiButton onlySlayer;
+ private GuiButton puzzleSolvers;
// Toggles
private GuiButton gparty;
private GuiButton coords;
@@ -72,44 +73,46 @@ public class DankerGui extends GuiScreen {
// Page 1
changeDisplay = new GuiButton(0, width / 2 - 100, (int) (height * 0.1), "Change Display Settings");
onlySlayer = new GuiButton(0, width / 2 - 100, (int) (height * 0.2), "Set Slayer Quest");
- outlineText = new GuiButton(0, width / 2 - 100, (int) (height * 0.3), "Outline Displayed Text: " + Utils.getColouredBoolean(ToggleCommand.outlineTextToggled));
- gparty = new GuiButton(0, width / 2 - 100, (int) (height * 0.4), "Guild Party Notifications: " + Utils.getColouredBoolean(ToggleCommand.gpartyToggled));
- coords = new GuiButton(0, width / 2 - 100, (int) (height * 0.5), "Coordinate/Angle Display: " + Utils.getColouredBoolean(ToggleCommand.coordsToggled));
- goldenEnch = new GuiButton(0, width / 2 - 100, (int) (height * 0.6), "Golden T10/T6/T4 Enchantments: " + Utils.getColouredBoolean(ToggleCommand.goldenToggled));
- slayerCount = new GuiButton(0, width / 2 - 100, (int) (height * 0.7), "Count Total 20% Drops: " + Utils.getColouredBoolean(ToggleCommand.slayerCountTotal));
+ puzzleSolvers = new GuiButton(0, width / 2 - 100, (int) (height * 0.3), "Toggle Dungeons Puzzle Solvers");
+ outlineText = new GuiButton(0, width / 2 - 100, (int) (height * 0.4), "Outline Displayed Text: " + Utils.getColouredBoolean(ToggleCommand.outlineTextToggled));
+ gparty = new GuiButton(0, width / 2 - 100, (int) (height * 0.5), "Guild Party Notifications: " + Utils.getColouredBoolean(ToggleCommand.gpartyToggled));
+ coords = new GuiButton(0, width / 2 - 100, (int) (height * 0.6), "Coordinate/Angle Display: " + Utils.getColouredBoolean(ToggleCommand.coordsToggled));
+ goldenEnch = new GuiButton(0, width / 2 - 100, (int) (height * 0.7), "Golden T10/T6/T4 Enchantments: " + Utils.getColouredBoolean(ToggleCommand.goldenToggled));
// Page 2
- aotd = new GuiButton(0, width / 2 - 100, (int) (height * 0.1), "Disable AOTD Ability: " + Utils.getColouredBoolean(ToggleCommand.aotdToggled));
- lividDagger = new GuiButton(0, width / 2 - 100, (int) (height * 0.2), "Disable Livid Dagger Ability: " + Utils.getColouredBoolean(ToggleCommand.lividDaggerToggled));
- sceptreMessages = new GuiButton(0, width / 2 - 100, (int) (height * 0.3), "Enable Spirit Sceptre Messages: " + Utils.getColouredBoolean(ToggleCommand.sceptreMessages));
- petColours = new GuiButton(0, width / 2 - 100, (int) (height * 0.4), "Colour Pet Backgrounds: " + Utils.getColouredBoolean(ToggleCommand.petColoursToggled));
- dungeonTimer = new GuiButton(0, width / 2 - 100, (int) (height * 0.5), "Display Dungeon Timers: " + Utils.getColouredBoolean(ToggleCommand.dungeonTimerToggled));
- golemAlerts = new GuiButton(0, width / 2 - 100, (int) (height * 0.6), "Alert When Golem Spawns: " + Utils.getColouredBoolean(ToggleCommand.golemAlertToggled));
- expertiseLore = new GuiButton(0, width / 2 - 100, (int) (height * 0.7), "Expertise Kills In Lore: " + Utils.getColouredBoolean(ToggleCommand.expertiseLoreToggled));
+ slayerCount = new GuiButton(0, width / 2 - 100, (int) (height * 0.1), "Count Total 20% Drops: " + Utils.getColouredBoolean(ToggleCommand.slayerCountTotal));
+ aotd = new GuiButton(0, width / 2 - 100, (int) (height * 0.2), "Disable AOTD Ability: " + Utils.getColouredBoolean(ToggleCommand.aotdToggled));
+ lividDagger = new GuiButton(0, width / 2 - 100, (int) (height * 0.3), "Disable Livid Dagger Ability: " + Utils.getColouredBoolean(ToggleCommand.lividDaggerToggled));
+ sceptreMessages = new GuiButton(0, width / 2 - 100, (int) (height * 0.4), "Enable Spirit Sceptre Messages: " + Utils.getColouredBoolean(ToggleCommand.sceptreMessages));
+ petColours = new GuiButton(0, width / 2 - 100, (int) (height * 0.5), "Colour Pet Backgrounds: " + Utils.getColouredBoolean(ToggleCommand.petColoursToggled));
+ dungeonTimer = new GuiButton(0, width / 2 - 100, (int) (height * 0.6), "Display Dungeon Timers: " + Utils.getColouredBoolean(ToggleCommand.dungeonTimerToggled));
+ golemAlerts = new GuiButton(0, width / 2 - 100, (int) (height * 0.7), "Alert When Golem Spawns: " + Utils.getColouredBoolean(ToggleCommand.golemAlertToggled));
// Page 3
- skill50Display = new GuiButton(0, width / 2 - 100, (int) (height * 0.1), "Display Progress To Skill Level 50: " + Utils.getColouredBoolean(ToggleCommand.skill50DisplayToggled));
+ expertiseLore = new GuiButton(0, width / 2 - 100, (int) (height * 0.1), "Expertise Kills In Lore: " + Utils.getColouredBoolean(ToggleCommand.expertiseLoreToggled));
+ skill50Display = new GuiButton(0, width / 2 - 100, (int) (height * 0.2), "Display Progress To Skill Level 50: " + Utils.getColouredBoolean(ToggleCommand.skill50DisplayToggled));
if (page == 1) {
this.buttonList.add(changeDisplay);
this.buttonList.add(onlySlayer);
+ this.buttonList.add(puzzleSolvers);
this.buttonList.add(outlineText);
this.buttonList.add(gparty);
this.buttonList.add(coords);
this.buttonList.add(goldenEnch);
- this.buttonList.add(slayerCount);
this.buttonList.add(nextPage);
this.buttonList.add(closeGUI);
} else if (page == 2) {
+ this.buttonList.add(slayerCount);
this.buttonList.add(aotd);
this.buttonList.add(lividDagger);
this.buttonList.add(sceptreMessages);
this.buttonList.add(petColours);
this.buttonList.add(dungeonTimer);
this.buttonList.add(golemAlerts);
- this.buttonList.add(expertiseLore);
this.buttonList.add(nextPage);
this.buttonList.add(backPage);
this.buttonList.add(closeGUI);
} else if (page == 3) {
+ this.buttonList.add(expertiseLore);
this.buttonList.add(skill50Display);
this.buttonList.add(backPage);
this.buttonList.add(closeGUI);
@@ -148,6 +151,8 @@ public class DankerGui extends GuiScreen {
TheMod.guiToOpen = "displaygui";
} else if (button == onlySlayer) {
TheMod.guiToOpen = "onlyslayergui";
+ } else if (button == puzzleSolvers) {
+ TheMod.guiToOpen = "puzzlesolvers";
} else if (button == outlineText) {
ToggleCommand.outlineTextToggled = !ToggleCommand.outlineTextToggled;
ConfigHandler.writeBooleanConfig("toggles", "OutlineText", ToggleCommand.outlineTextToggled);
diff --git a/src/main/java/me/Danker/gui/PuzzleSolversGui.java b/src/main/java/me/Danker/gui/PuzzleSolversGui.java
new file mode 100644
index 0000000..8fbc32e
--- /dev/null
+++ b/src/main/java/me/Danker/gui/PuzzleSolversGui.java
@@ -0,0 +1,68 @@
+package me.Danker.gui;
+
+import me.Danker.TheMod;
+import me.Danker.commands.ToggleCommand;
+import me.Danker.handlers.ConfigHandler;
+import me.Danker.utils.Utils;
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.gui.GuiButton;
+import net.minecraft.client.gui.GuiScreen;
+import net.minecraft.client.gui.ScaledResolution;
+
+public class PuzzleSolversGui extends GuiScreen {
+
+ private GuiButton goBack;
+ private GuiButton riddle;
+ private GuiButton trivia;
+ private GuiButton blaze;
+
+ @Override
+ public boolean doesGuiPauseGame() {
+ return false;
+ }
+
+ @Override
+ public void initGui() {
+ super.initGui();
+
+ ScaledResolution sr = new ScaledResolution(Minecraft.getMinecraft());
+ int height = sr.getScaledHeight();
+ int width = sr.getScaledWidth();
+
+ goBack = new GuiButton(0, 2, height - 30, 100, 20, "Go Back");
+ riddle = new GuiButton(0, width / 2 - 100, (int) (height * 0.1), "Riddle Solver: " + Utils.getColouredBoolean(ToggleCommand.threeManToggled));
+ trivia = new GuiButton(0, width / 2 - 100, (int) (height * 0.2), "Trivia Solver: " + Utils.getColouredBoolean(ToggleCommand.oruoToggled));
+ blaze = new GuiButton(0, width / 2 - 100, (int) (height * 0.3), "Blaze Solver: " + Utils.getColouredBoolean(ToggleCommand.blazeToggled));
+
+ this.buttonList.add(goBack);
+ this.buttonList.add(riddle);
+ this.buttonList.add(trivia);
+ this.buttonList.add(blaze);
+ }
+
+ @Override
+ public void drawScreen(int mouseX, int mouseY, float partialTicks) {
+ this.drawDefaultBackground();
+ super.drawScreen(mouseX, mouseY, partialTicks);
+ }
+
+ @Override
+ public void actionPerformed(GuiButton button) {
+ if (button == goBack) {
+ TheMod.guiToOpen = "dankergui1";
+ } else if (button == riddle) {
+ ToggleCommand.threeManToggled = !ToggleCommand.threeManToggled;
+ ConfigHandler.writeBooleanConfig("toggles", "ThreeManPuzzle", ToggleCommand.threeManToggled);
+ riddle.displayString = "Riddle Solver: " + Utils.getColouredBoolean(ToggleCommand.threeManToggled);
+ } else if (button == trivia) {
+ ToggleCommand.oruoToggled = !ToggleCommand.oruoToggled;
+ ConfigHandler.writeBooleanConfig("toggles", "OruoPuzzle", ToggleCommand.oruoToggled);
+ trivia.displayString = "Trivia Solver: " + Utils.getColouredBoolean(ToggleCommand.oruoToggled);
+ } else if (button == blaze) {
+ ToggleCommand.blazeToggled = !ToggleCommand.blazeToggled;
+ ConfigHandler.writeBooleanConfig("toggles", "BlazePuzzle", ToggleCommand.blazeToggled);
+ blaze.displayString = "Blaze Solver: " + Utils.getColouredBoolean(ToggleCommand.blazeToggled);
+ }
+ }
+
+}
diff --git a/src/main/java/me/Danker/handlers/ConfigHandler.java b/src/main/java/me/Danker/handlers/ConfigHandler.java
index b903cd3..4663049 100644
--- a/src/main/java/me/Danker/handlers/ConfigHandler.java
+++ b/src/main/java/me/Danker/handlers/ConfigHandler.java
@@ -188,6 +188,10 @@ public class ConfigHandler {
if (!hasKey("toggles", "ExpertiseLore")) writeBooleanConfig("toggles", "ExpertiseLore", true);
if (!hasKey("toggles", "Skill50Display")) writeBooleanConfig("toggles", "Skill50Display", false);
if (!hasKey("toggles", "OutlineText")) writeBooleanConfig("toggles", "OutlineText", false);
+ // Puzzle Solvers
+ if (!hasKey("toggles", "ThreeManPuzzle")) writeBooleanConfig("toggles", "ThreeManPuzzle", false);
+ if (!hasKey("toggles", "OruoPuzzle")) writeBooleanConfig("toggles", "OruoPuzzle", false);
+ if (!hasKey("toggles", "BlazePuzzle")) writeBooleanConfig("toggles", "BlazePuzzle", false);
if (!hasKey("api", "APIKey")) writeStringConfig("api", "APIKey", "");
@@ -353,6 +357,10 @@ public class ConfigHandler {
tf.expertiseLoreToggled = getBoolean("toggles", "ExpertiseLore");
tf.skill50DisplayToggled = getBoolean("toggles", "Skill50Display");
tf.outlineTextToggled = getBoolean("toggles", "OutlineText");
+ // Puzzle Solvers
+ tf.threeManToggled = getBoolean("toggles", "ThreeManPuzzle");
+ tf.oruoToggled = getBoolean("toggles", "OruoPuzzle");
+ tf.blazeToggled = getBoolean("toggles", "BlazePuzzle");
final BlockSlayerCommand bs = new BlockSlayerCommand();
String onlySlayer = getString("toggles", "BlockSlayer");
diff --git a/src/main/java/me/Danker/utils/Utils.java b/src/main/java/me/Danker/utils/Utils.java
index ba01071..532d1b9 100644
--- a/src/main/java/me/Danker/utils/Utils.java
+++ b/src/main/java/me/Danker/utils/Utils.java
@@ -14,16 +14,24 @@ import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.Gui;
import net.minecraft.client.gui.ScaledResolution;
import net.minecraft.client.network.NetworkPlayerInfo;
+import net.minecraft.client.renderer.GlStateManager;
+import net.minecraft.client.renderer.Tessellator;
+import net.minecraft.client.renderer.WorldRenderer;
+import net.minecraft.client.renderer.entity.RenderManager;
+import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
+import net.minecraft.entity.Entity;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.scoreboard.ScoreObjective;
import net.minecraft.util.AxisAlignedBB;
+import net.minecraft.util.BlockPos;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.StringUtils;
public class Utils {
public static boolean inSkyblock = false;
+ public static boolean inDungeons = false;
static int[] skillXPPerLevel = {0, 50, 125, 200, 300, 500, 750, 1000, 1500, 2000, 3500, 5000, 7500, 10000, 15000, 20000, 30000, 50000,
75000, 100000, 200000, 300000, 400000, 500000, 600000, 700000, 800000, 900000, 1000000, 1100000,
1200000, 1300000, 1400000, 1500000, 1600000, 1700000, 1800000, 1900000, 2000000, 2100000, 2200000,
@@ -118,6 +126,21 @@ public class Utils {
}
inSkyblock = false;
}
+
+ public static void checkForDungeons() {
+ Minecraft mc = Minecraft.getMinecraft();
+ if (inSkyblock) {
+ List<String> scoreboard = ScoreboardHandler.getSidebarLines();
+ for (String s : scoreboard) {
+ String sCleaned = ScoreboardHandler.cleanSB(s);
+ if (sCleaned.contains("The Catacombs")) {
+ inDungeons = true;
+ return;
+ }
+ }
+ }
+ inDungeons = false;
+ }
public static String capitalizeString(String string) {
String[] words = string.split("_");
@@ -228,4 +251,79 @@ public class Utils {
return bool ? EnumChatFormatting.GREEN + "On" : EnumChatFormatting.RED + "Off";
}
+ public static void draw3DString(BlockPos pos, String text, int colour, float partialTicks) {
+ Minecraft mc = Minecraft.getMinecraft();
+ EntityPlayer player = mc.thePlayer;
+ double x = (pos.getX() - player.lastTickPosX) + ((pos.getX() - player.posX) - (pos.getX() - player.lastTickPosX)) * partialTicks;
+ double y = (pos.getY() - player.lastTickPosY) + ((pos.getY() - player.posY) - (pos.getY() - player.lastTickPosY)) * partialTicks;
+ double z = (pos.getZ() - player.lastTickPosZ) + ((pos.getZ() - player.posZ) - (pos.getZ() - player.lastTickPosZ)) * partialTicks;
+ RenderManager renderManager = mc.getRenderManager();
+
+ float f = 1.6F;
+ float f1 = 0.016666668F * f;
+ int width = mc.fontRendererObj.getStringWidth(text) / 2;
+ GlStateManager.pushMatrix();
+ GlStateManager.translate(x, y, z);
+ GL11.glNormal3f(0f, 1f, 0f);
+ GlStateManager.rotate(-renderManager.playerViewY, 0f, 1f, 0f);
+ GlStateManager.rotate(renderManager.playerViewX, 1f, 0f, 0f);
+ GlStateManager.scale(-f1, -f1, -f1);
+ GlStateManager.enableBlend();
+ GlStateManager.tryBlendFuncSeparate(770, 771, 1, 0);
+ mc.fontRendererObj.drawString(text, -width, 0, colour);
+ GlStateManager.disableBlend();
+ GlStateManager.popMatrix();
+ }
+
+ // Yoinked from ForgeHax
+ public static void draw3DBox(AxisAlignedBB aabb, int r, int g, int b, int a, float partialTicks) {
+ Entity render = Minecraft.getMinecraft().getRenderViewEntity();
+ WorldRenderer worldRenderer = Tessellator.getInstance().getWorldRenderer();
+
+ double realX = render.lastTickPosX + (render.posX - render.lastTickPosX) * partialTicks;
+ double realY = render.lastTickPosY + (render.posY - render.lastTickPosY) * partialTicks;
+ double realZ = render.lastTickPosZ + (render.posZ - render.lastTickPosZ) * partialTicks;
+
+ GlStateManager.pushMatrix();
+ GlStateManager.translate(-realX, -realY, -realZ);
+ GlStateManager.disableTexture2D();
+ GlStateManager.enableBlend();
+ GlStateManager.disableAlpha();
+ GlStateManager.tryBlendFuncSeparate(770, 771, 1, 0);
+ GL11.glLineWidth(2);
+ GlStateManager.color(r / 255f, g / 255f, b / 255f, a / 255f);
+ worldRenderer.begin(GL11.GL_LINE_STRIP, DefaultVertexFormats.POSITION);
+
+ worldRenderer.pos(aabb.minX, aabb.minY, aabb.minZ).endVertex();
+ worldRenderer.pos(aabb.maxX, aabb.minY, aabb.minZ).endVertex();
+ worldRenderer.pos(aabb.maxX, aabb.minY, aabb.maxZ).endVertex();
+ worldRenderer.pos(aabb.minX, aabb.minY, aabb.maxZ).endVertex();
+ worldRenderer.pos(aabb.minX, aabb.minY, aabb.minZ).endVertex();
+ Tessellator.getInstance().draw();
+ worldRenderer.begin(GL11.GL_LINE_STRIP, DefaultVertexFormats.POSITION);
+ worldRenderer.pos(aabb.minX, aabb.maxY, aabb.minZ).endVertex();
+ worldRenderer.pos(aabb.maxX, aabb.maxY, aabb.minZ).endVertex();
+ worldRenderer.pos(aabb.maxX, aabb.maxY, aabb.maxZ).endVertex();
+ worldRenderer.pos(aabb.minX, aabb.maxY, aabb.maxZ).endVertex();
+ worldRenderer.pos(aabb.minX, aabb.maxY, aabb.minZ).endVertex();
+ Tessellator.getInstance().draw();
+ worldRenderer.begin(GL11.GL_LINE_STRIP, DefaultVertexFormats.POSITION);
+ worldRenderer.pos(aabb.minX, aabb.minY, aabb.minZ).endVertex();
+ worldRenderer.pos(aabb.minX, aabb.maxY, aabb.minZ).endVertex();
+ worldRenderer.pos(aabb.maxX, aabb.minY, aabb.minZ).endVertex();
+ worldRenderer.pos(aabb.maxX, aabb.maxY, aabb.minZ).endVertex();
+ worldRenderer.pos(aabb.maxX, aabb.minY, aabb.maxZ).endVertex();
+ worldRenderer.pos(aabb.maxX, aabb.maxY, aabb.maxZ).endVertex();
+ worldRenderer.pos(aabb.minX, aabb.minY, aabb.maxZ).endVertex();
+ worldRenderer.pos(aabb.minX, aabb.maxY, aabb.maxZ).endVertex();
+ Tessellator.getInstance().draw();
+
+ GlStateManager.translate(realX, realY, realZ);
+ GlStateManager.disableBlend();
+ GlStateManager.enableAlpha();
+ GlStateManager.enableTexture2D();
+ GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
+ GlStateManager.popMatrix();
+ }
+
}