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.5.jar

  • R
  • Mar 19, 2026
  • 18.41 MB
  • 40
  • Early Access

File Name

OptiPortal-1.0.5.jar

Supported Versions

  • Early Access

[1.0.5] - 2026-03-19

Added

  • Warm zone state persistence — HOT/WARM zone state is saved on shutdown and restored on startup; zones that have not yet expired are resumed without reloading chunks, reducing startup I/O after clean restarts
  • Concurrent warm zone startup loading — startup staged load now runs up to 3 zones concurrently instead of sequentially, significantly reducing time-to-ready when multiple WARM zones are configured
  • In-memory portal cache — portal proximity checks no longer query storage on every player position update; the portal list is cached in memory at startup and kept in sync with any changes. Cache is refreshable on demand via AsyncTeleportInterceptor.refreshPortalCache()
  • Chunk complexity and RAM caching — chunk scoring and RAM estimation results are cached for the lifetime of the server session; repeated loads of the same chunk skip redundant work entirely. Cache is cleared automatically when a world unloads.

Fixed

  • Async proximity detection silently matched zero portals due to a world name lookup bug; portal preloading now triggers correctly for all async teleport paths
  • NullPointerException on async teleport preload fixed; no longer crashes on teleport detection
  • Warps removed from warps.json were not deleted from storage on first server boot after install
  • Repeated preload log spam eliminated under both idle and active conditions
  • Zone tier promotion now correctly reflects actual chunk load state rather than configured strategy
  • World thread saturation under load caused by chunk operations running on the wrong thread
  • Special characters in JSON output were being written as Unicode escape sequences; all config and data files now write readable characters directly
  • Portal proximity detection now respects vertical distance; zones on different floors no longer trigger preloads for players above or below them
  • Activation shape setting now takes effect; ellipsoid, cylinder, and box shapes are all supported with per-zone overrides via /preload shape <id> <ELLIPSOID|CYLINDER|BOX>

Added

  • Actual RAM total shown in UI stats bar alongside the existing RAM estimate total

Changed

  • Warp file sync reduced from one storage query per warp to a single bulk query per sync cycle; significantly faster on servers with large warp counts or remote databases
  • Zone decay and release operations are now proportional to the size of the affected zone rather than the total number of loaded chunks on the server
  • Async load balancer adapts batch sizes based on recent performance rather than a lifetime average that becomes unresponsive after extended uptime
  • Async task queues are now lock-free, reducing contention between threads queuing and processing operations
  • Teleport record checks are batched into a single scheduled task regardless of player count, reducing scheduler overhead at scale
  • Portal disk writes are debounced and written asynchronously; no longer blocks on file I/O during active teleportation
  • Proximity distance checks optimised to avoid unnecessary floating-point operations on every player position update
  • Startup poll scheduler is cancelled immediately once worlds are ready rather than continuing to fire unnecessarily

Configuration

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

  • stagedLoadConcurrency — number of WARM zones loaded concurrently at startup (default: 3)

Changed

  • Default activation distances tightened: horizontal 16 → 10, vertical 8 → 3