diff --git a/build.gradle b/build.gradle index 1824e87..0dc1fdf 100644 --- a/build.gradle +++ b/build.gradle @@ -33,10 +33,6 @@ processResources { } } -loom { - accessWidenerPath = file("src/main/resources/supersecretrevival.accesswidener") -} - def targetJavaVersion = 17 tasks.withType(JavaCompile).configureEach { // ensure that the encoding is set to UTF-8, no matter what the system default is diff --git a/gradle.properties b/gradle.properties index 1a6d548..59a0746 100644 --- a/gradle.properties +++ b/gradle.properties @@ -6,7 +6,7 @@ minecraft_version=1.18.2 yarn_mappings=1.18.2+build.4 loader_version=0.14.10 # Mod Properties -mod_version=1.1+1.18 +mod_version=1.2+1.18 maven_group=zone.oat.supersecretrevival archives_base_name=super-secret-revival # Dependencies diff --git a/src/main/java/zone/oat/supersecretrevival/ShaderControls.java b/src/main/java/zone/oat/supersecretrevival/ShaderControls.java index 131f48a..aff6d84 100644 --- a/src/main/java/zone/oat/supersecretrevival/ShaderControls.java +++ b/src/main/java/zone/oat/supersecretrevival/ShaderControls.java @@ -3,14 +3,15 @@ package zone.oat.supersecretrevival; import net.minecraft.client.MinecraftClient; import net.minecraft.client.render.GameRenderer; import net.minecraft.util.Identifier; +import zone.oat.supersecretrevival.mixin.GameRendererAccessorMixin; public class ShaderControls { private static final GameRenderer renderer = MinecraftClient.getInstance().gameRenderer; public static void setRandomShader() { - Identifier shader = GameRenderer.SHADERS_LOCATIONS[renderer.random.nextInt(GameRenderer.SHADER_COUNT)]; + Identifier shader = GameRendererAccessorMixin.getShaderLocations()[((GameRendererAccessorMixin) renderer).getRandom().nextInt(GameRenderer.SHADER_COUNT)]; Mod.LOGGER.info("Loading shader " + shader.getPath()); - renderer.loadShader(shader); + ((GameRendererAccessorMixin) renderer).invokeLoadShader(shader); } public static void disableShader() { diff --git a/src/main/java/zone/oat/supersecretrevival/mixin/GameRendererAccessorMixin.java b/src/main/java/zone/oat/supersecretrevival/mixin/GameRendererAccessorMixin.java new file mode 100644 index 0000000..1dc92be --- /dev/null +++ b/src/main/java/zone/oat/supersecretrevival/mixin/GameRendererAccessorMixin.java @@ -0,0 +1,23 @@ +package zone.oat.supersecretrevival.mixin; + +import net.minecraft.client.render.GameRenderer; +import net.minecraft.util.Identifier; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; +import org.spongepowered.asm.mixin.gen.Invoker; + +import java.util.Random; + +@Mixin(GameRenderer.class) +public interface GameRendererAccessorMixin { + @Accessor + Random getRandom(); + + @Accessor("SHADERS_LOCATIONS") + public static Identifier[] getShaderLocations() { + throw new AssertionError(); + } + + @Invoker("loadShader") + public void invokeLoadShader(Identifier id); +} diff --git a/src/main/resources/supersecretrevival.accesswidener b/src/main/resources/supersecretrevival.accesswidener deleted file mode 100644 index 2348e0f..0000000 --- a/src/main/resources/supersecretrevival.accesswidener +++ /dev/null @@ -1,8 +0,0 @@ -accessWidener v1 named - -# Lnet/minecraft/client/render/GameRenderer;SHADERS_LOCATIONS:[Lnet/minecraft/util/Identifier; -accessible field net/minecraft/client/render/GameRenderer SHADERS_LOCATIONS [Lnet/minecraft/util/Identifier; -# Lnet/minecraft/client/render/GameRenderer;random:Ljava/util/Random; -accessible field net/minecraft/client/render/GameRenderer random Ljava/util/Random; -# Lnet/minecraft/client/render/GameRenderer;loadShader(Lnet/minecraft/util/Identifier;)V -accessible method net/minecraft/client/render/GameRenderer loadShader (Lnet/minecraft/util/Identifier;)V \ No newline at end of file diff --git a/src/main/resources/supersecretrevival.mixins.json b/src/main/resources/supersecretrevival.mixins.json index e625582..a298088 100644 --- a/src/main/resources/supersecretrevival.mixins.json +++ b/src/main/resources/supersecretrevival.mixins.json @@ -6,6 +6,7 @@ "mixins": [], "client": [ "CancelClickSoundMixin", + "GameRendererAccessorMixin", "SecretSettingsButtonMixin" ], "server": [],