use of panda.utilities.text.Formatter in project FunnyGuilds by FunnyGuilds.
the class AllyCommand method execute.
@FunnyCommand(name = "${user.ally.name}", description = "${user.ally.description}", aliases = "${user.ally.aliases}", permission = "funnyguilds.ally", completer = "guilds:3", acceptsExceeded = true, playerOnly = true)
public void execute(Player player, @IsOwner User user, Guild guild, String[] args) {
List<InvitationList.Invitation> invitations = InvitationList.getInvitationsFor(guild);
if (args.length < 1) {
when(invitations.size() == 0, messages.allyHasNotInvitation);
String guildNames = ChatUtils.toString(InvitationList.getInvitationGuildNames(guild), false);
for (String msg : messages.allyInvitationList) {
user.sendMessage(msg.replace("{GUILDS}", guildNames));
}
return;
}
Guild invitedGuild = GuildValidation.requireGuildByTag(args[0]);
User invitedOwner = invitedGuild.getOwner();
when(guild.equals(invitedGuild), messages.allySame);
when(guild.getAllies().contains(invitedGuild), messages.allyAlly);
if (guild.getEnemies().contains(invitedGuild)) {
guild.removeEnemy(invitedGuild);
String allyDoneMessage = messages.enemyEnd;
allyDoneMessage = StringUtils.replace(allyDoneMessage, "{GUILD}", invitedGuild.getName());
allyDoneMessage = StringUtils.replace(allyDoneMessage, "{TAG}", invitedGuild.getTag());
user.sendMessage(allyDoneMessage);
String allyIDoneMessage = messages.enemyIEnd;
allyIDoneMessage = StringUtils.replace(allyIDoneMessage, "{GUILD}", guild.getName());
allyIDoneMessage = StringUtils.replace(allyIDoneMessage, "{TAG}", guild.getTag());
invitedOwner.sendMessage(allyIDoneMessage);
}
when(guild.getAllies().size() >= config.maxAlliesBetweenGuilds, () -> messages.inviteAllyAmount.replace("{AMOUNT}", Integer.toString(config.maxAlliesBetweenGuilds)));
if (invitedGuild.getAllies().size() >= config.maxAlliesBetweenGuilds) {
Formatter formatter = new Formatter().register("{GUILD}", invitedGuild.getName()).register("{TAG}", invitedGuild.getTag()).register("{AMOUNT}", config.maxAlliesBetweenGuilds);
user.sendMessage(formatter.format(messages.inviteAllyTargetAmount));
return;
}
if (InvitationList.hasInvitationFrom(guild, invitedGuild)) {
if (!SimpleEventHandler.handle(new GuildAcceptAllyInvitationEvent(EventCause.USER, user, guild, invitedGuild))) {
return;
}
InvitationList.expireInvitation(invitedGuild, guild);
guild.addAlly(invitedGuild);
invitedGuild.addAlly(guild);
String allyDoneMessage = messages.allyDone;
allyDoneMessage = StringUtils.replace(allyDoneMessage, "{GUILD}", invitedGuild.getName());
allyDoneMessage = StringUtils.replace(allyDoneMessage, "{TAG}", invitedGuild.getTag());
user.sendMessage(allyDoneMessage);
String allyIDoneMessage = messages.allyIDone;
allyIDoneMessage = StringUtils.replace(allyIDoneMessage, "{GUILD}", guild.getName());
allyIDoneMessage = StringUtils.replace(allyIDoneMessage, "{TAG}", guild.getTag());
invitedOwner.sendMessage(allyIDoneMessage);
ConcurrencyTaskBuilder taskBuilder = ConcurrencyTask.builder();
for (User member : guild.getMembers()) {
taskBuilder.delegate(new PrefixUpdateGuildRequest(member, invitedGuild));
}
for (User member : invitedGuild.getMembers()) {
taskBuilder.delegate(new PrefixUpdateGuildRequest(member, guild));
}
this.concurrencyManager.postTask(taskBuilder.build());
return;
}
if (InvitationList.hasInvitationFrom(invitedGuild, guild)) {
if (!SimpleEventHandler.handle(new GuildRevokeAllyInvitationEvent(EventCause.USER, user, guild, invitedGuild))) {
return;
}
InvitationList.expireInvitation(guild, invitedGuild);
String allyReturnMessage = messages.allyReturn;
allyReturnMessage = StringUtils.replace(allyReturnMessage, "{GUILD}", invitedGuild.getName());
allyReturnMessage = StringUtils.replace(allyReturnMessage, "{TAG}", invitedGuild.getTag());
user.sendMessage(allyReturnMessage);
String allyIReturnMessage = messages.allyIReturn;
allyIReturnMessage = StringUtils.replace(allyIReturnMessage, "{GUILD}", guild.getName());
allyIReturnMessage = StringUtils.replace(allyIReturnMessage, "{TAG}", guild.getTag());
invitedOwner.sendMessage(allyIReturnMessage);
return;
}
if (!SimpleEventHandler.handle(new GuildSendAllyInvitationEvent(EventCause.USER, user, guild, invitedGuild))) {
return;
}
InvitationList.createInvitation(guild, invitedGuild);
String allyInviteDoneMessage = messages.allyInviteDone;
allyInviteDoneMessage = StringUtils.replace(allyInviteDoneMessage, "{GUILD}", invitedGuild.getName());
allyInviteDoneMessage = StringUtils.replace(allyInviteDoneMessage, "{TAG}", invitedGuild.getTag());
user.sendMessage(allyInviteDoneMessage);
String allyToInvitedMessage = messages.allyToInvited;
allyToInvitedMessage = StringUtils.replace(allyToInvitedMessage, "{GUILD}", guild.getName());
allyToInvitedMessage = StringUtils.replace(allyToInvitedMessage, "{TAG}", guild.getTag());
invitedOwner.sendMessage(allyToInvitedMessage);
}
use of panda.utilities.text.Formatter in project FunnyGuilds by FunnyGuilds.
the class CreateCommand method execute.
@FunnyCommand(name = "${user.create.name}", description = "${user.create.description}", aliases = "${user.create.aliases}", permission = "funnyguilds.create", acceptsExceeded = true, playerOnly = true)
public void execute(Player player, User user, String[] args) {
when(!config.guildsEnabled, messages.adminGuildsDisabled);
when(LocationUtils.checkWorld(player), messages.blockedWorld);
when(user.hasGuild(), messages.generalHasGuild);
if (args.length != 2) {
when(args.length == 0, messages.generalNoTagGiven);
when(args.length == 1, messages.generalNoNameGiven);
throw new ValidationException(messages.createMore);
}
String tag = args[0];
if (!config.guildTagKeepCase) {
tag = config.guildTagUppercase ? tag.toUpperCase() : tag.toLowerCase();
}
String name = args[1];
Location guildLocation = player.getLocation().getBlock().getLocation();
World world = player.getWorld();
when(tag.length() > config.createTagLength, messages.createTagLength.replace("{LENGTH}", Integer.toString(config.createTagLength)));
when(tag.length() < config.createTagMinLength, messages.createTagMinLength.replace("{LENGTH}", Integer.toString(config.createTagMinLength)));
when(name.length() > config.createNameLength, messages.createNameLength.replace("{LENGTH}", Integer.toString(config.createNameLength)));
when(name.length() < config.createNameMinLength, messages.createNameMinLength.replace("{LENGTH}", Integer.toString(config.createNameMinLength)));
when(!tag.matches(config.tagRegex.getPattern()), messages.createOLTag);
when(!name.matches(config.nameRegex.getPattern()), messages.createOLName);
when(guildManager.nameExists(name), messages.createNameExists);
when(guildManager.tagExists(tag), messages.createTagExists);
when(config.regionsEnabled && this.regionManager.isInRegion(guildLocation), messages.createIsNear);
when(config.regionsEnabled && this.regionManager.isNearRegion(guildLocation), messages.createIsNear);
if (config.checkForRestrictedGuildNames) {
when(!GuildUtils.validateName(config, name), messages.restrictedGuildName);
when(!GuildUtils.validateTag(config, tag), messages.restrictedGuildTag);
}
HeartConfiguration heart = config.heart;
if (config.regionsEnabled) {
if (!heart.usePlayerPositionForCenterY) {
guildLocation.setY(heart.createCenterY);
}
if (heart.createEntityType != null && guildLocation.getBlockY() < (world.getMaxHeight() - 2)) {
guildLocation.setY(guildLocation.getBlockY() + 2);
}
int distance = config.regionSize + config.createDistance;
if (config.enlargeItems != null) {
distance += config.enlargeItems.size() * config.enlargeSize;
}
when(distance > LocationUtils.flatDistance(player.getWorld().getSpawnLocation(), guildLocation), messages.createSpawn.replace("{DISTANCE}", Integer.toString(distance)));
}
if (config.rankCreateEnable) {
int requiredRank = player.hasPermission("funnyguilds.vip.rank") ? config.rankCreateVip : config.rankCreate;
int points = user.getRank().getPoints();
if (points < requiredRank) {
String msg = messages.createRank;
msg = StringUtils.replace(msg, "{REQUIRED-FORMAT}", NumberRange.inRangeToString(requiredRank, config.pointsFormat).replace("{POINTS}", "{REQUIRED}"));
msg = StringUtils.replace(msg, "{REQUIRED}", String.valueOf(requiredRank));
msg = StringUtils.replace(msg, "{POINTS-FORMAT}", NumberRange.inRangeToString(points, config.pointsFormat));
msg = StringUtils.replace(msg, "{POINTS}", String.valueOf(points));
user.sendMessage(msg);
return;
}
}
List<ItemStack> requiredItems = player.hasPermission("funnyguilds.vip.items") ? config.createItemsVip : config.createItems;
int requiredExperience = player.hasPermission("funnyguilds.vip.items") ? config.requiredExperienceVip : config.requiredExperience;
double requiredMoney = player.hasPermission("funnyguilds.vip.items") ? config.requiredMoneyVip : config.requiredMoney;
if (player.getTotalExperience() < requiredExperience) {
String msg = messages.createExperience;
msg = StringUtils.replace(msg, "{EXP}", String.valueOf(requiredExperience));
user.sendMessage(msg);
return;
}
if (VaultHook.isEconomyHooked() && !VaultHook.canAfford(player, requiredMoney)) {
String notEnoughMoneyMessage = messages.createMoney;
notEnoughMoneyMessage = StringUtils.replace(notEnoughMoneyMessage, "{MONEY}", Double.toString(requiredMoney));
user.sendMessage(notEnoughMoneyMessage);
return;
}
if (!ItemUtils.playerHasEnoughItems(player, requiredItems)) {
return;
}
Guild guild = new Guild(name, tag);
guild.setOwner(user);
guild.setLives(config.warLives);
guild.setBorn(System.currentTimeMillis());
guild.setValidity(Instant.now().plus(config.validityStart).toEpochMilli());
guild.setProtection(Instant.now().plus(config.warProtection).toEpochMilli());
guild.setPvP(config.damageGuild);
guild.setHome(guildLocation);
if (config.regionsEnabled) {
Region region = new Region(guild, guildLocation, config.regionSize);
guild.setRegion(region);
WorldBorder border = world.getWorldBorder();
double radius = border.getSize() / 2;
FunnyBox bbox = FunnyBox.of(border.getCenter().toVector(), radius - config.createMinDistanceFromBorder, world.getMaxHeight(), radius - config.createMinDistanceFromBorder);
FunnyBox gbox = FunnyBox.of(region.getFirstCorner(), region.getSecondCorner());
// border box does not contain guild box
if (!bbox.contains(gbox)) {
String notEnoughDistanceMessage = messages.createNotEnoughDistanceFromBorder;
notEnoughDistanceMessage = StringUtils.replace(notEnoughDistanceMessage, "{BORDER-MIN-DISTANCE}", Double.toString(config.createMinDistanceFromBorder));
user.sendMessage(notEnoughDistanceMessage);
return;
}
HookManager.HOLOGRAPHIC_DISPLAYS.peek(hologramManager -> hologramManager.getCorrectedLocation(guild).peek(location -> hologramManager.getOrCreateHologram(guild).peek(hologram -> hologram.setLocation(location))));
}
if (!SimpleEventHandler.handle(new GuildPreCreateEvent(EventCause.USER, user, guild))) {
return;
}
player.getInventory().removeItem(ItemUtils.toArray(requiredItems));
player.setTotalExperience(player.getTotalExperience() - requiredExperience);
if (VaultHook.isEconomyHooked()) {
VaultHook.withdrawFromPlayerBank(player, requiredMoney);
}
if (config.regionsEnabled) {
if (heart.pasteSchematicOnCreation) {
HookManager.WORLD_EDIT.peek(worldEdit -> {
if (worldEdit.pasteSchematic(heart.guildSchematicFile, guildLocation, heart.pasteSchematicWithAir)) {
user.sendMessage(messages.createGuildCouldNotPasteSchematic);
}
});
} else if (heart.createCenterSphere) {
for (Location locationInSphere : SpaceUtils.sphere(guildLocation, 4, 4, false, true, 0)) {
if (locationInSphere.getBlock().getType() != Material.BEDROCK) {
locationInSphere.getBlock().setType(Material.AIR);
}
}
for (Location locationInSphere : SpaceUtils.sphere(guildLocation, 4, 4, true, true, 0)) {
if (locationInSphere.getBlock().getType() != Material.BEDROCK) {
locationInSphere.getBlock().setType(Material.OBSIDIAN);
}
}
if (config.eventPhysics) {
guildLocation.clone().subtract(0.0D, 2.0D, 0.0D).getBlock().setType(Material.OBSIDIAN);
}
}
this.guildManager.spawnHeart(guild);
player.teleport(guildLocation);
}
this.guildManager.addGuild(guild);
user.setGuild(guild);
guild.getRegion().peek(region -> this.regionManager.addRegion(region));
this.concurrencyManager.postRequests(new PrefixGlobalAddGuildRequest(guild), new PrefixGlobalAddPlayerRequest(user.getName()), new DatabaseUpdateGuildRequest(this.config, this.plugin.getDataModel(), guild));
SimpleEventHandler.handle(new GuildCreateEvent(EventCause.USER, user, guild));
Formatter formatter = new Formatter().register("{GUILD}", name).register("{TAG}", tag).register("{PLAYER}", player.getName());
user.sendMessage(formatter.format(messages.createGuild));
broadcastMessage(formatter.format(messages.broadcastCreate));
if (!config.giveRewardsForFirstGuild) {
return;
}
for (ItemStack item : config.firstGuildRewards) {
if (player.getInventory().firstEmpty() == -1) {
player.getWorld().dropItemNaturally(player.getLocation(), item);
continue;
}
player.getInventory().addItem(item);
}
}
use of panda.utilities.text.Formatter in project FunnyGuilds by FunnyGuilds.
the class WarCommand method execute.
@FunnyCommand(name = "${user.war.name}", description = "${user.war.description}", aliases = "${user.war.aliases}", permission = "funnyguilds.war", completer = "guilds:3", acceptsExceeded = true, playerOnly = true)
public void execute(Player player, @IsOwner User user, Guild guild, String[] args) {
when(args.length < 1, messages.enemyCorrectUse);
Guild enemyGuild = GuildValidation.requireGuildByTag(args[0]);
when(guild.equals(enemyGuild), messages.enemySame);
when(guild.getAllies().contains(enemyGuild), messages.enemyAlly);
when(guild.getEnemies().contains(enemyGuild), messages.enemyAlready);
when(guild.getEnemies().size() >= config.maxEnemiesBetweenGuilds, () -> messages.enemyMaxAmount.replace("{AMOUNT}", Integer.toString(config.maxEnemiesBetweenGuilds)));
if (enemyGuild.getEnemies().size() >= config.maxEnemiesBetweenGuilds) {
Formatter formatter = new Formatter().register("{GUILD}", enemyGuild.getName()).register("{TAG}", enemyGuild.getTag()).register("{AMOUNT}", config.maxEnemiesBetweenGuilds);
user.sendMessage(formatter.format(messages.enemyMaxTargetAmount));
return;
}
guild.addEnemy(enemyGuild);
String allyDoneMessage = messages.enemyDone;
allyDoneMessage = StringUtils.replace(allyDoneMessage, "{GUILD}", enemyGuild.getName());
allyDoneMessage = StringUtils.replace(allyDoneMessage, "{TAG}", enemyGuild.getTag());
user.sendMessage(allyDoneMessage);
String allyIDoneMessage = messages.enemyIDone;
allyIDoneMessage = StringUtils.replace(allyIDoneMessage, "{GUILD}", guild.getName());
allyIDoneMessage = StringUtils.replace(allyIDoneMessage, "{TAG}", guild.getTag());
enemyGuild.getOwner().sendMessage(allyIDoneMessage);
ConcurrencyTaskBuilder taskBuilder = ConcurrencyTask.builder();
for (User member : guild.getMembers()) {
taskBuilder.delegate(new PrefixUpdateGuildRequest(member, enemyGuild));
}
for (User member : enemyGuild.getMembers()) {
taskBuilder.delegate(new PrefixUpdateGuildRequest(member, guild));
}
this.concurrencyManager.postTask(taskBuilder.build());
}
use of panda.utilities.text.Formatter in project FunnyGuilds by FunnyGuilds.
the class HologramUpdateHandler method run.
@Override
public void run() {
HologramConfiguration hologramConfig = config.heart.hologram;
if (!hologramConfig.enabled) {
return;
}
ItemStack item = new ItemStack(hologramConfig.item);
HookManager.HOLOGRAPHIC_DISPLAYS.peek(hologramManager -> {
for (Guild guild : plugin.getGuildManager().getGuilds()) {
Formatter formatter = Placeholders.GUILD_ALL.toFormatter(guild);
List<String> lines = PandaStream.of(hologramConfig.displayedLines).map(formatter::format).map(ChatUtils::colored).map(line -> Placeholders.GUILD_MEMBERS_COLOR_CONTEXT.format(line, Pair.of(ChatUtils.getLastColorBefore(line, "{MEMBERS}"), guild))).toList();
Bukkit.getScheduler().runTask(plugin, () -> hologramManager.getOrCreateHologram(guild).peek(hologram -> {
hologram.clearHologram();
if (hologramConfig.item != Material.AIR) {
hologram.addIconItem(item);
}
hologram.addLines(lines);
}));
}
});
}
use of panda.utilities.text.Formatter in project FunnyGuilds by FunnyGuilds.
the class ConfirmCommand method execute.
@FunnyCommand(name = "${user.confirm.name}", description = "${user.confirm.description}", aliases = "${user.confirm.aliases}", permission = "funnyguilds.delete", acceptsExceeded = true, playerOnly = true)
public void execute(Player player, @IsOwner User user, Guild guild) {
when(config.guildDeleteCancelIfSomeoneIsOnRegion && regionManager.isAnyUserInRegion(guild.getRegion().getOrNull(), guild.getMembers()), messages.deleteSomeoneIsNear);
when(!ConfirmationList.contains(user.getUUID()), messages.deleteToConfirm);
ConfirmationList.remove(user.getUUID());
if (!SimpleEventHandler.handle(new GuildDeleteEvent(EventCause.USER, user, guild))) {
return;
}
this.guildManager.deleteGuild(plugin, guild);
Formatter formatter = new Formatter().register("{GUILD}", guild.getName()).register("{TAG}", guild.getTag()).register("{PLAYER}", player.getName());
user.sendMessage(formatter.format(messages.deleteSuccessful));
Bukkit.getServer().broadcastMessage(formatter.format(messages.broadcastDelete));
}
Aggregations