Lineage 2 custom server content: how to add custom items without breaking the client

Most lineage 2 custom server content breaks in the same place: the server knows about the new item, the client does not. A custom weapon or armor piece is two jobs, not one. You define it on the server, then you teach every player's client what it looks like. Skip the second half and players get a blank name or a missing icon. This guide walks through both halves for an L2J-style Interlude server, plus how to sell the item and ship the patch.
What a custom item actually consists of
Interlude (C6) launched in NA/EU on April 12, 2007, and it is still the chronicle most private servers customize. The classic L2J layout for that era splits a custom item across several files. A well-known MaxCheaters guide sums it up as "a sql file for your database, an xml file for the server and the final dat file for the client."
| Layer | File | What it holds |
|---|---|---|
| Server | Item XML in the datapack | Stats and item behavior |
| Database (older L2J builds) | Row in the weapon, armor or etcitem table | Item definition on builds that still use SQL tables |
| Client | system/itemname-e.dat | Item ID, name, description |
| Client | weapongrp.dat, armorgrp.dat or etcitemgrp.dat | Mesh, texture, icon, equip and drop sounds |
Newer builds dropped the SQL tables, and folder names differ between packs. Treat any path you read in a 15-year-old forum thread as a hint, then check where your own build (Mobius, aCis or another fork) keeps item XML before you copy anything.

Step by step: adding one custom weapon
Pick a single item and get it working end to end before you build a whole set. The order below follows the MaxCheaters walkthrough.
- Choose an unused ID. The guide uses 99999. Whatever you pick, search your datapack and client files first. Reusing an existing ID is one of the classic ways to break things.
- Back up the client .dat files. Copy
itemname-e.datand the matching grp file somewhere safe. You will break one at some point. - Add the server definition. Write the item XML with your stats. On an older L2J build, also insert the SQL row for the same ID.
- Add the name entry. Decrypt
itemname-e.dat, add a line with the ID, name and description, and leave a blank line after the last entry. - Add the visual entry. In
weapongrp.dat, add the same ID and point it at a mesh, texture and icon. Reusing stock assets is the easy route for a first item. - Re-encrypt and test. Save both files, restart the server, log in with a GM character and run
//create_item 99999.
The ID has to be identical in every one of these places: server XML, SQL row (if your build has one), itemname-e.dat and the grp file. One typo and the item exists on the server but shows up wrong or not at all in the client.
Editing .dat files without corrupting the client
Client .dat files are encrypted, so you need a tool to decrypt, edit and re-encrypt them. The Interlude-era guides use L2FileEdit or l2encdec and save the files as version 413. Open-source options like open-l2encdec and acmi's L2crypt also handle the 41x family of headers.
Match the encryption version to the client you actually ship. In one thread, a Gracia Final user got errors after following Interlude steps. 413 is the common choice for Interlude, but confirm it against your own client before you push a patch.
Most broken patches come from small mistakes:
- Columns and spacing. These files are column-based. A missing or extra space shifts the values after it and the client reads garbage.
- No trailing blank line. The guides warn about it for a reason. Add it every time.
- Tool version. Interlude admins on l2jbrasil and RaGEZONE report that the newer FileEdit build turned dual weapons into single swords or failed to compile
weapongrp.dat. Many stick to the older build for that reason. These are community reports, so test duals specifically if you add them.
Keep a clean, unmodified copy of the client system folder next to your working copy. When something renders wrong, comparing against stock is faster than guessing.

Getting custom items to players with multisell
An item players cannot get is just a test object. On L2J datapacks the usual way to hand items out is a multisell shop, typically opened from a GM shop NPC. Each multisell is an XML file named after its numeric ID, so shop 9000 lives in 9000.xml.
Every entry has two parts. Ingredients are what the player pays, whether that's adena, another item or a stack of materials. Products are what they get. That makes multisell a natural fit for upgrade paths: trade a stock weapon plus materials for your custom version.
Two flags matter for custom gear:
applyTaxesdefaults to false. Turn it on and adena prices get taxed, with the revenue going to the castle that owns the territory. Worth considering if your server has active sieges.maintainEnchantmentdefaults to false. When it's on, the enchant level carries over to the product, but only in the inventory-only (exc_multisell) mode. If players trade a +10 weapon up and the result comes out at +0, check this flag and the shop mode first.
Price custom items against your server's real economy, not in a vacuum. A shop that sells top-tier gear for adena on day two makes the rest of your progression pointless.
Shipping the client patch to players
The edited .dat files live in the client system folder, so every player needs your patched files to see custom items correctly. There is no way around that. Plan for it from the start:
- Ship the system folder or a clear patch archive, with install steps written for someone who has never touched a .dat file.
- Version your patches. When you add items later, players need to know their patch is outdated before they report "invisible weapons" on Discord.
- Only distribute files you built yourself from a clean base, and publish checksums. Players are rightly nervous about running random system folders from the internet.
- Keep client changes small. Every custom item adds to the patch, and every patch update is a chance for players to drop off.
Be honest with yourself about scope, too. Custom items give a server an identity, but they don't replace stable rates and a working economy. Plenty of servers with long custom item lists died because the basics weren't there. And all of this sits on NCsoft's IP, a legal risk every private server owner carries.
List the server once the content is live
Once your custom items are tested, the patch is packaged and the shops are priced, the next problem is players. Add your server to L2Calendar for free so people searching for your chronicle can find it. Mention your custom content and your patch in the description so players know up front what to download. If you want more visibility around launch, VIP placement puts your listing higher on the page.
