diff --git a/libraries/resource-loader/resource-loader-mc1.8.2-pre5-mc1.12.2/src/main/java/net/ornithemc/osl/resource/loader/impl/ResourceLoaderMixinPlugin.java b/libraries/resource-loader/resource-loader-mc1.8.2-pre5-mc1.12.2/src/main/java/net/ornithemc/osl/resource/loader/impl/ResourceLoaderMixinPlugin.java deleted file mode 100644 index 7c3d2ef7a..000000000 --- a/libraries/resource-loader/resource-loader-mc1.8.2-pre5-mc1.12.2/src/main/java/net/ornithemc/osl/resource/loader/impl/ResourceLoaderMixinPlugin.java +++ /dev/null @@ -1,60 +0,0 @@ -package net.ornithemc.osl.resource.loader.impl; - -import java.util.List; -import java.util.Set; - -import org.objectweb.asm.tree.ClassNode; - -import org.spongepowered.asm.mixin.extensibility.IMixinConfigPlugin; -import org.spongepowered.asm.mixin.extensibility.IMixinInfo; - -import net.ornithemc.osl.core.impl.util.MinecraftVersion; - -public class ResourceLoaderMixinPlugin implements IMixinConfigPlugin { - - @Override - public void onLoad(String mixinPackage) { - } - - @Override - public String getRefMapperConfig() { - return null; - } - - @Override - public boolean shouldApplyMixin(String targetClassName, String mixinClassName) { - if ("net.ornithemc.osl.resource.loader.impl.mixin.common.AdvancementManagerMixin".equals(mixinClassName) - || "net.ornithemc.osl.resource.loader.impl.mixin.common.CraftingManagerMixin".equals(mixinClassName) - ) { - return MinecraftVersion.resolve().compareTo("17w13a") >= 0; - } - if ("net.ornithemc.osl.resource.loader.impl.mixin.client.LegacyResourcePackAccess".equals(mixinClassName)) { - return MinecraftVersion.resolve().compareTo("16w32a") >= 0; - } - if ("net.ornithemc.osl.resource.loader.impl.mixin.client.BuiltInResourcePackMixinNew".equals(mixinClassName)) { - return MinecraftVersion.resolve().compareTo("16w32b") >= 0; - } - if ("net.ornithemc.osl.resource.loader.impl.mixin.client.BuiltInResourcePackMixinOld".equals(mixinClassName)) { - return MinecraftVersion.resolve().compareTo("16w32b") < 0; - } - - return true; - } - - @Override - public void acceptTargets(Set myTargets, Set otherTargets) { - } - - @Override - public List getMixins() { - return null; - } - - @Override - public void preApply(String targetClassName, ClassNode targetClass, String mixinClassName, IMixinInfo mixinInfo) { - } - - @Override - public void postApply(String targetClassName, ClassNode targetClass, String mixinClassName, IMixinInfo mixinInfo) { - } -} diff --git a/libraries/resource-loader/resource-loader-mc1.8.2-pre5-mc1.12.2/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/BuiltInResourcePackMixinOld.java b/libraries/resource-loader/resource-loader-mc1.8.2-pre5-mc1.12.2/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/BuiltInResourcePackMixin.java similarity index 55% rename from libraries/resource-loader/resource-loader-mc1.8.2-pre5-mc1.12.2/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/BuiltInResourcePackMixinOld.java rename to libraries/resource-loader/resource-loader-mc1.8.2-pre5-mc1.12.2/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/BuiltInResourcePackMixin.java index 9af7b3394..1ea583f26 100644 --- a/libraries/resource-loader/resource-loader-mc1.8.2-pre5-mc1.12.2/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/BuiltInResourcePackMixinOld.java +++ b/libraries/resource-loader/resource-loader-mc1.8.2-pre5-mc1.12.2/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/BuiltInResourcePackMixin.java @@ -4,6 +4,8 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.ModifyVariable; +import org.spongepowered.asm.mixin.injection.At.Shift; import com.llamalad7.mixinextras.injector.wrapoperation.Operation; import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; @@ -12,11 +14,15 @@ import net.minecraft.client.resource.pack.BuiltInResourcePack; import net.minecraft.resource.Identifier; +import net.ornithemc.conditionalmixin.annotations.Conditional; +import net.ornithemc.conditionalmixin.annotations.Version; + import net.ornithemc.osl.resource.loader.impl.adapter.FilePathIdentifier; @Mixin(BuiltInResourcePack.class) -public class BuiltInResourcePackMixinOld { +public class BuiltInResourcePackMixin { + @Conditional(minecraftVersion = @Version("<16w32b")) @WrapOperation( method = "openResource", at = @At( @@ -31,4 +37,21 @@ public class BuiltInResourcePackMixinOld { return op.call(cls, path); } + + @Conditional(minecraftVersion = @Version(">=16w32b")) + @ModifyVariable( + method = "openResource", + at = @At( + value = "INVOKE", + target = "Ljava/lang/Class;getResource(Ljava/lang/String;)Ljava/net/URL;", + shift = Shift.BEFORE // shift to before the try { } block + ) + ) + private String osl$resource_loader$getResourceFromFilePathIdentifier(String path, @Local Identifier location) { + if (location instanceof FilePathIdentifier) { + path = "/" + location.toString(); + } + + return path; + } } diff --git a/libraries/resource-loader/resource-loader-mc1.8.2-pre5-mc1.12.2/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/BuiltInResourcePackMixinNew.java b/libraries/resource-loader/resource-loader-mc1.8.2-pre5-mc1.12.2/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/BuiltInResourcePackMixinNew.java deleted file mode 100644 index 606bc5292..000000000 --- a/libraries/resource-loader/resource-loader-mc1.8.2-pre5-mc1.12.2/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/BuiltInResourcePackMixinNew.java +++ /dev/null @@ -1,33 +0,0 @@ -package net.ornithemc.osl.resource.loader.impl.mixin.client; - -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.At.Shift; -import org.spongepowered.asm.mixin.injection.ModifyVariable; - -import com.llamalad7.mixinextras.sugar.Local; - -import net.minecraft.client.resource.pack.BuiltInResourcePack; -import net.minecraft.resource.Identifier; - -import net.ornithemc.osl.resource.loader.impl.adapter.FilePathIdentifier; - -@Mixin(BuiltInResourcePack.class) -public class BuiltInResourcePackMixinNew { - - @ModifyVariable( - method = "openResource", - at = @At( - value = "INVOKE", - target = "Ljava/lang/Class;getResource(Ljava/lang/String;)Ljava/net/URL;", - shift = Shift.BEFORE // shift to before the try { } block - ) - ) - private String osl$resource_loader$getResourceFromFilePathIdentifier(String path, @Local Identifier location) { - if (location instanceof FilePathIdentifier) { - path = "/" + location.toString(); - } - - return path; - } -} diff --git a/libraries/resource-loader/resource-loader-mc1.8.2-pre5-mc1.12.2/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/LegacyResourcePackAccess.java b/libraries/resource-loader/resource-loader-mc1.8.2-pre5-mc1.12.2/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/LegacyResourcePackAccess.java index 41384c00d..312f06fdc 100644 --- a/libraries/resource-loader/resource-loader-mc1.8.2-pre5-mc1.12.2/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/LegacyResourcePackAccess.java +++ b/libraries/resource-loader/resource-loader-mc1.8.2-pre5-mc1.12.2/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/LegacyResourcePackAccess.java @@ -6,7 +6,10 @@ import net.minecraft.client.resource.pack.LegacyResourcePack; import net.minecraft.client.resource.pack.ResourcePack; -// only exists in 15w31a+ +import net.ornithemc.conditionalmixin.annotations.Conditional; +import net.ornithemc.conditionalmixin.annotations.Version; + +@Conditional(minecraftVersion = @Version(">=16w32a")) @Mixin(LegacyResourcePack.class) public interface LegacyResourcePackAccess { diff --git a/libraries/resource-loader/resource-loader-mc1.8.2-pre5-mc1.12.2/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/MinecraftMixin.java b/libraries/resource-loader/resource-loader-mc1.8.2-pre5-mc1.12.2/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/MinecraftMixin.java index 5315dee7e..73d84db03 100644 --- a/libraries/resource-loader/resource-loader-mc1.8.2-pre5-mc1.12.2/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/MinecraftMixin.java +++ b/libraries/resource-loader/resource-loader-mc1.8.2-pre5-mc1.12.2/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/MinecraftMixin.java @@ -52,6 +52,7 @@ public class MinecraftMixin { this.resourceManager = new ResourceManagerAdapter(this.resourceMetadataSerializerRegistry, this.actualResourceManager); this.actualResourceManager.reset(); +// this.actualResourceManager.addAll(this.packRepository.openSelectedPacks()); // handled by Vanilla } @Inject( @@ -63,6 +64,8 @@ public class MinecraftMixin { ) private void osl$resource_loader$initResourceManager(CallbackInfo ci) { this.actualResourceManager.init(); + // Vanilla reloaders are triggered when registered + // OSL reloaders are queued and reloaded at once this.actualResourceManager.partialReload(); } diff --git a/libraries/resource-loader/resource-loader-mc1.8.2-pre5-mc1.12.2/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/ResourcePacksMixin.java b/libraries/resource-loader/resource-loader-mc1.8.2-pre5-mc1.12.2/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/ResourcePacksMixin.java index a2d0d71a0..f1b11de6b 100644 --- a/libraries/resource-loader/resource-loader-mc1.8.2-pre5-mc1.12.2/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/ResourcePacksMixin.java +++ b/libraries/resource-loader/resource-loader-mc1.8.2-pre5-mc1.12.2/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/ResourcePacksMixin.java @@ -72,6 +72,7 @@ private void load() { } this.packRepository.addSource(this); // resourcepacks/ directory source this.packRepository.init(); +// this.packRepository.reload(); // handled by Vanilla } @Inject( diff --git a/libraries/resource-loader/resource-loader-mc1.8.2-pre5-mc1.12.2/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/common/AdvancementManagerMixin.java b/libraries/resource-loader/resource-loader-mc1.8.2-pre5-mc1.12.2/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/common/AdvancementManagerMixin.java index 674eb784b..0a0859d50 100644 --- a/libraries/resource-loader/resource-loader-mc1.8.2-pre5-mc1.12.2/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/common/AdvancementManagerMixin.java +++ b/libraries/resource-loader/resource-loader-mc1.8.2-pre5-mc1.12.2/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/common/AdvancementManagerMixin.java @@ -14,8 +14,12 @@ import net.minecraft.server.AdvancementManager; +import net.ornithemc.conditionalmixin.annotations.Conditional; +import net.ornithemc.conditionalmixin.annotations.Version; + import net.ornithemc.osl.resource.loader.api.resource.ResourcePath; +@Conditional(minecraftVersion = @Version(">=17w13a")) @Mixin(AdvancementManager.class) public class AdvancementManagerMixin { diff --git a/libraries/resource-loader/resource-loader-mc1.8.2-pre5-mc1.12.2/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/common/CraftingManagerMixin.java b/libraries/resource-loader/resource-loader-mc1.8.2-pre5-mc1.12.2/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/common/CraftingManagerMixin.java index 56cbaa740..9f538708a 100644 --- a/libraries/resource-loader/resource-loader-mc1.8.2-pre5-mc1.12.2/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/common/CraftingManagerMixin.java +++ b/libraries/resource-loader/resource-loader-mc1.8.2-pre5-mc1.12.2/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/common/CraftingManagerMixin.java @@ -14,8 +14,12 @@ import net.minecraft.crafting.CraftingManager; +import net.ornithemc.conditionalmixin.annotations.Conditional; +import net.ornithemc.conditionalmixin.annotations.Version; + import net.ornithemc.osl.resource.loader.api.resource.ResourcePath; +@Conditional(minecraftVersion = @Version(">=17w13a")) @Mixin(CraftingManager.class) public class CraftingManagerMixin { diff --git a/libraries/resource-loader/resource-loader-mc1.8.2-pre5-mc1.12.2/src/main/resources/osl.resource-loader.mixins.json b/libraries/resource-loader/resource-loader-mc1.8.2-pre5-mc1.12.2/src/main/resources/osl.resource-loader.mixins.json index 160155846..f0c0eb9ca 100644 --- a/libraries/resource-loader/resource-loader-mc1.8.2-pre5-mc1.12.2/src/main/resources/osl.resource-loader.mixins.json +++ b/libraries/resource-loader/resource-loader-mc1.8.2-pre5-mc1.12.2/src/main/resources/osl.resource-loader.mixins.json @@ -3,14 +3,13 @@ "minVersion": "0.8", "package": "net.ornithemc.osl.resource.loader.impl.mixin", "compatibilityLevel": "JAVA_8", - "plugin": "net.ornithemc.osl.resource.loader.impl.ResourceLoaderMixinPlugin", + "plugin": "net.ornithemc.conditionalmixin.mixin.ConditionalMixinPlugin", "mixins": [ "common.AdvancementManagerMixin", "common.CraftingManagerMixin" ], "client": [ - "client.BuiltInResourcePackMixinNew", - "client.BuiltInResourcePackMixinOld", + "client.BuiltInResourcePackMixin", "client.CustomResourcePackAccess", "client.LegacyResourcePackAccess", "client.MinecraftMixin", diff --git a/libraries/resource-loader/resource-loader-mc12w15a-mc13w07a/src/main/java/net/ornithemc/osl/resource/loader/api/client/MinecraftExtension.java b/libraries/resource-loader/resource-loader-mc12w15a-mc13w07a/src/main/java/net/ornithemc/osl/resource/loader/api/client/MinecraftExtension.java new file mode 100644 index 000000000..9d1cc631f --- /dev/null +++ b/libraries/resource-loader/resource-loader-mc12w15a-mc13w07a/src/main/java/net/ornithemc/osl/resource/loader/api/client/MinecraftExtension.java @@ -0,0 +1,7 @@ +package net.ornithemc.osl.resource.loader.api.client; + +public interface MinecraftExtension { + + void reloadResources(); + +} diff --git a/libraries/resource-loader/resource-loader-mc12w15a-mc13w07a/src/main/java/net/ornithemc/osl/resource/loader/impl/client/MinecraftExtensionImpl.java b/libraries/resource-loader/resource-loader-mc12w15a-mc13w07a/src/main/java/net/ornithemc/osl/resource/loader/impl/client/MinecraftExtensionImpl.java new file mode 100644 index 000000000..36e885f16 --- /dev/null +++ b/libraries/resource-loader/resource-loader-mc12w15a-mc13w07a/src/main/java/net/ornithemc/osl/resource/loader/impl/client/MinecraftExtensionImpl.java @@ -0,0 +1,11 @@ +package net.ornithemc.osl.resource.loader.impl.client; + +import net.ornithemc.osl.resource.loader.api.client.MinecraftExtension; + +public interface MinecraftExtensionImpl extends MinecraftExtension { + + @Override + default void reloadResources() { + throw new AbstractMethodError(); + } +} diff --git a/libraries/resource-loader/resource-loader-mc12w15a-mc13w07a/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/MinecraftMixin.java b/libraries/resource-loader/resource-loader-mc12w15a-mc13w07a/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/MinecraftMixin.java index 90cc8c2b3..12c1d1ad2 100644 --- a/libraries/resource-loader/resource-loader-mc12w15a-mc13w07a/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/MinecraftMixin.java +++ b/libraries/resource-loader/resource-loader-mc12w15a-mc13w07a/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/MinecraftMixin.java @@ -1,22 +1,51 @@ package net.ornithemc.osl.resource.loader.impl.mixin.client; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.Redirect; import org.spongepowered.asm.mixin.injection.At.Shift; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import net.minecraft.client.Minecraft; +import net.minecraft.client.render.texture.TextureManager; +import net.minecraft.client.render.world.WorldRenderer; +import net.ornithemc.conditionalmixin.annotations.Conditional; +import net.ornithemc.conditionalmixin.annotations.Version; + +import net.ornithemc.osl.resource.loader.api.client.MinecraftExtension; +import net.ornithemc.osl.resource.loader.api.resource.reload.ResourceReloader; +import net.ornithemc.osl.resource.loader.impl.ResourceLoader; import net.ornithemc.osl.resource.loader.impl.resource.manager.SimpleReloadableResourceManager; +import net.ornithemc.osl.resource.loader.impl.resource.repository.SimpleResourcePackRepository; @Mixin(Minecraft.class) -public class MinecraftMixin { +public class MinecraftMixin implements MinecraftExtension { + + @Shadow + private TextureManager textureManager; + @Shadow + private WorldRenderer worldRenderer; + @Unique + private SimpleResourcePackRepository packRepository; @Unique private SimpleReloadableResourceManager resourceManager; + @Inject( + method = "init", + at = @At( + value = "NEW", + target = "net/minecraft/client/resource/pack/TexturePacks" + ) + ) + private void osl$resource_loader$initPackRepository(CallbackInfo ci) { + this.packRepository = SimpleResourcePackRepository.client(); + } + @Inject( method = "init", at = @At( @@ -29,7 +58,44 @@ public class MinecraftMixin { private void osl$resource_loader$initResourceManager(CallbackInfo ci) { this.resourceManager = SimpleReloadableResourceManager.client(); + this.resourceManager.reset(); + this.resourceManager.addAll(this.packRepository.openSelectedPacks()); + + this.reloadResources(); + + this.resourceManager.addReloadedReloader((ResourceReloader) this.textureManager); + this.resourceManager.init(); + // Vanilla reloaders are triggered when registered + // OSL reloaders are queued and reloaded at once this.resourceManager.partialReload(); } + + @Conditional(minecraftVersion = @Version(">=13w01a")) + @Redirect( + method = "tick", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/client/render/world/WorldRenderer;reload()V", + ordinal = 0 + ) + ) + private void osl$resource_loader$cancelWorldRendererReload(WorldRenderer worldRenderer) { + // WorldRenderer reload is handled in Minecraft.reloadResources() + } + + @Override + public void reloadResources() { + this.packRepository.reload(); + + try { + this.resourceManager.reload(this.packRepository.openSelectedPacks()); + } catch (RuntimeException e) { + ResourceLoader.LOGGER.warn("Error while reloading resources", e); + } + + if (this.worldRenderer != null) { + this.worldRenderer.reload(); + } + } } diff --git a/libraries/resource-loader/resource-loader-mc12w15a-mc13w07a/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/TextureManagerMixin.java b/libraries/resource-loader/resource-loader-mc12w15a-mc13w07a/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/TextureManagerMixin.java index 18eed5c14..d93495751 100644 --- a/libraries/resource-loader/resource-loader-mc12w15a-mc13w07a/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/TextureManagerMixin.java +++ b/libraries/resource-loader/resource-loader-mc12w15a-mc13w07a/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/TextureManagerMixin.java @@ -7,20 +7,18 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import net.minecraft.client.Minecraft; import net.minecraft.client.render.texture.TextureManager; +import net.ornithemc.osl.lifecycle.api.client.MinecraftInstance; import net.ornithemc.osl.resource.loader.api.resource.manager.ResourceManager; import net.ornithemc.osl.resource.loader.api.resource.reload.ResourceReloadListener; -import net.ornithemc.osl.resource.loader.impl.resource.manager.SimpleReloadableResourceManager; -import net.ornithemc.osl.resource.loader.impl.resource.repository.SimpleResourcePackRepository; @Mixin(TextureManager.class) public class TextureManagerMixin implements ResourceReloadListener { @Unique - private SimpleResourcePackRepository packRepository; - @Unique - private SimpleReloadableResourceManager resourceManager; + private Minecraft minecraft; @Unique private boolean vanillaReloading; @@ -39,15 +37,7 @@ private void reload() { } ) ) private void osl$resource_loader$initResourceManager(CallbackInfo ci) { - this.packRepository = SimpleResourcePackRepository.client(); - this.resourceManager = SimpleReloadableResourceManager.client(); - - this.resourceManager.reset(); - // ensure the selected packs have been applied - this.resourceManager.reload(this.packRepository.openSelectedPacks()); - - // let this class act as the texture reloader - this.resourceManager.addReloadedReloader(this); + this.minecraft = MinecraftInstance.get(); } @Inject( @@ -62,7 +52,7 @@ private void reload() { } this.vanillaReloading = true; if (!this.reloading) { - this.resourceManager.reload(this.packRepository.openSelectedPacks()); + this.minecraft.reloadResources(); // cancel this call as the resource manager will trigger // another recursive call through this.resourcesReloaded diff --git a/libraries/resource-loader/resource-loader-mc12w15a-mc13w07a/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/TexturePackListMixin.java b/libraries/resource-loader/resource-loader-mc12w15a-mc13w07a/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/TexturePackListMixin.java index ab0dab2ec..0130a6b9b 100644 --- a/libraries/resource-loader/resource-loader-mc12w15a-mc13w07a/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/TexturePackListMixin.java +++ b/libraries/resource-loader/resource-loader-mc12w15a-mc13w07a/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/TexturePackListMixin.java @@ -4,14 +4,30 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; +import net.minecraft.client.render.world.WorldRenderer; import net.minecraft.client.resource.pack.TexturePack; import net.minecraft.client.resource.pack.TexturePacks; +import net.ornithemc.conditionalmixin.annotations.Conditional; +import net.ornithemc.conditionalmixin.annotations.Version; + import net.ornithemc.osl.resource.loader.impl.access.TexturePacksAccess; @Mixin(targets = "net/minecraft/client/gui/screen/TexturePacksScreen$TexturePackList") public class TexturePackListMixin { + @Conditional(minecraftVersion = @Version(">=13w04a")) + @Redirect( + method = "entryClicked", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/client/render/world/WorldRenderer;reload()V" + ) + ) + private void osl$resource_loader$cancelWorldRendererReload(WorldRenderer worldRenderer) { + // WorldRenderer reload is handled in Minecraft.reloadResources() + } + @Redirect( method = "isEntrySelected", at = @At( diff --git a/libraries/resource-loader/resource-loader-mc12w15a-mc13w07a/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/TexturePacksMixin.java b/libraries/resource-loader/resource-loader-mc12w15a-mc13w07a/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/TexturePacksMixin.java index b9906a35f..35a812776 100644 --- a/libraries/resource-loader/resource-loader-mc12w15a-mc13w07a/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/TexturePacksMixin.java +++ b/libraries/resource-loader/resource-loader-mc12w15a-mc13w07a/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/TexturePacksMixin.java @@ -92,6 +92,7 @@ private void reload() { } this.packRepository.addSource(this); // texturepacks/ directory source this.packRepository.init(); +// this.packRepository.reload(); // handled by Vanilla } @Inject( diff --git a/libraries/resource-loader/resource-loader-mc12w15a-mc13w07a/src/main/resources/fabric.mod.json b/libraries/resource-loader/resource-loader-mc12w15a-mc13w07a/src/main/resources/fabric.mod.json index 2778c9769..cfa4deb15 100644 --- a/libraries/resource-loader/resource-loader-mc12w15a-mc13w07a/src/main/resources/fabric.mod.json +++ b/libraries/resource-loader/resource-loader-mc12w15a-mc13w07a/src/main/resources/fabric.mod.json @@ -6,6 +6,7 @@ "mixins": [ "osl.resource-loader.mixins.json" ], + "accessWidener": "osl.resource-loader.classtweaker", "depends": { "fabricloader": "\u003e\u003d0.18.0", "minecraft": "\u003e\u003d1.3-alpha.12.15.a \u003c\u003d1.5-alpha.13.7.a", diff --git a/libraries/resource-loader/resource-loader-mc12w15a-mc13w07a/src/main/resources/osl.resource-loader.classtweaker b/libraries/resource-loader/resource-loader-mc12w15a-mc13w07a/src/main/resources/osl.resource-loader.classtweaker new file mode 100644 index 000000000..a622451e1 --- /dev/null +++ b/libraries/resource-loader/resource-loader-mc12w15a-mc13w07a/src/main/resources/osl.resource-loader.classtweaker @@ -0,0 +1,3 @@ +classTweaker v1 named + +transitive-inject-interface net/minecraft/client/Minecraft net/ornithemc/osl/resource/loader/impl/client/MinecraftExtensionImpl diff --git a/libraries/resource-loader/resource-loader-mc13w09a-mc1.5.2/src/main/java/net/ornithemc/osl/resource/loader/api/client/MinecraftExtension.java b/libraries/resource-loader/resource-loader-mc13w09a-mc1.5.2/src/main/java/net/ornithemc/osl/resource/loader/api/client/MinecraftExtension.java new file mode 100644 index 000000000..9d1cc631f --- /dev/null +++ b/libraries/resource-loader/resource-loader-mc13w09a-mc1.5.2/src/main/java/net/ornithemc/osl/resource/loader/api/client/MinecraftExtension.java @@ -0,0 +1,7 @@ +package net.ornithemc.osl.resource.loader.api.client; + +public interface MinecraftExtension { + + void reloadResources(); + +} diff --git a/libraries/resource-loader/resource-loader-mc13w09a-mc1.5.2/src/main/java/net/ornithemc/osl/resource/loader/impl/client/MinecraftExtensionImpl.java b/libraries/resource-loader/resource-loader-mc13w09a-mc1.5.2/src/main/java/net/ornithemc/osl/resource/loader/impl/client/MinecraftExtensionImpl.java new file mode 100644 index 000000000..36e885f16 --- /dev/null +++ b/libraries/resource-loader/resource-loader-mc13w09a-mc1.5.2/src/main/java/net/ornithemc/osl/resource/loader/impl/client/MinecraftExtensionImpl.java @@ -0,0 +1,11 @@ +package net.ornithemc.osl.resource.loader.impl.client; + +import net.ornithemc.osl.resource.loader.api.client.MinecraftExtension; + +public interface MinecraftExtensionImpl extends MinecraftExtension { + + @Override + default void reloadResources() { + throw new AbstractMethodError(); + } +} diff --git a/libraries/resource-loader/resource-loader-mc13w09a-mc1.5.2/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/MinecraftMixin.java b/libraries/resource-loader/resource-loader-mc13w09a-mc1.5.2/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/MinecraftMixin.java index 90cc8c2b3..20b203579 100644 --- a/libraries/resource-loader/resource-loader-mc13w09a-mc1.5.2/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/MinecraftMixin.java +++ b/libraries/resource-loader/resource-loader-mc13w09a-mc1.5.2/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/MinecraftMixin.java @@ -1,22 +1,48 @@ package net.ornithemc.osl.resource.loader.impl.mixin.client; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.Redirect; import org.spongepowered.asm.mixin.injection.At.Shift; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import net.minecraft.client.Minecraft; +import net.minecraft.client.render.texture.TextureManager; +import net.minecraft.client.render.world.WorldRenderer; +import net.ornithemc.osl.resource.loader.api.client.MinecraftExtension; +import net.ornithemc.osl.resource.loader.api.resource.reload.ResourceReloader; +import net.ornithemc.osl.resource.loader.impl.ResourceLoader; import net.ornithemc.osl.resource.loader.impl.resource.manager.SimpleReloadableResourceManager; +import net.ornithemc.osl.resource.loader.impl.resource.repository.SimpleResourcePackRepository; @Mixin(Minecraft.class) -public class MinecraftMixin { +public class MinecraftMixin implements MinecraftExtension { + @Shadow + private TextureManager textureManager; + @Shadow + private WorldRenderer worldRenderer; + + @Unique + private SimpleResourcePackRepository packRepository; @Unique private SimpleReloadableResourceManager resourceManager; + @Inject( + method = "init", + at = @At( + value = "NEW", + target = "net/minecraft/client/resource/pack/TexturePacks" + ) + ) + private void osl$resource_loader$initPackRepository(CallbackInfo ci) { + this.packRepository = SimpleResourcePackRepository.client(); + } + @Inject( method = "init", at = @At( @@ -29,7 +55,43 @@ public class MinecraftMixin { private void osl$resource_loader$initResourceManager(CallbackInfo ci) { this.resourceManager = SimpleReloadableResourceManager.client(); + this.resourceManager.reset(); + this.resourceManager.addAll(this.packRepository.openSelectedPacks()); + + this.reloadResources(); + + this.resourceManager.addReloadedReloader((ResourceReloader) this.textureManager); + this.resourceManager.init(); + // Vanilla reloaders are triggered when registered + // OSL reloaders are queued and reloaded at once this.resourceManager.partialReload(); } + + @Redirect( + method = "tick", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/client/render/world/WorldRenderer;reload()V", + ordinal = 0 + ) + ) + private void osl$resource_loader$cancelWorldRendererReload(WorldRenderer worldRenderer) { + // WorldRenderer reload is handled in Minecraft.reloadResources() + } + + @Override + public void reloadResources() { + this.packRepository.reload(); + + try { + this.resourceManager.reload(this.packRepository.openSelectedPacks()); + } catch (RuntimeException e) { + ResourceLoader.LOGGER.warn("Error while reloading resources", e); + } + + if (this.worldRenderer != null) { + this.worldRenderer.reload(); + } + } } diff --git a/libraries/resource-loader/resource-loader-mc13w09a-mc1.5.2/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/TextureManagerMixin.java b/libraries/resource-loader/resource-loader-mc13w09a-mc1.5.2/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/TextureManagerMixin.java index 18eed5c14..d93495751 100644 --- a/libraries/resource-loader/resource-loader-mc13w09a-mc1.5.2/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/TextureManagerMixin.java +++ b/libraries/resource-loader/resource-loader-mc13w09a-mc1.5.2/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/TextureManagerMixin.java @@ -7,20 +7,18 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import net.minecraft.client.Minecraft; import net.minecraft.client.render.texture.TextureManager; +import net.ornithemc.osl.lifecycle.api.client.MinecraftInstance; import net.ornithemc.osl.resource.loader.api.resource.manager.ResourceManager; import net.ornithemc.osl.resource.loader.api.resource.reload.ResourceReloadListener; -import net.ornithemc.osl.resource.loader.impl.resource.manager.SimpleReloadableResourceManager; -import net.ornithemc.osl.resource.loader.impl.resource.repository.SimpleResourcePackRepository; @Mixin(TextureManager.class) public class TextureManagerMixin implements ResourceReloadListener { @Unique - private SimpleResourcePackRepository packRepository; - @Unique - private SimpleReloadableResourceManager resourceManager; + private Minecraft minecraft; @Unique private boolean vanillaReloading; @@ -39,15 +37,7 @@ private void reload() { } ) ) private void osl$resource_loader$initResourceManager(CallbackInfo ci) { - this.packRepository = SimpleResourcePackRepository.client(); - this.resourceManager = SimpleReloadableResourceManager.client(); - - this.resourceManager.reset(); - // ensure the selected packs have been applied - this.resourceManager.reload(this.packRepository.openSelectedPacks()); - - // let this class act as the texture reloader - this.resourceManager.addReloadedReloader(this); + this.minecraft = MinecraftInstance.get(); } @Inject( @@ -62,7 +52,7 @@ private void reload() { } this.vanillaReloading = true; if (!this.reloading) { - this.resourceManager.reload(this.packRepository.openSelectedPacks()); + this.minecraft.reloadResources(); // cancel this call as the resource manager will trigger // another recursive call through this.resourcesReloaded diff --git a/libraries/resource-loader/resource-loader-mc13w09a-mc1.5.2/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/TexturePackListMixin.java b/libraries/resource-loader/resource-loader-mc13w09a-mc1.5.2/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/TexturePackListMixin.java index ab0dab2ec..5164c8b7f 100644 --- a/libraries/resource-loader/resource-loader-mc13w09a-mc1.5.2/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/TexturePackListMixin.java +++ b/libraries/resource-loader/resource-loader-mc13w09a-mc1.5.2/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/TexturePackListMixin.java @@ -4,6 +4,7 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; +import net.minecraft.client.render.world.WorldRenderer; import net.minecraft.client.resource.pack.TexturePack; import net.minecraft.client.resource.pack.TexturePacks; @@ -12,6 +13,17 @@ @Mixin(targets = "net/minecraft/client/gui/screen/TexturePacksScreen$TexturePackList") public class TexturePackListMixin { + @Redirect( + method = "entryClicked", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/client/render/world/WorldRenderer;reload()V" + ) + ) + private void osl$resource_loader$cancelWorldRendererReload(WorldRenderer worldRenderer) { + // WorldRenderer reload is handled in Minecraft.reloadResources() + } + @Redirect( method = "isEntrySelected", at = @At( diff --git a/libraries/resource-loader/resource-loader-mc13w09a-mc1.5.2/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/TexturePacksMixin.java b/libraries/resource-loader/resource-loader-mc13w09a-mc1.5.2/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/TexturePacksMixin.java index d862d95af..a037df518 100644 --- a/libraries/resource-loader/resource-loader-mc13w09a-mc1.5.2/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/TexturePacksMixin.java +++ b/libraries/resource-loader/resource-loader-mc13w09a-mc1.5.2/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/TexturePacksMixin.java @@ -91,6 +91,7 @@ private void reload() { } this.packRepository.addSource(this); // texturepacks/ directory source this.packRepository.init(); +// this.packRepository.reload(); // handled by Vanilla } @Inject( diff --git a/libraries/resource-loader/resource-loader-mc13w09a-mc1.5.2/src/main/resources/osl.resource-loader.classtweaker b/libraries/resource-loader/resource-loader-mc13w09a-mc1.5.2/src/main/resources/osl.resource-loader.classtweaker index 0b0c6173f..25fa7ccbc 100644 --- a/libraries/resource-loader/resource-loader-mc13w09a-mc1.5.2/src/main/resources/osl.resource-loader.classtweaker +++ b/libraries/resource-loader/resource-loader-mc13w09a-mc1.5.2/src/main/resources/osl.resource-loader.classtweaker @@ -1,3 +1,5 @@ classTweaker v1 named -extendable method net/minecraft/client/resource/pack/AbstractTexturePack loadIcon ()V \ No newline at end of file +extendable method net/minecraft/client/resource/pack/AbstractTexturePack loadIcon ()V + +transitive-inject-interface net/minecraft/client/Minecraft net/ornithemc/osl/resource/loader/impl/client/MinecraftExtensionImpl diff --git a/libraries/resource-loader/resource-loader-mc13w26a-mc1.8.2-pre4/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/MinecraftMixin.java b/libraries/resource-loader/resource-loader-mc13w26a-mc1.8.2-pre4/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/MinecraftMixin.java index af3e4398c..b271f7ee5 100644 --- a/libraries/resource-loader/resource-loader-mc13w26a-mc1.8.2-pre4/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/MinecraftMixin.java +++ b/libraries/resource-loader/resource-loader-mc13w26a-mc1.8.2-pre4/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/MinecraftMixin.java @@ -53,6 +53,7 @@ public class MinecraftMixin { this.resourceManager = new ResourceManagerAdapter(this.resourceMetadataSerializerRegistry, this.actualResourceManager); this.actualResourceManager.reset(); +// this.actualResourceManager.addAll(this.packRepository.openSelectedPacks()); // handled by Vanilla } @Inject( @@ -64,6 +65,8 @@ public class MinecraftMixin { ) private void osl$resource_loader$initResourceManager(CallbackInfo ci) { this.actualResourceManager.init(); + // Vanilla reloaders are triggered when registered + // OSL reloaders are queued and reloaded at once this.actualResourceManager.partialReload(); } diff --git a/libraries/resource-loader/resource-loader-mc13w26a-mc1.8.2-pre4/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/ResourcePacksMixin.java b/libraries/resource-loader/resource-loader-mc13w26a-mc1.8.2-pre4/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/ResourcePacksMixin.java index 6b1a55283..5d47168b5 100644 --- a/libraries/resource-loader/resource-loader-mc13w26a-mc1.8.2-pre4/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/ResourcePacksMixin.java +++ b/libraries/resource-loader/resource-loader-mc13w26a-mc1.8.2-pre4/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/ResourcePacksMixin.java @@ -70,6 +70,7 @@ private void load() { } this.packRepository.addSource(this); // resourcepacks/ directory source this.packRepository.init(); +// this.packRepository.reload(); // handled by Vanilla } @Inject( diff --git a/libraries/resource-loader/resource-loader-mc13w26a-mc1.8.2-pre4/src/main/resources/osl.resource-loader.mixins.json b/libraries/resource-loader/resource-loader-mc13w26a-mc1.8.2-pre4/src/main/resources/osl.resource-loader.mixins.json index ca79519e5..db55de33c 100644 --- a/libraries/resource-loader/resource-loader-mc13w26a-mc1.8.2-pre4/src/main/resources/osl.resource-loader.mixins.json +++ b/libraries/resource-loader/resource-loader-mc13w26a-mc1.8.2-pre4/src/main/resources/osl.resource-loader.mixins.json @@ -3,6 +3,7 @@ "minVersion": "0.8", "package": "net.ornithemc.osl.resource.loader.impl.mixin", "compatibilityLevel": "JAVA_8", + "plugin": "net.ornithemc.conditionalmixin.mixin.ConditionalMixinPlugin", "mixins": [ ], "client": [ diff --git a/libraries/resource-loader/resource-loader-mc17w43a-mc19w05a/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/MinecraftMixin.java b/libraries/resource-loader/resource-loader-mc17w43a-mc19w05a/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/MinecraftMixin.java index 447d8d941..fe086c995 100644 --- a/libraries/resource-loader/resource-loader-mc17w43a-mc19w05a/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/MinecraftMixin.java +++ b/libraries/resource-loader/resource-loader-mc17w43a-mc19w05a/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/MinecraftMixin.java @@ -48,6 +48,7 @@ public class MinecraftMixin { this.packRepository = new ResourcePackRepositoryAdapter<>(this.packRepository.factory, this.actualPackRepository); this.actualPackRepository.reset(); + this.actualPackRepository.setCallbacks(null, null); } @Inject( @@ -74,6 +75,7 @@ public class MinecraftMixin { ) private void osl$resource_loader$initResourcePackRepository(CallbackInfo ci) { this.actualPackRepository.init(); +// this.actualPackRepository.reload(); // handled by Vanilla } @Inject( @@ -90,6 +92,7 @@ public class MinecraftMixin { this.resourceManager = new ResourceManagerAdapter(this.actualResourceManager); this.actualResourceManager.reset(); +// this.actualResourceManager.addAll(this.actualPackRepository.openSelectedPacks()); // handled by Vanilla } @Inject( @@ -101,6 +104,8 @@ public class MinecraftMixin { ) private void osl$resource_loader$initResourceManager(CallbackInfo ci) { this.actualResourceManager.init(); + // Vanilla reloaders are triggered when registered + // OSL reloaders are queued and reloaded at once this.actualResourceManager.partialReload(); } } diff --git a/libraries/resource-loader/resource-loader-mc17w43a-mc19w05a/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/common/MinecraftServerMixin.java b/libraries/resource-loader/resource-loader-mc17w43a-mc19w05a/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/common/MinecraftServerMixin.java index 35b33d37e..7bc4c9f94 100644 --- a/libraries/resource-loader/resource-loader-mc17w43a-mc19w05a/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/common/MinecraftServerMixin.java +++ b/libraries/resource-loader/resource-loader-mc17w43a-mc19w05a/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/common/MinecraftServerMixin.java @@ -48,6 +48,7 @@ public class MinecraftServerMixin { this.packRepository = new ResourcePackRepositoryAdapter<>(this.packRepository.factory, this.actualPackRepository); this.actualPackRepository.reset(); + this.actualPackRepository.setCallbacks(null, null); } @Inject( @@ -64,6 +65,7 @@ public class MinecraftServerMixin { this.resourceManager = new ResourceManagerAdapter(this.actualResourceManager); this.actualResourceManager.reset(); +// this.actualResourceManager.addAll(this.actualPackRepository.openSelectedPacks()); // handled by Vanilla } @Inject( @@ -74,7 +76,7 @@ public class MinecraftServerMixin { ) private void osl$resource_loader$initResourceManager(CallbackInfo ci) { this.actualResourceManager.init(); - this.actualResourceManager.partialReload(); +// this.actualResourceManager.partialReload(); // unnecessary since full reload follows } @Inject( @@ -101,5 +103,6 @@ public class MinecraftServerMixin { ) private void osl$resource_loader$initResourcePackRepository(CallbackInfo ci) { this.actualPackRepository.init(); +// this.actualPackRepository.reload(); // handled by Vanilla } } diff --git a/libraries/resource-loader/resource-loader-mc19w07a-mc1.14.4/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/MinecraftMixin.java b/libraries/resource-loader/resource-loader-mc19w07a-mc1.14.4/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/MinecraftMixin.java index b86acf954..f11cbbd0d 100644 --- a/libraries/resource-loader/resource-loader-mc19w07a-mc1.14.4/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/MinecraftMixin.java +++ b/libraries/resource-loader/resource-loader-mc19w07a-mc1.14.4/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/MinecraftMixin.java @@ -48,6 +48,7 @@ public class MinecraftMixin { this.packRepository = new ResourcePackRepositoryAdapter<>(this.packRepository.factory, this.actualPackRepository); this.actualPackRepository.reset(); + this.actualPackRepository.setCallbacks(null, null); } @Inject( @@ -74,6 +75,7 @@ public class MinecraftMixin { ) private void osl$resource_loader$initResourcePackRepository(CallbackInfo ci) { this.actualPackRepository.init(); +// this.actualPackRepository.reload(); // handled by Vanilla } @Inject( @@ -90,6 +92,7 @@ public class MinecraftMixin { this.resourceManager = new ResourceManagerAdapter(this.actualResourceManager); this.actualResourceManager.reset(); +// this.actualResourceManager.addAll(this.actualPackRepository.openSelectedPacks()); // handled by Vanilla } @Inject( @@ -101,5 +104,6 @@ public class MinecraftMixin { ) private void osl$resource_loader$initResourceManager(CallbackInfo ci) { this.actualResourceManager.init(); +// this.actualResourceManager.partialReload(); // handled by Vanilla } } diff --git a/libraries/resource-loader/resource-loader-mc19w07a-mc1.14.4/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/common/MinecraftServerMixin.java b/libraries/resource-loader/resource-loader-mc19w07a-mc1.14.4/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/common/MinecraftServerMixin.java index 9d1b2e654..7bc4c9f94 100644 --- a/libraries/resource-loader/resource-loader-mc19w07a-mc1.14.4/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/common/MinecraftServerMixin.java +++ b/libraries/resource-loader/resource-loader-mc19w07a-mc1.14.4/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/common/MinecraftServerMixin.java @@ -48,6 +48,7 @@ public class MinecraftServerMixin { this.packRepository = new ResourcePackRepositoryAdapter<>(this.packRepository.factory, this.actualPackRepository); this.actualPackRepository.reset(); + this.actualPackRepository.setCallbacks(null, null); } @Inject( @@ -64,6 +65,7 @@ public class MinecraftServerMixin { this.resourceManager = new ResourceManagerAdapter(this.actualResourceManager); this.actualResourceManager.reset(); +// this.actualResourceManager.addAll(this.actualPackRepository.openSelectedPacks()); // handled by Vanilla } @Inject( @@ -74,6 +76,7 @@ public class MinecraftServerMixin { ) private void osl$resource_loader$initResourceManager(CallbackInfo ci) { this.actualResourceManager.init(); +// this.actualResourceManager.partialReload(); // unnecessary since full reload follows } @Inject( @@ -100,5 +103,6 @@ public class MinecraftServerMixin { ) private void osl$resource_loader$initResourcePackRepository(CallbackInfo ci) { this.actualPackRepository.init(); +// this.actualPackRepository.reload(); // handled by Vanilla } } diff --git a/libraries/resource-loader/resource-loader-mca1.0.1_01-mca1.2.1_01/src/main/java/net/ornithemc/osl/resource/loader/api/client/MinecraftExtension.java b/libraries/resource-loader/resource-loader-mca1.0.1_01-mca1.2.1_01/src/main/java/net/ornithemc/osl/resource/loader/api/client/MinecraftExtension.java new file mode 100644 index 000000000..9d1cc631f --- /dev/null +++ b/libraries/resource-loader/resource-loader-mca1.0.1_01-mca1.2.1_01/src/main/java/net/ornithemc/osl/resource/loader/api/client/MinecraftExtension.java @@ -0,0 +1,7 @@ +package net.ornithemc.osl.resource.loader.api.client; + +public interface MinecraftExtension { + + void reloadResources(); + +} diff --git a/libraries/resource-loader/resource-loader-mca1.0.1_01-mca1.2.1_01/src/main/java/net/ornithemc/osl/resource/loader/impl/client/MinecraftExtensionImpl.java b/libraries/resource-loader/resource-loader-mca1.0.1_01-mca1.2.1_01/src/main/java/net/ornithemc/osl/resource/loader/impl/client/MinecraftExtensionImpl.java new file mode 100644 index 000000000..36e885f16 --- /dev/null +++ b/libraries/resource-loader/resource-loader-mca1.0.1_01-mca1.2.1_01/src/main/java/net/ornithemc/osl/resource/loader/impl/client/MinecraftExtensionImpl.java @@ -0,0 +1,11 @@ +package net.ornithemc.osl.resource.loader.impl.client; + +import net.ornithemc.osl.resource.loader.api.client.MinecraftExtension; + +public interface MinecraftExtensionImpl extends MinecraftExtension { + + @Override + default void reloadResources() { + throw new AbstractMethodError(); + } +} diff --git a/libraries/resource-loader/resource-loader-mca1.0.1_01-mca1.2.1_01/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/MinecraftMixin.java b/libraries/resource-loader/resource-loader-mca1.0.1_01-mca1.2.1_01/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/MinecraftMixin.java index 20fe80d08..2180b9700 100644 --- a/libraries/resource-loader/resource-loader-mca1.0.1_01-mca1.2.1_01/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/MinecraftMixin.java +++ b/libraries/resource-loader/resource-loader-mca1.0.1_01-mca1.2.1_01/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/MinecraftMixin.java @@ -1,6 +1,7 @@ package net.ornithemc.osl.resource.loader.impl.mixin.client; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -8,14 +9,24 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import net.minecraft.client.Minecraft; +import net.minecraft.client.render.texture.TextureManager; +import net.minecraft.client.render.world.WorldRenderer; +import net.ornithemc.osl.resource.loader.api.client.MinecraftExtension; +import net.ornithemc.osl.resource.loader.api.resource.reload.ResourceReloader; import net.ornithemc.osl.resource.loader.impl.ClientResourcePacks; +import net.ornithemc.osl.resource.loader.impl.ResourceLoader; import net.ornithemc.osl.resource.loader.impl.resource.manager.SimpleReloadableResourceManager; import net.ornithemc.osl.resource.loader.impl.resource.repository.BundledModResourcePacks; import net.ornithemc.osl.resource.loader.impl.resource.repository.SimpleResourcePackRepository; @Mixin(Minecraft.class) -public class MinecraftMixin { +public class MinecraftMixin implements MinecraftExtension { + + @Shadow + private TextureManager textureManager; + @Shadow + private WorldRenderer worldRenderer; @Unique private SimpleResourcePackRepository packRepository; @@ -55,7 +66,31 @@ public class MinecraftMixin { private void osl$resource_loader$initResourceManager(CallbackInfo ci) { this.resourceManager = SimpleReloadableResourceManager.client(); + this.resourceManager.reset(); + this.resourceManager.addAll(this.packRepository.openSelectedPacks()); + + this.reloadResources(); + + this.resourceManager.addReloadedReloader((ResourceReloader) this.textureManager); + this.resourceManager.init(); + // Vanilla reloaders are triggered when registered + // OSL reloaders are queued and reloaded at once this.resourceManager.partialReload(); } + + @Override + public void reloadResources() { + this.packRepository.reload(); + + try { + this.resourceManager.reload(this.packRepository.openSelectedPacks()); + } catch (RuntimeException e) { + ResourceLoader.LOGGER.warn("Error while reloading resources", e); + } + + if (this.worldRenderer != null) { + this.worldRenderer.reload(); + } + } } diff --git a/libraries/resource-loader/resource-loader-mca1.0.1_01-mca1.2.1_01/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/TextureManagerMixin.java b/libraries/resource-loader/resource-loader-mca1.0.1_01-mca1.2.1_01/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/TextureManagerMixin.java index 68c76dce1..232b148f5 100644 --- a/libraries/resource-loader/resource-loader-mca1.0.1_01-mca1.2.1_01/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/TextureManagerMixin.java +++ b/libraries/resource-loader/resource-loader-mca1.0.1_01-mca1.2.1_01/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/TextureManagerMixin.java @@ -11,20 +11,20 @@ import org.spongepowered.asm.mixin.injection.Redirect; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import net.minecraft.client.Minecraft; import net.minecraft.client.render.texture.TextureManager; +import net.ornithemc.osl.lifecycle.api.client.MinecraftInstance; import net.ornithemc.osl.resource.loader.api.resource.manager.ResourceManager; import net.ornithemc.osl.resource.loader.api.resource.reload.ResourceReloadListener; -import net.ornithemc.osl.resource.loader.impl.resource.manager.SimpleReloadableResourceManager; -import net.ornithemc.osl.resource.loader.impl.resource.repository.SimpleResourcePackRepository; @Mixin(TextureManager.class) public class TextureManagerMixin implements ResourceReloadListener { @Unique - private SimpleResourcePackRepository packRepository; + private Minecraft minecraft; @Unique - private SimpleReloadableResourceManager resourceManager; + private ResourceManager resourceManager; @Unique private boolean vanillaReloading; @@ -71,15 +71,8 @@ private void reload() { } ) ) private void osl$resource_loader$initResourceManager(CallbackInfo ci) { - this.packRepository = SimpleResourcePackRepository.client(); - this.resourceManager = SimpleReloadableResourceManager.client(); - - this.resourceManager.reset(); - // ensure the selected packs have been applied - this.resourceManager.reload(this.packRepository.openSelectedPacks()); - - // let this class act as the texture reloader - this.resourceManager.addReloadedReloader(this); + this.minecraft = MinecraftInstance.get(); + this.resourceManager = ResourceManager.client(); } @Inject( @@ -94,7 +87,7 @@ private void reload() { } this.vanillaReloading = true; if (!this.reloading) { - this.resourceManager.reload(this.packRepository.openSelectedPacks()); + this.minecraft.reloadResources(); // cancel this call as the resource manager will trigger // another recursive call through this.resourcesReloaded diff --git a/libraries/resource-loader/resource-loader-mca1.0.1_01-mca1.2.1_01/src/main/resources/fabric.mod.json b/libraries/resource-loader/resource-loader-mca1.0.1_01-mca1.2.1_01/src/main/resources/fabric.mod.json index 78f7aedc8..289b70aa3 100644 --- a/libraries/resource-loader/resource-loader-mca1.0.1_01-mca1.2.1_01/src/main/resources/fabric.mod.json +++ b/libraries/resource-loader/resource-loader-mca1.0.1_01-mca1.2.1_01/src/main/resources/fabric.mod.json @@ -6,6 +6,7 @@ "mixins": [ "osl.resource-loader.mixins.json" ], + "accessWidener": "osl.resource-loader.classtweaker", "depends": { "fabricloader": "\u003e\u003d0.18.0", "minecraft": "\u003e\u003d1.0.0-alpha.0.1.1 \u003c\u003d1.0.0-alpha.2.1.1", diff --git a/libraries/resource-loader/resource-loader-mca1.0.1_01-mca1.2.1_01/src/main/resources/osl.resource-loader.classtweaker b/libraries/resource-loader/resource-loader-mca1.0.1_01-mca1.2.1_01/src/main/resources/osl.resource-loader.classtweaker new file mode 100644 index 000000000..a622451e1 --- /dev/null +++ b/libraries/resource-loader/resource-loader-mca1.0.1_01-mca1.2.1_01/src/main/resources/osl.resource-loader.classtweaker @@ -0,0 +1,3 @@ +classTweaker v1 named + +transitive-inject-interface net/minecraft/client/Minecraft net/ornithemc/osl/resource/loader/impl/client/MinecraftExtensionImpl diff --git a/libraries/resource-loader/resource-loader-mca1.2.2-mc1.2.5/src/main/java/net/ornithemc/osl/resource/loader/api/client/MinecraftExtension.java b/libraries/resource-loader/resource-loader-mca1.2.2-mc1.2.5/src/main/java/net/ornithemc/osl/resource/loader/api/client/MinecraftExtension.java new file mode 100644 index 000000000..9d1cc631f --- /dev/null +++ b/libraries/resource-loader/resource-loader-mca1.2.2-mc1.2.5/src/main/java/net/ornithemc/osl/resource/loader/api/client/MinecraftExtension.java @@ -0,0 +1,7 @@ +package net.ornithemc.osl.resource.loader.api.client; + +public interface MinecraftExtension { + + void reloadResources(); + +} diff --git a/libraries/resource-loader/resource-loader-mca1.2.2-mc1.2.5/src/main/java/net/ornithemc/osl/resource/loader/impl/ResourceLoaderMixinPlugin.java b/libraries/resource-loader/resource-loader-mca1.2.2-mc1.2.5/src/main/java/net/ornithemc/osl/resource/loader/impl/ResourceLoaderMixinPlugin.java deleted file mode 100644 index 03618774b..000000000 --- a/libraries/resource-loader/resource-loader-mca1.2.2-mc1.2.5/src/main/java/net/ornithemc/osl/resource/loader/impl/ResourceLoaderMixinPlugin.java +++ /dev/null @@ -1,56 +0,0 @@ -package net.ornithemc.osl.resource.loader.impl; - -import java.util.List; -import java.util.Set; - -import org.objectweb.asm.tree.ClassNode; - -import org.spongepowered.asm.mixin.extensibility.IMixinConfigPlugin; -import org.spongepowered.asm.mixin.extensibility.IMixinInfo; - -import net.ornithemc.osl.core.impl.util.MinecraftVersion; - -public class ResourceLoaderMixinPlugin implements IMixinConfigPlugin { - - @Override - public void onLoad(String mixinPackage) { - } - - @Override - public String getRefMapperConfig() { - return null; - } - - @Override - public boolean shouldApplyMixin(String targetClassName, String mixinClassName) { - if ("net.ornithemc.osl.resource.loader.impl.mixin.client.TexturePacksScreenMixin".equals(mixinClassName)) { - return MinecraftVersion.resolve().compareTo("b1.3") < 0; - } - if ("net.ornithemc.osl.resource.loader.impl.mixin.client.TexturePackListMixin".equals(mixinClassName)) { - return MinecraftVersion.resolve().compareTo("b1.3") >= 0; - } - if ("net.ornithemc.osl.resource.loader.impl.mixin.client.DirectoryTexturePackAccess".equals(mixinClassName) - || "net.ornithemc.osl.resource.loader.impl.mixin.client.DirectoryTexturePackMixin".equals(mixinClassName)) { - return MinecraftVersion.resolve().compareTo("12w08a") >= 0; - } - - return true; - } - - @Override - public void acceptTargets(Set myTargets, Set otherTargets) { - } - - @Override - public List getMixins() { - return null; - } - - @Override - public void preApply(String targetClassName, ClassNode targetClass, String mixinClassName, IMixinInfo mixinInfo) { - } - - @Override - public void postApply(String targetClassName, ClassNode targetClass, String mixinClassName, IMixinInfo mixinInfo) { - } -} diff --git a/libraries/resource-loader/resource-loader-mca1.2.2-mc1.2.5/src/main/java/net/ornithemc/osl/resource/loader/impl/client/MinecraftExtensionImpl.java b/libraries/resource-loader/resource-loader-mca1.2.2-mc1.2.5/src/main/java/net/ornithemc/osl/resource/loader/impl/client/MinecraftExtensionImpl.java new file mode 100644 index 000000000..36e885f16 --- /dev/null +++ b/libraries/resource-loader/resource-loader-mca1.2.2-mc1.2.5/src/main/java/net/ornithemc/osl/resource/loader/impl/client/MinecraftExtensionImpl.java @@ -0,0 +1,11 @@ +package net.ornithemc.osl.resource.loader.impl.client; + +import net.ornithemc.osl.resource.loader.api.client.MinecraftExtension; + +public interface MinecraftExtensionImpl extends MinecraftExtension { + + @Override + default void reloadResources() { + throw new AbstractMethodError(); + } +} diff --git a/libraries/resource-loader/resource-loader-mca1.2.2-mc1.2.5/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/DirectoryTexturePackAccess.java b/libraries/resource-loader/resource-loader-mca1.2.2-mc1.2.5/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/DirectoryTexturePackAccess.java index 985a9392f..99fd60199 100644 --- a/libraries/resource-loader/resource-loader-mca1.2.2-mc1.2.5/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/DirectoryTexturePackAccess.java +++ b/libraries/resource-loader/resource-loader-mca1.2.2-mc1.2.5/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/DirectoryTexturePackAccess.java @@ -7,7 +7,10 @@ import net.minecraft.client.resource.pack.DirectoryTexturePack; -// directory packs were added in 12w08a +import net.ornithemc.conditionalmixin.annotations.Conditional; +import net.ornithemc.conditionalmixin.annotations.Version; + +@Conditional(minecraftVersion = @Version(">=12w08a")) @Mixin(DirectoryTexturePack.class) public interface DirectoryTexturePackAccess { diff --git a/libraries/resource-loader/resource-loader-mca1.2.2-mc1.2.5/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/DirectoryTexturePackMixin.java b/libraries/resource-loader/resource-loader-mca1.2.2-mc1.2.5/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/DirectoryTexturePackMixin.java index d33f19756..9383c1fc4 100644 --- a/libraries/resource-loader/resource-loader-mca1.2.2-mc1.2.5/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/DirectoryTexturePackMixin.java +++ b/libraries/resource-loader/resource-loader-mca1.2.2-mc1.2.5/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/DirectoryTexturePackMixin.java @@ -10,7 +10,10 @@ import net.minecraft.client.resource.pack.BuiltInTexturePack; import net.minecraft.client.resource.pack.DirectoryTexturePack; -// directory packs were added in 12w08a +import net.ornithemc.conditionalmixin.annotations.Conditional; +import net.ornithemc.conditionalmixin.annotations.Version; + +@Conditional(minecraftVersion = @Version(">=12w08a")) @Mixin(DirectoryTexturePack.class) public class DirectoryTexturePackMixin { diff --git a/libraries/resource-loader/resource-loader-mca1.2.2-mc1.2.5/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/MinecraftMixin.java b/libraries/resource-loader/resource-loader-mca1.2.2-mc1.2.5/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/MinecraftMixin.java index 90cc8c2b3..b83892922 100644 --- a/libraries/resource-loader/resource-loader-mca1.2.2-mc1.2.5/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/MinecraftMixin.java +++ b/libraries/resource-loader/resource-loader-mca1.2.2-mc1.2.5/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/MinecraftMixin.java @@ -1,22 +1,47 @@ package net.ornithemc.osl.resource.loader.impl.mixin.client; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.At.Shift; +import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import net.minecraft.client.Minecraft; +import net.minecraft.client.render.texture.TextureManager; +import net.minecraft.client.render.world.WorldRenderer; +import net.ornithemc.osl.resource.loader.api.client.MinecraftExtension; +import net.ornithemc.osl.resource.loader.api.resource.reload.ResourceReloader; +import net.ornithemc.osl.resource.loader.impl.ResourceLoader; import net.ornithemc.osl.resource.loader.impl.resource.manager.SimpleReloadableResourceManager; +import net.ornithemc.osl.resource.loader.impl.resource.repository.SimpleResourcePackRepository; @Mixin(Minecraft.class) -public class MinecraftMixin { +public class MinecraftMixin implements MinecraftExtension { + + @Shadow + private TextureManager textureManager; + @Shadow + private WorldRenderer worldRenderer; + @Unique + private SimpleResourcePackRepository packRepository; @Unique private SimpleReloadableResourceManager resourceManager; + @Inject( + method = "init", + at = @At( + value = "NEW", + target = "net/minecraft/client/resource/pack/TexturePacks" + ) + ) + private void osl$resource_loader$initPackRepository(CallbackInfo ci) { + this.packRepository = SimpleResourcePackRepository.client(); + } + @Inject( method = "init", at = @At( @@ -29,7 +54,31 @@ public class MinecraftMixin { private void osl$resource_loader$initResourceManager(CallbackInfo ci) { this.resourceManager = SimpleReloadableResourceManager.client(); + this.resourceManager.reset(); + this.resourceManager.addAll(this.packRepository.openSelectedPacks()); + + this.reloadResources(); + + this.resourceManager.addReloadedReloader((ResourceReloader) this.textureManager); + this.resourceManager.init(); + // Vanilla reloaders are triggered when registered + // OSL reloaders are queued and reloaded at once this.resourceManager.partialReload(); } + + @Override + public void reloadResources() { + this.packRepository.reload(); + + try { + this.resourceManager.reload(this.packRepository.openSelectedPacks()); + } catch (RuntimeException e) { + ResourceLoader.LOGGER.warn("Error while reloading resources", e); + } + + if (this.worldRenderer != null) { + this.worldRenderer.reload(); + } + } } diff --git a/libraries/resource-loader/resource-loader-mca1.2.2-mc1.2.5/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/TextureManagerMixin.java b/libraries/resource-loader/resource-loader-mca1.2.2-mc1.2.5/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/TextureManagerMixin.java index 18eed5c14..d93495751 100644 --- a/libraries/resource-loader/resource-loader-mca1.2.2-mc1.2.5/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/TextureManagerMixin.java +++ b/libraries/resource-loader/resource-loader-mca1.2.2-mc1.2.5/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/TextureManagerMixin.java @@ -7,20 +7,18 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import net.minecraft.client.Minecraft; import net.minecraft.client.render.texture.TextureManager; +import net.ornithemc.osl.lifecycle.api.client.MinecraftInstance; import net.ornithemc.osl.resource.loader.api.resource.manager.ResourceManager; import net.ornithemc.osl.resource.loader.api.resource.reload.ResourceReloadListener; -import net.ornithemc.osl.resource.loader.impl.resource.manager.SimpleReloadableResourceManager; -import net.ornithemc.osl.resource.loader.impl.resource.repository.SimpleResourcePackRepository; @Mixin(TextureManager.class) public class TextureManagerMixin implements ResourceReloadListener { @Unique - private SimpleResourcePackRepository packRepository; - @Unique - private SimpleReloadableResourceManager resourceManager; + private Minecraft minecraft; @Unique private boolean vanillaReloading; @@ -39,15 +37,7 @@ private void reload() { } ) ) private void osl$resource_loader$initResourceManager(CallbackInfo ci) { - this.packRepository = SimpleResourcePackRepository.client(); - this.resourceManager = SimpleReloadableResourceManager.client(); - - this.resourceManager.reset(); - // ensure the selected packs have been applied - this.resourceManager.reload(this.packRepository.openSelectedPacks()); - - // let this class act as the texture reloader - this.resourceManager.addReloadedReloader(this); + this.minecraft = MinecraftInstance.get(); } @Inject( @@ -62,7 +52,7 @@ private void reload() { } this.vanillaReloading = true; if (!this.reloading) { - this.resourceManager.reload(this.packRepository.openSelectedPacks()); + this.minecraft.reloadResources(); // cancel this call as the resource manager will trigger // another recursive call through this.resourcesReloaded diff --git a/libraries/resource-loader/resource-loader-mca1.2.2-mc1.2.5/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/TexturePackListMixin.java b/libraries/resource-loader/resource-loader-mca1.2.2-mc1.2.5/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/TexturePackListMixin.java index d61ad7bf4..5165c2fe6 100644 --- a/libraries/resource-loader/resource-loader-mca1.2.2-mc1.2.5/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/TexturePackListMixin.java +++ b/libraries/resource-loader/resource-loader-mca1.2.2-mc1.2.5/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/TexturePackListMixin.java @@ -7,8 +7,12 @@ import net.minecraft.client.resource.pack.TexturePack; import net.minecraft.client.resource.pack.TexturePacks; +import net.ornithemc.conditionalmixin.annotations.Conditional; +import net.ornithemc.conditionalmixin.annotations.Version; + import net.ornithemc.osl.resource.loader.impl.access.TexturePacksAccess; +@Conditional(minecraftVersion = @Version(">=b1.3")) @Mixin(targets = "net/minecraft/client/gui/screen/TexturePacksScreen$TexturePackList") public class TexturePackListMixin { diff --git a/libraries/resource-loader/resource-loader-mca1.2.2-mc1.2.5/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/TexturePacksMixin.java b/libraries/resource-loader/resource-loader-mca1.2.2-mc1.2.5/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/TexturePacksMixin.java index 4e6371afa..e841e73c3 100644 --- a/libraries/resource-loader/resource-loader-mca1.2.2-mc1.2.5/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/TexturePacksMixin.java +++ b/libraries/resource-loader/resource-loader-mca1.2.2-mc1.2.5/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/TexturePacksMixin.java @@ -90,6 +90,7 @@ private void reload() { } this.packRepository.addSource(this); // texturepacks/ directory source this.packRepository.init(); +// this.packRepository.reload(); // handled by Vanilla } @Inject( diff --git a/libraries/resource-loader/resource-loader-mca1.2.2-mc1.2.5/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/TexturePacksScreenMixin.java b/libraries/resource-loader/resource-loader-mca1.2.2-mc1.2.5/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/TexturePacksScreenMixin.java index 987c9c1e4..422ddd85f 100644 --- a/libraries/resource-loader/resource-loader-mca1.2.2-mc1.2.5/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/TexturePacksScreenMixin.java +++ b/libraries/resource-loader/resource-loader-mca1.2.2-mc1.2.5/src/main/java/net/ornithemc/osl/resource/loader/impl/mixin/client/TexturePacksScreenMixin.java @@ -8,8 +8,12 @@ import net.minecraft.client.resource.pack.TexturePack; import net.minecraft.client.resource.pack.TexturePacks; +import net.ornithemc.conditionalmixin.annotations.Conditional; +import net.ornithemc.conditionalmixin.annotations.Version; + import net.ornithemc.osl.resource.loader.impl.access.TexturePacksAccess; +@Conditional(minecraftVersion = @Version(" packs) { + packs.forEach(this::add); + } + public void add(ResourcePack pack) { pack.flatStream().forEach(this::addResourcePack); }