From eb7a1251d36cb84e485a39af1ed98869bb86c7d5 Mon Sep 17 00:00:00 2001 From: James Seibel Date: Wed, 17 Nov 2021 22:03:21 -0600 Subject: [PATCH] Add IBlockShapeWrapper --- .../core/builders/lodBuilding/LodBuilder.java | 6 +++--- .../block/IBlockShapeWrapper.java | 18 ++++++++++++++++++ .../lod/wrappers/block/BlockShapeWrapper.java | 15 ++++++++------- .../lod/wrappers/chunk/ChunkWrapper.java | 3 ++- 4 files changed, 31 insertions(+), 11 deletions(-) create mode 100644 src/main/java/com/seibel/lod/core/wrapperAdapters/block/IBlockShapeWrapper.java diff --git a/src/main/java/com/seibel/lod/core/builders/lodBuilding/LodBuilder.java b/src/main/java/com/seibel/lod/core/builders/lodBuilding/LodBuilder.java index bcdd9d631..ef52626a1 100644 --- a/src/main/java/com/seibel/lod/core/builders/lodBuilding/LodBuilder.java +++ b/src/main/java/com/seibel/lod/core/builders/lodBuilding/LodBuilder.java @@ -37,12 +37,12 @@ import com.seibel.lod.core.util.ThreadMapUtil; import com.seibel.lod.core.wrapperAdapters.SingletonHandler; import com.seibel.lod.core.wrapperAdapters.block.IBlockColorSingletonWrapper; import com.seibel.lod.core.wrapperAdapters.block.IBlockColorWrapper; +import com.seibel.lod.core.wrapperAdapters.block.IBlockShapeWrapper; import com.seibel.lod.core.wrapperAdapters.config.ILodConfigWrapperSingleton; import com.seibel.lod.core.wrapperAdapters.world.IBiomeWrapper; import com.seibel.lod.core.wrapperAdapters.world.IDimensionTypeWrapper; import com.seibel.lod.core.wrapperAdapters.world.IWorldWrapper; import com.seibel.lod.wrappers.block.BlockPosWrapper; -import com.seibel.lod.wrappers.block.BlockShapeWrapper; import com.seibel.lod.wrappers.chunk.ChunkPosWrapper; import com.seibel.lod.wrappers.chunk.ChunkWrapper; import com.seibel.lod.wrappers.minecraft.MinecraftWrapper; @@ -480,7 +480,7 @@ public class LodBuilder //int z = blockPos.getZ(); IBlockColorWrapper blockColorWrapper; - BlockShapeWrapper blockShapeWrapper = chunk.getBlockShapeWrapper(blockPos); + IBlockShapeWrapper blockShapeWrapper = chunk.getBlockShapeWrapper(blockPos); if (chunk.isWaterLogged(blockPos)) blockColorWrapper = blockColorSingleton.getWaterColor(); @@ -525,7 +525,7 @@ public class LodBuilder boolean nonFullAvoidance = config.client().worldGenerator().getBlocksToAvoid().nonFull; boolean noCollisionAvoidance = config.client().worldGenerator().getBlocksToAvoid().noCollision; - BlockShapeWrapper block = chunk.getBlockShapeWrapper(blockPos); + IBlockShapeWrapper block = chunk.getBlockShapeWrapper(blockPos); return !block.isToAvoid() && !(nonFullAvoidance && block.isNonFull()) && !(noCollisionAvoidance && block.hasNoCollision()); diff --git a/src/main/java/com/seibel/lod/core/wrapperAdapters/block/IBlockShapeWrapper.java b/src/main/java/com/seibel/lod/core/wrapperAdapters/block/IBlockShapeWrapper.java new file mode 100644 index 000000000..6bdf7717a --- /dev/null +++ b/src/main/java/com/seibel/lod/core/wrapperAdapters/block/IBlockShapeWrapper.java @@ -0,0 +1,18 @@ + +package com.seibel.lod.core.wrapperAdapters.block; + +//This class wraps the minecraft Block class +public interface IBlockShapeWrapper +{ + public boolean ofBlockToAvoid(); + + //-----------------// + //Avoidance getters// + //-----------------// + + public boolean isNonFull(); + + public boolean hasNoCollision(); + + public boolean isToAvoid(); +} \ No newline at end of file diff --git a/src/main/java/com/seibel/lod/wrappers/block/BlockShapeWrapper.java b/src/main/java/com/seibel/lod/wrappers/block/BlockShapeWrapper.java index 4b22259d2..2b8f208c6 100644 --- a/src/main/java/com/seibel/lod/wrappers/block/BlockShapeWrapper.java +++ b/src/main/java/com/seibel/lod/wrappers/block/BlockShapeWrapper.java @@ -1,6 +1,13 @@ package com.seibel.lod.wrappers.block; +import java.util.Objects; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentMap; + +import com.seibel.lod.core.wrapperAdapters.block.IBlockShapeWrapper; +import com.seibel.lod.wrappers.chunk.ChunkWrapper; + import net.minecraft.block.Block; import net.minecraft.block.Blocks; import net.minecraft.block.SixWayBlock; @@ -9,15 +16,9 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.shapes.VoxelShape; import net.minecraft.world.IBlockReader; -import java.util.Objects; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ConcurrentMap; - -import com.seibel.lod.wrappers.chunk.ChunkWrapper; - //This class wraps the minecraft Block class -public class BlockShapeWrapper +public class BlockShapeWrapper implements IBlockShapeWrapper { //set of block which require tint public static final ConcurrentMap blockShapeWrapperMap = new ConcurrentHashMap<>(); diff --git a/src/main/java/com/seibel/lod/wrappers/chunk/ChunkWrapper.java b/src/main/java/com/seibel/lod/wrappers/chunk/ChunkWrapper.java index bacd3140f..98aad0627 100644 --- a/src/main/java/com/seibel/lod/wrappers/chunk/ChunkWrapper.java +++ b/src/main/java/com/seibel/lod/wrappers/chunk/ChunkWrapper.java @@ -2,6 +2,7 @@ package com.seibel.lod.wrappers.chunk; import com.seibel.lod.core.util.LodUtil; import com.seibel.lod.core.wrapperAdapters.block.IBlockColorWrapper; +import com.seibel.lod.core.wrapperAdapters.block.IBlockShapeWrapper; import com.seibel.lod.wrappers.block.BlockColorWrapper; import com.seibel.lod.wrappers.block.BlockPosWrapper; import com.seibel.lod.wrappers.block.BlockShapeWrapper; @@ -46,7 +47,7 @@ public class ChunkWrapper return BlockColorWrapper.getBlockColorWrapper(chunk.getBlockState(blockPos.getBlockPos()).getBlock()); } - public BlockShapeWrapper getBlockShapeWrapper(BlockPosWrapper blockPos) + public IBlockShapeWrapper getBlockShapeWrapper(BlockPosWrapper blockPos) { return BlockShapeWrapper.getBlockShapeWrapper(chunk.getBlockState(blockPos.getBlockPos()).getBlock(), this, blockPos); }