diff --git a/1.17.1.properties b/1.17.1.properties index 92ec552e5..653c8e4c3 100644 --- a/1.17.1.properties +++ b/1.17.1.properties @@ -9,6 +9,7 @@ fabric_api_version=0.46.1+1.17 # Fabric mod versions modmenu_version=2.0.14 starlight_version_fabric=3442770 + phosphor_version_fabric= lithium_version=mc1.17.1-0.7.5 sodium_version=3605275 iris_version=1.17.x-v1.1.4 @@ -20,6 +21,7 @@ fabric_api_version=0.46.1+1.17 # 1 = Can be refranced in code but dosnt run # 2 = Can be refranced in code and runs in client enable_starlight=0 + enable_phosphor=0 enable_lithium=0 enable_sodium=1 enable_iris=0 diff --git a/1.18.1.properties b/1.18.1.properties index 520c2305a..6c4d8be27 100644 --- a/1.18.1.properties +++ b/1.18.1.properties @@ -9,6 +9,7 @@ fabric_api_version=0.46.6+1.18 # Fabric mod versions modmenu_version=3.0.1 starlight_version_fabric=3554912 + phosphor_version_fabric=3573395 lithium_version=mc1.18.1-0.7.7 sodium_version=3605309 iris_version=1.18.x-v1.1.4 @@ -20,6 +21,7 @@ fabric_api_version=0.46.6+1.18 # 1 = Can be referenced in code but doesn't run # 2 = Can be referenced in code and runs in client enable_starlight=0 + enable_phosphor=0 enable_sodium=1 enable_lithium=0 enable_iris=0 diff --git a/1.18.2.properties b/1.18.2.properties index 22e50f368..718b92c06 100644 --- a/1.18.2.properties +++ b/1.18.2.properties @@ -10,17 +10,19 @@ fabric_api_version=0.48.0+1.18.2 # Fabric mod versions modmenu_version=3.1.0 starlight_version_fabric=3667443 + phosphor_version_fabric=3573395 lithium_version=mc1.18.2-0.7.9 sodium_version=3669187 iris_version=1.18.x-v1.2.2 - bclib_version=0 immersive_portals_version = v1.0.4-1.18 + bclib_version=0 # Fabric mod run # 0 = Don't enable and don't run # 1 = Can be referenced in code but doesn't run # 2 = Can be referenced in code and runs in client enable_starlight=0 + enable_phosphor=0 enable_sodium=1 enable_lithium=0 enable_iris=0 @@ -32,7 +34,7 @@ forge_version=40.0.18 starlight_version_forge=0 # Forge mod run - # 0 = Dont enable and don't run + # 0 = Don't enable and don't run # 1 = Can be referenced in code but doesn't run # 2 = Can be referenced in code and runs in client enable_starlight_forge=0 diff --git a/build.gradle b/build.gradle index 5f775e872..35d1585a5 100644 --- a/build.gradle +++ b/build.gradle @@ -34,6 +34,14 @@ def loadProperties() { // println "Added prop [key:" + prop.key + ", value:" + prop.value + "]" } writeBuildGradlePredefine() + + def mcVersionToAcsessWidenerVersion = [ + "1.17.1": "1_17", + "1.18.1": "1_18", + "1.18.2": "1_18" + ] + rootProject.ext.set("acsessWidenerVersion", mcVersionToAcsessWidenerVersion.get(mcVersion)) + } loadProperties() @@ -43,33 +51,14 @@ architectury { minecraft = rootProject.minecraft_version } -// Stuff for access wideners -def mcVersionToAcsessWidenerVersion = [ - "1_17_1": "1_17", - "1_18_1": "1_18", - "1_18_2": "1_18" -] // Use this as sometimes multiple versions use the same access wideners -def acsessWidenerVersion = mcVersionToAcsessWidenerVersion.get(minecraft_version.replace(".", "_")) - subprojects { p -> apply plugin: "dev.architectury.loom" loom { silentMojangMappingsLicense() - // Set what accesswidener to use if (p != project(":core")) { - def acsessWidenerLocation = "src/main/resources/${acsessWidenerVersion}.lod.accesswidener" - accessWidenerPath.set(project(":common").file(acsessWidenerLocation)) - } - } - - jar { - // Requred to run the standalone jar - manifest { - attributes 'Implementation-Title': rootProject.archives_base_name, - 'Implementation-Version': rootProject.mod_version, - 'Main-Class': 'com.seibel.lod.core.JarMain' + accessWidenerPath.set(project(":common").file("/src/main/resources/${acsessWidenerVersion}.lod.accesswidener")) } } @@ -101,6 +90,14 @@ subprojects { p -> shadowMe(project(":core")) { transitive false } } } + + jar { + manifest { + attributes 'Implementation-Title': rootProject.archives_base_name, + 'Implementation-Version': rootProject.mod_version, + 'Main-Class': 'com.seibel.lod.core.JarMain' + } + } } allprojects { p -> @@ -231,6 +228,21 @@ allprojects { p -> runClient.enabled = false runServer.enabled = false } + + + // this is necessary for running the fabric build + if (p == project(":common")) { + println "Coping [common/src/main/resources/lod.accesswidner] to [fabric/build/resources/main]." + + copy { + from "$rootProject.rootDir/common/src/main/resources" + into "$rootProject.rootDir/fabric/build/resources/main" + include "*.accesswidener" + rename { fileName -> + fileName.replace("${rootProject.acsessWidenerVersion}.", "") + } + } + } } diff --git a/common/src/main/java/com/seibel/lod/common/wrappers/block/TintGetterOverrideFast.java b/common/src/main/java/com/seibel/lod/common/wrappers/block/TintGetterOverrideFast.java index 8ce042b0e..1053a7aaf 100644 --- a/common/src/main/java/com/seibel/lod/common/wrappers/block/TintGetterOverrideFast.java +++ b/common/src/main/java/com/seibel/lod/common/wrappers/block/TintGetterOverrideFast.java @@ -27,21 +27,15 @@ import java.util.stream.Stream; public class TintGetterOverrideFast implements BlockAndTintGetter { LevelReader parent; - private final Object2ObjectArrayMap> tintCaches; public TintGetterOverrideFast(LevelReader parent) { this.parent = parent; - this.tintCaches = Util.make(new Object2ObjectArrayMap(3), object2ObjectArrayMap -> { - object2ObjectArrayMap.put(BiomeColors.GRASS_COLOR_RESOLVER, new ConcurrentHashMap()); - object2ObjectArrayMap.put(BiomeColors.FOLIAGE_COLOR_RESOLVER, new ConcurrentHashMap()); - object2ObjectArrayMap.put(BiomeColors.WATER_COLOR_RESOLVER, new ConcurrentHashMap()); - }); } private Biome _getBiome(BlockPos pos) { #if MC_VERSION_1_18_2 return parent.getBiome(pos).value(); - #elif MC_VERSION_1_18_1 + #else return parent.getBiome(pos); #endif } @@ -49,11 +43,7 @@ public class TintGetterOverrideFast implements BlockAndTintGetter { @Override public int getBlockTint(BlockPos blockPos, ColorResolver colorResolver) { Biome b = _getBiome(blockPos); - ConcurrentHashMap concurrentHashMap = this.tintCaches.get(colorResolver); - if (concurrentHashMap == null) { // This is a compat fix for Colormatic's mixin - this.tintCaches.put(colorResolver, concurrentHashMap = new ConcurrentHashMap<>()); - } - return concurrentHashMap.computeIfAbsent(b, (key) -> colorResolver.getColor(b, blockPos.getX(), blockPos.getZ())); + return colorResolver.getColor(b, blockPos.getX(), blockPos.getZ()); } @Override diff --git a/common/src/main/java/com/seibel/lod/common/wrappers/block/TintGetterOverrideSmooth.java b/common/src/main/java/com/seibel/lod/common/wrappers/block/TintGetterOverrideSmooth.java index 231d5d2b7..ad0515606 100644 --- a/common/src/main/java/com/seibel/lod/common/wrappers/block/TintGetterOverrideSmooth.java +++ b/common/src/main/java/com/seibel/lod/common/wrappers/block/TintGetterOverrideSmooth.java @@ -26,25 +26,17 @@ import java.util.stream.Stream; public class TintGetterOverrideSmooth implements BlockAndTintGetter { LevelReader parent; - private final Object2ObjectArrayMap tintCaches; public int smoothingRange; public TintGetterOverrideSmooth(LevelReader parent, int smoothingRange) { this.parent = parent; this.smoothingRange = smoothingRange; - this.tintCaches = Util.make(new Object2ObjectArrayMap(3), object2ObjectArrayMap -> { - object2ObjectArrayMap.put(BiomeColors.GRASS_COLOR_RESOLVER, new BlockTintCache((pos) -> calculateBlockTint(pos, BiomeColors.GRASS_COLOR_RESOLVER))); - object2ObjectArrayMap.put(BiomeColors.FOLIAGE_COLOR_RESOLVER, new BlockTintCache((pos) -> calculateBlockTint(pos, BiomeColors.FOLIAGE_COLOR_RESOLVER))); - object2ObjectArrayMap.put(BiomeColors.WATER_COLOR_RESOLVER, new BlockTintCache((pos) -> calculateBlockTint(pos, BiomeColors.WATER_COLOR_RESOLVER))); - }); } private Biome _getBiome(BlockPos pos) { #if MC_VERSION_1_18_2 return parent.getBiome(pos).value(); - #elif MC_VERSION_1_18_1 - return parent.getBiome(pos); - #elif MC_VERSION_1_17_1 + #else return parent.getBiome(pos); #endif } @@ -73,16 +65,7 @@ public class TintGetterOverrideSmooth implements BlockAndTintGetter { @Override public int getBlockTint(BlockPos blockPos, ColorResolver colorResolver) { - BlockTintCache blockTintCache = this.tintCaches.get(colorResolver); - #if MC_VERSION_1_18_2 || MC_VERSION_1_18_1 - if (blockTintCache == null) { // This is a compat fix for Colormatic's mixin - this.tintCaches.put(colorResolver, - blockTintCache = new BlockTintCache((pos) -> calculateBlockTint(pos, colorResolver))); - } - return blockTintCache.getColor(blockPos); - #elif MC_VERSION_1_17_1 - return blockTintCache.getColor(blockPos, null); //FIXME[1.17.1]: Replace this null with something else - #endif + return calculateBlockTint(blockPos, colorResolver); } @Override diff --git a/common/src/main/java/com/seibel/lod/common/wrappers/misc/LightMapWrapper.java b/common/src/main/java/com/seibel/lod/common/wrappers/misc/LightMapWrapper.java index eb7c61ce9..073677c3a 100644 --- a/common/src/main/java/com/seibel/lod/common/wrappers/misc/LightMapWrapper.java +++ b/common/src/main/java/com/seibel/lod/common/wrappers/misc/LightMapWrapper.java @@ -3,6 +3,7 @@ package com.seibel.lod.common.wrappers.misc; import com.mojang.blaze3d.platform.NativeImage; import com.seibel.lod.core.wrapperInterfaces.misc.ILightMapWrapper; import net.minecraft.client.renderer.LightTexture; +import org.lwjgl.opengl.GL32; /** * @author James Seibel @@ -35,13 +36,12 @@ public class LightMapWrapper implements ILightMapWrapper } @Override - public int bind() { - tex.turnOnLightLayer(); - return 3553; //GL.GL_TEXTURE_2D + public void bind() { + GL32.glBindTexture(GL32.GL_TEXTURE_2D, tex.lightTexture.getId()); } @Override public void unbind() { - tex.turnOffLightLayer(); + GL32.glBindTexture(GL32.GL_TEXTURE_2D, 0); } } diff --git a/common/src/main/java/com/seibel/lod/common/wrappers/worldGeneration/ThreadedParameters.java b/common/src/main/java/com/seibel/lod/common/wrappers/worldGeneration/ThreadedParameters.java index 61bbb66e5..381712d9c 100644 --- a/common/src/main/java/com/seibel/lod/common/wrappers/worldGeneration/ThreadedParameters.java +++ b/common/src/main/java/com/seibel/lod/common/wrappers/worldGeneration/ThreadedParameters.java @@ -48,7 +48,7 @@ public final class ThreadedParameters param.fixerUpper); #elif MC_VERSION_1_17_1 level = param.level; - structFeat = new WorldGenStructFeatManager(level, param.worldGenSettings); + structFeat = new WorldGenStructFeatManager(param.worldGenSettings, level); #endif } diff --git a/common/src/main/java/com/seibel/lod/common/wrappers/worldGeneration/mimicObject/LightedWorldGenRegion.java b/common/src/main/java/com/seibel/lod/common/wrappers/worldGeneration/mimicObject/LightedWorldGenRegion.java index 1c1054a96..e115ed82a 100644 --- a/common/src/main/java/com/seibel/lod/common/wrappers/worldGeneration/mimicObject/LightedWorldGenRegion.java +++ b/common/src/main/java/com/seibel/lod/common/wrappers/worldGeneration/mimicObject/LightedWorldGenRegion.java @@ -69,12 +69,6 @@ public class LightedWorldGenRegion extends WorldGenRegion { writeRadius = i; cache = list; size = Mth.floor(Math.sqrt(list.size())); - - this.tintCaches = Util.make(new Object2ObjectArrayMap(3), object2ObjectArrayMap -> { - object2ObjectArrayMap.put(BiomeColors.GRASS_COLOR_RESOLVER, new BlockTintCache((pos) -> {return calculateBlockTint(pos, BiomeColors.GRASS_COLOR_RESOLVER);})); - object2ObjectArrayMap.put(BiomeColors.FOLIAGE_COLOR_RESOLVER, new BlockTintCache((pos) -> {return calculateBlockTint(pos, BiomeColors.FOLIAGE_COLOR_RESOLVER);})); - object2ObjectArrayMap.put(BiomeColors.WATER_COLOR_RESOLVER, new BlockTintCache((pos) -> {return calculateBlockTint(pos, BiomeColors.WATER_COLOR_RESOLVER);})); - }); } // Bypass BCLib mixin overrides. @@ -247,25 +241,16 @@ public class LightedWorldGenRegion extends WorldGenRegion { public boolean canSeeSky(BlockPos blockPos) { return (getBrightness(LightLayer.SKY, blockPos) >= getMaxLightLevel()); } - - - - private final Object2ObjectArrayMap tintCaches; public int getBlockTint(BlockPos blockPos, ColorResolver colorResolver) { - BlockTintCache blockTintCache = (BlockTintCache) this.tintCaches.get(colorResolver); - #if MC_VERSION_1_17_1 - return blockTintCache.getColor(blockPos, null); // FIXME[1.17.1]: Replace this null with something else - #elif MC_VERSION_1_18_1 || MC_VERSION_1_18_2 - return blockTintCache.getColor(blockPos); - #endif + return calculateBlockTint(blockPos, colorResolver); } private Biome _getBiome(BlockPos pos) { #if MC_VERSION_1_18_2 return getBiome(pos).value(); - #elif MC_VERSION_1_18_1 + #else return getBiome(pos); #endif } diff --git a/common/src/main/java/com/seibel/lod/common/wrappers/worldGeneration/mimicObject/WorldGenStructFeatManager.java b/common/src/main/java/com/seibel/lod/common/wrappers/worldGeneration/mimicObject/WorldGenStructFeatManager.java index 1ce3eeefe..78906be3f 100644 --- a/common/src/main/java/com/seibel/lod/common/wrappers/worldGeneration/mimicObject/WorldGenStructFeatManager.java +++ b/common/src/main/java/com/seibel/lod/common/wrappers/worldGeneration/mimicObject/WorldGenStructFeatManager.java @@ -82,17 +82,13 @@ public class WorldGenStructFeatManager extends StructureFeatureManager { @Override public Stream> startsForFeature(SectionPos sectionPos2, StructureFeature structureFeature) { - if (genLevel == null) - return Stream.empty(); - ChunkAccess chunk = genLevel.getChunk(sectionPos2.x(), sectionPos2.z(), ChunkStatus.STRUCTURE_REFERENCES, - false); - if (chunk == null) - return Stream.empty(); + ChunkAccess chunk = _getChunk(sectionPos2.x(), sectionPos2.z(), ChunkStatus.STRUCTURE_REFERENCES); + if (chunk == null) return Stream.empty(); + return chunk.getReferencesForFeature(structureFeature).stream().map(pos -> { SectionPos sectPos = SectionPos.of(ChunkPos.getX(pos), 0, ChunkPos.getZ(pos)); - ChunkAccess startChunk = genLevel.getChunk(sectPos.x(), sectPos.z(), ChunkStatus.STRUCTURE_STARTS, false); - if (startChunk == null) - return null; + ChunkAccess startChunk = _getChunk(sectPos.x(), sectPos.z(), ChunkStatus.STRUCTURE_STARTS); + if (startChunk == null) return null; return this.getStartForFeature(sectPos, structureFeature, startChunk); }).filter(structureStart -> structureStart != null && structureStart.isValid()); } diff --git a/core b/core index a12f2e9e0..02b0637ad 160000 --- a/core +++ b/core @@ -1 +1 @@ -Subproject commit a12f2e9e014d8630239cd05b9d2d608703989770 +Subproject commit 02b0637adc6c2f3f57b4f275ae7a4593fc985d2f diff --git a/fabric/build.gradle b/fabric/build.gradle index 55e7339c7..9b94adf06 100644 --- a/fabric/build.gradle +++ b/fabric/build.gradle @@ -46,10 +46,15 @@ dependencies { // Starlight addMod("curse.maven:starlight-521783:${rootProject.starlight_version_fabric}", rootProject.enable_starlight) + // Phosphor + addMod("curse.maven:phosphor-372124:${rootProject.phosphor_version_fabric}", rootProject.enable_phosphor) + // Sodium addMod("curse.maven:sodium-394468:${rootProject.sodium_version}", rootProject.enable_sodium) implementation "org.joml:joml:1.10.2" - + modImplementation(fabricApi.module("fabric-rendering-data-attachment-v1", rootProject.fabric_api_version)) + modImplementation(fabricApi.module("fabric-rendering-fluids-v1", rootProject.fabric_api_version)) + // Lithium addMod("maven.modrinth:lithium:${rootProject.lithium_version}", rootProject.enable_lithium) diff --git a/fabric/src/main/java/com/seibel/lod/fabric/mixins/MixinUtilBackgroudThread.java b/fabric/src/main/java/com/seibel/lod/fabric/mixins/MixinUtilBackgroudThread.java index 327aaadca..713bb7bbd 100644 --- a/fabric/src/main/java/com/seibel/lod/fabric/mixins/MixinUtilBackgroudThread.java +++ b/fabric/src/main/java/com/seibel/lod/fabric/mixins/MixinUtilBackgroudThread.java @@ -27,6 +27,7 @@ public class MixinUtilBackgroudThread ci.setReturnValue(r); } } + #if MC_VERSION_1_18_1 | MC_VERSION_1_18_2 @Inject(method = "wrapThreadWithTaskName(Ljava/lang/String;Ljava/util/function/Supplier;)Ljava/util/function/Supplier;", at = @At("HEAD"), cancellable = true) private static void overrideUtil$wrapThreadWithTaskNameForSupplier(String string, Supplier r, CallbackInfoReturnable> ci) @@ -37,6 +38,7 @@ public class MixinUtilBackgroudThread ci.setReturnValue(r); } } + #endif @Inject(method = "backgroundExecutor", at = @At("HEAD"), cancellable = true) private static void overrideUtil$backgroundExecutor(CallbackInfoReturnable ci) diff --git a/fabric/src/main/java/com/seibel/lod/fabric/mixins/events/MixinClientLevel.java b/fabric/src/main/java/com/seibel/lod/fabric/mixins/events/MixinClientLevel.java index df7e92345..925e19141 100644 --- a/fabric/src/main/java/com/seibel/lod/fabric/mixins/events/MixinClientLevel.java +++ b/fabric/src/main/java/com/seibel/lod/fabric/mixins/events/MixinClientLevel.java @@ -8,6 +8,8 @@ import net.minecraft.client.renderer.LevelRenderer; import net.minecraft.core.Holder; #endif import net.minecraft.resources.ResourceKey; +import net.minecraft.util.profiling.ProfilerFiller; +import net.minecraft.world.level.Level; import net.minecraft.world.level.chunk.LevelChunk; import net.minecraft.world.level.dimension.DimensionType; import org.spongepowered.asm.mixin.Mixin; @@ -34,13 +36,20 @@ public class MixinClientLevel { private void loadWorldEvent(ClientPacketListener clientPacketListener, ClientLevel.ClientLevelData clientLevelData, ResourceKey resourceKey, DimensionType dimensionType, int i, int j, Supplier supplier, LevelRenderer levelRenderer, boolean bl, long l, CallbackInfo ci) { Main.client_proxy.worldLoadEvent((ClientLevel) (Object) this); } + #elif MC_VERSION_1_17_1 + @Inject(method = "", at = @At("TAIL")) + private void loadWorldEvent(ClientPacketListener clientPacketListener, ClientLevel.ClientLevelData clientLevelData, ResourceKey resourceKey, DimensionType dimensionType, int i, Supplier supplier, LevelRenderer levelRenderer, boolean bl, long l, CallbackInfo ci) { + Main.client_proxy.worldLoadEvent((ClientLevel) (Object) this); + } #endif - @Inject(method = "setLightReady", at = @At("HEAD")) + #if MC_VERSION_1_18_1 | MC_VERSION_1_18_2 + @Inject(method = "setLightReady", at = @At("RETURN")) private void onChunkLightReady(int x, int z, CallbackInfo ci) { ClientLevel l = (ClientLevel) (Object) this; LevelChunk chunk = l.getChunkSource().getChunk(x, z, false); - if (chunk!=null && !chunk.isClientLightReady()) + if (chunk!=null&& !chunk.isClientLightReady()) Main.client_proxy.chunkLoadEvent(l, chunk); } + #endif } diff --git a/fabric/src/main/java/com/seibel/lod/fabric/mixins/unsafe/MixinThreadingDectector.java b/fabric/src/main/java/com/seibel/lod/fabric/mixins/unsafe/MixinThreadingDectector.java index a73690adb..4cceb1fcc 100644 --- a/fabric/src/main/java/com/seibel/lod/fabric/mixins/unsafe/MixinThreadingDectector.java +++ b/fabric/src/main/java/com/seibel/lod/fabric/mixins/unsafe/MixinThreadingDectector.java @@ -2,6 +2,9 @@ package com.seibel.lod.fabric.mixins.unsafe; import net.minecraft.util.ThreadingDetector; import org.spongepowered.asm.mixin.Mixin; + +#if MC_VERSION_1_18_1 | MC_VERSION_1_18_2 + import org.spongepowered.asm.mixin.Mutable; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; @@ -24,3 +27,7 @@ public class MixinThreadingDectector { this.lock = new Semaphore(2); } } +#else +@Mixin(ThreadingDetector.class) + public class MixinThreadingDectector {} //FIXME: Is there some way to make this file just not be added? +#endif \ No newline at end of file diff --git a/fabric/src/main/java/com/seibel/lod/fabric/wrappers/modAccessor/SodiumAccessor.java b/fabric/src/main/java/com/seibel/lod/fabric/wrappers/modAccessor/SodiumAccessor.java index 0c649fbea..6e10ce76f 100644 --- a/fabric/src/main/java/com/seibel/lod/fabric/wrappers/modAccessor/SodiumAccessor.java +++ b/fabric/src/main/java/com/seibel/lod/fabric/wrappers/modAccessor/SodiumAccessor.java @@ -6,37 +6,43 @@ import java.util.stream.Collectors; import com.seibel.lod.core.handlers.dependencyInjection.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.world.level.LevelHeightAccessor; public class SodiumAccessor implements ISodiumAccessor { - IWrapperFactory factory = SingletonHandler.get(IWrapperFactory.class); + private final IWrapperFactory factory = SingletonHandler.get(IWrapperFactory.class); + private final IMinecraftRenderWrapper MC_RENDER = SingletonHandler.get(IMinecraftRenderWrapper.class); @Override public String getModName() { - return "Sodium-Fabric-1.18.X"; + return "Sodium-Fabric"; } @Override public HashSet getNormalRenderedChunks() { SodiumWorldRenderer renderer = SodiumWorldRenderer.instance(); - LevelHeightAccessor height = Minecraft.getInstance().level; + LevelHeightAccessor height = Minecraft.getInstance().level; + + #if MC_VERSION_1_18_1 || MC_VERSION_1_18_2 // 0b11 = Lighted chunk & loaded chunk return renderer.getChunkTracker().getChunks(0b00).filter( (long l) -> { return true; - //for (int i = height.getMinSection(); i { return (AbstractChunkPosWrapper)factory.createChunkPos(l); }).collect(Collectors.toCollection(HashSet::new)); + #else + // TODO: Maybe use a mixin to make this more efficient, and maybe ignore changes behind the camera + 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)); + #endif } - } diff --git a/forge/src/main/java/com/seibel/lod/forge/mixins/MixinUtilBackgroudThread.java b/forge/src/main/java/com/seibel/lod/forge/mixins/MixinUtilBackgroudThread.java index ab2d4cdbb..f411f39af 100644 --- a/forge/src/main/java/com/seibel/lod/forge/mixins/MixinUtilBackgroudThread.java +++ b/forge/src/main/java/com/seibel/lod/forge/mixins/MixinUtilBackgroudThread.java @@ -32,6 +32,7 @@ public class MixinUtilBackgroudThread ci.setReturnValue(r); } } + #if MC_VERSION_1_18_1 | MC_VERSION_1_18_2 @Inject(method = "wrapThreadWithTaskName(Ljava/lang/String;Ljava/util/function/Supplier;)Ljava/util/function/Supplier;", at = @At("HEAD"), cancellable = true) private static void overrideUtil$wrapThreadWithTaskNameForSupplier(String string, Supplier r, CallbackInfoReturnable> ci) @@ -42,6 +43,7 @@ public class MixinUtilBackgroudThread ci.setReturnValue(r); } } + #endif @Inject(method = "backgroundExecutor", at = @At("HEAD"), cancellable = true) private static void overrideUtil$backgroundExecutor(CallbackInfoReturnable ci) diff --git a/gradle.properties b/gradle.properties index 1188a0d96..297c34e5f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -18,4 +18,4 @@ toml_version=3.6.4 manifold_version=2022.1.7 ##### FOR IDE SUPPORT AND TELL IDE TO USE CERTIAN MC VERSION: SWITCH THIS: -mcVer=1.18.2 \ No newline at end of file +mcVer=1.17.1 \ No newline at end of file