Search in sources :

Example 6 with Jail

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;
}
Also used : WorldCoord(com.palmergames.bukkit.towny.object.WorldCoord) NotRegisteredException(com.palmergames.bukkit.towny.exceptions.NotRegisteredException) SQLException(java.sql.SQLException) Jail(com.palmergames.bukkit.towny.object.jail.Jail) World(org.bukkit.World) TownyWorld(com.palmergames.bukkit.towny.object.TownyWorld) TownBlock(com.palmergames.bukkit.towny.object.TownBlock) NotRegisteredException(com.palmergames.bukkit.towny.exceptions.NotRegisteredException) EmptyNationException(com.palmergames.bukkit.towny.exceptions.EmptyNationException) SQLException(java.sql.SQLException) AlreadyRegisteredException(com.palmergames.bukkit.towny.exceptions.AlreadyRegisteredException) TownyException(com.palmergames.bukkit.towny.exceptions.TownyException) Location(org.bukkit.Location)

Example 7 with Jail

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()));
}
Also used : NotRegisteredException(com.palmergames.bukkit.towny.exceptions.NotRegisteredException) Resident(com.palmergames.bukkit.towny.object.Resident) TownBlockType(com.palmergames.bukkit.towny.object.TownBlockType) Translatable(com.palmergames.bukkit.towny.object.Translatable) PreDeleteTownEvent(com.palmergames.bukkit.towny.event.PreDeleteTownEvent) Random(java.util.Random) JailUtil(com.palmergames.bukkit.towny.utils.JailUtil) RenameNationEvent(com.palmergames.bukkit.towny.event.RenameNationEvent) TownPreUnclaimEvent(com.palmergames.bukkit.towny.event.town.TownPreUnclaimEvent) DataFieldIO(com.palmergames.bukkit.towny.object.metadata.DataFieldIO) Invite(com.palmergames.bukkit.towny.invites.Invite) DeleteFileTask(com.palmergames.bukkit.towny.tasks.DeleteFileTask) UnJailReason(com.palmergames.bukkit.towny.object.jail.UnJailReason) Location(org.bukkit.Location) RenameTownEvent(com.palmergames.bukkit.towny.event.RenameTownEvent) ZipFile(java.util.zip.ZipFile) InvalidNameException(com.palmergames.bukkit.towny.exceptions.InvalidNameException) TownyRegenAPI(com.palmergames.bukkit.towny.regen.TownyRegenAPI) NameValidation(com.palmergames.bukkit.util.NameValidation) TownyWorld(com.palmergames.bukkit.towny.object.TownyWorld) Collection(java.util.Collection) BukkitTools(com.palmergames.bukkit.util.BukkitTools) UUID(java.util.UUID) TownyObject(com.palmergames.bukkit.towny.object.TownyObject) EOFException(java.io.EOFException) Collectors(java.util.stream.Collectors) FileNotFoundException(java.io.FileNotFoundException) StandardCharsets(java.nio.charset.StandardCharsets) DeleteNationEvent(com.palmergames.bukkit.towny.event.DeleteNationEvent) RenameResidentEvent(com.palmergames.bukkit.towny.event.RenameResidentEvent) Nullable(org.jetbrains.annotations.Nullable) List(java.util.List) Logger(org.apache.logging.log4j.Logger) NationRemoveTownEvent(com.palmergames.bukkit.towny.event.NationRemoveTownEvent) BukkitTask(org.bukkit.scheduler.BukkitTask) Queue(java.util.Queue) Towny(com.palmergames.bukkit.towny.Towny) TownyMessaging(com.palmergames.bukkit.towny.TownyMessaging) FileMgmt(com.palmergames.util.FileMgmt) ConcurrentLinkedQueue(java.util.concurrent.ConcurrentLinkedQueue) TownUnclaimEvent(com.palmergames.bukkit.towny.event.town.TownUnclaimEvent) Translation(com.palmergames.bukkit.towny.object.Translation) DataInputStream(java.io.DataInputStream) DeletePlayerEvent(com.palmergames.bukkit.towny.event.DeletePlayerEvent) WorldCoord(com.palmergames.bukkit.towny.object.WorldCoord) DeleteTownEvent(com.palmergames.bukkit.towny.event.DeleteTownEvent) PreDeleteNationEvent(com.palmergames.bukkit.towny.event.PreDeleteNationEvent) SimpleDateFormat(java.text.SimpleDateFormat) TownyUniverse(com.palmergames.bukkit.towny.TownyUniverse) ArrayList(java.util.ArrayList) PlotGroup(com.palmergames.bukkit.towny.object.PlotGroup) PlotBlockData(com.palmergames.bukkit.towny.regen.PlotBlockData) Town(com.palmergames.bukkit.towny.object.Town) InviteHandler(com.palmergames.bukkit.towny.invites.InviteHandler) Nation(com.palmergames.bukkit.towny.object.Nation) TownRuinUtil(com.palmergames.bukkit.towny.utils.TownRuinUtil) TownyFlatFileSource.elements(com.palmergames.bukkit.towny.db.TownyFlatFileSource.elements) IOException(java.io.IOException) FileInputStream(java.io.FileInputStream) TownyEconomyHandler(com.palmergames.bukkit.towny.TownyEconomyHandler) InputStreamReader(java.io.InputStreamReader) TownyAPI(com.palmergames.bukkit.towny.TownyAPI) File(java.io.File) AlreadyRegisteredException(com.palmergames.bukkit.towny.exceptions.AlreadyRegisteredException) TownBlock(com.palmergames.bukkit.towny.object.TownBlock) BufferedReader(java.io.BufferedReader) TownySettings(com.palmergames.bukkit.towny.TownySettings) TownyException(com.palmergames.bukkit.towny.exceptions.TownyException) LogManager(org.apache.logging.log4j.LogManager) Jail(com.palmergames.bukkit.towny.object.jail.Jail) InputStream(java.io.InputStream) NotRegisteredException(com.palmergames.bukkit.towny.exceptions.NotRegisteredException) AlreadyRegisteredException(com.palmergames.bukkit.towny.exceptions.AlreadyRegisteredException) ArrayList(java.util.ArrayList) TownyException(com.palmergames.bukkit.towny.exceptions.TownyException) Jail(com.palmergames.bukkit.towny.object.jail.Jail) Resident(com.palmergames.bukkit.towny.object.Resident) TownBlock(com.palmergames.bukkit.towny.object.TownBlock) Location(org.bukkit.Location)

