From 4263ea9733bb60bf5898325bdc3ed33ded2ef93d Mon Sep 17 00:00:00 2001 From: tom lee Date: Sat, 29 Jan 2022 16:11:52 +0800 Subject: [PATCH] Add patch for BCLib to solve patchy features gen issue --- .../worldGeneration/WorldGenerationStep.java | 26 ++++++++++++++++++- fabric/build.gradle | 15 ++++++----- .../modAccessor/StarlightAccessor.java | 1 + gradle.properties | 3 ++- 4 files changed, 37 insertions(+), 8 deletions(-) diff --git a/common/src/main/java/com/seibel/lod/common/wrappers/worldGeneration/WorldGenerationStep.java b/common/src/main/java/com/seibel/lod/common/wrappers/worldGeneration/WorldGenerationStep.java index a1e96c2fd..88352afe0 100644 --- a/common/src/main/java/com/seibel/lod/common/wrappers/worldGeneration/WorldGenerationStep.java +++ b/common/src/main/java/com/seibel/lod/common/wrappers/worldGeneration/WorldGenerationStep.java @@ -83,6 +83,7 @@ import net.minecraft.server.level.ThreadedLevelLightEngine; import net.minecraft.CrashReport; import net.minecraft.CrashReportCategory; import net.minecraft.ReportedException; +import net.minecraft.Util; import net.minecraft.core.BlockPos; import net.minecraft.core.Registry; import net.minecraft.core.RegistryAccess; @@ -623,7 +624,7 @@ public final class WorldGenerationStep { } e.pEvent.emptyNano = System.nanoTime(); e.refreshTimeout(); - region = new LightedWorldGenRegion(params.level, lightEngine, chunks, ChunkStatus.STRUCTURE_STARTS, e.range + 1, e.lightMode, generator); + region = new LightedWorldGenRegion(params.level, lightEngine, chunks, ChunkStatus.STRUCTURE_STARTS, rangeEmpty, e.lightMode, generator); adaptor.setRegion(region); referencedChunks = chunks.subGrid(e.range); referencedChunks = generateDirect(e, referencedChunks, e.target, region); @@ -1069,6 +1070,7 @@ public final class WorldGenerationStep { final WorldGenLevelLightEngine light; final LightGenerationMode lightMode; final EmptyChunkGenerator generator; + final int writeRadius; Long2ObjectOpenHashMap chunkMap = new Long2ObjectOpenHashMap(); public LightedWorldGenRegion(ServerLevel serverLevel, WorldGenLevelLightEngine lightEngine, List list, ChunkStatus chunkStatus, int i, LightGenerationMode lightMode, EmptyChunkGenerator generator) { @@ -1076,8 +1078,30 @@ public final class WorldGenerationStep { this.lightMode = lightMode; this.generator = generator; light = lightEngine; + writeRadius = i; } + // Bypass BCLib mixin overrides. + @Override + public boolean ensureCanWrite(BlockPos blockPos) { + int i = SectionPos.blockToSectionCoord(blockPos.getX()); + int j = SectionPos.blockToSectionCoord(blockPos.getZ()); + ChunkPos chunkPos = this.getCenter(); + ChunkAccess center = this.getChunk(chunkPos.x, chunkPos.z); + int k = Math.abs(chunkPos.x - i); + int l = Math.abs(chunkPos.z - j); + if (k > this.writeRadius || l > this.writeRadius) { + return false; + } + if (center.isUpgrading()) { + LevelHeightAccessor levelHeightAccessor = center.getHeightAccessorForGeneration(); + if (blockPos.getY() < levelHeightAccessor.getMinBuildHeight() || blockPos.getY() >= levelHeightAccessor.getMaxBuildHeight()) { + return false; + } + } + return true; + } + // Skip updating the related tile entities @Override public boolean setBlock(BlockPos blockPos, BlockState blockState, int i, int j) { diff --git a/fabric/build.gradle b/fabric/build.gradle index 998afb3be..4559b1a91 100644 --- a/fabric/build.gradle +++ b/fabric/build.gradle @@ -40,29 +40,32 @@ dependencies { } // Starlight - // modImplementation "curse.maven:starlight-521783:${project.starlight_version_fabric}" + // modImplementation "curse.maven:starlight-521783:${rootProject.starlight_version_fabric}" // Sodium modImplementation "maven.modrinth:sodium:${rootProject.sodium_version}" implementation "org.joml:joml:1.10.2" // Lithium -// modImplementation "maven.modrinth:lithium:${project.lithium_version}" +// modImplementation "maven.modrinth:lithium:${rootProject.lithium_version}" // Iris -// modImplementation "maven.modrinth:iris:${project.iris_version}" +// modImplementation "maven.modrinth:iris:${rootProject.iris_version}" + + // BCLib +// modImplementation "com.github.paulevsGitch:BCLib:${rootProject.bclib_version}" // Immersive Portals /* - modImplementation("com.github.qouteall.ImmersivePortalsMod:build:${project.immersive_portals_version}") { + modImplementation("com.github.qouteall.ImmersivePortalsMod:build:${rootProject.immersive_portals_version}") { exclude(group: "net.fabricmc.fabric-api") transitive(false) } - modImplementation("com.github.qouteall.ImmersivePortalsMod:imm_ptl_core:${project.immersive_portals_version}") { + modImplementation("com.github.qouteall.ImmersivePortalsMod:imm_ptl_core:${rootProject.immersive_portals_version}") { exclude(group: "net.fabricmc.fabric-api") transitive(false) } - modImplementation("com.github.qouteall.ImmersivePortalsMod:q_misc_util:${project.immersive_portals_version}") { + modImplementation("com.github.qouteall.ImmersivePortalsMod:q_misc_util:${rootProject.immersive_portals_version}") { exclude(group: "net.fabricmc.fabric-api") transitive(false) } diff --git a/fabric/src/main/java/com/seibel/lod/fabric/wrappers/modAccessor/StarlightAccessor.java b/fabric/src/main/java/com/seibel/lod/fabric/wrappers/modAccessor/StarlightAccessor.java index c04a1dc1d..221312a73 100644 --- a/fabric/src/main/java/com/seibel/lod/fabric/wrappers/modAccessor/StarlightAccessor.java +++ b/fabric/src/main/java/com/seibel/lod/fabric/wrappers/modAccessor/StarlightAccessor.java @@ -2,6 +2,7 @@ package com.seibel.lod.fabric.wrappers.modAccessor; import com.seibel.lod.core.wrapperInterfaces.modAccessor.IStarlightAccessor; + public class StarlightAccessor implements IStarlightAccessor { @Override diff --git a/gradle.properties b/gradle.properties index 626b33833..7427992f4 100644 --- a/gradle.properties +++ b/gradle.properties @@ -10,7 +10,7 @@ toml_version=3.6.0 # Mod info mod_name=Distant Horizons mod_description=This mod generates and renders simplified terrain beyond the normal view distance at a low performance cost. Allowing you to see much farther without turning your game into a slideshow. -mod_authors=James Seibel, Leonardo Amato, Cola, coolGi2007, Ran +mod_authors=James Seibel, Leonardo Amato, Cola, coolGi2007, Ran, LeeTom # Fabric loader fabric_loader_version=0.12.12 @@ -22,6 +22,7 @@ fabric_api_version=0.44.0+1.18 sodium_version=mc1.18-0.4.0-alpha5 iris_version=1.18.x-v1.1.4 immersive_portals_version = v1.0.4-1.18 + bclib_version=1.2.5 # Forge loader forge_version=39.0.44