Skip to content

Rotations Rewrite with MoveFix implemented - #6784

Open
Gingerbeard5773 wants to merge 10 commits into
MeteorDevelopment:masterfrom
Gingerbeard5773:rotations-rewrite
Open

Gingerbeard5773 wants to merge 10 commits into
MeteorDevelopment:masterfrom
Gingerbeard5773:rotations-rewrite

Conversation

@Gingerbeard5773

@Gingerbeard5773 Gingerbeard5773 commented Nov 7, 2026 •

Copy link
Copy Markdown
Contributor

Type of change

  • Bug fix
  • New feature

Description

This is a rewrite of meteor's rotation manager. But the rewrite is secondary, as the main purpose of the PR is to implement Grіm MoveFix, which meteor has been missing for years.

'MoveFix' is referring to necessary player input corrections in order for Rotations to work fully on Grіm servers. Without it, modules that depend on rotation will be severely limited or cease to function.

This PR fixes this major problem.

Changes

  • Adds a new config setting Rotation Movement Correction which is used to toggle movefix on/off.
  • Fixed kill aura applying rotations incorrectly.
  • Improved the accuracy of rotations (see api additions below).

Rotation API additions

New API has been introduced in order to ensure more accurate rotations.

Rotations are executed later after their initial calculation. Players and entities move in between that time frame, causing the rotation to potentially be off from their intended target.

Heres a real example of how this happens chronologically using meteor's existing kill aura :

  1. Kill aura calculates a rotation to hit a target. A rotation is sent out holding an 'attack' callback.
  2. The player and/or other entities move 1 tick worth in the middle of the tick.
  3. The rotation is called and executed right after the player moves. Problem is: The rotation was for an outdated player's position, so the end result's rotation may be facing off from the intended target. For servers with strict AC, this causes a miss. This is why kill aura does not hit anything when you are moving too fast (flying etc).

The solution: Recalculate the rotation after all entities have moved for the tick. This is handled internally by the rotation manager, but developers will have to opt into the new API to have the fix apply to their rotations.

These are the new API additions. Each of these will automatically recalculate themselves at the correct time.
It consists of real world targets rather than arbitrary yaw and pitch.

    public static void rotate(Entity entity, int priority, Runnable callback) 
    public static void rotate(Entity entity, Runnable callback) 
    
    public static void rotate(Vec3 position, int priority, Runnable callback) 
    public static void rotate(Vec3 position, Runnable callback) 
    
    public static void rotate(BlockPos blockPos, int priority, Runnable callback) 
    public static void rotate(BlockPos blockPos, Runnable callback) 
    
    // Suppliers allow for extreme precision by letting you input your own code (lambda style).
    // For example, a dev could use this to target any piece of a entity's body rather than just the entity's center.
    public static void rotate(int priority, Supplier<Vec2> calculate, Runnable callback) 
    public static void rotate(Supplier<Vec2> calculate, Runnable callback) 
    public static void rotate(Supplier<Vec2> calculate) 

Related issues

closes #4858
closes #3565
closes #5895
closes #5844

How Has This Been Tested?

Heres a basic showcase of the changes from this PR.
In the video, I show what it looks like when a player attempts to use rotations on a server running Grіm AC. There is rubberbanding. Enabling movefix removes the rubberbanding and stops the flags.

2026-11-06.23-00-23.mp4

Video filmed on Constantiam.net.

Checklist:

  • My code follows the style guidelines of this project.
  • I have added comments to my code in more complex areas.
  • I have tested the code in both development and production environments.

Gingerbeard5773 and others added 7 commits November 6, 2026 23:29
* Rewrites the entire rotations manager for the purpose of implementing movefix.

* Movefix can be enabled or disabled in meteor's config.

* Adds a new TickEvent to help with synchronizing module calculations to rotations.
Kill Aura now handles rotations correctly. Previously, it was not accounting for the desync between module calculation and rotation.
Reverting this as it is precarious code and methods. It works but I just don't like it or trust it fully.
May redo in the future.
* Adds in a new way to ensure accurate rotations. Devs will have to opt into it via the new api.
* Deprecate 'clientSide' boolean.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

PvP BowAimbot Silent and Normal aim setting Strafe fix rotation killaura !!! ncp rotation

2 participants