use of com.palmergames.bukkit.towny.TownyUniverse in project Towny by TownyAdvanced.
the class TownType method getRecipients.
@Override
public Collection<Player> getRecipients(Collection<Player> recipients, Player player) {
TownyUniverse townyUniverse = TownyUniverse.getInstance();
Resident resident = townyUniverse.getResident(player.getUniqueId());
if (resident == null)
return recipients;
try {
final UUID town = resident.getTown().getUUID();
Collection<Player> newRecipients = new HashSet<>();
for (Player p : recipients) {
Resident playerResident = townyUniverse.getResident(p.getUniqueId());
if (playerResident != null && playerResident.hasTown() && playerResident.getTown().getUUID().equals(town)) {
newRecipients.add(p);
}
}
return newRecipients;
} catch (NotRegisteredException e) {
e.printStackTrace();
}
return recipients;
}
use of com.palmergames.bukkit.towny.TownyUniverse in project Towny by TownyAdvanced.
the class InviteCommand method parseDeny.
public static void parseDeny(Player player, String[] args) {
TownyUniverse townyUniverse = TownyUniverse.getInstance();
Optional<Resident> resOpt = townyUniverse.getResidentOpt(player.getUniqueId());
if (!resOpt.isPresent()) {
TownyMessaging.sendErrorMsg(player, Translatable.of("msg_err_not_registered"));
return;
}
Resident resident = resOpt.get();
List<Invite> invites = resident.getReceivedInvites();
if (invites.size() == 0) {
TownyMessaging.sendErrorMsg(player, Translatable.of("msg_err_player_no_invites"));
return;
}
Town town;
if (args.length >= 1) {
// We cut the first argument out of it so /invite *accept* args[1]
// SO now args[0] is always the Town, we should check if the argument length is >= 1
town = townyUniverse.getTown(args[0]);
if (town == null) {
TownyMessaging.sendErrorMsg(player, Translatable.of("msg_invalid_name"));
return;
}
} else {
if (invites.size() == 1) {
// Only 1 Invite.
town = (Town) invites.get(0).getSender();
} else {
TownyMessaging.sendErrorMsg(player, Translatable.of("msg_err_player_has_multiple_invites"));
parseInviteList(player, null);
return;
}
}
Invite toDecline = null;
for (Invite invite : InviteHandler.getActiveInvites()) {
if (invite.getSender().equals(town) && invite.getReceiver().equals(resident)) {
toDecline = invite;
break;
}
}
if (toDecline != null) {
try {
InviteHandler.declineInvite(toDecline, false);
} catch (InvalidObjectException e) {
e.printStackTrace();
}
} else
TownyMessaging.sendErrorMsg(player, Translatable.of("msg_specify_name"));
}
use of com.palmergames.bukkit.towny.TownyUniverse in project Towny by TownyAdvanced.
the class ResidentCommand method residentSet.
/**
* Command: /resident set [] ... []
*
* @param player - Player.
* @param split - Current command arguments.
* @throws TownyException - Exception.
*/
/*
* perm [resident/outsider] [build/destroy] [on/off]
*/
public void residentSet(Player player, String[] split) throws TownyException {
TownyUniverse townyUniverse = TownyUniverse.getInstance();
if (split.length == 0) {
TownyMessaging.sendMessage(player, ChatTools.formatCommand("", "/resident set", "perm ...", "'/resident set perm' " + Translatable.of("res_5").forLocale(player)));
TownyMessaging.sendMessage(player, ChatTools.formatCommand("", "/resident set", "mode ...", "'/resident set mode' " + Translatable.of("res_5").forLocale(player)));
} else {
Optional<Resident> resOpt = townyUniverse.getResidentOpt(player.getUniqueId());
if (!resOpt.isPresent()) {
TownyMessaging.sendErrorMsg(player, Translatable.of("msg_err_not_registered_1", player.getName()));
return;
}
Resident resident = resOpt.get();
if (!townyUniverse.getPermissionSource().testPermission(player, PermissionNodes.TOWNY_COMMAND_RESIDENT_SET.getNode(split[0].toLowerCase())))
throw new TownyException(Translatable.of("msg_err_command_disable"));
if (split[0].equalsIgnoreCase("perm")) {
String[] newSplit = StringMgmt.remFirstArg(split);
TownCommand.setTownBlockPermissions(player, resident, resident.getPermissions(), newSplit, true);
} else if (split[0].equalsIgnoreCase("mode")) {
String[] newSplit = StringMgmt.remFirstArg(split);
setMode(player, newSplit);
} else if (TownyCommandAddonAPI.hasCommand(CommandType.RESIDENT_SET, split[0])) {
TownyCommandAddonAPI.getAddonCommand(CommandType.RESIDENT_SET, split[0]).execute(player, "resident", split);
} else {
TownyMessaging.sendErrorMsg(player, Translatable.of("msg_err_invalid_property", "resident"));
return;
}
resident.save();
}
}
use of com.palmergames.bukkit.towny.TownyUniverse in project Towny by TownyAdvanced.
the class TownyCommand method getUniverseStats.
public List<String> getUniverseStats(Locale locale) {
TownyUniverse townyUniverse = TownyUniverse.getInstance();
List<String> output = new ArrayList<>();
final Translator translator = Translator.locale(locale);
// Intentionally left blank
output.add("");
output.add("\u00A70-\u00A74###\u00A70---\u00A74###\u00A70- " + Colors.Gold + "[" + Colors.Yellow + "Towny " + Colors.Green + plugin.getVersion() + Colors.Gold + "]");
output.add("\u00A74#\u00A7c###\u00A74#\u00A70-\u00A74#\u00A7c###\u00A74#\u00A70 " + Colors.Blue + translator.of("msg_universe_attribution") + Colors.LightBlue + "Chris H (Shade), ElgarL, LlmDl");
output.add("\u00A74#\u00A7c####\u00A74#\u00A7c####\u00A74# " + Colors.LightBlue + translator.of("msg_universe_contributors") + Colors.Rose + translator.of("msg_universe_heart"));
output.add("\u00A70-\u00A74#\u00A7c#######\u00A74#\u00A70-");
output.add("\u00A70--\u00A74##\u00A7c###\u00A74##\u00A70-- " + Colors.Blue + translator.of("res_list") + ": " + Colors.LightBlue + townyUniverse.getNumResidents() + Colors.Gray + " | " + Colors.Blue + translator.of("town_plu") + ": " + Colors.LightBlue + townyUniverse.getTowns().size() + Colors.Gray + " | " + Colors.Blue + translator.of("nation_plu") + ": " + Colors.LightBlue + townyUniverse.getNumNations());
output.add("\u00A70----\u00A74#\u00A7c#\u00A74#\u00A70---- " + Colors.Blue + translator.of("world_plu") + ": " + Colors.LightBlue + townyUniverse.getTownyWorlds().size() + Colors.Gray + " | " + Colors.Blue + translator.of("townblock_plu") + ": " + Colors.LightBlue + townyUniverse.getTownBlocks().size());
output.add("\u00A70-----\u00A74#\u00A70----- " + Colors.LightGreen + "https://TownyAdvanced.github.io/");
// Intentionally left blank
output.add("");
// Other TownyAdvanced plugins to report versions
int plugins = 0;
String townyPlugins = Colors.Gold + "[";
// LlmDl Sponsor exclusive
Plugin tCamps = Bukkit.getServer().getPluginManager().getPlugin("TownyCamps");
if (tCamps != null) {
townyPlugins += Colors.Yellow + "TownyCamps " + Colors.Green + tCamps.getDescription().getVersion() + " ";
plugins++;
}
Plugin townyChat = Bukkit.getServer().getPluginManager().getPlugin("TownyChat");
if (townyChat != null) {
townyPlugins += Colors.Yellow + "TownyChat " + Colors.Green + townyChat.getDescription().getVersion() + " ";
plugins++;
}
Plugin tCult = Bukkit.getServer().getPluginManager().getPlugin("TownyCultures");
if (tCult != null) {
townyPlugins += Colors.Yellow + "TownyCultures " + Colors.Green + tCult.getDescription().getVersion() + " ";
plugins++;
}
Plugin tFlight = Bukkit.getServer().getPluginManager().getPlugin("TownyFlight");
if (tFlight != null) {
townyPlugins += Colors.Yellow + "TownyFlight " + Colors.Green + tFlight.getDescription().getVersion() + " ";
plugins++;
}
// LlmDl Sponsor exclusive
Plugin tHist = Bukkit.getServer().getPluginManager().getPlugin("TownyHistories");
if (tHist != null) {
townyPlugins += Colors.Yellow + "TownyHistories " + Colors.Green + tHist.getDescription().getVersion() + " ";
plugins++;
}
Plugin flagWar = Bukkit.getServer().getPluginManager().getPlugin("FlagWar");
if (flagWar != null) {
townyPlugins += Colors.Yellow + "FlagWar " + Colors.Green + flagWar.getDescription().getVersion() + " ";
plugins++;
}
Plugin siegeWar = Bukkit.getServer().getPluginManager().getPlugin("SiegeWar");
if (siegeWar != null) {
townyPlugins += Colors.Yellow + "SiegeWar " + Colors.Green + siegeWar.getDescription().getVersion() + " ";
plugins++;
}
if (plugins > 0)
output.add(townyPlugins + Colors.Gold + "]");
return output;
}
use of com.palmergames.bukkit.towny.TownyUniverse in project Towny by TownyAdvanced.
the class TownyEntityMonitorListener method onPlayerDeath.
/**
* This handles PlayerDeathEvents on MONITOR in order to handle Towny features such as:
* - DeathPayments,
* - Jailing Players,
* @param event The event.
*/
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onPlayerDeath(PlayerDeathEvent event) {
TownyUniverse townyUniverse = TownyUniverse.getInstance();
if (!TownyAPI.getInstance().isTownyWorld(event.getEntity().getWorld()))
return;
Player defenderPlayer = event.getEntity();
Resident defenderResident = TownyUniverse.getInstance().getResident(defenderPlayer.getUniqueId());
if (defenderResident == null) {
// Usually an NPC or a Bot of some kind.
return;
}
// Killed by another entity?
if (defenderPlayer.getLastDamageCause() instanceof EntityDamageByEntityEvent) {
EntityDamageByEntityEvent damageEvent = (EntityDamageByEntityEvent) defenderPlayer.getLastDamageCause();
Entity attackerEntity = damageEvent.getDamager();
Player attackerPlayer = null;
Resident attackerResident = null;
if (attackerEntity instanceof Projectile) {
// Killed by projectile, try to narrow the true source of the kill.
Projectile projectile = (Projectile) attackerEntity;
if (projectile.getShooter() instanceof Player) {
// Player shot a projectile.
attackerPlayer = (Player) projectile.getShooter();
attackerResident = townyUniverse.getResident(attackerPlayer.getUniqueId());
} else {
// Something else shot a projectile.
try {
// Mob shot a projectile.
attackerEntity = (Entity) projectile.getShooter();
} catch (Exception e) {
// This would be a dispenser kill, should count as environmental death.
}
}
} else if (attackerEntity instanceof Player) {
// This was a player kill
attackerPlayer = (Player) attackerEntity;
attackerResident = townyUniverse.getResident(attackerPlayer.getUniqueId());
if (attackerResident == null)
// Probably an NPC.
return;
}
// This was a suicide, don't award money or jail.
if (attackerPlayer != null && attackerPlayer == defenderPlayer)
return;
/*
* Player has died by a player:
*
* - Fire PlayerKilledPlayerEvent.
*
* - charge death payment,
* - check for jailing attacking residents,
*/
if (attackerPlayer != null && attackerResident != null) {
PlayerKilledPlayerEvent deathEvent = new PlayerKilledPlayerEvent(attackerPlayer, defenderPlayer, attackerResident, defenderResident, defenderPlayer.getLocation(), event);
BukkitTools.getPluginManager().callEvent(deathEvent);
deathPayment(attackerPlayer, defenderPlayer, attackerResident, defenderResident);
isJailingAttackers(attackerPlayer, defenderPlayer, attackerResident, defenderResident);
/*
* Player has died from an entity but not a player & death price is not PVP only.
*/
} else if (!TownySettings.isDeathPricePVPOnly() && TownySettings.isChargingDeath()) {
deathPayment(defenderPlayer, defenderResident);
}
/*
* Player has died from non-entity cause, ie: Environmental.
*/
} else {
if (!TownySettings.isDeathPricePVPOnly() && TownySettings.isChargingDeath()) {
deathPayment(defenderPlayer, defenderResident);
}
}
}
Aggregations