Example 8 with Jail

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()));
}
Also used : NotRegisteredException(com.palmergames.bukkit.towny.exceptions.NotRegisteredException) Resident(com.palmergames.bukkit.towny.object.Resident) TownBlockType(com.palmergames.bukkit.towny.object.TownBlockType) Translatable(com.palmergames.bukkit.towny.object.Translatable) PreDeleteTownEvent(com.palmergames.bukkit.towny.event.PreDeleteTownEvent) Random(java.util.Random) JailUtil(com.palmergames.bukkit.towny.utils.JailUtil) RenameNationEvent(com.palmergames.bukkit.towny.event.RenameNationEvent) TownPreUnclaimEvent(com.palmergames.bukkit.towny.event.town.TownPreUnclaimEvent) DataFieldIO(com.palmergames.bukkit.towny.object.metadata.DataFieldIO) Invite(com.palmergames.bukkit.towny.invites.Invite) DeleteFileTask(com.palmergames.bukkit.towny.tasks.DeleteFileTask) UnJailReason(com.palmergames.bukkit.towny.object.jail.UnJailReason) Location(org.bukkit.Location) RenameTownEvent(com.palmergames.bukkit.towny.event.RenameTownEvent) ZipFile(java.util.zip.ZipFile) InvalidNameException(com.palmergames.bukkit.towny.exceptions.InvalidNameException) TownyRegenAPI(com.palmergames.bukkit.towny.regen.TownyRegenAPI) NameValidation(com.palmergames.bukkit.util.NameValidation) TownyWorld(com.palmergames.bukkit.towny.object.TownyWorld) Collection(java.util.Collection) BukkitTools(com.palmergames.bukkit.util.BukkitTools) UUID(java.util.UUID) TownyObject(com.palmergames.bukkit.towny.object.TownyObject) EOFException(java.io.EOFException) Collectors(java.util.stream.Collectors) FileNotFoundException(java.io.FileNotFoundException) StandardCharsets(java.nio.charset.StandardCharsets) DeleteNationEvent(com.palmergames.bukkit.towny.event.DeleteNationEvent) RenameResidentEvent(com.palmergames.bukkit.towny.event.RenameResidentEvent) Nullable(org.jetbrains.annotations.Nullable) List(java.util.List) Logger(org.apache.logging.log4j.Logger) NationRemoveTownEvent(com.palmergames.bukkit.towny.event.NationRemoveTownEvent) BukkitTask(org.bukkit.scheduler.BukkitTask) Queue(java.util.Queue) Towny(com.palmergames.bukkit.towny.Towny) TownyMessaging(com.palmergames.bukkit.towny.TownyMessaging) FileMgmt(com.palmergames.util.FileMgmt) ConcurrentLinkedQueue(java.util.concurrent.ConcurrentLinkedQueue) TownUnclaimEvent(com.palmergames.bukkit.towny.event.town.TownUnclaimEvent) Translation(com.palmergames.bukkit.towny.object.Translation) DataInputStream(java.io.DataInputStream) DeletePlayerEvent(com.palmergames.bukkit.towny.event.DeletePlayerEvent) WorldCoord(com.palmergames.bukkit.towny.object.WorldCoord) DeleteTownEvent(com.palmergames.bukkit.towny.event.DeleteTownEvent) PreDeleteNationEvent(com.palmergames.bukkit.towny.event.PreDeleteNationEvent) SimpleDateFormat(java.text.SimpleDateFormat) TownyUniverse(com.palmergames.bukkit.towny.TownyUniverse) ArrayList(java.util.ArrayList) PlotGroup(com.palmergames.bukkit.towny.object.PlotGroup) PlotBlockData(com.palmergames.bukkit.towny.regen.PlotBlockData) Town(com.palmergames.bukkit.towny.object.Town) InviteHandler(com.palmergames.bukkit.towny.invites.InviteHandler) Nation(com.palmergames.bukkit.towny.object.Nation) TownRuinUtil(com.palmergames.bukkit.towny.utils.TownRuinUtil) TownyFlatFileSource.elements(com.palmergames.bukkit.towny.db.TownyFlatFileSource.elements) IOException(java.io.IOException) FileInputStream(java.io.FileInputStream) TownyEconomyHandler(com.palmergames.bukkit.towny.TownyEconomyHandler) InputStreamReader(java.io.InputStreamReader) TownyAPI(com.palmergames.bukkit.towny.TownyAPI) File(java.io.File) AlreadyRegisteredException(com.palmergames.bukkit.towny.exceptions.AlreadyRegisteredException) TownBlock(com.palmergames.bukkit.towny.object.TownBlock) BufferedReader(java.io.BufferedReader) TownySettings(com.palmergames.bukkit.towny.TownySettings) TownyException(com.palmergames.bukkit.towny.exceptions.TownyException) LogManager(org.apache.logging.log4j.LogManager) Jail(com.palmergames.bukkit.towny.object.jail.Jail) InputStream(java.io.InputStream) NotRegisteredException(com.palmergames.bukkit.towny.exceptions.NotRegisteredException) PreDeleteTownEvent(com.palmergames.bukkit.towny.event.PreDeleteTownEvent) ArrayList(java.util.ArrayList) PreDeleteTownEvent(com.palmergames.bukkit.towny.event.PreDeleteTownEvent) DeleteTownEvent(com.palmergames.bukkit.towny.event.DeleteTownEvent) Resident(com.palmergames.bukkit.towny.object.Resident) TownyWorld(com.palmergames.bukkit.towny.object.TownyWorld) TownyException(com.palmergames.bukkit.towny.exceptions.TownyException)

