render GoalXZ

This commit is contained in:
Leijurv 2018-08-16 15:34:23 -07:00
parent 82f5c21f4a
commit e1c6006084
No known key found for this signature in database
GPG Key ID: 44A3EA646EADAC6A
4 changed files with 72 additions and 30 deletions

View File

@ -51,6 +51,8 @@ public class Settings {
public Setting<Boolean> renderGoal = new Setting<>(true);
public Setting<Integer> pathingMaxChunkBorderFetch = new Setting<>(50);
public Setting<Double> backtrackCostFavoringCoefficient = new Setting<>(0.9);
public Setting<Float> pathRenderLineWidth = new Setting<>(5F);
public Setting<Float> goalRenderLineWidth = new Setting<>(3F);
public final Map<String, Setting<?>> byName;
public final List<Setting<?>> allSettings;

View File

@ -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;

View File

@ -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;
}
}

View File

@ -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<BetterBlockPos> 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();