diff options
author | akarahdev <endisticbutitsforgit@gmail.com> | 2024-01-18 09:20:11 -0500 |
---|---|---|
committer | akarahdev <endisticbutitsforgit@gmail.com> | 2024-01-22 20:18:14 -0500 |
commit | 05805e8c4b36f34cbfdb57d1ff2c14dd9e115779 (patch) | |
tree | a3246339d6203579a72b2a6e3d71bfacb2f82ae5 /src/main/java/de | |
parent | ba5b8b0265eb1db1251dc80692c091616956a5fa (diff) | |
download | Skyblocker-05805e8c4b36f34cbfdb57d1ff2c14dd9e115779.tar.gz Skyblocker-05805e8c4b36f34cbfdb57d1ff2c14dd9e115779.tar.bz2 Skyblocker-05805e8c4b36f34cbfdb57d1ff2c14dd9e115779.zip |
improve beacons
Diffstat (limited to 'src/main/java/de')
-rw-r--r-- | src/main/java/de/hysky/skyblocker/SkyblockerMod.java | 2 | ||||
-rw-r--r-- | src/main/java/de/hysky/skyblocker/skyblock/end/BeaconHighlighter.java (renamed from src/main/java/de/hysky/skyblocker/skyblock/endermanslayer/BeaconHighlighter.java) | 48 | ||||
-rw-r--r-- | src/main/java/de/hysky/skyblocker/utils/Utils.java | 8 |
3 files changed, 36 insertions, 22 deletions
diff --git a/src/main/java/de/hysky/skyblocker/SkyblockerMod.java b/src/main/java/de/hysky/skyblocker/SkyblockerMod.java index 905478ce..3fca09ce 100644 --- a/src/main/java/de/hysky/skyblocker/SkyblockerMod.java +++ b/src/main/java/de/hysky/skyblocker/SkyblockerMod.java @@ -14,7 +14,7 @@ import de.hysky.skyblocker.skyblock.dungeon.puzzle.waterboard.Waterboard; import de.hysky.skyblocker.skyblock.dungeon.secrets.DungeonManager; import de.hysky.skyblocker.skyblock.dungeon.secrets.SecretsTracker; import de.hysky.skyblocker.skyblock.dwarven.DwarvenHud; -import de.hysky.skyblocker.skyblock.endermanslayer.BeaconHighlighter; +import de.hysky.skyblocker.skyblock.end.BeaconHighlighter; import de.hysky.skyblocker.skyblock.item.*; import de.hysky.skyblocker.skyblock.item.tooltip.BackpackPreview; import de.hysky.skyblocker.skyblock.item.tooltip.ItemTooltip; diff --git a/src/main/java/de/hysky/skyblocker/skyblock/endermanslayer/BeaconHighlighter.java b/src/main/java/de/hysky/skyblocker/skyblock/end/BeaconHighlighter.java index 44e86966..1815179f 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/endermanslayer/BeaconHighlighter.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/end/BeaconHighlighter.java @@ -1,37 +1,39 @@ -package de.hysky.skyblocker.skyblock.endermanslayer; +package de.hysky.skyblocker.skyblock.end; import de.hysky.skyblocker.config.SkyblockerConfigManager; -import de.hysky.skyblocker.skyblock.entity.MobGlow; -import de.hysky.skyblocker.utils.Tickable; import de.hysky.skyblocker.utils.render.RenderHelper; -import de.hysky.skyblocker.utils.render.Renderable; import de.hysky.skyblocker.utils.scheduler.Scheduler; import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderContext; import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderEvents; -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; import net.minecraft.client.MinecraftClient; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NbtCompound; -import net.minecraft.nbt.NbtString; import net.minecraft.util.math.BlockPos; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; + +import java.util.ArrayList; +import java.util.List; public class BeaconHighlighter { - static BlockPos pos = null; + static List<BlockPos> pos = new ArrayList<>(); + /** + * Initializes the beacon highlighting system. + * `BeaconHighlighter::render` is called after translucent rendering. + * `BeaconHighlighter::update` should be called every 5 ticks. + */ public static void init() { WorldRenderEvents.AFTER_TRANSLUCENT.register(BeaconHighlighter::render); - Scheduler.INSTANCE.scheduleCyclic(BeaconHighlighter::update, 20); + Scheduler.INSTANCE.scheduleCyclic(BeaconHighlighter::update, 5); } - public static void update() { - Logger logger = LoggerFactory.getLogger(BeaconHighlighter.class); + /** + * Updates the position of the beacon. + * It checks in a 15 block radius on the X/Z axis, and a ~5 block radius on the Y axis. + * If a beacon is found, `pos` is updated to the beacon's position. + */ + public static void update() { var player = MinecraftClient.getInstance().player; var world = MinecraftClient.getInstance().world; - pos = null; + pos.clear(); if(player != null && world != null && SkyblockerConfigManager.get().slayer.endermanSlayer.highlightBeacons) { for(int x = (player.getBlockPos().getX()-15); x<player.getBlockPos().getX()+15; x++) { @@ -39,7 +41,7 @@ public class BeaconHighlighter { for(int y = (player.getBlockPos().getY()-3); y<player.getBlockPos().getY()+7; y++) { var state = world.getBlockState(new BlockPos(x, y, z)); if(state.toString().contains("minecraft:beacon")) { - pos = new BlockPos(x, y, z); + pos.add(new BlockPos(x, y, z)); } } } @@ -47,16 +49,20 @@ public class BeaconHighlighter { } } + /** + * Renders the beacon glow around it. It is rendered in a red color with 50% opacity, and + * is visible through walls. + * @param context An instance of WorldRenderContext for the RenderHelper to use + */ public static void render(WorldRenderContext context) { - Logger logger = LoggerFactory.getLogger(BeaconHighlighter.class); - if(pos != null) { + pos.forEach((it) -> { RenderHelper.renderFilled( context, - pos, + it, new float[]{1.0f, 0.0f, 0.0f}, 0.5f, true ); - } + }); } } diff --git a/src/main/java/de/hysky/skyblocker/utils/Utils.java b/src/main/java/de/hysky/skyblocker/utils/Utils.java index 53c0ff4a..3f07622c 100644 --- a/src/main/java/de/hysky/skyblocker/utils/Utils.java +++ b/src/main/java/de/hysky/skyblocker/utils/Utils.java @@ -90,6 +90,14 @@ public class Utils { return getLocationRaw().equals(TheRift.LOCATION); } + /** + * @return if the player is in the end island + */ + public static boolean isInTheEnd() { + // /locraw returns "combat_3" when in The End + return getLocationRaw().equals("combat_3"); + } + public static boolean isInjected() { return isInjected; } |