From fc65ff5b469fb384d2df422a5a6d8437012a819b Mon Sep 17 00:00:00 2001 From: Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com> Date: Sat, 22 Jul 2023 14:43:00 +0800 Subject: Refactor utils package --- .../skyblocker/skyblock/dungeon/DungeonBlaze.java | 51 ++++++++++------------ 1 file changed, 24 insertions(+), 27 deletions(-) (limited to 'src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonBlaze.java') diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonBlaze.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonBlaze.java index d0dcf1e1..94a81f15 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonBlaze.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonBlaze.java @@ -1,11 +1,10 @@ package me.xmrvizzy.skyblocker.skyblock.dungeon; import it.unimi.dsi.fastutil.objects.ObjectIntPair; +import me.xmrvizzy.skyblocker.SkyblockerMod; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; -import me.xmrvizzy.skyblocker.utils.RenderHelper; -import me.xmrvizzy.skyblocker.utils.RenderUtils; import me.xmrvizzy.skyblocker.utils.Utils; -import me.xmrvizzy.skyblocker.utils.color.QuadColor; +import me.xmrvizzy.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.client.MinecraftClient; @@ -22,31 +21,32 @@ import java.util.List; public class DungeonBlaze { private static final Logger LOGGER = LoggerFactory.getLogger(DungeonBlaze.class.getName()); + private static final float[] GREEN_COLOR_COMPONENTS = {0.0F, 1.0F, 0.0F}; private static final float[] WHITE_COLOR_COMPONENTS = { 1.0f, 1.0f, 1.0f }; static Entity highestBlaze = null; static Entity lowestBlaze = null; static Entity nextHighestBlaze = null; static Entity nextLowestBlaze = null; - static boolean renderHooked = false; - + + public static void init() { + SkyblockerMod.getInstance().scheduler.scheduleCyclic(DungeonBlaze::update, 10); + WorldRenderEvents.BEFORE_DEBUG_RENDER.register(DungeonBlaze::blazeRenderer); + } + public static void update() { + if (!SkyblockerConfig.get().locations.dungeons.blazesolver) return; ClientWorld world = MinecraftClient.getInstance().world; if (world == null || !Utils.isInDungeons()) return; - if (!renderHooked){ - - WorldRenderEvents.BEFORE_DEBUG_RENDER.register(DungeonBlaze::blazeRenderer); - renderHooked = true; - } Iterable entities = world.getEntities(); List> blazes = new ArrayList<>(); for (Entity entity : entities) { String blazeName = entity.getName().getString(); - + if (blazeName.contains("Blaze") && blazeName.contains("/")) { try { int health = Integer.parseInt(blazeName.substring(blazeName.indexOf("/") + 1, blazeName.length() - 1)); - + blazes.add(ObjectIntPair.of(entity, health)); } catch (NumberFormatException ex) { ex.printStackTrace(); @@ -70,36 +70,33 @@ public class DungeonBlaze { nextHighestBlaze = blazes.get(highestIndex - 1).left(); } } - + } - public static void blazeRenderer(WorldRenderContext wrc) { - QuadColor outlineColorRed = QuadColor.single( 0.0F, 1.0F, 0.0F, 1f); - QuadColor outlineColorGreen = QuadColor.single(1.0F, 0.0F, 0.0F, 1f); - QuadColor outlineColorWhite = QuadColor.single(1.0f, 1.0f, 1.0f, 1.0f); - + + public static void blazeRenderer(WorldRenderContext context) { try { - if (highestBlaze != null && lowestBlaze != null && highestBlaze.isAlive() && lowestBlaze.isAlive() && SkyblockerConfig.get().locations.dungeons.blazesolver){ + if (SkyblockerConfig.get().locations.dungeons.blazesolver && highestBlaze != null && lowestBlaze != null && highestBlaze.isAlive() && lowestBlaze.isAlive()) { /* Outline */ if (highestBlaze.getY() < 69) { Box blaze = highestBlaze.getBoundingBox().expand(0.3, 0.9, 0.3).offset(0, -1.1, 0); - RenderUtils.drawBoxOutline(blaze, outlineColorRed, 5f); - + RenderHelper.renderOutline(context, blaze, GREEN_COLOR_COMPONENTS); + if (nextHighestBlaze != null && nextHighestBlaze.isAlive() && nextHighestBlaze != highestBlaze) { Box nextBlaze = nextHighestBlaze.getBoundingBox().expand(0.3, 0.9, 0.3).offset(0, -1.1, 0); - RenderUtils.drawBoxOutline(nextBlaze, outlineColorWhite, 5f); - RenderHelper.renderLinesFromPoints(wrc, new Vec3d[] { blaze.getCenter(), nextBlaze.getCenter() }, WHITE_COLOR_COMPONENTS, 1f, 5f); + RenderHelper.renderOutline(context, nextBlaze, WHITE_COLOR_COMPONENTS); + RenderHelper.renderLinesFromPoints(context, new Vec3d[] { blaze.getCenter(), nextBlaze.getCenter() }, WHITE_COLOR_COMPONENTS, 1f, 5f); } } /* Outline */ if (lowestBlaze.getY() > 69) { Box blaze = lowestBlaze.getBoundingBox().expand(0.3, 0.9, 0.3).offset(0, -1.1, 0); - RenderUtils.drawBoxOutline(blaze, outlineColorRed, 5f); - + RenderHelper.renderOutline(context, blaze, GREEN_COLOR_COMPONENTS); + if (nextLowestBlaze != null && nextLowestBlaze.isAlive() && nextLowestBlaze != lowestBlaze) { Box nextBlaze = nextLowestBlaze.getBoundingBox().expand(0.3, 0.9, 0.3).offset(0, -1.1, 0); - RenderUtils.drawBoxOutline(nextBlaze, outlineColorWhite, 5f); - RenderHelper.renderLinesFromPoints(wrc, new Vec3d[] { blaze.getCenter(), nextBlaze.getCenter() }, WHITE_COLOR_COMPONENTS, 1f, 5f); + RenderHelper.renderOutline(context, nextBlaze, WHITE_COLOR_COMPONENTS); + RenderHelper.renderLinesFromPoints(context, new Vec3d[] { blaze.getCenter(), nextBlaze.getCenter() }, WHITE_COLOR_COMPONENTS, 1f, 5f); } } } -- cgit From f703df1f93a7730e818730095df8f6e569f3d647 Mon Sep 17 00:00:00 2001 From: Aaron <51387595+AzureAaron@users.noreply.github.com> Date: Tue, 1 Aug 2023 23:33:59 -0400 Subject: Vanilla box rendering --- .../skyblocker/skyblock/dungeon/DungeonBlaze.java | 8 +++---- .../skyblocker/utils/render/RenderHelper.java | 28 +++++++++++++++++++--- 2 files changed, 29 insertions(+), 7 deletions(-) (limited to 'src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonBlaze.java') diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonBlaze.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonBlaze.java index 94a81f15..c024e189 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonBlaze.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonBlaze.java @@ -79,11 +79,11 @@ public class DungeonBlaze { /* Outline */ if (highestBlaze.getY() < 69) { Box blaze = highestBlaze.getBoundingBox().expand(0.3, 0.9, 0.3).offset(0, -1.1, 0); - RenderHelper.renderOutline(context, blaze, GREEN_COLOR_COMPONENTS); + RenderHelper.renderBox(context, blaze, GREEN_COLOR_COMPONENTS); if (nextHighestBlaze != null && nextHighestBlaze.isAlive() && nextHighestBlaze != highestBlaze) { Box nextBlaze = nextHighestBlaze.getBoundingBox().expand(0.3, 0.9, 0.3).offset(0, -1.1, 0); - RenderHelper.renderOutline(context, nextBlaze, WHITE_COLOR_COMPONENTS); + RenderHelper.renderBox(context, nextBlaze, WHITE_COLOR_COMPONENTS); RenderHelper.renderLinesFromPoints(context, new Vec3d[] { blaze.getCenter(), nextBlaze.getCenter() }, WHITE_COLOR_COMPONENTS, 1f, 5f); } } @@ -91,11 +91,11 @@ public class DungeonBlaze { /* Outline */ if (lowestBlaze.getY() > 69) { Box blaze = lowestBlaze.getBoundingBox().expand(0.3, 0.9, 0.3).offset(0, -1.1, 0); - RenderHelper.renderOutline(context, blaze, GREEN_COLOR_COMPONENTS); + RenderHelper.renderBox(context, blaze, GREEN_COLOR_COMPONENTS); if (nextLowestBlaze != null && nextLowestBlaze.isAlive() && nextLowestBlaze != lowestBlaze) { Box nextBlaze = nextLowestBlaze.getBoundingBox().expand(0.3, 0.9, 0.3).offset(0, -1.1, 0); - RenderHelper.renderOutline(context, nextBlaze, WHITE_COLOR_COMPONENTS); + RenderHelper.renderBox(context, nextBlaze, WHITE_COLOR_COMPONENTS); RenderHelper.renderLinesFromPoints(context, new Vec3d[] { blaze.getCenter(), nextBlaze.getCenter() }, WHITE_COLOR_COMPONENTS, 1f, 5f); } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/render/RenderHelper.java b/src/main/java/me/xmrvizzy/skyblocker/utils/render/RenderHelper.java index 77da702a..d3a547a9 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/utils/render/RenderHelper.java +++ b/src/main/java/me/xmrvizzy/skyblocker/utils/render/RenderHelper.java @@ -5,7 +5,6 @@ import com.mojang.blaze3d.platform.GlStateManager.SrcFactor; import com.mojang.blaze3d.systems.RenderSystem; import me.x150.renderer.render.Renderer3d; import me.xmrvizzy.skyblocker.mixin.accessor.BeaconBlockEntityRendererInvoker; -import me.xmrvizzy.skyblocker.utils.Boxes; import me.xmrvizzy.skyblocker.utils.render.culling.OcclusionCulling; import me.xmrvizzy.skyblocker.utils.render.title.Title; import me.xmrvizzy.skyblocker.utils.render.title.TitleContainer; @@ -13,6 +12,8 @@ import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderContext; import net.minecraft.client.MinecraftClient; import net.minecraft.client.render.*; import net.minecraft.client.render.VertexFormat.DrawMode; +import net.minecraft.client.render.VertexFormats; +import net.minecraft.client.render.WorldRenderer; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.sound.SoundEvent; import net.minecraft.util.Identifier; @@ -72,9 +73,30 @@ public class RenderHelper { } } - public static void renderOutline(WorldRenderContext context, Box box, float[] colorComponents) { + public static void renderBox(WorldRenderContext wrc, Box box, float[] colorComponents) { if (FrustumUtils.isVisible(box)) { - Renderer3d.renderOutline(context.matrixStack(), new Color(colorComponents[0], colorComponents[1], colorComponents[2]), Boxes.getMinVec(box), Boxes.getLengthVec(box)); + Vec3d camera = wrc.camera().getPos(); + MatrixStack matrices = wrc.matrixStack(); + Tessellator tessellator = RenderSystem.renderThreadTesselator(); + BufferBuilder buffer = tessellator.getBuffer(); + + RenderSystem.setShader(GameRenderer::getRenderTypeLinesProgram); + RenderSystem.setShaderColor(1f, 1f, 1f, 1f); + RenderSystem.lineWidth(2.5f); + RenderSystem.disableCull(); + RenderSystem.enableDepthTest(); + + matrices.push(); + matrices.translate(-camera.x, -camera.y, -camera.z); + + buffer.begin(DrawMode.LINES, VertexFormats.LINES); + WorldRenderer.drawBox(matrices, buffer, box, colorComponents[0] * 255f, colorComponents[1] * 255f, colorComponents[2] * 255f, 1f); + tessellator.draw(); + + matrices.pop(); + RenderSystem.lineWidth(1f); + RenderSystem.enableCull(); + RenderSystem.disableDepthTest(); } } -- cgit From 953932e3f0803f78e745e202dc3e4e25bc444593 Mon Sep 17 00:00:00 2001 From: Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com> Date: Wed, 2 Aug 2023 12:18:37 +0800 Subject: Refactor RenderHelper --- .../skyblocker/skyblock/dungeon/DungeonBlaze.java | 15 +++++++-------- .../skyblocker/utils/render/RenderHelper.java | 19 ++++++++++--------- 2 files changed, 17 insertions(+), 17 deletions(-) (limited to 'src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonBlaze.java') diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonBlaze.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonBlaze.java index c024e189..ef94d9ec 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonBlaze.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonBlaze.java @@ -48,8 +48,8 @@ public class DungeonBlaze { int health = Integer.parseInt(blazeName.substring(blazeName.indexOf("/") + 1, blazeName.length() - 1)); blazes.add(ObjectIntPair.of(entity, health)); - } catch (NumberFormatException ex) { - ex.printStackTrace(); + } catch (NumberFormatException e) { + LOGGER.error("[Skyblocker DungeonBlazeSolver] Failed to parse blaze health: " + blazeName, e); } } } @@ -79,11 +79,11 @@ public class DungeonBlaze { /* Outline */ if (highestBlaze.getY() < 69) { Box blaze = highestBlaze.getBoundingBox().expand(0.3, 0.9, 0.3).offset(0, -1.1, 0); - RenderHelper.renderBox(context, blaze, GREEN_COLOR_COMPONENTS); + RenderHelper.renderOutline(context, blaze, GREEN_COLOR_COMPONENTS, 5f); if (nextHighestBlaze != null && nextHighestBlaze.isAlive() && nextHighestBlaze != highestBlaze) { Box nextBlaze = nextHighestBlaze.getBoundingBox().expand(0.3, 0.9, 0.3).offset(0, -1.1, 0); - RenderHelper.renderBox(context, nextBlaze, WHITE_COLOR_COMPONENTS); + RenderHelper.renderOutline(context, nextBlaze, WHITE_COLOR_COMPONENTS, 5f); RenderHelper.renderLinesFromPoints(context, new Vec3d[] { blaze.getCenter(), nextBlaze.getCenter() }, WHITE_COLOR_COMPONENTS, 1f, 5f); } } @@ -91,18 +91,17 @@ public class DungeonBlaze { /* Outline */ if (lowestBlaze.getY() > 69) { Box blaze = lowestBlaze.getBoundingBox().expand(0.3, 0.9, 0.3).offset(0, -1.1, 0); - RenderHelper.renderBox(context, blaze, GREEN_COLOR_COMPONENTS); + RenderHelper.renderOutline(context, blaze, GREEN_COLOR_COMPONENTS, 5f); if (nextLowestBlaze != null && nextLowestBlaze.isAlive() && nextLowestBlaze != lowestBlaze) { Box nextBlaze = nextLowestBlaze.getBoundingBox().expand(0.3, 0.9, 0.3).offset(0, -1.1, 0); - RenderHelper.renderBox(context, nextBlaze, WHITE_COLOR_COMPONENTS); + RenderHelper.renderOutline(context, nextBlaze, WHITE_COLOR_COMPONENTS, 5f); RenderHelper.renderLinesFromPoints(context, new Vec3d[] { blaze.getCenter(), nextBlaze.getCenter() }, WHITE_COLOR_COMPONENTS, 1f, 5f); } } } } catch (Exception e) { - LOGGER.warn("[Skyblocker BlazeRenderer] " + e); - e.printStackTrace(); + LOGGER.warn("[Skyblocker DungeonBlazeRenderer] Failed to render blaze boxes", e); } } } \ No newline at end of file diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/render/RenderHelper.java b/src/main/java/me/xmrvizzy/skyblocker/utils/render/RenderHelper.java index d3a547a9..9dd8fa22 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/utils/render/RenderHelper.java +++ b/src/main/java/me/xmrvizzy/skyblocker/utils/render/RenderHelper.java @@ -12,11 +12,8 @@ import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderContext; import net.minecraft.client.MinecraftClient; import net.minecraft.client.render.*; import net.minecraft.client.render.VertexFormat.DrawMode; -import net.minecraft.client.render.VertexFormats; -import net.minecraft.client.render.WorldRenderer; import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.sound.SoundEvent; -import net.minecraft.util.Identifier; +import net.minecraft.sound.SoundEvents; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Box; import net.minecraft.util.math.Vec3d; @@ -73,16 +70,20 @@ public class RenderHelper { } } - public static void renderBox(WorldRenderContext wrc, Box box, float[] colorComponents) { + /** + * Renders the outline of a box with the specified color components and line width. + * This does not use renderer since renderer draws outline using debug lines with a fixed width. + */ + public static void renderOutline(WorldRenderContext context, Box box, float[] colorComponents, float lineWidth) { if (FrustumUtils.isVisible(box)) { - Vec3d camera = wrc.camera().getPos(); - MatrixStack matrices = wrc.matrixStack(); + MatrixStack matrices = context.matrixStack(); + Vec3d camera = context.camera().getPos(); Tessellator tessellator = RenderSystem.renderThreadTesselator(); BufferBuilder buffer = tessellator.getBuffer(); RenderSystem.setShader(GameRenderer::getRenderTypeLinesProgram); RenderSystem.setShaderColor(1f, 1f, 1f, 1f); - RenderSystem.lineWidth(2.5f); + RenderSystem.lineWidth(lineWidth); RenderSystem.disableCull(); RenderSystem.enableDepthTest(); @@ -186,7 +187,7 @@ public class RenderHelper { private static void playNotificationSound() { if (MinecraftClient.getInstance().player != null) { - MinecraftClient.getInstance().player.playSound(SoundEvent.of(new Identifier("entity.experience_orb.pickup")), 100f, 0.1f); + MinecraftClient.getInstance().player.playSound(SoundEvents.ENTITY_EXPERIENCE_ORB_PICKUP, 100f, 0.1f); } } -- cgit From 30a7b733b0c5a0e7b5002dfd68ec6ece04c02ecc Mon Sep 17 00:00:00 2001 From: Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com> Date: Tue, 5 Sep 2023 19:07:17 -0400 Subject: Fix blaze solver update period --- src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonBlaze.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonBlaze.java') diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonBlaze.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonBlaze.java index 09bef802..6e354ddc 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonBlaze.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonBlaze.java @@ -35,7 +35,7 @@ public class DungeonBlaze { private static ArmorStandEntity nextLowestBlaze = null; public static void init() { - SkyblockerMod.getInstance().scheduler.scheduleCyclic(DungeonBlaze::update, 10); + SkyblockerMod.getInstance().scheduler.scheduleCyclic(DungeonBlaze::update, 4); WorldRenderEvents.BEFORE_DEBUG_RENDER.register(DungeonBlaze::blazeRenderer); } -- cgit