use of pizzaaxx.bteconosur.serverPlayer.GroupsManager in project bteConoSurCore by BTEConoSur.
the class EventsCommand method onCommand.
@Override
public boolean onCommand(CommandSender p, org.bukkit.command.Command command, String label, final String[] args) {
if (command.getName().equals("event")) {
if (p instanceof Player) {
Player player = (Player) p;
if (args.length > 0) {
if (args[0].equals("join")) {
OldCountry country = null;
if (args.length > 1) {
country = new OldCountry(args[1]);
if (country.getName() == null) {
p.sendMessage(eventsPrefix + "Introduce un país válido.");
return true;
}
} else {
RegionManager regionManager = getWorldGuard().getRegionManager(mainWorld);
boolean found = false;
for (ProtectedRegion region : regionManager.getApplicableRegions(player.getLocation()).getRegions()) {
if (region.getId().startsWith("evento_")) {
country = new OldCountry(region.getId().replace("evento_", ""));
found = true;
break;
}
}
if (!found) {
player.sendMessage(eventsPrefix + "No estás en la zona de ningún evento.");
return true;
}
}
ServerEvent event = new ServerEvent(country);
if (event.getStatus() != ServerEvent.Status.OFF) {
if (!event.getParticipants().contains(player)) {
ServerPlayer s = new ServerPlayer(player);
if (s.getPointsManager().getMaxPoints().getValue() >= event.getMinPoints()) {
event.addParticipant(player);
event.save();
player.sendMessage(eventsPrefix + "¡Te has unido al evento \"" + event.getName() + "\"! ¡Esperamos que te diviertas!");
if (event.getStatus() == ServerEvent.Status.ON) {
for (OfflinePlayer offlinePlayer : event.getParticipants()) {
if (offlinePlayer.isOnline() && offlinePlayer != player) {
((Player) offlinePlayer).sendMessage(eventsPrefix + "¡§a" + s.getChatManager().getDisplayName() + "§f se ha unido al evento §a" + event.getName() + "§f.");
}
}
GroupsManager groupsManager = s.getGroupsManager();
if (groupsManager.getPrimaryGroup() == GroupsManager.PrimaryGroup.DEFAULT) {
groupsManager.addSecondaryGroup(GroupsManager.SecondaryGroup.EVENTO);
}
} else {
if (s.getDiscordManager().isLinked()) {
player.sendMessage(eventsPrefix + "Recibirás una notificación por Discord cuando el evento comience.");
} else {
player.sendMessage(eventsPrefix + "Se te dejará una notificación en Minecraft cuando el evento comience.");
}
}
DataManager data = s.getDataManager();
List<String> events = data.getStringList("events");
if (!events.contains(country.getName())) {
events.add(country.getName());
data.set("events", events);
data.save();
}
} else {
player.sendMessage(eventsPrefix + "Necesitas al menos §a" + event.getMinPoints() + "§f puntos para unirte al evento.");
}
} else {
player.sendMessage(eventsPrefix + "Ya eres parte del evento.");
}
} else {
player.sendMessage(eventsPrefix + "No estás en la zona de ningún evento.");
}
} else if (args[0].equals("leave")) {
OldCountry country = null;
if (args.length > 1) {
country = new OldCountry(args[1]);
if (country.getName() == null) {
p.sendMessage(eventsPrefix + "Introduce un país válido.");
return true;
}
} else {
RegionManager regionManager = getWorldGuard().getRegionManager(mainWorld);
boolean found = false;
for (ProtectedRegion region : regionManager.getApplicableRegions(player.getLocation()).getRegions()) {
if (region.getId().startsWith("evento_")) {
country = new OldCountry(region.getId().replace("evento_", ""));
found = true;
break;
}
}
if (!found) {
player.sendMessage(eventsPrefix + "No estás en la zona de ningún evento.");
return true;
}
}
ServerEvent event = new ServerEvent(country);
if (event.getStatus() != ServerEvent.Status.OFF) {
if (event.getParticipants().contains(player)) {
ServerPlayer s = new ServerPlayer(player);
DataManager data = s.getDataManager();
player.sendMessage(eventsPrefix + "Has abandonado el evento \"" + event.getName() + "\".");
if (event.getStatus() == ServerEvent.Status.ON) {
for (OfflinePlayer offlinePlayer : event.getParticipants()) {
if (offlinePlayer.isOnline() && offlinePlayer != player) {
((Player) offlinePlayer).sendMessage(eventsPrefix + "§a" + s.getChatManager().getDisplayName() + "§f ha abandonado el evento §a" + event.getName() + "§f.");
}
}
GroupsManager groupsManager = s.getGroupsManager();
if (groupsManager.getPrimaryGroup() == GroupsManager.PrimaryGroup.DEFAULT && s.getDataManager().getStringList("events").size() == 1) {
groupsManager.removeSecondaryGroup(GroupsManager.SecondaryGroup.EVENTO);
}
}
data.set("events", data.getStringList("events").remove(country.getName()));
data.save();
event.removeParticipant(player);
event.save();
} else {
player.sendMessage(eventsPrefix + "No eres parte del evento.");
}
} else {
player.sendMessage(eventsPrefix + "No estás en la zona de ningún evento.");
}
} else {
player.sendMessage(eventsPrefix + "Introduce un subcomando válido.");
}
} else {
Inventory gui = Bukkit.createInventory(null, 27, "Elige un evento");
for (int i = 0; i < 27; i++) {
gui.setItem(i, background);
}
gui.setItem(26, Misc.getCustomHead("§fSalir", null, "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMzdhZWU5YTc1YmYwZGY3ODk3MTgzMDE1Y2NhMGIyYTdkNzU1YzYzMzg4ZmYwMTc1MmQ1ZjQ0MTlmYzY0NSJ9fX0="));
ServerEvent event = new ServerEvent(new OldCountry("argentina"));
gui.setItem(10, Misc.getCustomHead("§a§lArgentina", (event.getStatus() == ServerEvent.Status.OFF ? "§aEstado: §c§lApagado" : "§aEstado: " + (event.getStatus() == ServerEvent.Status.ON ? "§2§lEn curso" : "§e§lPreparado") + "\n§aNombre: §f" + event.getName() + "\n§aFecha: §f" + event.getDate() + "\n§aPuntos mínimos: §f" + event.getMinPoints() + "\n§7§oHaz click para ir"), "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZjZkMDMzZGM1ZjY3NWFkNTFiYzA2YzdhMTk0OWMzNWExZDM3ZTQ4YTJlMWMyNzg5YzJjZjdkMzBlYzU4ZjMyYyJ9fX0="));
event = new ServerEvent(new OldCountry("bolivia"));
gui.setItem(11, Misc.getCustomHead("§a§lBolivia", (event.getStatus() == ServerEvent.Status.OFF ? "§aEstado: §c§lApagado" : "§aEstado: " + (event.getStatus() == ServerEvent.Status.ON ? "§2§lEn curso" : "§e§lPreparado") + "\n§aNombre: §f" + event.getName() + "\n§aFecha: §f" + event.getDate() + "\n§aPuntos mínimos: §f" + event.getMinPoints() + "\n§7§oHaz click para ir"), "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZmQyYzlmOTg2MThjZDVmN2RiZjBjMWE1NGVlMDk0NzQ2NjJiNzEzYjVhYTI2NWM4NWVmYmZjNDY0MThlOTE1In19fQ=="));
event = new ServerEvent(new OldCountry("chile"));
gui.setItem(12, Misc.getCustomHead("§a§lChile", (event.getStatus() == ServerEvent.Status.OFF ? "§aEstado: §c§lApagado" : "§aEstado: " + (event.getStatus() == ServerEvent.Status.ON ? "§2§lEn curso" : "§e§lPreparado") + "\n§aNombre: §f" + event.getName() + "\n§aFecha: §f" + event.getDate() + "\n§aPuntos mínimos: §f" + event.getMinPoints() + "\n§7§oHaz click para ir"), "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTAzNTk0YzBjMTE2YjA1ZDc1NjA2MGEyMjM5ODM3NzQ3ODg4NzMyMjY5MzVkOTYyNzExYmMzZTI1ODQ2ZGM2YiJ9fX0="));
event = new ServerEvent(new OldCountry("paraguay"));
gui.setItem(13, Misc.getCustomHead("§a§lParaguay", (event.getStatus() == ServerEvent.Status.OFF ? "§aEstado: §c§lApagado" : "§aEstado: " + (event.getStatus() == ServerEvent.Status.ON ? "§2§lEn curso" : "§e§lPreparado") + "\n§aNombre: §f" + event.getName() + "\n§aFecha: §f" + event.getDate() + "\n§aPuntos mínimos: §f" + event.getMinPoints() + "\n§7§oHaz click para ir"), "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvODE3OGRlNjkxYjUwOGQ2MjQ5MTA5ZmM1NGFmNmZiYTQ5YmFhODM3N2FkMzcwNjEyZWQ2MTdkNzdkZDZhZDU4OCJ9fX0="));
event = new ServerEvent(new OldCountry("peru"));
gui.setItem(14, Misc.getCustomHead("§a§lPerú", (event.getStatus() == ServerEvent.Status.OFF ? "§aEstado: §c§lApagado" : "§aEstado: " + (event.getStatus() == ServerEvent.Status.ON ? "§2§lEn curso" : "§e§lPreparado") + "\n§aNombre: §f" + event.getName() + "\n§aFecha: §f" + event.getDate() + "\n§aPuntos mínimos: §f" + event.getMinPoints() + "\n§7§oHaz click para ir"), "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMjRkMDNiZDQ0MTBiYWJkYzY4MjQ5M2IzYzJiYmEyNmU3MzBlNmJjNjU4ZDM4ODhlNzliZjcxMmY4NTMifX19"));
event = new ServerEvent(new OldCountry("uruguay"));
gui.setItem(15, Misc.getCustomHead("§a§lUruguay", (event.getStatus() == ServerEvent.Status.OFF ? "§aEstado: §c§lApagado" : "§aEstado: " + (event.getStatus() == ServerEvent.Status.ON ? "§2§lEn curso" : "§e§lPreparado") + "\n§aNombre: §f" + event.getName() + "\n§aFecha: §f" + event.getDate() + "\n§aPuntos mínimos: §f" + event.getMinPoints() + "\n§7§oHaz click para ir"), "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMjg0NDA1OTdjNGJjMmFhZDYwMGE1NDYwNGRjN2IxZmI3NzEzNDNlMDIyZTZhMmUwMjJmOTBlNDBjYzI1ZjlmOCJ9fX0="));
event = new ServerEvent(new OldCountry("global"));
gui.setItem(16, Misc.getCustomHead("§a§lGlobal", (event.getStatus() == ServerEvent.Status.OFF ? "§aEstado: §c§lApagado" : "§aEstado: " + (event.getStatus() == ServerEvent.Status.ON ? "§2§lEn curso" : "§e§lPreparado") + "\n§aNombre: §f" + event.getName() + "\n§aFecha: §f" + event.getDate() + "\n§aPuntos mínimos: §f" + event.getMinPoints() + "\n§7§oHaz click para ir"), "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOThkYWExZTNlZDk0ZmYzZTMzZTFkNGM2ZTQzZjAyNGM0N2Q3OGE1N2JhNGQzOGU3NWU3YzkyNjQxMDYifX19"));
player.openInventory(gui);
}
} else {
p.sendMessage(eventsPrefix + "No puedes usar este comando desde la consola.");
}
}
if (command.getName().equals("manageevent")) {
if (args.length > 0) {
if (countryAbbreviations.contains(args[0])) {
OldCountry pais = new OldCountry(args[0]);
final String country = pais.getName();
if (args.length > 1) {
ServerEvent event = new ServerEvent(pais);
if (args[1].equals("name")) {
if (args.length > 2) {
String name = String.join(" ", Arrays.asList(args).subList(2, args.length));
if (name.matches("[ A-Za-z0-9/]{1,32}")) {
event.setName(name);
event.save();
p.sendMessage(eventsPrefix + "Has establecido el nombre del evento de §a" + country.replace("peru", "perú").toUpperCase() + "§f en §a" + name + "§f.");
} else {
p.sendMessage(eventsPrefix + "Introduce un nombre válido.");
}
} else {
p.sendMessage(eventsPrefix + "El nombre del evento del evento de §a" + country.replace("peru", "perú").toUpperCase() + "§f es §a" + event.getName() + "§f.");
}
} else if (args[1].equals("date")) {
if (args.length > 2) {
String date = String.join(" ", Arrays.asList(args).subList(2, args.length));
if (date.matches("[ -A-Za-z0-9/]{1,32}")) {
event.setDate(date);
event.save();
p.sendMessage(eventsPrefix + "Has establecido la fecha del evento de §a" + country.replace("peru", "perú").toUpperCase() + "§f en §a" + date + "§f.");
} else {
p.sendMessage(eventsPrefix + "Introduce un texto válido.");
}
} else {
p.sendMessage(eventsPrefix + "La fecha del evento de §a" + country.replace("peru", "perú").toUpperCase() + "§f es §a" + event.getDate() + "§f.");
}
} else if (args[1].equals("status")) {
if (args.length > 2) {
if (args[2].equals("stop") || args[2].equals("off") || args[2].equals("terminar")) {
if (event.getStatus() != ServerEvent.Status.OFF) {
if (stopConfirm.contains(p)) {
stopConfirm.remove(p);
event.stop();
p.sendMessage("Has terminado el evento de §a" + country.replace("peru", "perú").toUpperCase() + "§f.");
} else if (event.getStatus() == ServerEvent.Status.READY) {
stopConfirm.add(p);
p.sendMessage(eventsPrefix + "§cToda la configuración del evento se perderá.§f Usa el comando de nuevo para confirmar.");
} else {
stopConfirm.add(p);
p.sendMessage(eventsPrefix + "§cNo puedes deshacer esta acción.§f Usa el comando de nuevo para confirmar.");
}
}
} else if (args[2].equals("ready") || args[2].equals("listo") || args[2].equals("preparado")) {
if (event.getStatus() == ServerEvent.Status.OFF) {
if (readyConfirm.contains(p)) {
readyConfirm.remove(p);
event.prepared();
p.sendMessage("Has marcado el evento de §a" + country.replace("peru", "perú").toUpperCase() + "§f como preparado.");
} else {
readyConfirm.add(p);
p.sendMessage(eventsPrefix + "¿Estás seguro de que quieres marcar el evento como terminado? A continuación se hay una previsualización del evento. Usa el comando de nuevo para confirmar.");
p.sendMessage(">+-----------+[-< §5EVENTO§f >-]+-----------+<");
p.sendMessage("§aNombre: §f" + event.getName());
p.sendMessage("§aFecha: §f" + event.getDate());
p.sendMessage("§aPuntos mínimos: §f" + event.getMinPoints());
p.sendMessage("§aImagen: §f" + event.getImage());
p.sendMessage("§aCoordenadas: §f" + event.getTp().getBlockX() + ", " + event.getTp().getBlockY() + ", " + event.getTp().getBlockZ());
p.sendMessage(">+-----------+[-< ====== >-]+-----------+<");
}
} else {
p.sendMessage(eventsPrefix + "Sólo puedes hacer esto cuando el proyecto está apagado.");
}
} else if (args[2].equals("start") || args[2].equals("on") || args[2].equals("empezar")) {
if (event.getStatus() == ServerEvent.Status.READY) {
if (startConfirm.contains(p)) {
startConfirm.remove(p);
event.start();
p.sendMessage("Has empezado el evento de §a" + country.replace("peru", "perú").toUpperCase() + "§f.");
} else {
startConfirm.add(p);
p.sendMessage(eventsPrefix + "¿Estás seguro de que quieres iniciar el evento? Usa el comando de nuevo para confirmar.");
}
} else {
p.sendMessage(eventsPrefix + "Solo puedes iniciar un evento cuando este está marcado como listo.");
}
}
} else {
p.sendMessage(eventsPrefix + "Introduce una acción.");
}
} else if (args[1].equals("tp")) {
if (args.length > 2) {
if (args[2].equals("here")) {
if (p instanceof Player) {
Player player = (Player) p;
event.setTp(player.getLocation());
event.save();
p.sendMessage(eventsPrefix + "Has establecido el teletransporte al evento de §a" + country.replace("peru", "perú").toUpperCase() + "§f en tu posición actual.");
} else {
p.sendMessage(eventsPrefix + "No puedes usar este comando desde la consola.");
}
} else if (args.length > 4 && args[2].matches("^-?[0-9]{1,16}(\\.[0-9]{1,16})?$") && args[3].matches("^-?[0-9]{1,16}(\\.[0-9]{1,16})?$") && args[4].matches("^-?[0-9]{1,16}(\\.[0-9]{1,16})?$")) {
double x = Double.parseDouble(args[2]);
double y = Double.parseDouble(args[3]);
double z = Double.parseDouble(args[4]);
event.setTp(new Location(mainWorld, x, y, z));
event.save();
p.sendMessage(eventsPrefix + "Has establecido el teletransporte al evento de §a" + country.replace("peru", "perú").toUpperCase() + "§f en §a" + x + ", " + y + ", " + z + "§f.");
}
} else {
p.sendMessage(eventsPrefix + "El teletransporte del evento de §a" + country.replace("peru", "perú").toUpperCase() + "§f está en §a" + event.getTp().getBlockX() + ", " + event.getTp().getBlockY() + ", " + event.getTp().getBlockZ() + "§f.");
}
} else if (args[1].equals("redefine")) {
if (event.getStatus() != ServerEvent.Status.ON) {
if (p instanceof Player) {
Player player = (Player) p;
List<BlockVector2D> points = new ArrayList<>();
try {
points = polyRegion(getSelection(player)).getPoints();
} catch (IllegalArgumentException e) {
player.sendMessage(eventsPrefix + "Selecciona un área cúbica o poligonal.");
} catch (IncompleteRegionException e) {
player.sendMessage(eventsPrefix + "Selecciona un área primero.");
}
event.setNewRegion(points);
event.save();
p.sendMessage(eventsPrefix + "Has redefinido la región del evento de §a" + country.replace("peru", "perú").toUpperCase() + "§f.");
} else {
p.sendMessage(eventsPrefix + "No se puede ejecutar este comando desde la consola.");
}
} else {
p.sendMessage(eventsPrefix + "No puedes hacer esto mientras el evento está activo.");
}
} else if (args[1].equals("minpoints")) {
if (args.length > 2) {
if (event.getStatus() == ServerEvent.Status.ON) {
p.sendMessage(eventsPrefix + "No puedes cambiar esto mientras un evento está activo.");
return true;
}
if (args[2].matches("[0-9]{1,10}") && Integer.parseInt(args[2]) >= 0) {
event.setMinPoints(Integer.parseInt(args[2]));
event.save();
p.sendMessage(eventsPrefix + "Has establecido el mínimo de puntos para el evento de §a" + country.replace("peru", "perú").toUpperCase() + "§f en §a" + args[2] + "§f.");
} else {
p.sendMessage(eventsPrefix + "Introduce un valor válido.");
}
} else {
p.sendMessage(eventsPrefix + "El mínimo de puntos para el evento de §a" + country.replace("peru", "perú").toUpperCase() + "§f es de §a" + event.getMinPoints() + "§f.");
}
} else if (args[1].equals("image")) {
if (args.length > 2) {
if (args[2].equals("delete")) {
event.setImage("notSet");
event.save();
p.sendMessage(eventsPrefix + "Has eliminado la imagen del evento de §a" + country.replace("peru", "perú").toUpperCase() + "§f.");
} else {
event.setImage(args[2]);
event.save();
p.sendMessage(eventsPrefix + "Has establecido la imagen del evento de §a" + country.replace("peru", "perú").toUpperCase() + "§f en\n§b" + args[2]);
}
} else {
p.sendMessage(eventsPrefix + "Introduce un enlace a una imagen.");
}
}
} else {
p.sendMessage(eventsPrefix + "Introduce una acción.");
}
} else {
p.sendMessage(eventsPrefix + "Introduce un país válido.");
}
} else {
p.sendMessage(eventsPrefix + "Introduce un país para manejar.");
}
}
return true;
}
use of pizzaaxx.bteconosur.serverPlayer.GroupsManager in project bteConoSurCore by BTEConoSur.
the class ServerEvent method stop.
public void stop() {
List<String> names = new ArrayList<>();
for (OfflinePlayer player : participants) {
ServerPlayer serverPlayer = new ServerPlayer(player);
DataManager data = serverPlayer.getDataManager();
GroupsManager groups = serverPlayer.getGroupsManager();
names.add(serverPlayer.getName());
if (groups.getSecondaryGroups().contains(GroupsManager.SecondaryGroup.EVENTO)) {
if (data.getStringList("events").size() == 1) {
groups.removeSecondaryGroup(GroupsManager.SecondaryGroup.EVENTO);
}
}
data.set("events", data.getStringList("events").remove(this.country.getName()));
data.save();
if (!player.isOnline()) {
serverPlayer.sendNotification(eventsPrefix + "El evento §a**" + this.name + "**§f de §a" + StringUtils.capitalize(country.getName().replace("peru", "perú")) + "§f acaba de terminar. ¡Gracias por participar!");
}
}
for (Player player : Bukkit.getOnlinePlayers()) {
player.sendMessage(">+-----------+[-< §5EVENTO§f >-]+-----------+<");
player.sendMessage("¡El evento §a" + name + "§f de §a" + StringUtils.capitalize(country.getName().replace("peru", "perú")) + "§f acaba de terminar!");
player.sendMessage(">+-----------+[-< ====== >-]+-----------+<");
}
EmbedBuilder embed = new EmbedBuilder();
embed.setColor(new Color(255, 0, 0));
embed.setThumbnail(country.getIcon());
embed.setTitle("¡El evento \"" + name + "\" de " + StringUtils.capitalize(country.getName().replace("peru", "perú")) + " acaba de terminar!");
if (names.size() > 0) {
embed.addField(":busts_in_silhouette: Participantes finales:", String.join(", ", names), false);
} else {
embed.addField(":busts_in_silhouette: Participantes finales:", "No hay.", false);
}
gateway.sendMessageEmbeds(embed.build()).queue();
embed.setTitle("Evento \"" + name + "\"");
country.getLogs().sendMessageEmbeds(embed.build()).queue();
this.reset();
this.save();
}
use of pizzaaxx.bteconosur.serverPlayer.GroupsManager in project bteConoSurCore by BTEConoSur.
the class ServerEvent method start.
public void start() {
this.setStatus(Status.ON);
this.save();
List<String> names = new ArrayList<>();
for (OfflinePlayer player : participants) {
ServerPlayer serverPlayer = new ServerPlayer(player);
GroupsManager groupsManager = serverPlayer.getGroupsManager();
if (groupsManager.getPrimaryGroup() == GroupsManager.PrimaryGroup.DEFAULT && !(groupsManager.getSecondaryGroups().contains(GroupsManager.SecondaryGroup.EVENTO))) {
groupsManager.addSecondaryGroup(GroupsManager.SecondaryGroup.EVENTO);
}
names.add(serverPlayer.getName());
if (!player.isOnline()) {
serverPlayer.sendNotification(eventsPrefix + "¡El evento §a**" + this.name + " (" + StringUtils.capitalize(country.getName().replace("peru", "perú")) + ")**§f acaba de empezar! Usa §a`/event`§f para ir.");
}
}
for (Player player : Bukkit.getOnlinePlayers()) {
player.sendMessage(">+-----------+[-< §5EVENTO§f >-]+-----------+<");
player.sendMessage("§d¡El evento de " + StringUtils.capitalize(country.getName().replace("peru", "perú")) + " acaba de iniciar!");
player.sendMessage("§aNombre: §f" + this.getName());
player.sendMessage("§aFecha: §f" + this.getDate());
player.sendMessage("§aPuntos mínimos: §f" + this.getMinPoints());
player.sendMessage("§aCoordenadas: §f" + this.getTp().getBlockX() + ", " + this.getTp().getBlockY() + ", " + this.getTp().getBlockZ());
player.sendMessage("§7¡Usa §f/event§7 para ir" + (participants.contains(player) ? "!" : " y §f/event join§7 para unirte!"));
player.sendMessage(">+-----------+[-< ====== >-]+-----------+<");
}
EmbedBuilder embed = new EmbedBuilder();
embed.setDescription("Usa `/event` en el servidor para ir al evento y `/event join` para unirte.");
embed.setColor(new Color(0, 255, 43));
embed.setThumbnail(country.getIcon());
embed.setTitle("¡El evento \"" + name + "\" de " + StringUtils.capitalize(country.getName().replace("peru", "perú")) + " acaba de empezar!");
embed.addField(":calendar: Fecha:", this.date, false);
embed.addField(":round_pushpin: Coordenadas:", tp.getBlockX() + " " + tp.getBlockY() + " " + tp.getBlockZ(), false);
embed.addField(":chart_with_upwards_trend: Puntos mínimos para participar:", minPoints.toString(), false);
if (names.size() > 0) {
embed.addField(":busts_in_silhouette: Participantes actuales:", String.join(", ", names), false);
}
if (image.equals("notSet")) {
try {
embed.setImage("attachment://map.png");
gateway.sendFile(new URL(getMapURL(new Pair<>(region.getPoints(), "7434eb"))).openStream(), "map.png").setEmbeds(embed.build()).queue();
} catch (IOException e) {
e.printStackTrace();
}
} else {
embed.setImage(image);
gateway.sendMessageEmbeds(embed.build()).queue();
}
}
use of pizzaaxx.bteconosur.serverPlayer.GroupsManager in project bteConoSurCore by BTEConoSur.
the class Events method onChat.
@EventHandler
public void onChat(AsyncPlayerChatEvent e) {
e.setCancelled(true);
Player p = e.getPlayer();
ServerPlayer s = new ServerPlayer(p);
ChatManager manager = s.getChatManager();
if (!(manager.isHidden())) {
List<Chat> targetChats = new ArrayList<>();
List<Player> pingedPlayers = new ArrayList<>();
targetChats.add(manager.getChat());
String message = ChatColor.stripColor(e.getMessage());
for (String word : e.getMessage().split(" ")) {
if (word.startsWith("@")) {
if (Bukkit.getOfflinePlayer(word.replace("@", "")).isOnline()) {
Player target = Bukkit.getPlayer(word.replace("@", ""));
if (!(pingedPlayers.contains(target))) {
pingedPlayers.add(target);
}
ServerPlayer sTarget = new ServerPlayer(target);
if (!(targetChats.contains(sTarget.getChatManager().getChat()))) {
targetChats.add(sTarget.getChatManager().getChat());
}
message = message.replace(word, "§a~" + s.getChatManager().getDisplayName() + "~");
}
}
}
for (Chat chat : targetChats) {
if (chat.getName().equals("global")) {
List<String> strings = new ArrayList<>();
strings.add(":speech_balloon: **");
GroupsManager groupsManager = s.getGroupsManager();
Configuration emojis = new Configuration(Bukkit.getPluginManager().getPlugin("bteConoSur"), "discord/groupEmojis.yml");
strings.add("[" + emojis.getString(groupsManager.getPrimaryGroup().toString()) + "] ");
for (GroupsManager.SecondaryGroup group : groupsManager.getSecondaryGroups()) {
strings.add("[" + emojis.getString(group.toString()) + "] ");
}
strings.add(s.getName() + ":** " + ChatColor.stripColor(message.replace("~", "**")));
gateway.sendMessage(String.join("", strings)).queue();
}
chat.sendMessage(message, s);
}
for (Player player : pingedPlayers) {
ServerPlayer sPlayer = new ServerPlayer(player);
if (sPlayer.getChatManager().isHidden()) {
p.sendMessage(BookUtil.TextBuilder.of(ChatCommand.CHAT_PREFIX + "§a" + sPlayer.getName() + "tiene el chat oculto. ").build(), BookUtil.TextBuilder.of("§a[ENVIAR POR PRIVADO]").onHover(BookUtil.HoverAction.showText("Haz click para enviar el menaje por privado.")).onClick(BookUtil.ClickAction.runCommand("/msg " + new ServerPlayer(player).getName() + ChatColor.stripColor(e.getMessage()))).build());
continue;
}
player.playSound(player.getLocation(), Sound.BLOCK_NOTE_XYLOPHONE, 1, 1);
}
} else {
p.sendMessage(ChatCommand.CHAT_PREFIX + "No puedes hablar mientras tienes el chat oculto.");
}
}
use of pizzaaxx.bteconosur.serverPlayer.GroupsManager in project bteConoSurCore by BTEConoSur.
the class ProjectsCommand method onCommand.
@Override
public boolean onCommand(CommandSender sender, org.bukkit.command.Command cmd, String label, String[] args) {
if (!(sender instanceof Player)) {
sender.sendMessage(projectsPrefix + "Este comando solo puede ser usado por jugadores.");
}
Player p = (Player) sender;
ServerPlayer s = new ServerPlayer(p);
ProjectsManager projectsManager = s.getProjectsManager();
if (args.length == 0) {
sender.sendMessage(projectsPrefix + "Debes introducir un subcomando.");
return true;
}
if (args[0].equals("create") || args[0].equals("crear")) {
// GET POINTS
List<BlockVector2D> points;
try {
points = polyRegion(getSelection(p)).getPoints();
} catch (IncompleteRegionException e) {
p.sendMessage(projectsPrefix + "Selecciona un área primero.");
return true;
} catch (IllegalArgumentException e) {
p.sendMessage(projectsPrefix + "Debes seleccionar una region cúbica o poligonal.");
return true;
}
if (points.size() > maxProjectPoints) {
p.sendMessage(projectsPrefix + "La selección no puede tener más de " + maxProjectPoints + " puntos.");
return true;
}
OldCountry country = new OldCountry(points.get(0));
if (country.getName().equals("global")) {
p.sendMessage(projectsPrefix + "Los proyectos no funcionan aquí.");
return true;
}
if (p.hasPermission("bteconosur.projects.manage.create")) {
if (!s.getPermissionCountries().contains(country)) {
p.sendMessage(projectsPrefix + "No puedes hacer esto aquí.");
return true;
}
if (args.length < 2) {
p.sendMessage(projectsPrefix + "Introduce una dificultad, puede ser §afacil§f, §aintermedio§f o §adificil§f.");
return true;
}
if ((!(args[1].equals("facil"))) && (!(args[1].equals("intermedio"))) && (!(args[1].equals("dificil")))) {
p.sendMessage(projectsPrefix + "Introduce una dificultad válida, puede ser §afacil§f, §aintermedio§f o §adificil§f.");
return true;
}
Project project = new Project(new OldCountry(new Location(mainWorld, points.get(0).getX(), 100, points.get(0).getZ())), Project.Difficulty.valueOf(args[1]), points);
project.save();
// SEND MESSAGES
p.sendMessage(projectsPrefix + "Proyecto con la ID §a" + project.getId() + "§f creado con la dificultad §a" + project.getDifficulty().toString().toUpperCase() + "§f.");
StringBuilder dscMessage = new StringBuilder(":clipboard: **" + p.getName() + "** ha creado el proyecto `" + project.getId() + "` con dificultad `" + args[1].toUpperCase() + "` en las coordenadas: \n");
for (BlockVector2D point : project.getPoints()) {
dscMessage.append("> ").append(Math.floor(point.getX())).append(" ").append(Math.floor(p.getWorld().getHighestBlockAt(point.getBlockX(), point.getBlockZ()).getY())).append(" ").append(Math.floor(point.getZ())).append("\n");
}
dscMessage = new StringBuilder(dscMessage.toString().replace(".0", ""));
project.getCountry().getLogs().sendMessage(dscMessage.toString()).queue();
return true;
} else if (p.hasPermission("bteconosur.projects.create")) {
if (projectsManager.getProjects(country).size() < maxProjectsPerPlayer) {
Project project = new Project(getCountryAtLocation(new Location(mainWorld, points.get(0).getX(), 100, points.get(0).getZ())), Project.Difficulty.FACIL, points);
EmbedBuilder request = new EmbedBuilder();
request.setColor(new Color(0, 255, 42));
request.setTitle(new ServerPlayer(p).getName() + " quiere crear un proyecto.");
List<String> coords = new ArrayList<>();
for (BlockVector2D point : project.getPoints()) {
coords.add(("> " + point.getX() + " " + new Coords2D(point).getHighestY() + " " + point.getZ()).replace(".0", ""));
}
request.addField(":round_pushpin: Coordenadas:", String.join("\n", coords), false);
// GMAPS
BlockVector2D average = project.getAverageCoordinate();
Coords2D geoCoord = new Coords2D(average);
request.addField(":map: Google Maps:", "https://www.google.com/maps/@" + geoCoord.getLat() + "," + geoCoord.getLon() + ",19z", false);
// IMAGE
request.setImage(project.getImageUrl());
ActionRow actionRow = ActionRow.of(Button.of(ButtonStyle.SECONDARY, "facil", "Fácil", Emoji.fromMarkdown("\uD83D\uDFE2")), Button.of(ButtonStyle.SECONDARY, "intermedio", "Intermedio", Emoji.fromMarkdown("\uD83D\uDFE1")), Button.of(ButtonStyle.SECONDARY, "dificil", "Difícil", Emoji.fromMarkdown("\uD83D\uDD34")), Button.of(ButtonStyle.DANGER, "rechazar", "Rechazar", Emoji.fromMarkdown("✖️")));
MessageBuilder message = new MessageBuilder();
message.setEmbeds(request.build());
message.setActionRows(actionRow);
country.getRequests().sendMessage(message.build()).queue();
p.sendMessage(projectsPrefix + "Se ha enviado una solicitud para crear tu proyecto.");
} else {
p.sendMessage(projectsPrefix + "No puedes ser líder de más de 10 proyectos.");
}
} else {
p.sendMessage(projectsPrefix + "§cNo tienes permiso para hacer eso.");
}
}
if (args[0].equals("claim") || args[0].equals("reclamar")) {
if (!(p.hasPermission("bteconosur.projects.claim"))) {
p.sendMessage(projectsPrefix + "§cNo tienes permiso para hacer eso.");
return true;
}
try {
Project project = new Project(p.getLocation());
if (project.getOwner() != null) {
if (project.getOwner() == p) {
p.sendMessage(projectsPrefix + "Ya eres dueñ@ de este proyecto.");
} else if (project.getMembers().contains(p)) {
p.sendMessage("Alguien más ya es dueñ@ de este proyecto. Usa §a/p request §fpara solicitar unirte.");
}
} else if (projectsManager.getOwnedProjects().get(project.getCountry()).size() >= maxProjectsPerPlayer) {
p.sendMessage(projectsPrefix + "No puedes ser líder de más de 10 proyectos al mismo tiempo.");
} else {
GroupsManager manager = s.getGroupsManager();
if ((manager.getPrimaryGroup() == GroupsManager.PrimaryGroup.POSTULANTE || manager.getPrimaryGroup() == GroupsManager.PrimaryGroup.DEFAULT) && project.getDifficulty() != Project.Difficulty.FACIL) {
p.sendMessage(projectsPrefix + "En tu rango solo puedes reclamar proyectos fáciles.");
return true;
}
project.setOwner(p);
project.save();
p.sendMessage(projectsPrefix + "Ahora eres dueñ@ de este proyecto.");
project.getCountry().getLogs().sendMessage(":inbox_tray: **" + s.getName() + "** ha reclamado el proyecto `" + project.getId() + "`.").queue();
}
} catch (Exception e) {
p.sendMessage(projectsPrefix + "No estás dentro de ningún proyecto.");
return true;
}
return true;
}
if (args[0].equals("delete") || args[0].equals("eliminar")) {
if (p.hasPermission("bteconosur.projects.manage.delete")) {
if (!(deleteConfirmation.contains(p))) {
deleteConfirmation.add(p);
p.sendMessage(projectsPrefix + "§cNo puedes deshacer esta acción. §fUsa el comando de nuevo para confirmar.");
return true;
}
deleteConfirmation.remove(p);
if (args.length >= 2) {
try {
Project project = new Project(args[1]);
project.delete();
p.sendMessage(projectsPrefix + "Has eliminado el proyecto §a" + project.getId() + "§f.");
for (OfflinePlayer member : project.getAllMembers()) {
new ServerPlayer(member).sendNotification(projectsPrefix + "Tu proyecto **§a" + project.getName(true) + "§f** ha sido eliminado.");
}
project.getCountry().getLogs().sendMessage(":wastebasket: **" + s.getName() + "** ha eliminado el proyecto `" + project.getId() + "`.").queue();
} catch (Exception e) {
p.sendMessage(projectsPrefix + "Este proyecto no existe.");
return true;
}
} else {
try {
Project project = new Project(p.getLocation());
project.delete();
p.sendMessage(projectsPrefix + "Has eliminado el proyecto §a" + project.getId() + "§f.");
project.getCountry().getLogs().sendMessage(":wastebasket: **" + s.getName() + "** ha eliminado el proyecto `" + project.getId() + "`.").queue();
} catch (Exception e) {
p.sendMessage(projectsPrefix + "No estás dentro de ningun proyecto.");
}
}
} else {
p.sendMessage(projectsPrefix + "§cNo puedes hacer esto.");
}
return true;
}
if (args[0].equals("add") || args[0].equals("agregar")) {
if (!(p.hasPermission("bteconosur.projects.add"))) {
p.sendMessage(projectsPrefix + "§cNo tienes permiso para hacer eso.");
return true;
}
Project project;
try {
project = new Project(p.getLocation());
if (project.getOwner() == p) {
if (project.isPending()) {
p.sendMessage("No puedes hacer esto mientras el proyecto está pendiente de revisión.");
return true;
}
if (project.getAllMembers().size() < maxProjectMembers) {
if (args.length >= 2) {
if (Bukkit.getOfflinePlayer(args[1]).isOnline()) {
Player target = Bukkit.getPlayer(args[1]);
project.addMember(target);
project.save();
ServerPlayer sTarget = new ServerPlayer(target);
p.sendMessage(projectsPrefix + "Has agregado a §a" + sTarget.getName() + "§f al proyecto §a" + project.getName() + "§f.");
target.sendMessage(projectsPrefix + "Has sido añadido al proyecto §a" + project.getName() + "§f.");
project.getCountry().getLogs().sendMessage(":pencil: **" + s.getName() + "** ha agregado a **" + sTarget.getName() + "** al proyecto `" + project.getId() + "`.").queue();
} else {
p.sendMessage(projectsPrefix + "El jugador introducido no existe o no se encuentra online.");
}
} else {
p.sendMessage(projectsPrefix + "Introduce un jugador.");
}
} else {
p.sendMessage(projectsPrefix + "El proyecto ya alcanzó la capacidad máxima de miembros.");
}
} else {
p.sendMessage(projectsPrefix + "No eres el líder de este proyecto.");
}
} catch (Exception e) {
p.sendMessage(projectsPrefix + "No estás dentro de ningún proyecto.");
}
return true;
}
if (args[0].equals("remove") || args[0].equals("remover") || args[0].equals("quitar")) {
if (!(p.hasPermission("bteconosur.projects.remove"))) {
p.sendMessage(projectsPrefix + "§cNo tienes permiso para hacer eso.");
return true;
}
Project project;
try {
project = new Project(p.getLocation());
if (project.getOwner() == p) {
if (project.isPending()) {
p.sendMessage("No puedes hacer esto mientras el proyecto está pendiente de revisión.");
return true;
}
if (!project.getMembers().isEmpty()) {
if (args.length >= 2) {
OfflinePlayer target = Bukkit.getOfflinePlayer(args[1]);
ServerPlayer sTarget = new ServerPlayer(target);
if (project.getMembers().contains(target)) {
project.removeMember(target);
project.save();
p.sendMessage(projectsPrefix + "Has removido a §a" + sTarget.getName() + "§f del proyecto §a" + project.getName() + "§f.");
sTarget.sendNotification(projectsPrefix + "Has sido removido del proyecto **§a" + project.getName(true) + "§f**.");
project.getCountry().getLogs().sendMessage(":pencil: **" + s.getName() + "** ha removido a **" + sTarget.getName() + "** del proyecto `" + project.getId() + "`.").queue();
} else {
p.sendMessage(projectsPrefix + "El jugador introducido no es parte del proyecto.");
}
} else {
p.sendMessage(projectsPrefix + "Introduce un jugador.");
}
} else {
p.sendMessage(projectsPrefix + "El proyecto no tiene miembros.");
}
} else {
p.sendMessage(projectsPrefix + "No eres el líder de este proyecto.");
}
} catch (Exception e) {
p.sendMessage(projectsPrefix + "No estás dentro de ningún proyecto.");
}
return true;
}
if (args[0].equals("transfer") || args[0].equals("transferir")) {
if (!(p.hasPermission("bteconosur.projects.transfer"))) {
p.sendMessage(projectsPrefix + "§cNo tienes permiso para hacer eso.");
return true;
}
try {
Project project = new Project(p.getLocation());
if (project.getOwner() == p) {
if (project.isPending()) {
p.sendMessage("No puedes hacer esto mientras el proyecto está pendiente de revisión.");
return true;
}
if (args.length >= 2) {
if (project.getMembers().contains(Bukkit.getOfflinePlayer(args[1]))) {
if (Bukkit.getOfflinePlayer(args[1]).isOnline()) {
if (transferConfirmation.contains(p)) {
transferConfirmation.remove(p);
Player target = Bukkit.getPlayer(args[1]);
if (new ServerPlayer(target).getProjectsManager().getOwnedProjects().get(project.getCountry()).size() > maxProjectsPerPlayer) {
p.sendMessage(projectsPrefix + "El jugador introducido ya alcanzó su límite de proyectos en este país.");
return true;
}
project.transfer(target);
project.save();
p.sendMessage(projectsPrefix + "Has transferido el proyecto §a" + project.getName() + " §fa §a" + target.getName() + "§f.");
target.sendMessage(projectsPrefix + "§a" + p.getName() + " §fte ha transferido el proyecto §a" + project.getName() + "§f.");
} else {
transferConfirmation.add(p);
p.sendMessage(projectsPrefix + "§cNo puedes deshacer esta acción. §fUsa el comando de nuevo para confirmar.");
}
} else {
p.sendMessage(projectsPrefix + "El jugador no se encuentra online.");
}
} else {
p.sendMessage(projectsPrefix + "El jugador no es un miembro de tu proyecto.");
}
} else {
p.sendMessage(projectsPrefix + "Introduce un jugador.");
}
} else {
p.sendMessage(projectsPrefix + "No eres el líder de este proyecto.");
}
} catch (Exception e) {
p.sendMessage(projectsPrefix + "No estás dentro de ningún proyecto.");
}
}
if (args[0].equals("leave") || args[0].equals("abandonar")) {
if (!(p.hasPermission("bteconosur.projects.leave"))) {
p.sendMessage(projectsPrefix + "§cNo tienes permiso para hacer eso.");
return true;
}
try {
Project project = new Project(p.getLocation());
TextChannel logs = project.getCountry().getLogs();
if (project.isPending()) {
p.sendMessage("No puedes hacer esto mientras el proyecto está pendiente de revisión.");
return true;
}
if (project.getOwner() == p) {
if (leaveConfirmation.contains(p)) {
leaveConfirmation.remove(p);
p.sendMessage(projectsPrefix + "Has abandonado el proyecto §a" + project.getName(true) + "§f.");
logs.sendMessage(":outbox_tray: **" + s.getName() + "** ha abandonado el proyecto `" + project.getId() + "`.").queue();
for (OfflinePlayer member : project.getMembers()) {
ServerPlayer sMember = new ServerPlayer(member);
sMember.sendNotification("El líder de tu proyecto **§a" + project.getName(true) + "§f** ha abandonado el proyecto, por lo que tú también has salido.");
logs.sendMessage(":outbox_tray: **" + sMember.getName() + "** ha abandonado el proyecto `" + project.getId() + "`.").queue();
}
logs.sendMessage(":flag_white: El proyecto `" + project.getId() + "` está disponible de nuevo.").queue();
project.empty();
project.setName(null);
project.save();
} else {
leaveConfirmation.add(p);
p.sendMessage(projectsPrefix + "§cEl proyecto quedará vacío si el líder abandonda el proyecto. Esta acción no se puede deshacer. §fUsa el comando de nuevo para confirmar.");
}
} else if (project.getMembers().contains(p)) {
project.removeMember(p);
project.save();
p.sendMessage(projectsPrefix + "Has abandonado el proyecto §a" + project.getName() + "§f.");
new ServerPlayer(project.getOwner()).sendNotification(projectsPrefix + "**§a" + new ServerPlayer(p).getName() + "§f** ha abandonado tu proyecto **§a" + project.getName(true) + "§f**.");
logs.sendMessage(":outbox_tray: **" + s.getName() + "** ha abandonado el proyecto `" + project.getId() + "`.").queue();
} else {
p.sendMessage(projectsPrefix + "No eres miembro de este proyecto.");
}
} catch (Exception e) {
p.sendMessage(projectsPrefix + "No estás dentro de ningún proyecto.");
e.printStackTrace();
}
}
if (args[0].equals("borders") || args[0].equals("bordes")) {
if (!(p.hasPermission("bteconosur.projects.showborder"))) {
p.sendMessage(projectsPrefix + "§cNo tienes permiso para hacer eso.");
return true;
}
try {
Project project = new Project(p.getLocation());
int maxY = p.getLocation().getBlockY() + 10;
int minY = p.getLocation().getBlockY() - 10;
Polygonal2DRegionSelector selector = new Polygonal2DRegionSelector((World) new BukkitWorld(mainWorld), project.getPoints(), minY, maxY);
Methods.setSelection(p, selector);
p.sendMessage(BookUtil.TextBuilder.of(projectsPrefix + "Mostrando los bordes del proyecto §a" + project.getName() + "§f. §eRequiere ").build(), BookUtil.TextBuilder.of("§e§nWorldEdit CUI").onClick(BookUtil.ClickAction.openUrl("https://www.curseforge.com/minecraft/mc-mods/worldeditcui-forge-edition-2/download/2629418")).build(), BookUtil.TextBuilder.of(".").color(ChatColor.YELLOW).build());
} catch (Exception e) {
e.printStackTrace();
p.sendMessage(projectsPrefix + "No estás dentro de ningún proyecto.");
}
}
if (args[0].equals("review") || args[0].equals("revisar")) {
if (!(p.hasPermission("bteconosur.projects.manage.review"))) {
p.sendMessage(projectsPrefix + "§cNo tienes permiso para hacer eso.");
return true;
}
try {
Project project = new Project(p.getLocation());
OldCountry country = project.getCountry();
if (s.getPermissionCountries().contains(project.getCountry())) {
if (project.isPending()) {
if (args.length > 1) {
if (args[1].equals("accept") || args[1].equals("aceptar")) {
// ADD POINTS
int amount = project.getDifficulty().getPoints();
country.getLogs().sendMessage(":mag: **" + s.getName() + "** ha aprobado el proyecto `" + project.getId() + "`.").queue();
p.sendMessage(projectsPrefix + "Has aceptado el proyecto §a" + project.getId() + "§f.");
ServerPlayer owner = new ServerPlayer(project.getOwner());
ProjectsManager ownerProjectsManager = owner.getProjectsManager();
PointsManager ownerPointsManager = owner.getPointsManager();
owner.getPointsManager().addPoints(country, amount);
ownerProjectsManager.addFinishedProject(country);
owner.sendNotification(projectsPrefix + "Tu proyecto **§a" + project.getName(true) + "§f** ha sido aceptado.");
owner.sendNotification(pointsPrefix + "Has conseguido **§a" + amount + "§f** puntos. §7Total: " + ownerPointsManager.getPoints(country));
for (OfflinePlayer member : project.getMembers()) {
ServerPlayer m = new ServerPlayer(member);
PointsManager mPointsManager = m.getPointsManager();
mPointsManager.addPoints(country, amount);
projectsManager.addFinishedProject(country);
m.sendNotification(projectsPrefix + "Tu proyecto **§a" + project.getName(true) + "§f** ha sido aceptado.");
m.sendNotification(pointsPrefix + "Has conseguido **§a" + amount + "§f** puntos. §7Total: " + mPointsManager.getPoints(country));
}
project.delete();
}
if (args[1].equals("continue") || args[1].equals("continuar")) {
project.setPending(false);
project.save();
p.sendMessage(projectsPrefix + "Has continuado el proyecto §a" + project.getId() + "§f.");
for (OfflinePlayer member : project.getAllMembers()) {
new ServerPlayer(member).sendNotification(projectsPrefix + "Tu proyecto **§a" + project.getName() + "§f** ha sido continuado.");
}
country.getLogs().sendMessage(":mag: **" + s.getName() + "** ha continuado el proyecto `" + project.getId() + "`.").queue();
}
if (args[1].equals("deny") || args[1].equals("denegar") || args[1].equals("rechazar")) {
project.setPending(false);
project.empty();
project.setName(null);
project.save();
p.sendMessage(projectsPrefix + "Has rechazado el proyecto §a" + project.getId() + "§f.");
for (OfflinePlayer member : project.getAllMembers()) {
new ServerPlayer(member).sendNotification(projectsPrefix + "Tu proyecto **§a" + project.getName(true) + "§f** ha sido rechazado.");
}
country.getLogs().sendMessage(":mag: **" + s.getName() + "** ha rechazado el proyecto `" + project.getId() + "`.").queue();
}
} else {
p.sendMessage(projectsPrefix + "Introduce una acción.");
}
} else {
p.sendMessage(projectsPrefix + "Este proyecto no esta pendiente de revisión.");
}
} else {
p.sendMessage(projectsPrefix + "No puedes hacer esto.");
}
} catch (Exception e) {
e.printStackTrace();
p.sendMessage(projectsPrefix + "No estás dentro de ningún proyecto.");
}
}
if (args[0].equals("name") || args[0].equals("nombre")) {
if (!(p.hasPermission("bteconosur.projects.name"))) {
p.sendMessage(projectsPrefix + "§cNo tienes permiso para hacer eso.");
return true;
}
try {
Project project = new Project(p.getLocation());
if (project.getOwner() == p) {
if (!(project.isPending())) {
if (args.length > 1 && args[1].matches("[a-zA-Z0-9_-]{1,32}")) {
project.setName(args[1]);
project.save();
p.sendMessage(projectsPrefix + "Has cambiado el nombre del proyecto a §a" + project.getName() + "§f.");
} else {
p.sendMessage(projectsPrefix + "Introduce un nombre válido.");
}
} else {
p.sendMessage(projectsPrefix + "No puedes administrar tu proyecto mientras está pendiente.");
}
} else {
p.sendMessage(projectsPrefix + "No eres el líder de este proyecto.");
}
} catch (Exception e) {
p.sendMessage(projectsPrefix + "No estás dentro de nigún proyecto.");
}
}
if (args[0].equals("pending") || args[0].equals("pendientes")) {
if (!(p.hasPermission("bteconosur.projects.manage.pending"))) {
p.sendMessage(projectsPrefix + "§cNo tienes permiso para hacer eso.");
return true;
}
Configuration pendingConfig = new Configuration(Bukkit.getPluginManager().getPlugin("bteConoSur"), "pending_projects/pending");
List<String> pending = pendingConfig.getStringList(new OldCountry(p.getLocation()).getName());
if (!pending.isEmpty()) {
BookUtil.BookBuilder book = BookUtil.writtenBook();
List<BaseComponent[]> pages = new ArrayList<>();
List<List<String>> subLists = Lists.partition(pending, 12);
for (List<String> subList : subLists) {
BookUtil.PageBuilder page = new BookUtil.PageBuilder();
page.add("§7---[ §rPENDIENTES §7]---");
page.newLine();
for (String str : subList) {
try {
Project project = new Project(str);
String coord = project.getAverageCoordinate().getBlockX() + " " + new Coords2D(project.getAverageCoordinate()).getHighestY() + " " + project.getAverageCoordinate().getBlockZ();
page.add("- ");
page.add(BookUtil.TextBuilder.of(str).onHover(BookUtil.HoverAction.showText("Click para ir")).onClick(BookUtil.ClickAction.runCommand("/tp " + coord)).build());
page.newLine();
} catch (Exception exception) {
exception.printStackTrace();
}
}
pages.add(page.build());
}
book.pages(pages);
BookUtil.openPlayer(p, book.build());
} else {
p.sendMessage(projectsPrefix + "No hay proyectos pendientes de revisión en este país.");
}
}
if (args[0].equals("finish") || args[0].equals("terminar") || args[0].equals("finalizar")) {
if (!(p.hasPermission("bteconosur.projects.finish"))) {
p.sendMessage(projectsPrefix + "§cNo tienes permiso para hacer eso.");
return true;
}
try {
Project project = new Project(p.getLocation());
if (project.getOwner() == p) {
if (!(project.isPending())) {
if (finishConfirmation.contains(p)) {
finishConfirmation.remove(p);
project.setPending(true);
project.save();
p.sendMessage(projectsPrefix + "Has marcado el proyecto §a" + project.getName() + "§f como terminado.");
for (OfflinePlayer member : project.getMembers()) {
new ServerPlayer(member).sendNotification(projectsPrefix + "**§a" + new ServerPlayer(project.getOwner()).getName() + "§f** ha marcado el proyecto **§a" + project.getName(true) + "§f** como terminado.");
}
project.getCountry().getLogs().sendMessage(":lock: **" + s.getName() + "** ha marcado el proyecto `" + project.getId() + "` como terminado.").queue();
} else {
finishConfirmation.add(p);
p.sendMessage(projectsPrefix + "§cNo podrás construir ni administrar tu proyecto mientras está en revisión. §fUsa el comando de nuevo para confirmar.");
}
} else {
p.sendMessage("Este proyecto ya está marcado como terminado.");
}
} else {
p.sendMessage(projectsPrefix + " No eres el líder de este proyecto.");
}
} catch (Exception e) {
p.sendMessage(projectsPrefix + "No estás dentro de ningún proyecto.");
}
}
if (args[0].equals("info") || args[0].equals("informacion")) {
if (!(p.hasPermission("bteconosur.projects.info"))) {
p.sendMessage(projectsPrefix + "§cNo tienes permiso para hacer eso.");
return true;
}
try {
Project project = new Project(p.getLocation());
// --------------------------------
BookUtil.BookBuilder builder = BookUtil.writtenBook();
BookUtil.PageBuilder page = new BookUtil.PageBuilder();
page.add("----[ PROYECTO ]----");
page.newLine();
if (!Objects.equals(project.getName(), project.getId())) {
page.add(BookUtil.TextBuilder.of("Nombre: ").color(ChatColor.GREEN).style(ChatColor.BOLD).build());
page.add(project.getName());
page.newLine();
}
page.add(BookUtil.TextBuilder.of("ID: ").color(ChatColor.GREEN).style(ChatColor.BOLD).build());
page.add(project.getId());
page.newLine();
page.add(BookUtil.TextBuilder.of("Dificultad: ").color(ChatColor.GREEN).style(ChatColor.BOLD).build());
page.add(project.getDifficulty().toString().toLowerCase().replace("facil", "Fácil").replace("intermedio", "Intermedio").replace("dificil", "Difícil"));
page.newLine();
page.add(BookUtil.TextBuilder.of("País: ").color(ChatColor.GREEN).style(ChatColor.BOLD).build());
page.add(StringUtils.capitalize(project.getCountry().getName().replace("peru", "perú")));
page.newLine();
if (project.getTag() != null) {
page.add(BookUtil.TextBuilder.of("Tipo: ").color(ChatColor.GREEN).style(ChatColor.BOLD).build());
page.add(StringUtils.capitalize(project.getTag().toString().toLowerCase().replace("_", " ")));
page.newLine();
}
// GMAPS
Coords2D gMaps = new Coords2D(project.getAverageCoordinate());
page.add(BookUtil.TextBuilder.of("GoogleMaps: ").color(ChatColor.GREEN).style(ChatColor.BOLD).build());
page.add(BookUtil.TextBuilder.of("ENLACE").color(ChatColor.BLACK).style(ChatColor.UNDERLINE).onHover(BookUtil.HoverAction.showText("Haz click para abrir el enlace.")).onClick(BookUtil.ClickAction.openUrl("https://www.google.com/maps/@" + gMaps.getLat() + "," + gMaps.getLon() + ",19z")).build());
page.newLine();
if (project.getOwner() != null) {
page.add(BookUtil.TextBuilder.of("Líder: ").color(ChatColor.GREEN).style(ChatColor.BOLD).build());
page.add(BookUtil.TextBuilder.of(new ServerPlayer(project.getOwner()).getName()).onHover(BookUtil.HoverAction.showText(new ServerPlayer(project.getOwner()).getLore())).build());
page.newLine();
}
int i = 1;
if (!project.getMembers().isEmpty()) {
page.add("§a§lMiembro(s): §r");
for (OfflinePlayer member : project.getMembers()) {
page.add(BookUtil.TextBuilder.of(new ServerPlayer(member).getName()).onHover(BookUtil.HoverAction.showText(new ServerPlayer(member).getLore())).build());
if (i < project.getMembers().size()) {
page.add(", ");
}
i++;
}
}
builder.pages(page.build());
BookUtil.openPlayer(p, builder.build());
} catch (Exception e) {
p.sendMessage(projectsPrefix + "No estás dentro de ningún proyecto.");
}
}
if (args[0].equals("list") || args[0].equals("lista")) {
if (!(p.hasPermission("bteconosur.projects.list"))) {
p.sendMessage(projectsPrefix + "§cNo tienes permiso para hacer eso.");
return true;
}
if (projectsManager.getAllProjects().size() != 0) {
BookUtil.BookBuilder book = BookUtil.writtenBook();
List<BaseComponent[]> pages = new ArrayList<>();
for (String id : projectsManager.getAllProjects()) {
Project project = new Project(id);
BookUtil.PageBuilder page = new BookUtil.PageBuilder();
if (!Objects.equals(project.getName(), project.getId())) {
page.add("§a§lNombre: §r" + project.getName());
page.newLine();
}
page.add("§a§lID: §r" + project.getId());
page.newLine();
page.add("§a§lDificultad: §r" + project.getDifficulty().toString().toUpperCase());
page.newLine();
page.add("§a§lPaís: §r" + StringUtils.capitalize(project.getCountry().getName().replace("peru", "perú")));
page.newLine();
page.add("§a§lCoordenadas: §r\n");
page.add(BookUtil.TextBuilder.of(project.getAverageCoordinate().getBlockX() + " " + new Coords2D(project.getAverageCoordinate()).getHighestY() + " " + project.getAverageCoordinate().getBlockZ()).onHover(BookUtil.HoverAction.showText("Click para ir")).onClick(BookUtil.ClickAction.runCommand("/tp " + project.getAverageCoordinate().getBlockX() + " " + new Coords2D(project.getAverageCoordinate()).getHighestY() + " " + project.getAverageCoordinate().getBlockZ())).build());
page.newLine();
page.add("§a§lLíder: §r");
ServerPlayer sOwner = new ServerPlayer(project.getOwner());
page.add(BookUtil.TextBuilder.of(sOwner.getName()).onHover(BookUtil.HoverAction.showText(sOwner.getLore())).build());
page.newLine();
int i = 1;
List<OfflinePlayer> members = project.getMembers();
if (!members.isEmpty()) {
page.add("§a§lMiembro(s): §r");
for (OfflinePlayer member : members) {
ServerPlayer sMember = new ServerPlayer(member);
page.add(BookUtil.TextBuilder.of(sMember.getName()).onHover(BookUtil.HoverAction.showText(sMember.getLore())).build());
if (i < members.size()) {
page.add(", ");
}
i++;
}
}
pages.add(page.build());
}
book.pages(pages);
BookUtil.openPlayer(p, book.build());
} else {
p.sendMessage(projectsPrefix + "No tienes proyectos activos.");
}
}
if (args[0].equals("manage") || args[0].equals("manejar")) {
if (!(p.hasPermission("bteconosur.projects.members"))) {
p.sendMessage(projectsPrefix + "§cNo tienes permiso para hacer eso.");
return true;
}
try {
Project project = new Project(p.getLocation());
if (project.getOwner() == p) {
Inventory gui = Bukkit.createInventory(null, 53, "Proyecto " + project.getName(true));
List<Integer> membersSlots = Arrays.asList(28, 29, 30, 31, 32, 33, 34, 37, 38, 39, 40, 41, 42, 43);
for (int i = 0; i < 53; i++) {
if (!membersSlots.contains(i)) {
gui.setItem(i, background);
}
}
p.openInventory(gui);
} else {
p.sendMessage(projectsPrefix + "No eres el líder de este proyecto.");
}
} catch (Exception e) {
p.sendMessage(projectsPrefix + "No estás dentro de ningún proyecto.");
}
}
if (args[0].equals("request") || args[0].equals("solicitar")) {
if (!(p.hasPermission("bteconosur.projects.request"))) {
p.sendMessage(projectsPrefix + "§cNo tienes permiso para hacer eso.");
return true;
}
try {
Project project = new Project(p.getLocation());
if (project.getOwner() != null) {
if (!(project.getAllMembers().contains(p))) {
new ServerPlayer(project.getOwner()).sendNotification(projectsPrefix + "**§a" + s.getName() + "§f** ha solicitado unirse a tu proyecto **§a" + project.getName(true) + "§f**.");
} else {
p.sendMessage(projectsPrefix + "Ya eres parte de este proyecto.");
}
} else {
p.sendMessage(projectsPrefix + "Este proyecto no está reclamado aún.");
}
} catch (Exception e) {
p.sendMessage(projectsPrefix + "No estás dentro de ningun proyecto.");
}
}
if (args[0].equals("tutorial")) {
if (!(p.hasPermission("bteconosur.projects.tutorial"))) {
p.sendMessage(projectsPrefix + "§cNo tienes permiso para hacer eso.");
return true;
}
}
if (args[0].equals("redefine") || args[0].equals("redefinir")) {
if (!(p.hasPermission("bteconosur.projects.redefine"))) {
p.sendMessage(projectsPrefix + "§cNo tienes permiso para hacer eso.");
return true;
}
try {
Project project = new Project(p.getLocation());
// GET POINTS
List<BlockVector2D> points;
try {
points = polyRegion(getSelection(p)).getPoints();
} catch (IncompleteRegionException e) {
p.sendMessage(projectsPrefix + "Selecciona un área primero.");
return true;
} catch (IllegalArgumentException e) {
p.sendMessage(projectsPrefix + "Debes seleccionar una region cúbica o poligonal.");
return true;
}
if (points.size() > maxProjectPoints) {
p.sendMessage(projectsPrefix + "La selección no puede tener más de " + maxProjectPoints + " puntos.");
return true;
}
if (p.hasPermission("bteconosur.projects.manage.redefine")) {
if (!s.getPermissionCountries().contains(project.getCountry())) {
p.sendMessage(projectsPrefix + "No puedes hacer esto aquí.");
return true;
}
if (project.isPending()) {
p.sendMessage("No puedes hacer esto mientras el proyecto está pendiente de revisión.");
return true;
}
if (args.length < 2) {
p.sendMessage(projectsPrefix + "Introduce una dificultad, puede ser §afacil§f, §aintermedio§f o §adificil§f.");
return true;
}
if ((!(args[1].equals("facil"))) && (!(args[1].equals("intermedio"))) && (!(args[1].equals("dificil")))) {
p.sendMessage(projectsPrefix + "Introduce una dificultad válida, puede ser §afacil§f, §aintermedio§f o §adificil§f.");
return true;
}
project.setDifficulty(Project.Difficulty.valueOf(args[1]));
project.setPoints(points);
project.save();
// SEND MESSAGES
p.sendMessage(projectsPrefix + "Proyecto con la ID §a" + project.getId() + "§f redefinido con dificultad §a" + project.getDifficulty().toString().toUpperCase() + "§f.");
StringBuilder dscMessage = new StringBuilder(":clipboard: **" + p.getName() + "** ha redefinido el proyecto `" + project.getId() + "` con dificultad `" + args[1].toUpperCase() + "` en las coordenadas: \n");
for (BlockVector2D point : project.getPoints()) {
dscMessage.append("> ").append(Math.floor(point.getX())).append(" ").append(Math.floor(p.getWorld().getHighestBlockAt(point.getBlockX(), point.getBlockZ()).getY())).append(" ").append(Math.floor(point.getZ())).append("\n");
}
dscMessage = new StringBuilder(dscMessage.toString().replace(".0", ""));
StringBuilder notif = new StringBuilder("Tu proyecto **§a" + project.getName(true) + "§f** ha sido redefinido con dificultad **§a" + project.getDifficulty().toString().toUpperCase() + "§f** en las coordenadas: \n");
for (BlockVector2D point : project.getPoints()) {
notif.append("> ").append(Math.floor(point.getX())).append(" ").append(Math.floor(p.getWorld().getHighestBlockAt(point.getBlockX(), point.getBlockZ()).getY())).append(" ").append(Math.floor(point.getZ())).append("\n");
}
if (project.getOwner() != null) {
new ServerPlayer(project.getOwner()).sendNotification(notif.toString());
}
project.getCountry().getLogs().sendMessage(dscMessage.toString()).queue();
return true;
} else if (p.hasPermission("bteconosur.projects.redefine")) {
if (project.getOwner() != p) {
p.sendMessage(projectsPrefix + "No eres el líder de este proyecto.");
return true;
}
if (project.isPending()) {
p.sendMessage("No puedes hacer esto mientras el proyecto está pendiente de revisión.");
return true;
}
EmbedBuilder request = new EmbedBuilder();
request.setColor(new Color(0, 255, 42));
request.setTitle(new ServerPlayer(p).getName() + " quiere redefinir el proyecto " + project.getId().toUpperCase() + ".");
List<String> oldCoords = new ArrayList<>();
for (BlockVector2D point : project.getPoints()) {
oldCoords.add(("> " + point.getX() + " " + new Coords2D(point).getHighestY() + " " + point.getZ()).replace(".0", ""));
}
request.addField(":blue_circle: Coordenadas antiguas:", String.join("\n", oldCoords), false);
List<String> newCoords = new ArrayList<>();
for (BlockVector2D point : points) {
newCoords.add(("> " + point.getX() + " " + new Coords2D(point).getHighestY() + " " + point.getZ()).replace(".0", ""));
}
request.addField(":red_circle: Coordenadas nuevas:", String.join("\n", newCoords), false);
// GMAPS
BlockVector2D average = project.getAverageCoordinate();
Coords2D geoCoord = new Coords2D(average);
request.addField(":map: Google Maps:", "https://www.google.com/maps/@" + geoCoord.getLat() + "," + geoCoord.getLon() + ",19z", false);
// IMAGE
String url;
List<String> coordsOld = new ArrayList<>();
for (BlockVector2D point : project.getPoints()) {
coordsOld.add(new Coords2D(point).getLat() + "," + new Coords2D(point).getLon());
}
coordsOld.add(new Coords2D(project.getPoints().get(0)).getLat() + "," + new Coords2D(project.getPoints().get(0)).getLon());
List<String> coordsNew = new ArrayList<>();
for (BlockVector2D point : points) {
coordsNew.add(new Coords2D(point).getLat() + "," + new Coords2D(point).getLon());
}
coordsNew.add(new Coords2D(points.get(0)).getLat() + "," + new Coords2D(points.get(0)).getLon());
url = "https://open.mapquestapi.com/staticmap/v5/map?key=" + key + "&type=sat&shape=" + String.join("|", coordsOld) + "|fill:6382DC50&shape=" + String.join("|", coordsNew) + "|fill:ff000050|border:ff0000&size=1280,720&imagetype=png";
request.setImage(url);
ActionRow actionRow = ActionRow.of(Button.of(ButtonStyle.SECONDARY, "facil", "Fácil", Emoji.fromMarkdown("\uD83D\uDFE2")), Button.of(ButtonStyle.SECONDARY, "intermedio", "Intermedio", Emoji.fromMarkdown("\uD83D\uDFE1")), Button.of(ButtonStyle.SECONDARY, "dificil", "Difícil", Emoji.fromMarkdown("\uD83D\uDD34")), Button.of(ButtonStyle.DANGER, "rechazar", "Rechazar", Emoji.fromMarkdown("✖️")));
MessageBuilder message = new MessageBuilder();
message.setEmbeds(request.build());
message.setActionRows(actionRow);
project.getCountry().getRequests().sendMessage(message.build()).queue();
p.sendMessage(projectsPrefix + "Se ha enviado una solicitud para redefinir tu proyecto.");
} else {
p.sendMessage(projectsPrefix + "§cNo tienes permiso para hacer eso.");
}
} catch (Exception e) {
p.sendMessage(projectsPrefix + "No estás dentro de ningún proyecto.");
}
}
if (args[0].equals("tag") || args[0].equals("etiqueta")) {
if (p.hasPermission("bteconosur.projects.manage.tag")) {
try {
Project project = new Project(p.getLocation());
if (!(s.getPermissionCountries().contains(project.getCountry()))) {
p.sendMessage(projectsPrefix + "No puedes hacer esto aquí.");
}
if (args.length > 1) {
if (args[1].equals("edificios") || args[1].equals("departamentos") || args[1].equals("casas") || args[1].equals("parques") || args[1].equals("establecimientos") || args[1].equals("carreteras") || args[1].equals("centros_comerciales")) {
project.setTag(Project.Tag.valueOf(args[1]));
project.save();
project.getCountry().getLogs().sendMessage(":label: **" + s.getName() + "** ha establecido la etiqueta del proyecto `" + project.getId() + "` en **" + args[1].replace("_", " ").toUpperCase() + "**.").queue();
p.sendMessage(projectsPrefix + "Has establecido la etiquteda del proyecto §a" + project.getId() + "§f en §a" + args[1].replace("_", " ").toUpperCase() + "§f.");
} else if (args[1].equals("delete")) {
project.setTag(null);
project.save();
project.getCountry().getLogs().sendMessage(":label: **" + s.getName() + "** ha eliminado la etiqueta del proyecto `" + project.getId() + "`.").queue();
p.sendMessage(projectsPrefix + "Has eliminado la etiqueta del proyecto §a" + project.getId() + "§f.");
} else {
p.sendMessage(projectsPrefix + "Introduce una etiqueta válida.");
}
} else {
p.sendMessage(projectsPrefix + "Introduce una etiqueta.");
}
} catch (Exception e) {
e.printStackTrace();
p.sendMessage(projectsPrefix + "No estás dentro de ningún proyecto.");
}
} else {
p.sendMessage(projectsPrefix + "§cNo tienes permiso para hacer eso.");
}
}
if (args[0].equals("find") || args[0].equals("encontrar")) {
Inventory pRandomGui = Bukkit.createInventory(null, 27, "1. Elige una dificultad");
ItemStack glass = new ItemStack(Material.STAINED_GLASS_PANE, 1, (short) 15);
ItemMeta gMeta = glass.getItemMeta();
gMeta.setDisplayName(" ");
glass.setItemMeta(gMeta);
for (int i = 0; i < 27; i++) {
pRandomGui.setItem(i, background);
}
pRandomGui.setItem(11, getCustomHead("§aFácil §f- 15 puntos", "§fProyectos de un área pequeña, con construcciones simples y rápidas.", "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZmFlMTE5YTIzODJlZGE4NjRiMjQ0ZmE4YzUzYWMzZTU0NDE2MzEwM2VlNjY3OTVmMGNkNmM2NGY3YWJiOGNmMSJ9fX0="));
pRandomGui.setItem(13, getCustomHead("§eIntermedio §f- 50 puntos", "§fProyectos con una dificultad intermedia, que requieren un cierto nivel de planeación y dedicación.", "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjIxOTk5NDM3YjFkZTJjNDcyMGFhZDQzMmIyZWE1MzgyZTE1NDgyNzc1MjNmMjViMGY1NWMzOWEwMWMyYTljMCJ9fX0="));
pRandomGui.setItem(15, getCustomHead("§cDifícil §f- 100 puntos", "§fProyectos de gran tamaño y/o dificultad, que requieren gran detalle y planificación previa.", "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjQ1ZTg1ZWRkYTFhODFkMjI0YWRiNzEzYjEzYjcwMzhkNWNjNmJlY2Q5OGE3MTZiOGEzZGVjN2UzYTBmOTgxNyJ9fX0="));
p.openInventory(pRandomGui);
}
return true;
}
Aggregations