aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/Danker/features
diff options
context:
space:
mode:
authorClicks <58398364+CuzImClicks@users.noreply.github.com>2022-04-29 11:24:43 +0200
committerGitHub <noreply@github.com>2022-04-29 11:24:43 +0200
commit48253eddf00cf5d94ecc2eb6b63e7c490b3145be (patch)
treeb74b3674eb12a168e3e93da1f3ff0119116c3411 /src/main/java/me/Danker/features
parent5f6ce80319b21d53abbec15886f4e2fbd765f748 (diff)
parent36a30bd1a2097b6ab45c27bd248cbea4e292499f (diff)
downloadSkyblockMod-48253eddf00cf5d94ecc2eb6b63e7c490b3145be.tar.gz
SkyblockMod-48253eddf00cf5d94ecc2eb6b63e7c490b3145be.tar.bz2
SkyblockMod-48253eddf00cf5d94ecc2eb6b63e7c490b3145be.zip
Merge branch 'development' into development
Diffstat (limited to 'src/main/java/me/Danker/features')
-rw-r--r--src/main/java/me/Danker/features/Alerts.java83
-rw-r--r--src/main/java/me/Danker/features/ChatAliases.java64
-rw-r--r--src/main/java/me/Danker/features/ColouredNames.java3
-rw-r--r--src/main/java/me/Danker/features/CrystalHollowWaypoints.java114
-rw-r--r--src/main/java/me/Danker/features/CustomMusic.java132
-rw-r--r--src/main/java/me/Danker/features/FirePillarDisplay.java51
-rw-r--r--src/main/java/me/Danker/features/GpartyNotifications.java13
-rw-r--r--src/main/java/me/Danker/features/loot/BlazeTracker.java42
-rw-r--r--src/main/java/me/Danker/features/loot/EndermanTracker.java228
-rw-r--r--src/main/java/me/Danker/features/loot/FishingTracker.java9
-rw-r--r--src/main/java/me/Danker/features/loot/LootDisplay.java296
-rw-r--r--src/main/java/me/Danker/features/loot/LootTracker.java35
-rw-r--r--src/main/java/me/Danker/features/loot/SpiderTracker.java122
-rw-r--r--src/main/java/me/Danker/features/loot/WolfTracker.java128
-rw-r--r--src/main/java/me/Danker/features/loot/ZombieTracker.java172
15 files changed, 884 insertions, 608 deletions
diff --git a/src/main/java/me/Danker/features/Alerts.java b/src/main/java/me/Danker/features/Alerts.java
index aab99b3..8f45423 100644
--- a/src/main/java/me/Danker/features/Alerts.java
+++ b/src/main/java/me/Danker/features/Alerts.java
@@ -1,6 +1,7 @@
package me.Danker.features;
import com.google.gson.GsonBuilder;
+import javafx.scene.control.Alert;
import me.Danker.commands.ToggleCommand;
import me.Danker.utils.Utils;
import net.minecraft.util.EnumChatFormatting;
@@ -12,11 +13,15 @@ import java.awt.*;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
public class Alerts {
public static List<Alert> alerts = new ArrayList<>();
+ public static HashMap<Alert, Pattern> patterns = new HashMap<>();
public static String configFile;
@SubscribeEvent
@@ -41,45 +46,59 @@ public class Alerts {
}
if (!location) continue;
- boolean trigger;
- switch (alert.mode) {
- case "Starts With":
- trigger = message.startsWith(alert.message);
- break;
- case "Contains":
- trigger = message.contains(alert.message);
- break;
- case "Ends With":
- trigger = message.endsWith(alert.message);
- break;
- default:
- continue;
- }
-
- if (trigger) {
- Utils.createTitle(EnumChatFormatting.RED + alert.alert.replace("&", "§"), 2);
-
- if (alert.desktop) {
- try {
- final SystemTray tray = SystemTray.getSystemTray();
- final Image image = Toolkit.getDefaultToolkit().createImage("icon.png");
- final TrayIcon trayIcon = new TrayIcon(image, "Alert");
- trayIcon.setImageAutoSize(true);
- trayIcon.setToolTip("Alert");
- tray.add(trayIcon);
- trayIcon.displayMessage(StringUtils.stripControlCodes(alert.alert), message, TrayIcon.MessageType.INFO);
- tray.remove(trayIcon);
- } catch (Exception ex) {
- ex.printStackTrace();
+ if (alert.mode.equals("Regex")) {
+ Matcher matcher = patterns.get(alert).matcher(message);
+ if (matcher.matches()) {
+ matcher.reset();
+ String alertText = alert.alert;
+
+ int i = 0;
+ while (matcher.find()) {
+ for (int j = 0; j <= matcher.groupCount(); j++) {
+ alertText = alertText.replace("$$" + i + "$$", matcher.group(j));
+ i++;
+ }
}
+
+ Utils.createTitle(EnumChatFormatting.RED + alertText.replace("&", "§"), 2);
+ if (alert.desktop) Utils.desktopNotification("Alert", alertText, message, TrayIcon.MessageType.INFO);
+
+ return;
}
+ } else {
+ boolean trigger;
+ switch (alert.mode) {
+ case "Starts With":
+ trigger = message.startsWith(alert.message);
+ break;
+ case "Contains":
+ trigger = message.contains(alert.message);
+ break;
+ case "Ends With":
+ trigger = message.endsWith(alert.message);
+ break;
+ default:
+ continue;
+ }
+
+ if (trigger) {
+ Utils.createTitle(EnumChatFormatting.RED + alert.alert.replace("&", "§"), 2);
+ if (alert.desktop) Utils.desktopNotification("Alert", alert.alert, message, TrayIcon.MessageType.INFO);
- return;
+ return;
+ }
}
}
}
- public static void saveToFile() {
+ public static void save() {
+ for (Alert alert : alerts) {
+ if (alert.mode.equals("Regex")) {
+ Pattern pattern = Pattern.compile(alert.message);
+ patterns.put(alert, pattern);
+ }
+ }
+
try (FileWriter writer = new FileWriter(configFile)) {
new GsonBuilder().create().toJson(alerts, writer);
writer.flush();
diff --git a/src/main/java/me/Danker/features/ChatAliases.java b/src/main/java/me/Danker/features/ChatAliases.java
new file mode 100644
index 0000000..ae9e0f7
--- /dev/null
+++ b/src/main/java/me/Danker/features/ChatAliases.java
@@ -0,0 +1,64 @@
+package me.Danker.features;
+
+import com.google.gson.GsonBuilder;
+import me.Danker.events.PacketWriteEvent;
+import net.minecraft.client.Minecraft;
+import net.minecraft.network.play.client.C01PacketChatMessage;
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
+
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+public class ChatAliases {
+
+ public static List<Alias> aliases = new ArrayList<>();
+ public static String configFile;
+
+ @SubscribeEvent
+ public void onPacketWrite(PacketWriteEvent event) {
+ if (event.packet instanceof C01PacketChatMessage) {
+ C01PacketChatMessage packet = (C01PacketChatMessage) event.packet;
+ String message = packet.getMessage();
+
+ for (Alias alias : aliases) {
+ if (!alias.toggled) continue;
+ message = message.replace(alias.text, alias.alias);
+ }
+
+ if (!packet.getMessage().equals(message)) {
+ event.setCanceled(true);
+ Minecraft.getMinecraft().thePlayer.sendQueue.addToSendQueue(new C01PacketChatMessage(message));
+ }
+ }
+ }
+
+ public static void save() {
+ try (FileWriter writer = new FileWriter(configFile)) {
+ new GsonBuilder().create().toJson(aliases, writer);
+ writer.flush();
+ } catch (IOException ex) {
+ ex.printStackTrace();
+ }
+ }
+
+ public static class Alias {
+
+ public String text;
+ public String alias;
+ public boolean toggled;
+
+ public Alias(String text, String alias, boolean toggled) {
+ this.text = text;
+ this.alias = alias;
+ this.toggled = toggled;
+ }
+
+ public void toggle() {
+ toggled = !toggled;
+ }
+
+ }
+
+}
diff --git a/src/main/java/me/Danker/features/ColouredNames.java b/src/main/java/me/Danker/features/ColouredNames.java
index aad1ab1..90d722e 100644
--- a/src/main/java/me/Danker/features/ColouredNames.java
+++ b/src/main/java/me/Danker/features/ColouredNames.java
@@ -11,6 +11,7 @@ import net.minecraft.network.play.server.S45PacketTitle;
import net.minecraft.util.ChatComponentText;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.IChatComponent;
+import net.minecraft.util.StringUtils;
import net.minecraftforge.client.event.ClientChatReceivedEvent;
import net.minecraftforge.client.event.RenderLivingEvent;
import net.minecraftforge.event.entity.player.ItemTooltipEvent;
@@ -53,7 +54,7 @@ public class ColouredNames {
for (String user : users) {
for (int i = 0; i < event.toolTip.size(); i++) {
- if (event.toolTip.get(i).contains(user)) {
+ if (StringUtils.stripControlCodes(event.toolTip.get(i)).contains(user)) {
event.toolTip.set(i, replaceName(event.toolTip.get(i), user, getColourFromName(user)));
}
}
diff --git a/src/main/java/me/Danker/features/CrystalHollowWaypoints.java b/src/main/java/me/Danker/features/CrystalHollowWaypoints.java
index f367877..a8ee0f9 100644
--- a/src/main/java/me/Danker/features/CrystalHollowWaypoints.java
+++ b/src/main/java/me/Danker/features/CrystalHollowWaypoints.java
@@ -1,12 +1,13 @@
package me.Danker.features;
import me.Danker.DankersSkyblockMod;
-import me.Danker.commands.CrystalHollowWaypointCommand;
import me.Danker.commands.ToggleCommand;
+import me.Danker.gui.crystalhollowwaypoints.CrystalHollowAddWaypointGui;
import me.Danker.handlers.ScoreboardHandler;
import me.Danker.utils.RenderUtils;
import me.Danker.utils.Utils;
import net.minecraft.client.Minecraft;
+import net.minecraft.client.settings.KeyBinding;
import net.minecraft.entity.item.EntityArmorStand;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.event.ClickEvent;
@@ -16,15 +17,19 @@ import net.minecraftforge.client.event.ClientChatReceivedEvent;
import net.minecraftforge.client.event.RenderWorldLastEvent;
import net.minecraftforge.event.world.WorldEvent;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
+import net.minecraftforge.fml.common.gameevent.InputEvent;
import net.minecraftforge.fml.common.gameevent.TickEvent;
import java.util.ArrayList;
import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
public class CrystalHollowWaypoints {
public static List<Waypoint> waypoints = new ArrayList<>();
-
+ public static Pattern skytilsPattern = Pattern.compile("(?<name>.*?): (?<x>\\d{1,3}) (?<y>\\d{1,3}) (?<z>\\d{1,3})");
+
static boolean khazad = false;
static boolean fairy = false;
static boolean temple = false;
@@ -123,30 +128,71 @@ public class CrystalHollowWaypoints {
$SBECHWP:Khazad-dûm@-292,63,281\nFairy Grotto@-216,110,400\njungle temple@-525,110,395\nJungle Temple@-493,101,425\nMines of Divan@-673,117,426
*/
if (ToggleCommand.crystalHollowWaypoints && Utils.tabLocation.equals("Crystal Hollows")) {
- if (!message.contains(player.getName()) && (message.contains(": $DSMCHWP:") || message.contains(": $SBECHWP:"))) {
- String waypoints = message.substring(message.lastIndexOf(":") + 1);
+ if (!message.contains(player.getName())) {
+ if (message.contains(": $DSMCHWP:") || message.contains(": $SBECHWP:")) {
+ String waypoints = message.substring(message.lastIndexOf(":") + 1);
- if (ToggleCommand.crystalAutoPlayerWaypoints) {
- CrystalHollowWaypointCommand.addWaypoints(waypoints, true);
- return;
- }
+ if (ToggleCommand.crystalAutoPlayerWaypoints) {
+ addDSMWaypoints(waypoints, true);
+ return;
+ }
+
+ ChatComponentText add = new ChatComponentText(EnumChatFormatting.GREEN + "" + EnumChatFormatting.BOLD + " [ADD]\n");
+ add.setChatStyle(add.getChatStyle().setChatClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/dsmaddcrystalhollowwaypoints " + waypoints)));
- ChatComponentText add = new ChatComponentText(EnumChatFormatting.GREEN + "" + EnumChatFormatting.BOLD + " [ADD]\n");
- add.setChatStyle(add.getChatStyle().setChatClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/dsmaddcrystalhollowwaypoints " + waypoints)));
+ new Thread(() -> {
+ try {
+ Thread.sleep(10);
+ } catch (InterruptedException ex) {
+ ex.printStackTrace();
+ }
+ player.addChatMessage(new ChatComponentText("\n" + DankersSkyblockMod.MAIN_COLOUR + "DSM/SBE Crystal Hollows waypoints found. Click to add.\n").appendSibling(add));
+ }).start();
+ } else {
+ String text = message.substring(message.indexOf(":") + 2);
+ Matcher matcher = skytilsPattern.matcher(text);
+
+ if (matcher.matches()) {
+ String name = matcher.group("name");
+ String x = matcher.group("x");
+ String y = matcher.group("y");
+ String z = matcher.group("z");
+
+ if (ToggleCommand.crystalAutoPlayerWaypoints) {
+ addWaypoint(name, x, y, z);
+ return;
+ }
- new Thread(() -> {
- try {
- Thread.sleep(10);
- } catch (InterruptedException ex) {
- ex.printStackTrace();
+ ChatComponentText add = new ChatComponentText(EnumChatFormatting.GREEN + "" + EnumChatFormatting.BOLD + " [ADD]\n");
+ add.setChatStyle(add.getChatStyle().setChatClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/dsmaddcrystalhollowwaypoints st " + x + " " + y + " " + z + " " + name)));
+
+ new Thread(() -> {
+ try {
+ Thread.sleep(10);
+ } catch (InterruptedException ex) {
+ ex.printStackTrace();
+ }
+ player.addChatMessage(new ChatComponentText("\n" + DankersSkyblockMod.MAIN_COLOUR + "Skytils Crystal Hollows waypoints found. Click to add.\n").appendSibling(add));
+ }).start();
}
- player.addChatMessage(new ChatComponentText("\n" + DankersSkyblockMod.MAIN_COLOUR + "DSM/SBE Crystal Hollows waypoints found. Click to add.\n").appendSibling(add));
- }).start();
+ }
}
}
}
@SubscribeEvent
+ public void onKey(InputEvent.KeyInputEvent event) {
+ if (!Utils.tabLocation.equals("Crystal Hollows")) return;
+
+ if (DankersSkyblockMod.keyBindings[3].isPressed()) {
+ Minecraft mc = Minecraft.getMinecraft();
+ EntityPlayer player = mc.thePlayer;
+
+ mc.displayGuiScreen(new CrystalHollowAddWaypointGui((int) player.posX, (int) player.posY, (int) player.posZ));
+ }
+ }
+
+ @SubscribeEvent
public void onWorldRender(RenderWorldLastEvent event) {
if (ToggleCommand.crystalHollowWaypoints && Utils.tabLocation.equals("Crystal Hollows")) {
for (Waypoint waypoint : waypoints) {
@@ -201,4 +247,38 @@ public class CrystalHollowWaypoints {
}
+ public static void addWaypoint(String name, String x, String y, String z) {
+ BlockPos pos = new BlockPos(Integer.parseInt(x), Integer.parseInt(y), Integer.parseInt(z));
+ Waypoint waypoint = new Waypoint(name, pos);
+ waypoints.add(waypoint);
+ Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Added " + waypoint.location + " @ " + waypoint.getPos()));
+ }
+
+ public static void addDSMWaypoints(String list, boolean auto) {
+ String[] waypointsList = list.split("\\\\n");
+
+ for (String waypoint : waypointsList) {
+ String[] parts = waypoint.split("@-");
+ String[] coords = parts[1].split(",");
+
+ String location = parts[0];
+ BlockPos pos = new BlockPos(Integer.parseInt(coords[0]), Integer.parseInt(coords[1]), Integer.parseInt(coords[2]));
+ Waypoint newWaypoint = new Waypoint(location, pos);
+
+ if (auto) {
+ boolean contains = false;
+ for (Waypoint existing : waypoints) {
+ if (existing.location.equals(location)) {
+ contains = true;
+ break;
+ }
+ }
+ if (contains) continue;
+ }
+
+ waypoints.add(newWaypoint);
+ Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText(DankersSkyblockMod.MAIN_COLOUR + "Added " + newWaypoint.location + " @ " + newWaypoint.getPos()));
+ }
+ }
+
}
diff --git a/src/main/java/me/Danker/features/CustomMusic.java b/src/main/java/me/Danker/features/CustomMusic.java
index a31e40a..3ea8d1f 100644
--- a/src/main/java/me/Danker/features/CustomMusic.java
+++ b/src/main/java/me/Danker/features/CustomMusic.java
@@ -27,12 +27,21 @@ import java.util.Random;
public class CustomMusic {
static boolean cancelNotes;
+
public static Song dungeonboss;
public static int dungeonbossVolume;
public static Song bloodroom;
public static int bloodroomVolume;
public static Song dungeon;
public static int dungeonVolume;
+ public static Song phase2;
+ public static int phase2Volume;
+ public static Song phase3;
+ public static int phase3Volume;
+ public static Song phase4;
+ public static int phase4Volume;
+ public static Song phase5;
+ public static int phase5Volume;
public static Song hub;
public static int hubVolume;
public static Song island;
@@ -79,56 +88,56 @@ public class CustomMusic {
String firstLine = ScoreboardHandler.cleanSB(scoreboard.get(scoreboard.size() - 1));
String secondLine = ScoreboardHandler.cleanSB(scoreboard.get(scoreboard.size() - 2));
if (firstLine.contains("30,30") || // F1
- firstLine.contains("30,125") || // F2
- firstLine.contains("30,225") || // F3
- secondLine.contains("- Healthy") || // F3
- firstLine.contains("30,344") || // F4
- firstLine.contains("livid") || // F5
- firstLine.contains("sadan") || // F6
- firstLine.contains("necron")) { // F7
-
- if (ToggleCommand.dungeonBossMusic) dungeonboss.start();
- }
- }
- } else {
- switch (Utils.tabLocation) {
- case "Hub":
- if (ToggleCommand.hubMusic) hub.start();
- break;
- case "Private Island":
- if (ToggleCommand.islandMusic) island.start();
- break;
- case "Dungeon Hub":
- if (ToggleCommand.dungeonHubMusic) dungeonHub.start();
- break;
- case "The Farming Islands":
- if (ToggleCommand.farmingIslandsMusic) farmingIslands.start();
- break;
- case "Gold Mine":
- if (ToggleCommand.goldMineMusic) goldMine.start();
- break;
- case "Deep Caverns":
- if (ToggleCommand.deepCavernsMusic) deepCaverns.start();
- break;
- case "Dwarven Mines":
- if (ToggleCommand.dwarvenMinesMusic) dwarvenMines.start();
- break;
- case "Crystal Hollows":
- if (ToggleCommand.crystalHollowsMusic) crystalHollows.start();
- break;
- case "Spider's Den":
- if (ToggleCommand.spidersDenMusic) spidersDen.start();
- break;
- case "Crimson Isle":
- if (ToggleCommand.crimsonIsleMusic) crimsonIsle.start();
- break;
- case "The End":
- if (ToggleCommand.endMusic) end.start();
- break;
- case "The Park":
- if (ToggleCommand.parkMusic) park.start();
- break;
+ firstLine.contains("30,125") || // F2
+ firstLine.contains("30,225") || // F3
+ secondLine.contains("- Healthy") || // F3
+ firstLine.contains("30,344") || // F4
+ firstLine.contains("livid") || // F5
+ firstLine.contains("sadan") || // F6
+ firstLine.contains("maxor")) { // F7
+
+ if (ToggleCommand.dungeonBossMusic) dungeonboss.start();
}
+ }
+ } else {
+ switch (Utils.tabLocation) {
+ case "Hub":
+ if (ToggleCommand.hubMusic) hub.start();
+ break;
+ case "Private Island":
+ if (ToggleCommand.islandMusic) island.start();
+ break;
+ case "Dungeon Hub":
+ if (ToggleCommand.dungeonHubMusic) dungeonHub.start();
+ break;
+ case "The Farming Islands":
+ if (ToggleCommand.farmingIslandsMusic) farmingIslands.start();
+ break;
+ case "Gold Mine":
+ if (ToggleCommand.goldMineMusic) goldMine.start();
+ break;
+ case "Deep Caverns":
+ if (ToggleCommand.deepCavernsMusic) deepCaverns.start();
+ break;
+ case "Dwarven Mines":
+ if (ToggleCommand.dwarvenMinesMusic) dwarvenMines.start();
+ break;
+ case "Crystal Hollows":
+ if (ToggleCommand.crystalHollowsMusic) crystalHollows.start();
+ break;
+ case "Spider's Den":
+ if (ToggleCommand.spidersDenMusic) spidersDen.start();
+ break;
+ case "Crimson Isle":
+ if (ToggleCommand.crimsonIsleMusic) crimsonIsle.start();
+ break;
+ case "The End":
+ if (ToggleCommand.endMusic) end.start();
+ break;
+ case "The Park":
+ if (ToggleCommand.parkMusic) park.start();
+ break;
+ }
}
}
}
@@ -147,10 +156,26 @@ public class CustomMusic {
if (message.contains(":")) return;
if (Utils.inDungeons) {
+ if (ToggleCommand.dungeonBossMusic) {
+ if (message.startsWith("[BOSS] Storm: Pathetic Maxor")) {
+ phase2.start();
+ } else if (message.startsWith("[BOSS] Goldor: Who dares trespass into my domain?")) {
+ phase3.start();
+ } else if (message.startsWith("[BOSS] Necron: You went further than any human before")) {
+ phase4.start();
+ } else if (message.startsWith("[BOSS] ") && message.endsWith("You.. again?")) {
+ phase5.start();
+ }
+ }
+
if (message.contains("EXTRA STATS ")) {
dungeonboss.stop();
bloodroom.stop();
dungeon.stop();
+ phase2.stop();
+ phase3.stop();
+ phase4.stop();
+ phase5.stop();
} else if (message.contains("The BLOOD DOOR has been opened!")) {
dungeon.stop();
if (ToggleCommand.bloodRoomMusic) bloodroom.start();
@@ -175,6 +200,10 @@ public class CustomMusic {
dungeonboss = new Song(directory, "dungeonboss", dungeonbossVolume);
bloodroom = new Song(directory, "bloodroom", bloodroomVolume);
dungeon = new Song(directory, "dungeon", dungeonVolume);
+ phase2 = new Song(directory, "phasetwo", phase2Volume);
+ phase3 = new Song(directory, "phasethree", phase3Volume);
+ phase4 = new Song(directory, "phasefour", phase4Volume);
+ phase5 = new Song(directory, "phasefive", phase5Volume);
hub = new Song(directory, "hub", hubVolume);
island = new Song(directory, "island", hubVolume);
dungeonHub = new Song(directory, "dungeonhub", dungeonHubVolume);
@@ -193,6 +222,10 @@ public class CustomMusic {
if (dungeonboss != null) dungeonboss.stop();
if (bloodroom != null) bloodroom.stop();
if (dungeon != null) dungeon.stop();
+ if (phase2 != null) phase2.stop();
+ if (phase3 != null) phase3.stop();
+ if (phase4 != null) phase4.stop();
+ if (phase5 != null) phase5.stop();
if (hub != null) hub.stop();
if (island != null) island.stop();
if (dungeonHub != null) dungeonHub.stop();
@@ -230,7 +263,6 @@ public class CustomMusic {
public void start() throws UnsupportedAudioFileException, LineUnavailableException, IOException {
try {
- if (music == null) music = AudioSystem.getClip();
if (!music.isRunning()) {
reset();
shuffle();
diff --git a/src/main/java/me/Danker/features/FirePillarDisplay.java b/src/main/java/me/Danker/features/FirePillarDisplay.java
new file mode 100644
index 0000000..34b2288
--- /dev/null
+++ b/src/main/java/me/Danker/features/FirePillarDisplay.java
@@ -0,0 +1,51 @@
+package me.Danker.features;
+
+import me.Danker.DankersSkyblockMod;
+import me.Danker.commands.MoveCommand;
+import me.Danker.commands.ScaleCommand;
+import me.Danker.commands.ToggleCommand;
+import me.Danker.events.RenderOverlayEvent;
+import me.Danker.handlers.TextRenderer;
+import me.Danker.utils.Utils;
+import net.minecraft.client.Minecraft;
+import net.minecraft.entity.Entity;
+import net.minecraft.util.StringUtils;
+import net.minecraft.world.World;
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
+import net.minecraftforge.fml.common.gameevent.TickEvent;
+
+import java.util.List;
+
+public class FirePillarDisplay {
+
+ static Entity pillar = null;
+
+ @SubscribeEvent
+ public void onTick(TickEvent.ClientTickEvent event) {
+ if (event.phase != TickEvent.Phase.START) return;
+
+ World world = Minecraft.getMinecraft().theWorld;
+ if (DankersSkyblockMod.tickAmount % 20 == 0) {
+ pillar = null;
+ if (ToggleCommand.firePillar && world != null && Utils.tabLocation.equals("Crimson Isle") && Utils.isInScoreboard("Slay the boss!")) {
+ List<Entity> entities = world.getLoadedEntityList();
+
+ for (Entity entity : entities) {
+ String name = StringUtils.stripControlCodes(entity.getName());
+ if (name.endsWith(" hits") && name.charAt(1) == 's') {
+ pillar = entity;
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ @SubscribeEvent
+ public void renderPlayerInfo(RenderOverlayEvent event) {
+ if (ToggleCommand.firePillar && pillar != null) {
+ new TextRenderer(Minecraft.getMinecraft(), Utils.removeBold(pillar.getName()), MoveCommand.firePillarXY[0], MoveCommand.firePillarXY[1], ScaleCommand.firePillarScale);
+ }
+ }
+
+}
diff --git a/src/main/java/me/Danker/features/GpartyNotifications.java b/src/main/java/me/Danker/features/GpartyNotifications.java
index f3aec69..76c0a66 100644
--- a/src/main/java/me/Danker/features/GpartyNotifications.java
+++ b/src/main/java/me/Danker/features/GpartyNotifications.java
@@ -19,18 +19,7 @@ public class GpartyNotifications {
if (ToggleCommand.gpartyToggled) {
if (message.contains(" has invited all members of ")) {
- try {
- final SystemTray tray = SystemTray.getSystemTray();
- final Image image = Toolkit.getDefaultToolkit().createImage("icon.png");
- final TrayIcon trayIcon = new TrayIcon(image, "Guild Party Notifier");
- trayIcon.setImageAutoSize(true);
- trayIcon.setToolTip("Guild Party Notifier");
- tray.add(trayIcon);
- trayIcon.displayMessage("Guild Party", message, TrayIcon.MessageType.INFO);
- tray.remove(trayIcon);
- } catch (Exception ex) {
- ex.printStackTrace();
- }
+ Utils.desktopNotification("Guild Party Notifier", "Guild Party", message, TrayIcon.MessageType.INFO);
}
}
}
diff --git a/src/main/java/me/Danker/features/loot/BlazeTracker.java b/src/main/java/me/Danker/features/loot/BlazeTracker.java
index 896f65f..955f83c 100644
--- a/src/main/java/me/Danker/features/loot/BlazeTracker.java
+++ b/src/main/java/me/Danker/features/loot/BlazeTracker.java
@@ -89,7 +89,7 @@ public class BlazeTracker {
splashPotions++;
splashPotionsSession++;
ConfigHandler.writeIntConfig("blaze", "splashPotions", splashPotions);
- } else if (message.contains("RARE DROP! (Bundle of Magma Arrows)")) {
+ } else if (message.contains("RARE DROP! (Bundle of Magma Arrows)")) {
magmaArrows++;
magmaArrowsSession++;
ConfigHandler.writeIntConfig("blaze", "magmaArrows", magmaArrows);
@@ -105,25 +105,30 @@ public class BlazeTracker {
kelvinInverters++;
kelvinInvertersSession++;
ConfigHandler.writeIntConfig("blaze", "kelvinInverters", kelvinInverters);
- } else if (message.contains("VERY RARE DROP! (Blaze Rod Distillate)")) {
- blazeRodDistillates++;
- blazeRodDistillatesSession++;
+ } else if (message.contains("VERY RARE DROP! (") && message.contains("Blaze Rod Distillate)")) {
+ int amount = LootTracker.getAmountfromMessage(message);
+ blazeRodDistillates += amount;
+ blazeRodDistillatesSession += amount;
ConfigHandler.writeIntConfig("blaze", "blazeRodDistillates", blazeRodDistillates);
- } else if (message.contains("VERY RARE DROP! (Glowstone Distillate)")) {
- glowstoneDistillates++;
- glowstoneDistillatesSession++;
+ } else if (message.contains("VERY RARE DROP! (") && message.contains("Glowstone Distillate)")) {
+ int amount = LootTracker.getAmountfromMessage(message);
+ glowstoneDistillates += amount;
+ glowstoneDistillatesSession += amount;
ConfigHandler.writeIntConfig("blaze", "glowstoneDistillates", glowstoneDistillates);
- } else if (message.contains("VERY RARE DROP! (Magma Cream Distillate)")) {
- magmaCreamDistillates++;
- magmaCreamDistillatesSession++;
+ } else if (message.contains("VERY RARE DROP! (") && message.contains("Magma Cream Distillate)")) {
+ int amount = LootTracker.getAmountfromMessage(message);
+ magmaCreamDistillates += amount;
+ magmaCreamDistillatesSession += amount;
ConfigHandler.writeIntConfig("blaze", "magmaCreamDistillates", magmaCreamDistillates);
- } else if (message.contains("VERY RARE DROP! (Nether Wart Distillate)")) {
- netherWartDistillates++;
- netherWartDistillatesSession++;
+ } else if (message.contains("VERY RARE DROP! (") && message.contains("Nether Wart Distillate)")) {
+ int amount = LootTracker.getAmountfromMessage(message);
+ netherWartDistillates += amount;
+ netherWartDistillatesSession += amount;
ConfigHandler.writeIntConfig("blaze", "netherWartDistillates", netherWartDistillates);
- } else if (message.contains("VERY RARE DROP! (Gabagool Distillate)")) {
- gabagoolDistillates++;
- gabagoolDistillatesSession++;
+ } else if (message.contains("VERY RARE DROP! (") && message.contains("Gabagool Distillate)")) {
+ int amount = LootTracker.getAmountfromMessage(message);
+ gabagoolDistillates += amount;
+ gabagoolDistillatesSession += amount;
ConfigHandler.writeIntConfig("blaze", "gabagoolDistillates", gabagoolDistillates);
} else if (message.contains("VERY RARE DROP! (Scorched Power Crystal)")) {
scorchedPowerCrystals++;
@@ -140,8 +145,9 @@ public class Bla