diff --git a/core b/core index ee2c6e2a0..efd1d67f3 160000 --- a/core +++ b/core @@ -1 +1 @@ -Subproject commit ee2c6e2a06d235094a45c19ff877fd794f4c95a6 +Subproject commit efd1d67f3f8c8799983c5f5a6e473f84d07ae352 diff --git a/fabric/src/main/java/com/seibel/lod/fabric/modAccessor/SodiumAccessor.java b/fabric/src/main/java/com/seibel/lod/fabric/modAccessor/SodiumAccessor.java index 9e4845d6a..f6284a1e9 100644 --- a/fabric/src/main/java/com/seibel/lod/fabric/modAccessor/SodiumAccessor.java +++ b/fabric/src/main/java/com/seibel/lod/fabric/modAccessor/SodiumAccessor.java @@ -4,42 +4,33 @@ import java.util.HashSet; import java.util.stream.Collectors; import com.seibel.lod.core.util.SingletonHandler; -import com.seibel.lod.core.wrapperInterfaces.IWrapperFactory; import com.seibel.lod.core.wrapperInterfaces.chunk.AbstractChunkPosWrapper; +import com.seibel.lod.core.wrapperInterfaces.minecraft.IMinecraftRenderWrapper; import com.seibel.lod.core.wrapperInterfaces.modAccessor.ISodiumAccessor; import me.jellysquid.mods.sodium.client.render.SodiumWorldRenderer; import net.minecraft.client.Minecraft; -import net.minecraft.core.SectionPos; -import net.minecraft.world.level.ChunkPos; import net.minecraft.world.level.LevelHeightAccessor; public class SodiumAccessor implements ISodiumAccessor { - IWrapperFactory factory = SingletonHandler.get(IWrapperFactory.class); + private final IMinecraftRenderWrapper MC_RENDER = SingletonHandler.get(IMinecraftRenderWrapper.class); @Override public String getModName() { - return "Sodium-Fabric-1.17.1"; - } - - @Override - public HashSet getNormalRenderedChunks() { -// SodiumWorldRenderer renderer = SodiumWorldRenderer.instance(); -// LevelHeightAccessor height = Minecraft.getInstance().level; -// // 0b11 = Lighted chunk & loaded chunk -// return renderer.getChunkTracker().getChunks(0b11).filter( -// (long l) -> { -// for (int i = height.getMinSection(); i { -// return (AbstractChunkPosWrapper)factory.createChunkPos(l); -// }).collect(Collectors.toCollection(HashSet::new)); - return null; - } + return "Sodium-Fabric-1.17.1"; + } + @Override + public HashSet getNormalRenderedChunks() { + SodiumWorldRenderer renderer = SodiumWorldRenderer.instance(); + LevelHeightAccessor height = Minecraft.getInstance().level; + + // TODO: Maybe use a mixin to make this more efficient + return MC_RENDER.getMaximumRenderedChunks().stream().filter((AbstractChunkPosWrapper chunk) -> { + return (renderer.isBoxVisible( + chunk.getMinBlockX()+1, height.getMinBuildHeight()+1, chunk.getMinBlockZ()+1, + chunk.getMinBlockX()+15, height.getMaxBuildHeight()-1, chunk.getMinBlockZ()+15)); + }).collect(Collectors.toCollection(HashSet::new)); + } }