Updates and connector check
Update the connector core and verify advertised capabilities
Current release
Each family has its own connector and its own version line. Download either from Admin → Game Servers; the page offers the one your server was created for.
| L2J core | L2Off connector | |
|---|---|---|
| Current | 1.0.0 | 1.0.0 |
| Runtime | Java 17 or newer | Node 22 or newer |
| Artifact | portal-connector-core-<version>.jar | portal-connector-pts-<version>.mjs |
| Dependency | minimal-json-0.9.5.jar | none |
Both speak protocol v1 and need outbound WSS to wss.forgeport.net:443.
The two version lines are independent: an L2Off connector is not behind
because the L2J core is further along, and neither can run the other's
artifact.
Version status
The connector handshake reports its version in the protocol field named
adapterVersion. The field name is retained for protocol compatibility; it
does not mean Forgeport supplies a pack-specific adapter. Forgeport compares
the value with the release catalog of that server's family and displays one
of the following states in Admin → Game Servers:
- Core up to date
- Core update available
- Unsupported core build
Pack name, chronicle, and revision are not part of protocol v1.
Update a JAR installation
- Download the latest connector core from Admin → Game Servers.
- Stop the game server.
- Remove the previous
portal-connector-core-<version>.jar. - Add the new JAR.
- Rebuild if the pack bundles dependencies during compilation.
- Start the game server and confirm the reported version.
- Run Connector check.
Keep only one connector core version on the classpath.
A new core may add an interface method. Compile the bridge against the new JAR before deploying it, and advertise a new capability only after its method is implemented.
Recompile the bridge
Forgeport does not publish a pack-specific adapter. The bridge remains part of the game server source and must compile against the installed connector core.
- Stop the game server.
- Replace the connector core JAR with the new version.
- Compile the game server and its bridge against that JAR.
- Implement any required interface change before starting the server.
- Start the game server, confirm the reported version, and run Connector check.
Keep one connector core version on the build and runtime classpath.
Update an L2Off connector
- Download the latest connector from Admin → Game Servers.
- Stop the running connector process.
- Replace the previous
portal-connector-pts-<version>.mjsnext toportal.toml. - When the release notes name a profile change, regenerate
portal.tomlfrom Admin → Game Servers and carry your own paths, credentials, and edited queries across. - Start the connector, confirm the reported version, and run Connector check.
Connector check coverage
The check uses the capabilities reported by the connected bridge.
| Capability | Check |
|---|---|
GET_SERVER_STATUS | Confirms an active, ready connection |
GET_ONLINE_COUNT | Confirms that a heartbeat contains an online count |
VERIFY_GAME_CREDENTIALS | Submits a non-existent account and expects a clean rejection. If you supply a test account name, a second row reports whether that name exists in the account database — a missing name and a wrong password are the same message to a player and completely different fixes |
LIST_ACCOUNT_CHARACTERS | Requests a non-existent account and accepts an empty list |
LIST_RANKINGS | Requests one PvP ranking row |
SEARCH_GAME_CATALOG | Searches the item catalog |
SEARCH_SKILL_CATALOG | Searches the skill catalog |
DELIVER_ITEM_GRANT | Delivers one Adena to the selected online character |
DELIVER_SKILL_GRANT | Not exercised — a granted skill cannot be taken back |
CHARACTER_SERVICES | Sets the selected online character's gender to its current value. A connector that declines a change doing nothing passes on that answer — it proves the same round trip without writing. A Kamael test character is reported as skipped, since it can never be the target |
PLAYER_ONLINE_EVENT | Verified by the installed EnterWorld hook during integration |
UNSTUCK_CHARACTER | Runs the configured unstuck operation for the selected character |
DELIVER_ITEM_GRANT, CHARACTER_SERVICES, and UNSTUCK_CHARACTER require a game
account and character ID.
State-changing checks
The grant check adds one Adena. The unstuck check moves the character to the
recovery coordinates the bridge or [delivery.unstuck] defines — where the
declared window is offline, an online character is refused instead, and the
check reports the refusal as a confirmed round trip rather than a failure.
Use a designated test character.
Connector check is not proof that a capability works
It proves the connector answers, that the command reaches it, and that the
query is pointed somewhere real. It cannot prove a player receives anything —
on an L2Off pack a delivery queue nobody collects answers exactly like one that
works, and a wrong passwordFormat agrees with itself perfectly.
Once per pack, per capability: do the thing from the portal and confirm it in the game client.
CREATE_GAME_ACCOUNT and DELIVER_SKILL_GRANT are not exercised by Connector
check. Both change state in a way the check cannot undo — a created account
lingers, a granted skill has no revocation path at all.