Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- diff --git a/aCis_gameserver/java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminSpawn.java b/aCis_gameserver/java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminSpawn.java
- index eb150ae5..9b763088 100644
- --- a/aCis_gameserver/java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminSpawn.java
- +++ b/aCis_gameserver/java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminSpawn.java
- @@ -1,5 +1,10 @@
- package net.sf.l2j.gameserver.handler.admincommandhandlers;
- +import java.io.BufferedReader;
- +import java.io.BufferedWriter;
- +import java.io.File;
- +import java.io.FileReader;
- +import java.io.FileWriter;
- import java.util.List;
- import java.util.StringTokenizer;
- @@ -25,6 +30,8 @@ import net.sf.l2j.gameserver.network.serverpackets.SystemMessage;
- public class AdminSpawn implements IAdminCommandHandler
- {
- + private static final String OTHER_XML_FOLDER = "./data/xml/spawnlist/custom";
- +
- private static final String[] ADMIN_COMMANDS =
- {
- "admin_list_spawns",
- @@ -196,7 +203,7 @@ public class AdminSpawn implements IAdminCommandHandler
- spawn.setLoc(targetWorldObject.getPosition());
- spawn.setRespawnDelay(respawnTime);
- spawn.doSpawn(false);
- -
- + addSpawn(spawn);
- player.sendMessage("You spawned " + template.getName() + ". - Cmd: " + cmd);
- }
- @@ -259,4 +266,97 @@ public class AdminSpawn implements IAdminCommandHandler
- html.setHtml(sb.toString());
- player.sendPacket(html);
- }
- +
- + private static void addSpawn(Spawn spawn)
- + {
- + SpawnManager.getInstance().addSpawn(spawn);
- +
- + // Create output directory if it doesn't exist
- + final File outputDirectory = new File(OTHER_XML_FOLDER);
- + if (!outputDirectory.exists())
- + {
- + try
- + {
- + outputDirectory.mkdir();
- + }
- + catch (SecurityException se)
- + {
- + // empty
- + }
- + }
- +
- + // XML file for spawn
- + final String name = spawn.getNpc().getName().replaceAll("(\\s|')+","").toLowerCase() + "_" + System.currentTimeMillis();
- + final String npcMakerName = spawn.getNpc().getName().replaceAll("(\\s|')+","").toLowerCase() + "_" + System.nanoTime();
- + final String fileName = spawn.getNpc().getName().replaceAll("(\\s|')+","").toLowerCase();
- +
- + final int x = ((spawn.getLocX() - World.WORLD_X_MIN) >> 15) + World.TILE_X_MIN;
- + final int y = ((spawn.getLocY() - World.WORLD_Y_MIN) >> 15) + World.TILE_Y_MIN;
- + final File spawnFile = new File(OTHER_XML_FOLDER + "/" + fileName + "_" + x + "_" + y + ".xml");
- +
- + // Write info to XML
- + final String spawnId = String.valueOf(spawn.getNpcId());
- + final String spawnLoc = String.valueOf(spawn.getLocX() + ";" + spawn.getLocY() + ";" + spawn.getLocZ() + ";" + spawn.getHeading());
- +
- + final String respawnDelay = spawn.calculateRespawnDelay() + "sec";
- +
- + if (spawnFile.exists()) // update
- + {
- + final File tempFile = new File(OTHER_XML_FOLDER + "/" + name + "_" + x + "_" + y + ".tmp");
- + try (BufferedReader reader = new BufferedReader(new FileReader(spawnFile));
- + BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile)))
- + {
- + String currentLine;
- + while ((currentLine = reader.readLine()) != null)
- + {
- + if (currentLine.contains("</list>"))
- + {
- + writer.write(" <territory name=\"" + name + "\" minZ=\"" + (spawn.getLocZ()) + "\" maxZ=\"" + (spawn.getLocZ() + 16) + "\">\n");
- + writer.write(" <node x=\"" + (spawn.getLocX() + 50) + "\" y=\"" + (spawn.getLocY() + 50) + "\" />\n");
- + writer.write(" <node x=\"" + (spawn.getLocX() - 50) + "\" y=\"" + (spawn.getLocY() + 50) + "\" />\n");
- + writer.write(" <node x=\"" + (spawn.getLocX() - 50) + "\" y=\"" + (spawn.getLocY() - 50) + "\" />\n");
- + writer.write(" <node x=\"" + (spawn.getLocX() + 50) + "\" y=\"" + (spawn.getLocY() - 50) + "\" />\n");
- + writer.write(" </territory>\n");
- + writer.write(" <npcmaker name=\"" + npcMakerName + "\" territory=\"" + name + "\" maximumNpcs=\"" + 1 + "\">\n");
- + writer.write(" <npc id=\"" + spawnId + "\" pos=\"" + spawnLoc + "\" total=\"" + 1 + "\" respawn=\"" + respawnDelay + "\" /> <!-- " + spawn.getNpc().getTemplate().getName() + " -->\n");
- + writer.write(" </npcmaker>\n");
- + writer.write(currentLine + "\n");
- + continue;
- + }
- + writer.write(currentLine + "\n");
- + }
- + writer.close();
- + reader.close();
- + spawnFile.delete();
- + tempFile.renameTo(spawnFile);
- + }
- + catch (Exception e)
- + {
- + LOGGER.warn("Could not store spawn in the spawn XML files: " + e);
- + }
- + }
- + else // new file
- + {
- + try (BufferedWriter writer = new BufferedWriter(new FileWriter(spawnFile)))
- + {
- + writer.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
- + writer.write("<list>\n");
- + writer.write(" <territory name=\"" + name + "\" minZ=\"" + (spawn.getLocZ()) + "\" maxZ=\"" + (spawn.getLocZ() + 16) + "\">\n");
- + writer.write(" <node x=\"" + (spawn.getLocX() + 50) + "\" y=\"" + (spawn.getLocY() + 50) + "\" />\n");
- + writer.write(" <node x=\"" + (spawn.getLocX() - 50) + "\" y=\"" + (spawn.getLocY() + 50) + "\" />\n");
- + writer.write(" <node x=\"" + (spawn.getLocX() - 50) + "\" y=\"" + (spawn.getLocY() - 50) + "\" />\n");
- + writer.write(" <node x=\"" + (spawn.getLocX() + 50) + "\" y=\"" + (spawn.getLocY() - 50) + "\" />\n");
- + writer.write(" </territory>\n");
- + writer.write(" <npcmaker name=\"" + npcMakerName + "\" territory=\"" + name + "\" maximumNpcs=\"" + 1 + "\">\n");
- + writer.write(" <npc id=\"" + spawnId + "\" pos=\"" + spawnLoc + "\" total=\"" + 1 + "\" respawn=\"" + respawnDelay + "\" /> <!-- " + spawn.getNpc().getTemplate().getName() + " -->\n");
- + writer.write(" </npcmaker>\n");
- + writer.write("</list>\n");
- + writer.close();
- + }
- + catch (Exception e)
- + {
- + LOGGER.warn("Spawn " + spawn + " could not be added to the spawn XML files: " + e);
- + }
- + }
- + }
- }
- \ No newline at end of file
Advertisement
Add Comment
Please, Sign In to add comment