Dateien nach "src/main/java/pb/ajneb97" hochladen

This commit is contained in:
2025-09-28 09:09:41 +00:00
parent 0d40955f4b
commit 59222aed62
4 changed files with 1497 additions and 0 deletions

View File

@@ -0,0 +1,446 @@
package pb.ajneb97;
import java.util.ArrayList;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.entity.Player;
import net.md_5.bungee.api.ChatColor;
import pb.ajneb97.api.Hat;
import pb.ajneb97.api.Perk;
import pb.ajneb97.database.JugadorDatos;
import pb.ajneb97.database.MySQL;
import pb.ajneb97.juego.EstadoPartida;
import pb.ajneb97.juego.Partida;
import pb.ajneb97.juego.PartidaEditando;
import pb.ajneb97.managers.Checks;
import pb.ajneb97.managers.InventarioAdmin;
import pb.ajneb97.managers.InventarioShop;
import pb.ajneb97.managers.PartidaManager;
import pb.ajneb97.managers.TopHologram;
import pb.ajneb97.utils.UtilidadesOtros;
public class Comando implements CommandExecutor {
PaintballBattle plugin;
public Comando(PaintballBattle plugin) {
this.plugin = plugin;
}
public boolean onCommand(CommandSender sender, Command command, String label, String[] args){
FileConfiguration messages = plugin.getMessages();
String prefix = ChatColor.translateAlternateColorCodes('&', messages.getString("prefix"))+" ";
if (!(sender instanceof Player)){
if(args.length >= 1) {
if(args[0].equalsIgnoreCase("givecoins")) {
// /paintball givecoins <player> <amount>
giveCoins(sender,args,messages,prefix);
}else if(args[0].equalsIgnoreCase("reload")) {
// /paintball reload
plugin.reloadConfig();
plugin.reloadMessages();
plugin.reloadShop();
plugin.recargarCarteles();
plugin.recargarScoreboard();
plugin.recargarHologramas();
sender.sendMessage(prefix+ChatColor.translateAlternateColorCodes('&', messages.getString("configReloaded")));
}
}
return false;
}
Player jugador = (Player)sender;
if(args.length >= 1) {
if(args[0].equalsIgnoreCase("create")) {
// /paintball create <nombre>
if(jugador.isOp() || jugador.hasPermission("paintball.admin")) {
if(args.length >= 2) {
if(plugin.getPartida(args[1]) == null) {
FileConfiguration config = plugin.getConfig();
if(!config.contains("MainLobby")) {
jugador.sendMessage(prefix+ChatColor.translateAlternateColorCodes('&', messages.getString("noMainLobby")));
return true;
}
String equipo1 = "";
String equipo2 = "";
int i=0;
for(String key : config.getConfigurationSection("teams").getKeys(false)) {
if(i==0) {
equipo1 = key;
}else {
equipo2 = key;
break;
}
i++;
}
Partida partida = new Partida(args[1],Integer.valueOf(config.getString("arena_time_default")),equipo1,equipo2,Integer.valueOf(config.getString("team_starting_lives_default")));
plugin.agregarPartida(partida);
jugador.sendMessage(prefix+ChatColor.translateAlternateColorCodes('&', messages.getString("arenaCreated").replace("%name%", args[1])));
jugador.sendMessage(prefix+ChatColor.translateAlternateColorCodes('&', messages.getString("arenaCreatedExtraInfo").replace("%name%", args[1])));
}else {
jugador.sendMessage(prefix+ChatColor.translateAlternateColorCodes('&', messages.getString("arenaAlreadyExists")));
}
}else {
jugador.sendMessage(prefix+ChatColor.translateAlternateColorCodes('&', messages.getString("commandCreateErrorUse")));
}
}else {
jugador.sendMessage(prefix+ChatColor.translateAlternateColorCodes('&', messages.getString("noPermissions")));
}
}else if(args[0].equalsIgnoreCase("delete")) {
// /paintball delete <nombre>
if(jugador.isOp() || jugador.hasPermission("paintball.admin")) {
if(args.length >= 2) {
if(plugin.getPartida(args[1]) != null) {
plugin.removerPartida(args[1]);
jugador.sendMessage(prefix+ChatColor.translateAlternateColorCodes('&', messages.getString("arenaDeleted").replace("%name%", args[1])));
}else {
jugador.sendMessage(prefix+ChatColor.translateAlternateColorCodes('&', messages.getString("arenaDoesNotExists")));
}
}else {
jugador.sendMessage(prefix+ChatColor.translateAlternateColorCodes('&', messages.getString("commandDeleteErrorUse")));
}
}else {
jugador.sendMessage(prefix+ChatColor.translateAlternateColorCodes('&', messages.getString("noPermissions")));
}
}else if(args[0].equalsIgnoreCase("reload")) {
// /paintball reload
if(jugador.isOp() || jugador.hasPermission("paintball.admin")) {
plugin.reloadConfig();
plugin.reloadMessages();
plugin.reloadShop();
plugin.recargarCarteles();
plugin.recargarScoreboard();
plugin.recargarHologramas();
jugador.sendMessage(prefix+ChatColor.translateAlternateColorCodes('&', messages.getString("configReloaded")));
}else {
jugador.sendMessage(prefix+ChatColor.translateAlternateColorCodes('&', messages.getString("noPermissions")));
}
}else if(args[0].equalsIgnoreCase("setmainlobby")) {
// /paintball setmainlobby
if(jugador.isOp() || jugador.hasPermission("paintball.admin")) {
FileConfiguration config = plugin.getConfig();
Location l = jugador.getLocation();
config.set("MainLobby.x", l.getX()+"");
config.set("MainLobby.y", l.getY()+"");
config.set("MainLobby.z", l.getZ()+"");
config.set("MainLobby.world", l.getWorld().getName());
config.set("MainLobby.pitch", l.getPitch());
config.set("MainLobby.yaw", l.getYaw());
plugin.saveConfig();
jugador.sendMessage(prefix+ChatColor.translateAlternateColorCodes('&', messages.getString("mainLobbyDefined")));
}else {
jugador.sendMessage(prefix+ChatColor.translateAlternateColorCodes('&', messages.getString("noPermissions")));
}
}else if(args[0].equalsIgnoreCase("join")) {
// /paintball join <arena>
if(!Checks.checkTodo(plugin, jugador)) {
return false;
}
if(args.length >= 2) {
Partida partida = plugin.getPartida(args[1]);
if(partida != null) {
if(partida.estaActivada()) {
if(plugin.getPartidaJugador(jugador.getName()) == null) {
if(!partida.estaIniciada()) {
if(!partida.estaLlena()) {
if(!UtilidadesOtros.pasaConfigInventario(jugador, plugin.getConfig())) {
jugador.sendMessage(prefix+ChatColor.translateAlternateColorCodes('&', messages.getString("errorClearInventory")));
return true;
}
PartidaManager.jugadorEntra(partida, jugador,plugin);
}else {
jugador.sendMessage(prefix+ChatColor.translateAlternateColorCodes('&', messages.getString("arenaIsFull")));
}
}else {
jugador.sendMessage(prefix+ChatColor.translateAlternateColorCodes('&', messages.getString("arenaAlreadyStarted")));
}
}else {
jugador.sendMessage(prefix+ChatColor.translateAlternateColorCodes('&', messages.getString("alreadyInArena")));
}
}else {
jugador.sendMessage(prefix+ChatColor.translateAlternateColorCodes('&', messages.getString("arenaDisabledError")));
}
}else {
jugador.sendMessage(prefix+ChatColor.translateAlternateColorCodes('&', messages.getString("arenaDoesNotExists")));
}
}else {
jugador.sendMessage(prefix+ChatColor.translateAlternateColorCodes('&', messages.getString("commandJoinErrorUse")));
}
}else if(args[0].equalsIgnoreCase("joinrandom")) {
// /paintball joinrandom
if(plugin.getPartidaJugador(jugador.getName()) == null) {
Partida partidaNueva = PartidaManager.getPartidaDisponible(plugin);
if(partidaNueva == null) {
jugador.sendMessage(ChatColor.translateAlternateColorCodes('&', messages.getString("noArenasAvailable")));
}else {
PartidaManager.jugadorEntra(partidaNueva, jugador, plugin);
}
}else {
jugador.sendMessage(prefix+ChatColor.translateAlternateColorCodes('&', messages.getString("alreadyInArena")));
}
}else if(args[0].equalsIgnoreCase("leave")) {
// /paintball leave
Partida partida = plugin.getPartidaJugador(jugador.getName());
if(partida != null) {
PartidaManager.jugadorSale(partida, jugador, false, plugin, false);;
}else {
jugador.sendMessage(prefix+ChatColor.translateAlternateColorCodes('&', messages.getString("notInAGame")));
}
}else if(args[0].equalsIgnoreCase("shop")) {
// /paintball shop
if(!Checks.checkTodo(plugin, jugador)) {
return false;
}
InventarioShop.crearInventarioPrincipal(jugador, plugin);
}else if(args[0].equalsIgnoreCase("enable")) {
// /paintball enable <arena>
//Para activar una arena todo debe estar definido
if(jugador.isOp() || jugador.hasPermission("paintball.admin")) {
if(args.length >= 2) {
Partida partida = plugin.getPartida(args[1]);
if(partida != null) {
if(partida.estaActivada()) {
jugador.sendMessage(prefix+ChatColor.translateAlternateColorCodes('&', messages.getString("arenaAlreadyEnabled")));
}else {
if(partida.getLobby() == null) {
jugador.sendMessage(prefix+ChatColor.translateAlternateColorCodes('&', messages.getString("enableArenaLobbyError")));
return true;
}
if(partida.getTeam1().getSpawn() == null) {
jugador.sendMessage(prefix+ChatColor.translateAlternateColorCodes('&', messages.getString("enableArenaSpawnError").replace("%number%", "1")));
return true;
}
if(partida.getTeam2().getSpawn() == null) {
jugador.sendMessage(prefix+ChatColor.translateAlternateColorCodes('&', messages.getString("enableArenaSpawnError").replace("%number%", "2")));
return true;
}
partida.setEstado(EstadoPartida.ESPERANDO);
jugador.sendMessage(prefix+ChatColor.translateAlternateColorCodes('&', messages.getString("arenaEnabled").replace("%name%", args[1])));
}
}else {
jugador.sendMessage(prefix+ChatColor.translateAlternateColorCodes('&', messages.getString("arenaDoesNotExists")));
}
}else {
jugador.sendMessage(prefix+ChatColor.translateAlternateColorCodes('&', messages.getString("commandEnableErrorUse")));
}
}else {
jugador.sendMessage(prefix+ChatColor.translateAlternateColorCodes('&', messages.getString("noPermissions")));
}
}else if(args[0].equalsIgnoreCase("disable")) {
// /paintball disable <arena>
if(jugador.isOp() || jugador.hasPermission("paintball.admin")) {
if(args.length >= 2) {
Partida partida = plugin.getPartida(args[1]);
if(partida != null) {
if(!partida.estaActivada()) {
jugador.sendMessage(prefix+ChatColor.translateAlternateColorCodes('&', messages.getString("arenaAlreadyDisabled")));
}else {
partida.setEstado(EstadoPartida.DESACTIVADA);
jugador.sendMessage(prefix+ChatColor.translateAlternateColorCodes('&', messages.getString("arenaDisabled").replace("%name%", args[1])));
}
}else {
jugador.sendMessage(prefix+ChatColor.translateAlternateColorCodes('&', messages.getString("arenaDoesNotExists")));
}
}else {
jugador.sendMessage(prefix+ChatColor.translateAlternateColorCodes('&', messages.getString("commandDisableErrorUse")));
}
}else {
jugador.sendMessage(prefix+ChatColor.translateAlternateColorCodes('&', messages.getString("noPermissions")));
}
}else if(args[0].equalsIgnoreCase("edit")) {
// /paintball edit <arena>
if(jugador.isOp() || jugador.hasPermission("paintball.admin")) {
if(!Checks.checkTodo(plugin, jugador)) {
return false;
}
if(args.length >= 2) {
Partida partida = plugin.getPartida(args[1]);
if(partida != null) {
if(!partida.estaActivada()) {
PartidaEditando p = plugin.getPartidaEditando();
if(p == null) {
InventarioAdmin.crearInventario(jugador,partida,plugin);
}else {
jugador.sendMessage(prefix+ChatColor.translateAlternateColorCodes('&', messages.getString("arenaModifyingError")));
}
}else {
jugador.sendMessage(prefix+ChatColor.translateAlternateColorCodes('&', messages.getString("arenaMustBeDisabled")));
}
}else {
jugador.sendMessage(prefix+ChatColor.translateAlternateColorCodes('&', messages.getString("arenaDoesNotExists")));
}
}else {
jugador.sendMessage(prefix+ChatColor.translateAlternateColorCodes('&', messages.getString("commandAdminErrorUse")));
}
}else {
jugador.sendMessage(prefix+ChatColor.translateAlternateColorCodes('&', messages.getString("noPermissions")));
}
}else if(args[0].equalsIgnoreCase("createtophologram")) {
// /paintball createtophologram <name> kills/wins <global/monthly/weekly>
if(jugador.isOp() || jugador.hasPermission("paintball.admin")) {
if (plugin.getServer().getPluginManager().getPlugin("DecentHolograms") == null) {
jugador.sendMessage(prefix+ChatColor.translateAlternateColorCodes('&', "&cYou need DecentHolograms plugin to use this feature."));
return true;
}
if(args.length >= 3) {
if(args[2].equalsIgnoreCase("kills") || args[2].equalsIgnoreCase("wins")) {
TopHologram topHologram = plugin.getTopHologram(args[1]);
if(topHologram == null) {
String period = "global";
if(args.length >= 4) {
period = args[3];
}
if(period.equalsIgnoreCase("global") || period.equalsIgnoreCase("monthly") || period.equalsIgnoreCase("weekly")) {
if(!MySQL.isEnabled(plugin.getConfig()) && (period.equalsIgnoreCase("monthly") || period.equalsIgnoreCase("weekly"))) {
jugador.sendMessage(prefix+ChatColor.translateAlternateColorCodes('&', messages.getString("topHologramPeriodSQLError")));
return true;
}
TopHologram hologram = new TopHologram(args[1],args[2],jugador.getLocation(),plugin,period);
plugin.agregarTopHolograma(hologram);
hologram.spawnHologram(plugin);
jugador.sendMessage(prefix+ChatColor.translateAlternateColorCodes('&', messages.getString("topHologramCreated")));
}else {
jugador.sendMessage(prefix+ChatColor.translateAlternateColorCodes('&', messages.getString("commandCreateHologramErrorUse")));
}
}else {
jugador.sendMessage(prefix+ChatColor.translateAlternateColorCodes('&', messages.getString("topHologramAlreadyExists")));
}
}else {
jugador.sendMessage(prefix+ChatColor.translateAlternateColorCodes('&', messages.getString("commandCreateHologramErrorUse")));
}
}else {
jugador.sendMessage(prefix+ChatColor.translateAlternateColorCodes('&', messages.getString("commandCreateHologramErrorUse")));
}
}else {
jugador.sendMessage(prefix+ChatColor.translateAlternateColorCodes('&', messages.getString("noPermissions")));
}
}else if(args[0].equalsIgnoreCase("removetophologram")) {
// /paintball removetophologram <name>
if(jugador.isOp() || jugador.hasPermission("paintball.admin")) {
if (plugin.getServer().getPluginManager().getPlugin("DecentHolograms") == null) {
jugador.sendMessage(prefix+ChatColor.translateAlternateColorCodes('&', "&cYou need DecentHolograms plugin to use this feature."));
return true;
}
if(args.length >= 2) {
TopHologram topHologram = plugin.getTopHologram(args[1]);
if(topHologram != null) {
plugin.eliminarTopHologama(args[1]);
jugador.sendMessage(prefix+ChatColor.translateAlternateColorCodes('&', messages.getString("topHologramRemoved")));
}else {
jugador.sendMessage(prefix+ChatColor.translateAlternateColorCodes('&', messages.getString("topHologramDoesNotExists")));
}
}else {
jugador.sendMessage(prefix+ChatColor.translateAlternateColorCodes('&', messages.getString("commandRemoveHologramErrorUse")));
}
}else {
jugador.sendMessage(prefix+ChatColor.translateAlternateColorCodes('&', messages.getString("noPermissions")));
}
}else if(args[0].equalsIgnoreCase("givecoins")) {
// /paintball givecoins <player> <amount>
if(jugador.isOp() || jugador.hasPermission("paintball.admin")) {
giveCoins(sender,args,messages,prefix);
}else {
jugador.sendMessage(prefix+ChatColor.translateAlternateColorCodes('&', messages.getString("noPermissions")));
}
}
else {
// /paintball help /o cualquier otro comando
if(jugador.isOp() || jugador.hasPermission("paintball.admin")) {
enviarAyuda(jugador);
}else {
jugador.sendMessage(prefix+ChatColor.translateAlternateColorCodes('&', messages.getString("noPermissions")));
}
}
}else {
if(jugador.isOp() || jugador.hasPermission("paintball.admin")) {
enviarAyuda(jugador);
}else {
jugador.sendMessage(prefix+ChatColor.translateAlternateColorCodes('&', messages.getString("noPermissions")));
}
}
return true;
}
public boolean giveCoins(CommandSender sender, String[] args, FileConfiguration messages, String prefix) {
if(args.length >= 3) {
String player = args[1];
try {
int amount = Integer.valueOf(args[2]);
//Si el jugador no esta en la base de datos, o en un archivo, DEBE estar conectado para darle coins.
if(MySQL.isEnabled(plugin.getConfig())) {
if(MySQL.jugadorExiste(plugin, player)) {
MySQL.agregarCoinsJugadorAsync(plugin, player, amount);
sender.sendMessage(prefix+ChatColor.translateAlternateColorCodes('&', messages.getString("giveCoinsMessage").replace("%player%", player).replace("%amount%", amount+"")));
Player p = Bukkit.getPlayer(player);
if(p != null) {
p.sendMessage(prefix+ChatColor.translateAlternateColorCodes('&', messages.getString("receiveCoinsMessage").replace("%amount%", amount+"")));
}
}else {
Player p = Bukkit.getPlayer(player);
if(p != null) {
MySQL.crearJugadorPartidaAsync(plugin, p.getUniqueId().toString(), p.getName(), "", 0, 0, 0, 0, amount, 1);
sender.sendMessage(prefix+ChatColor.translateAlternateColorCodes('&', messages.getString("giveCoinsMessage").replace("%player%", player).replace("%amount%", amount+"")));
p.sendMessage(prefix+ChatColor.translateAlternateColorCodes('&', messages.getString("receiveCoinsMessage").replace("%amount%", amount+"")));
}else {
sender.sendMessage(prefix+ChatColor.translateAlternateColorCodes('&', messages.getString("errorPlayerOnline")));
}
}
}else {
Player p = Bukkit.getPlayer(player);
if(p != null) {
plugin.registerPlayer(p.getUniqueId().toString()+".yml");
if(plugin.getJugador(p.getName()) == null) {
plugin.agregarJugadorDatos(new JugadorDatos(p.getName(),p.getUniqueId().toString(),0,0,0,0,0,new ArrayList<Perk>(),new ArrayList<Hat>()));
}
JugadorDatos jDatos = plugin.getJugador(p.getName());
jDatos.aumentarCoins(amount);
sender.sendMessage(prefix+ChatColor.translateAlternateColorCodes('&', messages.getString("giveCoinsMessage").replace("%player%", player).replace("%amount%", amount+"")));
p.sendMessage(prefix+ChatColor.translateAlternateColorCodes('&', messages.getString("receiveCoinsMessage").replace("%amount%", amount+"")));
}else {
sender.sendMessage(prefix+ChatColor.translateAlternateColorCodes('&', messages.getString("errorPlayerOnline")));
}
}
}catch(NumberFormatException e) {
sender.sendMessage(prefix+ChatColor.translateAlternateColorCodes('&', messages.getString("validNumberError")));
}
}else {
sender.sendMessage(prefix+ChatColor.translateAlternateColorCodes('&', messages.getString("commandGiveCoinsErrorUse")));
}
return true;
}
public void enviarAyuda(Player jugador) {
jugador.sendMessage(ChatColor.translateAlternateColorCodes('&',"&7[ [ &4[&fPaintball Battle&4] &7] ]"));
jugador.sendMessage(ChatColor.translateAlternateColorCodes('&',""));
jugador.sendMessage(ChatColor.translateAlternateColorCodes('&',"&6/paintball create <arena> &8Creates a new arena."));
jugador.sendMessage(ChatColor.translateAlternateColorCodes('&',"&6/paintball delete <arena> &8Deletes an arena."));
jugador.sendMessage(ChatColor.translateAlternateColorCodes('&',"&6/paintball join <arena> &8Joins an arena."));
jugador.sendMessage(ChatColor.translateAlternateColorCodes('&',"&6/paintball joinrandom &8Joins a random arena."));
jugador.sendMessage(ChatColor.translateAlternateColorCodes('&',"&6/paintball leave &8Leaves from the arena."));
jugador.sendMessage(ChatColor.translateAlternateColorCodes('&',"&6/paintball shop &8Opens the Paintball Shop."));
jugador.sendMessage(ChatColor.translateAlternateColorCodes('&',"&6/paintball givecoins <player> <amount>"));
jugador.sendMessage(ChatColor.translateAlternateColorCodes('&',"&6/paintball setmainlobby &8Defines the minigame main lobby."));
jugador.sendMessage(ChatColor.translateAlternateColorCodes('&',"&6/paintball enable <arena> &8Enables an arena."));
jugador.sendMessage(ChatColor.translateAlternateColorCodes('&',"&6/paintball disable <arena> &8Disables an arena."));
jugador.sendMessage(ChatColor.translateAlternateColorCodes('&',"&6/paintball edit <arena> &8Edit the properties of an arena."));
jugador.sendMessage(ChatColor.translateAlternateColorCodes('&',"&6/paintball createtophologram <name> <kills/wins> <global/monthly/weekly>"));
jugador.sendMessage(ChatColor.translateAlternateColorCodes('&',"&6/paintball removetophologram <name>"));
jugador.sendMessage(ChatColor.translateAlternateColorCodes('&',"&6/paintball reload &8Reloads the configuration files."));
jugador.sendMessage(ChatColor.translateAlternateColorCodes('&',""));
jugador.sendMessage(ChatColor.translateAlternateColorCodes('&',"&7[ [ &4[&fPaintball Battle&4] &7] ]"));
}
}

