THE LARGEST LINEAGE 2 SERVER COMMUNITYYOUR LINEAGE 2 COMMUNITY

  • +10,000 PLAYERS
  • VERIFIED SERVERS
  • DAILY UPDATES
CHOOSE YOUR NEXT ADVENTURE
EXPLORE L2CALENDAR

What are you looking for?

Search the sections of the site.

TOP SERVERS

Discover the featured Lineage 2 servers.

Blog

Guides, articles and tips for your next adventure.

Vlog

Videos, sieges, PvP and community moments.

Links

Clients, downloads and resources for Lineage 2.

Streamers

Find community streams.

Recruitment

Clan and constant party (CP) recruitment hub.

Buy VIP (AUTO)

Visit the VIP placement page.

Add server (Free)

List your server on the calendar.

Extend VIP time

Renew your VIP listing.

9 sections found.

Lineage 2 NPC Spawn Edit: How to Add, Fix and Remove Spawns

L2Calendar Team5 min read
Lineage 2 NPC Spawn Edit: A Practical Guide for Owners

A lineage 2 npc spawn edit sounds simple until the NPC you placed vanishes on restart, or the guard you deleted walks back into town the next morning. Most of that pain comes from two things: not knowing which admin command makes a spawn permanent, and editing the wrong storage. This guide covers both for L2J-family emulators. Commands and file paths change from build to build, so check your own pack's source before trusting any name here.

Know where your emulator keeps spawns

Before you touch anything in game, find out what your server reads at startup. The chronicle doesn't decide this. The emulator branch does.

  • Classic L2J (SQL spawns). Spawns live in two database tables, spawnlist and custom_spawnlist. Each row holds count, npc_templateid, locx, locy, locz, heading, respawn_delay, respawn_random, loc_id, periodOfDay. Rows in the custom table may reuse IDs from the stock one.
  • L2J Mobius and newer branches (XML spawns). Spawns are XML files under dist/game/data/spawns/<Region>/, validated against xsd/spawns.xsd.
  • Other forks (aCis and friends). They use their own layout. Open the spawn loader in the source and follow it to the files it parses rather than guessing.

A Mobius-style spawn entry looks like this (from a 2022 Fafurion-era diff, so your schema may differ slightly):

<list>
  <spawn name="BalthusKnights">
    <group>
      <npc id="34359" x="190569" y="168057" z="-11228" heading="29292" respawnTime="60sec" />
    </group>
  </spawn>
</list>
StorageWhereSurvives a datapack update?
spawnlist (SQL)Game databaseNo. Updates rewrite it.
custom_spawnlist (SQL)Game databaseYes. Updates leave it alone.
XML spawn filesdata/spawns/<Region>/Only if you track your edits (a separate file or your own git branch)
Lineage 2 NPC Spawn Edit: A Practical Guide for Owners
Lineage II © NCSOFT

Adding NPCs in game: //spawn vs //spawn_once

On L2J Server (the High Five datapack), AdminSpawn.java handles placement. The core syntax is:

//spawn <id> [count] [respawnTime]

Order matters. The respawn time is only read if you also give a count, so //spawn 20001 60 does not mean "respawn every 60". It means 60 of them. Write //spawn 20001 1 60 instead.

The difference between the variants is permanence:

  1. //spawn and //spawn_monster add the spawn as permanent, so it is meant to come back after a restart.
  2. //spawn_once adds a non-permanent spawn and stops its respawn. Kill it and it stays dead. Good for event bosses, test mobs and one-off GM shows.
  3. Anything spawned while you stand inside an instance is always non-permanent, whatever command you used. If your new NPC disappears, check you weren't in an instance when you placed it.

The same handler also registers //show_spawns, //list_spawns, //list_positions, //unspawnall, //respawnall, //spawnday and //spawnnight. Run //list_spawns before you start placing things, so you know what already stands there and don't stack a second copy of an NPC on top of the first.

Tip: stand exactly where you want the NPC and face the direction it should face before you type the command. Retyping coordinates by hand later is where most misplaced NPCs come from.

Respawn timers and day or night spawns

Respawn is controlled by a delay plus an optional random spread. In the SQL layout that is respawn_delay and respawn_random. In Mobius XML it is the respawnTime attribute, written with a unit, like respawnTime="60sec".

Two rules worth remembering, per Mobius-based spawn manager docs:

  • Respawn only turns on when the delay is above 0. A delay of 0 means the NPC does not come back after death.
  • If the minimum and maximum delay differ, the server picks a random value between them. That spread is how you stop campers from timing a mob to the second.

