From 836cd463bda527ade1b78e548133caaa5ff789a5 Mon Sep 17 00:00:00 2001 From: fayer3 Date: Sun, 12 Jan 2025 22:59:37 +0100 Subject: [PATCH] 1.21.3 fixes --- .../client_vr/provider/VRRenderer.java | 19 ++++++----- .../client/renderer/ShaderManagerMixin.java | 33 ------------------- .../entity/LivingEntityRendererMixin.java | 2 +- .../main/resources/vivecraft.accesswidener | 3 -- .../src/main/resources/vivecraft.mixins.json | 1 - 5 files changed, 12 insertions(+), 46 deletions(-) delete mode 100644 common/src/main/java/org/vivecraft/mixin/client/renderer/ShaderManagerMixin.java diff --git a/common/src/main/java/org/vivecraft/client_vr/provider/VRRenderer.java b/common/src/main/java/org/vivecraft/client_vr/provider/VRRenderer.java index a32ea287f..6fd3f5d2b 100644 --- a/common/src/main/java/org/vivecraft/client_vr/provider/VRRenderer.java +++ b/common/src/main/java/org/vivecraft/client_vr/provider/VRRenderer.java @@ -520,14 +520,17 @@ public void setupRenderConfiguration() throws RenderConfigException, IOException this.reinitFrameBuffers("gfx setting changed to: " + this.previousGraphics); } - if (minecraft.options.graphicsMode().get() == GraphicsStatus.FABULOUS && - minecraft.getShaderManager().getProgram(VRShaders.VR_TRANSPARENCY_SHADER) == null) - { - // fabulous shader didn't compile - minecraft.gui.getChat().addMessage(Component.translatable("vivecraft.messages.fabulousFailed")); - minecraft.options.graphicsMode().set(GraphicsStatus.FAST); - minecraft.levelRenderer.allChanged(); - this.reinitFrameBuffers("fabulous missing"); + if (minecraft.options.graphicsMode().get() == GraphicsStatus.FABULOUS) { + try { + minecraft.getShaderManager().getProgramForLoading(VRShaders.VR_TRANSPARENCY_SHADER); + } catch (Exception e) { + // fabulous shader didn't compile + VRSettings.LOGGER.error("Failed to load fabulous vr shader program: ", e); + minecraft.gui.getChat().addMessage(Component.translatable("vivecraft.messages.fabulousFailed")); + minecraft.options.graphicsMode().set(GraphicsStatus.FAST); + minecraft.levelRenderer.allChanged(); + this.reinitFrameBuffers("fabulous missing"); + } } if (this.resizeFrameBuffers && !this.reinitFrameBuffers) { diff --git a/common/src/main/java/org/vivecraft/mixin/client/renderer/ShaderManagerMixin.java b/common/src/main/java/org/vivecraft/mixin/client/renderer/ShaderManagerMixin.java deleted file mode 100644 index c3a8f95a1..000000000 --- a/common/src/main/java/org/vivecraft/mixin/client/renderer/ShaderManagerMixin.java +++ /dev/null @@ -1,33 +0,0 @@ -package org.vivecraft.mixin.client.renderer; - -import com.llamalad7.mixinextras.injector.wrapoperation.Operation; -import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; -import com.llamalad7.mixinextras.sugar.Local; -import net.minecraft.client.renderer.ShaderManager; -import net.minecraft.client.renderer.ShaderProgram; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.vivecraft.client_vr.render.VRShaders; -import org.vivecraft.client_vr.settings.VRSettings; - -import java.util.Map; -import java.util.Optional; - -@Mixin(ShaderManager.class) -public class ShaderManagerMixin { - @WrapOperation(method = "apply(Lnet/minecraft/client/renderer/ShaderManager$Configs;Lnet/minecraft/server/packs/resources/ResourceManager;Lnet/minecraft/util/profiling/ProfilerFiller;)V", at = @At(value = "INVOKE", target = "Ljava/util/Map;put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;", ordinal = 1)) - private Object vivecraft$letTransparencyFail( - Map instance, Object program, Object exception, Operation original, - @Local ShaderManager.CompilationCache compilationCache) - { - if (((ShaderProgram) program).configId().equals(VRShaders.VR_TRANSPARENCY_SHADER_ID)) { - // let vrtransparency fail, some gpus don't support the 18 samplers we need - VRSettings.LOGGER.error( - "Vivecraft: Failed to compile '{}' fabulous graphics will not be available in VR.", - VRShaders.VR_TRANSPARENCY_SHADER_ID, (ShaderManager.CompilationException) exception); - compilationCache.programs.put((ShaderProgram) program, Optional.empty()); - return null; - } - return original.call(instance, program, exception); - } -} diff --git a/common/src/main/java/org/vivecraft/mixin/client/renderer/entity/LivingEntityRendererMixin.java b/common/src/main/java/org/vivecraft/mixin/client/renderer/entity/LivingEntityRendererMixin.java index 2d3506699..6821de1f7 100644 --- a/common/src/main/java/org/vivecraft/mixin/client/renderer/entity/LivingEntityRendererMixin.java +++ b/common/src/main/java/org/vivecraft/mixin/client/renderer/entity/LivingEntityRendererMixin.java @@ -62,7 +62,7 @@ protected LivingEntityRendererMixin(EntityRendererProvider.Context context) { { ItemStack otherStack = original.call(instance, humanoidArm.getOpposite()); if (ClimbTracker.isClaws(otherStack) && - !ClientVRPlayers.getInstance().getRotationsForPlayer(instance.getUUID()).seated) + !ClientVRPlayers.getInstance().isVRAndSeated(instance.getUUID())) { return otherStack; } diff --git a/common/src/main/resources/vivecraft.accesswidener b/common/src/main/resources/vivecraft.accesswidener index ec8e105fc..1b77ea4ee 100644 --- a/common/src/main/resources/vivecraft.accesswidener +++ b/common/src/main/resources/vivecraft.accesswidener @@ -96,6 +96,3 @@ accessible method net/minecraft/world/item/BrushItem spawnDustParticles (Lnet/mi # do not kick climbing players accessible field net/minecraft/server/network/ServerGamePacketListenerImpl aboveGroundTickCount I -# to let the vr transparancy shader fail to compile -accessible class net/minecraft/client/renderer/ShaderManager$CompilationCache -accessible field net/minecraft/client/renderer/ShaderManager$CompilationCache programs Ljava/util/Map; diff --git a/common/src/main/resources/vivecraft.mixins.json b/common/src/main/resources/vivecraft.mixins.json index e8c457192..f3bc01451 100644 --- a/common/src/main/resources/vivecraft.mixins.json +++ b/common/src/main/resources/vivecraft.mixins.json @@ -20,7 +20,6 @@ "client.player.AbstractClientPlayerMixin", "client.renderer.ItemBlockRenderTypesMixin", "client.renderer.RenderStateShardAccessor", - "client.renderer.ShaderManagerMixin", "client.renderer.block.LiquidBlockRendererMixin", "client.renderer.entity.EntityRenderDispatcherMixin", "client.renderer.entity.ItemRendererVRMixin",