aboutsummaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/moe/nea/firmament/mixins/accessor/sodium/AccessorSodiumWorldRenderer.java14
-rw-r--r--src/main/kotlin/moe/nea/firmament/compat/SodiumChunkReloader.kt12
-rw-r--r--src/main/kotlin/moe/nea/firmament/features/texturepack/CustomBlockTextures.kt12
3 files changed, 38 insertions, 0 deletions
diff --git a/src/main/java/moe/nea/firmament/mixins/accessor/sodium/AccessorSodiumWorldRenderer.java b/src/main/java/moe/nea/firmament/mixins/accessor/sodium/AccessorSodiumWorldRenderer.java
new file mode 100644
index 0000000..b759204
--- /dev/null
+++ b/src/main/java/moe/nea/firmament/mixins/accessor/sodium/AccessorSodiumWorldRenderer.java
@@ -0,0 +1,14 @@
+package moe.nea.firmament.mixins.accessor.sodium;
+
+import me.jellysquid.mods.sodium.client.render.SodiumWorldRenderer;
+import me.jellysquid.mods.sodium.client.render.chunk.RenderSectionManager;
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.Pseudo;
+import org.spongepowered.asm.mixin.gen.Accessor;
+
+@Mixin(SodiumWorldRenderer.class)
+@Pseudo
+public interface AccessorSodiumWorldRenderer {
+ @Accessor("renderSectionManager")
+ RenderSectionManager getRenderSectionManager_firmament();
+}
diff --git a/src/main/kotlin/moe/nea/firmament/compat/SodiumChunkReloader.kt b/src/main/kotlin/moe/nea/firmament/compat/SodiumChunkReloader.kt
new file mode 100644
index 0000000..4bb231a
--- /dev/null
+++ b/src/main/kotlin/moe/nea/firmament/compat/SodiumChunkReloader.kt
@@ -0,0 +1,12 @@
+package moe.nea.firmament.compat
+
+import me.jellysquid.mods.sodium.client.render.SodiumWorldRenderer
+import moe.nea.firmament.mixins.accessor.sodium.AccessorSodiumWorldRenderer
+
+class SodiumChunkReloader : Runnable {
+ override fun run() {
+ (SodiumWorldRenderer.instanceNullable() as AccessorSodiumWorldRenderer)
+ .renderSectionManager_firmament
+ .updateChunks(false)
+ }
+}
diff --git a/src/main/kotlin/moe/nea/firmament/features/texturepack/CustomBlockTextures.kt b/src/main/kotlin/moe/nea/firmament/features/texturepack/CustomBlockTextures.kt
index c869ba4..18da54c 100644
--- a/src/main/kotlin/moe/nea/firmament/features/texturepack/CustomBlockTextures.kt
+++ b/src/main/kotlin/moe/nea/firmament/features/texturepack/CustomBlockTextures.kt
@@ -3,6 +3,7 @@
package moe.nea.firmament.features.texturepack
import java.util.concurrent.CompletableFuture
+import net.fabricmc.loader.api.FabricLoader
import kotlinx.serialization.ExperimentalSerializationApi
import kotlinx.serialization.KSerializer
import kotlinx.serialization.Serializable
@@ -29,6 +30,7 @@ import net.minecraft.util.math.BlockPos
import net.minecraft.util.profiler.Profiler
import moe.nea.firmament.Firmament
import moe.nea.firmament.annotations.Subscribe
+import moe.nea.firmament.compat.SodiumChunkReloader
import moe.nea.firmament.events.BakeExtraModelsEvent
import moe.nea.firmament.events.EarlyResourceReloadEvent
import moe.nea.firmament.events.FinalizeResourceManagerEvent
@@ -161,10 +163,20 @@ object CustomBlockTextures {
// false schedules rebuilds outside a 27 block radius to happen async
it.scheduleRebuild(false)
}
+ sodiumReloadTask?.run()
}
}
}
+ private val sodiumReloadTask = runCatching {
+ SodiumChunkReloader()
+ }.getOrElse {
+ if (FabricLoader.getInstance().isModLoaded("sodium"))
+ logger.error("Could not create sodium chunk reloader")
+ null
+ }
+
+
fun matchesPosition(replacement: BlockReplacement, blockPos: BlockPos?): Boolean {
if (blockPos == null) return true
val rc = replacement.roughCheck