Search in sources :

Example 41 with TownyException

use of com.palmergames.bukkit.towny.exceptions.TownyException in project Towny by ElgarL.

the class HealthRegenTimerTask method run.

@Override
public void run() {
    if (TownyUniverse.isWarTime())
        return;
    for (Player player : server.getOnlinePlayers()) {
        if (player.getHealth() <= 0)
            continue;
        Coord coord = Coord.parseCoord(player);
        try {
            TownyWorld world = TownyUniverse.getDataSource().getWorld(player.getWorld().getName());
            TownBlock townBlock = world.getTownBlock(coord);
            if (CombatUtil.isAlly(townBlock.getTown(), TownyUniverse.getDataSource().getResident(player.getName()).getTown()))
                if (// only regen if not in an arena
                !townBlock.getType().equals(TownBlockType.ARENA))
                    incHealth(player);
        } catch (TownyException x) {
        }
    }
// if (TownySettings.getDebug())
// System.out.println("[Towny] Debug: Health Regen");
}
Also used : Coord(com.palmergames.bukkit.towny.object.Coord) Player(org.bukkit.entity.Player) TownyWorld(com.palmergames.bukkit.towny.object.TownyWorld) TownBlock(com.palmergames.bukkit.towny.object.TownBlock) TownyException(com.palmergames.bukkit.towny.exceptions.TownyException)

Example 42 with TownyException

use of com.palmergames.bukkit.towny.exceptions.TownyException in project Towny by ElgarL.

the class TeleportWarmupTimerTask method run.

@Override
public void run() {
    long currentTime = System.currentTimeMillis();
    while (true) {
        Resident resident = teleportQueue.peek();
        if (resident == null)
            break;
        if (currentTime > resident.getTeleportRequestTime() + (TownySettings.getTeleportWarmupTime() * 1000)) {
            resident.clearTeleportRequest();
            try {
                // Make sure the chunk we teleport to is loaded.
                Chunk chunk = resident.getTeleportDestination().getWorld().getChunkAt(resident.getTeleportDestination().getBlock());
                if (!chunk.isLoaded())
                    chunk.load();
                TownyUniverse.getPlayer(resident).teleport(resident.getTeleportDestination());
            } catch (TownyException ignore) {
            }
            teleportQueue.poll();
        } else {
            break;
        }
    }
}
Also used : Resident(com.palmergames.bukkit.towny.object.Resident) Chunk(org.bukkit.Chunk) TownyException(com.palmergames.bukkit.towny.exceptions.TownyException)

Example 43 with TownyException

use of com.palmergames.bukkit.towny.exceptions.TownyException in project Towny by ElgarL.

the class TownyWarCustomListener method onCellDefendedEvent.

@EventHandler(priority = EventPriority.LOWEST)
public void onCellDefendedEvent(CellDefendedEvent event) {
    Player player = event.getPlayer();
    CellUnderAttack cell = event.getCell().getAttackData();
    TownyUniverse universe = plugin.getTownyUniverse();
    WorldCoord worldCoord = new WorldCoord(cell.getWorldName(), cell.getX(), cell.getZ());
    universe.removeWarZone(worldCoord);
    plugin.updateCache(worldCoord);
    String playerName;
    if (player == null) {
        playerName = "Greater Forces";
    } else {
        playerName = player.getName();
        try {
            playerName = TownyUniverse.getDataSource().getResident(player.getName()).getFormattedName();
        } catch (TownyException e) {
        }
    }
    plugin.getServer().broadcastMessage(String.format(TownySettings.getLangString("msg_enemy_war_area_defended"), playerName, cell.getCellString()));
    // Also doesn't take into account of paying as much as the attacker can afford (Eg: cost=10 and balance=9).
    if (TownySettings.isUsingEconomy()) {
        try {
            Resident attackingPlayer, defendingPlayer = null;
            attackingPlayer = TownyUniverse.getDataSource().getResident(cell.getNameOfFlagOwner());
            if (player != null) {
                try {
                    defendingPlayer = TownyUniverse.getDataSource().getResident(player.getName());
                } catch (NotRegisteredException e) {
                }
            }
            String formattedMoney = TownyEconomyHandler.getFormattedBalance(TownyWarConfig.getDefendedAttackReward());
            if (defendingPlayer == null) {
                if (attackingPlayer.pay(TownyWarConfig.getDefendedAttackReward(), "War - Attack Was Defended (Greater Forces)"))
                    try {
                        TownyMessaging.sendResidentMessage(attackingPlayer, String.format(TownySettings.getLangString("msg_enemy_war_area_defended_greater_forces"), formattedMoney));
                    } catch (TownyException e) {
                    }
            } else {
                if (attackingPlayer.payTo(TownyWarConfig.getDefendedAttackReward(), defendingPlayer, "War - Attack Was Defended")) {
                    try {
                        TownyMessaging.sendResidentMessage(attackingPlayer, String.format(TownySettings.getLangString("msg_enemy_war_area_defended_attacker"), defendingPlayer.getFormattedName(), formattedMoney));
                    } catch (TownyException e) {
                    }
                    try {
                        TownyMessaging.sendResidentMessage(defendingPlayer, String.format(TownySettings.getLangString("msg_enemy_war_area_defended_defender"), attackingPlayer.getFormattedName(), formattedMoney));
                    } catch (TownyException e) {
                    }
                }
            }
        } catch (EconomyException e) {
            e.printStackTrace();
        } catch (NotRegisteredException e) {
            e.printStackTrace();
        }
    }
}
Also used : EconomyException(com.palmergames.bukkit.towny.exceptions.EconomyException) Player(org.bukkit.entity.Player) NotRegisteredException(com.palmergames.bukkit.towny.exceptions.NotRegisteredException) CellUnderAttack(com.palmergames.bukkit.towny.war.flagwar.CellUnderAttack) TownyException(com.palmergames.bukkit.towny.exceptions.TownyException) EventHandler(org.bukkit.event.EventHandler)

