public List<Spawner> loadAllSpawnersFromWorld(World w) { List<Spawner> list = new ArrayList<Spawner>(); String ch = File.separator; String worldDir = w.getWorldFolder() + ch + "cs_data" + ch; String entityDir = worldDir + ch + "entity"; String spawnerDir = worldDir + ch + "spawner"; File spawnerFiles = new File(spawnerDir); File entityFiles = new File(entityDir); if (!spawnerFiles.exists()) spawnerFiles.mkdirs(); if (!entityFiles.exists()) entityFiles.mkdirs(); for (File spawnerFile : spawnerFiles.listFiles()) { Spawner s = PLUGIN.getFileManager().loadSpawner(spawnerFile); List<Integer> sEntsAsIDs = s.getTypeData(); List<SpawnableEntity> sEnts = new ArrayList<SpawnableEntity>(); ArrayList<SpawnableEntity> containedEntities = new ArrayList<SpawnableEntity>(); for (Integer i : sEntsAsIDs) { sEnts.add(CustomSpawners.getEntity(i.toString())); } for (File f : entityFiles.listFiles()) { containedEntities.add(PLUGIN.getFileManager().loadEntity(f)); } if (containedEntities.containsAll(sEnts)) list.add(s); } return list; }
// Load spawners and entities from world files public List<Spawner> loadData() { Iterator<World> worldItr = PLUGIN.getServer().getWorlds().iterator(); List<Spawner> loaded = new ArrayList<Spawner>(); while (worldItr.hasNext()) { World w = worldItr.next(); Iterator<SpawnableEntity> entitiesFromWorld = loadAllEntitiesFromWorld(w).iterator(); while (entitiesFromWorld.hasNext()) { SpawnableEntity e = entitiesFromWorld.next(); int nextId = PLUGIN.getNextEntityId(); if (CustomSpawners.entities.containsKey(e.getId())) { e = e.cloneWithNewId(nextId); } CustomSpawners.entities.put(nextId, e); } Iterator<Spawner> spawnersFromWorld = loadAllSpawnersFromWorld(w).iterator(); while (spawnersFromWorld.hasNext()) { Spawner s = spawnersFromWorld.next(); boolean sameSpawner = false; for (Spawner s1 : CustomSpawners.spawners.values()) { if (s1.getLoc().equals(s.getLoc())) { sameSpawner = true; } } if (sameSpawner) { continue; } else { int nextId = PLUGIN.getNextSpawnerId(); Spawner s1 = PLUGIN.cloneWithNewId(s); CustomSpawners.spawners.put(nextId, s1); loaded.add(s1); } } } return loaded; }
@SuppressWarnings("deprecation") @Override public void run(Spawner spawner, CommandSender sender, String subCommand, String[] args) { if (!(sender instanceof Player)) { PLUGIN.sendMessage(sender, NO_CONSOLE); return; } Player player = (Player) sender; SpawnableEntity entity = null; String in = getValue(args, 0, ""); if (in.isEmpty()) { Integer selection = CustomSpawners.entitySelection.get(player); if (selection == null) { PLUGIN.sendMessage(sender, NO_ID); return; } entity = CustomSpawners.getEntity(selection); } else { entity = CustomSpawners.getEntity(in); } if (entity == null) { PLUGIN.sendMessage(sender, NO_ID); return; } Block target = player.getTargetBlock(CustomSpawners.transparent, CONFIG.getInt("players.maxDistance", 5)); if (target == null) { PLUGIN.sendMessage( player, ChatColor.RED + "You must look at a block to make a spawner there."); return; } if (target.getType().equals(Material.AIR)) { PLUGIN.sendMessage( player, ChatColor.RED + "You must look at a block to make a spawner there."); return; } Spawner newSpawner = PLUGIN.createSpawner(entity, target.getLocation()); if (CONFIG.getBoolean("data.autosave") && CONFIG.getBoolean("data.saveOnCreate")) { PLUGIN.getFileManager().autosave(newSpawner); } // TODO Add this to wiki. Group addTo = null; if (sender instanceof Player) { Player p = (Player) sender; if (CustomSpawners.groupSelection.containsKey(p)) { addTo = CustomSpawners.getGroup(CustomSpawners.groupSelection.get(sender)); } } else { if (CustomSpawners.consoleGroup != -1) { addTo = CustomSpawners.getGroup(CustomSpawners.consoleGroup); } } if (addTo != null && CONFIG.getBoolean("players.groupAutoAdd", false) && addTo.getType().equals(Group.Type.SPAWNER)) { addTo.addItem(newSpawner); PLUGIN.sendMessage( sender, ChatColor.GREEN + "Successfully created a new " + ChatColor.GOLD + in + ChatColor.GREEN + " spawner with ID number " + ChatColor.GOLD + newSpawner.getId() + ChatColor.GREEN + "! This spawner was added to group " + ChatColor.GOLD + PLUGIN.getFriendlyName(addTo) + ChatColor.GREEN + "."); } PLUGIN.sendMessage( player, ChatColor.GREEN + "Successfully created a " + ChatColor.GOLD + PLUGIN.getFriendlyName(entity) + ChatColor.GREEN + " spawner with ID " + ChatColor.GOLD + PLUGIN.getFriendlyName(newSpawner) + ChatColor.GREEN + "!"); }