Why Addons Kill Your FPS/TPS
Addons run on the main game thread. Poorly optimized scripts, excessive entities, high-resolution textures, and runaway loops tank performance. Here’s how to diagnose and fix it.
Quick Diagnostics
Press F3 (or Fn+F3) → watch TPS (ticks per second). Below 18 = script/lag issue. Below 10 = severe.
Disable all behavior packs → test TPS. Re-enable one by one to find the culprit.
Check content_log.txt for "Script execution time exceeded" warnings.
Top Performance Killers & Fixes
1. Runaway Script Loops (Biggest TPS Killer)
Scripts that run every tick without throttling:
// ❌ BAD - runs every tick, destroys TPS
system.runInterval(() => {
const players = world.getAllPlayers();
players.forEach(p => { /* heavy logic */ });
}, 1);
// ✅ GOOD - throttled, event-driven
world.afterEvents.itemUse.subscribe(e => {
// Only runs when player uses item
});
// Or interval at 20+ ticks (1+ seconds)
system.runInterval(() => { /* light logic */ }, 20);
Rule: Never run heavy logic every tick. Use events (afterEvents, beforeEvents) or intervals ≥20 ticks.
2. Excessive Entity Spawning
Custom entities with minecraft:spawn_adult or minecraft:herd components spawning too many
Scripts calling dimension.spawnEntity() in loops
Fix: Add spawn limits, cooldowns, or use minecraft:despawn components
3. High-Res Textures (Resource Pack Lag)
Textures > 512×512 cause VRAM pressure on mobile/console
Animated textures (flipbooks) with many frames
Fix: Downscale to 256×256 or 128×128. Use official template as baseline.
4. Complex Molang Expressions
Molang in animations, render controllers, or entity components runs every frame. Complex math (trig, loops) kills FPS.
Simplify expressions: pre-calculate values in scripts, pass via entity.setProperty()
Avoid query.* calls in render controllers — cache them
5. Particle/Effect Spam
world.spawnParticle() or entity.addEffect() in loops = instant lag.
Limit particles: max 50-100 active at once
Use minecraft:spawn_particle in entity events instead of scripts
Mobile/Console Specific Fixes
iOS/Android: Disable “Fancy Graphics”, “Beautiful Skies”, “Render Distance > 8 chunks”
Switch/Console: Avoid addons with >50 custom entities or >200 custom blocks
All platforms: Clear com.mojang/minecraftpe/cache monthly
Profiling Tools
Bridge — validates pack structure, catches heavy scripts
/script watchdog in-game — shows script execution time per pack
Windows: Xbox Game Bar (Win+G) → Performance tab → GPU/CPU usage
Last updated: July 2026 | Tested on Bedrock 1.21.x across Windows, iOS, Android, Switch
