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 5792cbcc3..bcdd9d631 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 @@ -35,11 +35,12 @@ import com.seibel.lod.core.util.LodThreadFactory; import com.seibel.lod.core.util.LodUtil; 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.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.BlockColorWrapper; import com.seibel.lod.wrappers.block.BlockPosWrapper; import com.seibel.lod.wrappers.block.BlockShapeWrapper; import com.seibel.lod.wrappers.chunk.ChunkPosWrapper; @@ -57,6 +58,7 @@ import com.seibel.lod.wrappers.minecraft.MinecraftWrapper; public class LodBuilder { private static final MinecraftWrapper mc = MinecraftWrapper.INSTANCE; + private static final IBlockColorSingletonWrapper blockColorSingleton = SingletonHandler.get(IBlockColorSingletonWrapper.class); private final ExecutorService lodGenThreadPool = Executors.newSingleThreadExecutor(new LodThreadFactory(this.getClass().getSimpleName())); private final ILodConfigWrapperSingleton config = SingletonHandler.get(ILodConfigWrapperSingleton.class); @@ -477,11 +479,11 @@ public class LodBuilder int y = blockPos.getY(); //int z = blockPos.getZ(); - BlockColorWrapper blockColorWrapper; + IBlockColorWrapper blockColorWrapper; BlockShapeWrapper blockShapeWrapper = chunk.getBlockShapeWrapper(blockPos); if (chunk.isWaterLogged(blockPos)) - blockColorWrapper = BlockColorWrapper.getWaterColor(); + blockColorWrapper = blockColorSingleton.getWaterColor(); else blockColorWrapper = chunk.getBlockColorWrapper(blockPos); diff --git a/src/main/java/com/seibel/lod/core/wrapperAdapters/block/IBlockColorSingletonWrapper.java b/src/main/java/com/seibel/lod/core/wrapperAdapters/block/IBlockColorSingletonWrapper.java new file mode 100644 index 000000000..7ac448d8e --- /dev/null +++ b/src/main/java/com/seibel/lod/core/wrapperAdapters/block/IBlockColorSingletonWrapper.java @@ -0,0 +1,14 @@ +package com.seibel.lod.core.wrapperAdapters.block; + +/** + * Contains the static methods for IBlockColorWrapper + * + * @author James Seibel + * @version 11-17-2021 + */ +public interface IBlockColorSingletonWrapper +{ + /** returns the base color of water (grey value) */ + public IBlockColorWrapper getWaterColor(); +} + diff --git a/src/main/java/com/seibel/lod/core/wrapperAdapters/block/IBlockColorWrapper.java b/src/main/java/com/seibel/lod/core/wrapperAdapters/block/IBlockColorWrapper.java new file mode 100644 index 000000000..6d9506bf5 --- /dev/null +++ b/src/main/java/com/seibel/lod/core/wrapperAdapters/block/IBlockColorWrapper.java @@ -0,0 +1,33 @@ +package com.seibel.lod.core.wrapperAdapters.block; + +/** + * This class wraps the minecraft Block class + * + * @author James Seibel + * @version 11-17-2021 + */ +public interface IBlockColorWrapper +{ + //--------------// + //Colors getters// + //--------------// + + public boolean hasColor(); + + public int getColor(); + + + //------------// + //Tint getters// + //------------// + + public boolean hasTint(); + + public boolean hasGrassTint(); + + public boolean hasFolliageTint(); + + public boolean hasWaterTint(); + +} + diff --git a/src/main/java/com/seibel/lod/wrappers/DependencySetup.java b/src/main/java/com/seibel/lod/wrappers/DependencySetup.java index c7706bd69..3b47ccdc2 100644 --- a/src/main/java/com/seibel/lod/wrappers/DependencySetup.java +++ b/src/main/java/com/seibel/lod/wrappers/DependencySetup.java @@ -1,7 +1,9 @@ package com.seibel.lod.wrappers; import com.seibel.lod.core.wrapperAdapters.SingletonHandler; +import com.seibel.lod.core.wrapperAdapters.block.IBlockColorSingletonWrapper; import com.seibel.lod.core.wrapperAdapters.config.ILodConfigWrapperSingleton; +import com.seibel.lod.wrappers.block.BlockColorSingletonWrapper; import com.seibel.lod.wrappers.config.LodConfigWrapperSingleton; /** @@ -18,5 +20,6 @@ public class DependencySetup public static void createInitialBindings() { SingletonHandler.bind(ILodConfigWrapperSingleton.class, LodConfigWrapperSingleton.INSTANCE); + SingletonHandler.bind(IBlockColorSingletonWrapper.class, BlockColorSingletonWrapper.INSTANCE); } } diff --git a/src/main/java/com/seibel/lod/wrappers/block/BlockColorSingletonWrapper.java b/src/main/java/com/seibel/lod/wrappers/block/BlockColorSingletonWrapper.java new file mode 100644 index 000000000..e91c5b617 --- /dev/null +++ b/src/main/java/com/seibel/lod/wrappers/block/BlockColorSingletonWrapper.java @@ -0,0 +1,26 @@ +package com.seibel.lod.wrappers.block; + +import com.seibel.lod.core.wrapperAdapters.block.IBlockColorSingletonWrapper; +import com.seibel.lod.core.wrapperAdapters.block.IBlockColorWrapper; + +import net.minecraft.block.Blocks; + + +/** + * This class wraps the minecraft Block class + * + * @author ?? + * @version 11-17-2021 + */ +public class BlockColorSingletonWrapper implements IBlockColorSingletonWrapper +{ + public static final BlockColorSingletonWrapper INSTANCE = new BlockColorSingletonWrapper(); + + /** return base color of water (grey value) */ + @Override + public IBlockColorWrapper getWaterColor() + { + return BlockColorWrapper.getBlockColorWrapper(Blocks.WATER); + } +} + diff --git a/src/main/java/com/seibel/lod/wrappers/block/BlockColorWrapper.java b/src/main/java/com/seibel/lod/wrappers/block/BlockColorWrapper.java index 108e78e01..01e5958c2 100644 --- a/src/main/java/com/seibel/lod/wrappers/block/BlockColorWrapper.java +++ b/src/main/java/com/seibel/lod/wrappers/block/BlockColorWrapper.java @@ -7,6 +7,7 @@ import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; import com.seibel.lod.core.util.ColorUtil; +import com.seibel.lod.core.wrapperAdapters.block.IBlockColorWrapper; import com.seibel.lod.wrappers.minecraft.MinecraftWrapper; import net.minecraft.block.AbstractPlantBlock; @@ -27,8 +28,13 @@ import net.minecraft.util.math.BlockPos; import net.minecraftforge.client.model.data.ModelDataMap; -//This class wraps the minecraft Block class -public class BlockColorWrapper +/** + * This class wraps the minecraft Block class + * + * @author ?? + * @version 11-17-2021 + */ +public class BlockColorWrapper implements IBlockColorWrapper { //set of block which require tint public static final ConcurrentMap blockColorWrapperMap = new ConcurrentHashMap<>(); @@ -72,18 +78,11 @@ public class BlockColorWrapper //System.out.println(block + " color " + Integer.toHexString(color) + " to tint " + toTint + " folliageTint " + folliageTint + " grassTint " + grassTint + " waterTint " + waterTint); } - /** - * return base color of water (grey value) - */ - static public BlockColorWrapper getWaterColor() - { - return getBlockColorWrapper(Blocks.WATER); - } /** * this return a wrapper of the block in input * @param block object of the block to wrap */ - static public BlockColorWrapper getBlockColorWrapper(Block block) + public static IBlockColorWrapper getBlockColorWrapper(Block block) { //first we check if the block has already been wrapped if (blockColorWrapperMap.containsKey(block) && blockColorWrapperMap.get(block) != null) @@ -253,11 +252,13 @@ public class BlockColorWrapper //Colors getters// //--------------// + @Override public boolean hasColor() { return isColored; } + @Override public int getColor() { return color; @@ -268,21 +269,25 @@ public class BlockColorWrapper //------------// + @Override public boolean hasTint() { return toTint; } + @Override public boolean hasGrassTint() { return grassTint; } + @Override public boolean hasFolliageTint() { return foliageTint; } + @Override public boolean hasWaterTint() { return waterTint; 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 9fd96e73b..bacd3140f 100644 --- a/src/main/java/com/seibel/lod/wrappers/chunk/ChunkWrapper.java +++ b/src/main/java/com/seibel/lod/wrappers/chunk/ChunkWrapper.java @@ -1,6 +1,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.wrappers.block.BlockColorWrapper; import com.seibel.lod.wrappers.block.BlockPosWrapper; import com.seibel.lod.wrappers.block.BlockShapeWrapper; @@ -40,7 +41,7 @@ public class ChunkWrapper return BiomeWrapper.getBiomeWrapper(chunk.getBiomes().getNoiseBiome(xRel >> 2, yAbs >> 2, zRel >> 2)); } - public BlockColorWrapper getBlockColorWrapper(BlockPosWrapper blockPos) + public IBlockColorWrapper getBlockColorWrapper(BlockPosWrapper blockPos) { return BlockColorWrapper.getBlockColorWrapper(chunk.getBlockState(blockPos.getBlockPos()).getBlock()); } diff --git a/src/main/java/com/seibel/lod/wrappers/world/BiomeWrapper.java b/src/main/java/com/seibel/lod/wrappers/world/BiomeWrapper.java index fd8b70029..1ad25f2a4 100644 --- a/src/main/java/com/seibel/lod/wrappers/world/BiomeWrapper.java +++ b/src/main/java/com/seibel/lod/wrappers/world/BiomeWrapper.java @@ -6,6 +6,7 @@ import java.util.concurrent.ConcurrentMap; import com.seibel.lod.core.util.ColorUtil; import com.seibel.lod.core.wrapperAdapters.world.IBiomeWrapper; +import com.seibel.lod.wrappers.block.BlockColorSingletonWrapper; import com.seibel.lod.wrappers.block.BlockColorWrapper; import net.minecraft.block.Blocks; @@ -85,7 +86,7 @@ public class BiomeWrapper implements IBiomeWrapper case OCEAN: case RIVER: - colorInt = BlockColorWrapper.getWaterColor().getColor(); + colorInt = BlockColorSingletonWrapper.INSTANCE.getWaterColor().getColor(); tintValue = biome.getWaterColor(); break;