Example 9 with Jail

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);
}
Also used : Jail(com.palmergames.bukkit.towny.object.jail.Jail)

Aggregations

Jail (com.palmergames.bukkit.towny.object.jail.Jail)9 TownyException (com.palmergames.bukkit.towny.exceptions.TownyException)6 AlreadyRegisteredException (com.palmergames.bukkit.towny.exceptions.AlreadyRegisteredException)5 NotRegisteredException (com.palmergames.bukkit.towny.exceptions.NotRegisteredException)5 Resident (com.palmergames.bukkit.towny.object.Resident)5 Town (com.palmergames.bukkit.towny.object.Town)5 TownBlock (com.palmergames.bukkit.towny.object.TownBlock)5 TownyWorld (com.palmergames.bukkit.towny.object.TownyWorld)5 WorldCoord (com.palmergames.bukkit.towny.object.WorldCoord)5 ArrayList (java.util.ArrayList)5 Location (org.bukkit.Location)5 Towny (com.palmergames.bukkit.towny.Towny)4 TownyAPI (com.palmergames.bukkit.towny.TownyAPI)4 TownyMessaging (com.palmergames.bukkit.towny.TownyMessaging)4 TownySettings (com.palmergames.bukkit.towny.TownySettings)4 TownyUniverse (com.palmergames.bukkit.towny.TownyUniverse)4 Nation (com.palmergames.bukkit.towny.object.Nation)4 PlotGroup (com.palmergames.bukkit.towny.object.PlotGroup)4 FileMgmt (com.palmergames.util.FileMgmt)4 File (java.io.File)4