View File

@@ -0,0 +1,73 @@
package pb.ajneb97;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.command.TabCompleter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
public class ComandoTabCompleter implements TabCompleter {
private final PaintballBattle plugin;
public ComandoTabCompleter(PaintballBattle plugin) {
this.plugin = plugin;
}
@Override
public List<String> onTabComplete(CommandSender sender, Command cmd, String label, String[] args) {
if (!cmd.getName().equalsIgnoreCase("paintball")) return Collections.emptyList();
if (args.length == 1) {
List<String> sub = new ArrayList<>();
sub.add("join");
sub.add("joinrandom");
sub.add("leave");
sub.add("shop");
sub.add("create");
sub.add("delete");
sub.add("enable");
sub.add("disable");
sub.add("edit");
sub.add("setmainlobby");
sub.add("createtophologram");
sub.add("removetophologram");
sub.add("givecoins");
sub.add("reload");
return sub.stream().filter(s -> s.startsWith(args[0].toLowerCase())).collect(Collectors.toList());
}
if (args.length == 2) {
// Bei join, delete, enable, disable, edit → Arenanamen
if (args[0].equalsIgnoreCase("join") ||
args[0].equalsIgnoreCase("delete") ||
args[0].equalsIgnoreCase("enable") ||
args[0].equalsIgnoreCase("disable") ||
args[0].equalsIgnoreCase("edit")) {
List<String> arenaNames = plugin.getPartidas().stream()
.map(p -> p.getNombre())
.collect(Collectors.toList());
return arenaNames.stream().filter(a -> a.toLowerCase().startsWith(args[1].toLowerCase())).collect(Collectors.toList());
}
// Bei createtophologram/removetophologram → Name vorschlagen (optional)
}
// Bei createtophologram: Vorschläge für kills/wins, global/monthly/weekly
if (args.length == 3 && args[0].equalsIgnoreCase("createtophologram")) {
List<String> stats = new ArrayList<>();
stats.add("kills"); stats.add("wins");
return stats.stream().filter(s -> s.startsWith(args[2].toLowerCase())).collect(Collectors.toList());
}
if (args.length == 4 && args[0].equalsIgnoreCase("createtophologram")) {
List<String> periods = new ArrayList<>();
periods.add("global"); periods.add("monthly"); periods.add("weekly");
return periods.stream().filter(s -> s.startsWith(args[3].toLowerCase())).collect(Collectors.toList());
}
return Collections.emptyList();
}
}

