Skip to content

Commit 89c6fe9

Browse files
committed
fix hand fov and item lighting
1 parent 0cac721 commit 89c6fe9

File tree

6 files changed

+60
-12
lines changed

6 files changed

+60
-12
lines changed

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import dev.architectury.pack200.java.Pack200Adapter
44
plugins {
55
id "dev.architectury.architectury-pack200" version "0.1.3"
66
id "org.jetbrains.kotlin.jvm" version "1.6.10"
7-
id "cc.woverflow.loom" version "0.10.6"
7+
id "gg.essential.loom" version "0.10.0.3"
88
id "java"
99
}
1010

src/main/java/net/wyvest/redaction/mixin/EntityRendererMixin.java

Lines changed: 32 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,11 @@
33
import net.minecraft.client.Minecraft;
44
import net.minecraft.client.renderer.EntityRenderer;
55
import net.minecraft.client.renderer.GlStateManager;
6+
import net.wyvest.redaction.Redaction;
67
import net.wyvest.redaction.config.RedactionConfig;
78
import org.lwjgl.util.glu.Project;
9+
import org.objectweb.asm.Opcodes;
10+
import org.spongepowered.asm.mixin.Dynamic;
811
import org.spongepowered.asm.mixin.Mixin;
912
import org.spongepowered.asm.mixin.Shadow;
1013
import org.spongepowered.asm.mixin.injection.*;
@@ -15,32 +18,51 @@ public abstract class EntityRendererMixin {
1518
@Shadow protected abstract float getFOVModifier(float partialTicks, boolean useFOVSetting);
1619

1720
@Shadow private Minecraft mc;
18-
1921
@Shadow private float farPlaneDistance;
2022

21-
private boolean override = false;
22-
23-
@Inject(method = "renderHand", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/EntityRenderer;getFOVModifier(FZ)F"))
23+
@Inject(method = "renderHand", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/GlStateManager;loadIdentity()V", shift = At.Shift.AFTER, ordinal = 0))
2424
private void modifyFov(float partialTicks, int xOffset, CallbackInfo ci) {
25-
override = true;
25+
setOverrideHand();
26+
}
27+
28+
@Dynamic("I HATE OPTIFINE")
29+
@Inject(method = {"renderHand*"}, at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/GlStateManager;loadIdentity()V", shift = At.Shift.AFTER, ordinal = 0, remap = true), remap = false)
30+
private void modifyFov(float f, int n, boolean bl, boolean bl2, boolean bl3, CallbackInfo ci) {
31+
setOverrideHand();
32+
}
33+
34+
private void setOverrideHand() {
35+
Redaction.INSTANCE.setOverrideHand(true);
2636
}
2737

28-
@Redirect(method = "renderHand", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/EntityRenderer;enableLightmap()V"))
38+
@Dynamic("I HATE OPTIFINE")
39+
@Redirect(method = {"renderHand*", "func_78476_b"}, at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/EntityRenderer;enableLightmap()V", remap = true), remap = false)
2940
private void redirectLightmap(EntityRenderer instance) {
3041
if (!RedactionConfig.INSTANCE.getDisableHandLighting()) {
3142
instance.enableLightmap();
3243
}
3344
}
3445

35-
@Redirect(method = "renderHand", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/EntityRenderer;disableLightmap()V"))
46+
@Dynamic("I HATE OPTIFINE")
47+
@Redirect(method = {"renderHand*", "func_78476_b"}, at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/EntityRenderer;disableLightmap()V", remap = true), remap = false)
3648
private void redirectLightmap2(EntityRenderer instance) {
3749
if (!RedactionConfig.INSTANCE.getDisableHandLighting()) {
3850
instance.disableLightmap();
3951
}
4052
}
4153

42-
@Inject(method = "renderHand", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/GlStateManager;popMatrix()V", shift = At.Shift.AFTER))
54+
@Inject(method = "renderHand", at = @At(value = "FIELD", target = "Lnet/minecraft/client/settings/GameSettings;thirdPersonView:I", opcode = Opcodes.GETFIELD, ordinal = 1))
4355
private void resetFOV(float partialTicks, int xOffset, CallbackInfo ci) {
56+
resetFOV(partialTicks, xOffset);
57+
}
58+
59+
@Dynamic("I HATE OPTIFINE")
60+
@Inject(method = "renderHand*", at = @At(value = "FIELD", target = "Lnet/minecraft/client/settings/GameSettings;thirdPersonView:I", opcode = Opcodes.GETFIELD, ordinal = 1, remap = true), remap = false)
61+
private void resetFOV(float f, int n, boolean bl, boolean bl2, boolean bl3, CallbackInfo ci) {
62+
resetFOV(f, n);
63+
}
64+
65+
private void resetFOV(float partialTicks, int xOffset) {
4466
GlStateManager.matrixMode(5889);
4567
GlStateManager.loadIdentity();
4668
if (this.mc.gameSettings.anaglyph) {
@@ -56,8 +78,8 @@ private void resetFOV(float partialTicks, int xOffset, CallbackInfo ci) {
5678

5779
@ModifyConstant(method = "getFOVModifier", constant = @Constant(floatValue = 70.0F, ordinal = 0))
5880
private float modifyFOV(float constant) {
59-
if (override && RedactionConfig.INSTANCE.getCustomHandFOV()) {
60-
override = false;
81+
if (Redaction.INSTANCE.getOverrideHand() && RedactionConfig.INSTANCE.getCustomHandFOV()) {
82+
Redaction.INSTANCE.setOverrideHand(false);
6183
return RedactionConfig.INSTANCE.getHandFOV();
6284
} else {
6385
return constant;

src/main/java/net/wyvest/redaction/mixin/OverflowGlintHandlerMixin.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
@Mixin(targets = "cc.woverflow.overflowanimations.GlintHandler", remap = false)
1414
public class OverflowGlintHandlerMixin {
1515
@Inject(method = "renderGlint", at = @At("RETURN"))
16-
private void afterRenderEffect(IBakedModel model, CallbackInfo ci) {
16+
private static void afterRenderEffect(IBakedModel model, CallbackInfo ci) {
1717
if (RedactionConfig.INSTANCE.getDisableHandLighting()) {
1818
RenderHelper.disableStandardItemLighting();
1919
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package net.wyvest.redaction.mixin;
2+
3+
import net.wyvest.redaction.Redaction;
4+
import net.wyvest.redaction.config.RedactionConfig;
5+
import org.spongepowered.asm.mixin.Dynamic;
6+
import org.spongepowered.asm.mixin.Mixin;
7+
import org.spongepowered.asm.mixin.Pseudo;
8+
import org.spongepowered.asm.mixin.injection.Constant;
9+
import org.spongepowered.asm.mixin.injection.ModifyConstant;
10+
11+
@Pseudo
12+
@Mixin(targets = "club.sk1er.patcher.hooks.EntityRendererHook", remap = false)
13+
public class PatcherEntityRendererHookMixin {
14+
@Dynamic
15+
@ModifyConstant(method = "getHandFOVModifier", constant = @Constant(floatValue = 70F, ordinal = 0))
16+
private static float modifyFOV(float constant) {
17+
if (Redaction.INSTANCE.getOverrideHand() && RedactionConfig.INSTANCE.getCustomHandFOV()) {
18+
Redaction.INSTANCE.setOverrideHand(false);
19+
return RedactionConfig.INSTANCE.getHandFOV();
20+
} else {
21+
return constant;
22+
}
23+
}
24+
}

src/main/kotlin/net/wyvest/redaction/Redaction.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ object Redaction {
3838
false
3939
}
4040
}
41+
var overrideHand = false
4142

4243
@Mod.EventHandler
4344
private fun onFMLPreInitialization(event: FMLPreInitializationEvent) {

src/main/resources/mixins.redaction.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
"GuiScreenServerListMixin",
1616
"ItemRendererMixin",
1717
"OverflowGlintHandlerMixin",
18+
"PatcherEntityRendererHookMixin",
1819
"PatcherFontRendererMixin",
1920
"RenderItemMixin",
2021
"RenderManagerMixin",

0 commit comments

Comments
 (0)