Add the ability to cull lilly pads, seaGrass, etc.
This commit is contained in:
@@ -147,16 +147,19 @@ public class WrapperFactory implements IWrapperFactory
|
||||
public IBlockStateWrapper deserializeBlockStateWrapper(String str, ILevelWrapper levelWrapper) throws IOException { return BlockStateWrapper.deserialize(str, levelWrapper); }
|
||||
@Override
|
||||
public IBlockStateWrapper getAirBlockStateWrapper() { return BlockStateWrapper.AIR; }
|
||||
|
||||
@Override
|
||||
public IBlockStateWrapper getWaterBlockStateWrapper(ILevelWrapper levelWrapper) { return BlockStateWrapper.getWaterBlockStateWrapper(levelWrapper); }
|
||||
@Override
|
||||
public ObjectOpenHashSet<IBlockStateWrapper> getRendererIgnoredBlocks(ILevelWrapper levelWrapper) { return BlockStateWrapper.getRendererIgnoredBlocks(levelWrapper); }
|
||||
@Override
|
||||
public ObjectOpenHashSet<IBlockStateWrapper> getRendererIgnoredCaveBlocks(ILevelWrapper levelWrapper) { return BlockStateWrapper.getRendererIgnoredCaveBlocks(levelWrapper); }
|
||||
@Override
|
||||
public ObjectOpenHashSet<IBlockStateWrapper> getWaterSubsurfaceReplacementBlocks(ILevelWrapper levelWrapper) { return BlockStateWrapper.getWaterSubsurfaceReplacementBlocks(levelWrapper); }
|
||||
@Override
|
||||
public ObjectOpenHashSet<IBlockStateWrapper> getWaterSurfaceReplacementBlocks(ILevelWrapper levelWrapper) { return BlockStateWrapper.getWaterSurfaceReplacementBlocks(levelWrapper); }
|
||||
|
||||
@Override
|
||||
public void resetRendererIgnoredCaveBlocks() { BlockStateWrapper.clearRendererIgnoredCaveBlocks(); }
|
||||
@Override
|
||||
public void resetRendererIgnoredBlocksSet() { BlockStateWrapper.clearRendererIgnoredBlocks(); }
|
||||
public void resetCachedIgnoredBlocksSets() { BlockStateWrapper.clearCachedIgnoreBlocks(); }
|
||||
|
||||
|
||||
/**
|
||||
|
||||
+51
-9
@@ -20,6 +20,7 @@
|
||||
package com.seibel.distanthorizons.common.wrappers.block;
|
||||
|
||||
import com.seibel.distanthorizons.api.enums.rendering.EDhApiBlockMaterial;
|
||||
import com.seibel.distanthorizons.common.wrappers.WrapperFactory;
|
||||
import com.seibel.distanthorizons.core.config.Config;
|
||||
import com.seibel.distanthorizons.core.config.types.ConfigEntry;
|
||||
import com.seibel.distanthorizons.core.logging.DhLoggerBuilder;
|
||||
@@ -44,7 +45,6 @@ import java.util.List;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
#if MC_VER == MC_1_16_5 || MC_VER == MC_1_17_1
|
||||
@@ -95,6 +95,9 @@ public class BlockStateWrapper implements IBlockStateWrapper
|
||||
|
||||
public static ObjectOpenHashSet<IBlockStateWrapper> rendererIgnoredBlocks = null;
|
||||
public static ObjectOpenHashSet<IBlockStateWrapper> rendererIgnoredCaveBlocks = null;
|
||||
public static ObjectOpenHashSet<IBlockStateWrapper> waterSubsurfaceReplacementBlocks = null;
|
||||
public static ObjectOpenHashSet<IBlockStateWrapper> waterSurfaceReplacementBlocks = null;
|
||||
public static IBlockStateWrapper waterBlock = null;
|
||||
|
||||
/** keep track of broken blocks so we don't log every time */
|
||||
#if MC_VER <= MC_1_21_10
|
||||
@@ -312,10 +315,12 @@ public class BlockStateWrapper implements IBlockStateWrapper
|
||||
//====================//
|
||||
//region
|
||||
|
||||
/**
|
||||
* Requires a {@link ILevelWrapper} since {@link BlockStateWrapper#deserialize(String,ILevelWrapper)} also requires one.
|
||||
/**
|
||||
* Each of the following methods require
|
||||
* a {@link ILevelWrapper} since {@link BlockStateWrapper#deserialize(String,ILevelWrapper)} also requires one.
|
||||
* This way the method won't accidentally be called before the deserialization can be completed.
|
||||
*/
|
||||
|
||||
public static ObjectOpenHashSet<IBlockStateWrapper> getRendererIgnoredBlocks(ILevelWrapper levelWrapper)
|
||||
{
|
||||
// use the cached version if possible
|
||||
@@ -329,10 +334,6 @@ public class BlockStateWrapper implements IBlockStateWrapper
|
||||
rendererIgnoredBlocks = getAllBlockWrappers(Config.Client.Advanced.Graphics.Culling.ignoredRenderBlockCsv, baseIgnoredBlock, levelWrapper);
|
||||
return rendererIgnoredBlocks;
|
||||
}
|
||||
/**
|
||||
* Requires a {@link ILevelWrapper} since {@link BlockStateWrapper#deserialize(String,ILevelWrapper)} also requires one.
|
||||
* This way the method won't accidentally be called before the deserialization can be completed.
|
||||
*/
|
||||
public static ObjectOpenHashSet<IBlockStateWrapper> getRendererIgnoredCaveBlocks(ILevelWrapper levelWrapper)
|
||||
{
|
||||
// use the cached version if possible
|
||||
@@ -346,9 +347,50 @@ public class BlockStateWrapper implements IBlockStateWrapper
|
||||
rendererIgnoredCaveBlocks = getAllBlockWrappers(Config.Client.Advanced.Graphics.Culling.ignoredRenderCaveBlockCsv, baseIgnoredBlock, levelWrapper);
|
||||
return rendererIgnoredCaveBlocks;
|
||||
}
|
||||
public static ObjectOpenHashSet<IBlockStateWrapper> getWaterSurfaceReplacementBlocks(ILevelWrapper levelWrapper)
|
||||
{
|
||||
// use the cached version if possible
|
||||
if (waterSurfaceReplacementBlocks != null)
|
||||
{
|
||||
return waterSurfaceReplacementBlocks;
|
||||
}
|
||||
|
||||
ObjectOpenHashSet<String> baseIgnoredBlock = new ObjectOpenHashSet<>();
|
||||
waterSurfaceReplacementBlocks = getAllBlockWrappers(Config.Client.Advanced.Graphics.Culling.waterSurfaceBlockReplacementCsv, baseIgnoredBlock, levelWrapper);
|
||||
return waterSurfaceReplacementBlocks;
|
||||
}
|
||||
public static ObjectOpenHashSet<IBlockStateWrapper> getWaterSubsurfaceReplacementBlocks(ILevelWrapper levelWrapper)
|
||||
{
|
||||
// use the cached version if possible
|
||||
if (waterSubsurfaceReplacementBlocks != null)
|
||||
{
|
||||
return waterSubsurfaceReplacementBlocks;
|
||||
}
|
||||
|
||||
ObjectOpenHashSet<String> baseIgnoredBlock = new ObjectOpenHashSet<>();
|
||||
waterSubsurfaceReplacementBlocks = getAllBlockWrappers(Config.Client.Advanced.Graphics.Culling.waterSubSurfaceBlockReplacementCsv, baseIgnoredBlock, levelWrapper);
|
||||
return waterSubsurfaceReplacementBlocks;
|
||||
}
|
||||
public static IBlockStateWrapper getWaterBlockStateWrapper(ILevelWrapper levelWrapper)
|
||||
{
|
||||
// use the cached version if possible
|
||||
if (waterBlock != null)
|
||||
{
|
||||
return waterBlock;
|
||||
}
|
||||
|
||||
waterBlock = WrapperFactory.INSTANCE.deserializeBlockStateWrapperOrGetDefault("minecraft:water", levelWrapper);
|
||||
return waterBlock;
|
||||
}
|
||||
|
||||
public static void clearRendererIgnoredBlocks() { rendererIgnoredBlocks = null; }
|
||||
public static void clearRendererIgnoredCaveBlocks() { rendererIgnoredCaveBlocks = null; }
|
||||
public static void clearCachedIgnoreBlocks()
|
||||
{
|
||||
rendererIgnoredBlocks = null;
|
||||
rendererIgnoredCaveBlocks = null;
|
||||
waterSurfaceReplacementBlocks = null;
|
||||
waterSubsurfaceReplacementBlocks = null;
|
||||
waterBlock = null;
|
||||
}
|
||||
|
||||
//endregion
|
||||
|
||||
|
||||
+1
-1
Submodule coreSubProjects updated: 5933ef8245...da2454b249
Reference in New Issue
Block a user