Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

# Crash when releasing the zoom key: `NoSuchFieldError: acc$mouseFilterXAxis` in `getFOVModifier`

Open
#5 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
55/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Active
Tech stack
java
Domain
game-dev

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)

  • MixinEntityRenderer declares the placeholder @AccessTransformer(name = "field_78527_v", deobf = true) public MouseFilter acc$mouseFilterXAxis;, and the same for acc$mouseFilterYAxis.
  • The cursed AT processing correctly removes the placeholder field. The class ends up with public MouseFilter field_78527_v.
  • But the @WrapMethod handler for getFOVModifier still contains putfield acc$mouseFilterXAxis and putfield acc$mouseFilterYAxis, in the zoom-release branch: this.acc$mouseFilterXAxis = new MouseFilter();.
  • MixinExtras applies @WrapMethod after the other injectors, apparently after the postApply where CursedMixinExtensions rewrites references. The handler's field references are never redirected to field_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

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from Ecdcaeb/OptiRefine

All issues in Ecdcaeb/OptiRefine

Similar issues

More Java issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.