From 05805e8c4b36f34cbfdb57d1ff2c14dd9e115779 Mon Sep 17 00:00:00 2001 From: akarahdev Date: Thu, 18 Jan 2024 09:20:11 -0500 Subject: improve beacons --- .../java/de/hysky/skyblocker/SkyblockerMod.java | 2 +- .../skyblocker/skyblock/end/BeaconHighlighter.java | 68 ++++++++++++++++++++++ .../skyblock/endermanslayer/BeaconHighlighter.java | 62 -------------------- src/main/java/de/hysky/skyblocker/utils/Utils.java | 8 +++ 4 files changed, 77 insertions(+), 63 deletions(-) create mode 100644 src/main/java/de/hysky/skyblocker/skyblock/end/BeaconHighlighter.java delete mode 100644 src/main/java/de/hysky/skyblocker/skyblock/endermanslayer/BeaconHighlighter.java (limited to 'src/main/java/de/hysky') 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/end/BeaconHighlighter.java b/src/main/java/de/hysky/skyblocker/skyblock/end/BeaconHighlighter.java new file mode 100644 index 00000000..1815179f --- /dev/null +++ b/src/main/java/de/hysky/skyblocker/skyblock/end/BeaconHighlighter.java @@ -0,0 +1,68 @@ +package de.hysky.skyblocker.skyblock.end; + +import de.hysky.skyblocker.config.SkyblockerConfigManager; +import de.hysky.skyblocker.utils.render.RenderHelper; +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.client.MinecraftClient; +import net.minecraft.util.math.BlockPos; + +import java.util.ArrayList; +import java.util.List; + +public class BeaconHighlighter { + static List 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, 5); + } + + /** + * 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.clear(); + if(player != null && world != null && + SkyblockerConfigManager.get().slayer.endermanSlayer.highlightBeacons) { + for(int x = (player.getBlockPos().getX()-15); x { + RenderHelper.renderFilled( + context, + it, + new float[]{1.0f, 0.0f, 0.0f}, + 0.5f, + true + ); + }); + } +} diff --git a/src/main/java/de/hysky/skyblocker/skyblock/endermanslayer/BeaconHighlighter.java b/src/main/java/de/hysky/skyblocker/skyblock/endermanslayer/BeaconHighlighter.java deleted file mode 100644 index 44e86966..00000000 --- a/src/main/java/de/hysky/skyblocker/skyblock/endermanslayer/BeaconHighlighter.java +++ /dev/null @@ -1,62 +0,0 @@ -package de.hysky.skyblocker.skyblock.endermanslayer; - -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; - -public class BeaconHighlighter { - static BlockPos pos = null; - - public static void init() { - WorldRenderEvents.AFTER_TRANSLUCENT.register(BeaconHighlighter::render); - Scheduler.INSTANCE.scheduleCyclic(BeaconHighlighter::update, 20); - } - - public static void update() { - Logger logger = LoggerFactory.getLogger(BeaconHighlighter.class); - - var player = MinecraftClient.getInstance().player; - var world = MinecraftClient.getInstance().world; - pos = null; - if(player != null && world != null && - SkyblockerConfigManager.get().slayer.endermanSlayer.highlightBeacons) { - for(int x = (player.getBlockPos().getX()-15); x