aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/de/hysky/skyblocker/skyblock
diff options
context:
space:
mode:
authorakarahdev <endisticbutitsforgit@gmail.com>2024-01-18 09:20:11 -0500
committerakarahdev <endisticbutitsforgit@gmail.com>2024-01-22 20:18:14 -0500
commit05805e8c4b36f34cbfdb57d1ff2c14dd9e115779 (patch)
treea3246339d6203579a72b2a6e3d71bfacb2f82ae5 /src/main/java/de/hysky/skyblocker/skyblock
parentba5b8b0265eb1db1251dc80692c091616956a5fa (diff)
downloadSkyblocker-05805e8c4b36f34cbfdb57d1ff2c14dd9e115779.tar.gz
Skyblocker-05805e8c4b36f34cbfdb57d1ff2c14dd9e115779.tar.bz2
Skyblocker-05805e8c4b36f34cbfdb57d1ff2c14dd9e115779.zip
improve beacons
Diffstat (limited to 'src/main/java/de/hysky/skyblocker/skyblock')
-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
1 files changed, 27 insertions, 21 deletions
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
);
- }
+ });
}
}