Project Structure
The server is split into independent Ant projects, each producing its own class output. They share a classpath at build time — the Engine depends on Core, not the reverse.
L2JEvolution.HighFive — Core
L2JEvolution.HighFive/
├── build.xml Ant build, release=25
├── java/l2r/
│ ├── Config.java Master config class — calls fromIni(PropertiesParser) per section
│ ├── config/loader/
│ │ ├── ConfigLoader.java Interface: supports(path) / load(path)
│ │ ├── MultiFormatLoader Public API — load() and loadProperties()
│ │ └── TomlConfigLoader Jackson TomlMapper → flatten tree → PropertiesParser
│ ├── gameserver/
│ │ ├── GameServer.java Startup entry point
│ │ ├── datatables/ Singleton data stores (ItemTable, NpcTable, SkillTable …)
│ │ ├── model/ L2Object hierarchy (L2Character, L2PcInstance, L2Npc …)
│ │ ├── handler/ Skill / item / chat / bypass handler registries
│ │ └── instancemanager/ Zone, siege, event instance managers
│ └── loginserver/ Login / authentication (separate thread group)
├── datapack/ XML data — items, NPCs, skills, spawns, HTML
└── config/
└── main/ Server.toml, Rates.toml, General.toml, AI.toml …
L2JEvolution.Engine
L2JEvolution.Engine/
├── build.xml Classpath references HighFive/bin
├── java/l2r/
│ ├── fake/ FakePlayerManager — bot simulation layer
│ ├── features/ Engine hooks into core event points
│ └── gameserver/
│ ├── communitybbs/ Community board bypass handler implementations
│ └── model/ Model extensions (custom fields on L2PcInstance etc.)
└── java/ro/
└── <module>/ One package per feature module
├── <Module>Configs.java extends AbstractConfigs
├── <Module>Manager.java singleton, init() entry point
└── handler/ (optional) community board / event handlers
Other Projects
| Project | Role |
|---|---|
L2JEvolution.GeoEngine | Pluggable geodata engine — L2D / H format loaders |
L2JEvolution.EventsEngine | Scripted event framework (TvT, CTF, DM, OlyEngine …) |
scripts/ | Quest handlers, NPC interaction scripts, skill scripts |
Config Folder Layout
config/
├── main/ Core server configs
│ ├── Server.toml
│ ├── Rates.toml
│ ├── General.toml
│ ├── GeoEngine.toml
│ └── …
└── l2jdrmods/ Engine module configs (one file per module)
├── PremiumService.toml
├── SecuritySystem.toml
├── AioItems.toml
└── …
Build Output
L2JEvolution.HighFive/bin/ → core .class files
L2JEvolution.Engine/bin/ → engine .class files
lib/ → shared JAR dependencies
Both bin/ directories are placed on the JVM -cp at runtime.