diff --git a/gradle.properties b/gradle.properties index 3bd9ac5..62cae8e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -11,4 +11,4 @@ mcp_mappings=20200514-1.15.1 botania=r1.15-387.455 version_major=2 -version_minor=0 \ No newline at end of file +version_minor=1 \ No newline at end of file diff --git a/src/main/java/thetadev/constructionwand/client/RenderBlockPreview.java b/src/main/java/thetadev/constructionwand/client/RenderBlockPreview.java index c79006f..d381c60 100644 --- a/src/main/java/thetadev/constructionwand/client/RenderBlockPreview.java +++ b/src/main/java/thetadev/constructionwand/client/RenderBlockPreview.java @@ -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; @@ -33,7 +32,7 @@ public void renderBlockHighlight(DrawHighlightEvent event) { Entity entity = event.getInfo().getRenderViewEntity(); if(!(entity instanceof PlayerEntity)) return; PlayerEntity player = (PlayerEntity) entity; - Set blocks = null; + Set blocks; float colorR = 0, colorG = 0, colorB = 0; ItemStack wand = WandUtil.holdingWand(player); @@ -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 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()); } }