aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorHazem <79111320+7azeemm@users.noreply.github.com>2025-02-15 03:15:11 +0100
committerGitHub <noreply@github.com>2025-02-15 10:15:11 +0800
commit54b1127efb5f7bfb84ac1d249968ffb035aec72a (patch)
treeac5fc6555b528f589026be8744e7bd8e97b889d7 /src/main/java
parentc70c392bda60674bea7302ee56711cf146d77d1d (diff)
downloadSkyblocker-54b1127efb5f7bfb84ac1d249968ffb035aec72a.tar.gz
Skyblocker-54b1127efb5f7bfb84ac1d249968ffb035aec72a.tar.bz2
Skyblocker-54b1127efb5f7bfb84ac1d249968ffb035aec72a.zip
Fixed Vampire Features not working (#1169)
* Fixed Vampire features not working * improved checks
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/de/hysky/skyblocker/config/configs/SlayersConfig.java2
-rw-r--r--src/main/java/de/hysky/skyblocker/events/SkyblockEvents.java13
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/slayers/SlayerManager.java26
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/slayers/boss/demonlord/FirePillarAnnouncer.java4
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/slayers/boss/vampire/ManiaIndicator.java4
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/slayers/boss/vampire/StakeIndicator.java4
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/slayers/boss/vampire/TwinClawsIndicator.java4
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/slayers/boss/voidgloom/BeaconHighlighter.java4
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/slayers/boss/voidgloom/LazerTimer.java1
-rw-r--r--src/main/java/de/hysky/skyblocker/utils/Area.java1
-rw-r--r--src/main/java/de/hysky/skyblocker/utils/Utils.java21
11 files changed, 49 insertions, 35 deletions
diff --git a/src/main/java/de/hysky/skyblocker/config/configs/SlayersConfig.java b/src/main/java/de/hysky/skyblocker/config/configs/SlayersConfig.java
index 6bf315a2..362b76cc 100644
--- a/src/main/java/de/hysky/skyblocker/config/configs/SlayersConfig.java
+++ b/src/main/java/de/hysky/skyblocker/config/configs/SlayersConfig.java
@@ -71,7 +71,7 @@ public class SlayersConfig {
public boolean enableHolyIceIndicator = true;
@SerialEntry
- public int holyIceIndicatorTickDelay = 10;
+ public int holyIceIndicatorTickDelay = 5;
@SerialEntry
public int holyIceUpdateFrequency = 5;
diff --git a/src/main/java/de/hysky/skyblocker/events/SkyblockEvents.java b/src/main/java/de/hysky/skyblocker/events/SkyblockEvents.java
index 6add9fb6..4df22fe3 100644
--- a/src/main/java/de/hysky/skyblocker/events/SkyblockEvents.java
+++ b/src/main/java/de/hysky/skyblocker/events/SkyblockEvents.java
@@ -1,5 +1,6 @@
package de.hysky.skyblocker.events;
+import de.hysky.skyblocker.utils.Area;
import de.hysky.skyblocker.utils.Location;
import de.hysky.skyblocker.utils.purse.PurseChangeCause;
import net.fabricmc.api.EnvType;
@@ -27,6 +28,12 @@ public final class SkyblockEvents {
}
});
+ public static final Event<SkyblockAreaChange> AREA_CHANGE = EventFactory.createArrayBacked(SkyblockAreaChange.class, callbacks -> area -> {
+ for (SkyblockAreaChange callback : callbacks) {
+ callback.onSkyblockAreaChange(area);
+ }
+ });
+
/**
* Called when the player's Skyblock profile changes.
*
@@ -76,6 +83,12 @@ public final class SkyblockEvents {
@Environment(EnvType.CLIENT)
@FunctionalInterface
+ public interface SkyblockAreaChange {
+ void onSkyblockAreaChange(Area area);
+ }
+
+ @Environment(EnvType.CLIENT)
+ @FunctionalInterface
public interface ProfileChange {
void onSkyblockProfileChange(String prevProfileId, String profileId);
}
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/slayers/SlayerManager.java b/src/main/java/de/hysky/skyblocker/skyblock/slayers/SlayerManager.java
index 7e1fbf73..de1290b7 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/slayers/SlayerManager.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/slayers/SlayerManager.java
@@ -7,6 +7,7 @@ import de.hysky.skyblocker.events.SkyblockEvents;
import de.hysky.skyblocker.skyblock.slayers.boss.vampire.ManiaIndicator;
import de.hysky.skyblocker.skyblock.slayers.boss.vampire.StakeIndicator;
import de.hysky.skyblocker.skyblock.slayers.boss.vampire.TwinClawsIndicator;
+import de.hysky.skyblocker.utils.Area;
import de.hysky.skyblocker.utils.Location;
import de.hysky.skyblocker.utils.Utils;
import de.hysky.skyblocker.utils.mayor.MayorUtils;
@@ -56,20 +57,26 @@ public class SlayerManager {
public static void init() {
ClientReceiveMessageEvents.GAME.register(SlayerManager::onChatMessage);
SkyblockEvents.LOCATION_CHANGE.register(SlayerManager::onLocationChange);
+ SkyblockEvents.AREA_CHANGE.register(SlayerManager::onAreaChange);
Scheduler.INSTANCE.scheduleCyclic(TwinClawsIndicator::updateIce, SkyblockerConfigManager.get().slayers.vampireSlayer.holyIceUpdateFrequency);
Scheduler.INSTANCE.scheduleCyclic(ManiaIndicator::updateMania, SkyblockerConfigManager.get().slayers.vampireSlayer.maniaUpdateFrequency);
Scheduler.INSTANCE.scheduleCyclic(StakeIndicator::updateStake, SkyblockerConfigManager.get().slayers.vampireSlayer.steakStakeUpdateFrequency);
}
- private static void onLocationChange(Location location) {
- if (isBossSpawned()) {
- slayerQuest = null;
- bossFight = null;
+ private static void onAreaChange(Area area) {
+ if (area.equals(Area.CHATEAU)) {
+ getSlayerBossInfo(false);
}
}
+ private static void onLocationChange(Location location) {
+ slayerQuest = null;
+ bossFight = null;
+ Scheduler.INSTANCE.schedule(() -> getSlayerBossInfo(false), 20 * 2);
+ }
+
private static void onChatMessage(Text text, boolean overlay) {
- if (!Utils.isOnSkyblock() || overlay) return;
+ if (overlay || !Utils.isOnSkyblock()) return;
String message = text.getString();
switch (message.replaceFirst("^\\s+", "")) {
@@ -157,13 +164,6 @@ public class SlayerManager {
}
/**
- * Gets The slayer info from scoreboard when player joins SkyBlock
- */
- public static void getSlayerInfoOnJoin() {
- Scheduler.INSTANCE.schedule(() -> getSlayerBossInfo(false), 20 * 2); //2 seconds
- }
-
- /**
* Checks if the given armor stand is a slayer boss or miniboss and saves it to the corresponding field.
* <p>This is the main mechanism for detecting slayer bosses and minibosses. All other features rely on information processed here.
*
@@ -171,7 +171,7 @@ public class SlayerManager {
* {@link #findClosestMobEntity(EntityType, ArmorStandEntity)} could be modified and run more than once to ensure the correct entity is found.
*/
public static void checkSlayerBoss(ArmorStandEntity armorStand) {
- if (slayerQuest == null || (isBossSpawned() && bossFight.boss != null) || !armorStand.hasCustomName()) return;
+ if (slayerQuest == null || !armorStand.hasCustomName() || (isBossSpawned() && bossFight.boss != null)) return;
if (armorStand.getName().getString().contains(CLIENT.getSession().getUsername())) {
for (Entity otherArmorStands : getEntityArmorStands(armorStand, 1.5f)) {
Matcher matcher = SLAYER_PATTERN.matcher(otherArmorStands.getName().getString());
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/slayers/boss/demonlord/FirePillarAnnouncer.java b/src/main/java/de/hysky/skyblocker/skyblock/slayers/boss/demonlord/FirePillarAnnouncer.java
index 0c60a5a8..cd5ecb9a 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/slayers/boss/demonlord/FirePillarAnnouncer.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/slayers/boss/demonlord/FirePillarAnnouncer.java
@@ -3,13 +3,13 @@ package de.hysky.skyblocker.skyblock.slayers.boss.demonlord;
import de.hysky.skyblocker.config.SkyblockerConfigManager;
import de.hysky.skyblocker.config.configs.SlayersConfig;
import de.hysky.skyblocker.skyblock.slayers.SlayerManager;
+import de.hysky.skyblocker.skyblock.slayers.SlayerType;
import de.hysky.skyblocker.utils.Utils;
import de.hysky.skyblocker.utils.render.RenderHelper;
import de.hysky.skyblocker.utils.render.title.Title;
import de.hysky.skyblocker.utils.render.title.TitleContainer;
import net.minecraft.client.MinecraftClient;
import net.minecraft.entity.Entity;
-import net.minecraft.entity.decoration.ArmorStandEntity;
import net.minecraft.text.Text;
import net.minecraft.util.Formatting;
@@ -30,7 +30,7 @@ public class FirePillarAnnouncer {
* @param entity The updated entity that is checked to be a fire pillar
*/
public static void checkFirePillar(Entity entity) {
- if (Utils.isInCrimson() && SlayerManager.isBossSpawned() && entity instanceof ArmorStandEntity) {
+ if (Utils.isInCrimson() && SlayerManager.isInSlayerType(SlayerType.DEMONLORD)) {
String entityName = entity.getName().getString();
Matcher matcher = FIRE_PILLAR_PATTERN.matcher(entityName);
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/slayers/boss/vampire/ManiaIndicator.java b/src/main/java/de/hysky/skyblocker/skyblock/slayers/boss/vampire/ManiaIndicator.java
index 3c343a4c..c4c38035 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/slayers/boss/vampire/ManiaIndicator.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/slayers/boss/vampire/ManiaIndicator.java
@@ -2,7 +2,7 @@ package de.hysky.skyblocker.skyblock.slayers.boss.vampire;
import de.hysky.skyblocker.config.SkyblockerConfigManager;
import de.hysky.skyblocker.skyblock.slayers.SlayerManager;
-import de.hysky.skyblocker.utils.Utils;
+import de.hysky.skyblocker.skyblock.slayers.SlayerType;
import de.hysky.skyblocker.utils.render.RenderHelper;
import de.hysky.skyblocker.utils.render.title.Title;
import de.hysky.skyblocker.utils.render.title.TitleContainer;
@@ -17,7 +17,7 @@ public class ManiaIndicator {
private static final Title title = new Title("skyblocker.rift.mania", Formatting.RED);
public static void updateMania() {
- if (!SkyblockerConfigManager.get().slayers.vampireSlayer.enableManiaIndicator || !Utils.isOnSkyblock() || !Utils.isInTheRift() || !(Utils.getIslandArea().contains("Stillgore Château")) || !SlayerManager.isBossSpawned()) {
+ if (!SkyblockerConfigManager.get().slayers.vampireSlayer.enableManiaIndicator || !SlayerManager.isInSlayerType(SlayerType.VAMPIRE)) {
TitleContainer.removeTitle(title);
return;
}
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/slayers/boss/vampire/StakeIndicator.java b/src/main/java/de/hysky/skyblocker/skyblock/slayers/boss/vampire/StakeIndicator.java
index b9ad5925..0e9c8f98 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/slayers/boss/vampire/StakeIndicator.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/slayers/boss/vampire/StakeIndicator.java
@@ -2,7 +2,7 @@ package de.hysky.skyblocker.skyblock.slayers.boss.vampire;
import de.hysky.skyblocker.config.SkyblockerConfigManager;
import de.hysky.skyblocker.skyblock.slayers.SlayerManager;
-import de.hysky.skyblocker.utils.Utils;
+import de.hysky.skyblocker.skyblock.slayers.SlayerType;
import de.hysky.skyblocker.utils.render.RenderHelper;
import de.hysky.skyblocker.utils.render.title.Title;
import de.hysky.skyblocker.utils.render.title.TitleContainer;
@@ -13,7 +13,7 @@ public class StakeIndicator {
private static final Title title = new Title("skyblocker.rift.stakeNow", Formatting.RED);
public static void updateStake() {
- if (!SkyblockerConfigManager.get().slayers.vampireSlayer.enableSteakStakeIndicator || !Utils.isOnSkyblock() || !Utils.isInTheRift() || !Utils.getIslandArea().contains("Stillgore Château") || !SlayerManager.isBossSpawned()) {
+ if (!SkyblockerConfigManager.get().slayers.vampireSlayer.enableSteakStakeIndicator || !SlayerManager.isInSlayerType(SlayerType.VAMPIRE)) {
TitleContainer.removeTitle(title);
return;
}
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/slayers/boss/vampire/TwinClawsIndicator.java b/src/main/java/de/hysky/skyblocker/skyblock/slayers/boss/vampire/TwinClawsIndicator.java
index cec983aa..e03e56d3 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/slayers/boss/vampire/TwinClawsIndicator.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/slayers/boss/vampire/TwinClawsIndicator.java
@@ -2,7 +2,7 @@ package de.hysky.skyblocker.skyblock.slayers.boss.vampire;
import de.hysky.skyblocker.config.SkyblockerConfigManager;
import de.hysky.skyblocker.skyblock.slayers.SlayerManager;
-import de.hysky.skyblocker.utils.Utils;
+import de.hysky.skyblocker.skyblock.slayers.SlayerType;
import de.hysky.skyblocker.utils.render.RenderHelper;
import de.hysky.skyblocker.utils.render.title.Title;
import de.hysky.skyblocker.utils.render.title.TitleContainer;
@@ -15,7 +15,7 @@ public class TwinClawsIndicator {
private static boolean scheduled = false;
public static void updateIce() {
- if (!SkyblockerConfigManager.get().slayers.vampireSlayer.enableHolyIceIndicator || !Utils.isOnSkyblock() || !Utils.isInTheRift() || !(Utils.getIslandArea().contains("Stillgore Château")) || !SlayerManager.isBossSpawned()) {
+ if (!SkyblockerConfigManager.get().slayers.vampireSlayer.enableHolyIceIndicator || !SlayerManager.isInSlayerType(SlayerType.VAMPIRE)) {
TitleContainer.removeTitle(title);
return;
}
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/slayers/boss/voidgloom/BeaconHighlighter.java b/src/main/java/de/hysky/skyblocker/skyblock/slayers/boss/voidgloom/BeaconHighlighter.java
index 9dff42b7..553ed92a 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/slayers/boss/voidgloom/BeaconHighlighter.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/slayers/boss/voidgloom/BeaconHighlighter.java
@@ -2,6 +2,8 @@ package de.hysky.skyblocker.skyblock.slayers.boss.voidgloom;
import de.hysky.skyblocker.annotations.Init;
import de.hysky.skyblocker.config.SkyblockerConfigManager;
+import de.hysky.skyblocker.skyblock.slayers.SlayerManager;
+import de.hysky.skyblocker.skyblock.slayers.SlayerType;
import de.hysky.skyblocker.utils.Utils;
import de.hysky.skyblocker.utils.render.RenderHelper;
import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet;
@@ -46,7 +48,7 @@ public class BeaconHighlighter {
* @param context An instance of WorldRenderContext for the RenderHelper to use
*/
private static void render(WorldRenderContext context) {
- if (Utils.isInTheEnd() && SkyblockerConfigManager.get().slayers.endermanSlayer.highlightBeacons) {
+ if (Utils.isInTheEnd() && SkyblockerConfigManager.get().slayers.endermanSlayer.highlightBeacons && SlayerManager.isInSlayerType(SlayerType.VOIDGLOOM)) {
for (BlockPos pos : beaconPositions) {
RenderHelper.renderFilled(context, pos, RED_COLOR_COMPONENTS, 0.5f, true);
}
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/slayers/boss/voidgloom/LazerTimer.java b/src/main/java/de/hysky/skyblocker/skyblock/slayers/boss/voidgloom/LazerTimer.java
index a2e4eb37..f496fdce 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/slayers/boss/voidgloom/LazerTimer.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/slayers/boss/voidgloom/LazerTimer.java
@@ -53,7 +53,6 @@ public class LazerTimer {
.append(Text.literal(timeText).formatted(Formatting.GREEN).formatted(Formatting.BOLD));
RenderHelper.renderText(context, renderText, boss.getPos().add(0, 2, 0), true);
-
}
}
}
diff --git a/src/main/java/de/hysky/skyblocker/utils/Area.java b/src/main/java/de/hysky/skyblocker/utils/Area.java
index d15f417b..c5a62e1d 100644
--- a/src/main/java/de/hysky/skyblocker/utils/Area.java
+++ b/src/main/java/de/hysky/skyblocker/utils/Area.java
@@ -7,6 +7,7 @@ import java.util.Arrays;
*/
public enum Area {
CARNIVAL("Carnival"),
+ CHATEAU("Stillgore Château"),
UNKNOWN("Unknown");
private final String name;
diff --git a/src/main/java/de/hysky/skyblocker/utils/Utils.java b/src/main/java/de/hysky/skyblocker/utils/Utils.java
index 972abd3c..c6266cb7 100644
--- a/src/main/java/de/hysky/skyblocker/utils/Utils.java
+++ b/src/main/java/de/hysky/skyblocker/utils/Utils.java
@@ -361,22 +361,22 @@ public class Utils {
TEXT_SCOREBOARD.addAll(textLines);
STRING_SCOREBOARD.addAll(stringLines);
- Utils.updatePurse();
- SlayerManager.getSlayerBossInfo(true);
- updateArea();
+ if (isOnSkyblock) {
+ Utils.updatePurse();
+ SlayerManager.getSlayerBossInfo(true);
+ updateArea();
+ }
} catch (NullPointerException e) {
//Do nothing
}
}
- //TODO add event in the future
private static void updateArea() {
- if (isOnSkyblock) {
- String areaName = getIslandArea().replaceAll("[⏣ф]", "").strip();
- area = Area.from(areaName);
- } else {
- area = Area.UNKNOWN;
- }
+ String areaName = getIslandArea().replaceAll("[⏣ф]", "").strip();
+ Area oldArea = area;
+ area = Area.from(areaName);
+
+ if (!oldArea.equals(area)) SkyblockEvents.AREA_CHANGE.invoker().onSkyblockAreaChange(area);
}
public static void updatePurse() {
@@ -441,7 +441,6 @@ public class Utils {
if (Utils.gameType.equals("SKYBLOCK")) {
isOnSkyblock = true;
tickProfileId();
- SlayerManager.getSlayerInfoOnJoin();
if (!previousServerType.equals("SKYBLOCK")) SkyblockEvents.JOIN.invoker().onSkyblockJoin();
} else if (previousServerType.equals("SKYBLOCK")) {