Advertisement
Guest User

Untitled

a guest
Jul 22nd, 2017
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.39 KB | None | 0 0
  1. package admincommands;
  2.  
  3. import com.aionengine.gameserver.configs.administration.AdminConfig;
  4. import com.aionengine.gameserver.dataholders.DataManager;
  5. import com.aionengine.gameserver.dataholders.SpawnsData;
  6. import com.aionengine.gameserver.model.gameobjects.player.Player;
  7. import com.aionengine.gameserver.model.templates.WorldMapTemplate;
  8. import com.aionengine.gameserver.model.templates.spawn.SpawnGroup;
  9. import com.aionengine.gameserver.utils.PacketSendUtility;
  10. import com.aionengine.gameserver.utils.chathandlers.AdminCommand;
  11. import org.apache.log4j.Logger;
  12. import org.xml.sax.SAXException;
  13.  
  14. import javax.xml.XMLConstants;
  15. import javax.xml.bind.JAXBContext;
  16. import javax.xml.bind.JAXBException;
  17. import javax.xml.bind.Marshaller;
  18. import javax.xml.validation.Schema;
  19. import javax.xml.validation.SchemaFactory;
  20. import java.io.File;
  21. import java.util.List;
  22.  
  23. /**
  24.  * @author Luno
  25.  * @author ATracer (xml version)
  26.  */
  27.  
  28. public class SaveSpawnData extends AdminCommand {
  29.  
  30.     private static Logger log = Logger.getLogger(SaveSpawnData.class);
  31.  
  32.     public SaveSpawnData() {
  33.         super("save_spawn");
  34.     }
  35.  
  36.     @Override
  37.     public void executeCommand(Player admin, String[] params) {
  38.         if (admin.getAccessLevel() < AdminConfig.COMMAND_SAVESPAWNDATA) {
  39.             PacketSendUtility.sendMessage(admin, "You dont have enough rights to execute this command");
  40.             return;
  41.         }
  42.  
  43.         Schema schema = null;
  44.         SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
  45.  
  46.         try {
  47.             schema = sf.newSchema(new File("./data/static_data/spawns/spawns.xsd"));
  48.         }
  49.         catch (SAXException e1) {
  50.             log.error(e1.getCause());
  51.             PacketSendUtility.sendMessage(admin, "Unexpected error occured during saving");
  52.             return;
  53.         }
  54.  
  55.         boolean isAllSave = params.length == 1 && "all".equalsIgnoreCase(params[0]);
  56.  
  57.         SpawnsData spawnsData = DataManager.SPAWNS_DATA;
  58.         for (WorldMapTemplate template : DataManager.WORLD_MAPS_DATA) {
  59.             List<SpawnGroup> spawnsForWorld = null;
  60.             if (isAllSave)
  61.                 spawnsForWorld = spawnsData.getSpawnsForWorld(template.getMapId());
  62.             else
  63.                 spawnsForWorld = spawnsData.getNewSpawnsForWorld(template.getMapId());
  64.  
  65.             if (spawnsForWorld != null && spawnsForWorld.size() > 0) {
  66.                 SpawnsData data = new SpawnsData();
  67.                 data.getSpawnGroups().addAll(spawnsForWorld);
  68.  
  69.                 File xml = new File("./data/static_data/spawns/new/" + template.getMapId() + ".xml");
  70.  
  71.                 JAXBContext jc;
  72.                 Marshaller marshaller;
  73.                 try {
  74.                     jc = JAXBContext.newInstance(SpawnsData.class);
  75.                     marshaller = jc.createMarshaller();
  76.                     marshaller.setSchema(schema);
  77.                     marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
  78.                     marshaller.marshal(data, xml);
  79.                 }
  80.                 catch (JAXBException e) {
  81.                     log.error(e.getCause());
  82.                     PacketSendUtility.sendMessage(admin, "Unexpected error occured during saving");
  83.                     return;
  84.                 }
  85.             }
  86.         }
  87.         PacketSendUtility.sendMessage(admin, "Spawn data was saved into /static_data/spawns/new folder");
  88.     }
  89. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement