diff --git a/src/main/java/exopandora/worldhandler/event/ClientEventHandler.java b/src/main/java/exopandora/worldhandler/event/ClientEventHandler.java index b585a30..6e2fabc 100644 --- a/src/main/java/exopandora/worldhandler/event/ClientEventHandler.java +++ b/src/main/java/exopandora/worldhandler/event/ClientEventHandler.java @@ -8,13 +8,14 @@ import com.mojang.brigadier.StringReader; import com.mojang.brigadier.exceptions.CommandSyntaxException; import exopandora.worldhandler.config.Config; +import exopandora.worldhandler.render.CustomRenderType; import exopandora.worldhandler.util.BlockHelper; import exopandora.worldhandler.util.CommandHelper; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.WorldRenderer; import net.minecraft.command.CommandSource; +import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.vector.Vector3d; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; @@ -32,10 +33,6 @@ public class ClientEventHandler { Vector3d projected = Minecraft.getInstance().getRenderManager().info.getProjectedView(); - MatrixStack matrix = event.getMatrixStack(); - matrix.push(); - matrix.translate(-projected.getX(), -projected.getY(), -projected.getZ()); - double minX = Math.min(BlockHelper.getPos1().getX(), BlockHelper.getPos2().getX()); double minY = Math.min(BlockHelper.getPos1().getY(), BlockHelper.getPos2().getY()); double minZ = Math.min(BlockHelper.getPos1().getZ(), BlockHelper.getPos2().getZ()); @@ -44,13 +41,22 @@ public class ClientEventHandler double maxY = Math.max(BlockHelper.getPos1().getY(), BlockHelper.getPos2().getY()) + 1; double maxZ = Math.max(BlockHelper.getPos1().getZ(), BlockHelper.getPos2().getZ()) + 1; - IRenderTypeBuffer.Impl buffer = Minecraft.getInstance().getRenderTypeBuffers().getBufferSource(); - IVertexBuilder builder = buffer.getBuffer(RenderType.getLines()); + AxisAlignedBB aabb = new AxisAlignedBB(minX, minY, minZ, maxX, maxY, maxZ); - WorldRenderer.drawBoundingBox(matrix, builder, minX, minY, minZ, maxX, maxY, maxZ, 0.9F, 0.9F, 0.9F, 1.0F, 0.5F, 0.5F, 0.5F); - buffer.finish(RenderType.LINES); - - matrix.pop(); + if(aabb.getCenter().distanceTo(projected) < 96) + { + MatrixStack matrix = event.getMatrixStack(); + matrix.push(); + matrix.translate(-projected.getX(), -projected.getY(), -projected.getZ()); + + IRenderTypeBuffer.Impl buffer = Minecraft.getInstance().getRenderTypeBuffers().getBufferSource(); + IVertexBuilder builder = buffer.getBuffer(CustomRenderType.LINES2); + + WorldRenderer.drawBoundingBox(matrix, builder, minX, minY, minZ, maxX, maxY, maxZ, 0.9F, 0.9F, 0.9F, 1.0F, 0.5F, 0.5F, 0.5F); + + buffer.finish(CustomRenderType.LINES2); + matrix.pop(); + } } } diff --git a/src/main/java/exopandora/worldhandler/render/CustomRenderType.java b/src/main/java/exopandora/worldhandler/render/CustomRenderType.java new file mode 100644 index 0000000..d340e86 --- /dev/null +++ b/src/main/java/exopandora/worldhandler/render/CustomRenderType.java @@ -0,0 +1,32 @@ +package exopandora.worldhandler.render; + +import java.util.OptionalDouble; + +import org.lwjgl.opengl.GL11; + +import net.minecraft.client.renderer.RenderState; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.vertex.DefaultVertexFormats; +import net.minecraft.client.renderer.vertex.VertexFormat; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; + +@OnlyIn(Dist.CLIENT) +public abstract class CustomRenderType extends RenderType +{ + public static final RenderType LINES2 = RenderType.makeType("lines2", + DefaultVertexFormats.POSITION_COLOR, + GL11.GL_LINES, + 256, + RenderType.State.getBuilder() + .line(new RenderState.LineState(OptionalDouble.empty())) + .layer(field_239235_M_) + .transparency(TRANSLUCENT_TRANSPARENCY) + .writeMask(COLOR_DEPTH_WRITE) + .build(false)); + + public CustomRenderType(String nameIn, VertexFormat formatIn, int drawModeIn, int bufferSizeIn, boolean useDelegateIn, boolean needsSortingIn, Runnable setupTaskIn, Runnable clearTaskIn) + { + super(nameIn, formatIn, drawModeIn, bufferSizeIn, useDelegateIn, needsSortingIn, setupTaskIn, clearTaskIn); + } +} \ No newline at end of file