Overview
L2J Evolution is a Lineage 2 High Five Java server emulator. It is based on the L2jServer project and extends it with a redesigned configuration system, a structured data layer, and a modular engine.
Credits: The foundational emulation layer — including network protocol, AI, geodata, and core gameplay systems —
is based on the L2jServer project, maintained by Zoey76. L2J Evolution extends this work with its own systems,
improvements, and architecture, while respecting the original codebase as its core reference.
Key Characteristics
| Area | Approach |
|---|---|
| Configuration | TOML-only. No INI files. One file per module. |
| Config binding | Typed static fields loaded via MultiFormatLoader and AbstractConfigs |
| Data layer | Parser → Repository → Service. Clean separation of loading and runtime logic. |
| Modularity | Core and Engine are separate compilation units. Engine adds zero overhead when modules are disabled. |
| GC | ZGC generational (-XX:+UseZGC -XX:+ZGenerational). Sub-millisecond pause times. |
| Anti-bot | FunGuard — native C++ DLL, protocol-level enforcement. |
| Build | Apache Ant. release=25. Two independent Ant projects. |
Architecture Comparison
| L2jServer | L2J Mobius | L2J Evolution | |
|---|---|---|---|
| Java | 25 | 25 | 25 |
| Config format | .ini via owner library |
.ini static fields |
TOML only — MultiFormatLoader |
| Config binding | @Sources / @HotReload on interfaces |
static parse in ConfigReader |
typed static fields, one class per module |
| Modularity | monolithic core | monolithic core | Engine = separate compile unit, zero core modification |
| GC strategy | G1GC (default) | G1GC (default) | ZGC generational — sub-millisecond pauses |
| Anti-bot | none | none | FunGuard — native DLL, protocol-level |
| Code style | OOP, Dependency Injection | static utility heavy | static managers, explicit init order, fail-fast defaults |
Project Components
- L2JEvolution.HighFive — Core server. Network, AI, geodata, config loader, data tables.
- L2JEvolution.Engine — Addon and feature layer. Separate compile unit, depends on Core.
- L2JEvolution.GeoEngine — Geodata engine (pluggable).
- L2JEvolution.EventsEngine — Event framework for scripted events.
- scripts/ — Quest handlers, NPC handlers, skill handlers.
- datapack/ — XML data (items, NPCs, skills, spawns, HTML).