Accurate Projectile Trajectory Preview

Accurate Projectile Trajectory Preview is a NeoForge client-side Minecraft mod that displays a real-time projectile trajectory preview. LikePTP, but with improved trajectory accuracy and without multiplayer restrictions. Forked from ptp by maDU59 (MIT)

39

Accurate Projectile Trajectory Preview

<div align="center"> <h1>Accurate Projectile Trajectory Preview</h1>

Forked from Projectile Trajectory Preview by maDU59 (MIT License)

</div>

Ever wondered where your arrow, snowball, or potion will land? This mod provides a visual preview of projectile trajectories, similar to PTP, but with improved prediction accuracy and no multiplayer limitations.

🔎 Features

- Trajectory Visualization: Displays the expected path of your projectile before launching. - Target Highlighting: Trajectory color indicates a higher likelihood of hitting a target.

⚠️ Limitations and Notes

- Minecraft projectile physics include random spread offsets, so the actual impact position may slightly differ from the preview. - However, trajectory prediction is designed to be more precise than the original PTP implementation.

🔬 Technical Changes Compared to Original PTP

- This fork modifies both the simulation logic and multiplayer behavior:

Multiplayer behavior

- Removed the server handshake check (serverHasMod)

- Removed networking validation logic

- Trajectory preview is now always available client-side (no server requirement)

Simulation changes

1. Removed projectileInfo.order-based update system The original implementation updated motion using a configurable order array. This fork replaces it with a fixed per-tick update sequence:

- position update

- drag application

- gravity application

This makes motion simulation consistent and closer to vanilla projectile behavior.

2. Reworked entity collision handling

- Reduced broad-phase AABB inflation from 1.0 to 0.3

- Added distance-based spread-aware entity hit detection

- Added a “guaranteed hit” detection flag when the ray intersects the true bounding box

3. Improved spread simulation

- Added distance-based spread offset:

`spreadOffset = normalizedVelocity * (distanceFromStart * maxSpreadFactor)`

- Adjusted spread multiplier from `* 3.0` to `* 2.0`

- Spread is now simulated dynamically per step instead of being approximated

4. Refined water physics handling

- More explicit switching between normal drag/gravity and underwater values

- Applied consistently during simulation loop

5. Minor stability improvements

- Early velocity zero-check `(vel.lengthSqr() < 1e-8)`

- Added `startPos` tracking for spread calculation

📦 Modpacks

Feel free to include this mod in your modpacks.

ADS