use of com.palmergames.bukkit.towny.event.PreDeleteTownEvent 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()));
}
Aggregations