TFBMCAddon — SilkSpawners Spawner Mechanics Addon for 1.21.8 Supercharge mob spawners while staying 100% vanilla-friendly. No GUIs. No economy. No fluff. SilkSpawners addon for extra vanilla spawner mechanic features.
Why I Built This I was playing on my own server and noticed something was off: spawners felt slow—barely any mobs, long waits between waves, and farms that didn’t feel satisfying.
So I wrote TFBMCAddon to fix spawner pacing while keeping everything vanilla-style, then went way further: dynamic scaling, heat/overclock, catalysts, TPS guard, region/mob/world overrides, and a powerful yet simple config.
Now spawners feel great and farm design is fun again.
What This Plugin Is • Paper / Spigot 1.21.8 add-on that tunes mob spawners.
• Works with vanilla spawners and plays nicely with
SilkSpawners (soft-depend).
• No commands or perms required to use spawners — admin/debug tools are optional.
• Highly configurable: per-mob, per-world, per-region, and even per-spawner overrides.
• Catalyst command available for temporary boosts.
Headline Features ✔ Core spawn-rate control — tune delay (speed), count per wave, spawn range, and required player range.
✔ Dynamic scaling — scales with nearby players, redstone power, and optionally night time.
✔ Heat / Overclock — spawners “heat up” as they run, can overheat, then resume. Five configurable stages show particles + throttled messages.
✔ Catalysts — temporary boosts activated by command while holding a specific item (default: NETHER_STAR).
✔ TPS Guard — auto-reduce multipliers when TPS dips, restore when healthy.
✔ Local caps + space checks — safety against runaway farms.
✔ Stacker-friendly philosophy — spawns remain vanilla; stacker plugins still work.
✔ Modern, no-NMS, no deprecated API for 1.21.8.
Commands & Permissions /spawner chunk — List Heat/Stage/Delay/Count for all spawners in your current chunk.
• Available to all players.
• Alias:
/tfbmc chunk /spawner catalyst default — Apply a 1-hour catalyst to the nearest spawner in your current chunk.
• Requires holding the configured item (default:
NETHER_STAR; consumed).
• Permission:
tfbmc.catalyst /spawner addon reload — Reload the config file.
• Permission:
tfbmc.reload /spawner debug — Gives a neatly organized white-shulker kit of labeled spawners for every Particle enum in 1.21.8.
• Permission:
tfbmc.debug
How It Behaves •
Delay multiplier → waves happen faster.
•
Count multiplier → more mobs per wave.
• Multipliers stack: defaults → world → mob → region → per-spawner overrides.
• Dynamic scaling boosts with more players, redstone power, and night-time (if enabled).
• Heat rises with activity, decays over time, and maps to a speed boost. Overheats trigger cooldowns + alerts.
• Catalysts = temporary multipliers via item + command.
• Performance protected with TPS guard, safety caps, and spawn-space checks.
Installation 1. Use Paper/Spigot 1.21.8.
2. Drop
TFBMCAddon.jar into /plugins.
3. Start the server once to generate config.
4. Edit `/plugins/TFBMCAddon/config.yml` to your taste.
5. Run
/spawner addon reload to apply changes.
Configuration Everything is documented. Full default config:
Code (YAML):
# ========================================================================================= # TFBMCAddon (Paper 1.21.8) - Depends on SilkSpawners and TFBMCDayNight # The Final Block survival tuning: fast-enough spawners, smooth scaling, # strict lag guards. No NMS, modern API only. Every value below is intentional # and explained. Designed to layer cleanly on top of SilkSpawners. Plug & play. # ========================================================================================= settings: # How often (in ticks) we re-tune spawners & update heat. # 20 = once per second. Lower = snappier feel, slightly more CPU; higher = lazier, cheaper. tick_interval: 20
# Tiny hint particles during tuning/catalyst/burst. These are *not* constant trails. debug_particles: false
# Respect vanilla light/biome/block checks. (Currently unused in runtime; reserved for future.) respect_vanilla_checks: true
# ----------------------------------------------------------------------------------------- # TPS GUARD — automatic slowdown when the server dips, restoring at healthy TPS. # Multipliers apply to both "speed" and "amount" math (keeps farms safe under load). # ----------------------------------------------------------------------------------------- tps_guard:
enabled: true
steps:
- { threshold: 19.0, factor
: 1.00
}# 19+ TPS → full speed - { threshold: 18.0, factor
: 0.85
}# mild dip → soften output - { threshold: 17.0, factor
: 0.70
}# heavier dip → clamp harder - { threshold: 16.0, factor
: 0.50
}# serious lag → half output until stable # ----------------------------------------------------------------------------------------- # DEFAULTS — baseline behavior (then world/mob/region/per-spawner layers apply). # Intention: "noticeably better than vanilla" without being farm-busting. # ----------------------------------------------------------------------------------------- defaults:
delay_multiplier: 2.10
# ~2.1× faster clock (feels lively but not crazy) count_multiplier: 1.20
# ~20% more per wave (pairs well with the burst section below) spawn_range: 7
# Vanilla 4 → 7 keeps clumps looser (less entity cramming) player_range: 28
# Vanilla 16 → 28 lets players stand a bit farther base_min_delay: 200
# Vanilla anchor values retained for predictable scaling base_max_delay: 800
# Hard safety caps to prevent runaway grinders (per mob type). local_caps:
per_spawner: 8
# Max of the same mob near a *single* spawner per_chunk: 32
# Max of the same mob per chunk # “Burst then drip”: first few waves spawn a bit quicker & beefier → punchy activation, # then it settles into the normal rate. burst_then_drip:
enabled: true
burst_waves: 3
# First 3 waves get the burst treatment burst_factor: 1.25
# ~25% speed-up; amount is gently lifted internally to avoid spikes # ----------------------------------------------------------------------------------------- # DYNAMIC SCALING — adapts to players/redstone/time for a living-world feel. # Balanced for SMP: useful boosts that won’t shred TPS. # ----------------------------------------------------------------------------------------- dynamic_scaling:
enabled: true
# More nearby players = a bit faster & a bit more per wave. # (Implementation: per extra player → speed * (1+factor), amount * (1+factor*0.5)) player_count:
enabled: true
base_players: 1
per_player_factor: 0.15
# +15% speed (+7.5% amount) per extra player range: 24
# within 24 blocks of the spawner # Redstone power nudges the spawner faster (for clever base wiring). redstone:
enabled: true
on_factor: 1.40
# ~40% speed-up while powered (no power-scale needed) # Night-time boost (uses TFBMCDayNight if present; otherwise vanilla window). time_of_day:
enabled: true
night_factor: 1.10
# subtle +10% at night for overworld atmosphere # Optional fallback window if TFBMCDayNight is NOT present (otherwise auto-detected): # sunrise: 0 # sunset: 13000 # ----------------------------------------------------------------------------------------- # HEAT / OVERCLOCK — continuous spawning builds “heat” (grants speed) up to a threshold; # if overheated, a cooldown kicks in. Keeps farms active but self-regulating. # ----------------------------------------------------------------------------------------- heat:
enabled: true
gain_per_spawn: 1.0
# 1 heat per mob decay_per_tick: 0.05
# 1.0 heat/sec decay @ 20 TPS (keeps idle spawners cool) overheat_threshold: 600.0
# ≈5 minutes of hard continuous output before cooldown cooldown_ticks: 1200
# 60s cooldown to settle the area boost_curve: # smooth piecewise curve from 1.0× → 1.5× as heat rises at_0: 1.0
at_50: 1.2
at_100: 1.5
# ----------------------------------------------------------------------------------------- # CATALYSTS — temporary boosts. Right-click a spawner with the item OR: # "/spawner catalyst default" while holding the item (consumes it). # Great for events or late-game upgrades without being permanent. # ----------------------------------------------------------------------------------------- catalysts:
enabled: true
list:
default:
item: "NETHER_STAR"# premium consumable; adjust to your economy applies_to: ["ANY"]# or target a list: ["BLAZE","SKELETON"] multiplier: 3.0
# multiplies speed & amount (stacked after other factors) duration_seconds: 3600
# 1 hour real time # ----------------------------------------------------------------------------------------- # OVERHEAT CHAT ALERTS — ping nearby players when a spawner overheats, even if enclosed. # Throttled so it won’t spam chat. # ----------------------------------------------------------------------------------------- overheat_notify:
enabled: true
same_chunk_only: true
# keep it local to the chunk for immersion radius: 32
# (used if same_chunk_only: false) throttle_seconds: 30
message: "&c[TFBMC] Spawner overheating: {mob} at {x} {y} {z}" # ----------------------------------------------------------------------------------------- # HEAT STAGES HUD — on stage change we pop a tasteful particle + message. # Throttled & distance-limited to avoid visual spam. These are purely cosmetic. # ----------------------------------------------------------------------------------------- heat_stages:
enabled: true
throttle_seconds: 10
# Visual tuning (safe to tweak; defaults are applied internally if omitted). # Note: current runtime uses conservative built-ins; these confirm your intent. visible_range_blocks: 28
# only notify players within this range burst_count: 55
# center burst particle count ring_points: 12
# points in the particle ring ring_radius: 0.8
# ring radius around the spawner show_actionbar: true
# echo the stage message on actionbar stages:
- { min: 0, name
: "I", particle
: "CLOUD", message
: "&7[TFBMC] Heat Stage I ({heat}%)"} - { min: 20, name
: "II", particle
: "CRIT", message
: "&7[TFBMC] Heat Stage II ({heat}%)"} - { min: 40, name
: "III", particle
: "END_ROD", message
: "&e[TFBMC] Heat Stage III ({heat}%)"} - { min: 70, name
: "IV", particle
: "FLAME", message
: "&6[TFBMC] Heat Stage IV ({heat}%)"} - { min: 100, name
: "V", particle
: "SOUL_FIRE_FLAME", message
: "&c[TFBMC] Heat Stage V ({heat}%)"} # ----------------------------------------------------------------------------------------- # COMMAND TOGGLES — disable any surface if you want purist/vanilla play. # Permissions: tfbmc.catalyst (true), tfbmc.reload (op), tfbmc.debug (op) # ----------------------------------------------------------------------------------------- commands:
allow_catalyst: true
allow_reload: true
allow_debug: true
# ----------------------------------------------------------------------------------------- # DEBUG KIT — /spawner debug # Multi-shulker kit with one item per Particle enum. Each item is a SPAWNER that, when placed, # temporarily becomes a PIG spawner and emits its particle on a fast loop. # Guarded to be *lab-safe*: only runs when a viewer is nearby, with per-chunk/world caps, # and auto-cleans when the block breaks/unloads. # ----------------------------------------------------------------------------------------- debug:
kit_item_material: "SPAWNER"# item inside the shulkers spawner_entity_type: "PIG"# safe default entity on place emission_interval_ticks: 2
# 2 ticks = very fast cadence for testing emission_bursts: 0
# 0 = infinite until the block is broken particles_per_burst: 40
# dense but short-lived viewer_range: 32
# only emit if someone’s within 32 blocks max_emitters_per_world: 128
# hard global guard max_emitters_per_chunk: 8
# local guard # ----------------------------------------------------------------------------------------- # FINE-GRAINED OVERRIDES — leave empty by default. Add only what you need. # They multiply on top of the defaults above (and each other). # ----------------------------------------------------------------------------------------- mobs: {} # Example: # mobs: # BLAZE: { delay_multiplier: 1.10, count_multiplier: 0.95 } # SPIDER: { delay_multiplier: 1.15, count_multiplier: 1.00 } # CREEPER: { delay_multiplier: 0.95, count_multiplier: 1.10 } worlds: {} # Example: # worlds: # world_nether: { delay_multiplier: 0.95, count_multiplier: 1.00 } # world_the_end: { delay_multiplier: 1.05, count_multiplier: 0.95 } regions: {} # Example: # regions: # world: # - { name: "spawn_plaza", min: [ -64, 50, -64 ], max: [ 64, 120, 64 ], delay_multiplier: 0.8, count_multiplier: 0.8 } # - { name: "mob_arena", min: [ 200, 40, 200 ], max: [260, 120,260 ], delay_multiplier: 1.3, count_multiplier: 1.1 } per_spawner: {} # Example (format is "world:x:y:z"): # per_spawner: # "world:100:64:-20": { delay_multiplier: 2.0, count_multiplier: 1.5 }
SilkSpawners Integration • Detects SilkSpawners automatically.
• Updates tuning when a spawner’s type changes.
• Fully vanilla otherwise — no hard dependency.
Performance & Safety • Minimal scheduler work (only loaded chunks + near players).
• TPS Guard + local caps prevent runaway farms.
• Burst-then-drip startup waves for smooth pacing.
• No NMS or reflection hacks — clean Bukkit API for 1.21.8.
FAQ Q: Does this change natural spawns?
A: No — only spawners.
Q: Is this safe for small home servers?
A: Yes. Defaults are conservative and TPS guard protects you.
Q: Can I disable features?
A: Every system has
enabled: true/false. Toggle to taste.
Q: Can I edit spawners in-game?
A: Design is config-first. Use
/spawner addon reload.
Q: How do stage messages avoid spam?
A: Both heat stage and overheat alerts have per-spawner throttles. You’ll see state changes — not spam.
Have fun building smarter, faster, safer spawner farms — the vanilla way!