Example 44 with TownyException

use of com.palmergames.bukkit.towny.exceptions.TownyException in project Towny by ElgarL.

the class TownyWarCustomListener method onCellWonEvent.

@EventHandler(priority = EventPriority.LOWEST)
public void onCellWonEvent(CellWonEvent event) {
    CellUnderAttack cell = event.getCellAttackData();
    TownyUniverse universe = plugin.getTownyUniverse();
    try {
        Resident attackingResident = TownyUniverse.getDataSource().getResident(cell.getNameOfFlagOwner());
        Town attackingTown = attackingResident.getTown();
        Nation attackingNation = attackingTown.getNation();
        WorldCoord worldCoord = TownyWar.cellToWorldCoord(cell);
        universe.removeWarZone(worldCoord);
        TownBlock townBlock = worldCoord.getTownBlock();
        Town defendingTown = townBlock.getTown();
        // Payments
        double amount = 0;
        String moneyTranserMsg = null;
        if (TownySettings.isUsingEconomy()) {
            try {
                String reasonType;
                if (townBlock.isHomeBlock()) {
                    amount = TownyWarConfig.getWonHomeblockReward();
                    reasonType = "Homeblock";
                } else {
                    amount = TownyWarConfig.getWonTownblockReward();
                    reasonType = "Townblock";
                }
                if (amount > 0) {
                    // Defending Town -> Attacker (Pillage)
                    String reason = String.format("War - Won Enemy %s (Pillage)", reasonType);
                    amount = Math.min(amount, defendingTown.getHoldingBalance());
                    defendingTown.payTo(amount, attackingResident, reason);
                    // Message
                    moneyTranserMsg = String.format(TownySettings.getLangString("msg_enemy_war_area_won_pillage"), attackingResident.getFormattedName(), TownyEconomyHandler.getFormattedBalance(amount), defendingTown.getFormattedName());
                } else if (amount < 0) {
                    // Attacker -> Defending Town (Rebuild cost)
                    // Inverse the amount so it's positive.
                    amount = -amount;
                    String reason = String.format("War - Won Enemy %s (Rebuild Cost)", reasonType);
                    if (!attackingResident.payTo(amount, defendingTown, reason)) {
                        // Could Not Pay Defending Town the Rebuilding Cost.
                        TownyMessaging.sendGlobalMessage(String.format(TownySettings.getLangString("msg_enemy_war_area_won"), attackingResident.getFormattedName(), (attackingNation.hasTag() ? attackingNation.getTag() : attackingNation.getFormattedName()), cell.getCellString()));
                    }
                    // Message
                    moneyTranserMsg = String.format(TownySettings.getLangString("msg_enemy_war_area_won_rebuilding"), attackingResident.getFormattedName(), TownyEconomyHandler.getFormattedBalance(amount), defendingTown.getFormattedName());
                }
            } catch (EconomyException x) {
                x.printStackTrace();
            }
        }
        // Defender loses townblock
        TownyUniverse.getDataSource().removeTownBlock(townBlock);
        // Attacker Claim Automatically
        try {
            List<WorldCoord> selection = new ArrayList<WorldCoord>();
            selection.add(worldCoord);
            TownCommand.checkIfSelectionIsValid(attackingTown, selection, false, 0, false);
            new TownClaim(plugin, null, attackingTown, selection, false, true, false).start();
        } catch (TownyException te) {
        // Couldn't claim it.
        }
        // Cleanup
        plugin.updateCache(worldCoord);
        // Event Message
        TownyMessaging.sendGlobalMessage(String.format(TownySettings.getLangString("msg_enemy_war_area_won"), attackingResident.getFormattedName(), (attackingNation.hasTag() ? attackingNation.getTag() : attackingNation.getFormattedName()), cell.getCellString()));
        // Money Transfer message.
        if (TownySettings.isUsingEconomy()) {
            if (amount != 0 && moneyTranserMsg != null) {
                try {
                    TownyMessaging.sendResidentMessage(attackingResident, moneyTranserMsg);
                } catch (TownyException e) {
                }
                TownyMessaging.sendTownMessage(defendingTown, moneyTranserMsg);
            }
        }
    } catch (NotRegisteredException e) {
        e.printStackTrace();
    }
}
Also used : NotRegisteredException(com.palmergames.bukkit.towny.exceptions.NotRegisteredException) ArrayList(java.util.ArrayList) TownyException(com.palmergames.bukkit.towny.exceptions.TownyException) EconomyException(com.palmergames.bukkit.towny.exceptions.EconomyException) CellUnderAttack(com.palmergames.bukkit.towny.war.flagwar.CellUnderAttack) TownClaim(com.palmergames.bukkit.towny.tasks.TownClaim) EventHandler(org.bukkit.event.EventHandler)

