From 03c4926b0997b4011656ff3bb8a58a7efa563a0b Mon Sep 17 00:00:00 2001 From: James Seibel Date: Sat, 3 Feb 2024 19:45:29 -0600 Subject: [PATCH] update to latest core --- .../wrappers/block/BlockStateWrapper.java | 121 +++++++++++++++++- .../minecraft/MinecraftRenderWrapper.java | 6 - coreSubProjects | 2 +- 3 files changed, 118 insertions(+), 11 deletions(-) diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/block/BlockStateWrapper.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/block/BlockStateWrapper.java index 23e635044..523d992e6 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/block/BlockStateWrapper.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/block/BlockStateWrapper.java @@ -24,7 +24,10 @@ import com.seibel.distanthorizons.core.wrapperInterfaces.block.IBlockStateWrappe import com.seibel.distanthorizons.core.wrapperInterfaces.world.ILevelWrapper; import net.minecraft.resources.ResourceLocation; +import net.minecraft.tags.BlockTags; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.SoundType; import net.minecraft.world.level.block.state.BlockState; import org.apache.logging.log4j.Logger; @@ -61,7 +64,7 @@ public class BlockStateWrapper implements IBlockStateWrapper // must be defined before AIR, otherwise a null pointer will be thrown private static final Logger LOGGER = DhLoggerBuilder.getLogger(); - public static final ConcurrentHashMap WRAPPER_BY_BLOCK_STATE = new ConcurrentHashMap<>(); + public static final ConcurrentHashMap WRAPPER_BY_BLOCK_STATE = new ConcurrentHashMap<>(); public static final String AIR_STRING = "AIR"; public static final BlockStateWrapper AIR = new BlockStateWrapper(null, null); @@ -80,11 +83,13 @@ public class BlockStateWrapper implements IBlockStateWrapper public final BlockState blockState; /** technically final, but since it requires a method call to generate it can't be marked as such */ private String serialString; - /** + /** * Cached opacity value, -1 if not populated.
* Should be between {@link IBlockStateWrapper#FULLY_OPAQUE} and {@link IBlockStateWrapper#FULLY_OPAQUE} */ private int opacity = -1; + /** used by the Iris shader mod to determine how each LOD should be rendered */ + private byte irisBlockMaterialId = 0; @@ -116,7 +121,8 @@ public class BlockStateWrapper implements IBlockStateWrapper { this.blockState = blockState; this.serialString = this.serialize(levelWrapper); - LOGGER.trace("Created BlockStateWrapper ["+this.serialString+"] for ["+blockState+"]"); + this.irisBlockMaterialId = this.calculateIrisBlockMaterialId(); + LOGGER.trace("Created BlockStateWrapper ["+this.serialString+"] for ["+blockState+"] with material ID ["+this.irisBlockMaterialId+"]"); } @@ -125,7 +131,7 @@ public class BlockStateWrapper implements IBlockStateWrapper // helper methods // //================// - /** + /** * 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. */ @@ -274,6 +280,9 @@ public class BlockStateWrapper implements IBlockStateWrapper #endif } + @Override + public byte getIrisBlockMaterialId() { return this.irisBlockMaterialId; } + @Override public String toString() { return this.getSerialString(); } @@ -457,4 +466,108 @@ public class BlockStateWrapper implements IBlockStateWrapper + //==============// + // Iris methods // + //==============// + + private byte calculateIrisBlockMaterialId() + { + if (this.blockState == null) + { + return IrisBlockMaterial.AIR; + } + + + String serialString = this.getSerialString().toLowerCase(); + + if (this.blockState.is(BlockTags.LEAVES) + || serialString.contains("bamboo") + || serialString.contains("cactus") + || serialString.contains("chorus_flower") + || serialString.contains("mushroom") + ) + { + return IrisBlockMaterial.LEAVES; + } + else if (this.isLiquid() || this.blockState.is(Blocks.WATER)) + { + return IrisBlockMaterial.WATER; + } + else if (this.blockState.getSoundType() == SoundType.WOOD + || serialString.contains("root") + #if MC_VER >= MC_1_19_4 + || this.blockState.getSoundType() == SoundType.CHERRY_WOOD + #endif + ) + { + return IrisBlockMaterial.WOOD; + } + else if (this.blockState.getSoundType() == SoundType.METAL + #if MC_VER >= MC_1_19_2 + || this.blockState.getSoundType() == SoundType.COPPER + #endif + #if MC_VER >= MC_1_20_4 + || this.blockState.getSoundType() == SoundType.COPPER_BULB + || this.blockState.getSoundType() == SoundType.COPPER_GRATE + #endif + ) + { + return IrisBlockMaterial.METAL; + } + else if ( + serialString.contains("dirt") + || serialString.contains("grass_block") + || serialString.contains("gravel") + || serialString.contains("mud") + || serialString.contains("podzol") + || serialString.contains("mycelium") + ) + { + return IrisBlockMaterial.DIRT; + } + else if (this.blockState.is(Blocks.LAVA)) + { + return IrisBlockMaterial.LAVA; + } + #if MC_VER >= MC_1_17_1 + else if (this.blockState.getSoundType() == SoundType.DEEPSLATE + || this.blockState.getSoundType() == SoundType.DEEPSLATE_BRICKS + || this.blockState.getSoundType() == SoundType.DEEPSLATE_TILES + || this.blockState.getSoundType() == SoundType.POLISHED_DEEPSLATE + || serialString.contains("deepslate") ) + { + return IrisBlockMaterial.DEEPSLATE; + } + #endif + else if (this.serialString.contains("snow")) + { + return IrisBlockMaterial.SNOW; + } + else if (serialString.contains("sand")) + { + return IrisBlockMaterial.SAND; + } + else if (serialString.contains("terracotta")) + { + return IrisBlockMaterial.TERRACOTTA; + } + else if (this.blockState.is(BlockTags.BASE_STONE_NETHER)) + { + return IrisBlockMaterial.NETHER_STONE; + } + else if (serialString.contains("stone") + || serialString.contains("ore")) + { + return IrisBlockMaterial.STONE; + } + else if (this.blockState.getLightEmission() > 0) + { + return IrisBlockMaterial.ILLUMINATED; + } + else + { + return IrisBlockMaterial.UNKOWN; + } + } + } diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/minecraft/MinecraftRenderWrapper.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/minecraft/MinecraftRenderWrapper.java index 6a8ae1318..30eb60581 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/minecraft/MinecraftRenderWrapper.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/minecraft/MinecraftRenderWrapper.java @@ -261,12 +261,6 @@ public class MinecraftRenderWrapper implements IMinecraftRenderWrapper @Override public int getTargetFrameBuffer() { - int frameBufferOverrideId = DhApiRenderProxy.INSTANCE.targetFrameBufferOverride; - if (frameBufferOverrideId != -1) - { - return frameBufferOverrideId; - } - // used so we can access the framebuffer shaders end up rendering to if (AbstractOptifineAccessor.optifinePresent()) { diff --git a/coreSubProjects b/coreSubProjects index fd80b0add..a07e43ad5 160000 --- a/coreSubProjects +++ b/coreSubProjects @@ -1 +1 @@ -Subproject commit fd80b0adde7a545f3793729d31e6dce3254300f4 +Subproject commit a07e43ad5ce2fbb0b9107874edae600172229ed8