@@ -9,10 +9,12 @@ import com.teamwizardry.librarianlib.math.ceilInt
99import com.teamwizardry.librarianlib.math.floorInt
1010import com.teamwizardry.librarianlib.core.util.ivec
1111import com.teamwizardry.librarianlib.core.util.vec
12- import net.fabricmc.fabric.api.resource.SimpleResourceReloadListener
12+ import com.teamwizardry.librarianlib.platform.LibLibPlatformCommon
1313import net.minecraft.client.resource.metadata.AnimationResourceMetadata
1414import net.minecraft.resource.Resource
1515import net.minecraft.resource.ResourceManager
16+ import net.minecraft.resource.ResourceReloader
17+ import net.minecraft.resource.ResourceType
1618import net.minecraft.util.Identifier
1719import net.minecraft.util.profiler.Profiler
1820import java.awt.Color
@@ -23,14 +25,22 @@ import java.util.concurrent.Executor
2325import javax.imageio.ImageIO
2426import kotlin.jvm.optionals.getOrNull
2527
26- internal object MosaicLoader : SimpleResourceReloadListener<Map<Identifier, MosaicDefinition?>> {
28+ internal object MosaicLoader : ResourceReloader {
2729 private var definitions: MutableMap <Identifier , MosaicDefinition ?> = mutableMapOf ()
2830 private var missingno = Identifier .of(" liblib-mosaic:textures/missingno.png" )
2931
3032 val missingnoSheet: MosaicDefinition get() = getDefinition(missingno)
3133 val missingnoSprite: SpriteDefinition get() = getDefinition(missingno).sprites[0 ]
3234 val missingnoColor: ColorDefinition get() = getDefinition(missingno).colors[0 ]
3335
36+ init {
37+ LibLibPlatformCommon .instance.registerResourceReloadListener(
38+ ResourceType .CLIENT_RESOURCES ,
39+ this ,
40+ Identifier .of(" liblib-mosaic:loader" )
41+ )
42+ }
43+
3444 fun getDefinition (location : Identifier ): MosaicDefinition {
3545 val def = definitions.getOrPut(location) {
3646 load(Client .minecraft.resourceManager, location)
@@ -40,9 +50,20 @@ internal object MosaicLoader : SimpleResourceReloadListener<Map<Identifier, Mosa
4050 return def ? : getDefinition(missingno)
4151 }
4252
43- override fun getFabricId (): Identifier = Identifier .of(" liblib-mosaic:loader" )
53+ override fun reload (
54+ synchronizer : ResourceReloader .Synchronizer ,
55+ manager : ResourceManager ,
56+ prepareProfiler : Profiler ,
57+ applyProfiler : Profiler ,
58+ prepareExecutor : Executor ,
59+ applyExecutor : Executor
60+ ): CompletableFuture <Void > {
61+ return load(manager, prepareProfiler, prepareExecutor)
62+ .thenCompose(synchronizer::whenPrepared)
63+ .thenCompose { apply (it, manager, applyProfiler, applyExecutor) }
64+ }
4465
45- override fun load (
66+ fun load (
4667 manager : ResourceManager ,
4768 profiler : Profiler ,
4869 executor : Executor
@@ -52,7 +73,7 @@ internal object MosaicLoader : SimpleResourceReloadListener<Map<Identifier, Mosa
5273 }, executor)
5374 }
5475
55- override fun apply (
76+ fun apply (
5677 data : Map <Identifier , MosaicDefinition ?>,
5778 manager : ResourceManager ,
5879 profiler : Profiler ,
0 commit comments