For night-only or day-only NPCs on SQL-based L2J, use periodOfDay: 0 is always, 1 is day only, 2 is night only. The //spawnday and //spawnnight commands are named for those day and night spawn sets. Check what they do in your build before you lean on them for testing.

Lineage 2 NPC Spawn Edit: A Practical Guide for Owners (2)
Lineage II © NCSOFT

Deleting NPCs that keep coming back

Target the NPC and use //delete. On L2J Server, AdminDelete.java removes the live instance, calls stopRespawn(), and removes the spawn from SpawnTable, or from RaidBossSpawnManager if it's a raid boss.

What we couldn't confirm is whether this also deletes the database row in current builds. And in XML-based branches, the file on disk is what gets loaded at startup. So if a deleted NPC is back after a restart, assume the stored entry survived and remove it at the source:

  1. Note the NPC ID and rough coordinates before deleting (//list_spawns helps here).
  2. Find the matching row in spawnlist or custom_spawnlist, or the matching <npc> line in the region's XML file.
  3. Remove it there, then restart or reload spawns.
  4. If it came from spawnlist, write the change down. The next datapack update can put it right back.

Reloading after an edit: what applies live

This one catches a lot of people. On L2J Server, //reload npc reloads NPC templates through NpcData.load(). It does not reload spawn positions, and there is no spawn type under //reload at all. The supported types include config, npc, quest, htm, multisell, buylist, skill, item, door, zone and effect.

For spawns there is a separate command, //spawn_reload. A rough rule of thumb:

  • Changed an NPC template: //reload npc (and //reload htm if you edited its HTML pages).
  • Changed spawn rows or spawn files: //spawn_reload.
  • Changed a lot at once on a live server: do it in a maintenance window and restart. Mass reloads with players online are a good way to end up with doubled mobs you then have to clean up by hand.

A safe workflow for spawn edits

  1. Back up the spawn tables or the data/spawns folder before every editing session.
  2. Put your own NPCs in custom_spawnlist, or in a dedicated XML file you own, never inline in the stock files.
  3. Place in game with //spawn, test the respawn with a kill, then restart a test server to prove it persists.
  4. Keep a changelog of the IDs and coordinates you added or removed, so you can redo them after an emulator update.

Once your world is clean and your custom NPCs are stable, players still need to find the server. List your server on L2Calendar for free so it shows up in the opening calendar. If you want more eyes on launch week, VIP placement puts it higher in the listings.

Frequently asked questions

What is the difference between //spawn and //spawn_once?
On L2J Server, //spawn (and //spawn_monster) adds the spawn as permanent. //spawn_once adds a non-permanent spawn and stops its respawn, so once it dies it stays dead. Anything spawned while the GM is inside an instance is always non-permanent.
Should I edit spawnlist or custom_spawnlist?
On SQL-based L2J, put your own NPCs in custom_spawnlist. Datapack updates leave that table alone, while spawnlist can be rewritten by an update. XML-based branches like L2J Mobius store spawns in files under data/spawns, so keep your additions in a file you own and track your edits.
Why did an NPC I removed with //delete come back after a restart?
//delete removes the live NPC, stops its respawn and removes it from the in-memory spawn table, but the stored entry may survive depending on your build. Find the matching row in spawnlist or custom_spawnlist, or the npc line in the XML spawn file, and remove it there.
Does //reload npc apply spawn changes?
No. On L2J Server, //reload npc reloads NPC templates through NpcData.load(), and //reload has no spawn type. Use the separate //spawn_reload command for spawn changes, or restart during maintenance for large edits.

Lineage 2 Top Private Servers & Openings List

L2Calendar is the premier Lineage 2 private servers top list and calendar for the legendary MMORPG Lineage II. Whether you are looking for upcoming L2 Interlude servers, new High Five launches, or Classic server announcements, our platform tracks all top private server openings in one place.

Stay updated with the best Lineage 2 top servers. Our calendar displays upcoming openings, server rates from low-rate craft to mass PvP, chronicles, and launch times. Never miss a top L2 server opening — bookmark L2Calendar and check back daily for fresh Lineage 2 server announcements.

Looking for the perfect L2 server? Browse our complete list of Lineage 2 top private servers opening soon in 2025/2026. From low-rate craft servers to high-rate PvP realms, find your next Lineage II adventure here.