From 63f6d4cc56de41a8dea82739cc7001dc27360ac8 Mon Sep 17 00:00:00 2001 From: Leonardo Date: Thu, 21 Oct 2021 02:17:57 +0200 Subject: [PATCH 1/3] Fixed chorus plant --- .../lod/builders/lodBuilding/LodBuilder.java | 36 ++++++++----------- 1 file changed, 15 insertions(+), 21 deletions(-) diff --git a/src/main/java/com/seibel/lod/builders/lodBuilding/LodBuilder.java b/src/main/java/com/seibel/lod/builders/lodBuilding/LodBuilder.java index a2aba2dbb..2e41e29c2 100644 --- a/src/main/java/com/seibel/lod/builders/lodBuilding/LodBuilder.java +++ b/src/main/java/com/seibel/lod/builders/lodBuilding/LodBuilder.java @@ -825,20 +825,20 @@ public class LodBuilder { if (nonFullAvoidance) { + if(!blockState.getFluidState().isEmpty() || blockState.getBlock() instanceof SixWayBlock) + { + notFullBlock.put(blockState.getBlock(), false); + } if (!notFullBlock.containsKey(blockState.getBlock()) || notFullBlock.get(blockState.getBlock()) == null) { - VoxelShape voxelShape = blockState.getShape(chunk, blockPos); - if (!blockState.getFluidState().isEmpty()) - { - notFullBlock.put(blockState.getBlock(), false); - } + VoxelShape voxelShape = blockState.getBlock().defaultBlockState().getShape(chunk, blockPos); if (!voxelShape.isEmpty()) { AxisAlignedBB bbox = voxelShape.bounds(); - int xWidth = (int) (bbox.maxX - bbox.minX); - int yWidth = (int) (bbox.maxY - bbox.minY); - int zWidth = (int) (bbox.maxZ - bbox.minZ); + double xWidth = (bbox.maxX - bbox.minX); + double yWidth = (bbox.maxY - bbox.minY); + double zWidth = (bbox.maxZ - bbox.minZ); if (xWidth < 1 && zWidth < 1 && yWidth < 1) notFullBlock.put(blockState.getBlock(), true); else @@ -851,17 +851,18 @@ public class LodBuilder } if (notFullBlock.get(blockState.getBlock())) + { return false; + } } if (noCollisionAvoidance) { + if(!blockState.getFluidState().isEmpty() || blockState.getBlock() instanceof SixWayBlock) + smallBlock.put(blockState.getBlock(), false); + if (!smallBlock.containsKey(blockState.getBlock()) || smallBlock.get(blockState.getBlock()) == null) { - - if(!blockState.getFluidState().isEmpty()) - smallBlock.put(blockState.getBlock(), false); - VoxelShape voxelShape = blockState.getCollisionShape(chunk, blockPos); if (!blockState.getFluidState().isEmpty()) { @@ -873,15 +874,6 @@ public class LodBuilder if (voxelShape.isEmpty()) { smallBlock.put(blockState.getBlock(), true); - /*AxisAlignedBB bbox = voxelShape.bounds(); - int xWidth = (int) (bbox.maxX - bbox.minX); - int yWidth = (int) (bbox.maxY - bbox.minY); - int zWidth = (int) (bbox.maxZ - bbox.minZ); - - if (xWidth < 0.7 && zWidth < 0.7 && yWidth < 0.7) - smallBlock.put(blockState.getBlock(), true); - else - smallBlock.put(blockState.getBlock(), false);*/ } else { @@ -891,7 +883,9 @@ public class LodBuilder } if (smallBlock.get(blockState.getBlock())) + { return false; + } } From 7d1df26cc5d076012a2df749d8d1e457297cd339 Mon Sep 17 00:00:00 2001 From: Leonardo Date: Thu, 21 Oct 2021 02:28:37 +0200 Subject: [PATCH 2/3] Shading is only disabled for lod that should be transparent --- .../lod/builders/bufferBuilding/LodBufferBuilder.java | 8 ++++---- src/main/java/com/seibel/lod/util/DataPointUtil.java | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/seibel/lod/builders/bufferBuilding/LodBufferBuilder.java b/src/main/java/com/seibel/lod/builders/bufferBuilding/LodBufferBuilder.java index fb47c031d..43be9ce2f 100644 --- a/src/main/java/com/seibel/lod/builders/bufferBuilding/LodBufferBuilder.java +++ b/src/main/java/com/seibel/lod/builders/bufferBuilding/LodBufferBuilder.java @@ -364,15 +364,15 @@ public class LodBufferBuilder { //Other wise we check if this position is data = lodDim.getSingleData(detailLevel, xAdj, zAdj); - adjShadeDisabled[Box.DIRECTION_INDEX.get(direction)] = DataPointUtil.getAlpha(data) < 255; - adjData.get(direction)[0] = DataPointUtil.EMPTY_DATA; - /*if (isThisPositionGoingToBeRendered(detailLevel, xAdj, zAdj, playerChunkPos, vanillaRenderedChunks, gameChunkRenderDistance) + if (isThisPositionGoingToBeRendered(detailLevel, xAdj, zAdj, playerChunkPos, vanillaRenderedChunks, gameChunkRenderDistance) && !DataPointUtil.isVoid(data)) { + if(DataPointUtil.getAlpha(data) < 255) + System.out.println(DataPointUtil.getAlpha(data)); adjShadeDisabled[Box.DIRECTION_INDEX.get(direction)] = DataPointUtil.getAlpha(data) < 255; adjData.get(direction)[0] = DataPointUtil.EMPTY_DATA; - }*/ + } } } diff --git a/src/main/java/com/seibel/lod/util/DataPointUtil.java b/src/main/java/com/seibel/lod/util/DataPointUtil.java index 5422b9241..25d707e5d 100644 --- a/src/main/java/com/seibel/lod/util/DataPointUtil.java +++ b/src/main/java/com/seibel/lod/util/DataPointUtil.java @@ -153,7 +153,7 @@ public class DataPointUtil public static short getAlpha(long dataPoint) { - return (short) (((dataPoint >>> ALPHA_SHIFT) & ALPHA_MASK) << ALPHA_DOWNSIZE_SHIFT); + return (short) ((((dataPoint >>> ALPHA_SHIFT) & ALPHA_MASK) << ALPHA_DOWNSIZE_SHIFT) | 0b1111); } public static short getRed(long dataPoint) @@ -212,7 +212,7 @@ public class DataPointUtil public static int getColor(long dataPoint) { - return (int) (((dataPoint >>> COLOR_SHIFT) & COLOR_MASK) | (((dataPoint >>> (ALPHA_SHIFT - ALPHA_DOWNSIZE_SHIFT)) | 0b1111) << 24)); + return (int) (((dataPoint >>> COLOR_SHIFT) & COLOR_MASK) | (/*((dataPoint >>> (ALPHA_SHIFT - ALPHA_DOWNSIZE_SHIFT)) | 0b1111)*/255 << 24)); } /** This method apply the lightmap to the color to use */ From 5493ef90339cad36e256cc39a97ccb0daab85ca5 Mon Sep 17 00:00:00 2001 From: Leonardo Date: Thu, 21 Oct 2021 02:36:57 +0200 Subject: [PATCH 3/3] removed a print --- .../seibel/lod/builders/bufferBuilding/LodBufferBuilder.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main/java/com/seibel/lod/builders/bufferBuilding/LodBufferBuilder.java b/src/main/java/com/seibel/lod/builders/bufferBuilding/LodBufferBuilder.java index 43be9ce2f..f8756b234 100644 --- a/src/main/java/com/seibel/lod/builders/bufferBuilding/LodBufferBuilder.java +++ b/src/main/java/com/seibel/lod/builders/bufferBuilding/LodBufferBuilder.java @@ -368,8 +368,6 @@ public class LodBufferBuilder if (isThisPositionGoingToBeRendered(detailLevel, xAdj, zAdj, playerChunkPos, vanillaRenderedChunks, gameChunkRenderDistance) && !DataPointUtil.isVoid(data)) { - if(DataPointUtil.getAlpha(data) < 255) - System.out.println(DataPointUtil.getAlpha(data)); adjShadeDisabled[Box.DIRECTION_INDEX.get(direction)] = DataPointUtil.getAlpha(data) < 255; adjData.get(direction)[0] = DataPointUtil.EMPTY_DATA; }