Make use of original spawn location for deletion and info.

This commit is contained in:
MobiusDevelopment 2022-08-12 23:03:47 +00:00
parent 35e9f2dd5a
commit 569faf521d
59 changed files with 238 additions and 171 deletions

View File

@ -128,8 +128,7 @@ public class NpcActionShift implements IActionShiftHandler
} }
html.replace("%spawnai%", "<font color=FF0000>" + template.getSpawnTemplate().getAI() + "</font>"); html.replace("%spawnai%", "<font color=FF0000>" + template.getSpawnTemplate().getAI() + "</font>");
} }
html.replace("%spawn%", (template != null ? template.getSpawnLocation().getX() : npc.getSpawn().getX()) + " " + (template != null ? template.getSpawnLocation().getY() : npc.getSpawn().getY()) + " " + (template != null ? template.getSpawnLocation().getZ() : npc.getSpawn().getZ()));
html.replace("%spawn%", npc.getSpawn().getX() + " " + npc.getSpawn().getY() + " " + npc.getSpawn().getZ());
if (npc.getSpawn().getRespawnMinDelay() == 0) if (npc.getSpawn().getRespawnMinDelay() == 0)
{ {
html.replace("%resp%", "None"); html.replace("%resp%", "None");

View File

@ -32,6 +32,7 @@ import org.l2jmobius.Config;
import org.l2jmobius.gameserver.data.xml.NpcData; import org.l2jmobius.gameserver.data.xml.NpcData;
import org.l2jmobius.gameserver.model.Spawn; import org.l2jmobius.gameserver.model.Spawn;
import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.spawns.NpcSpawnTemplate;
/** /**
* Spawn data retriever. * Spawn data retriever.
@ -194,16 +195,17 @@ public class SpawnTable
{ {
final int x = ((spawn.getX() - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN; final int x = ((spawn.getX() - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN;
final int y = ((spawn.getY() - World.WORLD_Y_MIN) >> 15) + World.TILE_Y_MIN; final int y = ((spawn.getY() - World.WORLD_Y_MIN) >> 15) + World.TILE_Y_MIN;
final File spawnFile = spawn.getNpcSpawnTemplate() != null ? spawn.getNpcSpawnTemplate().getSpawnTemplate().getFile() : new File(OTHER_XML_FOLDER + "/" + x + "_" + y + ".xml"); final NpcSpawnTemplate npcSpawnTemplate = spawn.getNpcSpawnTemplate();
final File spawnFile = npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnTemplate().getFile() : new File(OTHER_XML_FOLDER + "/" + x + "_" + y + ".xml");
final File tempFile = new File(spawnFile.getAbsolutePath().substring(Config.DATAPACK_ROOT.getAbsolutePath().length() + 1).replace('\\', '/') + ".tmp"); final File tempFile = new File(spawnFile.getAbsolutePath().substring(Config.DATAPACK_ROOT.getAbsolutePath().length() + 1).replace('\\', '/') + ".tmp");
try try
{ {
final BufferedReader reader = new BufferedReader(new FileReader(spawnFile)); final BufferedReader reader = new BufferedReader(new FileReader(spawnFile));
final BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile)); final BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile));
final String spawnId = String.valueOf(spawn.getId()); final String spawnId = String.valueOf(spawn.getId());
final String spawnX = String.valueOf(spawn.getX()); final String spawnX = String.valueOf(npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnLocation().getX() : spawn.getX());
final String spawnY = String.valueOf(spawn.getY()); final String spawnY = String.valueOf(npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnLocation().getY() : spawn.getY());
final String spawnZ = String.valueOf(spawn.getZ()); final String spawnZ = String.valueOf(npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnLocation().getZ() : spawn.getZ());
boolean found = false; // in XML you can have more than one spawn with same coords boolean found = false; // in XML you can have more than one spawn with same coords
boolean isMultiLine = false; // in case spawn has more stats boolean isMultiLine = false; // in case spawn has more stats
boolean lastLineFound = false; // used to check for empty file boolean lastLineFound = false; // used to check for empty file

View File

@ -128,8 +128,7 @@ public class NpcActionShift implements IActionShiftHandler
} }
html.replace("%spawnai%", "<font color=FF0000>" + template.getSpawnTemplate().getAI() + "</font>"); html.replace("%spawnai%", "<font color=FF0000>" + template.getSpawnTemplate().getAI() + "</font>");
} }
html.replace("%spawn%", (template != null ? template.getSpawnLocation().getX() : npc.getSpawn().getX()) + " " + (template != null ? template.getSpawnLocation().getY() : npc.getSpawn().getY()) + " " + (template != null ? template.getSpawnLocation().getZ() : npc.getSpawn().getZ()));
html.replace("%spawn%", npc.getSpawn().getX() + " " + npc.getSpawn().getY() + " " + npc.getSpawn().getZ());
if (npc.getSpawn().getRespawnMinDelay() == 0) if (npc.getSpawn().getRespawnMinDelay() == 0)
{ {
html.replace("%resp%", "None"); html.replace("%resp%", "None");

View File

@ -32,6 +32,7 @@ import org.l2jmobius.Config;
import org.l2jmobius.gameserver.data.xml.NpcData; import org.l2jmobius.gameserver.data.xml.NpcData;
import org.l2jmobius.gameserver.model.Spawn; import org.l2jmobius.gameserver.model.Spawn;
import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.spawns.NpcSpawnTemplate;
/** /**
* Spawn data retriever. * Spawn data retriever.
@ -194,16 +195,17 @@ public class SpawnTable
{ {
final int x = ((spawn.getX() - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN; final int x = ((spawn.getX() - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN;
final int y = ((spawn.getY() - World.WORLD_Y_MIN) >> 15) + World.TILE_Y_MIN; final int y = ((spawn.getY() - World.WORLD_Y_MIN) >> 15) + World.TILE_Y_MIN;
final File spawnFile = spawn.getNpcSpawnTemplate() != null ? spawn.getNpcSpawnTemplate().getSpawnTemplate().getFile() : new File(OTHER_XML_FOLDER + "/" + x + "_" + y + ".xml"); final NpcSpawnTemplate npcSpawnTemplate = spawn.getNpcSpawnTemplate();
final File spawnFile = npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnTemplate().getFile() : new File(OTHER_XML_FOLDER + "/" + x + "_" + y + ".xml");
final File tempFile = new File(spawnFile.getAbsolutePath().substring(Config.DATAPACK_ROOT.getAbsolutePath().length() + 1).replace('\\', '/') + ".tmp"); final File tempFile = new File(spawnFile.getAbsolutePath().substring(Config.DATAPACK_ROOT.getAbsolutePath().length() + 1).replace('\\', '/') + ".tmp");
try try
{ {
final BufferedReader reader = new BufferedReader(new FileReader(spawnFile)); final BufferedReader reader = new BufferedReader(new FileReader(spawnFile));
final BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile)); final BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile));
final String spawnId = String.valueOf(spawn.getId()); final String spawnId = String.valueOf(spawn.getId());
final String spawnX = String.valueOf(spawn.getX()); final String spawnX = String.valueOf(npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnLocation().getX() : spawn.getX());
final String spawnY = String.valueOf(spawn.getY()); final String spawnY = String.valueOf(npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnLocation().getY() : spawn.getY());
final String spawnZ = String.valueOf(spawn.getZ()); final String spawnZ = String.valueOf(npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnLocation().getZ() : spawn.getZ());
boolean found = false; // in XML you can have more than one spawn with same coords boolean found = false; // in XML you can have more than one spawn with same coords
boolean isMultiLine = false; // in case spawn has more stats boolean isMultiLine = false; // in case spawn has more stats
boolean lastLineFound = false; // used to check for empty file boolean lastLineFound = false; // used to check for empty file

View File

@ -128,8 +128,7 @@ public class NpcActionShift implements IActionShiftHandler
} }
html.replace("%spawnai%", "<font color=FF0000>" + template.getSpawnTemplate().getAI() + "</font>"); html.replace("%spawnai%", "<font color=FF0000>" + template.getSpawnTemplate().getAI() + "</font>");
} }
html.replace("%spawn%", (template != null ? template.getSpawnLocation().getX() : npc.getSpawn().getX()) + " " + (template != null ? template.getSpawnLocation().getY() : npc.getSpawn().getY()) + " " + (template != null ? template.getSpawnLocation().getZ() : npc.getSpawn().getZ()));
html.replace("%spawn%", npc.getSpawn().getX() + " " + npc.getSpawn().getY() + " " + npc.getSpawn().getZ());
if (npc.getSpawn().getRespawnMinDelay() == 0) if (npc.getSpawn().getRespawnMinDelay() == 0)
{ {
html.replace("%resp%", "None"); html.replace("%resp%", "None");

View File

@ -32,6 +32,7 @@ import org.l2jmobius.Config;
import org.l2jmobius.gameserver.data.xml.NpcData; import org.l2jmobius.gameserver.data.xml.NpcData;
import org.l2jmobius.gameserver.model.Spawn; import org.l2jmobius.gameserver.model.Spawn;
import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.spawns.NpcSpawnTemplate;
/** /**
* Spawn data retriever. * Spawn data retriever.
@ -194,16 +195,17 @@ public class SpawnTable
{ {
final int x = ((spawn.getX() - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN; final int x = ((spawn.getX() - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN;
final int y = ((spawn.getY() - World.WORLD_Y_MIN) >> 15) + World.TILE_Y_MIN; final int y = ((spawn.getY() - World.WORLD_Y_MIN) >> 15) + World.TILE_Y_MIN;
final File spawnFile = spawn.getNpcSpawnTemplate() != null ? spawn.getNpcSpawnTemplate().getSpawnTemplate().getFile() : new File(OTHER_XML_FOLDER + "/" + x + "_" + y + ".xml"); final NpcSpawnTemplate npcSpawnTemplate = spawn.getNpcSpawnTemplate();
final File spawnFile = npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnTemplate().getFile() : new File(OTHER_XML_FOLDER + "/" + x + "_" + y + ".xml");
final File tempFile = new File(spawnFile.getAbsolutePath().substring(Config.DATAPACK_ROOT.getAbsolutePath().length() + 1).replace('\\', '/') + ".tmp"); final File tempFile = new File(spawnFile.getAbsolutePath().substring(Config.DATAPACK_ROOT.getAbsolutePath().length() + 1).replace('\\', '/') + ".tmp");
try try
{ {
final BufferedReader reader = new BufferedReader(new FileReader(spawnFile)); final BufferedReader reader = new BufferedReader(new FileReader(spawnFile));
final BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile)); final BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile));
final String spawnId = String.valueOf(spawn.getId()); final String spawnId = String.valueOf(spawn.getId());
final String spawnX = String.valueOf(spawn.getX()); final String spawnX = String.valueOf(npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnLocation().getX() : spawn.getX());
final String spawnY = String.valueOf(spawn.getY()); final String spawnY = String.valueOf(npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnLocation().getY() : spawn.getY());
final String spawnZ = String.valueOf(spawn.getZ()); final String spawnZ = String.valueOf(npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnLocation().getZ() : spawn.getZ());
boolean found = false; // in XML you can have more than one spawn with same coords boolean found = false; // in XML you can have more than one spawn with same coords
boolean isMultiLine = false; // in case spawn has more stats boolean isMultiLine = false; // in case spawn has more stats
boolean lastLineFound = false; // used to check for empty file boolean lastLineFound = false; // used to check for empty file

View File

@ -128,8 +128,7 @@ public class NpcActionShift implements IActionShiftHandler
} }
html.replace("%spawnai%", "<font color=FF0000>" + template.getSpawnTemplate().getAI() + "</font>"); html.replace("%spawnai%", "<font color=FF0000>" + template.getSpawnTemplate().getAI() + "</font>");
} }
html.replace("%spawn%", (template != null ? template.getSpawnLocation().getX() : npc.getSpawn().getX()) + " " + (template != null ? template.getSpawnLocation().getY() : npc.getSpawn().getY()) + " " + (template != null ? template.getSpawnLocation().getZ() : npc.getSpawn().getZ()));
html.replace("%spawn%", npc.getSpawn().getX() + " " + npc.getSpawn().getY() + " " + npc.getSpawn().getZ());
if (npc.getSpawn().getRespawnMinDelay() == 0) if (npc.getSpawn().getRespawnMinDelay() == 0)
{ {
html.replace("%resp%", "None"); html.replace("%resp%", "None");

View File

@ -32,6 +32,7 @@ import org.l2jmobius.Config;
import org.l2jmobius.gameserver.data.xml.NpcData; import org.l2jmobius.gameserver.data.xml.NpcData;
import org.l2jmobius.gameserver.model.Spawn; import org.l2jmobius.gameserver.model.Spawn;
import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.spawns.NpcSpawnTemplate;
/** /**
* Spawn data retriever. * Spawn data retriever.
@ -194,16 +195,17 @@ public class SpawnTable
{ {
final int x = ((spawn.getX() - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN; final int x = ((spawn.getX() - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN;
final int y = ((spawn.getY() - World.WORLD_Y_MIN) >> 15) + World.TILE_Y_MIN; final int y = ((spawn.getY() - World.WORLD_Y_MIN) >> 15) + World.TILE_Y_MIN;
final File spawnFile = spawn.getNpcSpawnTemplate() != null ? spawn.getNpcSpawnTemplate().getSpawnTemplate().getFile() : new File(OTHER_XML_FOLDER + "/" + x + "_" + y + ".xml"); final NpcSpawnTemplate npcSpawnTemplate = spawn.getNpcSpawnTemplate();
final File spawnFile = npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnTemplate().getFile() : new File(OTHER_XML_FOLDER + "/" + x + "_" + y + ".xml");
final File tempFile = new File(spawnFile.getAbsolutePath().substring(Config.DATAPACK_ROOT.getAbsolutePath().length() + 1).replace('\\', '/') + ".tmp"); final File tempFile = new File(spawnFile.getAbsolutePath().substring(Config.DATAPACK_ROOT.getAbsolutePath().length() + 1).replace('\\', '/') + ".tmp");
try try
{ {
final BufferedReader reader = new BufferedReader(new FileReader(spawnFile)); final BufferedReader reader = new BufferedReader(new FileReader(spawnFile));
final BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile)); final BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile));
final String spawnId = String.valueOf(spawn.getId()); final String spawnId = String.valueOf(spawn.getId());
final String spawnX = String.valueOf(spawn.getX()); final String spawnX = String.valueOf(npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnLocation().getX() : spawn.getX());
final String spawnY = String.valueOf(spawn.getY()); final String spawnY = String.valueOf(npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnLocation().getY() : spawn.getY());
final String spawnZ = String.valueOf(spawn.getZ()); final String spawnZ = String.valueOf(npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnLocation().getZ() : spawn.getZ());
boolean found = false; // in XML you can have more than one spawn with same coords boolean found = false; // in XML you can have more than one spawn with same coords
boolean isMultiLine = false; // in case spawn has more stats boolean isMultiLine = false; // in case spawn has more stats
boolean lastLineFound = false; // used to check for empty file boolean lastLineFound = false; // used to check for empty file

View File

@ -128,8 +128,7 @@ public class NpcActionShift implements IActionShiftHandler
} }
html.replace("%spawnai%", "<font color=FF0000>" + template.getSpawnTemplate().getAI() + "</font>"); html.replace("%spawnai%", "<font color=FF0000>" + template.getSpawnTemplate().getAI() + "</font>");
} }
html.replace("%spawn%", (template != null ? template.getSpawnLocation().getX() : npc.getSpawn().getX()) + " " + (template != null ? template.getSpawnLocation().getY() : npc.getSpawn().getY()) + " " + (template != null ? template.getSpawnLocation().getZ() : npc.getSpawn().getZ()));
html.replace("%spawn%", npc.getSpawn().getX() + " " + npc.getSpawn().getY() + " " + npc.getSpawn().getZ());
if (npc.getSpawn().getRespawnMinDelay() == 0) if (npc.getSpawn().getRespawnMinDelay() == 0)
{ {
html.replace("%resp%", "None"); html.replace("%resp%", "None");

View File

@ -32,6 +32,7 @@ import org.l2jmobius.Config;
import org.l2jmobius.gameserver.data.xml.NpcData; import org.l2jmobius.gameserver.data.xml.NpcData;
import org.l2jmobius.gameserver.model.Spawn; import org.l2jmobius.gameserver.model.Spawn;
import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.spawns.NpcSpawnTemplate;
/** /**
* Spawn data retriever. * Spawn data retriever.
@ -194,16 +195,17 @@ public class SpawnTable
{ {
final int x = ((spawn.getX() - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN; final int x = ((spawn.getX() - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN;
final int y = ((spawn.getY() - World.WORLD_Y_MIN) >> 15) + World.TILE_Y_MIN; final int y = ((spawn.getY() - World.WORLD_Y_MIN) >> 15) + World.TILE_Y_MIN;
final File spawnFile = spawn.getNpcSpawnTemplate() != null ? spawn.getNpcSpawnTemplate().getSpawnTemplate().getFile() : new File(OTHER_XML_FOLDER + "/" + x + "_" + y + ".xml"); final NpcSpawnTemplate npcSpawnTemplate = spawn.getNpcSpawnTemplate();
final File spawnFile = npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnTemplate().getFile() : new File(OTHER_XML_FOLDER + "/" + x + "_" + y + ".xml");
final File tempFile = new File(spawnFile.getAbsolutePath().substring(Config.DATAPACK_ROOT.getAbsolutePath().length() + 1).replace('\\', '/') + ".tmp"); final File tempFile = new File(spawnFile.getAbsolutePath().substring(Config.DATAPACK_ROOT.getAbsolutePath().length() + 1).replace('\\', '/') + ".tmp");
try try
{ {
final BufferedReader reader = new BufferedReader(new FileReader(spawnFile)); final BufferedReader reader = new BufferedReader(new FileReader(spawnFile));
final BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile)); final BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile));
final String spawnId = String.valueOf(spawn.getId()); final String spawnId = String.valueOf(spawn.getId());
final String spawnX = String.valueOf(spawn.getX()); final String spawnX = String.valueOf(npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnLocation().getX() : spawn.getX());
final String spawnY = String.valueOf(spawn.getY()); final String spawnY = String.valueOf(npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnLocation().getY() : spawn.getY());
final String spawnZ = String.valueOf(spawn.getZ()); final String spawnZ = String.valueOf(npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnLocation().getZ() : spawn.getZ());
boolean found = false; // in XML you can have more than one spawn with same coords boolean found = false; // in XML you can have more than one spawn with same coords
boolean isMultiLine = false; // in case spawn has more stats boolean isMultiLine = false; // in case spawn has more stats
boolean lastLineFound = false; // used to check for empty file boolean lastLineFound = false; // used to check for empty file

View File

@ -128,8 +128,7 @@ public class NpcActionShift implements IActionShiftHandler
} }
html.replace("%spawnai%", "<font color=FF0000>" + template.getSpawnTemplate().getAI() + "</font>"); html.replace("%spawnai%", "<font color=FF0000>" + template.getSpawnTemplate().getAI() + "</font>");
} }
html.replace("%spawn%", (template != null ? template.getSpawnLocation().getX() : npc.getSpawn().getX()) + " " + (template != null ? template.getSpawnLocation().getY() : npc.getSpawn().getY()) + " " + (template != null ? template.getSpawnLocation().getZ() : npc.getSpawn().getZ()));
html.replace("%spawn%", npc.getSpawn().getX() + " " + npc.getSpawn().getY() + " " + npc.getSpawn().getZ());
if (npc.getSpawn().getRespawnMinDelay() == 0) if (npc.getSpawn().getRespawnMinDelay() == 0)
{ {
html.replace("%resp%", "None"); html.replace("%resp%", "None");

View File

@ -32,6 +32,7 @@ import org.l2jmobius.Config;
import org.l2jmobius.gameserver.data.xml.NpcData; import org.l2jmobius.gameserver.data.xml.NpcData;
import org.l2jmobius.gameserver.model.Spawn; import org.l2jmobius.gameserver.model.Spawn;
import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.spawns.NpcSpawnTemplate;
/** /**
* Spawn data retriever. * Spawn data retriever.
@ -194,16 +195,17 @@ public class SpawnTable
{ {
final int x = ((spawn.getX() - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN; final int x = ((spawn.getX() - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN;
final int y = ((spawn.getY() - World.WORLD_Y_MIN) >> 15) + World.TILE_Y_MIN; final int y = ((spawn.getY() - World.WORLD_Y_MIN) >> 15) + World.TILE_Y_MIN;
final File spawnFile = spawn.getNpcSpawnTemplate() != null ? spawn.getNpcSpawnTemplate().getSpawnTemplate().getFile() : new File(OTHER_XML_FOLDER + "/" + x + "_" + y + ".xml"); final NpcSpawnTemplate npcSpawnTemplate = spawn.getNpcSpawnTemplate();
final File spawnFile = npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnTemplate().getFile() : new File(OTHER_XML_FOLDER + "/" + x + "_" + y + ".xml");
final File tempFile = new File(spawnFile.getAbsolutePath().substring(Config.DATAPACK_ROOT.getAbsolutePath().length() + 1).replace('\\', '/') + ".tmp"); final File tempFile = new File(spawnFile.getAbsolutePath().substring(Config.DATAPACK_ROOT.getAbsolutePath().length() + 1).replace('\\', '/') + ".tmp");
try try
{ {
final BufferedReader reader = new BufferedReader(new FileReader(spawnFile)); final BufferedReader reader = new BufferedReader(new FileReader(spawnFile));
final BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile)); final BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile));
final String spawnId = String.valueOf(spawn.getId()); final String spawnId = String.valueOf(spawn.getId());
final String spawnX = String.valueOf(spawn.getX()); final String spawnX = String.valueOf(npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnLocation().getX() : spawn.getX());
final String spawnY = String.valueOf(spawn.getY()); final String spawnY = String.valueOf(npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnLocation().getY() : spawn.getY());
final String spawnZ = String.valueOf(spawn.getZ()); final String spawnZ = String.valueOf(npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnLocation().getZ() : spawn.getZ());
boolean found = false; // in XML you can have more than one spawn with same coords boolean found = false; // in XML you can have more than one spawn with same coords
boolean isMultiLine = false; // in case spawn has more stats boolean isMultiLine = false; // in case spawn has more stats
boolean lastLineFound = false; // used to check for empty file boolean lastLineFound = false; // used to check for empty file

View File

@ -128,8 +128,7 @@ public class NpcActionShift implements IActionShiftHandler
} }
html.replace("%spawnai%", "<font color=FF0000>" + template.getSpawnTemplate().getAI() + "</font>"); html.replace("%spawnai%", "<font color=FF0000>" + template.getSpawnTemplate().getAI() + "</font>");
} }
html.replace("%spawn%", (template != null ? template.getSpawnLocation().getX() : npc.getSpawn().getX()) + " " + (template != null ? template.getSpawnLocation().getY() : npc.getSpawn().getY()) + " " + (template != null ? template.getSpawnLocation().getZ() : npc.getSpawn().getZ()));
html.replace("%spawn%", npc.getSpawn().getX() + " " + npc.getSpawn().getY() + " " + npc.getSpawn().getZ());
if (npc.getSpawn().getRespawnMinDelay() == 0) if (npc.getSpawn().getRespawnMinDelay() == 0)
{ {
html.replace("%resp%", "None"); html.replace("%resp%", "None");

View File

@ -32,6 +32,7 @@ import org.l2jmobius.Config;
import org.l2jmobius.gameserver.data.xml.NpcData; import org.l2jmobius.gameserver.data.xml.NpcData;
import org.l2jmobius.gameserver.model.Spawn; import org.l2jmobius.gameserver.model.Spawn;
import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.spawns.NpcSpawnTemplate;
/** /**
* Spawn data retriever. * Spawn data retriever.
@ -194,16 +195,17 @@ public class SpawnTable
{ {
final int x = ((spawn.getX() - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN; final int x = ((spawn.getX() - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN;
final int y = ((spawn.getY() - World.WORLD_Y_MIN) >> 15) + World.TILE_Y_MIN; final int y = ((spawn.getY() - World.WORLD_Y_MIN) >> 15) + World.TILE_Y_MIN;
final File spawnFile = spawn.getNpcSpawnTemplate() != null ? spawn.getNpcSpawnTemplate().getSpawnTemplate().getFile() : new File(OTHER_XML_FOLDER + "/" + x + "_" + y + ".xml"); final NpcSpawnTemplate npcSpawnTemplate = spawn.getNpcSpawnTemplate();
final File spawnFile = npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnTemplate().getFile() : new File(OTHER_XML_FOLDER + "/" + x + "_" + y + ".xml");
final File tempFile = new File(spawnFile.getAbsolutePath().substring(Config.DATAPACK_ROOT.getAbsolutePath().length() + 1).replace('\\', '/') + ".tmp"); final File tempFile = new File(spawnFile.getAbsolutePath().substring(Config.DATAPACK_ROOT.getAbsolutePath().length() + 1).replace('\\', '/') + ".tmp");
try try
{ {
final BufferedReader reader = new BufferedReader(new FileReader(spawnFile)); final BufferedReader reader = new BufferedReader(new FileReader(spawnFile));
final BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile)); final BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile));
final String spawnId = String.valueOf(spawn.getId()); final String spawnId = String.valueOf(spawn.getId());
final String spawnX = String.valueOf(spawn.getX()); final String spawnX = String.valueOf(npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnLocation().getX() : spawn.getX());
final String spawnY = String.valueOf(spawn.getY()); final String spawnY = String.valueOf(npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnLocation().getY() : spawn.getY());
final String spawnZ = String.valueOf(spawn.getZ()); final String spawnZ = String.valueOf(npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnLocation().getZ() : spawn.getZ());
boolean found = false; // in XML you can have more than one spawn with same coords boolean found = false; // in XML you can have more than one spawn with same coords
boolean isMultiLine = false; // in case spawn has more stats boolean isMultiLine = false; // in case spawn has more stats
boolean lastLineFound = false; // used to check for empty file boolean lastLineFound = false; // used to check for empty file

View File

@ -128,8 +128,7 @@ public class NpcActionShift implements IActionShiftHandler
} }
html.replace("%spawnai%", "<font color=FF0000>" + template.getSpawnTemplate().getAI() + "</font>"); html.replace("%spawnai%", "<font color=FF0000>" + template.getSpawnTemplate().getAI() + "</font>");
} }
html.replace("%spawn%", (template != null ? template.getSpawnLocation().getX() : npc.getSpawn().getX()) + " " + (template != null ? template.getSpawnLocation().getY() : npc.getSpawn().getY()) + " " + (template != null ? template.getSpawnLocation().getZ() : npc.getSpawn().getZ()));
html.replace("%spawn%", npc.getSpawn().getX() + " " + npc.getSpawn().getY() + " " + npc.getSpawn().getZ());
if (npc.getSpawn().getRespawnMinDelay() == 0) if (npc.getSpawn().getRespawnMinDelay() == 0)
{ {
html.replace("%resp%", "None"); html.replace("%resp%", "None");

View File

@ -32,6 +32,7 @@ import org.l2jmobius.Config;
import org.l2jmobius.gameserver.data.xml.NpcData; import org.l2jmobius.gameserver.data.xml.NpcData;
import org.l2jmobius.gameserver.model.Spawn; import org.l2jmobius.gameserver.model.Spawn;
import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.spawns.NpcSpawnTemplate;
/** /**
* Spawn data retriever. * Spawn data retriever.
@ -194,16 +195,17 @@ public class SpawnTable
{ {
final int x = ((spawn.getX() - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN; final int x = ((spawn.getX() - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN;
final int y = ((spawn.getY() - World.WORLD_Y_MIN) >> 15) + World.TILE_Y_MIN; final int y = ((spawn.getY() - World.WORLD_Y_MIN) >> 15) + World.TILE_Y_MIN;
final File spawnFile = spawn.getNpcSpawnTemplate() != null ? spawn.getNpcSpawnTemplate().getSpawnTemplate().getFile() : new File(OTHER_XML_FOLDER + "/" + x + "_" + y + ".xml"); final NpcSpawnTemplate npcSpawnTemplate = spawn.getNpcSpawnTemplate();
final File spawnFile = npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnTemplate().getFile() : new File(OTHER_XML_FOLDER + "/" + x + "_" + y + ".xml");
final File tempFile = new File(spawnFile.getAbsolutePath().substring(Config.DATAPACK_ROOT.getAbsolutePath().length() + 1).replace('\\', '/') + ".tmp"); final File tempFile = new File(spawnFile.getAbsolutePath().substring(Config.DATAPACK_ROOT.getAbsolutePath().length() + 1).replace('\\', '/') + ".tmp");
try try
{ {
final BufferedReader reader = new BufferedReader(new FileReader(spawnFile)); final BufferedReader reader = new BufferedReader(new FileReader(spawnFile));
final BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile)); final BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile));
final String spawnId = String.valueOf(spawn.getId()); final String spawnId = String.valueOf(spawn.getId());
final String spawnX = String.valueOf(spawn.getX()); final String spawnX = String.valueOf(npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnLocation().getX() : spawn.getX());
final String spawnY = String.valueOf(spawn.getY()); final String spawnY = String.valueOf(npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnLocation().getY() : spawn.getY());
final String spawnZ = String.valueOf(spawn.getZ()); final String spawnZ = String.valueOf(npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnLocation().getZ() : spawn.getZ());
boolean found = false; // in XML you can have more than one spawn with same coords boolean found = false; // in XML you can have more than one spawn with same coords
boolean isMultiLine = false; // in case spawn has more stats boolean isMultiLine = false; // in case spawn has more stats
boolean lastLineFound = false; // used to check for empty file boolean lastLineFound = false; // used to check for empty file

View File

@ -128,8 +128,7 @@ public class NpcActionShift implements IActionShiftHandler
} }
html.replace("%spawnai%", "<font color=FF0000>" + template.getSpawnTemplate().getAI() + "</font>"); html.replace("%spawnai%", "<font color=FF0000>" + template.getSpawnTemplate().getAI() + "</font>");
} }
html.replace("%spawn%", (template != null ? template.getSpawnLocation().getX() : npc.getSpawn().getX()) + " " + (template != null ? template.getSpawnLocation().getY() : npc.getSpawn().getY()) + " " + (template != null ? template.getSpawnLocation().getZ() : npc.getSpawn().getZ()));
html.replace("%spawn%", npc.getSpawn().getX() + " " + npc.getSpawn().getY() + " " + npc.getSpawn().getZ());
if (npc.getSpawn().getRespawnMinDelay() == 0) if (npc.getSpawn().getRespawnMinDelay() == 0)
{ {
html.replace("%resp%", "None"); html.replace("%resp%", "None");

View File

@ -32,6 +32,7 @@ import org.l2jmobius.Config;
import org.l2jmobius.gameserver.data.xml.NpcData; import org.l2jmobius.gameserver.data.xml.NpcData;
import org.l2jmobius.gameserver.model.Spawn; import org.l2jmobius.gameserver.model.Spawn;
import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.spawns.NpcSpawnTemplate;
/** /**
* Spawn data retriever. * Spawn data retriever.
@ -194,16 +195,17 @@ public class SpawnTable
{ {
final int x = ((spawn.getX() - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN; final int x = ((spawn.getX() - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN;
final int y = ((spawn.getY() - World.WORLD_Y_MIN) >> 15) + World.TILE_Y_MIN; final int y = ((spawn.getY() - World.WORLD_Y_MIN) >> 15) + World.TILE_Y_MIN;
final File spawnFile = spawn.getNpcSpawnTemplate() != null ? spawn.getNpcSpawnTemplate().getSpawnTemplate().getFile() : new File(OTHER_XML_FOLDER + "/" + x + "_" + y + ".xml"); final NpcSpawnTemplate npcSpawnTemplate = spawn.getNpcSpawnTemplate();
final File spawnFile = npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnTemplate().getFile() : new File(OTHER_XML_FOLDER + "/" + x + "_" + y + ".xml");
final File tempFile = new File(spawnFile.getAbsolutePath().substring(Config.DATAPACK_ROOT.getAbsolutePath().length() + 1).replace('\\', '/') + ".tmp"); final File tempFile = new File(spawnFile.getAbsolutePath().substring(Config.DATAPACK_ROOT.getAbsolutePath().length() + 1).replace('\\', '/') + ".tmp");
try try
{ {
final BufferedReader reader = new BufferedReader(new FileReader(spawnFile)); final BufferedReader reader = new BufferedReader(new FileReader(spawnFile));
final BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile)); final BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile));
final String spawnId = String.valueOf(spawn.getId()); final String spawnId = String.valueOf(spawn.getId());
final String spawnX = String.valueOf(spawn.getX()); final String spawnX = String.valueOf(npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnLocation().getX() : spawn.getX());
final String spawnY = String.valueOf(spawn.getY()); final String spawnY = String.valueOf(npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnLocation().getY() : spawn.getY());
final String spawnZ = String.valueOf(spawn.getZ()); final String spawnZ = String.valueOf(npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnLocation().getZ() : spawn.getZ());
boolean found = false; // in XML you can have more than one spawn with same coords boolean found = false; // in XML you can have more than one spawn with same coords
boolean isMultiLine = false; // in case spawn has more stats boolean isMultiLine = false; // in case spawn has more stats
boolean lastLineFound = false; // used to check for empty file boolean lastLineFound = false; // used to check for empty file

View File

@ -128,8 +128,7 @@ public class NpcActionShift implements IActionShiftHandler
} }
html.replace("%spawnai%", "<font color=FF0000>" + template.getSpawnTemplate().getAI() + "</font>"); html.replace("%spawnai%", "<font color=FF0000>" + template.getSpawnTemplate().getAI() + "</font>");
} }
html.replace("%spawn%", (template != null ? template.getSpawnLocation().getX() : npc.getSpawn().getX()) + " " + (template != null ? template.getSpawnLocation().getY() : npc.getSpawn().getY()) + " " + (template != null ? template.getSpawnLocation().getZ() : npc.getSpawn().getZ()));
html.replace("%spawn%", npc.getSpawn().getX() + " " + npc.getSpawn().getY() + " " + npc.getSpawn().getZ());
if (npc.getSpawn().getRespawnMinDelay() == 0) if (npc.getSpawn().getRespawnMinDelay() == 0)
{ {
html.replace("%resp%", "None"); html.replace("%resp%", "None");

View File

@ -32,6 +32,7 @@ import org.l2jmobius.Config;
import org.l2jmobius.gameserver.data.xml.NpcData; import org.l2jmobius.gameserver.data.xml.NpcData;
import org.l2jmobius.gameserver.model.Spawn; import org.l2jmobius.gameserver.model.Spawn;
import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.spawns.NpcSpawnTemplate;
/** /**
* Spawn data retriever. * Spawn data retriever.
@ -194,16 +195,17 @@ public class SpawnTable
{ {
final int x = ((spawn.getX() - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN; final int x = ((spawn.getX() - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN;
final int y = ((spawn.getY() - World.WORLD_Y_MIN) >> 15) + World.TILE_Y_MIN; final int y = ((spawn.getY() - World.WORLD_Y_MIN) >> 15) + World.TILE_Y_MIN;
final File spawnFile = spawn.getNpcSpawnTemplate() != null ? spawn.getNpcSpawnTemplate().getSpawnTemplate().getFile() : new File(OTHER_XML_FOLDER + "/" + x + "_" + y + ".xml"); final NpcSpawnTemplate npcSpawnTemplate = spawn.getNpcSpawnTemplate();
final File spawnFile = npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnTemplate().getFile() : new File(OTHER_XML_FOLDER + "/" + x + "_" + y + ".xml");
final File tempFile = new File(spawnFile.getAbsolutePath().substring(Config.DATAPACK_ROOT.getAbsolutePath().length() + 1).replace('\\', '/') + ".tmp"); final File tempFile = new File(spawnFile.getAbsolutePath().substring(Config.DATAPACK_ROOT.getAbsolutePath().length() + 1).replace('\\', '/') + ".tmp");
try try
{ {
final BufferedReader reader = new BufferedReader(new FileReader(spawnFile)); final BufferedReader reader = new BufferedReader(new FileReader(spawnFile));
final BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile)); final BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile));
final String spawnId = String.valueOf(spawn.getId()); final String spawnId = String.valueOf(spawn.getId());
final String spawnX = String.valueOf(spawn.getX()); final String spawnX = String.valueOf(npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnLocation().getX() : spawn.getX());
final String spawnY = String.valueOf(spawn.getY()); final String spawnY = String.valueOf(npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnLocation().getY() : spawn.getY());
final String spawnZ = String.valueOf(spawn.getZ()); final String spawnZ = String.valueOf(npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnLocation().getZ() : spawn.getZ());
boolean found = false; // in XML you can have more than one spawn with same coords boolean found = false; // in XML you can have more than one spawn with same coords
boolean isMultiLine = false; // in case spawn has more stats boolean isMultiLine = false; // in case spawn has more stats
boolean lastLineFound = false; // used to check for empty file boolean lastLineFound = false; // used to check for empty file

View File

@ -128,8 +128,7 @@ public class NpcActionShift implements IActionShiftHandler
} }
html.replace("%spawnai%", "<font color=FF0000>" + template.getSpawnTemplate().getAI() + "</font>"); html.replace("%spawnai%", "<font color=FF0000>" + template.getSpawnTemplate().getAI() + "</font>");
} }
html.replace("%spawn%", (template != null ? template.getSpawnLocation().getX() : npc.getSpawn().getX()) + " " + (template != null ? template.getSpawnLocation().getY() : npc.getSpawn().getY()) + " " + (template != null ? template.getSpawnLocation().getZ() : npc.getSpawn().getZ()));
html.replace("%spawn%", npc.getSpawn().getX() + " " + npc.getSpawn().getY() + " " + npc.getSpawn().getZ());
if (npc.getSpawn().getRespawnMinDelay() == 0) if (npc.getSpawn().getRespawnMinDelay() == 0)
{ {
html.replace("%resp%", "None"); html.replace("%resp%", "None");

View File

@ -32,6 +32,7 @@ import org.l2jmobius.Config;
import org.l2jmobius.gameserver.data.xml.NpcData; import org.l2jmobius.gameserver.data.xml.NpcData;
import org.l2jmobius.gameserver.model.Spawn; import org.l2jmobius.gameserver.model.Spawn;
import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.spawns.NpcSpawnTemplate;
/** /**
* Spawn data retriever. * Spawn data retriever.
@ -194,16 +195,17 @@ public class SpawnTable
{ {
final int x = ((spawn.getX() - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN; final int x = ((spawn.getX() - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN;
final int y = ((spawn.getY() - World.WORLD_Y_MIN) >> 15) + World.TILE_Y_MIN; final int y = ((spawn.getY() - World.WORLD_Y_MIN) >> 15) + World.TILE_Y_MIN;
final File spawnFile = spawn.getNpcSpawnTemplate() != null ? spawn.getNpcSpawnTemplate().getSpawnTemplate().getFile() : new File(OTHER_XML_FOLDER + "/" + x + "_" + y + ".xml"); final NpcSpawnTemplate npcSpawnTemplate = spawn.getNpcSpawnTemplate();
final File spawnFile = npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnTemplate().getFile() : new File(OTHER_XML_FOLDER + "/" + x + "_" + y + ".xml");
final File tempFile = new File(spawnFile.getAbsolutePath().substring(Config.DATAPACK_ROOT.getAbsolutePath().length() + 1).replace('\\', '/') + ".tmp"); final File tempFile = new File(spawnFile.getAbsolutePath().substring(Config.DATAPACK_ROOT.getAbsolutePath().length() + 1).replace('\\', '/') + ".tmp");
try try
{ {
final BufferedReader reader = new BufferedReader(new FileReader(spawnFile)); final BufferedReader reader = new BufferedReader(new FileReader(spawnFile));
final BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile)); final BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile));
final String spawnId = String.valueOf(spawn.getId()); final String spawnId = String.valueOf(spawn.getId());
final String spawnX = String.valueOf(spawn.getX()); final String spawnX = String.valueOf(npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnLocation().getX() : spawn.getX());
final String spawnY = String.valueOf(spawn.getY()); final String spawnY = String.valueOf(npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnLocation().getY() : spawn.getY());
final String spawnZ = String.valueOf(spawn.getZ()); final String spawnZ = String.valueOf(npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnLocation().getZ() : spawn.getZ());
boolean found = false; // in XML you can have more than one spawn with same coords boolean found = false; // in XML you can have more than one spawn with same coords
boolean isMultiLine = false; // in case spawn has more stats boolean isMultiLine = false; // in case spawn has more stats
boolean lastLineFound = false; // used to check for empty file boolean lastLineFound = false; // used to check for empty file

View File

@ -128,8 +128,7 @@ public class NpcActionShift implements IActionShiftHandler
} }
html.replace("%spawnai%", "<font color=FF0000>" + template.getSpawnTemplate().getAI() + "</font>"); html.replace("%spawnai%", "<font color=FF0000>" + template.getSpawnTemplate().getAI() + "</font>");
} }
html.replace("%spawn%", (template != null ? template.getSpawnLocation().getX() : npc.getSpawn().getX()) + " " + (template != null ? template.getSpawnLocation().getY() : npc.getSpawn().getY()) + " " + (template != null ? template.getSpawnLocation().getZ() : npc.getSpawn().getZ()));
html.replace("%spawn%", npc.getSpawn().getX() + " " + npc.getSpawn().getY() + " " + npc.getSpawn().getZ());
if (npc.getSpawn().getRespawnMinDelay() == 0) if (npc.getSpawn().getRespawnMinDelay() == 0)
{ {
html.replace("%resp%", "None"); html.replace("%resp%", "None");

View File

@ -32,6 +32,7 @@ import org.l2jmobius.Config;
import org.l2jmobius.gameserver.data.xml.NpcData; import org.l2jmobius.gameserver.data.xml.NpcData;
import org.l2jmobius.gameserver.model.Spawn; import org.l2jmobius.gameserver.model.Spawn;
import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.spawns.NpcSpawnTemplate;
/** /**
* Spawn data retriever. * Spawn data retriever.
@ -194,16 +195,17 @@ public class SpawnTable
{ {
final int x = ((spawn.getX() - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN; final int x = ((spawn.getX() - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN;
final int y = ((spawn.getY() - World.WORLD_Y_MIN) >> 15) + World.TILE_Y_MIN; final int y = ((spawn.getY() - World.WORLD_Y_MIN) >> 15) + World.TILE_Y_MIN;
final File spawnFile = spawn.getNpcSpawnTemplate() != null ? spawn.getNpcSpawnTemplate().getSpawnTemplate().getFile() : new File(OTHER_XML_FOLDER + "/" + x + "_" + y + ".xml"); final NpcSpawnTemplate npcSpawnTemplate = spawn.getNpcSpawnTemplate();
final File spawnFile = npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnTemplate().getFile() : new File(OTHER_XML_FOLDER + "/" + x + "_" + y + ".xml");
final File tempFile = new File(spawnFile.getAbsolutePath().substring(Config.DATAPACK_ROOT.getAbsolutePath().length() + 1).replace('\\', '/') + ".tmp"); final File tempFile = new File(spawnFile.getAbsolutePath().substring(Config.DATAPACK_ROOT.getAbsolutePath().length() + 1).replace('\\', '/') + ".tmp");
try try
{ {
final BufferedReader reader = new BufferedReader(new FileReader(spawnFile)); final BufferedReader reader = new BufferedReader(new FileReader(spawnFile));
final BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile)); final BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile));
final String spawnId = String.valueOf(spawn.getId()); final String spawnId = String.valueOf(spawn.getId());
final String spawnX = String.valueOf(spawn.getX()); final String spawnX = String.valueOf(npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnLocation().getX() : spawn.getX());
final String spawnY = String.valueOf(spawn.getY()); final String spawnY = String.valueOf(npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnLocation().getY() : spawn.getY());
final String spawnZ = String.valueOf(spawn.getZ()); final String spawnZ = String.valueOf(npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnLocation().getZ() : spawn.getZ());
boolean found = false; // in XML you can have more than one spawn with same coords boolean found = false; // in XML you can have more than one spawn with same coords
boolean isMultiLine = false; // in case spawn has more stats boolean isMultiLine = false; // in case spawn has more stats
boolean lastLineFound = false; // used to check for empty file boolean lastLineFound = false; // used to check for empty file

View File

@ -111,7 +111,8 @@ public class NpcActionShift implements IActionShiftHandler
else else
{ {
html.replace("%spawntype%", "Fixed"); html.replace("%spawntype%", "Fixed");
html.replace("%spawn%", ((Npc) target).getSpawn().getX() + " " + ((Npc) target).getSpawn().getY() + " " + ((Npc) target).getSpawn().getZ()); final Location spawnLoc = ((Npc) target).getSpawn().getSpawnLocation() != null ? ((Npc) target).getSpawn().getSpawnLocation() : ((Npc) target).getSpawn();
html.replace("%spawn%", spawnLoc.getX() + " " + spawnLoc.getY() + " " + spawnLoc.getZ());
} }
if (((Npc) target).getSpawn().getRespawnMinDelay() == 0) if (((Npc) target).getSpawn().getRespawnMinDelay() == 0)
{ {

View File

@ -42,6 +42,7 @@ import org.l2jmobius.commons.util.IXmlReader;
import org.l2jmobius.gameserver.data.xml.NpcData; import org.l2jmobius.gameserver.data.xml.NpcData;
import org.l2jmobius.gameserver.instancemanager.DayNightSpawnManager; import org.l2jmobius.gameserver.instancemanager.DayNightSpawnManager;
import org.l2jmobius.gameserver.instancemanager.ZoneManager; import org.l2jmobius.gameserver.instancemanager.ZoneManager;
import org.l2jmobius.gameserver.model.Location;
import org.l2jmobius.gameserver.model.Spawn; import org.l2jmobius.gameserver.model.Spawn;
import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.World;
@ -592,6 +593,7 @@ public class SpawnTable implements IXmlReader
final int x = ((spawn.getX() - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN; final int x = ((spawn.getX() - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN;
final int y = ((spawn.getY() - World.WORLD_Y_MIN) >> 15) + World.TILE_Y_MIN; final int y = ((spawn.getY() - World.WORLD_Y_MIN) >> 15) + World.TILE_Y_MIN;
final int npcSpawnTemplateId = spawn.getNpcSpawnTemplateId(); final int npcSpawnTemplateId = spawn.getNpcSpawnTemplateId();
final Location spawnLocation = spawn.getSpawnLocation();
final File spawnFile = npcSpawnTemplateId > 0 ? new File(_spawnTemplates.get(npcSpawnTemplateId)) : new File(OTHER_XML_FOLDER + "/" + x + "_" + y + ".xml"); final File spawnFile = npcSpawnTemplateId > 0 ? new File(_spawnTemplates.get(npcSpawnTemplateId)) : new File(OTHER_XML_FOLDER + "/" + x + "_" + y + ".xml");
final File tempFile = new File(spawnFile.getAbsolutePath().substring(Config.DATAPACK_ROOT.getAbsolutePath().length() + 1).replace('\\', '/') + ".tmp"); final File tempFile = new File(spawnFile.getAbsolutePath().substring(Config.DATAPACK_ROOT.getAbsolutePath().length() + 1).replace('\\', '/') + ".tmp");
try try
@ -599,9 +601,9 @@ public class SpawnTable implements IXmlReader
final BufferedReader reader = new BufferedReader(new FileReader(spawnFile)); final BufferedReader reader = new BufferedReader(new FileReader(spawnFile));
final BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile)); final BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile));
final String spawnId = String.valueOf(spawn.getId()); final String spawnId = String.valueOf(spawn.getId());
final String spawnX = String.valueOf(spawn.getX()); final String spawnX = String.valueOf(spawnLocation != null ? spawnLocation.getX() : spawn.getX());
final String spawnY = String.valueOf(spawn.getY()); final String spawnY = String.valueOf(spawnLocation != null ? spawnLocation.getY() : spawn.getY());
final String spawnZ = String.valueOf(spawn.getZ()); final String spawnZ = String.valueOf(spawnLocation != null ? spawnLocation.getX() : spawn.getZ());
boolean found = false; // in XML you can have more than one spawn with same coords boolean found = false; // in XML you can have more than one spawn with same coords
boolean isMultiLine = false; // in case spawn has more stats boolean isMultiLine = false; // in case spawn has more stats
boolean lastLineFound = false; // used to check for empty file boolean lastLineFound = false; // used to check for empty file

View File

@ -81,6 +81,7 @@ public class Spawn extends Location implements IIdentifiable, INamable
private final Deque<Npc> _spawnedNpcs = new ConcurrentLinkedDeque<>(); private final Deque<Npc> _spawnedNpcs = new ConcurrentLinkedDeque<>();
private boolean _randomWalk = false; // Is random walk private boolean _randomWalk = false; // Is random walk
private int _spawnTemplateId = 0; private int _spawnTemplateId = 0;
private Location _spawnLocation = null;
/** /**
* Constructor of Spawn.<br> * Constructor of Spawn.<br>
@ -382,9 +383,14 @@ public class Spawn extends Location implements IIdentifiable, INamable
else else
{ {
// The Npc is spawned at the exact position (Lox, Locy, Locz) // The Npc is spawned at the exact position (Lox, Locy, Locz)
newlocx = getX(); newlocx = _spawnLocation != null ? _spawnLocation.getX() : getX();
newlocy = getY(); newlocy = _spawnLocation != null ? _spawnLocation.getY() : getY();
newlocz = getZ(); newlocz = _spawnLocation != null ? _spawnLocation.getZ() : getZ();
if (_spawnLocation == null)
{
_spawnLocation = new Location(newlocx, newlocy, newlocz);
}
} }
// Check if npc is in water. // Check if npc is in water.
@ -618,6 +624,11 @@ public class Spawn extends Location implements IIdentifiable, INamable
return _spawnTemplateId; return _spawnTemplateId;
} }
public Location getSpawnLocation()
{
return _spawnLocation;
}
@Override @Override
public String toString() public String toString()
{ {

View File

@ -122,7 +122,8 @@ public class NpcActionShift implements IActionShiftHandler
else else
{ {
html.replace("%spawntype%", "Fixed"); html.replace("%spawntype%", "Fixed");
html.replace("%spawn%", ((Npc) target).getSpawn().getX() + " " + ((Npc) target).getSpawn().getY() + " " + ((Npc) target).getSpawn().getZ()); final Location spawnLoc = ((Npc) target).getSpawn().getSpawnLocation() != null ? ((Npc) target).getSpawn().getSpawnLocation() : ((Npc) target).getSpawn();
html.replace("%spawn%", spawnLoc.getX() + " " + spawnLoc.getY() + " " + spawnLoc.getZ());
} }
if (((Npc) target).getSpawn().getRespawnMinDelay() == 0) if (((Npc) target).getSpawn().getRespawnMinDelay() == 0)
{ {

View File

@ -42,6 +42,7 @@ import org.l2jmobius.commons.util.IXmlReader;
import org.l2jmobius.gameserver.data.xml.NpcData; import org.l2jmobius.gameserver.data.xml.NpcData;
import org.l2jmobius.gameserver.instancemanager.DayNightSpawnManager; import org.l2jmobius.gameserver.instancemanager.DayNightSpawnManager;
import org.l2jmobius.gameserver.instancemanager.ZoneManager; import org.l2jmobius.gameserver.instancemanager.ZoneManager;
import org.l2jmobius.gameserver.model.Location;
import org.l2jmobius.gameserver.model.Spawn; import org.l2jmobius.gameserver.model.Spawn;
import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.World;
@ -592,6 +593,7 @@ public class SpawnTable implements IXmlReader
final int x = ((spawn.getX() - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN; final int x = ((spawn.getX() - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN;
final int y = ((spawn.getY() - World.WORLD_Y_MIN) >> 15) + World.TILE_Y_MIN; final int y = ((spawn.getY() - World.WORLD_Y_MIN) >> 15) + World.TILE_Y_MIN;
final int npcSpawnTemplateId = spawn.getNpcSpawnTemplateId(); final int npcSpawnTemplateId = spawn.getNpcSpawnTemplateId();
final Location spawnLocation = spawn.getSpawnLocation();
final File spawnFile = npcSpawnTemplateId > 0 ? new File(_spawnTemplates.get(npcSpawnTemplateId)) : new File(OTHER_XML_FOLDER + "/" + x + "_" + y + ".xml"); final File spawnFile = npcSpawnTemplateId > 0 ? new File(_spawnTemplates.get(npcSpawnTemplateId)) : new File(OTHER_XML_FOLDER + "/" + x + "_" + y + ".xml");
final File tempFile = new File(spawnFile.getAbsolutePath().substring(Config.DATAPACK_ROOT.getAbsolutePath().length() + 1).replace('\\', '/') + ".tmp"); final File tempFile = new File(spawnFile.getAbsolutePath().substring(Config.DATAPACK_ROOT.getAbsolutePath().length() + 1).replace('\\', '/') + ".tmp");
try try
@ -599,9 +601,9 @@ public class SpawnTable implements IXmlReader
final BufferedReader reader = new BufferedReader(new FileReader(spawnFile)); final BufferedReader reader = new BufferedReader(new FileReader(spawnFile));
final BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile)); final BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile));
final String spawnId = String.valueOf(spawn.getId()); final String spawnId = String.valueOf(spawn.getId());
final String spawnX = String.valueOf(spawn.getX()); final String spawnX = String.valueOf(spawnLocation != null ? spawnLocation.getX() : spawn.getX());
final String spawnY = String.valueOf(spawn.getY()); final String spawnY = String.valueOf(spawnLocation != null ? spawnLocation.getY() : spawn.getY());
final String spawnZ = String.valueOf(spawn.getZ()); final String spawnZ = String.valueOf(spawnLocation != null ? spawnLocation.getX() : spawn.getZ());
boolean found = false; // in XML you can have more than one spawn with same coords boolean found = false; // in XML you can have more than one spawn with same coords
boolean isMultiLine = false; // in case spawn has more stats boolean isMultiLine = false; // in case spawn has more stats
boolean lastLineFound = false; // used to check for empty file boolean lastLineFound = false; // used to check for empty file

View File

@ -81,6 +81,7 @@ public class Spawn extends Location implements IIdentifiable, INamable
private final Deque<Npc> _spawnedNpcs = new ConcurrentLinkedDeque<>(); private final Deque<Npc> _spawnedNpcs = new ConcurrentLinkedDeque<>();
private boolean _randomWalk = false; // Is random walk private boolean _randomWalk = false; // Is random walk
private int _spawnTemplateId = 0; private int _spawnTemplateId = 0;
private Location _spawnLocation = null;
/** /**
* Constructor of Spawn.<br> * Constructor of Spawn.<br>
@ -382,9 +383,14 @@ public class Spawn extends Location implements IIdentifiable, INamable
else else
{ {
// The Npc is spawned at the exact position (Lox, Locy, Locz) // The Npc is spawned at the exact position (Lox, Locy, Locz)
newlocx = getX(); newlocx = _spawnLocation != null ? _spawnLocation.getX() : getX();
newlocy = getY(); newlocy = _spawnLocation != null ? _spawnLocation.getY() : getY();
newlocz = getZ(); newlocz = _spawnLocation != null ? _spawnLocation.getZ() : getZ();
if (_spawnLocation == null)
{
_spawnLocation = new Location(newlocx, newlocy, newlocz);
}
} }
// Check if npc is in water. // Check if npc is in water.
@ -612,6 +618,11 @@ public class Spawn extends Location implements IIdentifiable, INamable
return _spawnTemplateId; return _spawnTemplateId;
} }
public Location getSpawnLocation()
{
return _spawnLocation;
}
@Override @Override
public String toString() public String toString()
{ {

View File

@ -122,7 +122,8 @@ public class NpcActionShift implements IActionShiftHandler
else else
{ {
html.replace("%spawntype%", "Fixed"); html.replace("%spawntype%", "Fixed");
html.replace("%spawn%", ((Npc) target).getSpawn().getX() + " " + ((Npc) target).getSpawn().getY() + " " + ((Npc) target).getSpawn().getZ()); final Location spawnLoc = ((Npc) target).getSpawn().getSpawnLocation() != null ? ((Npc) target).getSpawn().getSpawnLocation() : ((Npc) target).getSpawn();
html.replace("%spawn%", spawnLoc.getX() + " " + spawnLoc.getY() + " " + spawnLoc.getZ());
} }
if (((Npc) target).getSpawn().getRespawnMinDelay() == 0) if (((Npc) target).getSpawn().getRespawnMinDelay() == 0)
{ {

View File

@ -42,6 +42,7 @@ import org.l2jmobius.commons.util.IXmlReader;
import org.l2jmobius.gameserver.data.xml.NpcData; import org.l2jmobius.gameserver.data.xml.NpcData;
import org.l2jmobius.gameserver.instancemanager.DayNightSpawnManager; import org.l2jmobius.gameserver.instancemanager.DayNightSpawnManager;
import org.l2jmobius.gameserver.instancemanager.ZoneManager; import org.l2jmobius.gameserver.instancemanager.ZoneManager;
import org.l2jmobius.gameserver.model.Location;
import org.l2jmobius.gameserver.model.Spawn; import org.l2jmobius.gameserver.model.Spawn;
import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.World;
@ -592,6 +593,7 @@ public class SpawnTable implements IXmlReader
final int x = ((spawn.getX() - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN; final int x = ((spawn.getX() - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN;
final int y = ((spawn.getY() - World.WORLD_Y_MIN) >> 15) + World.TILE_Y_MIN; final int y = ((spawn.getY() - World.WORLD_Y_MIN) >> 15) + World.TILE_Y_MIN;
final int npcSpawnTemplateId = spawn.getNpcSpawnTemplateId(); final int npcSpawnTemplateId = spawn.getNpcSpawnTemplateId();
final Location spawnLocation = spawn.getSpawnLocation();
final File spawnFile = npcSpawnTemplateId > 0 ? new File(_spawnTemplates.get(npcSpawnTemplateId)) : new File(OTHER_XML_FOLDER + "/" + x + "_" + y + ".xml"); final File spawnFile = npcSpawnTemplateId > 0 ? new File(_spawnTemplates.get(npcSpawnTemplateId)) : new File(OTHER_XML_FOLDER + "/" + x + "_" + y + ".xml");
final File tempFile = new File(spawnFile.getAbsolutePath().substring(Config.DATAPACK_ROOT.getAbsolutePath().length() + 1).replace('\\', '/') + ".tmp"); final File tempFile = new File(spawnFile.getAbsolutePath().substring(Config.DATAPACK_ROOT.getAbsolutePath().length() + 1).replace('\\', '/') + ".tmp");
try try
@ -599,9 +601,9 @@ public class SpawnTable implements IXmlReader
final BufferedReader reader = new BufferedReader(new FileReader(spawnFile)); final BufferedReader reader = new BufferedReader(new FileReader(spawnFile));
final BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile)); final BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile));
final String spawnId = String.valueOf(spawn.getId()); final String spawnId = String.valueOf(spawn.getId());
final String spawnX = String.valueOf(spawn.getX()); final String spawnX = String.valueOf(spawnLocation != null ? spawnLocation.getX() : spawn.getX());
final String spawnY = String.valueOf(spawn.getY()); final String spawnY = String.valueOf(spawnLocation != null ? spawnLocation.getY() : spawn.getY());
final String spawnZ = String.valueOf(spawn.getZ()); final String spawnZ = String.valueOf(spawnLocation != null ? spawnLocation.getX() : spawn.getZ());
boolean found = false; // in XML you can have more than one spawn with same coords boolean found = false; // in XML you can have more than one spawn with same coords
boolean isMultiLine = false; // in case spawn has more stats boolean isMultiLine = false; // in case spawn has more stats
boolean lastLineFound = false; // used to check for empty file boolean lastLineFound = false; // used to check for empty file

View File

@ -81,6 +81,7 @@ public class Spawn extends Location implements IIdentifiable, INamable
private final Deque<Npc> _spawnedNpcs = new ConcurrentLinkedDeque<>(); private final Deque<Npc> _spawnedNpcs = new ConcurrentLinkedDeque<>();
private boolean _randomWalk = false; // Is random walk private boolean _randomWalk = false; // Is random walk
private int _spawnTemplateId = 0; private int _spawnTemplateId = 0;
private Location _spawnLocation = null;
/** /**
* Constructor of Spawn.<br> * Constructor of Spawn.<br>
@ -382,9 +383,14 @@ public class Spawn extends Location implements IIdentifiable, INamable
else else
{ {
// The Npc is spawned at the exact position (Lox, Locy, Locz) // The Npc is spawned at the exact position (Lox, Locy, Locz)
newlocx = getX(); newlocx = _spawnLocation != null ? _spawnLocation.getX() : getX();
newlocy = getY(); newlocy = _spawnLocation != null ? _spawnLocation.getY() : getY();
newlocz = getZ(); newlocz = _spawnLocation != null ? _spawnLocation.getZ() : getZ();
if (_spawnLocation == null)
{
_spawnLocation = new Location(newlocx, newlocy, newlocz);
}
} }
// Check if npc is in water. // Check if npc is in water.
@ -618,6 +624,11 @@ public class Spawn extends Location implements IIdentifiable, INamable
return _spawnTemplateId; return _spawnTemplateId;
} }
public Location getSpawnLocation()
{
return _spawnLocation;
}
@Override @Override
public String toString() public String toString()
{ {

View File

@ -128,8 +128,7 @@ public class NpcActionShift implements IActionShiftHandler
} }
html.replace("%spawnai%", "<font color=FF0000>" + template.getSpawnTemplate().getAI() + "</font>"); html.replace("%spawnai%", "<font color=FF0000>" + template.getSpawnTemplate().getAI() + "</font>");
} }
html.replace("%spawn%", (template != null ? template.getSpawnLocation().getX() : npc.getSpawn().getX()) + " " + (template != null ? template.getSpawnLocation().getY() : npc.getSpawn().getY()) + " " + (template != null ? template.getSpawnLocation().getZ() : npc.getSpawn().getZ()));
html.replace("%spawn%", npc.getSpawn().getX() + " " + npc.getSpawn().getY() + " " + npc.getSpawn().getZ());
if (npc.getSpawn().getRespawnMinDelay() == 0) if (npc.getSpawn().getRespawnMinDelay() == 0)
{ {
html.replace("%resp%", "None"); html.replace("%resp%", "None");

View File

@ -32,6 +32,7 @@ import org.l2jmobius.Config;
import org.l2jmobius.gameserver.data.xml.NpcData; import org.l2jmobius.gameserver.data.xml.NpcData;
import org.l2jmobius.gameserver.model.Spawn; import org.l2jmobius.gameserver.model.Spawn;
import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.spawns.NpcSpawnTemplate;
/** /**
* Spawn data retriever. * Spawn data retriever.
@ -194,16 +195,17 @@ public class SpawnTable
{ {
final int x = ((spawn.getX() - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN; final int x = ((spawn.getX() - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN;
final int y = ((spawn.getY() - World.WORLD_Y_MIN) >> 15) + World.TILE_Y_MIN; final int y = ((spawn.getY() - World.WORLD_Y_MIN) >> 15) + World.TILE_Y_MIN;
final File spawnFile = spawn.getNpcSpawnTemplate() != null ? spawn.getNpcSpawnTemplate().getSpawnTemplate().getFile() : new File(OTHER_XML_FOLDER + "/" + x + "_" + y + ".xml"); final NpcSpawnTemplate npcSpawnTemplate = spawn.getNpcSpawnTemplate();
final File spawnFile = npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnTemplate().getFile() : new File(OTHER_XML_FOLDER + "/" + x + "_" + y + ".xml");
final File tempFile = new File(spawnFile.getAbsolutePath().substring(Config.DATAPACK_ROOT.getAbsolutePath().length() + 1).replace('\\', '/') + ".tmp"); final File tempFile = new File(spawnFile.getAbsolutePath().substring(Config.DATAPACK_ROOT.getAbsolutePath().length() + 1).replace('\\', '/') + ".tmp");
try try
{ {
final BufferedReader reader = new BufferedReader(new FileReader(spawnFile)); final BufferedReader reader = new BufferedReader(new FileReader(spawnFile));
final BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile)); final BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile));
final String spawnId = String.valueOf(spawn.getId()); final String spawnId = String.valueOf(spawn.getId());
final String spawnX = String.valueOf(spawn.getX()); final String spawnX = String.valueOf(npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnLocation().getX() : spawn.getX());
final String spawnY = String.valueOf(spawn.getY()); final String spawnY = String.valueOf(npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnLocation().getY() : spawn.getY());
final String spawnZ = String.valueOf(spawn.getZ()); final String spawnZ = String.valueOf(npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnLocation().getZ() : spawn.getZ());
boolean found = false; // in XML you can have more than one spawn with same coords boolean found = false; // in XML you can have more than one spawn with same coords
boolean isMultiLine = false; // in case spawn has more stats boolean isMultiLine = false; // in case spawn has more stats
boolean lastLineFound = false; // used to check for empty file boolean lastLineFound = false; // used to check for empty file

View File

@ -128,8 +128,7 @@ public class NpcActionShift implements IActionShiftHandler
} }
html.replace("%spawnai%", "<font color=FF0000>" + template.getSpawnTemplate().getAI() + "</font>"); html.replace("%spawnai%", "<font color=FF0000>" + template.getSpawnTemplate().getAI() + "</font>");
} }
html.replace("%spawn%", (template != null ? template.getSpawnLocation().getX() : npc.getSpawn().getX()) + " " + (template != null ? template.getSpawnLocation().getY() : npc.getSpawn().getY()) + " " + (template != null ? template.getSpawnLocation().getZ() : npc.getSpawn().getZ()));
html.replace("%spawn%", npc.getSpawn().getX() + " " + npc.getSpawn().getY() + " " + npc.getSpawn().getZ());
if (npc.getSpawn().getRespawnMinDelay() == 0) if (npc.getSpawn().getRespawnMinDelay() == 0)
{ {
html.replace("%resp%", "None"); html.replace("%resp%", "None");

View File

@ -32,6 +32,7 @@ import org.l2jmobius.Config;
import org.l2jmobius.gameserver.data.xml.NpcData; import org.l2jmobius.gameserver.data.xml.NpcData;
import org.l2jmobius.gameserver.model.Spawn; import org.l2jmobius.gameserver.model.Spawn;
import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.spawns.NpcSpawnTemplate;
/** /**
* Spawn data retriever. * Spawn data retriever.
@ -194,16 +195,17 @@ public class SpawnTable
{ {
final int x = ((spawn.getX() - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN; final int x = ((spawn.getX() - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN;
final int y = ((spawn.getY() - World.WORLD_Y_MIN) >> 15) + World.TILE_Y_MIN; final int y = ((spawn.getY() - World.WORLD_Y_MIN) >> 15) + World.TILE_Y_MIN;
final File spawnFile = spawn.getNpcSpawnTemplate() != null ? spawn.getNpcSpawnTemplate().getSpawnTemplate().getFile() : new File(OTHER_XML_FOLDER + "/" + x + "_" + y + ".xml"); final NpcSpawnTemplate npcSpawnTemplate = spawn.getNpcSpawnTemplate();
final File spawnFile = npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnTemplate().getFile() : new File(OTHER_XML_FOLDER + "/" + x + "_" + y + ".xml");
final File tempFile = new File(spawnFile.getAbsolutePath().substring(Config.DATAPACK_ROOT.getAbsolutePath().length() + 1).replace('\\', '/') + ".tmp"); final File tempFile = new File(spawnFile.getAbsolutePath().substring(Config.DATAPACK_ROOT.getAbsolutePath().length() + 1).replace('\\', '/') + ".tmp");
try try
{ {
final BufferedReader reader = new BufferedReader(new FileReader(spawnFile)); final BufferedReader reader = new BufferedReader(new FileReader(spawnFile));
final BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile)); final BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile));
final String spawnId = String.valueOf(spawn.getId()); final String spawnId = String.valueOf(spawn.getId());
final String spawnX = String.valueOf(spawn.getX()); final String spawnX = String.valueOf(npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnLocation().getX() : spawn.getX());
final String spawnY = String.valueOf(spawn.getY()); final String spawnY = String.valueOf(npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnLocation().getY() : spawn.getY());
final String spawnZ = String.valueOf(spawn.getZ()); final String spawnZ = String.valueOf(npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnLocation().getZ() : spawn.getZ());
boolean found = false; // in XML you can have more than one spawn with same coords boolean found = false; // in XML you can have more than one spawn with same coords
boolean isMultiLine = false; // in case spawn has more stats boolean isMultiLine = false; // in case spawn has more stats
boolean lastLineFound = false; // used to check for empty file boolean lastLineFound = false; // used to check for empty file

View File

@ -128,8 +128,7 @@ public class NpcActionShift implements IActionShiftHandler
} }
html.replace("%spawnai%", "<font color=FF0000>" + template.getSpawnTemplate().getAI() + "</font>"); html.replace("%spawnai%", "<font color=FF0000>" + template.getSpawnTemplate().getAI() + "</font>");
} }
html.replace("%spawn%", (template != null ? template.getSpawnLocation().getX() : npc.getSpawn().getX()) + " " + (template != null ? template.getSpawnLocation().getY() : npc.getSpawn().getY()) + " " + (template != null ? template.getSpawnLocation().getZ() : npc.getSpawn().getZ()));
html.replace("%spawn%", npc.getSpawn().getX() + " " + npc.getSpawn().getY() + " " + npc.getSpawn().getZ());
if (npc.getSpawn().getRespawnMinDelay() == 0) if (npc.getSpawn().getRespawnMinDelay() == 0)
{ {
html.replace("%resp%", "None"); html.replace("%resp%", "None");

View File

@ -32,6 +32,7 @@ import org.l2jmobius.Config;
import org.l2jmobius.gameserver.data.xml.NpcData; import org.l2jmobius.gameserver.data.xml.NpcData;
import org.l2jmobius.gameserver.model.Spawn; import org.l2jmobius.gameserver.model.Spawn;
import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.spawns.NpcSpawnTemplate;
/** /**
* Spawn data retriever. * Spawn data retriever.
@ -194,16 +195,17 @@ public class SpawnTable
{ {
final int x = ((spawn.getX() - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN; final int x = ((spawn.getX() - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN;
final int y = ((spawn.getY() - World.WORLD_Y_MIN) >> 15) + World.TILE_Y_MIN; final int y = ((spawn.getY() - World.WORLD_Y_MIN) >> 15) + World.TILE_Y_MIN;
final File spawnFile = spawn.getNpcSpawnTemplate() != null ? spawn.getNpcSpawnTemplate().getSpawnTemplate().getFile() : new File(OTHER_XML_FOLDER + "/" + x + "_" + y + ".xml"); final NpcSpawnTemplate npcSpawnTemplate = spawn.getNpcSpawnTemplate();
final File spawnFile = npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnTemplate().getFile() : new File(OTHER_XML_FOLDER + "/" + x + "_" + y + ".xml");
final File tempFile = new File(spawnFile.getAbsolutePath().substring(Config.DATAPACK_ROOT.getAbsolutePath().length() + 1).replace('\\', '/') + ".tmp"); final File tempFile = new File(spawnFile.getAbsolutePath().substring(Config.DATAPACK_ROOT.getAbsolutePath().length() + 1).replace('\\', '/') + ".tmp");
try try
{ {
final BufferedReader reader = new BufferedReader(new FileReader(spawnFile)); final BufferedReader reader = new BufferedReader(new FileReader(spawnFile));
final BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile)); final BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile));
final String spawnId = String.valueOf(spawn.getId()); final String spawnId = String.valueOf(spawn.getId());
final String spawnX = String.valueOf(spawn.getX()); final String spawnX = String.valueOf(npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnLocation().getX() : spawn.getX());
final String spawnY = String.valueOf(spawn.getY()); final String spawnY = String.valueOf(npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnLocation().getY() : spawn.getY());
final String spawnZ = String.valueOf(spawn.getZ()); final String spawnZ = String.valueOf(npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnLocation().getZ() : spawn.getZ());
boolean found = false; // in XML you can have more than one spawn with same coords boolean found = false; // in XML you can have more than one spawn with same coords
boolean isMultiLine = false; // in case spawn has more stats boolean isMultiLine = false; // in case spawn has more stats
boolean lastLineFound = false; // used to check for empty file boolean lastLineFound = false; // used to check for empty file

View File

@ -128,8 +128,7 @@ public class NpcActionShift implements IActionShiftHandler
} }
html.replace("%spawnai%", "<font color=FF0000>" + template.getSpawnTemplate().getAI() + "</font>"); html.replace("%spawnai%", "<font color=FF0000>" + template.getSpawnTemplate().getAI() + "</font>");
} }
html.replace("%spawn%", (template != null ? template.getSpawnLocation().getX() : npc.getSpawn().getX()) + " " + (template != null ? template.getSpawnLocation().getY() : npc.getSpawn().getY()) + " " + (template != null ? template.getSpawnLocation().getZ() : npc.getSpawn().getZ()));
html.replace("%spawn%", npc.getSpawn().getX() + " " + npc.getSpawn().getY() + " " + npc.getSpawn().getZ());
if (npc.getSpawn().getRespawnMinDelay() == 0) if (npc.getSpawn().getRespawnMinDelay() == 0)
{ {
html.replace("%resp%", "None"); html.replace("%resp%", "None");

View File

@ -32,6 +32,7 @@ import org.l2jmobius.Config;
import org.l2jmobius.gameserver.data.xml.NpcData; import org.l2jmobius.gameserver.data.xml.NpcData;
import org.l2jmobius.gameserver.model.Spawn; import org.l2jmobius.gameserver.model.Spawn;
import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.spawns.NpcSpawnTemplate;
/** /**
* Spawn data retriever. * Spawn data retriever.
@ -194,16 +195,17 @@ public class SpawnTable
{ {
final int x = ((spawn.getX() - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN; final int x = ((spawn.getX() - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN;
final int y = ((spawn.getY() - World.WORLD_Y_MIN) >> 15) + World.TILE_Y_MIN; final int y = ((spawn.getY() - World.WORLD_Y_MIN) >> 15) + World.TILE_Y_MIN;
final File spawnFile = spawn.getNpcSpawnTemplate() != null ? spawn.getNpcSpawnTemplate().getSpawnTemplate().getFile() : new File(OTHER_XML_FOLDER + "/" + x + "_" + y + ".xml"); final NpcSpawnTemplate npcSpawnTemplate = spawn.getNpcSpawnTemplate();
final File spawnFile = npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnTemplate().getFile() : new File(OTHER_XML_FOLDER + "/" + x + "_" + y + ".xml");
final File tempFile = new File(spawnFile.getAbsolutePath().substring(Config.DATAPACK_ROOT.getAbsolutePath().length() + 1).replace('\\', '/') + ".tmp"); final File tempFile = new File(spawnFile.getAbsolutePath().substring(Config.DATAPACK_ROOT.getAbsolutePath().length() + 1).replace('\\', '/') + ".tmp");
try try
{ {
final BufferedReader reader = new BufferedReader(new FileReader(spawnFile)); final BufferedReader reader = new BufferedReader(new FileReader(spawnFile));
final BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile)); final BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile));
final String spawnId = String.valueOf(spawn.getId()); final String spawnId = String.valueOf(spawn.getId());
final String spawnX = String.valueOf(spawn.getX()); final String spawnX = String.valueOf(npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnLocation().getX() : spawn.getX());
final String spawnY = String.valueOf(spawn.getY()); final String spawnY = String.valueOf(npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnLocation().getY() : spawn.getY());
final String spawnZ = String.valueOf(spawn.getZ()); final String spawnZ = String.valueOf(npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnLocation().getZ() : spawn.getZ());
boolean found = false; // in XML you can have more than one spawn with same coords boolean found = false; // in XML you can have more than one spawn with same coords
boolean isMultiLine = false; // in case spawn has more stats boolean isMultiLine = false; // in case spawn has more stats
boolean lastLineFound = false; // used to check for empty file boolean lastLineFound = false; // used to check for empty file

View File

@ -128,8 +128,7 @@ public class NpcActionShift implements IActionShiftHandler
} }
html.replace("%spawnai%", "<font color=FF0000>" + template.getSpawnTemplate().getAI() + "</font>"); html.replace("%spawnai%", "<font color=FF0000>" + template.getSpawnTemplate().getAI() + "</font>");
} }
html.replace("%spawn%", (template != null ? template.getSpawnLocation().getX() : npc.getSpawn().getX()) + " " + (template != null ? template.getSpawnLocation().getY() : npc.getSpawn().getY()) + " " + (template != null ? template.getSpawnLocation().getZ() : npc.getSpawn().getZ()));
html.replace("%spawn%", npc.getSpawn().getX() + " " + npc.getSpawn().getY() + " " + npc.getSpawn().getZ());
if (npc.getSpawn().getRespawnMinDelay() == 0) if (npc.getSpawn().getRespawnMinDelay() == 0)
{ {
html.replace("%resp%", "None"); html.replace("%resp%", "None");

View File

@ -32,6 +32,7 @@ import org.l2jmobius.Config;
import org.l2jmobius.gameserver.data.xml.NpcData; import org.l2jmobius.gameserver.data.xml.NpcData;
import org.l2jmobius.gameserver.model.Spawn; import org.l2jmobius.gameserver.model.Spawn;
import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.spawns.NpcSpawnTemplate;
/** /**
* Spawn data retriever. * Spawn data retriever.
@ -194,16 +195,17 @@ public class SpawnTable
{ {
final int x = ((spawn.getX() - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN; final int x = ((spawn.getX() - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN;
final int y = ((spawn.getY() - World.WORLD_Y_MIN) >> 15) + World.TILE_Y_MIN; final int y = ((spawn.getY() - World.WORLD_Y_MIN) >> 15) + World.TILE_Y_MIN;
final File spawnFile = spawn.getNpcSpawnTemplate() != null ? spawn.getNpcSpawnTemplate().getSpawnTemplate().getFile() : new File(OTHER_XML_FOLDER + "/" + x + "_" + y + ".xml"); final NpcSpawnTemplate npcSpawnTemplate = spawn.getNpcSpawnTemplate();
final File spawnFile = npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnTemplate().getFile() : new File(OTHER_XML_FOLDER + "/" + x + "_" + y + ".xml");
final File tempFile = new File(spawnFile.getAbsolutePath().substring(Config.DATAPACK_ROOT.getAbsolutePath().length() + 1).replace('\\', '/') + ".tmp"); final File tempFile = new File(spawnFile.getAbsolutePath().substring(Config.DATAPACK_ROOT.getAbsolutePath().length() + 1).replace('\\', '/') + ".tmp");
try try
{ {
final BufferedReader reader = new BufferedReader(new FileReader(spawnFile)); final BufferedReader reader = new BufferedReader(new FileReader(spawnFile));
final BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile)); final BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile));
final String spawnId = String.valueOf(spawn.getId()); final String spawnId = String.valueOf(spawn.getId());
final String spawnX = String.valueOf(spawn.getX()); final String spawnX = String.valueOf(npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnLocation().getX() : spawn.getX());
final String spawnY = String.valueOf(spawn.getY()); final String spawnY = String.valueOf(npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnLocation().getY() : spawn.getY());
final String spawnZ = String.valueOf(spawn.getZ()); final String spawnZ = String.valueOf(npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnLocation().getZ() : spawn.getZ());
boolean found = false; // in XML you can have more than one spawn with same coords boolean found = false; // in XML you can have more than one spawn with same coords
boolean isMultiLine = false; // in case spawn has more stats boolean isMultiLine = false; // in case spawn has more stats
boolean lastLineFound = false; // used to check for empty file boolean lastLineFound = false; // used to check for empty file

View File

@ -128,8 +128,7 @@ public class NpcActionShift implements IActionShiftHandler
} }
html.replace("%spawnai%", "<font color=FF0000>" + template.getSpawnTemplate().getAI() + "</font>"); html.replace("%spawnai%", "<font color=FF0000>" + template.getSpawnTemplate().getAI() + "</font>");
} }
html.replace("%spawn%", (template != null ? template.getSpawnLocation().getX() : npc.getSpawn().getX()) + " " + (template != null ? template.getSpawnLocation().getY() : npc.getSpawn().getY()) + " " + (template != null ? template.getSpawnLocation().getZ() : npc.getSpawn().getZ()));
html.replace("%spawn%", npc.getSpawn().getX() + " " + npc.getSpawn().getY() + " " + npc.getSpawn().getZ());
if (npc.getSpawn().getRespawnMinDelay() == 0) if (npc.getSpawn().getRespawnMinDelay() == 0)
{ {
html.replace("%resp%", "None"); html.replace("%resp%", "None");

View File

@ -32,6 +32,7 @@ import org.l2jmobius.Config;
import org.l2jmobius.gameserver.data.xml.NpcData; import org.l2jmobius.gameserver.data.xml.NpcData;
import org.l2jmobius.gameserver.model.Spawn; import org.l2jmobius.gameserver.model.Spawn;
import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.spawns.NpcSpawnTemplate;
/** /**
* Spawn data retriever. * Spawn data retriever.
@ -194,16 +195,17 @@ public class SpawnTable
{ {
final int x = ((spawn.getX() - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN; final int x = ((spawn.getX() - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN;
final int y = ((spawn.getY() - World.WORLD_Y_MIN) >> 15) + World.TILE_Y_MIN; final int y = ((spawn.getY() - World.WORLD_Y_MIN) >> 15) + World.TILE_Y_MIN;
final File spawnFile = spawn.getNpcSpawnTemplate() != null ? spawn.getNpcSpawnTemplate().getSpawnTemplate().getFile() : new File(OTHER_XML_FOLDER + "/" + x + "_" + y + ".xml"); final NpcSpawnTemplate npcSpawnTemplate = spawn.getNpcSpawnTemplate();
final File spawnFile = npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnTemplate().getFile() : new File(OTHER_XML_FOLDER + "/" + x + "_" + y + ".xml");
final File tempFile = new File(spawnFile.getAbsolutePath().substring(Config.DATAPACK_ROOT.getAbsolutePath().length() + 1).replace('\\', '/') + ".tmp"); final File tempFile = new File(spawnFile.getAbsolutePath().substring(Config.DATAPACK_ROOT.getAbsolutePath().length() + 1).replace('\\', '/') + ".tmp");
try try
{ {
final BufferedReader reader = new BufferedReader(new FileReader(spawnFile)); final BufferedReader reader = new BufferedReader(new FileReader(spawnFile));
final BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile)); final BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile));
final String spawnId = String.valueOf(spawn.getId()); final String spawnId = String.valueOf(spawn.getId());
final String spawnX = String.valueOf(spawn.getX()); final String spawnX = String.valueOf(npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnLocation().getX() : spawn.getX());
final String spawnY = String.valueOf(spawn.getY()); final String spawnY = String.valueOf(npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnLocation().getY() : spawn.getY());
final String spawnZ = String.valueOf(spawn.getZ()); final String spawnZ = String.valueOf(npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnLocation().getZ() : spawn.getZ());
boolean found = false; // in XML you can have more than one spawn with same coords boolean found = false; // in XML you can have more than one spawn with same coords
boolean isMultiLine = false; // in case spawn has more stats boolean isMultiLine = false; // in case spawn has more stats
boolean lastLineFound = false; // used to check for empty file boolean lastLineFound = false; // used to check for empty file

View File

@ -128,8 +128,7 @@ public class NpcActionShift implements IActionShiftHandler
} }
html.replace("%spawnai%", "<font color=FF0000>" + template.getSpawnTemplate().getAI() + "</font>"); html.replace("%spawnai%", "<font color=FF0000>" + template.getSpawnTemplate().getAI() + "</font>");
} }
html.replace("%spawn%", (template != null ? template.getSpawnLocation().getX() : npc.getSpawn().getX()) + " " + (template != null ? template.getSpawnLocation().getY() : npc.getSpawn().getY()) + " " + (template != null ? template.getSpawnLocation().getZ() : npc.getSpawn().getZ()));
html.replace("%spawn%", npc.getSpawn().getX() + " " + npc.getSpawn().getY() + " " + npc.getSpawn().getZ());
if (npc.getSpawn().getRespawnMinDelay() == 0) if (npc.getSpawn().getRespawnMinDelay() == 0)
{ {
html.replace("%resp%", "None"); html.replace("%resp%", "None");

View File

@ -32,6 +32,7 @@ import org.l2jmobius.Config;
import org.l2jmobius.gameserver.data.xml.NpcData; import org.l2jmobius.gameserver.data.xml.NpcData;
import org.l2jmobius.gameserver.model.Spawn; import org.l2jmobius.gameserver.model.Spawn;
import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.spawns.NpcSpawnTemplate;
/** /**
* Spawn data retriever. * Spawn data retriever.
@ -194,16 +195,17 @@ public class SpawnTable
{ {
final int x = ((spawn.getX() - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN; final int x = ((spawn.getX() - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN;
final int y = ((spawn.getY() - World.WORLD_Y_MIN) >> 15) + World.TILE_Y_MIN; final int y = ((spawn.getY() - World.WORLD_Y_MIN) >> 15) + World.TILE_Y_MIN;
final File spawnFile = spawn.getNpcSpawnTemplate() != null ? spawn.getNpcSpawnTemplate().getSpawnTemplate().getFile() : new File(OTHER_XML_FOLDER + "/" + x + "_" + y + ".xml"); final NpcSpawnTemplate npcSpawnTemplate = spawn.getNpcSpawnTemplate();
final File spawnFile = npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnTemplate().getFile() : new File(OTHER_XML_FOLDER + "/" + x + "_" + y + ".xml");
final File tempFile = new File(spawnFile.getAbsolutePath().substring(Config.DATAPACK_ROOT.getAbsolutePath().length() + 1).replace('\\', '/') + ".tmp"); final File tempFile = new File(spawnFile.getAbsolutePath().substring(Config.DATAPACK_ROOT.getAbsolutePath().length() + 1).replace('\\', '/') + ".tmp");
try try
{ {
final BufferedReader reader = new BufferedReader(new FileReader(spawnFile)); final BufferedReader reader = new BufferedReader(new FileReader(spawnFile));
final BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile)); final BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile));
final String spawnId = String.valueOf(spawn.getId()); final String spawnId = String.valueOf(spawn.getId());
final String spawnX = String.valueOf(spawn.getX()); final String spawnX = String.valueOf(npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnLocation().getX() : spawn.getX());
final String spawnY = String.valueOf(spawn.getY()); final String spawnY = String.valueOf(npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnLocation().getY() : spawn.getY());
final String spawnZ = String.valueOf(spawn.getZ()); final String spawnZ = String.valueOf(npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnLocation().getZ() : spawn.getZ());
boolean found = false; // in XML you can have more than one spawn with same coords boolean found = false; // in XML you can have more than one spawn with same coords
boolean isMultiLine = false; // in case spawn has more stats boolean isMultiLine = false; // in case spawn has more stats
boolean lastLineFound = false; // used to check for empty file boolean lastLineFound = false; // used to check for empty file

View File

@ -128,8 +128,7 @@ public class NpcActionShift implements IActionShiftHandler
} }
html.replace("%spawnai%", "<font color=FF0000>" + template.getSpawnTemplate().getAI() + "</font>"); html.replace("%spawnai%", "<font color=FF0000>" + template.getSpawnTemplate().getAI() + "</font>");
} }
html.replace("%spawn%", (template != null ? template.getSpawnLocation().getX() : npc.getSpawn().getX()) + " " + (template != null ? template.getSpawnLocation().getY() : npc.getSpawn().getY()) + " " + (template != null ? template.getSpawnLocation().getZ() : npc.getSpawn().getZ()));
html.replace("%spawn%", npc.getSpawn().getX() + " " + npc.getSpawn().getY() + " " + npc.getSpawn().getZ());
if (npc.getSpawn().getRespawnMinDelay() == 0) if (npc.getSpawn().getRespawnMinDelay() == 0)
{ {
html.replace("%resp%", "None"); html.replace("%resp%", "None");

View File

@ -32,6 +32,7 @@ import org.l2jmobius.Config;
import org.l2jmobius.gameserver.data.xml.NpcData; import org.l2jmobius.gameserver.data.xml.NpcData;
import org.l2jmobius.gameserver.model.Spawn; import org.l2jmobius.gameserver.model.Spawn;
import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.spawns.NpcSpawnTemplate;
/** /**
* Spawn data retriever. * Spawn data retriever.
@ -194,16 +195,17 @@ public class SpawnTable
{ {
final int x = ((spawn.getX() - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN; final int x = ((spawn.getX() - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN;
final int y = ((spawn.getY() - World.WORLD_Y_MIN) >> 15) + World.TILE_Y_MIN; final int y = ((spawn.getY() - World.WORLD_Y_MIN) >> 15) + World.TILE_Y_MIN;
final File spawnFile = spawn.getNpcSpawnTemplate() != null ? spawn.getNpcSpawnTemplate().getSpawnTemplate().getFile() : new File(OTHER_XML_FOLDER + "/" + x + "_" + y + ".xml"); final NpcSpawnTemplate npcSpawnTemplate = spawn.getNpcSpawnTemplate();
final File spawnFile = npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnTemplate().getFile() : new File(OTHER_XML_FOLDER + "/" + x + "_" + y + ".xml");
final File tempFile = new File(spawnFile.getAbsolutePath().substring(Config.DATAPACK_ROOT.getAbsolutePath().length() + 1).replace('\\', '/') + ".tmp"); final File tempFile = new File(spawnFile.getAbsolutePath().substring(Config.DATAPACK_ROOT.getAbsolutePath().length() + 1).replace('\\', '/') + ".tmp");
try try
{ {
final BufferedReader reader = new BufferedReader(new FileReader(spawnFile)); final BufferedReader reader = new BufferedReader(new FileReader(spawnFile));
final BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile)); final BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile));
final String spawnId = String.valueOf(spawn.getId()); final String spawnId = String.valueOf(spawn.getId());
final String spawnX = String.valueOf(spawn.getX()); final String spawnX = String.valueOf(npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnLocation().getX() : spawn.getX());
final String spawnY = String.valueOf(spawn.getY()); final String spawnY = String.valueOf(npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnLocation().getY() : spawn.getY());
final String spawnZ = String.valueOf(spawn.getZ()); final String spawnZ = String.valueOf(npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnLocation().getZ() : spawn.getZ());
boolean found = false; // in XML you can have more than one spawn with same coords boolean found = false; // in XML you can have more than one spawn with same coords
boolean isMultiLine = false; // in case spawn has more stats boolean isMultiLine = false; // in case spawn has more stats
boolean lastLineFound = false; // used to check for empty file boolean lastLineFound = false; // used to check for empty file

View File

@ -128,8 +128,7 @@ public class NpcActionShift implements IActionShiftHandler
} }
html.replace("%spawnai%", "<font color=FF0000>" + template.getSpawnTemplate().getAI() + "</font>"); html.replace("%spawnai%", "<font color=FF0000>" + template.getSpawnTemplate().getAI() + "</font>");
} }
html.replace("%spawn%", (template != null ? template.getSpawnLocation().getX() : npc.getSpawn().getX()) + " " + (template != null ? template.getSpawnLocation().getY() : npc.getSpawn().getY()) + " " + (template != null ? template.getSpawnLocation().getZ() : npc.getSpawn().getZ()));
html.replace("%spawn%", npc.getSpawn().getX() + " " + npc.getSpawn().getY() + " " + npc.getSpawn().getZ());
if (npc.getSpawn().getRespawnMinDelay() == 0) if (npc.getSpawn().getRespawnMinDelay() == 0)
{ {
html.replace("%resp%", "None"); html.replace("%resp%", "None");

View File

@ -32,6 +32,7 @@ import org.l2jmobius.Config;
import org.l2jmobius.gameserver.data.xml.NpcData; import org.l2jmobius.gameserver.data.xml.NpcData;
import org.l2jmobius.gameserver.model.Spawn; import org.l2jmobius.gameserver.model.Spawn;
import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.spawns.NpcSpawnTemplate;
/** /**
* Spawn data retriever. * Spawn data retriever.
@ -194,16 +195,17 @@ public class SpawnTable
{ {
final int x = ((spawn.getX() - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN; final int x = ((spawn.getX() - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN;
final int y = ((spawn.getY() - World.WORLD_Y_MIN) >> 15) + World.TILE_Y_MIN; final int y = ((spawn.getY() - World.WORLD_Y_MIN) >> 15) + World.TILE_Y_MIN;
final File spawnFile = spawn.getNpcSpawnTemplate() != null ? spawn.getNpcSpawnTemplate().getSpawnTemplate().getFile() : new File(OTHER_XML_FOLDER + "/" + x + "_" + y + ".xml"); final NpcSpawnTemplate npcSpawnTemplate = spawn.getNpcSpawnTemplate();
final File spawnFile = npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnTemplate().getFile() : new File(OTHER_XML_FOLDER + "/" + x + "_" + y + ".xml");
final File tempFile = new File(spawnFile.getAbsolutePath().substring(Config.DATAPACK_ROOT.getAbsolutePath().length() + 1).replace('\\', '/') + ".tmp"); final File tempFile = new File(spawnFile.getAbsolutePath().substring(Config.DATAPACK_ROOT.getAbsolutePath().length() + 1).replace('\\', '/') + ".tmp");
try try
{ {
final BufferedReader reader = new BufferedReader(new FileReader(spawnFile)); final BufferedReader reader = new BufferedReader(new FileReader(spawnFile));
final BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile)); final BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile));
final String spawnId = String.valueOf(spawn.getId()); final String spawnId = String.valueOf(spawn.getId());
final String spawnX = String.valueOf(spawn.getX()); final String spawnX = String.valueOf(npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnLocation().getX() : spawn.getX());
final String spawnY = String.valueOf(spawn.getY()); final String spawnY = String.valueOf(npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnLocation().getY() : spawn.getY());
final String spawnZ = String.valueOf(spawn.getZ()); final String spawnZ = String.valueOf(npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnLocation().getZ() : spawn.getZ());
boolean found = false; // in XML you can have more than one spawn with same coords boolean found = false; // in XML you can have more than one spawn with same coords
boolean isMultiLine = false; // in case spawn has more stats boolean isMultiLine = false; // in case spawn has more stats
boolean lastLineFound = false; // used to check for empty file boolean lastLineFound = false; // used to check for empty file

View File

@ -128,8 +128,7 @@ public class NpcActionShift implements IActionShiftHandler
} }
html.replace("%spawnai%", "<font color=FF0000>" + template.getSpawnTemplate().getAI() + "</font>"); html.replace("%spawnai%", "<font color=FF0000>" + template.getSpawnTemplate().getAI() + "</font>");
} }
html.replace("%spawn%", (template != null ? template.getSpawnLocation().getX() : npc.getSpawn().getX()) + " " + (template != null ? template.getSpawnLocation().getY() : npc.getSpawn().getY()) + " " + (template != null ? template.getSpawnLocation().getZ() : npc.getSpawn().getZ()));
html.replace("%spawn%", npc.getSpawn().getX() + " " + npc.getSpawn().getY() + " " + npc.getSpawn().getZ());
if (npc.getSpawn().getRespawnMinDelay() == 0) if (npc.getSpawn().getRespawnMinDelay() == 0)
{ {
html.replace("%resp%", "None"); html.replace("%resp%", "None");

View File

@ -32,6 +32,7 @@ import org.l2jmobius.Config;
import org.l2jmobius.gameserver.data.xml.NpcData; import org.l2jmobius.gameserver.data.xml.NpcData;
import org.l2jmobius.gameserver.model.Spawn; import org.l2jmobius.gameserver.model.Spawn;
import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.spawns.NpcSpawnTemplate;
/** /**
* Spawn data retriever. * Spawn data retriever.
@ -194,16 +195,17 @@ public class SpawnTable
{ {
final int x = ((spawn.getX() - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN; final int x = ((spawn.getX() - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN;
final int y = ((spawn.getY() - World.WORLD_Y_MIN) >> 15) + World.TILE_Y_MIN; final int y = ((spawn.getY() - World.WORLD_Y_MIN) >> 15) + World.TILE_Y_MIN;
final File spawnFile = spawn.getNpcSpawnTemplate() != null ? spawn.getNpcSpawnTemplate().getSpawnTemplate().getFile() : new File(OTHER_XML_FOLDER + "/" + x + "_" + y + ".xml"); final NpcSpawnTemplate npcSpawnTemplate = spawn.getNpcSpawnTemplate();
final File spawnFile = npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnTemplate().getFile() : new File(OTHER_XML_FOLDER + "/" + x + "_" + y + ".xml");
final File tempFile = new File(spawnFile.getAbsolutePath().substring(Config.DATAPACK_ROOT.getAbsolutePath().length() + 1).replace('\\', '/') + ".tmp"); final File tempFile = new File(spawnFile.getAbsolutePath().substring(Config.DATAPACK_ROOT.getAbsolutePath().length() + 1).replace('\\', '/') + ".tmp");
try try
{ {
final BufferedReader reader = new BufferedReader(new FileReader(spawnFile)); final BufferedReader reader = new BufferedReader(new FileReader(spawnFile));
final BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile)); final BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile));
final String spawnId = String.valueOf(spawn.getId()); final String spawnId = String.valueOf(spawn.getId());
final String spawnX = String.valueOf(spawn.getX()); final String spawnX = String.valueOf(npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnLocation().getX() : spawn.getX());
final String spawnY = String.valueOf(spawn.getY()); final String spawnY = String.valueOf(npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnLocation().getY() : spawn.getY());
final String spawnZ = String.valueOf(spawn.getZ()); final String spawnZ = String.valueOf(npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnLocation().getZ() : spawn.getZ());
boolean found = false; // in XML you can have more than one spawn with same coords boolean found = false; // in XML you can have more than one spawn with same coords
boolean isMultiLine = false; // in case spawn has more stats boolean isMultiLine = false; // in case spawn has more stats
boolean lastLineFound = false; // used to check for empty file boolean lastLineFound = false; // used to check for empty file

View File

@ -128,8 +128,7 @@ public class NpcActionShift implements IActionShiftHandler
} }
html.replace("%spawnai%", "<font color=FF0000>" + template.getSpawnTemplate().getAI() + "</font>"); html.replace("%spawnai%", "<font color=FF0000>" + template.getSpawnTemplate().getAI() + "</font>");
} }
html.replace("%spawn%", (template != null ? template.getSpawnLocation().getX() : npc.getSpawn().getX()) + " " + (template != null ? template.getSpawnLocation().getY() : npc.getSpawn().getY()) + " " + (template != null ? template.getSpawnLocation().getZ() : npc.getSpawn().getZ()));
html.replace("%spawn%", npc.getSpawn().getX() + " " + npc.getSpawn().getY() + " " + npc.getSpawn().getZ());
if (npc.getSpawn().getRespawnMinDelay() == 0) if (npc.getSpawn().getRespawnMinDelay() == 0)
{ {
html.replace("%resp%", "None"); html.replace("%resp%", "None");

View File

@ -32,6 +32,7 @@ import org.l2jmobius.Config;
import org.l2jmobius.gameserver.data.xml.NpcData; import org.l2jmobius.gameserver.data.xml.NpcData;
import org.l2jmobius.gameserver.model.Spawn; import org.l2jmobius.gameserver.model.Spawn;
import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.spawns.NpcSpawnTemplate;
/** /**
* Spawn data retriever. * Spawn data retriever.
@ -194,16 +195,17 @@ public class SpawnTable
{ {
final int x = ((spawn.getX() - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN; final int x = ((spawn.getX() - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN;
final int y = ((spawn.getY() - World.WORLD_Y_MIN) >> 15) + World.TILE_Y_MIN; final int y = ((spawn.getY() - World.WORLD_Y_MIN) >> 15) + World.TILE_Y_MIN;
final File spawnFile = spawn.getNpcSpawnTemplate() != null ? spawn.getNpcSpawnTemplate().getSpawnTemplate().getFile() : new File(OTHER_XML_FOLDER + "/" + x + "_" + y + ".xml"); final NpcSpawnTemplate npcSpawnTemplate = spawn.getNpcSpawnTemplate();
final File spawnFile = npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnTemplate().getFile() : new File(OTHER_XML_FOLDER + "/" + x + "_" + y + ".xml");
final File tempFile = new File(spawnFile.getAbsolutePath().substring(Config.DATAPACK_ROOT.getAbsolutePath().length() + 1).replace('\\', '/') + ".tmp"); final File tempFile = new File(spawnFile.getAbsolutePath().substring(Config.DATAPACK_ROOT.getAbsolutePath().length() + 1).replace('\\', '/') + ".tmp");
try try
{ {
final BufferedReader reader = new BufferedReader(new FileReader(spawnFile)); final BufferedReader reader = new BufferedReader(new FileReader(spawnFile));
final BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile)); final BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile));
final String spawnId = String.valueOf(spawn.getId()); final String spawnId = String.valueOf(spawn.getId());
final String spawnX = String.valueOf(spawn.getX()); final String spawnX = String.valueOf(npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnLocation().getX() : spawn.getX());
final String spawnY = String.valueOf(spawn.getY()); final String spawnY = String.valueOf(npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnLocation().getY() : spawn.getY());
final String spawnZ = String.valueOf(spawn.getZ()); final String spawnZ = String.valueOf(npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnLocation().getZ() : spawn.getZ());
boolean found = false; // in XML you can have more than one spawn with same coords boolean found = false; // in XML you can have more than one spawn with same coords
boolean isMultiLine = false; // in case spawn has more stats boolean isMultiLine = false; // in case spawn has more stats
boolean lastLineFound = false; // used to check for empty file boolean lastLineFound = false; // used to check for empty file

View File

@ -128,8 +128,7 @@ public class NpcActionShift implements IActionShiftHandler
} }
html.replace("%spawnai%", "<font color=FF0000>" + template.getSpawnTemplate().getAI() + "</font>"); html.replace("%spawnai%", "<font color=FF0000>" + template.getSpawnTemplate().getAI() + "</font>");
} }
html.replace("%spawn%", (template != null ? template.getSpawnLocation().getX() : npc.getSpawn().getX()) + " " + (template != null ? template.getSpawnLocation().getY() : npc.getSpawn().getY()) + " " + (template != null ? template.getSpawnLocation().getZ() : npc.getSpawn().getZ()));
html.replace("%spawn%", npc.getSpawn().getX() + " " + npc.getSpawn().getY() + " " + npc.getSpawn().getZ());
if (npc.getSpawn().getRespawnMinDelay() == 0) if (npc.getSpawn().getRespawnMinDelay() == 0)
{ {
html.replace("%resp%", "None"); html.replace("%resp%", "None");

View File

@ -32,6 +32,7 @@ import org.l2jmobius.Config;
import org.l2jmobius.gameserver.data.xml.NpcData; import org.l2jmobius.gameserver.data.xml.NpcData;
import org.l2jmobius.gameserver.model.Spawn; import org.l2jmobius.gameserver.model.Spawn;
import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.spawns.NpcSpawnTemplate;
/** /**
* Spawn data retriever. * Spawn data retriever.
@ -194,16 +195,17 @@ public class SpawnTable
{ {
final int x = ((spawn.getX() - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN; final int x = ((spawn.getX() - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN;
final int y = ((spawn.getY() - World.WORLD_Y_MIN) >> 15) + World.TILE_Y_MIN; final int y = ((spawn.getY() - World.WORLD_Y_MIN) >> 15) + World.TILE_Y_MIN;
final File spawnFile = spawn.getNpcSpawnTemplate() != null ? spawn.getNpcSpawnTemplate().getSpawnTemplate().getFile() : new File(OTHER_XML_FOLDER + "/" + x + "_" + y + ".xml"); final NpcSpawnTemplate npcSpawnTemplate = spawn.getNpcSpawnTemplate();
final File spawnFile = npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnTemplate().getFile() : new File(OTHER_XML_FOLDER + "/" + x + "_" + y + ".xml");
final File tempFile = new File(spawnFile.getAbsolutePath().substring(Config.DATAPACK_ROOT.getAbsolutePath().length() + 1).replace('\\', '/') + ".tmp"); final File tempFile = new File(spawnFile.getAbsolutePath().substring(Config.DATAPACK_ROOT.getAbsolutePath().length() + 1).replace('\\', '/') + ".tmp");
try try
{ {
final BufferedReader reader = new BufferedReader(new FileReader(spawnFile)); final BufferedReader reader = new BufferedReader(new FileReader(spawnFile));
final BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile)); final BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile));
final String spawnId = String.valueOf(spawn.getId()); final String spawnId = String.valueOf(spawn.getId());
final String spawnX = String.valueOf(spawn.getX()); final String spawnX = String.valueOf(npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnLocation().getX() : spawn.getX());
final String spawnY = String.valueOf(spawn.getY()); final String spawnY = String.valueOf(npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnLocation().getY() : spawn.getY());
final String spawnZ = String.valueOf(spawn.getZ()); final String spawnZ = String.valueOf(npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnLocation().getZ() : spawn.getZ());
boolean found = false; // in XML you can have more than one spawn with same coords boolean found = false; // in XML you can have more than one spawn with same coords
boolean isMultiLine = false; // in case spawn has more stats boolean isMultiLine = false; // in case spawn has more stats
boolean lastLineFound = false; // used to check for empty file boolean lastLineFound = false; // used to check for empty file

View File

@ -128,8 +128,7 @@ public class NpcActionShift implements IActionShiftHandler
} }
html.replace("%spawnai%", "<font color=FF0000>" + template.getSpawnTemplate().getAI() + "</font>"); html.replace("%spawnai%", "<font color=FF0000>" + template.getSpawnTemplate().getAI() + "</font>");
} }
html.replace("%spawn%", (template != null ? template.getSpawnLocation().getX() : npc.getSpawn().getX()) + " " + (template != null ? template.getSpawnLocation().getY() : npc.getSpawn().getY()) + " " + (template != null ? template.getSpawnLocation().getZ() : npc.getSpawn().getZ()));
html.replace("%spawn%", npc.getSpawn().getX() + " " + npc.getSpawn().getY() + " " + npc.getSpawn().getZ());
if (npc.getSpawn().getRespawnMinDelay() == 0) if (npc.getSpawn().getRespawnMinDelay() == 0)
{ {
html.replace("%resp%", "None"); html.replace("%resp%", "None");

View File

@ -32,6 +32,7 @@ import org.l2jmobius.Config;
import org.l2jmobius.gameserver.data.xml.NpcData; import org.l2jmobius.gameserver.data.xml.NpcData;
import org.l2jmobius.gameserver.model.Spawn; import org.l2jmobius.gameserver.model.Spawn;
import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.spawns.NpcSpawnTemplate;
/** /**
* Spawn data retriever. * Spawn data retriever.
@ -194,16 +195,17 @@ public class SpawnTable
{ {
final int x = ((spawn.getX() - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN; final int x = ((spawn.getX() - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN;
final int y = ((spawn.getY() - World.WORLD_Y_MIN) >> 15) + World.TILE_Y_MIN; final int y = ((spawn.getY() - World.WORLD_Y_MIN) >> 15) + World.TILE_Y_MIN;
final File spawnFile = spawn.getNpcSpawnTemplate() != null ? spawn.getNpcSpawnTemplate().getSpawnTemplate().getFile() : new File(OTHER_XML_FOLDER + "/" + x + "_" + y + ".xml"); final NpcSpawnTemplate npcSpawnTemplate = spawn.getNpcSpawnTemplate();
final File spawnFile = npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnTemplate().getFile() : new File(OTHER_XML_FOLDER + "/" + x + "_" + y + ".xml");
final File tempFile = new File(spawnFile.getAbsolutePath().substring(Config.DATAPACK_ROOT.getAbsolutePath().length() + 1).replace('\\', '/') + ".tmp"); final File tempFile = new File(spawnFile.getAbsolutePath().substring(Config.DATAPACK_ROOT.getAbsolutePath().length() + 1).replace('\\', '/') + ".tmp");
try try
{ {
final BufferedReader reader = new BufferedReader(new FileReader(spawnFile)); final BufferedReader reader = new BufferedReader(new FileReader(spawnFile));
final BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile)); final BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile));
final String spawnId = String.valueOf(spawn.getId()); final String spawnId = String.valueOf(spawn.getId());
final String spawnX = String.valueOf(spawn.getX()); final String spawnX = String.valueOf(npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnLocation().getX() : spawn.getX());
final String spawnY = String.valueOf(spawn.getY()); final String spawnY = String.valueOf(npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnLocation().getY() : spawn.getY());
final String spawnZ = String.valueOf(spawn.getZ()); final String spawnZ = String.valueOf(npcSpawnTemplate != null ? npcSpawnTemplate.getSpawnLocation().getZ() : spawn.getZ());
boolean found = false; // in XML you can have more than one spawn with same coords boolean found = false; // in XML you can have more than one spawn with same coords
boolean isMultiLine = false; // in case spawn has more stats boolean isMultiLine = false; // in case spawn has more stats
boolean lastLineFound = false; // used to check for empty file boolean lastLineFound = false; // used to check for empty file