# Crash when releasing the zoom key: `NoSuchFieldError: acc$mouseFilterXAxis` in `getFOVModifier`
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 55/100
Research direction
Start with MixinEntityRenderer and the CursedMixinExtensions postApply reference rewriting, then inspect the exported EntityRenderer produced with -Dmixin.debug.export=true. Reproduce the crash by releasing the OptiFine zoom key and trace when the @WrapMethod handler is applied. Done means both mouse-filter references resolve to the actual fields and zoom release no longer crashes.
Written by the indexing model from the issue text.
Description
Environment
Cleanroom 0.6.13-alpha (Java 25), OptiFine 1.12.2 HD_U_G5, OptiRefine built from 78ff8ce. The shader pack is irrelevant.
What happens
Hold the OptiFine zoom key (default C) and release it. The game crashes:
java.lang.NoSuchFieldError: Class net.minecraft.client.renderer.EntityRenderer does not have member field
'net.minecraft.util.MouseFilter acc$mouseFilterXAxis'
at net.minecraft.client.renderer.EntityRenderer.wrapMethod$zfk000$optirefine$optiRefine$getFOVModifier(EntityRenderer.java:3364)
at net.minecraft.client.renderer.EntityRenderer.func_78481_a(EntityRenderer.java)
Cause (from the exported class, -Dmixin.debug.export=true)
MixinEntityRendererdeclares the placeholder@AccessTransformer(name = "field_78527_v", deobf = true) public MouseFilter acc$mouseFilterXAxis;, and the same foracc$mouseFilterYAxis.- The cursed AT processing correctly removes the placeholder field. The class ends up with
public MouseFilter field_78527_v. - But the
@WrapMethodhandler forgetFOVModifierstill containsputfield acc$mouseFilterXAxisandputfield acc$mouseFilterYAxis, in the zoom-release branch:this.acc$mouseFilterXAxis = new MouseFilter();. - MixinExtras applies
@WrapMethodafter the other injectors, apparently after thepostApplywhereCursedMixinExtensionsrewrites references. The handler's field references are never redirected tofield_78527_v/field_78526_w. - The JVM resolves the field lazily, so the crash only happens when that branch runs, that is, on zoom release.
Suggestion
Either run the reference rewriting again after MixinExtras has applied the late injectors, or access these two fields in getFOVModifier via @Shadow / an accessor instead of the AT placeholder.
- Dominant language
- Java
- Stars
- 27
- Forks
- 5
- PR merge metrics
- No merged PRs in 30d
Getting set up
This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from Ecdcaeb/OptiRefine
-
Difficulty 4/5 3-5 days Newbie friendliness 48/100
Ecdcaeb/OptiRefine#7 ·
-
Difficulty 3/5 1-2 days Newbie friendliness 82/100
Ecdcaeb/OptiRefine#6 ·
-
Difficulty 4/5 3-5 days Newbie friendliness 35/100
Ecdcaeb/OptiRefine#2 ·
All issues in Ecdcaeb/OptiRefine
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
Maintainers usually reply within 1 day
-
[Bug] dubbo.protocol.triple.max-message-size is only read from OS environment variablesPossibly taken @CCCLL claimed this today. Open
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
youngyangyang04/leetcode-master#3026 · 1 comment ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 64/100
hierynomus/sshj#1070 ·
-
Typo in ExecutorTemplate.cacelAllFuturesPossibly taken @xgx2025 claimed this today. Open
Difficulty 1/5 1-3 hours Newbie friendliness 82/100