Search in sources :

Example 26 with TownyUniverse

use of com.palmergames.bukkit.towny.TownyUniverse in project SiegeWar by TownyAdvanced.

the class SiegeWarBannerControlUtil method evaluateNewBannerControlSessions.

private static void evaluateNewBannerControlSessions(Siege siege) {
    try {
        TownyUniverse universe = TownyUniverse.getInstance();
        Resident resident;
        for (Player player : Bukkit.getOnlinePlayers()) {
            resident = universe.getResident(player.getUniqueId());
            if (resident == null)
                throw new TownyException(Translation.of("msg_err_not_registered_1", player.getName()));
            if (!doesPlayerMeetBasicSessionRequirements(siege, player, resident))
                continue;
            if (!player.isOp() && player.hasPermission(SiegeWarPermissionNodes.SIEGEWAR_SIEGEZONE_CANNOT_GET_BANNER_CONTROL.getNode()))
                continue;
            if (!BattleSession.getBattleSession().isActive()) {
                Translatable message = Translatable.of("msg_war_siege_battle_session_break_cannot_get_banner_control", SiegeWarBattleSessionUtil.getFormattedTimeUntilNextBattleSessionStarts());
                Messaging.sendErrorMsg(player, message);
                continue;
            }
            if (siege.getBannerControlSessions().containsKey(player))
                // Player already has a control session
                continue;
            if (siege.getBannerControllingResidents().contains(resident))
                // Player already on the BC list
                continue;
            if (SiegeWarBattleSessionUtil.isBattleSessionCappingLimiterActiveForResident(resident)) {
                Translatable message = Translatable.of("msg_war_siege_max_daily_player_battle_sessions_reached_cannot_get_banner_control", SiegeWarSettings.getBattleSessionCappingLimiter(), SiegeWarBattleSessionUtil.getFormattedTimeUntilPlayerBattleSessionLimitExpires(resident));
                Messaging.sendErrorMsg(player, message);
                // Player is being limited by the battle session capping limiter
                continue;
            }
            SiegeSide siegeSide = SiegeWarAllegianceUtil.calculateCandidateSiegePlayerSide(player, resident.getTown(), siege);
            switch(siegeSide) {
                case ATTACKERS:
                    addNewBannerControlSession(siege, player, resident, SiegeSide.ATTACKERS);
                    break;
                case DEFENDERS:
                    addNewBannerControlSession(siege, player, resident, SiegeSide.DEFENDERS);
                    break;
                case NOBODY:
                    continue;
            }
        }
    } catch (Exception e) {
        SiegeWar.severe("Problem evaluating new banner control sessions");
        e.printStackTrace();
    }
}
Also used : Player(org.bukkit.entity.Player) Resident(com.palmergames.bukkit.towny.object.Resident) Translatable(com.palmergames.bukkit.towny.object.Translatable) TownyUniverse(com.palmergames.bukkit.towny.TownyUniverse) SiegeSide(com.gmail.goosius.siegewar.enums.SiegeSide) TownyException(com.palmergames.bukkit.towny.exceptions.TownyException) TownyException(com.palmergames.bukkit.towny.exceptions.TownyException)

Example 27 with TownyUniverse

use of com.palmergames.bukkit.towny.TownyUniverse in project Towny by TownyAdvanced.

the class TownyLoginListener method onPlayerLogin.

@EventHandler(priority = EventPriority.NORMAL)
public void onPlayerLogin(PlayerLoginEvent event) {
    String npcPrefix = TownySettings.getNPCPrefix();
    String warChest = "towny-war-chest";
    String serverAccount = TownySettings.getString(ConfigNodes.ECO_CLOSED_ECONOMY_SERVER_ACCOUNT);
    boolean disallowed = false;
    Player player = event.getPlayer();
    TownyUniverse townyUniverse = TownyUniverse.getInstance();
    if (player.getName().startsWith(npcPrefix)) {
        Resident npcRes = townyUniverse.getResident(player.getName());
        if (npcRes != null && npcRes.isMayor()) {
            event.disallow(PlayerLoginEvent.Result.KICK_OTHER, "Towny is preventing you from logging in using this account name.");
            disallowed = true;
        }
    } else if (player.getName().equals(warChest) || player.getName().equals(warChest.replace("-", "_"))) {
        // Deny because this is the warChest account.
        event.disallow(PlayerLoginEvent.Result.KICK_OTHER, "Towny is preventing you from logging in using this account name.");
        disallowed = true;
    } else if (player.getName().equals(serverAccount) || player.getName().equals(serverAccount.replace("-", "_"))) {
        // Deny because this is the closed economy server account.
        event.disallow(PlayerLoginEvent.Result.KICK_OTHER, "Towny is preventing you from logging in using this account name.");
        disallowed = true;
    } else if (player.getName().startsWith(TownySettings.getTownAccountPrefix()) || player.getName().startsWith(TownySettings.getTownAccountPrefix().replace("-", "_")) || player.getName().startsWith(TownySettings.getNationAccountPrefix()) || player.getName().startsWith(TownySettings.getNationAccountPrefix().replace("-", "_"))) {
        event.disallow(PlayerLoginEvent.Result.KICK_OTHER, "Towny is preventing you from logging in using this account name.");
        disallowed = true;
    }
    if (disallowed) {
        String ip = event.getAddress().toString().substring(1);
        Towny.getPlugin().getLogger().warning("A player using the IP address " + ip + " tried to log in using an account name (" + event.getPlayer().getName() + ") which could damage your server's economy, but was prevented by Towny. Consider banning this IP address!");
        for (Player ops : Bukkit.getOnlinePlayers()) {
            if (ops.isOp() || ops.hasPermission("towny.admin"))
                TownyMessaging.sendMsg(ops, Translatable.of("msg_admin_blocked_login", ip, event.getPlayer().getName()));
        }
    }
}
Also used : Player(org.bukkit.entity.Player) Resident(com.palmergames.bukkit.towny.object.Resident) TownyUniverse(com.palmergames.bukkit.towny.TownyUniverse) EventHandler(org.bukkit.event.EventHandler)

Aggregations

TownyUniverse (com.palmergames.bukkit.towny.TownyUniverse)27 Resident (com.palmergames.bukkit.towny.object.Resident)19 ArrayList (java.util.ArrayList)8 Player (org.bukkit.entity.Player)8 TownyException (com.palmergames.bukkit.towny.exceptions.TownyException)7 Town (com.palmergames.bukkit.towny.object.Town)6 NotRegisteredException (com.palmergames.bukkit.towny.exceptions.NotRegisteredException)4 EventHandler (org.bukkit.event.EventHandler)4 Nation (com.palmergames.bukkit.towny.object.Nation)3 TownyWorld (com.palmergames.bukkit.towny.object.TownyWorld)3 HashSet (java.util.HashSet)3 Invite (com.palmergames.bukkit.towny.invites.Invite)2 TownBlock (com.palmergames.bukkit.towny.object.TownBlock)2 Translator (com.palmergames.bukkit.towny.object.Translator)2 WorldCoord (com.palmergames.bukkit.towny.object.WorldCoord)2 InvalidObjectException (java.io.InvalidObjectException)2 List (java.util.List)2 UUID (java.util.UUID)2 SiegeSide (com.gmail.goosius.siegewar.enums.SiegeSide)1 Siege (com.gmail.goosius.siegewar.objects.Siege)1