diff options
Diffstat (limited to 'src/main/java/de/hysky/skyblocker/skyblock/end/BeaconHighlighter.java')
-rw-r--r-- | src/main/java/de/hysky/skyblocker/skyblock/end/BeaconHighlighter.java | 40 |
1 files changed, 40 insertions, 0 deletions
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..d2269482 --- /dev/null +++ b/src/main/java/de/hysky/skyblocker/skyblock/end/BeaconHighlighter.java @@ -0,0 +1,40 @@ +package de.hysky.skyblocker.skyblock.end; + +import de.hysky.skyblocker.config.SkyblockerConfigManager; +import de.hysky.skyblocker.utils.Utils; +import de.hysky.skyblocker.utils.render.RenderHelper; +import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderContext; +import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderEvents; +import net.minecraft.util.math.BlockPos; + +import java.util.ArrayList; +import java.util.List; + +public class BeaconHighlighter { + public static final List<BlockPos> beaconPositions = new ArrayList<>(); + + /** + * Initializes the beacon highlighting system. + * {@link BeaconHighlighter#render(WorldRenderContext)} is called after translucent rendering. + */ + public static void init() { + WorldRenderEvents.AFTER_TRANSLUCENT.register(BeaconHighlighter::render); + } + + /** + * 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) { + if (Utils.isInTheEnd() && SkyblockerConfigManager.get().slayer.endermanSlayer.highlightBeacons) + beaconPositions.forEach((position) -> RenderHelper.renderFilled( + context, + position, + new float[]{1.0f, 0.0f, 0.0f}, + 0.5f, + false + )); + } +} |