Skip to content

Commit

Permalink
Fixed Bug #33 Preview broken in locations beyond 100k
Browse files Browse the repository at this point in the history
  • Loading branch information
Theta-Dev committed Mar 31, 2021
1 parent f60692f commit ddbe201
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 19 deletions.
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,4 @@ mcp_mappings=20200723-1.16.1
botania=1.16.2-405

version_major=2
version_minor=0
version_minor=1
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.vertex.IVertexBuilder;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.IRenderTypeBuffer;
import net.minecraft.client.renderer.WorldRenderer;
import net.minecraft.entity.Entity;
Expand Down Expand Up @@ -33,7 +32,7 @@ public void renderBlockHighlight(DrawHighlightEvent event) {
Entity entity = event.getInfo().getRenderViewEntity();
if(!(entity instanceof PlayerEntity)) return;
PlayerEntity player = (PlayerEntity) entity;
Set<BlockPos> blocks = null;
Set<BlockPos> blocks;
float colorR = 0, colorG = 0, colorB = 0;

ItemStack wand = WandUtil.holdingWand(player);
Expand All @@ -52,28 +51,27 @@ public void renderBlockHighlight(DrawHighlightEvent event) {

if(blocks == null || blocks.isEmpty()) return;

renderBlockList(blocks, event.getMatrix(), event.getBuffers(), colorR, colorG, colorB);
MatrixStack ms = event.getMatrix();
IRenderTypeBuffer buffer = event.getBuffers();
IVertexBuilder lineBuilder = buffer.getBuffer(RenderTypes.TRANSLUCENT_LINES);

event.setCanceled(true);
}

private static boolean compareRTR(BlockRayTraceResult rtr1, BlockRayTraceResult rtr2) {
return rtr1.getPos().equals(rtr2.getPos()) && rtr1.getFace().equals(rtr2.getFace());
}

private void renderBlockList(Set<BlockPos> blocks, MatrixStack ms, IRenderTypeBuffer buffer, float red, float green, float blue) {
double renderPosX = Minecraft.getInstance().getRenderManager().info.getProjectedView().getX();
double renderPosY = Minecraft.getInstance().getRenderManager().info.getProjectedView().getY();
double renderPosZ = Minecraft.getInstance().getRenderManager().info.getProjectedView().getZ();
double partialTicks = event.getPartialTicks();
double d0 = player.lastTickPosX + (player.getPosX() - player.lastTickPosX) * partialTicks;
double d1 = player.lastTickPosY + player.getEyeHeight() + (player.getPosY() - player.lastTickPosY) * partialTicks;
double d2 = player.lastTickPosZ + (player.getPosZ() - player.lastTickPosZ) * partialTicks;

ms.push();
ms.translate(-renderPosX, -renderPosY, -renderPosZ);

for(BlockPos block : blocks) {
AxisAlignedBB aabb = new AxisAlignedBB(block);
IVertexBuilder lineBuilder = buffer.getBuffer(RenderTypes.TRANSLUCENT_LINES);
WorldRenderer.drawBoundingBox(ms, lineBuilder, aabb, red, green, blue, 0.4F);
AxisAlignedBB aabb = new AxisAlignedBB(block).offset(-d0, -d1, -d2);
WorldRenderer.drawBoundingBox(ms, lineBuilder, aabb, colorR, colorG, colorB, 0.4F);
}
ms.pop();

event.setCanceled(true);
}

private static boolean compareRTR(BlockRayTraceResult rtr1, BlockRayTraceResult rtr2) {
return rtr1.getPos().equals(rtr2.getPos()) && rtr1.getFace().equals(rtr2.getFace());
}
}

0 comments on commit ddbe201

Please sign in to comment.