diff options
Diffstat (limited to 'src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon')
13 files changed, 61 insertions, 65 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/CroesusHelper.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/CroesusHelper.java index def1eb76..1e949cd1 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/CroesusHelper.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/CroesusHelper.java @@ -1,8 +1,8 @@ package me.xmrvizzy.skyblocker.skyblock.dungeon; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; -import me.xmrvizzy.skyblocker.gui.ColorHighlight; -import me.xmrvizzy.skyblocker.gui.ContainerSolver; +import me.xmrvizzy.skyblocker.utils.render.gui.ColorHighlight; +import me.xmrvizzy.skyblocker.utils.render.gui.ContainerSolver; import net.minecraft.item.ItemStack; import java.util.ArrayList; 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 c3e12c3d..6e354ddc 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; @@ -27,15 +26,18 @@ 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}; - private static final QuadColor outlineColorGreen = QuadColor.single(0.0F, 1.0f, 0.0f, 1f); - private static final QuadColor outlineColorWhite = QuadColor.single(1.0f, 1.0f, 1.0f, 1.0f); private static ArmorStandEntity highestBlaze = null; private static ArmorStandEntity lowestBlaze = null; private static ArmorStandEntity nextHighestBlaze = null; private static ArmorStandEntity nextLowestBlaze = null; - private static boolean renderHooked = false; + + public static void init() { + SkyblockerMod.getInstance().scheduler.scheduleCyclic(DungeonBlaze::update, 4); + WorldRenderEvents.BEFORE_DEBUG_RENDER.register(DungeonBlaze::blazeRenderer); + } /** * Updates the state of Blaze entities and triggers the rendering process if necessary. @@ -44,10 +46,6 @@ public class DungeonBlaze { ClientWorld world = MinecraftClient.getInstance().world; ClientPlayerEntity player = MinecraftClient.getInstance().player; if (world == null || player == null || !Utils.isInDungeons()) return; - if (!renderHooked) { - WorldRenderEvents.BEFORE_DEBUG_RENDER.register(DungeonBlaze::blazeRenderer); - renderHooked = true; - } List<ObjectIntPair<ArmorStandEntity>> blazes = getBlazesInWorld(world, player); sortBlazes(blazes); updateBlazeEntities(blazes); @@ -130,11 +128,11 @@ public class DungeonBlaze { */ private static void renderBlazeOutline(ArmorStandEntity blaze, ArmorStandEntity nextBlaze, WorldRenderContext wrc) { Box blazeBox = blaze.getBoundingBox().expand(0.3, 0.9, 0.3).offset(0, -1.1, 0); - RenderUtils.drawBoxOutline(blazeBox, DungeonBlaze.outlineColorGreen, 5f); + RenderHelper.renderOutline(wrc, blazeBox, GREEN_COLOR_COMPONENTS, 5f); if (nextBlaze != null && nextBlaze.isAlive() && nextBlaze != blaze) { Box nextBlazeBox = nextBlaze.getBoundingBox().expand(0.3, 0.9, 0.3).offset(0, -1.1, 0); - RenderUtils.drawBoxOutline(nextBlazeBox, DungeonBlaze.outlineColorWhite, 5f); + RenderHelper.renderOutline(wrc, nextBlazeBox, WHITE_COLOR_COMPONENTS, 5f); Vec3d blazeCenter = blazeBox.getCenter(); Vec3d nextBlazeCenter = nextBlazeBox.getCenter(); diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonMap.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonMap.java index 040c8aed..a70dd501 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonMap.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonMap.java @@ -1,7 +1,7 @@ package me.xmrvizzy.skyblocker.skyblock.dungeon; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; -import me.xmrvizzy.skyblocker.utils.Scheduler; +import me.xmrvizzy.skyblocker.utils.scheduler.Scheduler; import net.fabricmc.fabric.api.client.command.v2.ClientCommandManager; import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback; import net.minecraft.client.MinecraftClient; @@ -21,7 +21,7 @@ public class DungeonMap { public static void render(MatrixStack matrices) { MinecraftClient client = MinecraftClient.getInstance(); - if (client.player == null && client.world == null) return; + if (client.player == null || client.world == null) return; ItemStack item = client.player.getInventory().main.get(8); NbtCompound tag = item.getNbt(); diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonMapConfigScreen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonMapConfigScreen.java index ef782c3b..f0ae1590 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonMapConfigScreen.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/DungeonMapConfigScreen.java @@ -1,14 +1,14 @@ package me.xmrvizzy.skyblocker.skyblock.dungeon; -import java.awt.Color; - import me.shedaniel.autoconfig.AutoConfig; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; -import me.xmrvizzy.skyblocker.utils.RenderUtils; +import me.xmrvizzy.skyblocker.utils.render.RenderHelper; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.screen.Screen; import net.minecraft.text.Text; +import java.awt.*; + public class DungeonMapConfigScreen extends Screen { private int hudX = SkyblockerConfig.get().locations.dungeons.mapX; @@ -30,7 +30,7 @@ public class DungeonMapConfigScreen extends Screen { public boolean mouseDragged(double mouseX, double mouseY, int button, double deltaX, double deltaY) { float scaling = SkyblockerConfig.get().locations.dungeons.mapScaling; int size = (int) (128 * scaling); - if (RenderUtils.pointExistsInArea((int) mouseX, (int) mouseY, hudX, hudY, hudX + size, hudY + size) && button == 0) { + if (RenderHelper.pointIsInArea(mouseX, mouseY, hudX, hudY, hudX + size, hudY + size) && button == 0) { hudX = (int) Math.max(Math.min(mouseX - (size >> 1), this.width - size), 0); hudY = (int) Math.max(Math.min(mouseY - (size >> 1), this.height - size), 0); } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java index 8ae7ce7b..e1194632 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Reparty.java @@ -1,10 +1,10 @@ package me.xmrvizzy.skyblocker.skyblock.dungeon; import me.xmrvizzy.skyblocker.SkyblockerMod; -import me.xmrvizzy.skyblocker.chat.ChatFilterResult; -import me.xmrvizzy.skyblocker.chat.ChatPatternListener; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; import me.xmrvizzy.skyblocker.utils.Utils; +import me.xmrvizzy.skyblocker.utils.chat.ChatFilterResult; +import me.xmrvizzy.skyblocker.utils.chat.ChatPatternListener; import net.fabricmc.fabric.api.client.command.v2.ClientCommandManager; import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback; import net.minecraft.client.MinecraftClient; diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/StarredMobGlow.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/StarredMobGlow.java index b45242f9..64a28712 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/StarredMobGlow.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/StarredMobGlow.java @@ -3,7 +3,7 @@ package me.xmrvizzy.skyblocker.skyblock.dungeon; import java.util.List; import me.xmrvizzy.skyblocker.utils.Utils; -import me.xmrvizzy.skyblocker.utils.culling.OcclusionCulling; +import me.xmrvizzy.skyblocker.utils.render.culling.OcclusionCulling; import net.minecraft.entity.Entity; import net.minecraft.entity.decoration.ArmorStandEntity; import net.minecraft.entity.player.PlayerEntity; diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/ThreeWeirdos.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/ThreeWeirdos.java index da964f07..9f522942 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/ThreeWeirdos.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/ThreeWeirdos.java @@ -1,8 +1,8 @@ package me.xmrvizzy.skyblocker.skyblock.dungeon; -import me.xmrvizzy.skyblocker.chat.ChatFilterResult; -import me.xmrvizzy.skyblocker.chat.ChatPatternListener; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.utils.chat.ChatFilterResult; +import me.xmrvizzy.skyblocker.utils.chat.ChatPatternListener; import net.minecraft.client.MinecraftClient; import net.minecraft.entity.decoration.ArmorStandEntity; import net.minecraft.text.Text; diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/TicTacToe.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/TicTacToe.java index f5d55d2c..a97b6752 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/TicTacToe.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/TicTacToe.java @@ -1,14 +1,8 @@ package me.xmrvizzy.skyblocker.skyblock.dungeon; -import java.util.List; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - import me.xmrvizzy.skyblocker.config.SkyblockerConfig; -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 me.xmrvizzy.skyblocker.utils.tictactoe.TicTacToeUtils; import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderContext; import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderEvents; @@ -23,32 +17,36 @@ import net.minecraft.item.map.MapState; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Box; import net.minecraft.util.math.Direction; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.List; /** * Thanks to Danker for a reference implementation! */ public class TicTacToe { private static final Logger LOGGER = LoggerFactory.getLogger(TicTacToe.class); - private static final QuadColor RED = QuadColor.single(1.0f, 0.0f, 0.0f, 1f); + private static final float[] RED_COLOR_COMPONENTS = {1.0F, 0.0F, 0.0F}; private static Box nextBestMoveToMake = null; public static void init() { WorldRenderEvents.BEFORE_DEBUG_RENDER.register(TicTacToe::solutionRenderer); } - + public static void tick() { MinecraftClient client = MinecraftClient.getInstance(); ClientWorld world = client.world; ClientPlayerEntity player = client.player; - + nextBestMoveToMake = null; - - if (world == null || player == null || !Utils.isInDungeons()) return; - + + if (world == null || player == null || !Utils.isInDungeons()) return; + //Search within 21 blocks for item frames that contain maps Box searchBox = new Box(player.getX() - 21, player.getY() - 21, player.getZ() - 21, player.getX() + 21, player.getY() + 21, player.getZ() + 21); List<ItemFrameEntity> itemFramesThatHoldMaps = world.getEntitiesByClass(ItemFrameEntity.class, searchBox, ItemFrameEntity::containsMap); - + try { //Only attempt to solve if its the player's turn if (itemFramesThatHoldMaps.size() != 9 && itemFramesThatHoldMaps.size() % 2 == 1) { @@ -56,15 +54,15 @@ public class TicTacToe { BlockPos leftmostRow = null; int sign = 1; char facing = 'X'; - + for (ItemFrameEntity itemFrame : itemFramesThatHoldMaps) { MapState mapState = world.getMapState(FilledMapItem.getMapName(itemFrame.getMapId().getAsInt())); - + if (mapState == null) continue; - + int column = 0, row; sign = 1; - + //Find position of the item frame relative to where it is on the tic tac toe board if (itemFrame.getHorizontalFacing() == Direction.SOUTH || itemFrame.getHorizontalFacing() == Direction.WEST) sign = -1; BlockPos itemFramePos = BlockPos.ofFloored(itemFrame.getX(), itemFrame.getY(), itemFrame.getZ()); @@ -72,23 +70,23 @@ public class TicTacToe { for (int i = 2; i >= 0; i--) { int realI = i * sign; BlockPos blockPos = itemFramePos; - + if (itemFrame.getX() % 0.5 == 0) { blockPos = itemFramePos.add(realI, 0, 0); } else if (itemFrame.getZ() % 0.5 == 0) { blockPos = itemFramePos.add(0, 0, realI); facing = 'Z'; } - + Block block = world.getBlockState(blockPos).getBlock(); if (block == Blocks.AIR || block == Blocks.STONE_BUTTON) { leftmostRow = blockPos; column = i; - + break; } } - + //Determine the row of the item frame if (itemFrame.getY() == 72.5) { row = 0; @@ -99,24 +97,24 @@ public class TicTacToe { } else { continue; } - - + + //Get the color of the middle pixel of the map which determines whether its X or O int middleColor = mapState.colors[8256] & 255; - + if (middleColor == 114) { board[row][column] = 'X'; } else if (middleColor == 33) { board[row][column] = 'O'; } - + int bestMove = TicTacToeUtils.getBestMove(board) - 1; - + if (leftmostRow != null) { double drawX = facing == 'X' ? leftmostRow.getX() - sign * (bestMove % 3) : leftmostRow.getX(); double drawY = 72 - (double) (bestMove / 3); double drawZ = facing == 'Z' ? leftmostRow.getZ() - sign * (bestMove % 3) : leftmostRow.getZ(); - + nextBestMoveToMake = new Box(drawX, drawY, drawZ, drawX + 1, drawY + 1, drawZ + 1); } } @@ -125,11 +123,11 @@ public class TicTacToe { LOGGER.error("[Skyblocker Tic Tac Toe] Encountered an exception while determining a tic tac toe solution!", e); } } - - private static void solutionRenderer(WorldRenderContext context) { + + private static void solutionRenderer(WorldRenderContext context) { try { if (SkyblockerConfig.get().locations.dungeons.solveTicTacToe && nextBestMoveToMake != null) { - RenderUtils.drawBoxOutline(nextBestMoveToMake, RED, 5); + RenderHelper.renderOutline(context, nextBestMoveToMake, RED_COLOR_COMPONENTS, 5); } } catch (Exception e) { LOGGER.error("[Skyblocker Tic Tac Toe] Encountered an exception while rendering the tic tac toe solution!", e); diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Trivia.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Trivia.java index 9c7452ac..8497041b 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Trivia.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/Trivia.java @@ -1,8 +1,8 @@ package me.xmrvizzy.skyblocker.skyblock.dungeon; -import me.xmrvizzy.skyblocker.chat.ChatFilterResult; -import me.xmrvizzy.skyblocker.chat.ChatPatternListener; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.utils.chat.ChatFilterResult; +import me.xmrvizzy.skyblocker.utils.chat.ChatPatternListener; import me.xmrvizzy.skyblocker.skyblock.FairySouls; import net.minecraft.client.MinecraftClient; import net.minecraft.client.network.ClientPlayerEntity; diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/secrets/SecretWaypoint.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/secrets/SecretWaypoint.java index c2658fd3..edf18f85 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/secrets/SecretWaypoint.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/secrets/SecretWaypoint.java @@ -2,7 +2,7 @@ package me.xmrvizzy.skyblocker.skyblock.dungeon.secrets; import com.google.gson.JsonObject; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; -import me.xmrvizzy.skyblocker.utils.RenderHelper; +import me.xmrvizzy.skyblocker.utils.render.RenderHelper; import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderContext; import net.minecraft.client.MinecraftClient; import net.minecraft.entity.Entity; diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/terminal/ColorTerminal.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/terminal/ColorTerminal.java index add30907..7aac04b5 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/terminal/ColorTerminal.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/terminal/ColorTerminal.java @@ -1,8 +1,8 @@ package me.xmrvizzy.skyblocker.skyblock.dungeon.terminal; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; -import me.xmrvizzy.skyblocker.gui.ColorHighlight; -import me.xmrvizzy.skyblocker.gui.ContainerSolver; +import me.xmrvizzy.skyblocker.utils.render.gui.ColorHighlight; +import me.xmrvizzy.skyblocker.utils.render.gui.ContainerSolver; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/terminal/OrderTerminal.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/terminal/OrderTerminal.java index 3b4e1c50..01437919 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/terminal/OrderTerminal.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/terminal/OrderTerminal.java @@ -1,8 +1,8 @@ package me.xmrvizzy.skyblocker.skyblock.dungeon.terminal; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; -import me.xmrvizzy.skyblocker.gui.ColorHighlight; -import me.xmrvizzy.skyblocker.gui.ContainerSolver; +import me.xmrvizzy.skyblocker.utils.render.gui.ColorHighlight; +import me.xmrvizzy.skyblocker.utils.render.gui.ContainerSolver; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/terminal/StartsWithTerminal.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/terminal/StartsWithTerminal.java index 18326254..988b570e 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/terminal/StartsWithTerminal.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/dungeon/terminal/StartsWithTerminal.java @@ -1,8 +1,8 @@ package me.xmrvizzy.skyblocker.skyblock.dungeon.terminal; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; -import me.xmrvizzy.skyblocker.gui.ColorHighlight; -import me.xmrvizzy.skyblocker.gui.ContainerSolver; +import me.xmrvizzy.skyblocker.utils.render.gui.ColorHighlight; +import me.xmrvizzy.skyblocker.utils.render.gui.ContainerSolver; import net.minecraft.item.ItemStack; import java.util.ArrayList; |