use of com.palmergames.bukkit.towny.object.jail.Jail in project Towny by TownyAdvanced.
the class TownySQLSource method loadJail.
private boolean loadJail(ResultSet rs) {
String line;
String[] tokens;
String uuid = null;
try {
Jail jail = universe.getJail(UUID.fromString(rs.getString("uuid")));
if (jail == null) {
TownyMessaging.sendErrorMsg("SQL: A jail was not registered properly on load!");
return true;
}
uuid = jail.getUUID().toString();
line = rs.getString("townBlock");
if (line != null) {
tokens = line.split("#");
TownBlock tb = null;
try {
tb = universe.getTownBlock(new WorldCoord(tokens[0], Integer.parseInt(tokens[1].trim()), Integer.parseInt(tokens[2].trim())));
jail.setTownBlock(tb);
jail.setTown(tb.getTown());
tb.setJail(jail);
tb.getTown().addJail(jail);
} catch (NumberFormatException | NotRegisteredException e) {
TownyMessaging.sendErrorMsg("Jail " + jail.getUUID() + " tried to load invalid townblock " + line + " deleting jail.");
removeJail(jail);
deleteJail(jail);
return true;
}
}
line = rs.getString("spawns");
if (line != null) {
String[] jails = line.split(";");
for (String spawn : jails) {
tokens = spawn.split("#");
if (tokens.length >= 4)
try {
World world = plugin.getServerWorld(tokens[0]);
double x = Double.parseDouble(tokens[1]);
double y = Double.parseDouble(tokens[2]);
double z = Double.parseDouble(tokens[3]);
Location loc = new Location(world, x, y, z);
if (tokens.length == 6) {
loc.setPitch(Float.parseFloat(tokens[4]));
loc.setYaw(Float.parseFloat(tokens[5]));
}
jail.addJailCell(loc);
} catch (NumberFormatException | NullPointerException | NotRegisteredException e) {
TownyMessaging.sendErrorMsg("Jail " + jail.getUUID() + " tried to load invalid spawn " + line + " skipping.");
continue;
}
}
if (jail.getJailCellLocations().size() < 1) {
TownyMessaging.sendErrorMsg("Jail " + jail.getUUID() + " loaded with zero spawns " + line + " deleting jail.");
removeJail(jail);
deleteJail(jail);
return true;
}
}
return true;
} catch (SQLException e) {
TownyMessaging.sendErrorMsg("SQL: Load Jail " + uuid + " sql Error - " + e.getMessage());
} catch (Exception e) {
TownyMessaging.sendErrorMsg("SQL: Load Jail " + uuid + " unknown Error - ");
e.printStackTrace();
}
return false;
}
use of com.palmergames.bukkit.towny.object.jail.Jail in project Towny by TownyAdvanced.
the class TownyDatabaseHandler method mergeTown.
/**
* Merges the mergeFrom town into the mergeInto town.
* @param mergeInto The town that the other town merges into.
* @param mergeFrom The town that will be deleted.
*/
public void mergeTown(Town mergeInto, Town mergeFrom) {
if (TownyEconomyHandler.isActive() && mergeFrom.getAccount().getHoldingBalance() > 0)
mergeFrom.getAccount().payTo(mergeFrom.getAccount().getHoldingBalance(), mergeInto, Translation.of("msg_town_merge_transaction_reason"));
lock.lock();
boolean isSameNation = false;
if (mergeInto.hasNation() && mergeFrom.hasNation()) {
try {
isSameNation = mergeInto.getNation().hasTown(mergeFrom);
} catch (NotRegisteredException ignored) {
}
}
String mayorName = mergeFrom.getMayor().getName();
List<Jail> jails = universe.getJailUUIDMap().values().stream().filter(jail -> jail.getTown().equals(mergeFrom)).collect(Collectors.toList());
List<Location> outposts = new ArrayList<Location>(mergeFrom.getAllOutpostSpawns());
mergeInto.addPurchasedBlocks(mergeFrom.getPurchasedBlocks());
mergeInto.addBonusBlocks(mergeFrom.getBonusBlocks());
for (TownBlock tb : mergeFrom.getTownBlocks()) {
tb.setTown(mergeInto);
tb.save();
}
List<Resident> residents = new ArrayList<Resident>(mergeFrom.getResidents());
for (Resident resident : residents) {
try {
if (mergeInto.hasOutlaw(resident)) {
resident.removeTown();
continue;
}
List<String> nationRanks = new ArrayList<String>(resident.getNationRanks());
resident.removeTown();
resident.setTown(mergeInto);
if (isSameNation) {
for (String rank : nationRanks) resident.addNationRank(rank);
}
resident.save();
} catch (TownyException ignored) {
}
}
for (Resident outlaw : mergeFrom.getOutlaws()) {
if (!mergeInto.hasOutlaw(outlaw) && !mergeInto.hasResident(outlaw)) {
try {
mergeInto.addOutlaw(outlaw);
} catch (AlreadyRegisteredException ignored) {
}
}
}
for (Jail jail : jails) {
TownBlock jailPlot = jail.getTownBlock();
if (jailPlot.getType() != TownBlockType.JAIL)
jailPlot.setType(TownBlockType.JAIL);
jail.setTown(mergeInto);
}
for (Location outpost : outposts) mergeInto.addOutpostSpawn(outpost);
lock.unlock();
removeTown(mergeFrom, false);
mergeInto.save();
TownyMessaging.sendGlobalMessage(Translatable.of("msg_town_merge_success", mergeFrom.getName(), mayorName, mergeInto.getName()));
}
use of com.palmergames.bukkit.towny.object.jail.Jail in project Towny by TownyAdvanced.
the class TownyDatabaseHandler method removeTown.
@Override
public void removeTown(Town town, boolean delayFullRemoval) {
if (delayFullRemoval) {
/*
* When Town ruining is active, send the Town into a ruined state, prior to real removal.
*/
TownRuinUtil.putTownIntoRuinedState(town);
return;
}
PreDeleteTownEvent preEvent = new PreDeleteTownEvent(town);
BukkitTools.getPluginManager().callEvent(preEvent);
if (preEvent.isCancelled())
return;
Resident mayor = town.getMayor();
TownyWorld townyWorld = town.getHomeblockWorld();
// Remove the Town's spawn particle.
if (town.hasSpawn()) {
try {
universe.removeSpawnPoint(town.getSpawn());
} catch (TownyException ignored) {
}
}
removeTownBlocks(town);
List<Resident> toSave = new ArrayList<>(town.getResidents());
if (town.hasNation()) {
town.removeNation();
}
for (Resident resident : toSave) {
resident.clearModes();
resident.removeTown();
}
// Look for residents inside of this town's jail(s) and free them, more than
// likely the above removeTownBlocks(town) will have already set them free.
new ArrayList<>(universe.getJailedResidentMap()).stream().filter(resident -> resident.hasJailTown(town.getName())).forEach(resident -> JailUtil.unJailResident(resident, UnJailReason.JAIL_DELETED));
if (TownyEconomyHandler.isActive())
town.getAccount().removeAccount();
if (townyWorld != null) {
try {
townyWorld.removeTown(town);
} catch (NotRegisteredException e) {
// Must already be removed
}
saveWorld(townyWorld);
}
try {
universe.unregisterTown(town);
} catch (NotRegisteredException e) {
TownyMessaging.sendErrorMsg(e.getMessage());
}
plugin.resetCache();
deleteTown(town);
BukkitTools.getPluginManager().callEvent(new DeleteTownEvent(town, mayor));
TownyMessaging.sendGlobalMessage(Translatable.of("msg_del_town2", town.getName()));
}
use of com.palmergames.bukkit.towny.object.jail.Jail in project Towny by TownyAdvanced.
the class TownyUniverse method newJailInternal.
/**
* Used in loading only.
*
* @param uuid UUID of the given jail, taken from the Jail filename.
*/
public void newJailInternal(String uuid) {
// Remaining fields are set later on in the loading process.
Jail jail = new Jail(UUID.fromString(uuid), null, null, null);
registerJail(jail);
}
Aggregations