Ctrl+K

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

ProjectRole
L2JEvolution.GeoEnginePluggable geodata engine — L2D / H format loaders
L2JEvolution.EventsEngineScripted 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.