|
|
@ -1,5 +1,10 @@ |
|
|
|
package cx.sfy.TheBridge.game; |
|
|
|
|
|
|
|
import java.text.DecimalFormat; |
|
|
|
import java.util.ArrayList; |
|
|
|
import java.util.HashMap; |
|
|
|
import java.util.Random; |
|
|
|
|
|
|
|
import org.bukkit.Bukkit; |
|
|
|
import org.bukkit.ChatColor; |
|
|
|
import org.bukkit.Color; |
|
|
@ -25,31 +30,26 @@ import cx.sfy.TheBridge.utils.CenterMessage; |
|
|
|
import cx.sfy.TheBridge.utils.ItemBuilder; |
|
|
|
import cx.sfy.TheBridge.utils.Utils; |
|
|
|
|
|
|
|
import java.text.DecimalFormat; |
|
|
|
import java.util.ArrayList; |
|
|
|
import java.util.HashMap; |
|
|
|
import java.util.Random; |
|
|
|
|
|
|
|
public class GameFour { |
|
|
|
|
|
|
|
private Main plugin; |
|
|
|
private HashMap<ChatColor, TeamFour> teams; |
|
|
|
private HashMap<Player, ChatColor> teamPlayer; |
|
|
|
private ArrayList<Player> players; |
|
|
|
private ArrayList<Player> spects; |
|
|
|
private HashMap<Player, PlayerData> pd = new HashMap<Player, PlayerData>(); |
|
|
|
private HashMap<Player, Integer> goals = new HashMap<Player, Integer>(); |
|
|
|
private HashMap<Player, Integer> kills = new HashMap<Player, Integer>(); |
|
|
|
private ArrayList<Location> build = new ArrayList<Location>(); |
|
|
|
private ArrayList<Location> placed = new ArrayList<Location>(); |
|
|
|
private ArrayList<TruenoHologram> holograms = new ArrayList<TruenoHologram>(); |
|
|
|
private Location lobby; |
|
|
|
private Location spect; |
|
|
|
private String name; |
|
|
|
private String mode; |
|
|
|
private int min; |
|
|
|
private int max; |
|
|
|
private int teamSize; |
|
|
|
private final Main plugin; |
|
|
|
private final HashMap<ChatColor, TeamFour> teams; |
|
|
|
private final HashMap<Player, ChatColor> teamPlayer; |
|
|
|
private final ArrayList<Player> players; |
|
|
|
private final ArrayList<Player> spects; |
|
|
|
private final HashMap<Player, PlayerData> pd = new HashMap<>(); |
|
|
|
private final HashMap<Player, Integer> goals = new HashMap<>(); |
|
|
|
private final HashMap<Player, Integer> kills = new HashMap<>(); |
|
|
|
private final ArrayList<Location> build = new ArrayList<>(); |
|
|
|
private final ArrayList<Location> placed = new ArrayList<>(); |
|
|
|
private final ArrayList<TruenoHologram> holograms = new ArrayList<>(); |
|
|
|
private final Location lobby; |
|
|
|
private final Location spect; |
|
|
|
private final String name; |
|
|
|
private final String mode; |
|
|
|
private final int min; |
|
|
|
private final int max; |
|
|
|
private final int teamSize; |
|
|
|
private int starting; |
|
|
|
private int prestart; |
|
|
|
private BukkitTask start; |
|
|
@ -75,20 +75,18 @@ public class GameFour { |
|
|
|
this.teams = new HashMap<>(); |
|
|
|
this.players = new ArrayList<>(); |
|
|
|
this.spects = new ArrayList<>(); |
|
|
|
int gn = Math.min(buildMin.getBlockX(), buildMax.getBlockX()); |
|
|
|
int gn2 = Math.max(buildMin.getBlockX(), buildMax.getBlockX()); |
|
|
|
int gn3 = Math.min(buildMin.getBlockZ(), buildMax.getBlockZ()); |
|
|
|
int gn4 = Math.max(buildMin.getBlockZ(), buildMax.getBlockZ()); |
|
|
|
int gn5 = Math.min(buildMin.getBlockY(), buildMax.getBlockY()); |
|
|
|
int gn6 = Math.max(buildMin.getBlockY(), buildMax.getBlockY()); |
|
|
|
for (int i = gn; i <= gn2; ++i) { |
|
|
|
for (int j = gn5; j <= gn6; ++j) { |
|
|
|
final int gn = Math.min(buildMin.getBlockX(), buildMax.getBlockX()); |
|
|
|
final int gn2 = Math.max(buildMin.getBlockX(), buildMax.getBlockX()); |
|
|
|
final int gn3 = Math.min(buildMin.getBlockZ(), buildMax.getBlockZ()); |
|
|
|
final int gn4 = Math.max(buildMin.getBlockZ(), buildMax.getBlockZ()); |
|
|
|
final int gn5 = Math.min(buildMin.getBlockY(), buildMax.getBlockY()); |
|
|
|
final int gn6 = Math.max(buildMin.getBlockY(), buildMax.getBlockY()); |
|
|
|
for (int i = gn; i <= gn2; ++i) |
|
|
|
for (int j = gn5; j <= gn6; ++j) |
|
|
|
for (int k = gn3; k <= gn4; ++k) { |
|
|
|
Location location3 = new Location(buildMin.getWorld(), (double) i, (double) j, (double) k); |
|
|
|
final Location location3 = new Location(buildMin.getWorld(), i, j, k); |
|
|
|
build.add(location3); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
this.teams.put(ChatColor.BLUE, new TeamFour(this, ChatColor.BLUE, Color.BLUE, |
|
|
|
plugin.getConfig().getString("names.blue"), spawnBlue, respawnBlue, portalBlue, hBlue)); |
|
|
|
this.teams.put(ChatColor.RED, new TeamFour(this, ChatColor.RED, Color.RED, |
|
|
@ -103,15 +101,13 @@ public class GameFour { |
|
|
|
|
|
|
|
public void checkCancel() { |
|
|
|
if (isState(FState.STARTING) && players.size() <= getMin()) { |
|
|
|
if (start != null) { |
|
|
|
if (start != null) |
|
|
|
start.cancel(); |
|
|
|
} |
|
|
|
setState(FState.WAITING); |
|
|
|
starting = 30; |
|
|
|
updateSign(); |
|
|
|
for (Player on : players) { |
|
|
|
for (final Player on : players) |
|
|
|
updateSB(on); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
@ -128,21 +124,21 @@ public class GameFour { |
|
|
|
} |
|
|
|
|
|
|
|
public boolean checkWin(TeamFour win, TeamFour death, Player e) { |
|
|
|
|
|
|
|
|
|
|
|
if (getTeamsAlive() <= 1 && !isState(FState.FINISH)) { |
|
|
|
setState(FState.FINISH); |
|
|
|
updateSign(); |
|
|
|
DecimalFormat df = new DecimalFormat("#.##"); |
|
|
|
for (Player w : win.getTeamPlayers()) { |
|
|
|
final DecimalFormat df = new DecimalFormat("#.##"); |
|
|
|
for (final Player w : win.getTeamPlayers()) |
|
|
|
PlayerStat.getPlayerStat(w).addFourWins(); |
|
|
|
} |
|
|
|
for (Player p : players) { |
|
|
|
for (final Player p : players) { |
|
|
|
p.getInventory().clear(); |
|
|
|
plugin.getNMS().sendTitle(p, 0, 60, 0, |
|
|
|
plugin.getLang().get("titles.winFour.title").replaceAll("<life>", win.getLifeString()) |
|
|
|
.replaceAll("<team>", win.getTeamName()).replaceAll("<color>", win.getColor() + ""), |
|
|
|
.replaceAll("<team>", win.getTeamName()).replaceAll("<color>", win.getColor() + ""), |
|
|
|
plugin.getLang().get("titles.winFour.subtitle").replaceAll("<life>", win.getLifeString()) |
|
|
|
.replaceAll("<team>", win.getTeamName()).replaceAll("<color>", win.getColor() + "")); |
|
|
|
for (String msg : plugin.getLang().getList("messages.winFour")) { |
|
|
|
.replaceAll("<team>", win.getTeamName()).replaceAll("<color>", win.getColor() + "")); |
|
|
|
for (final String msg : plugin.getLang().getList("messages.winFour")) |
|
|
|
CenterMessage.sendCenteredMessage(p, msg.replaceAll("&", "§").replaceAll("<player>", e.getName()) |
|
|
|
.replaceAll("<health>", df.format(e.getHealth())).replaceAll("<team>", win.getTeamName()) |
|
|
|
.replaceAll("<goals>", String.valueOf(goals.get(e))) |
|
|
@ -158,25 +154,21 @@ public class GameFour { |
|
|
|
.replaceAll("<teamStole>", (death.getTeamName() == null) ? "Stole" : death.getTeamName()) |
|
|
|
.replaceAll("<color>", |
|
|
|
(win.getColor() == null) ? ChatColor.WHITE + "" : win.getColor() + "")); |
|
|
|
} |
|
|
|
} |
|
|
|
new BukkitRunnable() { |
|
|
|
@Override |
|
|
|
public void run() { |
|
|
|
for (TruenoHologram th : holograms) { |
|
|
|
for (final TruenoHologram th : holograms) |
|
|
|
th.delete(); |
|
|
|
} |
|
|
|
for (Player p : spect.getWorld().getPlayers()) { |
|
|
|
for (final Player p : spect.getWorld().getPlayers()) |
|
|
|
if (pd.containsKey(p)) { |
|
|
|
for (Player on : Bukkit.getOnlinePlayers()) { |
|
|
|
for (final Player on : Bukkit.getOnlinePlayers()) { |
|
|
|
on.showPlayer(p); |
|
|
|
p.showPlayer(on); |
|
|
|
} |
|
|
|
plugin.getGM().removePlayerFourGames(p); |
|
|
|
} else { |
|
|
|
} else |
|
|
|
p.teleport(plugin.getMainLobby()); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
}.runTaskLater(plugin, 20 * 10); |
|
|
|
new BukkitRunnable() { |
|
|
@ -191,7 +183,7 @@ public class GameFour { |
|
|
|
} |
|
|
|
|
|
|
|
public void celebrateGoal(TeamFour team, TeamFour death, Player e) { |
|
|
|
DecimalFormat df = new DecimalFormat("#.##"); |
|
|
|
final DecimalFormat df = new DecimalFormat("#.##"); |
|
|
|
addGoal(e); |
|
|
|
PlayerStat.getPlayerStat(e).addFourGoals(); |
|
|
|
firework(getSpect(), team.getFColor()); |
|
|
@ -200,132 +192,122 @@ public class GameFour { |
|
|
|
death.removeLife(1); |
|
|
|
if (death.getLife() == 0) { |
|
|
|
death.killTeam(); |
|
|
|
if (checkWin(team, death, e)) { |
|
|
|
if (checkWin(team, death, e)) |
|
|
|
return; |
|
|
|
} |
|
|
|
for (Player p : players) { |
|
|
|
for (final Player p : players) |
|
|
|
plugin.getNMS().sendTitle(p, 0, 20, 0, |
|
|
|
plugin.getLang().get("titles.goalFinal.title").replaceAll("<player>", e.getName()) |
|
|
|
.replaceAll("<heart>", "❤").replaceAll("<teamOther>", team.getTeamName()) |
|
|
|
.replaceAll("<teamStole>", death.getTeamName()) |
|
|
|
.replaceAll("<color>", team.getColor() + ""), |
|
|
|
.replaceAll("<heart>", "❤").replaceAll("<teamOther>", team.getTeamName()) |
|
|
|
.replaceAll("<teamStole>", death.getTeamName()) |
|
|
|
.replaceAll("<color>", team.getColor() + ""), |
|
|
|
plugin.getLang().get("titles.goalFinal.subtitle").replaceAll("<player>", e.getName()) |
|
|
|
.replaceAll("<heart>", "❤").replaceAll("<teamOther>", team.getTeamName()) |
|
|
|
.replaceAll("<teamStole>", death.getTeamName()) |
|
|
|
.replaceAll("<color>", team.getColor() + "")); |
|
|
|
} |
|
|
|
} else { |
|
|
|
for (Player p : players) { |
|
|
|
.replaceAll("<heart>", "❤").replaceAll("<teamOther>", team.getTeamName()) |
|
|
|
.replaceAll("<teamStole>", death.getTeamName()) |
|
|
|
.replaceAll("<color>", team.getColor() + "")); |
|
|
|
} else |
|
|
|
for (final Player p : players) |
|
|
|
plugin.getNMS().sendTitle(p, 0, 20, 0, |
|
|
|
plugin.getLang().get("titles.goalNormal.title").replaceAll("<player>", e.getName()) |
|
|
|
.replaceAll("<heart>", "❤").replaceAll("<teamOther>", team.getTeamName()) |
|
|
|
.replaceAll("<teamStole>", death.getTeamName()) |
|
|
|
.replaceAll("<color>", team.getColor() + ""), |
|
|
|
.replaceAll("<heart>", "❤").replaceAll("<teamOther>", team.getTeamName()) |
|
|
|
.replaceAll("<teamStole>", death.getTeamName()) |
|
|
|
.replaceAll("<color>", team.getColor() + ""), |
|
|
|
plugin.getLang().get("titles.goalNormal.subtitle").replaceAll("<player>", e.getName()) |
|
|
|
.replaceAll("<heart>", "�").replaceAll("<teamOther>", team.getTeamName()) |
|
|
|
.replaceAll("<teamStole>", death.getTeamName()) |
|
|
|
.replaceAll("<color>", team.getColor() + "")); |
|
|
|
} |
|
|
|
} |
|
|
|
for (Player p : players) { |
|
|
|
.replaceAll("<heart>", "�").replaceAll("<teamOther>", team.getTeamName()) |
|
|
|
.replaceAll("<teamStole>", death.getTeamName()) |
|
|
|
.replaceAll("<color>", team.getColor() + "")); |
|
|
|
for (final Player p : players) { |
|
|
|
updateSB(p); |
|
|
|
for (String msg : plugin.getLang().getList("messages.final")) { |
|
|
|
for (final String msg : plugin.getLang().getList("messages.final")) |
|
|
|
CenterMessage.sendCenteredMessage(p, |
|
|
|
msg.replaceAll("&", "§").replaceAll("<teamStole>", death.getTeamName()) |
|
|
|
.replaceAll("<goals>", String.valueOf(goals.get(e))) |
|
|
|
.replaceAll("<es>", (goals.get(e) > 1) ? "es" : "") |
|
|
|
.replaceAll("<teamOther>", team.getTeamName()) |
|
|
|
.replaceAll("<color>", "" + team.getColor()).replaceAll("<player>", e.getName()) |
|
|
|
.replaceAll("<health>", df.format(e.getHealth())) |
|
|
|
.replaceAll("<team>", team.getTeamName()) |
|
|
|
.replaceAll("<red>", teams.get(ChatColor.RED).getTeamName()) |
|
|
|
.replaceAll("<redLife>", teams.get(ChatColor.RED).getLifeString()) |
|
|
|
.replaceAll("<blue>", teams.get(ChatColor.BLUE).getTeamName()) |
|
|
|
.replaceAll("<blueLife>", teams.get(ChatColor.BLUE).getLifeString()) |
|
|
|
.replaceAll("<yellow>", teams.get(ChatColor.YELLOW).getTeamName()) |
|
|
|
.replaceAll("<yellowLife>", teams.get(ChatColor.YELLOW).getLifeString()) |
|
|
|
.replaceAll("<green>", teams.get(ChatColor.GREEN).getTeamName()) |
|
|
|
.replaceAll("<greenLife>", teams.get(ChatColor.GREEN).getLifeString()) |
|
|
|
.replaceAll("<heart>", "❤")); |
|
|
|
} |
|
|
|
.replaceAll("<goals>", String.valueOf(goals.get(e))) |
|
|
|
.replaceAll("<es>", (goals.get(e) > 1) ? "es" : "") |
|
|
|
.replaceAll("<teamOther>", team.getTeamName()) |
|
|
|
.replaceAll("<color>", "" + team.getColor()).replaceAll("<player>", e.getName()) |
|
|
|
.replaceAll("<health>", df.format(e.getHealth())) |
|
|
|
.replaceAll("<team>", team.getTeamName()) |
|
|
|
.replaceAll("<red>", teams.get(ChatColor.RED).getTeamName()) |
|
|
|
.replaceAll("<redLife>", teams.get(ChatColor.RED).getLifeString()) |
|
|
|
.replaceAll("<blue>", teams.get(ChatColor.BLUE).getTeamName()) |
|
|
|
.replaceAll("<blueLife>", teams.get(ChatColor.BLUE).getLifeString()) |
|
|
|
.replaceAll("<yellow>", teams.get(ChatColor.YELLOW).getTeamName()) |
|
|
|
.replaceAll("<yellowLife>", teams.get(ChatColor.YELLOW).getLifeString()) |
|
|
|
.replaceAll("<green>", teams.get(ChatColor.GREEN).getTeamName()) |
|
|
|
.replaceAll("<greenLife>", teams.get(ChatColor.GREEN).getLifeString()) |
|
|
|
.replaceAll("<heart>", "❤")); |
|
|
|
} |
|
|
|
} else { |
|
|
|
team.addLife(1); |
|
|
|
death.removeLife(1); |
|
|
|
if (death.getLife() == 0) { |
|
|
|
death.killTeam(); |
|
|
|
if (checkWin(team, death, e)) { |
|
|
|
if (checkWin(team, death, e)) |
|
|
|
return; |
|
|
|
} |
|
|
|
for (Player p : players) { |
|
|
|
for (final Player p : players) |
|
|
|
plugin.getNMS().sendTitle(p, 0, 20, 0, |
|
|
|
plugin.getLang().get("titles.goalFinal.title").replaceAll("<player>", e.getName()) |
|
|
|
.replaceAll("<heart>", "❤").replaceAll("<teamOther>", team.getTeamName()) |
|
|
|
.replaceAll("<teamStole>", death.getTeamName()) |
|
|
|
.replaceAll("<color>", team.getColor() + ""), |
|
|
|
.replaceAll("<heart>", "❤").replaceAll("<teamOther>", team.getTeamName()) |
|
|
|
.replaceAll("<teamStole>", death.getTeamName()) |
|
|
|
.replaceAll("<color>", team.getColor() + ""), |
|
|
|
plugin.getLang().get("titles.goalFinal.subtitle").replaceAll("<player>", e.getName()) |
|
|
|
.replaceAll("<heart>", "❤").replaceAll("<teamOther>", team.getTeamName()) |
|
|
|
.replaceAll("<teamStole>", death.getTeamName()) |
|
|
|
.replaceAll("<color>", team.getColor() + "")); |
|
|
|
} |
|
|
|
.replaceAll("<heart>", "❤").replaceAll("<teamOther>", team.getTeamName()) |
|
|
|
.replaceAll("<teamStole>", death.getTeamName()) |
|
|
|
.replaceAll("<color>", team.getColor() + "")); |
|
|
|
|
|
|
|
} else { |
|
|
|
for (Player p : players) { |
|
|
|
} else |
|
|
|
for (final Player p : players) |
|
|
|
plugin.getNMS().sendTitle(p, 0, 20, 0, |
|
|
|
plugin.getLang().get("titles.goalNormal.title").replaceAll("<player>", e.getName()) |
|
|
|
.replaceAll("<heart>", "❤").replaceAll("<teamOther>", team.getTeamName()) |
|
|
|
.replaceAll("<teamStole>", death.getTeamName()) |
|
|
|
.replaceAll("<color>", team.getColor() + ""), |
|
|
|
.replaceAll("<heart>", "❤").replaceAll("<teamOther>", team.getTeamName()) |
|
|
|
.replaceAll("<teamStole>", death.getTeamName()) |
|
|
|
.replaceAll("<color>", team.getColor() + ""), |
|
|
|
plugin.getLang().get("titles.goalNormal.subtitle").replaceAll("<player>", e.getName()) |
|
|
|
.replaceAll("<heart>", "❤").replaceAll("<teamOther>", team.getTeamName()) |
|
|
|
.replaceAll("<teamStole>", death.getTeamName()) |
|
|
|
.replaceAll("<color>", team.getColor() + "")); |
|
|
|
} |
|
|
|
} |
|
|
|
for (Player p : players) { |
|
|
|
.replaceAll("<heart>", "❤").replaceAll("<teamOther>", team.getTeamName()) |
|
|
|
.replaceAll("<teamStole>", death.getTeamName()) |
|
|
|
.replaceAll("<color>", team.getColor() + "")); |
|
|
|
for (final Player p : players) { |
|
|
|
updateSB(p); |
|
|
|
for (String msg : plugin.getLang().getList("messages.stole")) { |
|
|
|
for (final String msg : plugin.getLang().getList("messages.stole")) |
|
|
|
CenterMessage.sendCenteredMessage(p, |
|
|
|
msg.replaceAll("&", "§").replaceAll("<teamStole>", death.getTeamName()) |
|
|
|
.replaceAll("<goals>", String.valueOf(goals.get(e))) |
|
|
|
.replaceAll("<es>", (goals.get(e) > 1) ? "es" : "") |
|
|
|
.replaceAll("<color>", "" + team.getColor()) |
|
|
|
.replaceAll("<teamOther>", team.getTeamName()).replaceAll("<player>", e.getName()) |
|
|
|
.replaceAll("<health>", df.format(e.getHealth())) |
|
|
|
.replaceAll("<red>", teams.get(ChatColor.RED).getTeamName()) |
|
|
|
.replaceAll("<redLife>", teams.get(ChatColor.RED).getLifeString()) |
|
|
|
.replaceAll("<blue>", teams.get(ChatColor.BLUE).getTeamName()) |
|
|
|
.replaceAll("<blueLife>", teams.get(ChatColor.BLUE).getLifeString()) |
|
|
|
.replaceAll("<yellow>", teams.get(ChatColor.YELLOW).getTeamName()) |
|
|
|
.replaceAll("<yellowLife>", teams.get(ChatColor.YELLOW).getLifeString()) |
|
|
|
.replaceAll("<green>", teams.get(ChatColor.GREEN).getTeamName()) |
|
|
|
.replaceAll("<greenLife>", teams.get(ChatColor.GREEN).getLifeString()) |
|
|
|
.replaceAll("<heart>", "❤")); |
|
|
|
} |
|
|
|
.replaceAll("<goals>", String.valueOf(goals.get(e))) |
|
|
|
.replaceAll("<es>", (goals.get(e) > 1) ? "es" : "") |
|
|
|
.replaceAll("<color>", "" + team.getColor()) |
|
|
|
.replaceAll("<teamOther>", team.getTeamName()).replaceAll("<player>", e.getName()) |
|
|
|
.replaceAll("<health>", df.format(e.getHealth())) |
|
|
|
.replaceAll("<red>", teams.get(ChatColor.RED).getTeamName()) |
|
|
|
.replaceAll("<redLife>", teams.get(ChatColor.RED).getLifeString()) |
|
|
|
.replaceAll("<blue>", teams.get(ChatColor.BLUE).getTeamName()) |
|
|
|
.replaceAll("<blueLife>", teams.get(ChatColor.BLUE).getLifeString()) |
|
|
|
.replaceAll("<yellow>", teams.get(ChatColor.YELLOW).getTeamName()) |
|
|
|
.replaceAll("<yellowLife>", teams.get(ChatColor.YELLOW).getLifeString()) |
|
|
|
.replaceAll("<green>", teams.get(ChatColor.GREEN).getTeamName()) |
|
|
|
.replaceAll("<greenLife>", teams.get(ChatColor.GREEN).getLifeString()) |
|
|
|
.replaceAll("<heart>", "❤")); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
public void firework(Location loc, Color c1) { |
|
|
|
Firework fa = (Firework) loc.getWorld().spawn( |
|
|
|
final Firework fa = loc.getWorld().spawn( |
|
|
|
loc.clone().add(new Random().nextInt(5) + 1, new Random().nextInt(1) + 1, new Random().nextInt(5) + 1), |
|
|
|
Firework.class); |
|
|
|
FireworkMeta fam = fa.getFireworkMeta(); |
|
|
|
FireworkEffect.Type tipo = FireworkEffect.Type.STAR; |
|
|
|
Color c2 = Color.WHITE; |
|
|
|
FireworkEffect ef = FireworkEffect.builder().withColor(c1).withFade(c2).with(tipo).build(); |
|
|
|
final FireworkMeta fam = fa.getFireworkMeta(); |
|
|
|
final FireworkEffect.Type tipo = FireworkEffect.Type.STAR; |
|
|
|
final Color c2 = Color.WHITE; |
|
|
|
final FireworkEffect ef = FireworkEffect.builder().withColor(c1).withFade(c2).with(tipo).build(); |
|
|
|
fam.addEffect(ef); |
|
|
|
fam.setPower(0); |
|
|
|
fa.setFireworkMeta(fam); |
|
|
|
new BukkitRunnable() { |
|
|
|
@Override |
|
|
|
public void run() { |
|
|
|
Firework fa = (Firework) loc.getWorld().spawn(loc.clone().add(new Random().nextInt(5) + 1, |
|
|
|
final Firework fa = loc.getWorld().spawn(loc.clone().add(new Random().nextInt(5) + 1, |
|
|
|
new Random().nextInt(1) + 1, new Random().nextInt(5) + 1), Firework.class); |
|
|
|
FireworkMeta fam = fa.getFireworkMeta(); |
|
|
|
FireworkEffect.Type tipo = FireworkEffect.Type.STAR; |
|
|
|
Color c2 = Color.WHITE; |
|
|
|
FireworkEffect ef = FireworkEffect.builder().withColor(c1).withFade(c2).with(tipo).build(); |
|
|
|
final FireworkMeta fam = fa.getFireworkMeta(); |
|
|
|
final FireworkEffect.Type tipo = FireworkEffect.Type.STAR; |
|
|
|
final Color c2 = Color.WHITE; |
|
|
|
final FireworkEffect ef = FireworkEffect.builder().withColor(c1).withFade(c2).with(tipo).build(); |
|
|
|
fam.addEffect(ef); |
|
|
|
fam.setPower(0); |
|
|
|
fa.setFireworkMeta(fam); |
|
|
@ -347,7 +329,7 @@ public class GameFour { |
|
|
|
givePlayerItems(p); |
|
|
|
} |
|
|
|
}.runTaskLater(plugin, 20); |
|
|
|
for (Player on : players) { |
|
|
|
for (final Player on : players) { |
|
|
|
on.sendMessage(plugin.getLang().get("messages.join").replaceAll("<player>", p.getName()) |
|
|
|
.replaceAll("<players>", String.valueOf(players.size())) |
|
|
|
.replaceAll("<max>", String.valueOf(getMax()))); |
|
|
@ -363,19 +345,16 @@ public class GameFour { |
|
|
|
pd.get(p).restore(); |
|
|
|
removeAllPlayerTeam(p); |
|
|
|
players.remove(p); |
|
|
|
if (isState(FState.WAITING) || isState(FState.STARTING)) { |
|
|
|
for (Player on : players) { |
|
|
|
if (isState(FState.WAITING) || isState(FState.STARTING)) |
|
|
|
for (final Player on : players) { |
|
|
|
on.sendMessage(plugin.getLang().get("messages.quit").replaceAll("<player>", p.getName()) |
|
|
|
.replaceAll("<players>", String.valueOf(players.size())) |
|
|
|
.replaceAll("<max>", String.valueOf(getMax()))); |
|
|
|
on.playSound(on.getLocation(), Sound.valueOf(plugin.getSounds().get("sounds.game.quit")), 1.0f, 1.0f); |
|
|
|
updateSB(on); |
|
|
|
} |
|
|
|
} else { |
|
|
|
if (getTeamsAlive() == 1) { |
|
|
|
checkWin(getLastTeam(), getTeamPlayer(p), getLastTeam().getTeamPlayers().get(0)); |
|
|
|
} |
|
|
|
} |
|
|
|
else if (getTeamsAlive() == 1) |
|
|
|
checkWin(getLastTeam(), getTeamPlayer(p), getLastTeam().getTeamPlayers().get(0)); |
|
|
|
updateSign(); |
|
|
|
checkCancel(); |
|
|
|
} |
|
|
@ -384,16 +363,14 @@ public class GameFour { |
|
|
|
if (isState(FState.WAITING) && players.size() >= getMin()) { |
|
|
|
setState(FState.STARTING); |
|
|
|
updateSign(); |
|
|
|
for (Player p : players) { |
|
|
|
for (final Player p : players) |
|
|
|
p.setGameMode(GameMode.ADVENTURE); |
|
|
|
} |
|
|
|
} |
|
|
|
if (isState(FState.STARTING)) { |
|
|
|
for (Player p : players) { |
|
|
|
for (final Player p : players) |
|
|
|
updateSB(p); |
|
|
|
} |
|
|
|
if (starting == 240 || starting == 180 || starting == 120) { |
|
|
|
for (Player p : players) { |
|
|
|
if (starting == 240 || starting == 180 || starting == 120) |
|
|
|
for (final Player p : players) { |
|
|
|
p.sendMessage(plugin.getLang().get(p, "messages.starting") |
|
|
|
.replaceAll("<time>", String.valueOf(starting / 60)) |
|
|
|
.replaceAll("<units>", plugin.getLang().get(p, "units.minutes"))); |
|
|
@ -401,9 +378,8 @@ public class GameFour { |
|
|
|
1.0f); |
|
|
|
plugin.getTM().sendStartTitle(p, starting, true); |
|
|
|
} |
|
|
|
} |
|
|
|
if (starting == 60) { |
|
|
|
for (Player p : players) { |
|
|
|
if (starting == 60) |
|
|
|
for (final Player p : players) { |
|
|
|
p.sendMessage(plugin.getLang().get(p, "messages.starting") |
|
|
|
.replaceAll("<time>", String.valueOf(starting / 60)) |
|
|
|
.replaceAll("<units>", plugin.getLang().get(p, "units.minute"))); |
|
|
@ -411,37 +387,34 @@ public class GameFour { |
|
|
|
1.0f); |
|
|
|
plugin.getTM().sendStartTitle(p, starting, true); |
|
|
|
} |
|
|
|
} |
|
|
|
if (starting == 30 || starting == 15 || starting == 10 || starting == 5 || starting == 4 || starting == 3 |
|
|
|
|| starting == 2) { |
|
|
|
for (Player p : players) { |
|
|
|
|| starting == 2) |
|
|
|
for (final Player p : players) { |
|
|
|
p.sendMessage( |
|
|
|
plugin.getLang().get(p, "messages.starting").replaceAll("<time>", String.valueOf(starting)) |
|
|
|
.replaceAll("<units>", plugin.getLang().get(p, "units.seconds"))); |
|
|
|
.replaceAll("<units>", plugin.getLang().get(p, "units.seconds"))); |
|
|
|
p.playSound(p.getLocation(), Sound.valueOf(plugin.getSounds().get("sounds.game.starting")), 1.0f, |
|
|
|
1.0f); |
|
|
|
plugin.getTM().sendStartTitle(p, starting, true); |
|
|
|
} |
|
|
|
} |
|
|
|
if (starting == 1) { |
|
|
|
setState(FState.PREGAME); |
|
|
|
updateSign(); |
|
|
|
for (Player p : players) { |
|
|
|
for (final Player p : players) { |
|
|
|
p.sendMessage( |
|
|
|
plugin.getLang().get(p, "messages.starting").replaceAll("<time>", String.valueOf(starting)) |
|
|
|
.replaceAll("<units>", plugin.getLang().get(p, "units.second"))); |
|
|
|
.replaceAll("<units>", plugin.getLang().get(p, "units.second"))); |
|
|
|
p.playSound(p.getLocation(), Sound.valueOf(plugin.getSounds().get("sounds.game.starting")), 1.0f, |
|
|
|
1.0f); |
|
|
|
p.getInventory().clear(); |
|
|
|
p.getOpenInventory().close(); |
|
|
|
plugin.getTM().sendStartTitle(p, starting, false); |
|
|
|
if (getTeamPlayer(p) == null) { |
|
|
|
if (getTeamPlayer(p) == null) |
|
|
|
addRandomTeam(p); |
|
|
|
} |
|
|
|
} |
|
|
|
if (plugin.isCage()) { |
|
|
|
for (TeamFour team : teams.values()) { |
|
|
|
if (!team.isCage()) { |
|
|
|
for (final TeamFour team : teams.values()) |
|
|
|
if (!team.isCage()) |
|
|
|
if (team.getTeamPlayers().size() > 0 && team.getTeamPlayers().get(0) != null) { |
|
|
|
team.createCage(plugin.getCM().getCageByName( |
|
|
|
PlayerStat.getPlayerStat(team.getTeamPlayers().get(0)).getCage())); |
|
|
@ -451,47 +424,39 @@ public class GameFour { |
|
|
|
plugin.getCM().getCageByName(plugin.getConfig().getString("defaultCage"))); |
|
|
|
team.setCage(true); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} else { |
|
|
|
for (ChatColor color : teams.keySet()) { |
|
|
|
} else |
|
|
|
for (final ChatColor color : teams.keySet()) |
|
|
|
plugin.getGLM().createCage(teams.get(color).getTeamSpawn(), color); |
|
|
|
} |
|
|
|
} |
|
|
|
for (Player p : players) { |
|
|
|
for (final Player p : players) { |
|
|
|
p.teleport(getTeamPlayer(p).getTeamSpawn().clone().add(0, 1, 0)); |
|
|
|
giveKit(p, getTeamPlayer(p)); |
|
|
|
} |
|
|
|
Location hRed = teams.get(ChatColor.RED).getHologram(); |
|
|
|
Location hBlue = teams.get(ChatColor.BLUE).getHologram(); |
|
|
|
Location hGreen = teams.get(ChatColor.GREEN).getHologram(); |
|
|
|
Location hYellow = teams.get(ChatColor.YELLOW).getHologram(); |
|
|
|
final Location hRed = teams.get(ChatColor.RED).getHologram(); |
|
|
|
final Location hBlue = teams.get(ChatColor.BLUE).getHologram(); |
|
|
|
final Location hGreen = teams.get(ChatColor.GREEN).getHologram(); |
|
|
|
final Location hYellow = teams.get(ChatColor.YELLOW).getHologram(); |
|
|
|
if (hRed != null && hBlue != null && hGreen != null && hYellow != null) { |
|
|
|
for (Player p : teams.get(ChatColor.RED).getTeamPlayers()) { |
|
|
|
ArrayList<String> pRed = new ArrayList<String>(); |
|
|
|
TruenoHologram phRed = TruenoHologramAPI.getNewHologram(); |
|
|
|
for (String portal : plugin.getLang().getList("holograms.portal.you")) { |
|
|
|
for (final Player p : teams.get(ChatColor.RED).getTeamPlayers()) { |
|
|
|
final ArrayList<String> pRed = new ArrayList<>(); |
|
|
|
final TruenoHologram phRed = TruenoHologramAPI.getNewHologram(); |
|
|
|
for (final String portal : plugin.getLang().getList("holograms.portal.you")) |
|
|
|
pRed.add(portal.replaceAll("&", "§").replaceAll("<color>", "" + ChatColor.RED) |
|
|
|
.replaceAll("<team>", plugin.getLang().get("holograms.your"))); |
|
|
|
} |
|
|
|
ArrayList<String> pBlue = new ArrayList<String>(); |
|
|
|
TruenoHologram phBlue = TruenoHologramAPI.getNewHologram(); |
|
|
|
for (String portal : plugin.getLang().getList("holograms.portal.enemy")) { |
|
|
|
final ArrayList<String> pBlue = new ArrayList<>(); |
|
|
|
final TruenoHologram phBlue = TruenoHologramAPI.getNewHologram(); |
|
|
|
for (final String portal : plugin.getLang().getList("holograms.portal.enemy")) |
|
|
|
pBlue.add(portal.replaceAll("&", "§").replaceAll("<color>", "" + ChatColor.BLUE) |
|
|
|
.replaceAll("<team>", teams.get(ChatColor.BLUE).getTeamName())); |
|
|
|
} |
|
|
|
ArrayList<String> pGreen = new ArrayList<String>(); |
|
|
|
TruenoHologram phGreen = TruenoHologramAPI.getNewHologram(); |
|
|
|
for (String portal : plugin.getLang().getList("holograms.portal.enemy")) { |
|
|
|
final ArrayList<String> pGreen = new ArrayList<>(); |
|
|
|
final TruenoHologram phGreen = TruenoHologramAPI.getNewHologram(); |
|
|
|
for (final String portal : plugin.getLang().getList("holograms.portal.enemy")) |
|
|
|
pGreen.add(portal.replaceAll("&", "§").replaceAll("<color>", "" + ChatColor.GREEN) |
|
|
|
.replaceAll("<team>", teams.get(ChatColor.GREEN).getTeamName())); |
|
|
|
} |
|
|
|
ArrayList<String> pYellow = new ArrayList<String>(); |
|
|
|
TruenoHologram phYellow = TruenoHologramAPI.getNewHologram(); |
|
|
|
for (String portal : plugin.getLang().getList("holograms.portal.enemy")) { |
|
|
|
final ArrayList<String> pYellow = new ArrayList<>(); |
|
|
|
final TruenoHologram phYellow = TruenoHologramAPI.getNewHologram(); |
|
|
|
for (final String portal : plugin.getLang().getList("holograms.portal.enemy")) |
|
|
|
pYellow.add(portal.replaceAll("&", "§").replaceAll("<color>", "" + ChatColor.YELLOW) |
|
|
|
.replaceAll("<team>", teams.get(ChatColor.YELLOW).getTeamName())); |
|
|
|
} |
|
|
|
phBlue.setupPlayerHologram(p, hBlue, pBlue); |
|
|
|
phBlue.display(); |
|
|
|
phRed.setupPlayerHologram(p, hRed, pRed); |
|
|
@ -505,31 +470,27 @@ public class GameFour { |
|
|
|
holograms.add(phGreen); |
|
|
|
holograms.add(phYellow); |
|
|
|
} |
|
|
|
for (Player p : teams.get(ChatColor.BLUE).getTeamPlayers()) { |
|
|
|
ArrayList<String> pRed = new ArrayList<String>(); |
|
|
|
TruenoHologram phRed = TruenoHologramAPI.getNewHologram(); |
|
|
|
for (String portal : plugin.getLang().getList("holograms.portal.enemy")) { |
|
|
|
for (final Player p : teams.get(ChatColor.BLUE).getTeamPlayers()) { |
|
|
|
final ArrayList<String> pRed = new ArrayList<>(); |
|
|
|
final TruenoHologram phRed = TruenoHologramAPI.getNewHologram(); |
|
|
|
for (final String portal : plugin.getLang().getList("holograms.portal.enemy")) |
|
|
|
pRed.add(portal.replaceAll("&", "§").replaceAll("<color>", "" + ChatColor.RED) |
|
|
|
.replaceAll("<team>", teams.get(ChatColor.RED).getTeamName())); |
|
|
|
} |
|
|
|
ArrayList<String> pBlue = new ArrayList<String>(); |
|
|
|
TruenoHologram phBlue = TruenoHologramAPI.getNewHologram(); |
|
|
|
for (String portal : plugin.getLang().getList("holograms.portal.you")) { |
|
|
|
final ArrayList<String> pBlue = new ArrayList<>(); |
|
|
|
final TruenoHologram phBlue = TruenoHologramAPI.getNewHologram(); |
|
|
|
for (final String portal : plugin.getLang().getList("holograms.portal.you")) |
|
|
|
pBlue.add(portal.replaceAll("&", "§").replaceAll("<color>", "" + ChatColor.BLUE) |
|
|
|
.replaceAll("<team>", plugin.getLang().get("holograms.your"))); |
|
|
|
} |
|
|
|
ArrayList<String> pGreen = new ArrayList<String>(); |
|
|
|
TruenoHologram phGreen = TruenoHologramAPI.getNewHologram(); |
|
|
|
for (String portal : plugin.getLang().getList("holograms.portal.enemy")) { |
|
|
|
final ArrayList<String> pGreen = new ArrayList<>(); |
|
|
|
final TruenoHologram phGreen = TruenoHologramAPI.getNewHologram(); |
|
|
|
for (final String portal : plugin.getLang().getList("holograms.portal.enemy")) |
|
|
|
pGreen.add(portal.replaceAll("&", "§").replaceAll("<color>", "" + ChatColor.GREEN) |
|
|
|
.replaceAll("<team>", teams.get(ChatColor.GREEN).getTeamName())); |
|
|
|
} |
|
|
|
ArrayList<String> pYellow = new ArrayList<String>(); |
|
|
|
TruenoHologram phYellow = TruenoHologramAPI.getNewHologram(); |
|
|
|
for (String portal : plugin.getLang().getList("holograms.portal.enemy")) { |
|
|
|
final ArrayList<String> pYellow = new ArrayList<>(); |
|
|
|
final TruenoHologram phYellow = TruenoHologramAPI.getNewHologram(); |
|
|
|
for (final String portal : plugin.getLang().getList("holograms.portal.enemy")) |
|
|
|
pYellow.add(portal.replaceAll("&", "§").replaceAll("<color>", "" + ChatColor.YELLOW) |
|
|
|
.replaceAll("<team>", teams.get(ChatColor.YELLOW).getTeamName())); |
|
|
|
} |
|
|
|
phBlue.setupPlayerHologram(p, hBlue, pBlue); |
|
|
|
phBlue.display(); |
|
|
|
phRed.setupPlayerHologram(p, hRed, pRed); |
|
|
@ -543,31 +504,27 @@ public class GameFour { |
|
|
|
holograms.add(phGreen); |
|
|
|
holograms.add(phYellow); |
|
|
|
} |
|
|
|
for (Player p : teams.get(ChatColor.GREEN).getTeamPlayers()) { |
|
|
|
ArrayList<String> pRed = new ArrayList<String>(); |
|
|
|
TruenoHologram phRed = TruenoHologramAPI.getNewHologram(); |
|
|
|
for (String portal : plugin.getLang().getList("holograms.portal.enemy")) { |
|
|
|
for (final Player p : teams.get(ChatColor.GREEN).getTeamPlayers()) { |
|
|
|
final ArrayList<String> pRed = new ArrayList<>(); |
|
|
|
final TruenoHologram phRed = TruenoHologramAPI.getNewHologram(); |
|
|
|
for (final String portal : plugin.getLang().getList("holograms.portal.enemy")) |
|
|
|
pRed.add(portal.replaceAll("&", "§").replaceAll("<color>", "" + ChatColor.RED) |
|
|
|
.replaceAll("<team>", teams.get(ChatColor.RED).getTeamName())); |
|
|
|
} |
|
|
|
ArrayList<String> pBlue = new ArrayList<String>(); |
|
|
|
TruenoHologram phBlue = TruenoHologramAPI.getNewHologram(); |
|
|
|
for (String portal : plugin.getLang().getList("holograms.portal.enemy")) { |
|
|
|
final ArrayList<String> pBlue = new ArrayList<>(); |
|
|
|
final TruenoHologram phBlue = TruenoHologramAPI.getNewHologram(); |
|
|
|
for (final String portal : plugin.getLang().getList("holograms.portal.enemy")) |
|
|
|
pBlue.add(portal.replaceAll("&", "§").replaceAll("<color>", "" + ChatColor.BLUE) |
|
|
|
.replaceAll("<team>", teams.get(ChatColor.BLUE).getTeamName())); |
|
|
|
} |
|
|
|
ArrayList<String> pGreen = new ArrayList<String>(); |
|
|
|
TruenoHologram phGreen = TruenoHologramAPI.getNewHologram(); |
|
|
|
for (String portal : plugin.getLang().getList("holograms.portal.you")) { |
|
|
|
final ArrayList<String> pGreen = new ArrayList<>(); |
|
|
|
final TruenoHologram phGreen = TruenoHologramAPI.getNewHologram(); |
|
|
|
for (final String portal : plugin.getLang().getList("holograms.portal.you")) |
|
|
|
pGreen.add(portal.replaceAll("&", "§").replaceAll("<color>", "" + ChatColor.GREEN) |
|
|
|
.replaceAll("<team>", plugin.getLang().get("holograms.your"))); |
|
|
|
} |
|
|
|
ArrayList<String> pYellow = new ArrayList<String>(); |
|
|
|
TruenoHologram phYellow = TruenoHologramAPI.getNewHologram(); |
|
|
|
for (String portal : plugin.getLang().getList("holograms.portal.enemy")) { |
|
|
|
final ArrayList<String> pYellow = new ArrayList<>(); |
|
|
|
final TruenoHologram phYellow = TruenoHologramAPI.getNewHologram(); |
|
|
|
for (final String portal : plugin.getLang().getList("holograms.portal.enemy")) |
|
|
|
pYellow.add(portal.replaceAll("&", "§").replaceAll("<color>", "" + ChatColor.YELLOW) |
|
|
|
.replaceAll("<team>", teams.get(ChatColor.YELLOW).getTeamName())); |
|
|
|
} |
|
|
|
phBlue.setupPlayerHologram(p, hBlue, pBlue); |
|
|
|
phBlue.display(); |
|
|
|
phRed.setupPlayerHologram(p, hRed, pRed); |
|
|
@ -581,31 +538,27 @@ public class GameFour { |
|
|
|
holograms.add(phGreen); |
|
|
|
holograms.add(phYellow); |
|
|
|
} |
|
|
|
for (Player p : teams.get(ChatColor.YELLOW).getTeamPlayers()) { |
|
|
|
ArrayList<String> pRed = new ArrayList<String>(); |
|
|
|
TruenoHologram phRed = TruenoHologramAPI.getNewHologram(); |
|
|
|
for (String portal : plugin.getLang().getList("holograms.portal.enemy")) { |
|
|
|
for (final Player p : teams.get(ChatColor.YELLOW).getTeamPlayers()) { |
|
|
|
final ArrayList<String> pRed = new ArrayList<>(); |
|
|
|
final TruenoHologram phRed = TruenoHologramAPI.getNewHologram(); |
|
|
|
for (final String portal : plugin.getLang().getList("holograms.portal.enemy")) |
|
|
|
pRed.add(portal.replaceAll("&", "§").replaceAll("<color>", "" + ChatColor.RED) |
|
|
|
.replaceAll("<team>", teams.get(ChatColor.RED).getTeamName())); |
|
|
|
} |
|
|
|
ArrayList<String> pBlue = new ArrayList<String>(); |
|
|
|
TruenoHologram phBlue = TruenoHologramAPI.getNewHologram(); |
|
|
|
for (String portal : plugin.getLang().getList("holograms.portal.enemy")) { |
|
|
|
final ArrayList<String> pBlue = new ArrayList<>(); |
|
|
|
final TruenoHologram phBlue = TruenoHologramAPI.getNewHologram(); |
|
|
|
for (final String portal : plugin.getLang().getList("holograms.portal.enemy")) |
|
|
|
pBlue.add(portal.replaceAll("&", "§").replaceAll("<color>", "" + ChatColor.BLUE) |
|
|
|
.replaceAll("<team>", teams.get(ChatColor.BLUE).getTeamName())); |
|
|
|
} |
|
|
|
ArrayList<String> pGreen = new ArrayList<String>(); |
|
|
|
TruenoHologram phGreen = TruenoHologramAPI.getNewHologram(); |
|
|
|
for (String portal : plugin.getLang().getList("holograms.portal.enemy")) { |
|
|
|
final ArrayList<String> pGreen = new ArrayList<>(); |
|
|
|
final TruenoHologram phGreen = TruenoHologramAPI.getNewHologram(); |
|
|
|
for (final String portal : plugin.getLang().getList("holograms.portal.enemy")) |
|
|
|
pGreen.add(portal.replaceAll("&", "§").replaceAll("<color>", "" + ChatColor.GREEN) |
|
|
|
.replaceAll("<team>", teams.get(ChatColor.GREEN).getTeamName())); |
|
|
|
} |
|
|
|
ArrayList<String> pYellow = new ArrayList<String>(); |
|
|
|
TruenoHologram phYellow = TruenoHologramAPI.getNewHologram(); |
|
|
|
for (String portal : plugin.getLang().getList("holograms.portal.you")) { |
|
|
|
final ArrayList<String> pYellow = new ArrayList<>(); |
|
|
|
final TruenoHologram phYellow = TruenoHologramAPI.getNewHologram(); |
|
|
|
for (final String portal : plugin.getLang().getList("holograms.portal.you")) |
|
|
|
pYellow.add(portal.replaceAll("&", "§").replaceAll("<color>", "" + ChatColor.YELLOW) |
|
|
|
.replaceAll("<team>", plugin.getLang().get("holograms.your"))); |
|
|
|
} |
|
|
|
phBlue.setupPlayerHologram(p, hBlue, pBlue); |
|
|
|
phBlue.display(); |
|
|
|
phRed.setupPlayerHologram(p, hRed, pRed); |
|
|
@ -628,50 +581,42 @@ public class GameFour { |
|
|
|
starting--; |
|
|
|
} |
|
|
|
if (isState(FState.PREGAME)) { |
|
|
|
for (Player p : players) { |
|
|
|
for (final Player p : players) |
|
|
|
updateSB(p); |
|
|
|
} |
|
|
|
if (prestart == 10 || prestart == 5 || prestart == 4 || prestart == 3 || prestart == 2) { |
|
|
|
for (Player p : players) { |
|
|
|
if (prestart == 10 || prestart == 5 || prestart == 4 || prestart == 3 || prestart == 2) |
|
|
|
for (final Player p : players) { |
|
|
|
p.sendMessage( |
|
|
|
plugin.getLang().get(p, "messages.prestart").replaceAll("<time>", String.valueOf(prestart)) |
|
|
|
.replaceAll("<units>", plugin.getLang().get(p, "units.seconds"))); |
|
|
|
.replaceAll("<units>", plugin.getLang().get(p, "units.seconds"))); |
|
|
|
p.playSound(p.getLocation(), Sound.valueOf(plugin.getSounds().get("sounds.game.prestart")), 1.0f, |
|
|
|
1.0f); |
|
|
|
plugin.getTM().sendPreTitle(p, prestart, true); |
|
|
|
} |
|
|
|
} |
|
|
|
if (prestart == 1) { |
|
|
|
for (Player p : players) { |
|
|
|
if (prestart == 1) |
|
|
|
for (final Player p : players) { |
|
|
|
p.sendMessage( |
|
|
|
plugin.getLang().get(p, "messages.prestart").replaceAll("<time>", String.valueOf(prestart)) |
|
|
|
.replaceAll("<units>", plugin.getLang().get(p, "units.second"))); |
|
|
|
.replaceAll("<units>", plugin.getLang().get(p, "units.second"))); |
|
|
|
p.playSound(p.getLocation(), Sound.valueOf(plugin.getSounds().get("sounds.game.prestart")), 1.0f, |
|
|
|
1.0f); |
|
|
|
plugin.getTM().sendPreTitle(p, prestart, false); |
|
|
|
for (String msg : plugin.getLang().getList("messages.startFour")) { |
|
|
|
for (final String msg : plugin.getLang().getList("messages.startFour")) |
|
|
|
CenterMessage.sendCenteredMessage(p, msg.replaceAll("&", "§").replaceAll("<heart>", "❤")); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
if (prestart == 0) { |
|
|
|
setState(FState.INGAME); |
|
|
|
updateSign(); |
|
|
|
for (Player p : players) { |
|
|
|
for (final Player p : players) |
|
|
|
p.setGameMode(GameMode.SURVIVAL); |
|
|
|
} |
|
|
|
if (plugin.isCage()) { |
|
|
|
for (TeamFour team : teams.values()) { |
|
|
|
for (final TeamFour team : teams.values()) |
|
|
|
if (team.isCage()) { |
|
|
|
team.removeCage(); |
|
|
|
team.setCage(false); |
|
|
|
} |
|
|
|
} |
|
|
|
} else { |
|
|
|
for (ChatColor color : teams.keySet()) { |
|
|
|
} else |
|
|
|
for (final ChatColor color : teams.keySet()) |
|
|
|
plugin.getGLM().removeGlass(teams.get(color).getTeamSpawn()); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
prestart--; |
|
|
|
} |
|
|
@ -683,10 +628,10 @@ public class GameFour { |
|
|
|
} |
|
|
|
|
|
|
|
public void addRandomTeam(Player p) { |
|
|
|
TeamFour red = teams.get(ChatColor.RED); |
|
|
|
TeamFour blue = teams.get(ChatColor.BLUE); |
|
|
|
TeamFour green = teams.get(ChatColor.GREEN); |
|
|
|
TeamFour yellow = teams.get(ChatColor.YELLOW); |
|
|
|
final TeamFour red = teams.get(ChatColor.RED); |
|
|
|
final TeamFour blue = teams.get(ChatColor.BLUE); |
|
|
|
final TeamFour green = teams.get(ChatColor.GREEN); |
|
|
|
final TeamFour yellow = teams.get(ChatColor.YELLOW); |
|
|
|
if (red.getTeamSize() <= blue.getTeamSize() && red.getTeamSize() <= green.getTeamSize() |
|
|
|
&& red.getTeamSize() <= yellow.getTeamSize()) { |
|
|
|
red.addPlayer(p); |
|
|
@ -746,9 +691,8 @@ public class GameFour { |
|
|
|
} |
|
|
|
|
|
|
|
public boolean isState(FState state) { |
|
|
|
if (this.state == state) { |
|
|
|
if (this.state == state) |
|
|
|
return true; |
|
|
|
} |
|
|
|
return false; |
|
|
|
} |
|
|
|
|
|
|
@ -776,33 +720,28 @@ public class GameFour { |
|
|
|
|
|
|
|
public int getTeamsAlive() { |
|
|
|
int cantidad = 0; |
|
|
|
for (TeamFour team : teams.values()) { |
|
|
|
for (final TeamFour team : teams.values()) { |
|
|
|
if (team.getTeamSize() == 0) { |
|
|
|
team.setDeath(true); |
|
|
|
continue; |
|
|
|
} |
|
|
|
if (!team.getDeath() || team.getTeamSize() > 0) { |
|
|
|
if (!team.getDeath() || team.getTeamSize() > 0) |
|
|
|
cantidad++; |
|
|
|
} |
|
|
|
} |
|
|
|
return cantidad; |
|
|
|
} |
|
|
|
|
|
|
|
public TeamFour getLastTeam() { |
|
|
|
for (TeamFour team : teams.values()) { |
|
|
|
if (team.getTeamSize() > 0) { |
|
|
|
for (final TeamFour team : teams.values()) |
|
|
|
if (team.getTeamSize() > 0) |
|
|
|
return team; |
|
|
|
} |
|
|
|
} |
|
|
|
return null; |
|
|
|
} |
|
|
|
|
|
|
|
public void removeAllPlayerTeam(Player p) { |
|
|
|
for (TeamFour t : teams.values()) { |
|
|
|
if (t.getTeamPlayers().contains(p)) { |
|
|
|
for (final TeamFour t : teams.values()) |
|
|
|
if (t.getTeamPlayers().contains(p)) |
|
|
|
t.removePlayer(p); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
public ArrayList<Player> getPlayers() { |
|
|
@ -817,12 +756,10 @@ public class GameFour { |
|
|
|
Utils.setCleanPlayer(p); |
|
|
|
removeAllPlayerTeam(p); |
|
|
|
spects.add(p); |
|
|
|
for (Player on : players) { |
|
|
|
for (final Player on : players) |
|
|
|
on.hidePlayer(p); |
|
|
|
} |
|
|
|
for (Player on : spects) { |
|
|
|
for (final Player on : spects) |
|
|
|
on.hidePlayer(p); |
|
|
|
} |
|
|
|
new BukkitRunnable() { |
|
|
|
@Override |
|
|
|
public void run() { |
|
|
@ -832,11 +769,11 @@ public class GameFour { |
|
|
|
} |
|
|
|
|
|
|
|
public void giveSpectItems(Player p) { |
|
|
|
ItemStack team = ItemBuilder.item(Material.COMPASS, 1, (short) 0, |
|
|
|
final ItemStack team = ItemBuilder.item(Material.COMPASS, 1, (short) 0, |
|
|
|
plugin.getLang().get("items.spectate.nameItem"), plugin.getLang().get("items.spectate.loreItem")); |
|
|
|
ItemStack option = ItemBuilder.item(Material.REDSTONE_COMPARATOR, 1, (short) 0, |
|
|
|
final ItemStack option = ItemBuilder.item(Material.REDSTONE_COMPARATOR, 1, (short) 0, |
|
|
|
plugin.getLang().get("items.config.nameItem"), plugin.getLang().get("items.config.loreItem")); |
|
|
|
ItemStack leave = ItemBuilder.item(Material.BED, 1, (short) 0, plugin.getLang().get("items.leave.nameItem"), |
|
|
|
final ItemStack leave = ItemBuilder.item(Material.BED, 1, (short) 0, plugin.getLang().get("items.leave.nameItem"), |
|
|
|
plugin.getLang().get("items.leave.loreItem")); |
|
|
|
p.getInventory().setItem(0, team); |
|
|
|
p.getInventory().setItem(4, option); |
|
|
@ -844,55 +781,55 @@ public class GameFour { |
|
|
|
} |
|
|
|
|
|
|
|
public void givePlayerItems(Player p) { |
|
|
|
ItemStack team = ItemBuilder.item(Material.PAPER, 1, (short) 0, plugin.getLang().get("items.teams.nameItem"), |
|
|
|
final ItemStack team = ItemBuilder.item(Material.PAPER, 1, (short) 0, plugin.getLang().get("items.teams.nameItem"), |
|
|
|
plugin.getLang().get("items.teams.loreItem")); |
|
|
|
ItemStack leave = ItemBuilder.item(Material.BED, 1, (short) 0, plugin.getLang().get("items.leave.nameItem"), |
|
|
|
final ItemStack leave = ItemBuilder.item(Material.BED, 1, (short) 0, plugin.getLang().get("items.leave.nameItem"), |
|
|
|
plugin.getLang().get("items.leave.loreItem")); |
|
|
|
p.getInventory().setItem(0, team); |
|
|
|
p.getInventory().setItem(8, leave); |
|
|
|
} |
|
|
|
|
|
|
|
public void giveKit(Player p, TeamFour team) { |
|
|
|
ItemStack peche = new ItemStack(Material.LEATHER_CHESTPLATE, 1); |
|
|
|
LeatherArmorMeta pecheM = (LeatherArmorMeta) peche.getItemMeta(); |
|
|
|
final ItemStack peche = new ItemStack(Material.LEATHER_CHESTPLATE, 1); |
|
|
|
final LeatherArmorMeta pecheM = (LeatherArmorMeta) peche.getItemMeta(); |
|
|
|
pecheM.setColor(team.getFColor()); |
|
|
|
peche.setItemMeta(pecheM); |
|
|
|
ItemStack panta = new ItemStack(Material.LEATHER_LEGGINGS, 1); |
|
|
|
LeatherArmorMeta pantaM = (LeatherArmorMeta) panta.getItemMeta(); |
|
|
|
final ItemStack panta = new ItemStack(Material.LEATHER_LEGGINGS, 1); |
|
|
|
final LeatherArmorMeta pantaM = (LeatherArmorMeta) panta.getItemMeta(); |
|
|
|
pantaM.setColor(team.getFColor()); |
|
|
|
panta.setItemMeta(pantaM); |
|
|
|
ItemStack boots = new ItemStack(Material.LEATHER_BOOTS, 1); |
|
|
|
LeatherArmorMeta bootsM = (LeatherArmorMeta) boots.getItemMeta(); |
|
|
|
final ItemStack boots = new ItemStack(Material.LEATHER_BOOTS, 1); |
|
|
|
final LeatherArmorMeta bootsM = (LeatherArmorMeta) boots.getItemMeta(); |
|
|
|
bootsM.setColor(team.getFColor()); |
|
|
|
boots.setItemMeta(bootsM); |
|
|
|
p.getInventory().setChestplate(peche); |
|
|
|
p.getInventory().setLeggings(panta); |
|
|
|
p.getInventory().setBoots(boots); |
|
|
|
if (PlayerStat.getPlayerStat(p).getHotbar() == null) { |
|
|
|
ItemStack[] items = plugin.getGM().getKit().getContents(); |
|
|
|
final ItemStack[] items = plugin.getGM().getKit().getContents(); |
|
|
|
for (int slot = 0; slot < 35; slot++) { |
|
|
|
ItemStack item = items[slot]; |
|
|
|
final ItemStack item = items[slot]; |
|
|
|
if (item == null || item.getType() == Material.BARRIER) { |
|
|
|
p.getInventory().setItem(slot, new ItemStack(Material.AIR)); |
|
|
|
continue; |
|
|
|
} |
|
|
|
if (item.getType().equals(Material.STAINED_CLAY)) { |
|
|
|
ItemStack item2 = new ItemStack(item.getType(), item.getAmount(), getColor(team.getFColor())); |
|
|
|
final ItemStack item2 = new ItemStack(item.getType(), item.getAmount(), getColor(team.getFColor())); |
|
|
|
p.getInventory().setItem(slot, item2); |
|
|
|
continue; |
|
|
|
} |
|
|
|
p.getInventory().setItem(slot, item); |
|
|
|
} |
|
|
|
} else { |
|
|
|
ItemStack[] items = PlayerStat.getPlayerStat(p).getHotbar(); |
|
|
|
final ItemStack[] items = PlayerStat.getPlayerStat(p).getHotbar(); |
|
|
|
for (int slot = 0; slot < 35; slot++) { |
|
|
|
ItemStack item = items[slot]; |
|
|
|
final ItemStack item = items[slot]; |
|
|
|
if (item == null || item.getType() == Material.BARRIER) { |
|
|
|
p.getInventory().setItem(slot, new ItemStack(Material.AIR)); |
|
|
|
continue; |
|
|
|
} |
|
|
|
if (item.getType().equals(Material.STAINED_CLAY)) { |
|
|
|
ItemStack item2 = new ItemStack(item.getType(), item.getAmount(), getColor(team.getFColor())); |
|
|
|
final ItemStack item2 = new ItemStack(item.getType(), item.getAmount(), getColor(team.getFColor())); |
|
|
|
p.getInventory().setItem(slot, item2); |
|
|
|
continue; |
|
|
|
} |
|
|
@ -910,18 +847,14 @@ public class GameFour { |
|
|
|
} |
|
|
|
|
|
|
|
public byte getColor(Color color) { |
|
|
|
if (color.equals(Color.RED)) { |
|
|
|
if (color.equals(Color.RED)) |
|
|
|
return 14; |
|
|
|
} |
|
|
|
if (color.equals(Color.BLUE)) { |
|
|
|
if (color.equals(Color.BLUE)) |
|
|
|
return 11; |
|
|
|
} |
|
|
|
if (color.equals(Color.YELLOW)) { |
|
|
|
if (color.equals(Color.YELLOW)) |
|
|
|
return 4; |
|
|
|
} |
|
|
|
if (color.equals(Color.GREEN)) { |
|
|
|
if (color.equals(Color.GREEN)) |
|
|
|
return 5; |
|
|
|
} |
|
|
|
return 0; |
|
|
|
} |
|
|
|
|
|
|
|