Описание
# OptimizeMod
> Keep distant simulation quiet so active gameplay gets more CPU time.
OptimizeMod is a lightweight **Fabric** optimization mod for Minecraft **1.21.1**.
Its goal is simple: reduce work on entities and effects that players are not actively interacting with.
## What OptimizeMod changes
### 1. Distance-based movement tick throttling (`EntityTickMixin`)
Hook: `LivingEntity.tickMovement()`
- Players are excluded.
- If no player is found within sleep distance (`96` blocks by default), non-player living entities skip movement ticks (`ENTITY_TICK_SKIP = 4` by default).
- If a player is present but farther than reduce distance (`48` blocks), movement updates are throttled (roughly every other tick).
### 2. Distance-based AI throttling (`MobEntityAIMixin`)
Hook: `LivingEntity.tickNewAi()` (for `MobEntity`)
- If no player is found within reduce distance (`48` blocks), AI updates are cancelled for that tick.
- In mid-distance ranges, AI updates are partially throttled (every other tick).
- While throttled/cancelled, `despawnCounter` is reset to avoid unwanted despawn side effects.
### 3. Particle throughput cap (`ParticleManagerMixin`, client)
Hook: `ParticleManager.addParticle(...)`
- Particle creation is capped with a local counter (`MAX_PARTICLES_LIMIT = 4000`).
- Excess particle spawn requests are dropped when the cap is exceeded.
- Intended to reduce client stutter from extreme particle bursts.
## Important accuracy notes
- OptimizeMod does **not** guarantee fixed FPS/TPS/MSPT improvements.
- Real impact depends on mob density, player spread, chunk activity, modpack composition, JVM/runtime settings, and test scenario.
- Behavior changes for distant mobs/entities are intentional by design.
## Reproducible evaluation (recommended)
To validate impact on your setup, compare baseline vs. OptimizeMod with identical conditions:
1. Same Java version, JVM args, mod list, seed, and config.
2. Same scenario and duration (recommended: 20-30 minutes per run).
3. At least 3 baseline runs + 3 OptimizeMod runs.
4. Collect comparable metrics:
- p50/p95 MSPT (`spark` or equivalent)
- CPU usage (process/system)
- FPS/frame-time (client tests)
5. Compare distributions (median/p95), not one-off spikes.
## Installation
1. Install Fabric Loader for Minecraft 1.21.1
2. Install Fabric API
3. Place the OptimizeMod jar in `mods/`
## Compatibility
- Designed to complement other optimization mods.
- As with any mixin-based mod, test your exact modpack before production deployment.