mirror of https://github.com/taoneill/war.git
460 lines
16 KiB
Java
460 lines
16 KiB
Java
package com.tommytony.war.mapper;
|
|
|
|
import java.io.File;
|
|
import java.io.IOException;
|
|
import java.util.HashMap;
|
|
import java.util.logging.Level;
|
|
|
|
import org.bukkit.inventory.ItemStack;
|
|
|
|
|
|
import com.tommytony.war.War;
|
|
import com.tommytony.war.config.FlagReturn;
|
|
import com.tommytony.war.config.TeamConfig;
|
|
import com.tommytony.war.config.TeamSpawnStyle;
|
|
import com.tommytony.war.config.WarConfig;
|
|
import com.tommytony.war.config.WarzoneConfig;
|
|
import com.tommytony.war.job.RestoreWarhubJob;
|
|
import com.tommytony.war.job.RestoreWarzonesJob;
|
|
|
|
/**
|
|
*
|
|
* @author tommytony
|
|
*
|
|
*/
|
|
public class WarTxtMapper {
|
|
|
|
public static void load() {
|
|
load(false);
|
|
}
|
|
|
|
public static void load(boolean convertingToYml) {
|
|
(War.war.getDataFolder()).mkdir();
|
|
(new File(War.war.getDataFolder().getPath() + "/dat")).mkdir();
|
|
PropertiesFile warConfig = new PropertiesFile(War.war.getDataFolder().getPath() + "/war.txt");
|
|
try {
|
|
warConfig.load();
|
|
} catch (IOException e) {
|
|
War.war.log("Failed to load war.txt file.", Level.WARNING);
|
|
e.printStackTrace();
|
|
}
|
|
|
|
// Create file if need be
|
|
boolean newWar = false;
|
|
if (!warConfig.containsKey("warzones")) {
|
|
newWar = true;
|
|
WarTxtMapper.save();
|
|
War.war.log("war.txt settings file created.", Level.INFO);
|
|
try {
|
|
warConfig.load();
|
|
} catch (IOException e) {
|
|
War.war.log("Failed to reload war.txt file after creating it.", Level.WARNING);
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
// warzones
|
|
String warzonesStr = warConfig.getString("warzones");
|
|
RestoreWarzonesJob restoreWarzones = new RestoreWarzonesJob(warzonesStr, newWar, convertingToYml);
|
|
// make sure warhub job is over before this one ends, because this job will launch conversion (which needs the warhub)
|
|
if (War.war.getServer().getScheduler().scheduleSyncDelayedTask(War.war, restoreWarzones, 20) == -1) {
|
|
War.war.log("Failed to schedule warzone-restore job. No warzone was loaded.", Level.WARNING);
|
|
}
|
|
|
|
// zone makers
|
|
String[] makers = warConfig.getString("zoneMakers").split(",");
|
|
War.war.getZoneMakerNames().clear();
|
|
for (String makerName : makers) {
|
|
if (makerName != null && !makerName.equals("")) {
|
|
War.war.getZoneMakerNames().add(makerName);
|
|
}
|
|
}
|
|
|
|
// command whitelist
|
|
String[] whitelist = warConfig.getString("commandWhitelist").split(",");
|
|
War.war.getCommandWhitelist().clear();
|
|
for (String command : whitelist) {
|
|
if (command != null && !command.equals("")) {
|
|
War.war.getCommandWhitelist().add(command);
|
|
}
|
|
}
|
|
|
|
// defaultLoadout
|
|
War.war.getDefaultInventories().clearLoadouts();
|
|
|
|
String loadoutStr = warConfig.getString("defaultLoadout");
|
|
if (loadoutStr != null && !loadoutStr.equals("")) {
|
|
War.war.getDefaultInventories().addLoadout("default", new HashMap<Integer, ItemStack>());
|
|
LoadoutTxtMapper.fromStringToLoadout(loadoutStr, War.war.getDefaultInventories().getLoadout("default"));
|
|
}
|
|
|
|
// defaultExtraLoadouts
|
|
String extraLoadoutStr = warConfig.getString("defaultExtraLoadouts");
|
|
String[] extraLoadoutsSplit = extraLoadoutStr.split(",");
|
|
|
|
for (String nameStr : extraLoadoutsSplit) {
|
|
if (nameStr != null && !nameStr.equals("")) {
|
|
War.war.getDefaultInventories().addLoadout(nameStr, new HashMap<Integer, ItemStack>());
|
|
}
|
|
}
|
|
|
|
for (String extraName : extraLoadoutsSplit) {
|
|
if (extraName != null && !extraName.equals("")) {
|
|
String loadoutString = warConfig.getString(extraName + "Loadout");
|
|
HashMap<Integer, ItemStack> loadout = War.war.getDefaultInventories().getLoadout(extraName);
|
|
LoadoutTxtMapper.fromStringToLoadout(loadoutString, loadout);
|
|
}
|
|
}
|
|
|
|
// maxZones
|
|
if (warConfig.keyExists("maxZones")) {
|
|
War.war.getWarConfig().put(WarConfig.MAXZONES, warConfig.getInt("maxZones"));
|
|
}
|
|
|
|
// defaultLifePool
|
|
if (warConfig.keyExists("defaultLifePool")) {
|
|
War.war.getTeamDefaultConfig().put(TeamConfig.LIFEPOOL, warConfig.getInt("defaultLifePool"));
|
|
}
|
|
|
|
// defaultMonumentHeal
|
|
if (warConfig.keyExists("defaultMonumentHeal")) {
|
|
War.war.getWarzoneDefaultConfig().put(WarzoneConfig.MONUMENTHEAL, warConfig.getInt("defaultMonumentHeal"));
|
|
}
|
|
|
|
// defaultFriendlyFire
|
|
if (warConfig.keyExists("defaultFriendlyFire")) {
|
|
War.war.getWarzoneDefaultConfig().put(WarzoneConfig.FRIENDLYFIRE, warConfig.getBoolean("defaultFriendlyFire"));
|
|
}
|
|
|
|
// defaultAutoAssignOnly
|
|
if (warConfig.keyExists("defaultAutoAssignOnly")) {
|
|
War.war.getWarzoneDefaultConfig().put(WarzoneConfig.AUTOASSIGN, warConfig.getBoolean("defaultAutoAssignOnly"));
|
|
}
|
|
|
|
// defaultFlagPointsOnly
|
|
if (warConfig.keyExists("defaultFlagPointsOnly")) {
|
|
War.war.getTeamDefaultConfig().put(TeamConfig.FLAGPOINTSONLY, warConfig.getBoolean("defaultFlagPointsOnly"));
|
|
}
|
|
|
|
// defaultFlagMustBeHome
|
|
if (warConfig.keyExists("defaultFlagMustBeHome")) {
|
|
War.war.getTeamDefaultConfig().put(TeamConfig.FLAGMUSTBEHOME, warConfig.getBoolean("defaultFlagMustBeHome"));
|
|
}
|
|
|
|
// defaultTeamCap
|
|
if (warConfig.keyExists("defaultTeamCap")) {
|
|
War.war.getTeamDefaultConfig().put(TeamConfig.TEAMSIZE, warConfig.getInt("defaultTeamCap"));
|
|
}
|
|
|
|
// defaultScoreCap
|
|
if (warConfig.keyExists("defaultScoreCap")) {
|
|
War.war.getTeamDefaultConfig().put(TeamConfig.MAXSCORE, warConfig.getInt("defaultScoreCap"));
|
|
}
|
|
|
|
// defaultRespawnTimer
|
|
if (warConfig.keyExists("defaultRespawnTimer")) {
|
|
War.war.getTeamDefaultConfig().put(TeamConfig.RESPAWNTIMER, warConfig.getInt("defaultRespawnTimer"));
|
|
}
|
|
|
|
// pvpInZonesOnly
|
|
if (warConfig.keyExists("pvpInZonesOnly")) {
|
|
War.war.getWarConfig().put(WarConfig.PVPINZONESONLY, warConfig.getBoolean("pvpInZonesOnly"));
|
|
}
|
|
|
|
// defaultBlockHeads
|
|
if (warConfig.keyExists("defaultBlockHeads")) {
|
|
War.war.getWarzoneDefaultConfig().put(WarzoneConfig.BLOCKHEADS, warConfig.getBoolean("defaultBlockHeads"));
|
|
}
|
|
|
|
// buildInZonesOnly
|
|
if (warConfig.keyExists("buildInZonesOnly")) {
|
|
War.war.getWarConfig().put(WarConfig.BUILDINZONESONLY, warConfig.getBoolean("buildInZonesOnly"));
|
|
}
|
|
|
|
// disablePVPMessage
|
|
if (warConfig.keyExists("disablePvpMessage")) {
|
|
War.war.getWarConfig().put(WarConfig.DISABLEPVPMESSAGE, warConfig.getBoolean("disablePvpMessage"));
|
|
}
|
|
|
|
// disableBuildMessage
|
|
if (warConfig.keyExists("disableBuildMessage")) {
|
|
War.war.getWarConfig().put(WarConfig.DISABLEBUILDMESSAGE, warConfig.getBoolean("disableBuildMessage"));
|
|
}
|
|
|
|
// tntInZonesOnly
|
|
if (warConfig.keyExists("tntInZonesOnly")) {
|
|
War.war.getWarConfig().put(WarConfig.TNTINZONESONLY, warConfig.getBoolean("tntInZonesOnly"));
|
|
}
|
|
|
|
// defaultSpawnStyle
|
|
String spawnStyle = warConfig.getString("defaultspawnStyle");
|
|
if (spawnStyle != null && !spawnStyle.equals("")) {
|
|
War.war.getTeamDefaultConfig().put(TeamConfig.SPAWNSTYLE, TeamSpawnStyle.getStyleFromString(spawnStyle));
|
|
}
|
|
|
|
// defaultFlagReturn
|
|
String flagReturn = warConfig.getString("defaultFlagReturn");
|
|
if (flagReturn != null && !flagReturn.equals("")) {
|
|
War.war.getTeamDefaultConfig().put(TeamConfig.FLAGRETURN, FlagReturn.getFromString(flagReturn));
|
|
}
|
|
|
|
// defaultReward
|
|
String defaultRewardStr = warConfig.getString("defaultReward");
|
|
if (defaultRewardStr != null && !defaultRewardStr.equals("")) {
|
|
LoadoutTxtMapper.fromStringToLoadout(defaultRewardStr, War.war.getDefaultInventories().getReward());
|
|
}
|
|
|
|
// defaultUnbreakableZoneBlocks
|
|
if (warConfig.keyExists("defaultUnbreakableZoneBlocks")) {
|
|
War.war.getWarzoneDefaultConfig().put(WarzoneConfig.UNBREAKABLE, warConfig.getBoolean("defaultUnbreakableZoneBlocks"));
|
|
}
|
|
|
|
// defaultNoCreatures
|
|
if (warConfig.keyExists("defaultNoCreatures")) {
|
|
War.war.getWarzoneDefaultConfig().put(WarzoneConfig.NOCREATURES, warConfig.getBoolean("defaultNoCreatures"));
|
|
}
|
|
|
|
// defaultGlassWalls
|
|
if (warConfig.keyExists("defaultGlassWalls")) {
|
|
War.war.getWarzoneDefaultConfig().put(WarzoneConfig.GLASSWALLS, warConfig.getBoolean("defaultGlassWalls"));
|
|
}
|
|
|
|
// defaultPvpInZone
|
|
if (warConfig.keyExists("defaultPvpInZone")) {
|
|
War.war.getWarzoneDefaultConfig().put(WarzoneConfig.PVPINZONE, warConfig.getBoolean("defaultPvpInZone"));
|
|
}
|
|
|
|
// defaultInstaBreak
|
|
if (warConfig.keyExists("defaultInstaBreak")) {
|
|
War.war.getWarzoneDefaultConfig().put(WarzoneConfig.INSTABREAK, warConfig.getBoolean("defaultInstaBreak"));
|
|
}
|
|
|
|
// defaultNoDrops
|
|
if (warConfig.keyExists("defaultNoDrops")) {
|
|
War.war.getWarzoneDefaultConfig().put(WarzoneConfig.NODROPS, warConfig.getBoolean("defaultNoDrops"));
|
|
}
|
|
|
|
// defaultNoHunger
|
|
if (warConfig.keyExists("defaultNoHunger")) {
|
|
War.war.getTeamDefaultConfig().put(TeamConfig.NOHUNGER, warConfig.getBoolean("defaultNoHunger"));
|
|
}
|
|
|
|
// defaultSaturation
|
|
if (warConfig.keyExists("defaultSaturation")) {
|
|
War.war.getTeamDefaultConfig().put(TeamConfig.SATURATION, warConfig.getInt("defaultSaturation"));
|
|
}
|
|
|
|
// defaultMinPlayers
|
|
if (warConfig.keyExists("defaultMinPlayers")) {
|
|
War.war.getWarzoneDefaultConfig().put(WarzoneConfig.MINPLAYERS, warConfig.getInt("defaultMinPlayers"));
|
|
}
|
|
|
|
// defaultMinTeams
|
|
if (warConfig.keyExists("defaultMinTeams")) {
|
|
War.war.getWarzoneDefaultConfig().put(WarzoneConfig.MINTEAMS, warConfig.getInt("defaultMinTeams"));
|
|
}
|
|
|
|
// defaultResetOnEmpty
|
|
if (warConfig.keyExists("defaultResetOnEmpty")) {
|
|
War.war.getWarzoneDefaultConfig().put(WarzoneConfig.RESETONEMPTY, warConfig.getBoolean("defaultResetOnEmpty"));
|
|
}
|
|
|
|
// defaultResetOnLoad
|
|
if (warConfig.keyExists("defaultResetOnLoad")) {
|
|
War.war.getWarzoneDefaultConfig().put(WarzoneConfig.RESETONLOAD, warConfig.getBoolean("defaultResetOnLoad"));
|
|
}
|
|
|
|
// defaultResetOnUnload
|
|
if (warConfig.keyExists("defaultResetOnUnload")) {
|
|
War.war.getWarzoneDefaultConfig().put(WarzoneConfig.RESETONUNLOAD, warConfig.getBoolean("defaultResetOnUnload"));
|
|
}
|
|
|
|
// warhub
|
|
String hubStr = warConfig.getString("warhub");
|
|
if (hubStr != null && !hubStr.equals("")) {
|
|
RestoreWarhubJob restoreWarhub = new RestoreWarhubJob(hubStr);
|
|
if (War.war.getServer().getScheduler().scheduleSyncDelayedTask(War.war, restoreWarhub) == -1) {
|
|
War.war.log("Failed to schedule warhub-restore job. War hub was not loaded.", Level.WARNING);
|
|
}
|
|
}
|
|
|
|
warConfig.close();
|
|
}
|
|
|
|
public static void save() {
|
|
// PropertiesFile warConfig = new PropertiesFile(War.war.getDataFolder().getPath() + "/war.txt");
|
|
// String warzonesStr = "";
|
|
|
|
War.war.log("Saving War with WarTxtMapper", Level.SEVERE);
|
|
|
|
// // warzones
|
|
// for (Warzone zone : War.war.getWarzones()) {
|
|
// warzonesStr += zone.getName() + ",";
|
|
// }
|
|
// warConfig.setString("warzones", warzonesStr);
|
|
//
|
|
// // zone makers: default is none and it means everyone can use /setzone
|
|
// String makersStr = ""; // everyone
|
|
// for (String name : War.war.getZoneMakerNames()) {
|
|
// makersStr += name + ",";
|
|
// }
|
|
// warConfig.setString("zoneMakers", makersStr);
|
|
//
|
|
// // whitelisted commands during a game
|
|
// String commandWhitelistStr = ""; // everyone
|
|
// for (String command : War.war.getCommandWhitelist()) {
|
|
// commandWhitelistStr += command + ",";
|
|
// }
|
|
// warConfig.setString("commandWhitelist", commandWhitelistStr);
|
|
//
|
|
// // defaultLoadout
|
|
// HashMap<Integer, ItemStack> items = War.war.getDefaultInventories().getLoadouts().get("default");
|
|
// warConfig.setString("defaultLoadout", LoadoutTxtMapper.fromLoadoutToString(items));
|
|
//
|
|
// // defaultExtraLoadouts
|
|
// String extraLoadoutsStr = "";
|
|
// for (String name : War.war.getDefaultInventories().getLoadouts().keySet()) {
|
|
// if (!name.equals("default")) {
|
|
// extraLoadoutsStr += name + ",";
|
|
//
|
|
// HashMap<Integer, ItemStack> loadout = War.war.getDefaultInventories().getLoadouts().get(name);
|
|
// warConfig.setString(name + "Loadout", LoadoutTxtMapper.fromLoadoutToString(loadout));
|
|
// }
|
|
// }
|
|
// warConfig.setString("defaultExtraLoadouts", extraLoadoutsStr);
|
|
//
|
|
// // maxZones
|
|
// warConfig.setInt("maxZones", War.war.getWarConfig().getInt(WarConfig.MAXZONES));
|
|
//
|
|
// // defaultLifepool
|
|
// warConfig.setInt("defaultLifePool", War.war.getDefaultLifepool());
|
|
//
|
|
// // defaultMonumentHeal
|
|
// warConfig.setInt("defaultMonumentHeal", War.war.getDefaultMonumentHeal());
|
|
//
|
|
// // defaultFriendlyFire
|
|
// warConfig.setBoolean("defaultFriendlyFire", War.war.isDefaultFriendlyFire());
|
|
//
|
|
// // defaultAutoAssignOnly
|
|
// warConfig.setBoolean("defaultAutoAssignOnly", War.war.isDefaultAutoAssignOnly());
|
|
//
|
|
// // defaultFlagPointsOnly
|
|
// warConfig.setBoolean("defaultFlagPointsOnly", War.war.isDefaultFlagPointsOnly());
|
|
//
|
|
// // defaultFlagMustBeHome
|
|
// warConfig.setBoolean("defaultFlagMustBeHome", War.war.isDefaultFlagMustBeHome());
|
|
//
|
|
// // defaultTeamCap
|
|
// warConfig.setInt("defaultTeamCap", War.war.getDefaultTeamCap());
|
|
//
|
|
// // defaultScoreCap
|
|
// warConfig.setInt("defaultScoreCap", War.war.getDefaultScoreCap());
|
|
//
|
|
// // defaultRespawnTimer
|
|
// warConfig.setInt("defaultRespawnTimer", War.war.getDefaultRespawnTimer());
|
|
//
|
|
// // pvpInZonesOnly
|
|
// warConfig.setBoolean("pvpInZonesOnly", War.war.getWarConfig().getBoolean(WarConfig.PVPINZONESONLY));
|
|
//
|
|
// // defaultBlockHeads
|
|
// warConfig.setBoolean("defaultBlockHeads", War.war.isDefaultBlockHeads());
|
|
//
|
|
// // buildInZonesOnly
|
|
// warConfig.setBoolean("buildInZonesOnly", War.war.getWarConfig().getBoolean(WarConfig.BUILDINZONESONLY));
|
|
//
|
|
// // disablePVPMessage
|
|
// warConfig.setBoolean("disablePvpMessage", War.war.getWarConfig().getBoolean(WarConfig.DISABLEPVPMESSAGE));
|
|
//
|
|
// // disableBuildMessage
|
|
// warConfig.setBoolean("disableBuildMessage", War.war.getWarConfig().getBoolean(WarConfig.DISABLEBUILDMESSAGE));
|
|
//
|
|
// // tntInZonesOnly
|
|
// warConfig.setBoolean("tntInZonesOnly", War.war.getWarConfig().getBoolean(WarConfig.TNTINZONESONLY));
|
|
//
|
|
// // spawnStyle
|
|
// warConfig.setString("spawnStyle", War.war.getDefaultSpawnStyle().toString());
|
|
//
|
|
// // flagReturn
|
|
// warConfig.setString("flagReturn", War.war.getDefaultFlagReturn().toString());
|
|
//
|
|
// // defaultReward
|
|
// String defaultRewardStr = "";
|
|
// HashMap<Integer, ItemStack> rewardItems = War.war.getDefaultInventories().getReward();
|
|
// for (Integer slot : rewardItems.keySet()) {
|
|
// ItemStack item = items.get(slot);
|
|
// if (item != null) {
|
|
// defaultRewardStr += item.getTypeId() + "," + item.getAmount() + "," + slot + ";";
|
|
// }
|
|
// }
|
|
// warConfig.setString("defaultReward", defaultRewardStr);
|
|
//
|
|
// // defaultUnbreakableZoneBlocks
|
|
// warConfig.setBoolean("defaultUnbreakableZoneBlocks", War.war.isDefaultUnbreakableZoneBlocks());
|
|
//
|
|
// // defaultNoCreatures
|
|
// warConfig.setBoolean("defaultNoCreatures", War.war.isDefaultNoCreatures());
|
|
//
|
|
// // defaultGlassWalls
|
|
// warConfig.setBoolean("defaultGlassWalls", War.war.isDefaultGlassWalls());
|
|
//
|
|
// // defaultPvpInZone
|
|
// warConfig.setBoolean("defaultPvpInZone", War.war.isDefaultPvpInZone());
|
|
//
|
|
// // defaultInstaBreak
|
|
// warConfig.setBoolean("defaultInstaBreak", War.war.isDefaultInstaBreak());
|
|
//
|
|
// // defaultNoDrops
|
|
// warConfig.setBoolean("defaultNoDrops", War.war.isDefaultNoDrops());
|
|
//
|
|
// // defaultNoHunger
|
|
// warConfig.setBoolean("defaultNoHunger", War.war.isDefaultNoHunger());
|
|
//
|
|
// // defaultSaturation
|
|
// warConfig.setInt("defaultSaturation", War.war.getDefaultSaturation());
|
|
//
|
|
// // defaultMinPlayers
|
|
// warConfig.setInt("defaultMinPlayers", War.war.getDefaultMinPlayers());
|
|
//
|
|
// // defaultMinTeams
|
|
// warConfig.setInt("defaultMinTeams", War.war.getDefaultMinTeams());
|
|
//
|
|
// // defaultResetOnEmpty
|
|
// warConfig.setBoolean("defaultResetOnEmpty", War.war.isDefaultResetOnEmpty());
|
|
//
|
|
// // defaultResetOnLoad
|
|
// warConfig.setBoolean("defaultResetOnLoad", War.war.isDefaultResetOnLoad());
|
|
//
|
|
// // defaultResetOnUnload
|
|
// warConfig.setBoolean("defaultResetOnUnload", War.war.isDefaultResetOnUnload());
|
|
//
|
|
// // warhub
|
|
// String hubStr = "";
|
|
// WarHub hub = War.war.getWarHub();
|
|
// if (hub != null) {
|
|
// String orientationStr = "";
|
|
// switch (hub.getOrientation()) {
|
|
// case SOUTH:
|
|
// orientationStr = "south";
|
|
// break;
|
|
// case EAST:
|
|
// orientationStr = "east";
|
|
// break;
|
|
// case NORTH:
|
|
// orientationStr = "north";
|
|
// break;
|
|
// case WEST:
|
|
// default:
|
|
// orientationStr = "west";
|
|
// break;
|
|
// }
|
|
// hubStr = hub.getLocation().getBlockX() + "," + hub.getLocation().getBlockY() + "," + hub.getLocation().getBlockZ() + ","
|
|
// + hub.getLocation().getWorld().getName() + "," + orientationStr;
|
|
// VolumeMapper.save(hub.getVolume(), "");
|
|
// }
|
|
// warConfig.setString("warhub", hubStr);
|
|
//
|
|
// warConfig.save();
|
|
// warConfig.close();
|
|
}
|
|
}
|