Example 45 with TownyException

use of com.palmergames.bukkit.towny.exceptions.TownyException in project Towny by ElgarL.

the class TownyPlayerListener method onPlayerRespawn.

@EventHandler(priority = EventPriority.NORMAL)
public void onPlayerRespawn(PlayerRespawnEvent event) {
    if (plugin.isError()) {
        return;
    }
    Player player = event.getPlayer();
    TownyMessaging.sendDebugMsg("onPlayerDeath: " + player.getName());
    if (!TownySettings.isTownRespawning())
        return;
    try {
        Location respawn = plugin.getTownyUniverse().getTownSpawnLocation(player);
        // Check if only respawning in the same world as the town's spawn.
        if (TownySettings.isTownRespawningInOtherWorlds() && !player.getWorld().equals(respawn.getWorld()))
            return;
        // Bed spawn or town.
        if (TownySettings.getBedUse() && (player.getBedSpawnLocation() != null)) {
            event.setRespawnLocation(player.getBedSpawnLocation());
        } else {
            event.setRespawnLocation(respawn);
        }
    } catch (TownyException e) {
    // Town has not set respawn location. Using default.
    }
}
Also used : Player(org.bukkit.entity.Player) Location(org.bukkit.Location) BlockLocation(com.palmergames.bukkit.towny.regen.block.BlockLocation) TownyException(com.palmergames.bukkit.towny.exceptions.TownyException) EventHandler(org.bukkit.event.EventHandler)

Aggregations

TownyException (com.palmergames.bukkit.towny.exceptions.TownyException)70 NotRegisteredException (com.palmergames.bukkit.towny.exceptions.NotRegisteredException)37 Resident (com.palmergames.bukkit.towny.object.Resident)29 Town (com.palmergames.bukkit.towny.object.Town)17 EconomyException (com.palmergames.bukkit.towny.exceptions.EconomyException)16 Nation (com.palmergames.bukkit.towny.object.Nation)16 TownBlock (com.palmergames.bukkit.towny.object.TownBlock)15 ArrayList (java.util.ArrayList)12 Player (org.bukkit.entity.Player)12 AlreadyRegisteredException (com.palmergames.bukkit.towny.exceptions.AlreadyRegisteredException)11 TownyWorld (com.palmergames.bukkit.towny.object.TownyWorld)11 WorldCoord (com.palmergames.bukkit.towny.object.WorldCoord)7 Location (org.bukkit.Location)7 IOException (java.io.IOException)6 EventHandler (org.bukkit.event.EventHandler)6 Coord (com.palmergames.bukkit.towny.object.Coord)5 InvalidNameException (javax.naming.InvalidNameException)5 BlockLocation (com.palmergames.bukkit.towny.regen.block.BlockLocation)4 EmptyNationException (com.palmergames.bukkit.towny.exceptions.EmptyNationException)3 EmptyTownException (com.palmergames.bukkit.towny.exceptions.EmptyTownException)3