Render stuff should be fixed now.

There is likely a better solution, but I think this is fine in order to keep things in-line with the development over at Mojang.
This commit is contained in:
Brady
2020-01-10 19:37:00 -06:00
parent eb348120d9
commit a3dec3a47e
7 changed files with 97 additions and 78 deletions
@@ -17,6 +17,8 @@
package baritone.api.event.events; package baritone.api.event.events;
import com.mojang.blaze3d.matrix.MatrixStack;
/** /**
* @author Brady * @author Brady
* @since 8/5/2018 * @since 8/5/2018
@@ -28,8 +30,11 @@ public final class RenderEvent {
*/ */
private final float partialTicks; private final float partialTicks;
public RenderEvent(float partialTicks) { private final MatrixStack matrixStack;
public RenderEvent(float partialTicks, MatrixStack matrixStack) {
this.partialTicks = partialTicks; this.partialTicks = partialTicks;
this.matrixStack = matrixStack;
} }
/** /**
@@ -38,4 +43,8 @@ public final class RenderEvent {
public final float getPartialTicks() { public final float getPartialTicks() {
return this.partialTicks; return this.partialTicks;
} }
public final MatrixStack getMatrixStack() {
return this.matrixStack;
}
} }
@@ -38,9 +38,9 @@ public class MixinGameRenderer {
args = {"ldc=hand"} args = {"ldc=hand"}
) )
) )
private void renderWorldPass(float partialTicks, long finishTimeNano, MatrixStack idfk, CallbackInfo ci) { private void renderWorldPass(float partialTicks, long finishTimeNano, MatrixStack matrixStack, CallbackInfo ci) {
for (IBaritone ibaritone : BaritoneAPI.getProvider().getAllBaritones()) { for (IBaritone ibaritone : BaritoneAPI.getProvider().getAllBaritones()) {
ibaritone.getGameEventHandler().onRenderPass(new RenderEvent(partialTicks)); ibaritone.getGameEventHandler().onRenderPass(new RenderEvent(partialTicks, matrixStack));
} }
} }
} }
@@ -68,7 +68,7 @@ public class SelCommand extends Command {
float lineWidth = Baritone.settings().selectionLineWidth.value; float lineWidth = Baritone.settings().selectionLineWidth.value;
boolean ignoreDepth = Baritone.settings().renderSelectionIgnoreDepth.value; boolean ignoreDepth = Baritone.settings().renderSelectionIgnoreDepth.value;
IRenderer.startLines(color, opacity, lineWidth, ignoreDepth); IRenderer.startLines(color, opacity, lineWidth, ignoreDepth);
IRenderer.drawAABB(new AxisAlignedBB(pos1, pos1.add(1, 1, 1))); IRenderer.drawAABB(event.getMatrixStack(), new AxisAlignedBB(pos1, pos1.add(1, 1, 1)));
IRenderer.endLines(ignoreDepth); IRenderer.endLines(ignoreDepth);
} }
}); });
@@ -5,6 +5,7 @@ import baritone.api.event.events.RenderEvent;
import baritone.api.event.listener.AbstractGameEventListener; import baritone.api.event.listener.AbstractGameEventListener;
import baritone.api.selection.ISelection; import baritone.api.selection.ISelection;
import baritone.utils.IRenderer; import baritone.utils.IRenderer;
import com.mojang.blaze3d.matrix.MatrixStack;
import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.AxisAlignedBB;
public class SelectionRenderer implements IRenderer, AbstractGameEventListener { public class SelectionRenderer implements IRenderer, AbstractGameEventListener {
@@ -18,7 +19,7 @@ public class SelectionRenderer implements IRenderer, AbstractGameEventListener {
baritone.getGameEventHandler().registerEventListener(this); baritone.getGameEventHandler().registerEventListener(this);
} }
public static void renderSelections(ISelection[] selections) { public static void renderSelections(MatrixStack stack, ISelection[] selections) {
float opacity = settings.selectionOpacity.value; float opacity = settings.selectionOpacity.value;
boolean ignoreDepth = settings.renderSelectionIgnoreDepth.value; boolean ignoreDepth = settings.renderSelectionIgnoreDepth.value;
float lineWidth = settings.selectionLineWidth.value; float lineWidth = settings.selectionLineWidth.value;
@@ -30,20 +31,20 @@ public class SelectionRenderer implements IRenderer, AbstractGameEventListener {
IRenderer.startLines(settings.colorSelection.value, opacity, lineWidth, ignoreDepth); IRenderer.startLines(settings.colorSelection.value, opacity, lineWidth, ignoreDepth);
for (ISelection selection : selections) { for (ISelection selection : selections) {
IRenderer.drawAABB(selection.aabb(), SELECTION_BOX_EXPANSION); IRenderer.drawAABB(stack, selection.aabb(), SELECTION_BOX_EXPANSION);
} }
if (settings.renderSelectionCorners.value) { if (settings.renderSelectionCorners.value) {
IRenderer.glColor(settings.colorSelectionPos1.value, opacity); IRenderer.glColor(settings.colorSelectionPos1.value, opacity);
for (ISelection selection : selections) { for (ISelection selection : selections) {
IRenderer.drawAABB(new AxisAlignedBB(selection.pos1(), selection.pos1().add(1, 1, 1))); IRenderer.drawAABB(stack, new AxisAlignedBB(selection.pos1(), selection.pos1().add(1, 1, 1)));
} }
IRenderer.glColor(settings.colorSelectionPos2.value, opacity); IRenderer.glColor(settings.colorSelectionPos2.value, opacity);
for (ISelection selection : selections) { for (ISelection selection : selections) {
IRenderer.drawAABB(new AxisAlignedBB(selection.pos2(), selection.pos2().add(1, 1, 1))); IRenderer.drawAABB(stack, new AxisAlignedBB(selection.pos2(), selection.pos2().add(1, 1, 1)));
} }
} }
@@ -52,6 +53,6 @@ public class SelectionRenderer implements IRenderer, AbstractGameEventListener {
@Override @Override
public void onRenderPass(RenderEvent event) { public void onRenderPass(RenderEvent event) {
renderSelections(manager.getSelections()); renderSelections(event.getMatrixStack(), manager.getSelections());
} }
} }
+4 -3
View File
@@ -23,6 +23,7 @@ import baritone.api.pathing.goals.GoalBlock;
import baritone.api.pathing.goals.GoalTwoBlocks; import baritone.api.pathing.goals.GoalTwoBlocks;
import baritone.api.utils.BetterBlockPos; import baritone.api.utils.BetterBlockPos;
import baritone.api.utils.Helper; import baritone.api.utils.Helper;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.platform.GlStateManager; import com.mojang.blaze3d.platform.GlStateManager;
import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.systems.RenderSystem;
import net.minecraft.client.entity.player.ClientPlayerEntity; import net.minecraft.client.entity.player.ClientPlayerEntity;
@@ -115,7 +116,7 @@ public class GuiClick extends Screen implements Helper {
return super.mouseClicked(mouseX, mouseY, mouseButton); return super.mouseClicked(mouseX, mouseY, mouseButton);
} }
public void onRender() { public void onRender(MatrixStack stack) {
glGetFloatv(GL_MODELVIEW_MATRIX, (FloatBuffer) MODELVIEW.clear()); glGetFloatv(GL_MODELVIEW_MATRIX, (FloatBuffer) MODELVIEW.clear());
glGetFloatv(GL_PROJECTION_MATRIX, (FloatBuffer) PROJECTION.clear()); glGetFloatv(GL_PROJECTION_MATRIX, (FloatBuffer) PROJECTION.clear());
glGetIntegerv(GL_VIEWPORT, (IntBuffer) VIEWPORT.clear()); glGetIntegerv(GL_VIEWPORT, (IntBuffer) VIEWPORT.clear());
@@ -123,7 +124,7 @@ public class GuiClick extends Screen implements Helper {
if (currentMouseOver != null) { if (currentMouseOver != null) {
Entity e = mc.getRenderViewEntity(); Entity e = mc.getRenderViewEntity();
// drawSingleSelectionBox WHEN? // drawSingleSelectionBox WHEN?
PathRenderer.drawManySelectionBoxes(e, Collections.singletonList(currentMouseOver), Color.CYAN); PathRenderer.drawManySelectionBoxes(stack, e, Collections.singletonList(currentMouseOver), Color.CYAN);
if (clickStart != null && !clickStart.equals(currentMouseOver)) { if (clickStart != null && !clickStart.equals(currentMouseOver)) {
RenderSystem.enableBlend(); RenderSystem.enableBlend();
RenderSystem.blendFuncSeparate(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_ONE, GL_ZERO); RenderSystem.blendFuncSeparate(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_ONE, GL_ZERO);
@@ -134,7 +135,7 @@ public class GuiClick extends Screen implements Helper {
RenderSystem.disableDepthTest(); RenderSystem.disableDepthTest();
BetterBlockPos a = new BetterBlockPos(currentMouseOver); BetterBlockPos a = new BetterBlockPos(currentMouseOver);
BetterBlockPos b = new BetterBlockPos(clickStart); BetterBlockPos b = new BetterBlockPos(clickStart);
IRenderer.drawAABB(new AxisAlignedBB(Math.min(a.x, b.x), Math.min(a.y, b.y), Math.min(a.z, b.z), Math.max(a.x, b.x) + 1, Math.max(a.y, b.y) + 1, Math.max(a.z, b.z) + 1)); IRenderer.drawAABB(stack, new AxisAlignedBB(Math.min(a.x, b.x), Math.min(a.y, b.y), Math.min(a.z, b.z), Math.max(a.x, b.x) + 1, Math.max(a.y, b.y) + 1, Math.max(a.z, b.z) + 1));
RenderSystem.enableDepthTest(); RenderSystem.enableDepthTest();
RenderSystem.depthMask(true); RenderSystem.depthMask(true);
+30 -27
View File
@@ -21,8 +21,10 @@ import baritone.api.BaritoneAPI;
import baritone.api.Settings; import baritone.api.Settings;
import baritone.api.utils.Helper; import baritone.api.utils.Helper;
import baritone.utils.accessor.IEntityRenderManager; import baritone.utils.accessor.IEntityRenderManager;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.systems.RenderSystem;
import net.minecraft.client.renderer.BufferBuilder; import net.minecraft.client.renderer.BufferBuilder;
import net.minecraft.client.renderer.Matrix4f;
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.util.math.AxisAlignedBB; import net.minecraft.util.math.AxisAlignedBB;
@@ -72,41 +74,42 @@ public interface IRenderer {
RenderSystem.disableBlend(); RenderSystem.disableBlend();
} }
static void drawAABB(AxisAlignedBB aabb) { static void drawAABB(MatrixStack stack, AxisAlignedBB aabb) {
AxisAlignedBB toDraw = aabb.offset(-renderManager.renderPosX(), -renderManager.renderPosY(), -renderManager.renderPosZ()); AxisAlignedBB toDraw = aabb.offset(-renderManager.renderPosX(), -renderManager.renderPosY(), -renderManager.renderPosZ());
Matrix4f matrix4f = stack.func_227866_c_().func_227870_a_();
buffer.begin(GL_LINES, DefaultVertexFormats.POSITION); buffer.begin(GL_LINES, DefaultVertexFormats.POSITION);
// bottom // bottom
buffer.func_225582_a_(toDraw.minX, toDraw.minY, toDraw.minZ).endVertex(); buffer.func_227888_a_(matrix4f, (float) toDraw.minX, (float) toDraw.minY, (float) toDraw.minZ).endVertex();
buffer.func_225582_a_(toDraw.maxX, toDraw.minY, toDraw.minZ).endVertex(); buffer.func_227888_a_(matrix4f, (float) toDraw.maxX, (float) toDraw.minY, (float) toDraw.minZ).endVertex();
buffer.func_225582_a_(toDraw.maxX, toDraw.minY, toDraw.minZ).endVertex(); buffer.func_227888_a_(matrix4f, (float) toDraw.maxX, (float) toDraw.minY, (float) toDraw.minZ).endVertex();
buffer.func_225582_a_(toDraw.maxX, toDraw.minY, toDraw.maxZ).endVertex(); buffer.func_227888_a_(matrix4f, (float) toDraw.maxX, (float) toDraw.minY, (float) toDraw.maxZ).endVertex();
buffer.func_225582_a_(toDraw.maxX, toDraw.minY, toDraw.maxZ).endVertex(); buffer.func_227888_a_(matrix4f, (float) toDraw.maxX, (float) toDraw.minY, (float) toDraw.maxZ).endVertex();
buffer.func_225582_a_(toDraw.minX, toDraw.minY, toDraw.maxZ).endVertex(); buffer.func_227888_a_(matrix4f, (float) toDraw.minX, (float) toDraw.minY, (float) toDraw.maxZ).endVertex();
buffer.func_225582_a_(toDraw.minX, toDraw.minY, toDraw.maxZ).endVertex(); buffer.func_227888_a_(matrix4f, (float) toDraw.minX, (float) toDraw.minY, (float) toDraw.maxZ).endVertex();
buffer.func_225582_a_(toDraw.minX, toDraw.minY, toDraw.minZ).endVertex(); buffer.func_227888_a_(matrix4f, (float) toDraw.minX, (float) toDraw.minY, (float) toDraw.minZ).endVertex();
// top // top
buffer.func_225582_a_(toDraw.minX, toDraw.maxY, toDraw.minZ).endVertex(); buffer.func_227888_a_(matrix4f, (float) toDraw.minX, (float) toDraw.maxY, (float) toDraw.minZ).endVertex();
buffer.func_225582_a_(toDraw.maxX, toDraw.maxY, toDraw.minZ).endVertex(); buffer.func_227888_a_(matrix4f, (float) toDraw.maxX, (float) toDraw.maxY, (float) toDraw.minZ).endVertex();
buffer.func_225582_a_(toDraw.maxX, toDraw.maxY, toDraw.minZ).endVertex(); buffer.func_227888_a_(matrix4f, (float) toDraw.maxX, (float) toDraw.maxY, (float) toDraw.minZ).endVertex();
buffer.func_225582_a_(toDraw.maxX, toDraw.maxY, toDraw.maxZ).endVertex(); buffer.func_227888_a_(matrix4f, (float) toDraw.maxX, (float) toDraw.maxY, (float) toDraw.maxZ).endVertex();
buffer.func_225582_a_(toDraw.maxX, toDraw.maxY, toDraw.maxZ).endVertex(); buffer.func_227888_a_(matrix4f, (float) toDraw.maxX, (float) toDraw.maxY, (float) toDraw.maxZ).endVertex();
buffer.func_225582_a_(toDraw.minX, toDraw.maxY, toDraw.maxZ).endVertex(); buffer.func_227888_a_(matrix4f, (float) toDraw.minX, (float) toDraw.maxY, (float) toDraw.maxZ).endVertex();
buffer.func_225582_a_(toDraw.minX, toDraw.maxY, toDraw.maxZ).endVertex(); buffer.func_227888_a_(matrix4f, (float) toDraw.minX, (float) toDraw.maxY, (float) toDraw.maxZ).endVertex();
buffer.func_225582_a_(toDraw.minX, toDraw.maxY, toDraw.minZ).endVertex(); buffer.func_227888_a_(matrix4f, (float) toDraw.minX, (float) toDraw.maxY, (float) toDraw.minZ).endVertex();
// corners // corners
buffer.func_225582_a_(toDraw.minX, toDraw.minY, toDraw.minZ).endVertex(); buffer.func_227888_a_(matrix4f, (float) toDraw.minX, (float) toDraw.minY, (float) toDraw.minZ).endVertex();
buffer.func_225582_a_(toDraw.minX, toDraw.maxY, toDraw.minZ).endVertex(); buffer.func_227888_a_(matrix4f, (float) toDraw.minX, (float) toDraw.maxY, (float) toDraw.minZ).endVertex();
buffer.func_225582_a_(toDraw.maxX, toDraw.minY, toDraw.minZ).endVertex(); buffer.func_227888_a_(matrix4f, (float) toDraw.maxX, (float) toDraw.minY, (float) toDraw.minZ).endVertex();
buffer.func_225582_a_(toDraw.maxX, toDraw.maxY, toDraw.minZ).endVertex(); buffer.func_227888_a_(matrix4f, (float) toDraw.maxX, (float) toDraw.maxY, (float) toDraw.minZ).endVertex();
buffer.func_225582_a_(toDraw.maxX, toDraw.minY, toDraw.maxZ).endVertex(); buffer.func_227888_a_(matrix4f, (float) toDraw.maxX, (float) toDraw.minY, (float) toDraw.maxZ).endVertex();
buffer.func_225582_a_(toDraw.maxX, toDraw.maxY, toDraw.maxZ).endVertex(); buffer.func_227888_a_(matrix4f, (float) toDraw.maxX, (float) toDraw.maxY, (float) toDraw.maxZ).endVertex();
buffer.func_225582_a_(toDraw.minX, toDraw.minY, toDraw.maxZ).endVertex(); buffer.func_227888_a_(matrix4f, (float) toDraw.minX, (float) toDraw.minY, (float) toDraw.maxZ).endVertex();
buffer.func_225582_a_(toDraw.minX, toDraw.maxY, toDraw.maxZ).endVertex(); buffer.func_227888_a_(matrix4f, (float) toDraw.minX, (float) toDraw.maxY, (float) toDraw.maxZ).endVertex();
tessellator.draw(); tessellator.draw();
} }
static void drawAABB(AxisAlignedBB aabb, double expand) { static void drawAABB(MatrixStack stack, AxisAlignedBB aabb, double expand) {
drawAABB(aabb.grow(expand, expand, expand)); drawAABB(stack, aabb.grow(expand, expand, expand));
} }
} }
+44 -39
View File
@@ -26,8 +26,10 @@ import baritone.api.utils.Helper;
import baritone.api.utils.interfaces.IGoalRenderPos; import baritone.api.utils.interfaces.IGoalRenderPos;
import baritone.behavior.PathingBehavior; import baritone.behavior.PathingBehavior;
import baritone.pathing.path.PathExecutor; import baritone.pathing.path.PathExecutor;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.systems.RenderSystem;
import net.minecraft.block.BlockState; import net.minecraft.block.BlockState;
import net.minecraft.client.renderer.Matrix4f;
import net.minecraft.client.renderer.tileentity.BeaconTileEntityRenderer; import net.minecraft.client.renderer.tileentity.BeaconTileEntityRenderer;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats; import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
@@ -72,7 +74,7 @@ public final class PathRenderer implements IRenderer, Helper {
float partialTicks = event.getPartialTicks(); float partialTicks = event.getPartialTicks();
Goal goal = behavior.getGoal(); Goal goal = behavior.getGoal();
if (Helper.mc.currentScreen instanceof GuiClick) { if (Helper.mc.currentScreen instanceof GuiClick) {
((GuiClick) Helper.mc.currentScreen).onRender(); ((GuiClick) Helper.mc.currentScreen).onRender(event.getMatrixStack());
} }
int thisPlayerDimension = behavior.baritone.getPlayerContext().world().getDimension().getType().getId(); int thisPlayerDimension = behavior.baritone.getPlayerContext().world().getDimension().getType().getId();
@@ -93,7 +95,7 @@ public final class PathRenderer implements IRenderer, Helper {
} }
if (goal != null && settings.renderGoal.value) { if (goal != null && settings.renderGoal.value) {
drawDankLitGoalBox(renderView, goal, partialTicks, settings.colorGoalBox.value); drawDankLitGoalBox(event.getMatrixStack(), renderView, goal, partialTicks, settings.colorGoalBox.value);
} }
if (!settings.renderPath.value) { if (!settings.renderPath.value) {
@@ -103,9 +105,9 @@ public final class PathRenderer implements IRenderer, Helper {
PathExecutor current = behavior.getCurrent(); // this should prevent most race conditions? PathExecutor current = behavior.getCurrent(); // this should prevent most race conditions?
PathExecutor next = behavior.getNext(); // like, now it's not possible for current!=null to be true, then suddenly false because of another thread PathExecutor next = behavior.getNext(); // like, now it's not possible for current!=null to be true, then suddenly false because of another thread
if (current != null && settings.renderSelectionBoxes.value) { if (current != null && settings.renderSelectionBoxes.value) {
drawManySelectionBoxes(renderView, current.toBreak(), settings.colorBlocksToBreak.value); drawManySelectionBoxes(event.getMatrixStack(), renderView, current.toBreak(), settings.colorBlocksToBreak.value);
drawManySelectionBoxes(renderView, current.toPlace(), settings.colorBlocksToPlace.value); drawManySelectionBoxes(event.getMatrixStack(), renderView, current.toPlace(), settings.colorBlocksToPlace.value);
drawManySelectionBoxes(renderView, current.toWalkInto(), settings.colorBlocksToWalkInto.value); drawManySelectionBoxes(event.getMatrixStack(), renderView, current.toWalkInto(), settings.colorBlocksToWalkInto.value);
} }
//drawManySelectionBoxes(player, Collections.singletonList(behavior.pathStart()), partialTicks, Color.WHITE); //drawManySelectionBoxes(player, Collections.singletonList(behavior.pathStart()), partialTicks, Color.WHITE);
@@ -113,27 +115,27 @@ public final class PathRenderer implements IRenderer, Helper {
// Render the current path, if there is one // Render the current path, if there is one
if (current != null && current.getPath() != null) { if (current != null && current.getPath() != null) {
int renderBegin = Math.max(current.getPosition() - 3, 0); int renderBegin = Math.max(current.getPosition() - 3, 0);
drawPath(current.getPath(), renderBegin, settings.colorCurrentPath.value, settings.fadePath.value, 10, 20); drawPath(event.getMatrixStack(), current.getPath(), renderBegin, settings.colorCurrentPath.value, settings.fadePath.value, 10, 20);
} }
if (next != null && next.getPath() != null) { if (next != null && next.getPath() != null) {
drawPath(next.getPath(), 0, settings.colorNextPath.value, settings.fadePath.value, 10, 20); drawPath(event.getMatrixStack(), next.getPath(), 0, settings.colorNextPath.value, settings.fadePath.value, 10, 20);
} }
// If there is a path calculation currently running, render the path calculation process // If there is a path calculation currently running, render the path calculation process
behavior.getInProgress().ifPresent(currentlyRunning -> { behavior.getInProgress().ifPresent(currentlyRunning -> {
currentlyRunning.bestPathSoFar().ifPresent(p -> { currentlyRunning.bestPathSoFar().ifPresent(p -> {
drawPath(p, 0, settings.colorBestPathSoFar.value, settings.fadePath.value, 10, 20); drawPath(event.getMatrixStack(), p, 0, settings.colorBestPathSoFar.value, settings.fadePath.value, 10, 20);
}); });
currentlyRunning.pathToMostRecentNodeConsidered().ifPresent(mr -> { currentlyRunning.pathToMostRecentNodeConsidered().ifPresent(mr -> {
drawPath(mr, 0, settings.colorMostRecentConsidered.value, settings.fadePath.value, 10, 20); drawPath(event.getMatrixStack(), mr, 0, settings.colorMostRecentConsidered.value, settings.fadePath.value, 10, 20);
drawManySelectionBoxes(renderView, Collections.singletonList(mr.getDest()), settings.colorMostRecentConsidered.value); drawManySelectionBoxes(event.getMatrixStack(), renderView, Collections.singletonList(mr.getDest()), settings.colorMostRecentConsidered.value);
}); });
}); });
} }
public static void drawPath(IPath path, int startIndex, Color color, boolean fadeOut, int fadeStart0, int fadeEnd0) { public static void drawPath(MatrixStack stack, IPath path, int startIndex, Color color, boolean fadeOut, int fadeStart0, int fadeEnd0) {
IRenderer.startLines(color, settings.pathRenderLineWidthPixels.value, settings.renderPathIgnoreDepth.value); IRenderer.startLines(color, settings.pathRenderLineWidthPixels.value, settings.renderPathIgnoreDepth.value);
int fadeStart = fadeStart0 + startIndex; int fadeStart = fadeStart0 + startIndex;
@@ -169,7 +171,7 @@ public final class PathRenderer implements IRenderer, Helper {
IRenderer.glColor(color, alpha); IRenderer.glColor(color, alpha);
} }
drawLine(start.x, start.y, start.z, end.x, end.y, end.z); drawLine(stack, start.x, start.y, start.z, end.x, end.y, end.z);
tessellator.draw(); tessellator.draw();
} }
@@ -178,24 +180,26 @@ public final class PathRenderer implements IRenderer, Helper {
} }
public static void drawLine(double x1, double y1, double z1, double x2, double y2, double z2) { public static void drawLine(MatrixStack stack, double x1, double y1, double z1, double x2, double y2, double z2) {
Matrix4f matrix4f = stack.func_227866_c_().func_227870_a_();
double vpX = posX(); double vpX = posX();
double vpY = posY(); double vpY = posY();
double vpZ = posZ(); double vpZ = posZ();
boolean renderPathAsFrickinThingy = !settings.renderPathAsLine.value; boolean renderPathAsFrickinThingy = !settings.renderPathAsLine.value;
buffer.begin(renderPathAsFrickinThingy ? GL_LINE_STRIP : GL_LINES, DefaultVertexFormats.POSITION); buffer.begin(renderPathAsFrickinThingy ? GL_LINE_STRIP : GL_LINES, DefaultVertexFormats.POSITION);
buffer.func_225582_a_(x1 + 0.5D - vpX, y1 + 0.5D - vpY, z1 + 0.5D - vpZ).endVertex(); buffer.func_227888_a_(matrix4f, (float) (x1 + 0.5D - vpX), (float) (y1 + 0.5D - vpY), (float) (z1 + 0.5D - vpZ)).endVertex();
buffer.func_225582_a_(x2 + 0.5D - vpX, y2 + 0.5D - vpY, z2 + 0.5D - vpZ).endVertex(); buffer.func_227888_a_(matrix4f, (float) (x2 + 0.5D - vpX), (float) (y2 + 0.5D - vpY), (float) (z2 + 0.5D - vpZ)).endVertex();
if (renderPathAsFrickinThingy) { if (renderPathAsFrickinThingy) {
buffer.func_225582_a_(x2 + 0.5D - vpX, y2 + 0.53D - vpY, z2 + 0.5D - vpZ).endVertex(); buffer.func_227888_a_(matrix4f, (float) (x2 + 0.5D - vpX), (float) (y2 + 0.53D - vpY), (float) (z2 + 0.5D - vpZ)).endVertex();
buffer.func_225582_a_(x1 + 0.5D - vpX, y1 + 0.53D - vpY, z1 + 0.5D - vpZ).endVertex(); buffer.func_227888_a_(matrix4f, (float) (x1 + 0.5D - vpX), (float) (y1 + 0.53D - vpY), (float) (z1 + 0.5D - vpZ)).endVertex();
buffer.func_225582_a_(x1 + 0.5D - vpX, y1 + 0.5D - vpY, z1 + 0.5D - vpZ).endVertex(); buffer.func_227888_a_(matrix4f, (float) (x1 + 0.5D - vpX), (float) (y1 + 0.5D - vpY), (float) (z1 + 0.5D - vpZ)).endVertex();
} }
} }
public static void drawManySelectionBoxes(Entity player, Collection<BlockPos> positions, Color color) { public static void drawManySelectionBoxes(MatrixStack stack, Entity player, Collection<BlockPos> positions, Color color) {
IRenderer.startLines(color, settings.pathRenderLineWidthPixels.value, settings.renderSelectionBoxesIgnoreDepth.value); IRenderer.startLines(color, settings.pathRenderLineWidthPixels.value, settings.renderSelectionBoxesIgnoreDepth.value);
//BlockPos blockpos = movingObjectPositionIn.getBlockPos(); //BlockPos blockpos = movingObjectPositionIn.getBlockPos();
@@ -206,13 +210,13 @@ public final class PathRenderer implements IRenderer, Helper {
VoxelShape shape = state.getShape(player.world, pos); VoxelShape shape = state.getShape(player.world, pos);
AxisAlignedBB toDraw = shape.isEmpty() ? VoxelShapes.fullCube().getBoundingBox() : shape.getBoundingBox(); AxisAlignedBB toDraw = shape.isEmpty() ? VoxelShapes.fullCube().getBoundingBox() : shape.getBoundingBox();
toDraw = toDraw.offset(pos); toDraw = toDraw.offset(pos);
IRenderer.drawAABB(toDraw, .002D); IRenderer.drawAABB(stack, toDraw, .002D);
}); });
IRenderer.endLines(settings.renderSelectionBoxesIgnoreDepth.value); IRenderer.endLines(settings.renderSelectionBoxesIgnoreDepth.value);
} }
public static void drawDankLitGoalBox(Entity player, Goal goal, float partialTicks, Color color) { public static void drawDankLitGoalBox(MatrixStack stack, Entity player, Goal goal, float partialTicks, Color color) {
double renderPosX = posX(); double renderPosX = posX();
double renderPosY = posY(); double renderPosY = posY();
double renderPosZ = posZ(); double renderPosZ = posZ();
@@ -288,11 +292,11 @@ public final class PathRenderer implements IRenderer, Helper {
maxY = 256 - renderPosY; maxY = 256 - renderPosY;
} else if (goal instanceof GoalComposite) { } else if (goal instanceof GoalComposite) {
for (Goal g : ((GoalComposite) goal).goals()) { for (Goal g : ((GoalComposite) goal).goals()) {
drawDankLitGoalBox(player, g, partialTicks, color); drawDankLitGoalBox(stack, player, g, partialTicks, color);
} }
return; return;
} else if (goal instanceof GoalInverted) { } else if (goal instanceof GoalInverted) {
drawDankLitGoalBox(player, ((GoalInverted) goal).origin, partialTicks, settings.colorInvertedGoalBox.value); drawDankLitGoalBox(stack, player, ((GoalInverted) goal).origin, partialTicks, settings.colorInvertedGoalBox.value);
return; return;
} else if (goal instanceof GoalYLevel) { } else if (goal instanceof GoalYLevel) {
GoalYLevel goalpos = (GoalYLevel) goal; GoalYLevel goalpos = (GoalYLevel) goal;
@@ -310,31 +314,32 @@ public final class PathRenderer implements IRenderer, Helper {
IRenderer.startLines(color, settings.goalRenderLineWidthPixels.value, settings.renderGoalIgnoreDepth.value); IRenderer.startLines(color, settings.goalRenderLineWidthPixels.value, settings.renderGoalIgnoreDepth.value);
renderHorizontalQuad(minX, maxX, minZ, maxZ, y1); renderHorizontalQuad(stack, minX, maxX, minZ, maxZ, y1);
renderHorizontalQuad(minX, maxX, minZ, maxZ, y2); renderHorizontalQuad(stack, minX, maxX, minZ, maxZ, y2);
Matrix4f matrix4f = stack.func_227866_c_().func_227870_a_();
buffer.begin(GL_LINES, DefaultVertexFormats.POSITION); buffer.begin(GL_LINES, DefaultVertexFormats.POSITION);
buffer.func_225582_a_(minX, minY, minZ).endVertex(); buffer.func_227888_a_(matrix4f, (float) minX, (float) minY, (float) minZ).endVertex();
buffer.func_225582_a_(minX, maxY, minZ).endVertex(); buffer.func_227888_a_(matrix4f, (float) minX, (float) maxY, (float) minZ).endVertex();
buffer.func_225582_a_(maxX, minY, minZ).endVertex(); buffer.func_227888_a_(matrix4f, (float) maxX, (float) minY, (float) minZ).endVertex();
buffer.func_225582_a_(maxX, maxY, minZ).endVertex(); buffer.func_227888_a_(matrix4f, (float) maxX, (float) maxY, (float) minZ).endVertex();
buffer.func_225582_a_(maxX, minY, maxZ).endVertex(); buffer.func_227888_a_(matrix4f, (float) maxX, (float) minY, (float) maxZ).endVertex();
buffer.func_225582_a_(maxX, maxY, maxZ).endVertex(); buffer.func_227888_a_(matrix4f, (float) maxX, (float) maxY, (float) maxZ).endVertex();
buffer.func_225582_a_(minX, minY, maxZ).endVertex(); buffer.func_227888_a_(matrix4f, (float) minX, (float) minY, (float) maxZ).endVertex();
buffer.func_225582_a_(minX, maxY, maxZ).endVertex(); buffer.func_227888_a_(matrix4f, (float) minX, (float) maxY, (float) maxZ).endVertex();
tessellator.draw(); tessellator.draw();
IRenderer.endLines(settings.renderGoalIgnoreDepth.value); IRenderer.endLines(settings.renderGoalIgnoreDepth.value);
} }
private static void renderHorizontalQuad(double minX, double maxX, double minZ, double maxZ, double y) { private static void renderHorizontalQuad(MatrixStack stack, double minX, double maxX, double minZ, double maxZ, double y) {
if (y != 0) { if (y != 0) {
Matrix4f matrix4f = stack.func_227866_c_().func_227870_a_();
buffer.begin(GL_LINE_LOOP, DefaultVertexFormats.POSITION); buffer.begin(GL_LINE_LOOP, DefaultVertexFormats.POSITION);
buffer.func_225582_a_(minX, y, minZ).endVertex(); buffer.func_227888_a_(matrix4f, (float) minX, (float) y, (float) minZ).endVertex();
buffer.func_225582_a_(maxX, y, minZ).endVertex(); buffer.func_227888_a_(matrix4f, (float) maxX, (float) y, (float) minZ).endVertex();
buffer.func_225582_a_(maxX, y, maxZ).endVertex(); buffer.func_227888_a_(matrix4f, (float) maxX, (float) y, (float) maxZ).endVertex();
buffer.func_225582_a_(minX, y, maxZ).endVertex(); buffer.func_227888_a_(matrix4f, (float) minX, (float) y, (float) maxZ).endVertex();
tessellator.draw(); tessellator.draw();
} }
} }