slowpath rendering
This commit is contained in:
parent
e7c27e04ac
commit
98f94f0a81
@ -4,11 +4,15 @@ import baritone.bot.behavior.Behavior;
|
|||||||
import baritone.bot.event.events.ChatEvent;
|
import baritone.bot.event.events.ChatEvent;
|
||||||
import baritone.bot.event.events.RenderEvent;
|
import baritone.bot.event.events.RenderEvent;
|
||||||
import baritone.bot.pathing.calc.AStarPathFinder;
|
import baritone.bot.pathing.calc.AStarPathFinder;
|
||||||
|
import baritone.bot.pathing.calc.AbstractNodeCostSearch;
|
||||||
import baritone.bot.pathing.calc.IPathFinder;
|
import baritone.bot.pathing.calc.IPathFinder;
|
||||||
import baritone.bot.pathing.goals.Goal;
|
import baritone.bot.pathing.goals.Goal;
|
||||||
import baritone.bot.pathing.goals.GoalBlock;
|
import baritone.bot.pathing.goals.GoalBlock;
|
||||||
import baritone.bot.pathing.path.IPath;
|
import baritone.bot.pathing.path.IPath;
|
||||||
import baritone.bot.pathing.path.PathExecutor;
|
import baritone.bot.pathing.path.PathExecutor;
|
||||||
|
import baritone.bot.utils.BlockStateInterface;
|
||||||
|
import net.minecraft.block.Block;
|
||||||
|
import net.minecraft.block.state.IBlockState;
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.client.entity.EntityPlayerSP;
|
import net.minecraft.client.entity.EntityPlayerSP;
|
||||||
import net.minecraft.client.renderer.BufferBuilder;
|
import net.minecraft.client.renderer.BufferBuilder;
|
||||||
@ -16,6 +20,8 @@ import net.minecraft.client.renderer.GlStateManager;
|
|||||||
import net.minecraft.client.renderer.Tessellator;
|
import net.minecraft.client.renderer.Tessellator;
|
||||||
import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
|
import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
import net.minecraft.init.Blocks;
|
||||||
|
import net.minecraft.util.math.AxisAlignedBB;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.util.text.TextComponentString;
|
import net.minecraft.util.text.TextComponentString;
|
||||||
import org.lwjgl.opengl.GL11;
|
import org.lwjgl.opengl.GL11;
|
||||||
@ -138,10 +144,25 @@ public class PathingBehavior extends Behavior {
|
|||||||
public void onRenderPass(RenderEvent event) {
|
public void onRenderPass(RenderEvent event) {
|
||||||
//System.out.println("Render passing");
|
//System.out.println("Render passing");
|
||||||
//System.out.println(event.getPartialTicks());
|
//System.out.println(event.getPartialTicks());
|
||||||
drawPath(player(), event.getPartialTicks(), Color.RED);
|
IPath path = getPath();
|
||||||
|
float partialTicks = event.getPartialTicks();
|
||||||
|
if (path != null) {
|
||||||
|
drawPath(path, player(), partialTicks, Color.RED);
|
||||||
|
}
|
||||||
|
if (AbstractNodeCostSearch.currentlyRunning != null) {
|
||||||
|
IPath p = AbstractNodeCostSearch.currentlyRunning.bestPathSoFar();
|
||||||
|
if (p != null) {
|
||||||
|
drawPath(p, player(), partialTicks, Color.BLUE);
|
||||||
|
IPath mr = AbstractNodeCostSearch.currentlyRunning.pathToMostRecentNodeConsidered();
|
||||||
|
if (mr != null) {
|
||||||
|
drawPath(mr, player(), partialTicks, Color.CYAN);
|
||||||
|
drawSelectionBox(player(), mr.getDest(), partialTicks, Color.CYAN);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void drawPath(EntityPlayerSP player, float partialTicks, Color color) {
|
public void drawPath(IPath path, EntityPlayerSP player, float partialTicks, Color color) {
|
||||||
|
|
||||||
GlStateManager.enableBlend();
|
GlStateManager.enableBlend();
|
||||||
GlStateManager.tryBlendFuncSeparate(770, 771, 1, 0);
|
GlStateManager.tryBlendFuncSeparate(770, 771, 1, 0);
|
||||||
@ -150,8 +171,7 @@ public class PathingBehavior extends Behavior {
|
|||||||
GlStateManager.disableTexture2D();
|
GlStateManager.disableTexture2D();
|
||||||
GlStateManager.depthMask(false);
|
GlStateManager.depthMask(false);
|
||||||
|
|
||||||
IPath path = getPath();
|
|
||||||
if (path != null) {
|
|
||||||
List<BlockPos> positions = path.positions();
|
List<BlockPos> positions = path.positions();
|
||||||
for (int i = 0; i < positions.size() - 1; i++) {
|
for (int i = 0; i < positions.size() - 1; i++) {
|
||||||
BlockPos a = positions.get(i);
|
BlockPos a = positions.get(i);
|
||||||
@ -164,7 +184,7 @@ public class PathingBehavior extends Behavior {
|
|||||||
double z2 = b.getZ();
|
double z2 = b.getZ();
|
||||||
drawLine(player, x1, y1, z1, x2, y2, z2, partialTicks);
|
drawLine(player, x1, y1, z1, x2, y2, z2, partialTicks);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
//GlStateManager.color(0.0f, 0.0f, 0.0f, 0.4f);
|
//GlStateManager.color(0.0f, 0.0f, 0.0f, 0.4f);
|
||||||
GlStateManager.depthMask(true);
|
GlStateManager.depthMask(true);
|
||||||
@ -187,5 +207,54 @@ public class PathingBehavior extends Behavior {
|
|||||||
tessellator.draw();
|
tessellator.draw();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void drawSelectionBox(EntityPlayer player, BlockPos blockpos, 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.4F);
|
||||||
|
GL11.glLineWidth(5.0F);
|
||||||
|
GlStateManager.disableTexture2D();
|
||||||
|
GlStateManager.depthMask(false);
|
||||||
|
float f = 0.002F;
|
||||||
|
//BlockPos blockpos = movingObjectPositionIn.getBlockPos();
|
||||||
|
IBlockState state = BlockStateInterface.get(blockpos);
|
||||||
|
Block block = state.getBlock();
|
||||||
|
if (block.equals(Blocks.AIR)) {
|
||||||
|
block = Blocks.DIRT;
|
||||||
|
}
|
||||||
|
//block.setBlockBoundsBasedOnState(Minecraft.getMinecraft().world, blockpos);
|
||||||
|
double d0 = player.lastTickPosX + (player.posX - player.lastTickPosX) * (double) partialTicks;
|
||||||
|
double d1 = player.lastTickPosY + (player.posY - player.lastTickPosY) * (double) partialTicks;
|
||||||
|
double d2 = player.lastTickPosZ + (player.posZ - player.lastTickPosZ) * (double) partialTicks;
|
||||||
|
AxisAlignedBB toDraw = block.getSelectedBoundingBox(state, Minecraft.getMinecraft().world, blockpos).expand(0.0020000000949949026D, 0.0020000000949949026D, 0.0020000000949949026D).offset(-d0, -d1, -d2);
|
||||||
|
Tessellator tessellator = Tessellator.getInstance();
|
||||||
|
BufferBuilder worldrenderer = tessellator.getBuffer();
|
||||||
|
worldrenderer.begin(3, DefaultVertexFormats.POSITION);
|
||||||
|
worldrenderer.pos(toDraw.minX, toDraw.minY, toDraw.minZ).endVertex();
|
||||||
|
worldrenderer.pos(toDraw.maxX, toDraw.minY, toDraw.minZ).endVertex();
|
||||||
|
worldrenderer.pos(toDraw.maxX, toDraw.minY, toDraw.maxZ).endVertex();
|
||||||
|
worldrenderer.pos(toDraw.minX, toDraw.minY, toDraw.maxZ).endVertex();
|
||||||
|
worldrenderer.pos(toDraw.minX, toDraw.minY, toDraw.minZ).endVertex();
|
||||||
|
tessellator.draw();
|
||||||
|
worldrenderer.begin(3, DefaultVertexFormats.POSITION);
|
||||||
|
worldrenderer.pos(toDraw.minX, toDraw.maxY, toDraw.minZ).endVertex();
|
||||||
|
worldrenderer.pos(toDraw.maxX, toDraw.maxY, toDraw.minZ).endVertex();
|
||||||
|
worldrenderer.pos(toDraw.maxX, toDraw.maxY, toDraw.maxZ).endVertex();
|
||||||
|
worldrenderer.pos(toDraw.minX, toDraw.maxY, toDraw.maxZ).endVertex();
|
||||||
|
worldrenderer.pos(toDraw.minX, toDraw.maxY, toDraw.minZ).endVertex();
|
||||||
|
tessellator.draw();
|
||||||
|
worldrenderer.begin(1, DefaultVertexFormats.POSITION);
|
||||||
|
worldrenderer.pos(toDraw.minX, toDraw.minY, toDraw.minZ).endVertex();
|
||||||
|
worldrenderer.pos(toDraw.minX, toDraw.maxY, toDraw.minZ).endVertex();
|
||||||
|
worldrenderer.pos(toDraw.maxX, toDraw.minY, toDraw.minZ).endVertex();
|
||||||
|
worldrenderer.pos(toDraw.maxX, toDraw.maxY, toDraw.minZ).endVertex();
|
||||||
|
worldrenderer.pos(toDraw.maxX, toDraw.minY, toDraw.maxZ).endVertex();
|
||||||
|
worldrenderer.pos(toDraw.maxX, toDraw.maxY, toDraw.maxZ).endVertex();
|
||||||
|
worldrenderer.pos(toDraw.minX, toDraw.minY, toDraw.maxZ).endVertex();
|
||||||
|
worldrenderer.pos(toDraw.minX, toDraw.maxY, toDraw.maxZ).endVertex();
|
||||||
|
tessellator.draw();
|
||||||
|
GlStateManager.depthMask(true);
|
||||||
|
GlStateManager.enableTexture2D();
|
||||||
|
GlStateManager.disableBlend();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -39,19 +39,19 @@ public class AStarPathFinder extends AbstractNodeCostSearch {
|
|||||||
}
|
}
|
||||||
currentlyRunning = this;
|
currentlyRunning = this;
|
||||||
long startTime = System.currentTimeMillis();
|
long startTime = System.currentTimeMillis();
|
||||||
long timeoutTime = startTime + /*(Baritone.slowPath ? 40000 : */4000/*)*/;
|
boolean slowPath=true;
|
||||||
|
long timeoutTime = startTime + (slowPath ? 40000 :4000);
|
||||||
long lastPrintout = 0;
|
long lastPrintout = 0;
|
||||||
int numNodes = 0;
|
int numNodes = 0;
|
||||||
ToolSet ts = new ToolSet();
|
ToolSet ts = new ToolSet();
|
||||||
int numEmptyChunk = 0;
|
int numEmptyChunk = 0;
|
||||||
while (!openSet.isEmpty() && numEmptyChunk < 50 && System.currentTimeMillis() < timeoutTime) {
|
while (!openSet.isEmpty() && numEmptyChunk < 50 && System.currentTimeMillis() < timeoutTime) {
|
||||||
/*if (Baritone.slowPath) {
|
if (slowPath) {
|
||||||
try {
|
try {
|
||||||
Thread.sleep(100);
|
Thread.sleep(100);
|
||||||
} catch (InterruptedException ex) {
|
} catch (InterruptedException ex) {
|
||||||
Logger.getLogger(AStarPathFinder.class.getName()).log(Level.SEVERE, null, ex);
|
|
||||||
}
|
}
|
||||||
}*/
|
}
|
||||||
PathNode currentNode = openSet.removeLowest();
|
PathNode currentNode = openSet.removeLowest();
|
||||||
currentNode.isOpen = false;
|
currentNode.isOpen = false;
|
||||||
mostRecentConsidered = currentNode;
|
mostRecentConsidered = currentNode;
|
||||||
|
Loading…
Reference in New Issue
Block a user