What are Server Profiles?

TickForge ships with two independent profile systems that auto-tune groups of config keys using @PostProcess hooks at startup:

Server Performance Profiles control entity processing, AI skipping, and item/XP merge behavior via the tickforge-performance.server-profile key. Chunk Loading Profiles control chunk send rates, load concurrency, and generation limits via the chunk-loading-advanced.profile key.

ℹ️
Independent Systems
Server profiles and chunk loading profiles are completely independent. You can use AGGRESSIVE server profile with SURVIVAL chunk loading, or any other combination.

How to Change Profiles

Both profiles are set in tickforge-global.yml inside the config/ directory.

SERVER PERFORMANCE PROFILE
tickforge-performance: server-profile: CUSTOM # CUSTOM | VANILLA_PLUS | BALANCED | AGGRESSIVE
CHUNK LOADING PROFILE
chunk-loading-advanced: profile: CUSTOM # CUSTOM | SURVIVAL | SKYBLOCK | FACTIONS | MINIGAMES

After changing a profile, restart the server. The @PostProcess hook runs at config load and overwrites the individual keys below with the profile's preset values. Any manual overrides you made to those keys will be replaced.

Server Performance Profiles

These profiles control entity tick limits, inactive AI behavior, and item/experience merge radii. The default is CUSTOM, which applies no automatic tuning.

CUSTOM (Default)

No automatic tuning. All tickforge-performance.* keys are used exactly as configured. This is the default for new installations and is intended for operators who want full manual control.

VANILLA_PLUS

Closest to vanilla behavior with light optimizations. Entity tick limits remain unlimited, AI skipping is disabled, and merge radii stay at vanilla defaults. Best for small SMPs where vanilla accuracy matters more than raw performance.

BALANCED

Moderate optimizations suitable for most servers. Caps entity ticks at 300 per world, enables inactive AI skipping with a 40-tick interval, and widens merge radii slightly. A good default choice for servers with 20–80 players.

Recommended for Most Servers
If you're unsure which profile to pick, start with BALANCED. It provides noticeable TPS improvement without visibly changing gameplay for most players.

AGGRESSIVE

Maximum performance. Tightly caps entity and tile entity ticks (200 and 128 respectively), aggressively skips inactive AI on a 60-tick interval, and doubles item merge radius. Best for large servers (100+ players) or servers under heavy load.

⚠️
Trades Accuracy for Speed
AGGRESSIVE noticeably changes vanilla behavior. Mobs may appear less responsive when first entering a player's view, items merge from further away, and entity-heavy farms may process fewer mobs per tick. Test thoroughly before deploying to production.

Server Profile Auto-Tuned Values

Exactly what each profile sets when selected. CUSTOM uses whatever values you've configured manually (shown here as the field defaults for new installs).

Config Key CUSTOM VANILLA_PLUS BALANCED AGGRESSIVE
max-entity-ticks-per-world -1 -1 300 200
max-tile-entity-ticks-per-world -1 -1 256 128
skip-inactive-entity-AI false false true true
item-merge-radius 0.5 0.5 1.0 2.0
experience-merge-radius 3.0 3.0 3.5 4.0
inactive-entity-AI-interval 20 20 40 60

Chunk Loading Profiles

These profiles control how chunks are sent, loaded, and generated for players. They tune both the basic rate limits (chunk-loading-basic.*) and the advanced concurrency settings (chunk-loading-advanced.*). The default is CUSTOM.

ℹ️
Separate from Server Profiles
Chunk loading profiles are set via chunk-loading-advanced.profile and are completely independent of the tickforge-performance.server-profile setting. Mix and match freely.

SURVIVAL

Tuned for vanilla survival gameplay. Uses the same rates as the default field values: 75 chunks/sec send rate, 100 chunks/sec load rate, unlimited generation, and auto-configured concurrency. A safe starting point for standard SMP servers.

SKYBLOCK

Optimized for island-based gamemodes where players teleport frequently between small areas. Higher send rate (90/sec) to quickly render islands on arrival, but lower generation rate (12/sec) since most chunks are void or pre-generated. Limits concurrent loads to 6 and enables sync load avoidance.

FACTIONS

Built for PvP and faction servers with large claimed territories. Moderate rates (85 send, 70 load, 16 gen) with higher concurrent loads (8) to handle rapid exploration. Sync load avoidance is disabled to prevent chunk gaps during combat.

MINIGAMES

High-throughput preset for lobby and minigame servers where many players teleport simultaneously. Highest send and load rates (120/sec each), generous generation (32/sec), maximum concurrency (10 loads, 4 generates), auto-send distance disabled for fixed arena maps, and sync load avoidance enabled.

Chunk Profile Auto-Tuned Values

Exactly what each chunk loading profile sets. These values override both chunk-loading-basic and chunk-loading-advanced keys.

Config Key SURVIVAL SKYBLOCK FACTIONS MINIGAMES
player-max-chunk-send-rate 75.0 90.0 85.0 120.0
player-max-chunk-load-rate 100.0 80.0 70.0 120.0
player-max-chunk-generate-rate -1.0 12.0 16.0 32.0
auto-config-send-distance true true true false
player-max-concurrent-chunk-loads 0 6 8 10
player-max-concurrent-chunk-generates 0 2 2 4
avoid-sync-loads-for-chunk-generation-checks false true false true

The /tf status Connection

The /tf status command monitors TPS in real time. When TPS drops below 18 for a sustained period, the status output includes actionable hints suggesting you switch to AGGRESSIVE profile or reduce view distance.

If you're seeing these warnings, switching profiles is the fastest single change you can make to recover TPS. See the /tf status command reference for full details on the diagnostics output.

When NOT to Use a Preset

Profiles are convenience shortcuts. They exist so you don't have to tune six keys by hand for common server types. But they're not always the right choice:

Stay on CUSTOM if: you've already tuned your performance settings through testing, your server type doesn't match any profile (e.g. a creative plot server), or you need specific values that don't align with any preset (e.g. BALANCED merge radii but AGGRESSIVE entity caps).

When using CUSTOM, tune the individual tickforge-performance.* and chunk-loading-* keys directly. See the tickforge-global.yml reference for every available key, type, and default.

Profiles Overwrite Manual Values
When a profile other than CUSTOM is active, the @PostProcess hook runs after config load and overwrites the tuned keys with the profile's preset values. Any manual edits to those specific keys are silently ignored. Switch to CUSTOM first if you need manual control.