fixed pathrenderer
This commit is contained in:
parent
c59d8bae7c
commit
ee0e47e0e2
@ -5,25 +5,23 @@
|
||||
*/
|
||||
package baritone.ui;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
import baritone.Baritone;
|
||||
import baritone.pathfinding.Path;
|
||||
import baritone.pathfinding.PathFinder;
|
||||
import baritone.pathfinding.actions.Action;
|
||||
import baritone.util.FakeArrow;
|
||||
import java.awt.Color;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.state.IBlockState;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.renderer.BufferBuilder;
|
||||
import net.minecraft.client.renderer.GlStateManager;
|
||||
import net.minecraft.client.renderer.Tessellator;
|
||||
import net.minecraft.client.renderer.WorldRenderer;
|
||||
import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.init.Blocks;
|
||||
import net.minecraft.item.ItemBow;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.AxisAlignedBB;
|
||||
import net.minecraft.util.math.AxisAlignedBB;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
@ -32,6 +30,7 @@ import org.lwjgl.opengl.GL11;
|
||||
* @author leijurv
|
||||
*/
|
||||
public class PathRenderer {
|
||||
|
||||
public static void render(EntityPlayer player, float partialTicks) {
|
||||
if (Baritone.currentPath != null) {
|
||||
drawPath(Baritone.currentPath, player, partialTicks, Color.RED);
|
||||
@ -66,61 +65,8 @@ public class PathRenderer {
|
||||
} catch (Exception ex) {
|
||||
Logger.getLogger(PathRenderer.class.getName()).log(Level.SEVERE, null, ex);
|
||||
}
|
||||
if (!Baritone.sketchytracer) {
|
||||
return;
|
||||
}
|
||||
try {
|
||||
ItemStack holding = Minecraft.getMinecraft().player.inventory.mainInventory[Minecraft.getMinecraft().player.inventory.currentItem];
|
||||
if (holding != null && (holding.getItem() instanceof ItemBow)) {
|
||||
if (Minecraft.getMinecraft().player.getItemInUse() != null) {
|
||||
int i = holding.getItem().getMaxItemUseDuration(holding) - Minecraft.getMinecraft().player.getItemInUseCount();
|
||||
float f = (float) i / 20.0F;
|
||||
f = (f * f + f * 2.0F) / 3.0F;
|
||||
if ((double) f < 0.1D) {
|
||||
return;
|
||||
}
|
||||
if (f > 1.0F) {
|
||||
f = 1.0F;
|
||||
}
|
||||
drawBowStuff(player, partialTicks, f * 2);
|
||||
} else {
|
||||
drawBowStuff(player, partialTicks, 2.0F);
|
||||
}
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
Logger.getLogger(PathRenderer.class.getName()).log(Level.SEVERE, null, ex);
|
||||
}
|
||||
}
|
||||
public static void drawBowStuff(EntityPlayer player, float partialTicks, float strength) {
|
||||
GlStateManager.enableBlend();
|
||||
GlStateManager.tryBlendFuncSeparate(770, 771, 1, 0);
|
||||
FakeArrow ar1 = new FakeArrow(Minecraft.getMinecraft().world, Minecraft.getMinecraft().player, strength, partialTicks);
|
||||
for (int i = 0; i < 200; i++) {
|
||||
ar1.onUpdate();
|
||||
}
|
||||
Color color = ar1.didIHitAnEntity ? Color.RED : Color.BLACK;
|
||||
GlStateManager.color(color.getColorComponents(null)[0], color.getColorComponents(null)[1], color.getColorComponents(null)[2], 0.4F);
|
||||
GL11.glLineWidth(3.0F);
|
||||
GlStateManager.disableTexture2D();
|
||||
GlStateManager.depthMask(false);
|
||||
FakeArrow ar = new FakeArrow(Minecraft.getMinecraft().world, Minecraft.getMinecraft().player, strength, partialTicks);
|
||||
double prevX = ar.posX;
|
||||
double prevY = ar.posY;
|
||||
double prevZ = ar.posZ;
|
||||
for (int i = 0; i < 200; i++) {
|
||||
ar.onUpdate();
|
||||
double currX = ar.posX;
|
||||
double currY = ar.posY;
|
||||
double currZ = ar.posZ;
|
||||
drawLine(Minecraft.getMinecraft().player, prevX - 0.5, prevY - 0.5, prevZ - 0.5, currX - 0.5, currY - 0.5, currZ - 0.5, partialTicks);
|
||||
prevX = currX;
|
||||
prevY = currY;
|
||||
prevZ = currZ;
|
||||
}
|
||||
GlStateManager.depthMask(true);
|
||||
GlStateManager.enableTexture2D();
|
||||
GlStateManager.disableBlend();
|
||||
}
|
||||
|
||||
public static void drawPath(Path path, EntityPlayer player, float partialTicks, Color color) {
|
||||
/*for (BlockPos pos : path.path) {
|
||||
drawSelectionBox(player, pos, partialTicks, color);
|
||||
@ -183,9 +129,10 @@ public class PathRenderer {
|
||||
GlStateManager.enableTexture2D();
|
||||
GlStateManager.disableBlend();
|
||||
}
|
||||
|
||||
public static void drawLine(EntityPlayer player, double bp1x, double bp1y, double bp1z, double bp2x, double bp2y, double bp2z, float partialTicks) {
|
||||
Tessellator tessellator = Tessellator.getInstance();
|
||||
WorldRenderer worldrenderer = tessellator.getWorldRenderer();
|
||||
BufferBuilder worldrenderer = tessellator.getBuffer();
|
||||
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;
|
||||
@ -197,6 +144,7 @@ public class PathRenderer {
|
||||
worldrenderer.pos(bp1x + 0.5D - d0, bp1y + 0.5D - d1, bp1z + 0.5D - d2).endVertex();
|
||||
tessellator.draw();
|
||||
}
|
||||
|
||||
public static void drawSelectionBox(EntityPlayer player, BlockPos blockpos, float partialTicks, Color color) {
|
||||
GlStateManager.enableBlend();
|
||||
GlStateManager.tryBlendFuncSeparate(770, 771, 1, 0);
|
||||
@ -206,17 +154,18 @@ public class PathRenderer {
|
||||
GlStateManager.depthMask(false);
|
||||
float f = 0.002F;
|
||||
//BlockPos blockpos = movingObjectPositionIn.getBlockPos();
|
||||
Block block = Baritone.get(blockpos).getBlock();
|
||||
if (block.equals(Blocks.air)) {
|
||||
block = Blocks.dirt;
|
||||
IBlockState state = Baritone.get(blockpos);
|
||||
Block block = state.getBlock();
|
||||
if (block.equals(Blocks.AIR)) {
|
||||
block = Blocks.DIRT;
|
||||
}
|
||||
block.setBlockBoundsBasedOnState(Minecraft.getMinecraft().world, blockpos);
|
||||
//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(Minecraft.getMinecraft().world, blockpos).expand(0.0020000000949949026D, 0.0020000000949949026D, 0.0020000000949949026D).offset(-d0, -d1, -d2);
|
||||
AxisAlignedBB toDraw = block.getSelectedBoundingBox(state, Minecraft.getMinecraft().world, blockpos).expand(0.0020000000949949026D, 0.0020000000949949026D, 0.0020000000949949026D).offset(-d0, -d1, -d2);
|
||||
Tessellator tessellator = Tessellator.getInstance();
|
||||
WorldRenderer worldrenderer = tessellator.getWorldRenderer();
|
||||
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();
|
||||
|
Loading…
Reference in New Issue
Block a user