diff --git a/src/main/java/baritone/bot/Settings.java b/src/main/java/baritone/bot/Settings.java index 7a22abc2..96a1c822 100644 --- a/src/main/java/baritone/bot/Settings.java +++ b/src/main/java/baritone/bot/Settings.java @@ -51,6 +51,8 @@ public class Settings { public Setting renderGoal = new Setting<>(true); public Setting pathingMaxChunkBorderFetch = new Setting<>(50); public Setting backtrackCostFavoringCoefficient = new Setting<>(0.9); + public Setting pathRenderLineWidth = new Setting<>(5F); + public Setting goalRenderLineWidth = new Setting<>(3F); public final Map> byName; public final List> allSettings; diff --git a/src/main/java/baritone/bot/behavior/impl/PathingBehavior.java b/src/main/java/baritone/bot/behavior/impl/PathingBehavior.java index 5be89412..f69b94e3 100644 --- a/src/main/java/baritone/bot/behavior/impl/PathingBehavior.java +++ b/src/main/java/baritone/bot/behavior/impl/PathingBehavior.java @@ -25,7 +25,6 @@ import baritone.bot.pathing.calc.AStarPathFinder; import baritone.bot.pathing.calc.AbstractNodeCostSearch; import baritone.bot.pathing.calc.IPathFinder; import baritone.bot.pathing.goals.Goal; -import baritone.bot.pathing.goals.GoalBlock; import baritone.bot.pathing.path.IPath; import baritone.bot.pathing.path.PathExecutor; import baritone.bot.utils.PathRenderer; @@ -244,8 +243,8 @@ public class PathingBehavior extends Behavior { // System.out.println("Render passing"); // System.out.println(event.getPartialTicks()); float partialTicks = event.getPartialTicks(); - if (goal instanceof GoalBlock && Baritone.settings().renderGoal.value) { - PathRenderer.drawLitDankGoalBox(player(), ((GoalBlock) goal).getGoalPos(), partialTicks, Color.GREEN); + if (goal != null && Baritone.settings().renderGoal.value) { + PathRenderer.drawLitDankGoalBox(player(), goal, partialTicks, Color.GREEN); } if (!Baritone.settings().renderPath.get()) { return; diff --git a/src/main/java/baritone/bot/pathing/goals/GoalXZ.java b/src/main/java/baritone/bot/pathing/goals/GoalXZ.java index ca70c951..ed4c169d 100644 --- a/src/main/java/baritone/bot/pathing/goals/GoalXZ.java +++ b/src/main/java/baritone/bot/pathing/goals/GoalXZ.java @@ -108,4 +108,12 @@ public class GoalXZ implements Goal { double z = origin.z + Math.cos(theta) * distance; return new GoalXZ((int) x, (int) z); } + + public int getX() { + return x; + } + + public int getZ() { + return z; + } } diff --git a/src/main/java/baritone/bot/utils/PathRenderer.java b/src/main/java/baritone/bot/utils/PathRenderer.java index 88272f2f..ad977cc0 100644 --- a/src/main/java/baritone/bot/utils/PathRenderer.java +++ b/src/main/java/baritone/bot/utils/PathRenderer.java @@ -17,6 +17,10 @@ package baritone.bot.utils; +import baritone.bot.Baritone; +import baritone.bot.pathing.goals.Goal; +import baritone.bot.pathing.goals.GoalBlock; +import baritone.bot.pathing.goals.GoalXZ; import baritone.bot.pathing.path.IPath; import baritone.bot.utils.pathing.BetterBlockPos; import net.minecraft.block.state.IBlockState; @@ -53,7 +57,7 @@ public final class PathRenderer implements Helper { GlStateManager.enableBlend(); GlStateManager.tryBlendFuncSeparate(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_ONE, GL_ZERO); GlStateManager.color(color.getColorComponents(null)[0], color.getColorComponents(null)[1], color.getColorComponents(null)[2], 0.4F); - GlStateManager.glLineWidth(3.0F); + GlStateManager.glLineWidth(Baritone.settings().pathRenderLineWidth.get()); GlStateManager.disableTexture2D(); GlStateManager.depthMask(false); List positions = path.positions(); @@ -116,7 +120,7 @@ public final class PathRenderer implements Helper { GlStateManager.enableBlend(); GlStateManager.tryBlendFuncSeparate(770, 771, 1, 0); GlStateManager.color(color.getColorComponents(null)[0], color.getColorComponents(null)[1], color.getColorComponents(null)[2], 0.4F); - GlStateManager.glLineWidth(5.0F); + GlStateManager.glLineWidth(Baritone.settings().pathRenderLineWidth.get()); GlStateManager.disableTexture2D(); GlStateManager.depthMask(false); float expand = 0.002F; @@ -165,11 +169,11 @@ public final class PathRenderer implements Helper { GlStateManager.disableBlend(); } - public static void drawLitDankGoalBox(EntityPlayer player, BlockPos goal, float partialTicks, Color color) { + public static void drawLitDankGoalBox(EntityPlayer player, Goal goal, float partialTicks, Color color) { GlStateManager.enableBlend(); GlStateManager.tryBlendFuncSeparate(770, 771, 1, 0); GlStateManager.color(color.getColorComponents(null)[0], color.getColorComponents(null)[1], color.getColorComponents(null)[2], 0.6F); - GlStateManager.glLineWidth(5.0F); + GlStateManager.glLineWidth(Baritone.settings().goalRenderLineWidth.get()); GlStateManager.disableTexture2D(); GlStateManager.depthMask(false); float expand = 0.002F; @@ -177,32 +181,61 @@ public final class PathRenderer implements Helper { double renderPosY = player.lastTickPosY + (player.posY - player.lastTickPosY) * (double) partialTicks; double renderPosZ = player.lastTickPosZ + (player.posZ - player.lastTickPosZ) * (double) partialTicks; - double minX = goal.getX() + 0.002 - renderPosX; - double maxX = goal.getX() + 1 - 0.002 - renderPosX; - double minZ = goal.getZ() + 0.002 - renderPosZ; - double maxZ = goal.getZ() + 1 - 0.002 - renderPosZ; - double y = Math.sin((System.currentTimeMillis() % 2000L) / 2000F * Math.PI * 2); - double y1 = 1 + y + goal.getY() - renderPosY; - double y2 = 1 - y + goal.getY() - renderPosY; - double minY = goal.getY() - renderPosY; - double maxY = minY + 2; + double minX; + double maxX; + double minZ; + double maxZ; + double minY; + double maxY; + double y1; + double y2; + if (goal instanceof GoalBlock) { + BlockPos goalPos = ((GoalBlock) goal).getGoalPos(); + minX = goalPos.getX() + 0.002 - renderPosX; + maxX = goalPos.getX() + 1 - 0.002 - renderPosX; + minZ = goalPos.getZ() + 0.002 - renderPosZ; + maxZ = goalPos.getZ() + 1 - 0.002 - renderPosZ; + double y = Math.sin((System.currentTimeMillis() % 2000L) / 2000F * Math.PI * 2); + y1 = 1 + y + goalPos.getY() - renderPosY; + y2 = 1 - y + goalPos.getY() - renderPosY; + minY = goalPos.getY() - renderPosY; + maxY = minY + 2; + } else if (goal instanceof GoalXZ) { + GoalXZ goalPos = (GoalXZ) goal; + minX = goalPos.getX() + 0.002 - renderPosX; + maxX = goalPos.getX() + 1 - 0.002 - renderPosX; + minZ = goalPos.getZ() + 0.002 - renderPosZ; + maxZ = goalPos.getZ() + 1 - 0.002 - renderPosZ; - BUFFER.begin(GL_LINE_STRIP, DefaultVertexFormats.POSITION); - BUFFER.pos(minX, y1, minZ).endVertex(); - BUFFER.pos(maxX, y1, minZ).endVertex(); - BUFFER.pos(maxX, y1, maxZ).endVertex(); - BUFFER.pos(minX, y1, maxZ).endVertex(); - BUFFER.pos(minX, y1, minZ).endVertex(); - TESSELLATOR.draw(); + y1 = 0; + y2 = 0; + minY = 0 - renderPosY; + maxY = 256 - renderPosY; + } else { + // TODO GoalComposite + return; + } - BUFFER.begin(GL_LINE_STRIP, DefaultVertexFormats.POSITION); - BUFFER.pos(minX, y2, minZ).endVertex(); - BUFFER.pos(maxX, y2, minZ).endVertex(); - BUFFER.pos(maxX, y2, maxZ).endVertex(); - BUFFER.pos(minX, y2, maxZ).endVertex(); - BUFFER.pos(minX, y2, minZ).endVertex(); - TESSELLATOR.draw(); + if (y1 != 0) { + BUFFER.begin(GL_LINE_STRIP, DefaultVertexFormats.POSITION); + BUFFER.pos(minX, y1, minZ).endVertex(); + BUFFER.pos(maxX, y1, minZ).endVertex(); + BUFFER.pos(maxX, y1, maxZ).endVertex(); + BUFFER.pos(minX, y1, maxZ).endVertex(); + BUFFER.pos(minX, y1, minZ).endVertex(); + TESSELLATOR.draw(); + } + + if (y2 != 0) { + BUFFER.begin(GL_LINE_STRIP, DefaultVertexFormats.POSITION); + BUFFER.pos(minX, y2, minZ).endVertex(); + BUFFER.pos(maxX, y2, minZ).endVertex(); + BUFFER.pos(maxX, y2, maxZ).endVertex(); + BUFFER.pos(minX, y2, maxZ).endVertex(); + BUFFER.pos(minX, y2, minZ).endVertex(); + TESSELLATOR.draw(); + } BUFFER.begin(GL_LINES, DefaultVertexFormats.POSITION); BUFFER.pos(minX, minY, minZ).endVertex();