Add IBlockShapeWrapper
This commit is contained in:
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user