From f6ee8048eb49a8b0e2ac702bb3ba0f60638bd6aa Mon Sep 17 00:00:00 2001 From: James Seibel Date: Wed, 23 Aug 2023 21:23:58 -0500 Subject: [PATCH] Have getRendererIgnoredBlocks()'s require a level and return a hashset --- .../transformers/FullDataToRenderDataTransformer.java | 9 ++++----- .../core/wrapperInterfaces/IWrapperFactory.java | 9 +++++++-- .../core/wrapperInterfaces/block/IBlockStateWrapper.java | 3 +-- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/transformers/FullDataToRenderDataTransformer.java b/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/transformers/FullDataToRenderDataTransformer.java index 4381a9499..12e99b60b 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/transformers/FullDataToRenderDataTransformer.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/dataObjects/transformers/FullDataToRenderDataTransformer.java @@ -23,7 +23,7 @@ import com.seibel.distanthorizons.core.wrapperInterfaces.block.IBlockStateWrappe import com.seibel.distanthorizons.core.wrapperInterfaces.world.IBiomeWrapper; import com.seibel.distanthorizons.coreapi.util.BitShiftUtil; -import java.util.HashMap; +import java.util.HashSet; /** * Handles converting {@link ChunkSizedFullDataAccessor}, {@link IIncompleteFullDataSource}, @@ -32,7 +32,6 @@ import java.util.HashMap; public class FullDataToRenderDataTransformer { private static final IWrapperFactory WRAPPER_FACTORY = SingletonInjector.INSTANCE.get(IWrapperFactory.class); - private static final HashMap RENDERER_IGNORED_BLOCKS = WRAPPER_FACTORY.getRendererIgnoredBlocks(); @@ -292,6 +291,7 @@ public class FullDataToRenderDataTransformer boolean colorBelowWithAvoidedBlocks = Config.Client.Advanced.Graphics.Quality.tintWithAvoidedBlocks.get(); FullDataPointIdMap fullDataMapping = data.getMapping(); + HashSet blockStatesToIgnore = WRAPPER_FACTORY.getRendererIgnoredBlocks(level.getLevelWrapper()); boolean isVoid = true; int colorToApplyToNextBlock = -1; @@ -308,10 +308,9 @@ public class FullDataToRenderDataTransformer IBiomeWrapper biome = fullDataMapping.getBiomeWrapper(id); IBlockStateWrapper block = fullDataMapping.getBlockStateWrapper(id); - if (RENDERER_IGNORED_BLOCKS.containsValue(block)) + if (blockStatesToIgnore.contains(block)) { - // Don't render a block that's marked as ignored by the renderer - // This map should include air (if it doesn't, the map either got refactored or something is wrong) + // Don't render: air, barriers, light blocks, etc. continue; } diff --git a/core/src/main/java/com/seibel/distanthorizons/core/wrapperInterfaces/IWrapperFactory.java b/core/src/main/java/com/seibel/distanthorizons/core/wrapperInterfaces/IWrapperFactory.java index 5180dbb5c..4997c3c1b 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/wrapperInterfaces/IWrapperFactory.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/wrapperInterfaces/IWrapperFactory.java @@ -23,11 +23,12 @@ import com.seibel.distanthorizons.core.level.IDhLevel; import com.seibel.distanthorizons.core.wrapperInterfaces.block.IBlockStateWrapper; import com.seibel.distanthorizons.core.wrapperInterfaces.chunk.IChunkWrapper; import com.seibel.distanthorizons.core.wrapperInterfaces.world.IBiomeWrapper; +import com.seibel.distanthorizons.core.wrapperInterfaces.world.ILevelWrapper; import com.seibel.distanthorizons.core.wrapperInterfaces.worldGeneration.AbstractBatchGenerationEnvironmentWrapper; import com.seibel.distanthorizons.coreapi.interfaces.dependencyInjection.IBindable; import java.io.IOException; -import java.util.HashMap; +import java.util.HashSet; /** * This handles creating abstract wrapper objects. @@ -41,7 +42,11 @@ public interface IWrapperFactory extends IBindable IBiomeWrapper deserializeBiomeWrapper(String str) throws IOException; IBlockStateWrapper deserializeBlockStateWrapper(String str) throws IOException; IBlockStateWrapper getAirBlockStateWrapper(); - HashMap getRendererIgnoredBlocks(); + /** + * Returns the set of {@link IBlockStateWrapper}'s that shouldn't be rendered.
+ * Generally this contains blocks like: air, barriers, light blocks, etc. + */ + HashSet getRendererIgnoredBlocks(ILevelWrapper levelWrapper); /** * Specifically designed to be used with the API. diff --git a/core/src/main/java/com/seibel/distanthorizons/core/wrapperInterfaces/block/IBlockStateWrapper.java b/core/src/main/java/com/seibel/distanthorizons/core/wrapperInterfaces/block/IBlockStateWrapper.java index d0b8444a7..14760a02f 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/wrapperInterfaces/block/IBlockStateWrapper.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/wrapperInterfaces/block/IBlockStateWrapper.java @@ -2,11 +2,10 @@ package com.seibel.distanthorizons.core.wrapperInterfaces.block; import com.seibel.distanthorizons.api.interfaces.block.IDhApiBlockStateWrapper; -import java.util.List; - /** A Minecraft version independent way of handling Blocks. */ public interface IBlockStateWrapper extends IDhApiBlockStateWrapper { + /** will only work if a level is currently loaded */ String serialize(); /**