OptiPortal

Hytale server optimization plugin that eliminates chunk loading lag on portal travel. Pre-loads destination chunks before teleports occur using a self-learning portal link registry and three-tier cache system (HOT/WARM/COLD).

File Details

OptiPortal-1.0.4.jar

  • R
  • Mar 18, 2026
  • 18.40 MB
  • 35
  • Early Access

File Name

OptiPortal-1.0.4.jar

Supported Versions

  • Early Access

Added

  • Corridor prioritization — chunks near WorldPath waypoints are sorted ahead of equivalent non-corridor chunks during predictive loads, reducing visible pop-in along high-traffic routes
  • Velocity-aware preload radius — when a player enters a portal zone while moving above a configurable speed threshold, an extra chunk ring is preloaded to compensate for the reduced time before arrival
  • Chunk complexity scoring — loaded chunks are scored based on terrain density and used to produce per-chunk RAM estimates
  • Ownership drift auditing — periodic background audit detects and corrects chunk ownership records that have drifted from actual loaded state
  • Async keepalive manager — warm and hot zone keepalive heartbeats run off the world thread with proper load balancing
  • Circuit breaker — world thread operations back off automatically when failure rate exceeds threshold, preventing cascading overload

Fixed

  • Corrected AsyncLoadBalancer drain loop to use ArrayDeque for proper FIFO task ordering
  • Fixed thread-unsafe HashSet in warp file watcher that could cause data corruption under concurrent access
  • Batch chunk eviction callbacks — auditor now processes all evicted chunks in a single pass rather than one call per chunk, avoiding redundant map operations on large eviction events

Changed

  • Chunk preloader upgraded to async implementation with world thread isolation; all chunk loads now go through WorldThreadBridge rather than blocking the event handler thread
  • EnhancedChunkPreloader replaces base ChunkPreloader as the active implementation; base class retained for compatibility
  • Predictive load dispatch in TeleportInterceptor is now overridable via triggerPredictiveLoad hook, allowing subclasses to augment radius without duplicating event handling logic
  • Position update batch skipped entirely when no players are online, eliminating unnecessary allocation on idle servers
  • Tier decay scheduler now skips the full zone map iteration when no zone is due for decay, reducing overhead to a single atomic read per 10-second tick on idle servers
  • Load balancer task processor skips all priority queue acquisitions when the queue is empty

Configuration

New config.json fields (all optional, defaults apply if absent):

  • Config migration — on each startup, any keys present in the bundled default config.json but absent in the server's file are automatically added with their default values; existing operator settings are never overwritten
  • densityBased.corridor.enabled — enable/disable corridor prioritization (default: true)
  • densityBased.corridor.radiusChunks — waypoint radius in chunks (default: 3)
  • activation.velocityAwareActivation — enable/disable velocity radius boost (default: true)
  • activation.velocityRadiusBoostThreshold — speed in blocks/tick above which boost applies (default: 0.5)
  • async.tpsMonitorEnabled, async.tpsLowThreshold, async.tpsCriticalThreshold — TPS guard settings
  • cache.ownershipAuditIntervalMinutes — how often the ownership auditor runs (default: 5)