Add IBlockShapeWrapper

This commit is contained in:
James Seibel
2021-11-17 22:03:21 -06:00
parent a91c51ee3b
commit eb7a1251d3
4 changed files with 31 additions and 11 deletions
@@ -37,12 +37,12 @@ import com.seibel.lod.core.util.ThreadMapUtil;
import com.seibel.lod.core.wrapperAdapters.SingletonHandler; import com.seibel.lod.core.wrapperAdapters.SingletonHandler;
import com.seibel.lod.core.wrapperAdapters.block.IBlockColorSingletonWrapper; import com.seibel.lod.core.wrapperAdapters.block.IBlockColorSingletonWrapper;
import com.seibel.lod.core.wrapperAdapters.block.IBlockColorWrapper; 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.config.ILodConfigWrapperSingleton;
import com.seibel.lod.core.wrapperAdapters.world.IBiomeWrapper; import com.seibel.lod.core.wrapperAdapters.world.IBiomeWrapper;
import com.seibel.lod.core.wrapperAdapters.world.IDimensionTypeWrapper; import com.seibel.lod.core.wrapperAdapters.world.IDimensionTypeWrapper;
import com.seibel.lod.core.wrapperAdapters.world.IWorldWrapper; import com.seibel.lod.core.wrapperAdapters.world.IWorldWrapper;
import com.seibel.lod.wrappers.block.BlockPosWrapper; 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.ChunkPosWrapper;
import com.seibel.lod.wrappers.chunk.ChunkWrapper; import com.seibel.lod.wrappers.chunk.ChunkWrapper;
import com.seibel.lod.wrappers.minecraft.MinecraftWrapper; import com.seibel.lod.wrappers.minecraft.MinecraftWrapper;
@@ -480,7 +480,7 @@ public class LodBuilder
//int z = blockPos.getZ(); //int z = blockPos.getZ();
IBlockColorWrapper blockColorWrapper; IBlockColorWrapper blockColorWrapper;
BlockShapeWrapper blockShapeWrapper = chunk.getBlockShapeWrapper(blockPos); IBlockShapeWrapper blockShapeWrapper = chunk.getBlockShapeWrapper(blockPos);
if (chunk.isWaterLogged(blockPos)) if (chunk.isWaterLogged(blockPos))
blockColorWrapper = blockColorSingleton.getWaterColor(); blockColorWrapper = blockColorSingleton.getWaterColor();
@@ -525,7 +525,7 @@ public class LodBuilder
boolean nonFullAvoidance = config.client().worldGenerator().getBlocksToAvoid().nonFull; boolean nonFullAvoidance = config.client().worldGenerator().getBlocksToAvoid().nonFull;
boolean noCollisionAvoidance = config.client().worldGenerator().getBlocksToAvoid().noCollision; boolean noCollisionAvoidance = config.client().worldGenerator().getBlocksToAvoid().noCollision;
BlockShapeWrapper block = chunk.getBlockShapeWrapper(blockPos); IBlockShapeWrapper block = chunk.getBlockShapeWrapper(blockPos);
return !block.isToAvoid() return !block.isToAvoid()
&& !(nonFullAvoidance && block.isNonFull()) && !(nonFullAvoidance && block.isNonFull())
&& !(noCollisionAvoidance && block.hasNoCollision()); && !(noCollisionAvoidance && block.hasNoCollision());
@@ -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();
}
@@ -1,6 +1,13 @@
package com.seibel.lod.wrappers.block; 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.Block;
import net.minecraft.block.Blocks; import net.minecraft.block.Blocks;
import net.minecraft.block.SixWayBlock; 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.util.math.shapes.VoxelShape;
import net.minecraft.world.IBlockReader; 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 //This class wraps the minecraft Block class
public class BlockShapeWrapper public class BlockShapeWrapper implements IBlockShapeWrapper
{ {
//set of block which require tint //set of block which require tint
public static final ConcurrentMap<Block, BlockShapeWrapper> blockShapeWrapperMap = new ConcurrentHashMap<>(); public static final ConcurrentMap<Block, BlockShapeWrapper> blockShapeWrapperMap = new ConcurrentHashMap<>();
@@ -2,6 +2,7 @@ package com.seibel.lod.wrappers.chunk;
import com.seibel.lod.core.util.LodUtil; import com.seibel.lod.core.util.LodUtil;
import com.seibel.lod.core.wrapperAdapters.block.IBlockColorWrapper; 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.BlockColorWrapper;
import com.seibel.lod.wrappers.block.BlockPosWrapper; import com.seibel.lod.wrappers.block.BlockPosWrapper;
import com.seibel.lod.wrappers.block.BlockShapeWrapper; import com.seibel.lod.wrappers.block.BlockShapeWrapper;
@@ -46,7 +47,7 @@ public class ChunkWrapper
return BlockColorWrapper.getBlockColorWrapper(chunk.getBlockState(blockPos.getBlockPos()).getBlock()); 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); return BlockShapeWrapper.getBlockShapeWrapper(chunk.getBlockState(blockPos.getBlockPos()).getBlock(), this, blockPos);
} }