|
4 | 4 | import io.github.ultimateboomer.resolutioncontrol.util.DynamicResolutionHandler; |
5 | 5 | import net.minecraft.client.gl.Framebuffer; |
6 | 6 | import net.minecraft.client.render.WorldRenderer; |
| 7 | +import org.jetbrains.annotations.Nullable; |
7 | 8 | import org.spongepowered.asm.mixin.Mixin; |
8 | 9 | import org.spongepowered.asm.mixin.Shadow; |
9 | 10 | import org.spongepowered.asm.mixin.injection.At; |
10 | | -import org.spongepowered.asm.mixin.injection.Inject; |
11 | | -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; |
12 | | -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; |
| 11 | +import org.spongepowered.asm.mixin.injection.Redirect; |
13 | 12 |
|
14 | 13 | @Mixin(WorldRenderer.class) |
15 | 14 | public abstract class WorldRendererMixin { |
16 | 15 | @Shadow |
17 | 16 | private Framebuffer entityOutlinesFramebuffer; |
18 | | - |
19 | | - @Inject(at = @At("RETURN"), method = "loadEntityOutlineShader") |
20 | | - private void onLoadEntityOutlineShader(CallbackInfo ci) { |
21 | | - ResolutionControlMod.getInstance().resizeMinecraftFramebuffers(); |
22 | | - } |
23 | | - |
24 | | - @Inject(at = @At("RETURN"), method = "onResized") |
25 | | - private void onOnResized(CallbackInfo ci) { |
26 | | - if (entityOutlinesFramebuffer == null) return; |
27 | | - ResolutionControlMod.getInstance().resizeMinecraftFramebuffers(); |
28 | | - } |
29 | | - |
30 | | - @Inject(at = @At("RETURN"), method = "loadTransparencyShader") |
31 | | - private void onLoadTransparencyShader(CallbackInfo ci) { |
32 | | - ResolutionControlMod.getInstance().resizeMinecraftFramebuffers(); |
33 | | - } |
34 | 17 |
|
35 | | - @Inject(method = "getEntityOutlinesFramebuffer", at = @At("RETURN"), cancellable = true) |
36 | | - private void onGetEntityOutlineFramebuffer(CallbackInfoReturnable<Framebuffer> ci) { |
37 | | - handleGetFramebuffer(ci); |
38 | | - } |
39 | | - |
40 | | - @Inject(method = "getTranslucentFramebuffer", at = @At("RETURN"), cancellable = true) |
41 | | - private void onGetTranslucentFramebuffer(CallbackInfoReturnable<Framebuffer> ci) { |
42 | | - handleGetFramebuffer(ci); |
43 | | - } |
| 18 | + @Shadow @Nullable public Framebuffer cloudsFramebuffer; |
44 | 19 |
|
45 | | - @Inject(method = "getEntityFramebuffer", at = @At("RETURN"), cancellable = true) |
46 | | - private void onGetEntityFramebuffer(CallbackInfoReturnable<Framebuffer> ci) { |
47 | | - handleGetFramebuffer(ci); |
48 | | - } |
| 20 | +// @Inject(at = @At("RETURN"), method = "loadEntityOutlineShader") |
| 21 | +// private void onLoadEntityOutlineShader(CallbackInfo ci) { |
| 22 | +// ResolutionControlMod.getInstance().resizeMinecraftFramebuffers(); |
| 23 | +// } |
| 24 | +// |
| 25 | +// @Inject(at = @At("RETURN"), method = "onResized") |
| 26 | +// private void onOnResized(CallbackInfo ci) { |
| 27 | +// if (entityOutlinesFramebuffer == null) return; |
| 28 | +// ResolutionControlMod.getInstance().resizeMinecraftFramebuffers(); |
| 29 | +// } |
| 30 | +// |
| 31 | +// @Inject(at = @At("RETURN"), method = "loadTransparencyShader") |
| 32 | +// private void onLoadTransparencyShader(CallbackInfo ci) { |
| 33 | +// ResolutionControlMod.getInstance().resizeMinecraftFramebuffers(); |
| 34 | +// } |
| 35 | +// |
| 36 | +// @Inject(method = "getEntityOutlinesFramebuffer", at = @At("RETURN"), cancellable = true) |
| 37 | +// private void onGetEntityOutlineFramebuffer(CallbackInfoReturnable<Framebuffer> ci) { |
| 38 | +// handleGetFramebuffer(ci); |
| 39 | +// } |
| 40 | +// |
| 41 | +// @Inject(method = "getTranslucentFramebuffer", at = @At("RETURN"), cancellable = true) |
| 42 | +// private void onGetTranslucentFramebuffer(CallbackInfoReturnable<Framebuffer> ci) { |
| 43 | +// handleGetFramebuffer(ci); |
| 44 | +// } |
| 45 | +// |
| 46 | +// @Inject(method = "getEntityFramebuffer", at = @At("RETURN"), cancellable = true) |
| 47 | +// private void onGetEntityFramebuffer(CallbackInfoReturnable<Framebuffer> ci) { |
| 48 | +// handleGetFramebuffer(ci); |
| 49 | +// } |
| 50 | +// |
| 51 | +// @Inject(method = "getParticlesFramebuffer", at = @At("RETURN"), cancellable = true) |
| 52 | +// private void onGetParticlesFramebuffer(CallbackInfoReturnable<Framebuffer> ci) { |
| 53 | +// handleGetFramebuffer(ci); |
| 54 | +// } |
| 55 | +// |
| 56 | +// @Inject(method = "getWeatherFramebuffer", at = @At("RETURN"), cancellable = true) |
| 57 | +// private void onGetWeatherFramebuffer(CallbackInfoReturnable<Framebuffer> ci) { |
| 58 | +// handleGetFramebuffer(ci); |
| 59 | +// } |
| 60 | +// |
| 61 | +// @Inject(method = "getCloudsFramebuffer", at = @At("RETURN"), cancellable = true) |
| 62 | +// private void onGetCloudsFramebuffer(CallbackInfoReturnable<Framebuffer> ci) { |
| 63 | +// handleGetFramebuffer(ci); |
| 64 | +// } |
| 65 | +// |
| 66 | +// private void handleGetFramebuffer(CallbackInfoReturnable<Framebuffer> fb) { |
| 67 | +// if (fb.getReturnValue() != null && ResolutionControlMod.getInstance().getEnableFastDynamicResolution()) { |
| 68 | +// fb.setReturnValue(DynamicResolutionHandler.INSTANCE.getCurrentFramebuffer(fb.getReturnValue())); |
| 69 | +// } |
| 70 | +// } |
49 | 71 |
|
50 | | - @Inject(method = "getParticlesFramebuffer", at = @At("RETURN"), cancellable = true) |
51 | | - private void onGetParticlesFramebuffer(CallbackInfoReturnable<Framebuffer> ci) { |
52 | | - handleGetFramebuffer(ci); |
53 | | - } |
54 | | - |
55 | | - @Inject(method = "getWeatherFramebuffer", at = @At("RETURN"), cancellable = true) |
56 | | - private void onGetWeatherFramebuffer(CallbackInfoReturnable<Framebuffer> ci) { |
57 | | - handleGetFramebuffer(ci); |
58 | | - } |
59 | | - |
60 | | - @Inject(method = "getCloudsFramebuffer", at = @At("RETURN"), cancellable = true) |
61 | | - private void onGetCloudsFramebuffer(CallbackInfoReturnable<Framebuffer> ci) { |
62 | | - handleGetFramebuffer(ci); |
63 | | - } |
64 | | - |
65 | | - private void handleGetFramebuffer(CallbackInfoReturnable<Framebuffer> fb) { |
66 | | - if (fb.getReturnValue() != null && ResolutionControlMod.getInstance().getEnableFastDynamicResolution()) { |
67 | | - fb.setReturnValue(DynamicResolutionHandler.INSTANCE.getCurrentFramebuffer(fb.getReturnValue())); |
| 72 | + @Redirect(method = "render", at = @At(value = "FIELD", |
| 73 | + target = "Lnet/minecraft/client/render/WorldRenderer;entityOutlinesFramebuffer:Lnet/minecraft/client/gl/Framebuffer;")) |
| 74 | + private Framebuffer onRender1(WorldRenderer renderer) { |
| 75 | + if (ResolutionControlMod.getInstance().getEnableFastDynamicResolution()) { |
| 76 | + return DynamicResolutionHandler.INSTANCE.getCurrentFramebuffer(this.entityOutlinesFramebuffer); |
| 77 | + } else { |
| 78 | + return this.entityOutlinesFramebuffer; |
68 | 79 | } |
69 | 80 | } |
| 81 | + |
70 | 82 | } |
0 commit comments