View File

@@ -0,0 +1,901 @@
package pb.ajneb97;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.plugin.PluginDescriptionFile;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.RegisteredServiceProvider;
import org.bukkit.plugin.java.JavaPlugin;
import net.milkbowl.vault.economy.Economy;
import pb.ajneb97.api.ExpansionPaintballBattle;
import pb.ajneb97.api.Hat;
import pb.ajneb97.api.PaintballAPI;
import pb.ajneb97.api.Perk;
import pb.ajneb97.database.ConexionDatabase;
import pb.ajneb97.database.JugadorDatos;
import pb.ajneb97.database.MySQL;
import pb.ajneb97.juego.EstadoPartida;
import pb.ajneb97.juego.JugadorPaintball;
import pb.ajneb97.juego.Partida;
import pb.ajneb97.juego.PartidaEditando;
import pb.ajneb97.managers.Actualizacion;
import pb.ajneb97.managers.CartelesAdmin;
import pb.ajneb97.managers.CartelesListener;
import pb.ajneb97.managers.Checks;
import pb.ajneb97.managers.CooldownKillstreaksActionbar;
import pb.ajneb97.managers.InventarioAdmin;
import pb.ajneb97.managers.InventarioHats;
import pb.ajneb97.managers.InventarioShop;
import pb.ajneb97.managers.PartidaListener;
import pb.ajneb97.managers.PartidaListenerNew;
import pb.ajneb97.managers.PartidaManager;
import pb.ajneb97.managers.ScoreboardAdmin;
import pb.ajneb97.managers.TopHologram;
import pb.ajneb97.managers.TopHologramAdmin;
import pb.ajneb97.utils.ServerVersion;
public class PaintballBattle extends JavaPlugin {
PluginDescriptionFile pdfFile = getDescription();
public String version = pdfFile.getVersion();
public static String prefix = ChatColor.translateAlternateColorCodes('&', "&8[&b&lPaintball Battle&8] ");
private ArrayList<Partida> partidas;
private FileConfiguration arenas = null;
private File arenasFile = null;
private FileConfiguration messages = null;
private File messagesFile = null;
private FileConfiguration shop = null;
private File shopFile = null;
private PartidaEditando partidaEditando;
private ArrayList<PlayerConfig> configPlayers;
private ArrayList<JugadorDatos> jugadoresDatos;
private ArrayList<TopHologram> topHologramas;
private FileConfiguration holograms = null;
private File hologramsFile = null;
private static Economy econ = null;
public boolean primeraVez = false;
public String latestversion;
public String rutaMessages;
public String rutaConfig;
private ScoreboardAdmin scoreboardTask;
private CartelesAdmin cartelesTask;
private TopHologramAdmin hologramasTask;
private ConexionDatabase conexionDatabase;
public static ServerVersion serverVersion;
@SuppressWarnings("unused")
public void onEnable(){
setVersion();
configPlayers = new ArrayList<PlayerConfig>();
jugadoresDatos = new ArrayList<JugadorDatos>();
topHologramas = new ArrayList<TopHologram>();
registerEvents();
registerArenas();
registerConfig();
registerHolograms();
registerMessages();
createPlayersFolder();
registerPlayers();
registerShop();
cargarPartidas();
registerCommands();
checkMessagesUpdate();
cargarJugadores();
setupEconomy();
if(MySQL.isEnabled(getConfig())){
conexionDatabase = new ConexionDatabase(getConfig());
}
scoreboardTask = new ScoreboardAdmin(this);
scoreboardTask.crearScoreboards();
cartelesTask = new CartelesAdmin(this);
cartelesTask.actualizarCarteles();
CooldownKillstreaksActionbar c = new CooldownKillstreaksActionbar(this);
c.crearActionbars();
cargarTopHologramas();
hologramasTask = new TopHologramAdmin(this);
hologramasTask.actualizarHologramas();
PaintballAPI api = new PaintballAPI(this);
if(Bukkit.getPluginManager().getPlugin("PlaceholderAPI") != null){
new ExpansionPaintballBattle(this).register();
}
Checks.checkearYModificar(this, primeraVez);
Bukkit.getConsoleSender().sendMessage(prefix+ChatColor.YELLOW + "Has been enabled! " + ChatColor.WHITE + "Version: " + version);
Bukkit.getConsoleSender().sendMessage(prefix+ChatColor.YELLOW + "Thanks for using my plugin! " + ChatColor.WHITE + "~Ajneb97");
updateChecker();
}
public void onDisable(){
if(partidas != null) {
for(int i=0;i<partidas.size();i++) {
if(!partidas.get(i).getEstado().equals(EstadoPartida.DESACTIVADA)) {
PartidaManager.finalizarPartida(partidas.get(i),this,true,null);
}
}
}
guardarPartidas();
guardarJugadores();
guardarTopHologramas();
Bukkit.getConsoleSender().sendMessage(prefix+ChatColor.YELLOW + "Has been disabled! " + ChatColor.WHITE + "Version: " + version);
}
public void setVersion(){
String packageName = Bukkit.getServer().getClass().getPackage().getName();
String bukkitVersion = Bukkit.getServer().getBukkitVersion().split("-")[0];
switch(bukkitVersion){
case "1.20.5":
case "1.20.6":
serverVersion = ServerVersion.v1_20_R4;
break;
case "1.21":
case "1.21.1":
case "1.21.4":
case "1.21.5":
serverVersion = ServerVersion.v1_21_R1;
break;
default:
//serverVersion = ServerVersion.valueOf(packageName.replace("org.bukkit.craftbukkit.", ""));
serverVersion = ServerVersion.detect();
}
}
public void recargarScoreboard() {
int taskID = scoreboardTask.getTaskID();
Bukkit.getScheduler().cancelTask(taskID);
scoreboardTask = new ScoreboardAdmin(this);
scoreboardTask.crearScoreboards();
}
public void recargarCarteles() {
int taskID = cartelesTask.getTaskID();
Bukkit.getScheduler().cancelTask(taskID);
cartelesTask = new CartelesAdmin(this);
cartelesTask.actualizarCarteles();
}
public void recargarHologramas() {
int taskID = hologramasTask.getTaskID();
Bukkit.getScheduler().cancelTask(taskID);
hologramasTask = new TopHologramAdmin(this);
hologramasTask.actualizarHologramas();
}
public void setPartidaEditando(PartidaEditando p) {
this.partidaEditando = p;
}
public void removerPartidaEditando() {
this.partidaEditando = null;
}
public PartidaEditando getPartidaEditando() {
return this.partidaEditando;
}
public ConexionDatabase getConexionDatabase() {
return this.conexionDatabase;
}
private boolean setupEconomy() {
if (getServer().getPluginManager().getPlugin("Vault") == null) {
return false;
}
RegisteredServiceProvider<Economy> rsp = getServer().getServicesManager().getRegistration(Economy.class);
if (rsp == null) {
return false;
}
econ = rsp.getProvider();
return econ != null;
}
public Economy getEconomy(){
return econ;
}
public void registerEvents(){
PluginManager pm = getServer().getPluginManager();
pm.registerEvents(new PartidaListener(this), this);
if(!Bukkit.getVersion().contains("1.8")) {
pm.registerEvents(new PartidaListenerNew(this), this);
}
pm.registerEvents(new CartelesListener(this), this);
pm.registerEvents(new InventarioAdmin(this), this);
pm.registerEvents(new InventarioShop(this), this);
pm.registerEvents(new InventarioHats(this), this);
pm.registerEvents(new Actualizacion(this), this);
}
public void registerCommands(){
this.getCommand("paintball").setExecutor(new Comando(this));
this.getCommand("paintball").setTabCompleter(new ComandoTabCompleter(this)); // TabCompleter hinzufügen
}
public Partida getPartidaJugador(String jugador) {
for(int i=0;i<partidas.size();i++) {
ArrayList<JugadorPaintball> jugadores = partidas.get(i).getJugadores();
for(int c=0;c<jugadores.size();c++) {
if(jugadores.get(c).getJugador().getName().equals(jugador)) {
return partidas.get(i);
}
}
}
return null;
}
public ArrayList<Partida> getPartidas() {
return this.partidas;
}
public Partida getPartida(String nombre) {
for(int i=0;i<partidas.size();i++) {
if(partidas.get(i).getNombre().equals(nombre)) {
return partidas.get(i);
}
}
return null;
}
public void agregarPartida(Partida partida) {
this.partidas.add(partida);
}
public void removerPartida(String nombre) {
for(int i=0;i<partidas.size();i++) {
if(partidas.get(i).getNombre().equals(nombre)) {
partidas.remove(i);
}
}
}
public void cargarPartidas() {
this.partidas = new ArrayList<Partida>();
FileConfiguration arenas = getArenas();
if(arenas.contains("Arenas")) {
for(String key : arenas.getConfigurationSection("Arenas").getKeys(false)) {
int min_players = Integer.valueOf(arenas.getString("Arenas."+key+".min_players"));
int max_players = Integer.valueOf(arenas.getString("Arenas."+key+".max_players"));
int time = Integer.valueOf(arenas.getString("Arenas."+key+".time"));
int vidas = Integer.valueOf(arenas.getString("Arenas."+key+".lives"));
Location lLobby = null;
if(arenas.contains("Arenas."+key+".Lobby")) {
double xLobby = Double.valueOf(arenas.getString("Arenas."+key+".Lobby.x"));
double yLobby = Double.valueOf(arenas.getString("Arenas."+key+".Lobby.y"));
double zLobby = Double.valueOf(arenas.getString("Arenas."+key+".Lobby.z"));
String worldLobby = arenas.getString("Arenas."+key+".Lobby.world");
float pitchLobby = Float.valueOf(arenas.getString("Arenas."+key+".Lobby.pitch"));
float yawLobby = Float.valueOf(arenas.getString("Arenas."+key+".Lobby.yaw"));
lLobby = new Location(Bukkit.getWorld(worldLobby),xLobby,yLobby,zLobby,yawLobby,pitchLobby);
}
String nombreTeam1 = arenas.getString("Arenas."+key+".Team1.name");
Location lSpawnTeam1 = null;
if(arenas.contains("Arenas."+key+".Team1.Spawn")) {
double xSpawnTeam1 = Double.valueOf(arenas.getString("Arenas."+key+".Team1.Spawn.x"));
double ySpawnTeam1 = Double.valueOf(arenas.getString("Arenas."+key+".Team1.Spawn.y"));
double zSpawnTeam1 = Double.valueOf(arenas.getString("Arenas."+key+".Team1.Spawn.z"));
String worldSpawnTeam1 = arenas.getString("Arenas."+key+".Team1.Spawn.world");
float pitchSpawnTeam1 = Float.valueOf(arenas.getString("Arenas."+key+".Team1.Spawn.pitch"));
float yawSpawnTeam1 = Float.valueOf(arenas.getString("Arenas."+key+".Team1.Spawn.yaw"));
lSpawnTeam1 = new Location(Bukkit.getWorld(worldSpawnTeam1),xSpawnTeam1,ySpawnTeam1,zSpawnTeam1,yawSpawnTeam1,pitchSpawnTeam1);
}
String nombreTeam2 = arenas.getString("Arenas."+key+".Team2.name");
Location lSpawnTeam2 = null;
if(arenas.contains("Arenas."+key+".Team2.Spawn")) {
double xSpawnTeam2 = Double.valueOf(arenas.getString("Arenas."+key+".Team2.Spawn.x"));
double ySpawnTeam2 = Double.valueOf(arenas.getString("Arenas."+key+".Team2.Spawn.y"));
double zSpawnTeam2 = Double.valueOf(arenas.getString("Arenas."+key+".Team2.Spawn.z"));
String worldSpawnTeam2 = arenas.getString("Arenas."+key+".Team2.Spawn.world");
float pitchSpawnTeam2 = Float.valueOf(arenas.getString("Arenas."+key+".Team2.Spawn.pitch"));
float yawSpawnTeam2 = Float.valueOf(arenas.getString("Arenas."+key+".Team2.Spawn.yaw"));
lSpawnTeam2 = new Location(Bukkit.getWorld(worldSpawnTeam2),xSpawnTeam2,ySpawnTeam2,zSpawnTeam2,yawSpawnTeam2,pitchSpawnTeam2);
}
Partida partida = new Partida(key,time,nombreTeam1,nombreTeam2,vidas);
if(nombreTeam1.equalsIgnoreCase("random")) {
partida.getTeam1().setRandom(true);
}
if(nombreTeam2.equalsIgnoreCase("random")) {
partida.getTeam2().setRandom(true);
}
partida.modificarTeams(getConfig());
partida.setCantidadMaximaJugadores(max_players);
partida.setCantidadMinimaJugadores(min_players);
partida.setLobby(lLobby);
partida.getTeam1().setSpawn(lSpawnTeam1);
partida.getTeam2().setSpawn(lSpawnTeam2);
String enabled = arenas.getString("Arenas."+key+".enabled");
if(enabled.equals("true")) {
partida.setEstado(EstadoPartida.ESPERANDO);
}else {
partida.setEstado(EstadoPartida.DESACTIVADA);
}
this.partidas.add(partida);
}
}
}
public void guardarPartidas() {
FileConfiguration arenas = getArenas();
arenas.set("Arenas", null);
for(Partida p : this.partidas) {
String nombre = p.getNombre();
arenas.set("Arenas."+nombre+".min_players", p.getCantidadMinimaJugadores()+"");
arenas.set("Arenas."+nombre+".max_players", p.getCantidadMaximaJugadores()+"");
arenas.set("Arenas."+nombre+".time", p.getTiempoMaximo()+"");
arenas.set("Arenas."+nombre+".lives", p.getVidasIniciales()+"");
Location lLobby = p.getLobby();
if(lLobby != null) {
arenas.set("Arenas."+nombre+".Lobby.x", lLobby.getX()+"");
arenas.set("Arenas."+nombre+".Lobby.y", lLobby.getY()+"");
arenas.set("Arenas."+nombre+".Lobby.z", lLobby.getZ()+"");
arenas.set("Arenas."+nombre+".Lobby.world", lLobby.getWorld().getName());
arenas.set("Arenas."+nombre+".Lobby.pitch", lLobby.getPitch());
arenas.set("Arenas."+nombre+".Lobby.yaw", lLobby.getYaw());
}
Location lSpawnTeam1 = p.getTeam1().getSpawn();
if(lSpawnTeam1 != null) {
arenas.set("Arenas."+nombre+".Team1.Spawn.x", lSpawnTeam1.getX()+"");
arenas.set("Arenas."+nombre+".Team1.Spawn.y", lSpawnTeam1.getY()+"");
arenas.set("Arenas."+nombre+".Team1.Spawn.z", lSpawnTeam1.getZ()+"");
arenas.set("Arenas."+nombre+".Team1.Spawn.world", lSpawnTeam1.getWorld().getName());
arenas.set("Arenas."+nombre+".Team1.Spawn.pitch", lSpawnTeam1.getPitch());
arenas.set("Arenas."+nombre+".Team1.Spawn.yaw", lSpawnTeam1.getYaw());
}
if(p.getTeam1().esRandom()) {
arenas.set("Arenas."+nombre+".Team1.name", "random");
}else {
arenas.set("Arenas."+nombre+".Team1.name", p.getTeam1().getTipo());
}
Location lSpawnTeam2 = p.getTeam2().getSpawn();
if(lSpawnTeam2 != null) {
arenas.set("Arenas."+nombre+".Team2.Spawn.x", lSpawnTeam2.getX()+"");
arenas.set("Arenas."+nombre+".Team2.Spawn.y", lSpawnTeam2.getY()+"");
arenas.set("Arenas."+nombre+".Team2.Spawn.z", lSpawnTeam2.getZ()+"");
arenas.set("Arenas."+nombre+".Team2.Spawn.world", lSpawnTeam2.getWorld().getName());
arenas.set("Arenas."+nombre+".Team2.Spawn.pitch", lSpawnTeam2.getPitch());
arenas.set("Arenas."+nombre+".Team2.Spawn.yaw", lSpawnTeam2.getYaw());
}
if(p.getTeam2().esRandom()) {
arenas.set("Arenas."+nombre+".Team2.name", "random");
}else {
arenas.set("Arenas."+nombre+".Team2.name", p.getTeam2().getTipo());
}
if(p.getEstado().equals(EstadoPartida.DESACTIVADA)) {
arenas.set("Arenas."+nombre+".enabled", "false");
}else {
arenas.set("Arenas."+nombre+".enabled", "true");
}
}
this.saveArenas();
}
public void registerArenas(){
arenasFile = new File(this.getDataFolder(), "arenas.yml");
if(!arenasFile.exists()){
this.getArenas().options().copyDefaults(true);
saveArenas();
}
}
public void saveArenas() {
try {
arenas.save(arenasFile);
} catch (IOException e) {
e.printStackTrace();
}
}
public FileConfiguration getArenas() {
if (arenas == null) {
reloadArenas();
}
return arenas;
}
public void reloadArenas() {
if (arenas == null) {
arenasFile = new File(getDataFolder(), "arenas.yml");
}
arenas = YamlConfiguration.loadConfiguration(arenasFile);
Reader defConfigStream;
try {
defConfigStream = new InputStreamReader(this.getResource("arenas.yml"), "UTF8");
if (defConfigStream != null) {
YamlConfiguration defConfig = YamlConfiguration.loadConfiguration(defConfigStream);
arenas.setDefaults(defConfig);
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
public void registerConfig(){
File config = new File(this.getDataFolder(), "config.yml");
rutaConfig = config.getPath();
if(!config.exists()){
this.primeraVez = true;
this.getConfig().options().copyDefaults(true);
saveConfig();
}
}
public void registerShop(){
shopFile = new File(this.getDataFolder(), "shop.yml");
if(!shopFile.exists()){
this.getShop().options().copyDefaults(true);
saveShop();
}
}
public void saveShop() {
try {
shop.save(shopFile);
}catch (IOException e) {
e.printStackTrace();
}
}
public FileConfiguration getShop() {
if (shop == null) {
reloadShop();
}
return shop;
}
public void reloadShop() {
if (shop == null) {
shopFile = new File(getDataFolder(), "shop.yml");
}
shop = YamlConfiguration.loadConfiguration(shopFile);
Reader defConfigStream;
try {
defConfigStream = new InputStreamReader(this.getResource("shop.yml"), "UTF8");
if (defConfigStream != null) {
YamlConfiguration defConfig = YamlConfiguration.loadConfiguration(defConfigStream);
shop.setDefaults(defConfig);
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
public void registerMessages(){
messagesFile = new File(this.getDataFolder(), "messages.yml");
rutaMessages = messagesFile.getPath();
if(!messagesFile.exists()){
this.getMessages().options().copyDefaults(true);
saveMessages();
}
}
public void saveMessages() {
try {
messages.save(messagesFile);
}catch (IOException e) {
e.printStackTrace();
}
}
public FileConfiguration getMessages() {
if (messages == null) {
reloadMessages();
}
return messages;
}
public void reloadMessages() {
if (messages == null) {
messagesFile = new File(getDataFolder(), "messages.yml");
}
messages = YamlConfiguration.loadConfiguration(messagesFile);
Reader defConfigStream;
try {
defConfigStream = new InputStreamReader(this.getResource("messages.yml"), "UTF8");
if (defConfigStream != null) {
YamlConfiguration defConfig = YamlConfiguration.loadConfiguration(defConfigStream);
messages.setDefaults(defConfig);
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
public void createPlayersFolder(){
File folder;
try {
folder = new File(this.getDataFolder() + File.separator + "players");
if(!folder.exists()){
folder.mkdirs();
}
} catch(SecurityException e) {
folder = null;
}
}
public void savePlayers() {
for(int i=0;i<configPlayers.size();i++) {
configPlayers.get(i).savePlayerConfig();
}
}
public void registerPlayers(){
String path = this.getDataFolder() + File.separator + "players";
File folder = new File(path);
File[] listOfFiles = folder.listFiles();
for (int i=0;i<listOfFiles.length;i++) {
if(listOfFiles[i].isFile()) {
String pathName = listOfFiles[i].getName();
PlayerConfig config = new PlayerConfig(pathName,this);
config.registerPlayerConfig();
configPlayers.add(config);
}
}
}
public ArrayList<PlayerConfig> getConfigPlayers(){
return this.configPlayers;
}
public boolean archivoYaRegistrado(String pathName) {
for(int i=0;i<configPlayers.size();i++) {
if(configPlayers.get(i).getPath().equals(pathName)) {
return true;
}
}
return false;
}
public PlayerConfig getPlayerConfig(String pathName) {
for(int i=0;i<configPlayers.size();i++) {
if(configPlayers.get(i).getPath().equals(pathName)) {
return configPlayers.get(i);
}
}
return null;
}
public ArrayList<PlayerConfig> getPlayerConfigs() {
return this.configPlayers;
}
public boolean registerPlayer(String pathName) {
if(!archivoYaRegistrado(pathName)) {
PlayerConfig config = new PlayerConfig(pathName,this);
config.registerPlayerConfig();
configPlayers.add(config);
return true;
}else {
return false;
}
}
public void removerConfigPlayer(String path) {
for(int i=0;i<configPlayers.size();i++) {
if(configPlayers.get(i).getPath().equals(path)) {
configPlayers.remove(i);
}
}
}
public void cargarJugadores() {
if(!MySQL.isEnabled(getConfig())) {
for(PlayerConfig playerConfig : configPlayers) {
FileConfiguration players = playerConfig.getConfig();
String jugador = players.getString("name");
int kills = 0;
int wins = 0;
int loses = 0;
int ties = 0;
int coins = 0;
if(players.contains("kills")) {
kills = Integer.valueOf(players.getString("kills"));
}
if(players.contains("wins")) {
wins = Integer.valueOf(players.getString("wins"));
}
if(players.contains("loses")) {
loses = Integer.valueOf(players.getString("loses"));
}
if(players.contains("ties")) {
ties = Integer.valueOf(players.getString("ties"));
}
if(players.contains("coins")) {
coins = Integer.valueOf(players.getString("coins"));
}
ArrayList<Perk> perks = new ArrayList<Perk>();
if(players.contains("perks")) {
List<String> listaPerks = players.getStringList("perks");
for(int i=0;i<listaPerks.size();i++) {
String[] separados = listaPerks.get(i).split(";");
Perk p = new Perk(separados[0],Integer.valueOf(separados[1]));
perks.add(p);
}
}
ArrayList<Hat> hats = new ArrayList<Hat>();
if(players.contains("hats")) {
List<String> listaHats = players.getStringList("hats");
for(int i=0;i<listaHats.size();i++) {
String[] separados = listaHats.get(i).split(";");
Hat h = new Hat(separados[0],Boolean.valueOf(separados[1]));
hats.add(h);
}
}
this.agregarJugadorDatos(new JugadorDatos(jugador,playerConfig.getPath().replace(".yml", ""),wins,loses,ties,kills,coins,perks,hats));
}
}
}
public void guardarJugadores() {
if(!MySQL.isEnabled(getConfig())) {
for(JugadorDatos j : jugadoresDatos) {
String jugador = j.getName();
PlayerConfig playerConfig = getPlayerConfig(j.getUUID()+".yml");
FileConfiguration players = playerConfig.getConfig();
players.set("name", jugador);
players.set("kills", j.getKills());
players.set("wins", j.getWins());
players.set("ties", j.getTies());
players.set("loses", j.getLoses());
players.set("coins", j.getCoins());
List<String> listaPerks = new ArrayList<String>();
ArrayList<Perk> perks = j.getPerks();
for(Perk p : perks) {
listaPerks.add(p.getName()+";"+p.getNivel());
}
players.set("perks", listaPerks);
List<String> listaHats = new ArrayList<String>();
ArrayList<Hat> hats = j.getHats();
for(Hat h : hats) {
listaHats.add(h.getName()+";"+h.isSelected());
}
players.set("hats", listaHats);
}
savePlayers();
}
}
public void agregarJugadorDatos(JugadorDatos jugador) {
jugadoresDatos.add(jugador);
}
public JugadorDatos getJugador(String jugador) {
for(JugadorDatos j : jugadoresDatos) {
if(j != null && j.getName() != null && j.getName().equals(jugador)) {
return j;
}
}
return null;
}
public ArrayList<JugadorDatos> getJugadores(){
return this.jugadoresDatos;
}
public void registerHolograms(){
hologramsFile = new File(this.getDataFolder(), "holograms.yml");
if(!hologramsFile.exists()){
this.getHolograms().options().copyDefaults(true);
saveHolograms();
}
}
public void saveHolograms() {
try {
holograms.save(hologramsFile);
} catch (IOException e) {
e.printStackTrace();
}
}
public FileConfiguration getHolograms() {
if (holograms == null) {
reloadHolograms();
}
return holograms;
}
public void reloadHolograms() {
if (holograms == null) {
hologramsFile = new File(getDataFolder(), "holograms.yml");
}
holograms = YamlConfiguration.loadConfiguration(hologramsFile);
Reader defConfigStream;
try {
defConfigStream = new InputStreamReader(this.getResource("holograms.yml"), "UTF8");
if (defConfigStream != null) {
YamlConfiguration defConfig = YamlConfiguration.loadConfiguration(defConfigStream);
holograms.setDefaults(defConfig);
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
public void agregarTopHolograma(TopHologram topHologram) {
this.topHologramas.add(topHologram);
}
public boolean eliminarTopHologama(String nombre) {
for(int i=0;i<topHologramas.size();i++) {
if(topHologramas.get(i).getName().equals(nombre)) {
topHologramas.get(i).removeHologram();
topHologramas.remove(i);
return true;
}
}
return false;
}
public TopHologram getTopHologram(String nombre) {
for(int i=0;i<topHologramas.size();i++) {
if(topHologramas.get(i).getName().equals(nombre)) {
return topHologramas.get(i);
}
}
return null;
}
public void guardarTopHologramas() {
FileConfiguration holograms = getHolograms();
holograms.set("Holograms", null);
for(int i=0;i<topHologramas.size();i++) {
Location l = topHologramas.get(i).getHologram().getLocation();
String name = topHologramas.get(i).getName();
String type = topHologramas.get(i).getType();
String period = topHologramas.get(i).getPeriod();
holograms.set("Holograms."+name+".type", type);
holograms.set("Holograms."+name+".period", period);
holograms.set("Holograms."+name+".x", l.getX()+"");
holograms.set("Holograms."+name+".y", topHologramas.get(i).getyOriginal()+"");
holograms.set("Holograms."+name+".z", l.getZ()+"");
holograms.set("Holograms."+name+".world", l.getWorld().getName());
}
saveHolograms();
}
public void cargarTopHologramas() {
FileConfiguration holograms = getHolograms();
if(holograms.contains("Holograms")) {
for(String name : holograms.getConfigurationSection("Holograms").getKeys(false)) {
String type = holograms.getString("Holograms."+name+".type");
double x = Double.valueOf(holograms.getString("Holograms."+name+".x"));
double y = Double.valueOf(holograms.getString("Holograms."+name+".y"));
double z = Double.valueOf(holograms.getString("Holograms."+name+".z"));
World world = Bukkit.getWorld(holograms.getString("Holograms."+name+".world"));
Location location = new Location(world,x,y,z);
String period = "global";
if(holograms.contains("Holograms."+name+".period")) {
period = holograms.getString("Holograms."+name+".period");
}
TopHologram topHologram = new TopHologram(name,type,location,this,period);
topHologram.spawnHologram(this);
this.agregarTopHolograma(topHologram);
}
}
}
public ArrayList<TopHologram> getTopHologramas(){
return this.topHologramas;
}
public void updateChecker(){
try {
HttpURLConnection con = (HttpURLConnection) new URL(
"https://api.spigotmc.org/legacy/update.php?resource=76676").openConnection();
int timed_out = 1250;
con.setConnectTimeout(timed_out);
con.setReadTimeout(timed_out);
latestversion = new BufferedReader(new InputStreamReader(con.getInputStream())).readLine();
if (latestversion.length() <= 7) {
if(!version.equals(latestversion)){
Bukkit.getConsoleSender().sendMessage(ChatColor.RED +"There is a new version available. "+ChatColor.YELLOW+
"("+ChatColor.GRAY+latestversion+ChatColor.YELLOW+")");
Bukkit.getConsoleSender().sendMessage(ChatColor.RED+"You can download it at: "+ChatColor.WHITE+"https://www.spigotmc.org/resources/76676/");
}
}
} catch (Exception ex) {
Bukkit.getConsoleSender().sendMessage(prefix + ChatColor.RED +"Error while checking update.");
}
}
public void checkMessagesUpdate(){
Path archivo = Paths.get(rutaMessages);
Path archivoConfig = Paths.get(rutaConfig);
try{
String texto = new String(Files.readAllBytes(archivo));
String textoConfig = new String(Files.readAllBytes(archivoConfig));
if(!textoConfig.contains("broadcast_starting_arena:")){
getConfig().set("broadcast_starting_arena.enabled", true);
List<String> lista = new ArrayList<String>();
lista.add("paintball");lista.add("lobby");
getConfig().set("broadcast_starting_arena.worlds", lista);
getConfig().set("rewards_executed_after_teleport", false);
getMessages().set("arenaStartingBroadcast", "&aArena &6&l%arena% &ais about to start! Use &b/pb join %arena% &ato join the game!");
saveConfig();
saveMessages();
}
if(!textoConfig.contains("startCooldownSound:")){
getConfig().set("startCooldownSound", "BLOCK_NOTE_BLOCK_PLING;10;1");
getConfig().set("startGameSound", "BLOCK_NOTE_BLOCK_PLING;10;2");
getConfig().set("arena_chat_enabled", true);
saveConfig();
}
if(!texto.contains("errorClearInventory:")){
getMessages().set("errorClearInventory", "&c&lERROR! &7To join an arena clear your inventory first.");
getConfig().set("empty_inventory_to_join", false);
saveConfig();
saveMessages();
}
if(!textoConfig.contains("snowball_particle:")){
getConfig().set("snowball_particle", "SNOW_SHOVEL");
saveConfig();
}
if(!texto.contains("receiveCoinsMessage:")){
getMessages().set("receiveCoinsMessage", "&aYou received &e%amount% &acoins.");
saveMessages();
}
if(!textoConfig.contains("losers_command_rewards:")) {
List<String> lista = new ArrayList<String>();
lista.add("msg %player% &aYou've lost! Here, take this compensation reward.");
lista.add("paintball givecoins %player% %random_2*kills-6*kills%");
getConfig().set("losers_command_rewards", lista);
lista = new ArrayList<String>();
lista.add("msg %player% &aIt's a tie! Here, take this reward.");
lista.add("paintball givecoins %player% %random_2*kills-6*kills%");
getConfig().set("tie_command_rewards", lista);
saveConfig();
}
}catch(IOException e){
e.printStackTrace();
}
}
}

View File

@@ -0,0 +1,77 @@
package pb.ajneb97;
import java.io.File;
import java.io.IOException;
import org.bukkit.configuration.InvalidConfigurationException;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;
public class PlayerConfig {
private FileConfiguration config;
private File configFile;
private String filePath;
private PaintballBattle plugin;
public PlayerConfig(String filePath,PaintballBattle plugin){
this.config = null;
this.configFile = null;
this.filePath = filePath;
this.plugin = plugin;
}
public String getPath(){
return this.filePath;
}
public FileConfiguration getConfig(){
if (config == null) {
reloadPlayerConfig();
}
return this.config;
}
public void registerPlayerConfig(){
configFile = new File(plugin.getDataFolder() +File.separator + "players",filePath);
if(!configFile.exists()){
try {
configFile.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
config = new YamlConfiguration();
try {
config.load(configFile);
} catch (IOException e) {
e.printStackTrace();
} catch (InvalidConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void savePlayerConfig() {
try {
config.save(configFile);
} catch (IOException e) {
e.printStackTrace();
}
}
public void reloadPlayerConfig() {
if (config == null) {
configFile = new File(plugin.getDataFolder() +File.separator + "players", filePath);
}
config = YamlConfiguration.loadConfiguration(configFile);
if (configFile != null) {
YamlConfiguration defConfig = YamlConfiguration.loadConfiguration(configFile);
config.setDefaults(defConfig);
}
}
}