pintux98
6 years ago
18 changed files with 1180 additions and 1002 deletions
@ -1,753 +1,5 @@ |
|||
package cx.sfy.TheBridge.game; |
|||
|
|||
import java.text.DecimalFormat; |
|||
import java.util.ArrayList; |
|||
import java.util.HashMap; |
|||
import java.util.Random; |
|||
|
|||
import org.bukkit.ChatColor; |
|||
import org.bukkit.Color; |
|||
import org.bukkit.FireworkEffect; |
|||
import org.bukkit.GameMode; |
|||
import org.bukkit.Location; |
|||
import org.bukkit.Material; |
|||
import org.bukkit.Sound; |
|||
import org.bukkit.entity.Firework; |
|||
import org.bukkit.entity.Player; |
|||
import org.bukkit.inventory.ItemStack; |
|||
import org.bukkit.inventory.meta.FireworkMeta; |
|||
import org.bukkit.inventory.meta.ItemMeta; |
|||
import org.bukkit.inventory.meta.LeatherArmorMeta; |
|||
import org.bukkit.scheduler.BukkitRunnable; |
|||
import org.bukkit.scheduler.BukkitTask; |
|||
|
|||
import cx.sfy.TheBridge.Main; |
|||
import cx.sfy.TheBridge.database.PlayerStat; |
|||
import cx.sfy.TheBridge.hologram.TruenoHologram; |
|||
import cx.sfy.TheBridge.hologram.TruenoHologramAPI; |
|||
import cx.sfy.TheBridge.team.Team; |
|||
import cx.sfy.TheBridge.utils.CenterMessage; |
|||
import cx.sfy.TheBridge.utils.ItemBuilder; |
|||
import cx.sfy.TheBridge.utils.Utils; |
|||
|
|||
public class Game { |
|||
|
|||
private final Main plugin; |
|||
private final HashMap<ChatColor, Team> teams; |
|||
private final HashMap<Player, ChatColor> teamPlayer; |
|||
private final ArrayList<Player> players; |
|||
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<TruenoHologram> holograms = new ArrayList<>(); |
|||
private final ArrayList<Location> build = new ArrayList<>(); |
|||
private final ArrayList<Location> placed = new ArrayList<>(); |
|||
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 int restart; |
|||
private final Location lobby; |
|||
private final Location spect; |
|||
private BukkitTask start; |
|||
private BukkitTask prestarts; |
|||
private State state; |
|||
int time = 0; |
|||
int tick = 0; |
|||
|
|||
public Game(Main plugin, String name, int min, int max, int teamSize, int starting, int prestart, int restart, |
|||
Location lobby, Location spect, Location buildMin, Location buildMax, Location spawnsRed, |
|||
Location spawnsBlue, ArrayList<Location> portalRed, ArrayList<Location> portalBlue, Location respawnsRed, |
|||
Location respawnsBlue, Location hRed, Location hBlue) { |
|||
this.plugin = plugin; |
|||
this.starting = starting; |
|||
this.prestart = prestart; |
|||
this.restart = restart; |
|||
this.max = max; |
|||
this.min = min; |
|||
this.teamSize = teamSize; |
|||
this.mode = teamSize + "v" + teamSize; |
|||
this.name = name; |
|||
this.lobby = lobby; |
|||
this.spect = spect; |
|||
this.teamPlayer = new HashMap<>(); |
|||
this.teams = new HashMap<>(); |
|||
this.players = new ArrayList<>(); |
|||
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) { |
|||
final Location location3 = new Location(buildMin.getWorld(), i, j, k); |
|||
build.add(location3); |
|||
} |
|||
this.teams.put(ChatColor.BLUE, new Team(plugin.getConfig().getString("names.blue"), ChatColor.BLUE, Color.BLUE, |
|||
respawnsBlue, spawnsBlue, portalBlue, hBlue)); |
|||
this.teams.put(ChatColor.RED, new Team(plugin.getConfig().getString("names.red"), ChatColor.RED, Color.RED, |
|||
respawnsRed, spawnsRed, portalRed, hRed)); |
|||
setState(State.WAITING); |
|||
updateSign(); |
|||
} |
|||
|
|||
public void checkCancel() { |
|||
if (isState(State.STARTING) && players.size() <= getMin()) { |
|||
if (start != null) |
|||
start.cancel(); |
|||
if (prestarts != null) |
|||
prestarts.cancel(); |
|||
setState(State.WAITING); |
|||
starting = 30; |
|||
updateSign(); |
|||
for (final Player on : players) |
|||
updateSB(on); |
|||
} |
|||
} |
|||
|
|||
public void updateSB(Player p) { |
|||
plugin.getSB().update(p); |
|||
} |
|||
|
|||
public void updateSign() { |
|||
plugin.getSIM().updateGameSign(this); |
|||
} |
|||
|
|||
public void addPlayer(Player p) { |
|||
pd.put(p, new PlayerData(p)); |
|||
Utils.setCleanPlayer(p); |
|||
players.add(p); |
|||
kills.put(p, 0); |
|||
goals.put(p, 0); |
|||
new BukkitRunnable() { |
|||
@Override |
|||
public void run() { |
|||
givePlayerItems(p); |
|||
} |
|||
}.runTaskLater(plugin, 20); |
|||
p.teleport(getLobby()); |
|||
updateSign(); |
|||
if (isState(State.WAITING) || isState(State.STARTING)) |
|||
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()))); |
|||
on.playSound(on.getLocation(), Sound.valueOf(plugin.getSounds().get("sounds.game.join")), 1.0f, 1.0f); |
|||
updateSB(on); |
|||
} |
|||
} |
|||
|
|||
public void removePlayer(Player p) { |
|||
Utils.setCleanPlayer(p); |
|||
pd.get(p).restore(); |
|||
removeAllPlayerTeam(p); |
|||
players.remove(p); |
|||
if (isState(State.WAITING) || isState(State.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 && players.size() >= 1) |
|||
checkWin(p, getLastTeam(), getLastTeam().getGoals()); |
|||
updateSign(); |
|||
checkCancel(); |
|||
} |
|||
|
|||
// FIXME: Not properly giving coins
|
|||
public boolean checkWin(Player w, Team team, int goals) { |
|||
if (isState(State.FINISH)) |
|||
return false; |
|||
final DecimalFormat df = new DecimalFormat("#.##"); |
|||
if (getTeamsAlive() <= 1 && players.size() >= 1) { |
|||
final Team win = getLastTeam(); |
|||
setState(State.FINISH); |
|||
firework(getSpect(), win.getFColor()); |
|||
for (final Player r : win.getTeamPlayers()) |
|||
PlayerStat.getPlayerStat(r).addNormalWins(); |
|||
for (final Player p : players) { |
|||
p.teleport(lobby); |
|||
updateSB(p); |
|||
plugin.getNMS().sendTitle(p, 0, 60, 0, |
|||
plugin.getLang().get("titles.win.title") |
|||
.replaceAll("<blueGoals>", String.valueOf(teams.get(ChatColor.BLUE).getGoals())) |
|||
.replaceAll("<redGoals>", String.valueOf(teams.get(ChatColor.RED).getGoals())) |
|||
.replaceAll("<team>", team.getTeamName()).replaceAll("<color>", team.getColor() + ""), |
|||
plugin.getLang().get("titles.win.subtitle") |
|||
.replaceAll("<blueGoals>", String.valueOf(teams.get(ChatColor.BLUE).getGoals())) |
|||
.replaceAll("<redGoals>", String.valueOf(teams.get(ChatColor.RED).getGoals())) |
|||
.replaceAll("<team>", team.getTeamName()).replaceAll("<color>", team.getColor() + "")); |
|||
for (final String msg : plugin.getLang().getList("messages.win")) |
|||
CenterMessage.sendCenteredMessage(p, |
|||
msg.replaceAll("&", "§").replaceAll("<player>", w.getName()) |
|||
.replaceAll("<blueGoals>", String.valueOf(teams.get(ChatColor.BLUE).getGoals())) |
|||
.replaceAll("<redGoals>", String.valueOf(teams.get(ChatColor.RED).getGoals())) |
|||
.replaceAll("<s>", getGoals(w) > 1 ? "es" : "") |
|||
.replaceAll("<goals>", String.valueOf(getGoals(w))) |
|||
.replaceAll("<health>", df.format(w.getHealth())).replaceAll("<heart>", "❤") |
|||
.replaceAll("<color>", "" + team.getColor()) |
|||
.replaceAll("<team>", win.getTeamName().toUpperCase())); |
|||
} |
|||
new BukkitRunnable() { |
|||
@Override |
|||
public void run() { |
|||
for (final TruenoHologram th : holograms) |
|||
th.delete(); |
|||
for (final Player p : spect.getWorld().getPlayers()) |
|||
if (pd.containsKey(p)) |
|||
plugin.getGM().removePlayerAllGames(p); |
|||
else |
|||
p.teleport(plugin.getMainLobby()); |
|||
} |
|||
}.runTaskLater(plugin, 20 * 10); |
|||
new BukkitRunnable() { |
|||
@Override |
|||
public void run() { |
|||
plugin.getGM().resetNormalGame(getName()); |
|||
} |
|||
}.runTaskLater(plugin, 20 * 12); |
|||
updateSign(); |
|||
return true; |
|||
} |
|||
if (team.getGoals() >= goals) { |
|||
setState(State.FINISH); |
|||
final Team win = getLastTeam(); |
|||
firework(getSpect(), team.getFColor()); |
|||
for (final Player r : win.getTeamPlayers()) |
|||
PlayerStat.getPlayerStat(r).addNormalWins(); |
|||
for (final Player p : players) { |
|||
p.teleport(lobby); |
|||
plugin.getNMS().sendTitle(p, 0, 60, 0, |
|||
plugin.getLang().get("titles.win.title") |
|||
.replaceAll("<blueGoals>", String.valueOf(teams.get(ChatColor.BLUE).getGoals())) |
|||
.replaceAll("<redGoals>", String.valueOf(teams.get(ChatColor.RED).getGoals())) |
|||
.replaceAll("<team>", team.getTeamName()).replaceAll("<color>", team.getColor() + ""), |
|||
plugin.getLang().get("titles.win.subtitle") |
|||
.replaceAll("<blueGoals>", String.valueOf(teams.get(ChatColor.BLUE).getGoals())) |
|||
.replaceAll("<redGoals>", String.valueOf(teams.get(ChatColor.RED).getGoals())) |
|||
.replaceAll("<team>", team.getTeamName()).replaceAll("<color>", team.getColor() + "")); |
|||
for (final String msg : plugin.getLang().getList("messages.win")) |
|||
CenterMessage.sendCenteredMessage(p, |
|||
msg.replaceAll("&", "§").replaceAll("<player>", w.getName()) |
|||
.replaceAll("<blueGoals>", String.valueOf(teams.get(ChatColor.BLUE).getGoals())) |
|||
.replaceAll("<redGoals>", String.valueOf(teams.get(ChatColor.RED).getGoals())) |
|||
.replaceAll("<s>", getGoals(w) > 1 ? "es" : "") |
|||
.replaceAll("<goals>", String.valueOf(getGoals(w))) |
|||
.replaceAll("<health>", df.format(w.getHealth())).replaceAll("<heart>", "❤") |
|||
.replaceAll("<color>", "" + team.getColor()) |
|||
.replaceAll("<team>", team.getTeamName().toUpperCase())); |
|||
} |
|||
new BukkitRunnable() { |
|||
@Override |
|||
public void run() { |
|||
for (final Player p : spect.getWorld().getPlayers()) |
|||
if (pd.containsKey(p)) |
|||
plugin.getGM().removePlayerAllGames(p); |
|||
else |
|||
p.teleport(plugin.getMainLobby()); |
|||
} |
|||
}.runTaskLater(plugin, 20 * 10); |
|||
new BukkitRunnable() { |
|||
@Override |
|||
public void run() { |
|||
plugin.getGM().resetNormalGame(getName()); |
|||
} |
|||
}.runTaskLater(plugin, 20 * 12); |
|||
updateSign(); |
|||
return true; |
|||
} |
|||
return false; |
|||
} |
|||
|
|||
public void celebrateGoal(Team team, Player e) { |
|||
restart = 5; |
|||
team.addGoal(); |
|||
addGoal(e); |
|||
PlayerStat.getPlayerStat(e).addNormalGoals(); |
|||
if (checkWin(e, team, 5)) |
|||
return; |
|||
firework(getSpect(), team.getFColor()); |
|||
if (plugin.isCage()) { |
|||
for (final Team te : teams.values()) |
|||
if (!te.isCage()) |
|||
if (te.getTeamPlayers().get(0) != null) { |
|||
te.createCage(plugin.getCM() |
|||
.getCageByName(PlayerStat.getPlayerStat(te.getTeamPlayers().get(0)).getCage())); |
|||
te.setCage(true); |
|||
} else { |
|||
te.createCage(plugin.getCM().getCageByName(plugin.getConfig().getString("defaultCage"))); |
|||
te.setCage(true); |
|||
} |
|||
} else |
|||
for (final ChatColor color : teams.keySet()) |
|||
plugin.getGLM().createCage(teams.get(color).getTeamSpawn(), color); |
|||
for (final Player p : players) { |
|||
p.teleport(getTeamPlayer(p).getTeamSpawn().clone().add(0, 1, 0)); |
|||
updateSB(p); |
|||
} |
|||
checkRestart(team, team.getColor(), e); |
|||
} |
|||
|
|||
public void firework(Location loc, Color c1) { |
|||
time = 0; |
|||
new BukkitRunnable() { |
|||
@Override |
|||
public void run() { |
|||
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); |
|||
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); |
|||
time++; |
|||
if (time == 10) |
|||
cancel(); |
|||
} |
|||
}.runTaskTimer(plugin, 0, 10); |
|||
} |
|||
|
|||
public void checkRestart(Team team, ChatColor color, Player e) { |
|||
final DecimalFormat df = new DecimalFormat("#.##"); |
|||
for (final Player p : players) { |
|||
Utils.setCleanPlayer(p); |
|||
p.setGameMode(GameMode.ADVENTURE); |
|||
giveKit(p, getTeamPlayer(p)); |
|||
for (final String msg : plugin.getLang().getList("messages.goal")) |
|||
CenterMessage.sendCenteredMessage(p, |
|||
msg.replaceAll("&", "§").replaceAll("<player>", e.getName()) |
|||
.replaceAll("<blueGoals>", String.valueOf(teams.get(ChatColor.BLUE).getGoals())) |
|||
.replaceAll("<redGoals>", String.valueOf(teams.get(ChatColor.RED).getGoals())) |
|||
.replaceAll("<s>", getGoals(e) > 1 ? "es" : "") |
|||
.replaceAll("<goals>", String.valueOf(getGoals(e))) |
|||
.replaceAll("<health>", df.format(e.getHealth())).replaceAll("<heart>", "❤") |
|||
.replaceAll("<color>", "" + team.getColor()) |
|||
.replaceAll("<team>", team.getTeamName().toUpperCase())); |
|||
} |
|||
new BukkitRunnable() { |
|||
@Override |
|||
public void run() { |
|||
if (restart == 10 || restart == 5 || restart == 4 || restart == 3 || restart == 2) |
|||
for (final Player p : players) { |
|||
p.sendMessage(plugin.getLang().get(p, "messages.restart").replaceAll("<color>", "" + color) |
|||
.replaceAll("<player>", e.getName()).replaceAll("<time>", String.valueOf(restart)) |
|||
.replaceAll("<s>", "s") |
|||
.replaceAll("<units>", plugin.getLang().get(p, "units.seconds"))); |
|||
p.playSound(p.getLocation(), Sound.valueOf(plugin.getSounds().get("sounds.game.restart")), 1.0f, |
|||
1.0f); |
|||
plugin.getTM().sendReStartTitle(e, p, restart, true); |
|||
} |
|||
if (restart == 1) |
|||
for (final Player p : players) { |
|||
p.sendMessage(plugin.getLang().get(p, "messages.restart").replaceAll("<color>", "" + color) |
|||
.replaceAll("<player>", e.getName()).replaceAll("<time>", String.valueOf(restart)) |
|||
.replaceAll("<s>", "").replaceAll("<units>", plugin.getLang().get(p, "units.second"))); |
|||
p.playSound(p.getLocation(), Sound.valueOf(plugin.getSounds().get("sounds.game.restart")), 1.0f, |
|||
1.0f); |
|||
plugin.getTM().sendReStartTitle(e, p, restart, false); |
|||
} |
|||
if (restart == 0) { |
|||
if (plugin.isCage()) { |
|||
for (final Team team : teams.values()) |
|||
if (team.isCage()) { |
|||
team.removeCage(); |
|||
team.setCage(false); |
|||
} |
|||
} else |
|||
for (final ChatColor color : teams.keySet()) |
|||
plugin.getGLM().removeGlass(teams.get(color).getTeamSpawn()); |
|||
for (final Player p : players) |
|||
p.setGameMode(GameMode.SURVIVAL); |
|||
cancel(); |
|||
} |
|||
restart--; |
|||
} |
|||
}.runTaskTimer(get(), 0, 20); |
|||
} |
|||
|
|||
public void updateGame() { |
|||
tick++; |
|||
if (isState(State.WAITING) && players.size() >= getMin()) { |
|||
setState(State.STARTING); |
|||
updateSign(); |
|||
for (final Player p : players) |
|||
p.setGameMode(GameMode.ADVENTURE); |
|||
} |
|||
if (isState(State.STARTING)) { |
|||
if (tick % 20 == 0) |
|||
for (final Player p : players) |
|||
updateSB(p); |
|||
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"))); |
|||
p.playSound(p.getLocation(), Sound.valueOf(plugin.getSounds().get("sounds.game.starting")), 1.0f, |
|||
1.0f); |
|||
plugin.getTM().sendStartTitle(p, starting, true); |
|||
} |
|||
else 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"))); |
|||
p.playSound(p.getLocation(), Sound.valueOf(plugin.getSounds().get("sounds.game.starting")), 1.0f, |
|||
1.0f); |
|||
plugin.getTM().sendStartTitle(p, starting, true); |
|||
} |
|||
else if (starting == 30 || starting == 15 || starting == 10 || starting == 5 || starting == 4 |
|||
|| starting == 3 || 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"))); |
|||
p.playSound(p.getLocation(), Sound.valueOf(plugin.getSounds().get("sounds.game.starting")), 1.0f, |
|||
1.0f); |
|||
plugin.getTM().sendStartTitle(p, starting, true); |
|||
} |
|||
else if (starting == 1) { |
|||
setState(State.PREGAME); |
|||
updateSign(); |
|||
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"))); |
|||
p.playSound(p.getLocation(), Sound.valueOf(plugin.getSounds().get("sounds.game.starting")), 1.0f, |
|||
1.0f); |
|||
plugin.getTM().sendStartTitle(p, starting, false); |
|||
if (getTeamPlayer(p) == null) |
|||
addRandomTeam(p); |
|||
p.getInventory().clear(); |
|||
} |
|||
if (plugin.isCage()) { |
|||
for (final Team team : teams.values()) |
|||
if (!team.isCage()) |
|||
if (team.getTeamPlayers().get(0) != null) { |
|||
team.createCage(plugin.getCM().getCageByName( |
|||
PlayerStat.getPlayerStat(team.getTeamPlayers().get(0)).getCage())); |
|||
team.setCage(true); |
|||
} else { |
|||
team.createCage( |
|||
plugin.getCM().getCageByName(plugin.getConfig().getString("defaultCage"))); |
|||
team.setCage(true); |
|||
} |
|||
} else |
|||
for (final ChatColor color : teams.keySet()) |
|||
plugin.getGLM().createCage(teams.get(color).getTeamSpawn(), color); |
|||
for (final Player p : players) { |
|||
p.teleport(getTeamPlayer(p).getTeamSpawn().clone().add(0, 1, 0)); |
|||
giveKit(p, getTeamPlayer(p)); |
|||
} |
|||
final Location hRed = teams.get(ChatColor.RED).getHologram(); |
|||
final Location hBlue = teams.get(ChatColor.BLUE).getHologram(); |
|||
if (hRed != null && hBlue != null) { |
|||
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"))); |
|||
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())); |
|||
phBlue.setupPlayerHologram(p, hBlue, pBlue); |
|||
phBlue.display(); |
|||
phRed.setupPlayerHologram(p, hRed, pRed); |
|||
phRed.display(); |
|||
holograms.add(phRed); |
|||
holograms.add(phBlue); |
|||
} |
|||
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.you")) |
|||
pRed.add(portal.replaceAll("&", "§").replaceAll("<color>", "" + ChatColor.BLUE) |
|||
.replaceAll("<team>", plugin.getLang().get("holograms.your"))); |
|||
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.RED) |
|||
.replaceAll("<team>", teams.get(ChatColor.RED).getTeamName())); |
|||
phBlue.setupPlayerHologram(p, hRed, pBlue); |
|||
phBlue.display(); |
|||
phRed.setupPlayerHologram(p, hBlue, pRed); |
|||
phRed.display(); |
|||
holograms.add(phRed); |
|||
holograms.add(phBlue); |
|||
} |
|||
} |
|||
teams.get(ChatColor.RED).createPortal(); |
|||
teams.get(ChatColor.BLUE).createPortal(); |
|||
} |
|||
starting--; |
|||
} |
|||
if (isState(State.PREGAME)) { |
|||
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"))); |
|||
p.playSound(p.getLocation(), Sound.valueOf(plugin.getSounds().get("sounds.game.prestart")), 1.0f, |
|||
1.0f); |
|||
plugin.getTM().sendPreTitle(p, prestart, true); |
|||
updateSB(p); |
|||
} |
|||
else 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"))); |
|||
p.playSound(p.getLocation(), Sound.valueOf(plugin.getSounds().get("sounds.game.prestart")), 1.0f, |
|||
1.0f); |
|||
plugin.getTM().sendPreTitle(p, prestart, false); |
|||
for (final String msg : plugin.getLang().getList("messages.start")) |
|||
CenterMessage.sendCenteredMessage(p, msg.replaceAll("&", "§")); |
|||
updateSB(p); |
|||
} |
|||
else if (prestart == 0) { |
|||
setState(State.INGAME); |
|||
updateSign(); |
|||
if (plugin.isCage()) { |
|||
for (final Team team : teams.values()) |
|||
if (team.isCage()) { |
|||
team.removeCage(); |
|||
team.setCage(false); |
|||
} |
|||
} else |
|||
for (final ChatColor color : teams.keySet()) |
|||
plugin.getGLM().removeGlass(teams.get(color).getTeamSpawn()); |
|||
for (final Player p : players) { |
|||
updateSB(p); |
|||
p.setGameMode(GameMode.SURVIVAL); |
|||
} |
|||
} |
|||
prestart--; |
|||
} |
|||
} |
|||
|
|||
public Team getTeamPlayer(Player p) { |
|||
return teams.get(teamPlayer.get(p)); |
|||
} |
|||
|
|||
public void addPlayerTeam(Player p, Team t) { |
|||
t.addPlayer(p); |
|||
teamPlayer.put(p, t.getColor()); |
|||
} |
|||
|
|||
public void addRandomTeam(Player p) { |
|||
final Team red = teams.get(ChatColor.RED); |
|||
final Team blue = teams.get(ChatColor.BLUE); |
|||
if (red.getTeamSize() <= blue.getTeamSize()) { |
|||
red.addPlayer(p); |
|||
teamPlayer.put(p, red.getColor()); |
|||
} else { |
|||
blue.addPlayer(p); |
|||
teamPlayer.put(p, blue.getColor()); |
|||
} |
|||
} |
|||
|
|||
public void removeAllPlayerTeam(Player p) { |
|||
for (final Team t : teams.values()) |
|||
if (t.getTeamPlayers().contains(p)) |
|||
t.removePlayer(p); |
|||
} |
|||
|
|||
public ArrayList<Location> getBuild() { |
|||
return build; |
|||
} |
|||
|
|||
public HashMap<ChatColor, Team> getTeams() { |
|||
return teams; |
|||
} |
|||
|
|||
public int getTeamsAlive() { |
|||
int cantidad = 0; |
|||
for (final Team team : teams.values()) |
|||
if (team.getTeamSize() > 0) |
|||
cantidad++; |
|||
return cantidad; |
|||
} |
|||
|
|||
public Team getLastTeam() { |
|||
for (final Team team : teams.values()) |
|||
if (team.getTeamSize() > 0) |
|||
return team; |
|||
return null; |
|||
} |
|||
|
|||
public int getPlayers() { |
|||
return players.size(); |
|||
} |
|||
|
|||
public ArrayList<Player> getGamePlayers() { |
|||
return players; |
|||
} |
|||
|
|||
public String getName() { |
|||
return this.name; |
|||
} |
|||
|
|||
public int getMax() { |
|||
return this.max; |
|||
} |
|||
|
|||
public String getMode() { |
|||
return mode; |
|||
} |
|||
|
|||
public int getMin() { |
|||
return this.min; |
|||
} |
|||
|
|||
public Main get() { |
|||
return plugin; |
|||
} |
|||
|
|||
public State getState() { |
|||
return this.state; |
|||
} |
|||
|
|||
public void setState(State state) { |
|||
this.state = state; |
|||
} |
|||
|
|||
public boolean isState(State state) { |
|||
if (this.state == state) |
|||
return true; |
|||
return false; |
|||
} |
|||
|
|||
public enum State { |
|||
WAITING, STARTING, PPGAME, PREGAME, INGAME, FINISH, RESTARTING; |
|||
} |
|||
|
|||
public int getGoals(Player p) { |
|||
return goals.get(p); |
|||
} |
|||
|
|||
public int getKills(Player p) { |
|||
return kills.get(p); |
|||
} |
|||
|
|||
public void addGoal(Player p) { |
|||
goals.put(p, goals.get(p) + 1); |
|||
updateSB(p); |
|||
} |
|||
|
|||
public void addKill(Player p) { |
|||
kills.put(p, kills.get(p) + 1); |
|||
updateSB(p); |
|||
} |
|||
|
|||
public void giveKit(Player p, Team team) { |
|||
final ItemStack helmet = new ItemStack(Material.LEATHER_HELMET, 1); |
|||
final LeatherArmorMeta helmetM = (LeatherArmorMeta) helmet.getItemMeta(); |
|||
helmetM.setColor(team.getFColor()); |
|||
helmet.setItemMeta(helmetM); |
|||
final ItemStack peche = new ItemStack(Material.LEATHER_CHESTPLATE, 1); |
|||
final LeatherArmorMeta pecheM = (LeatherArmorMeta) peche.getItemMeta(); |
|||
pecheM.setColor(team.getFColor()); |
|||
peche.setItemMeta(pecheM); |
|||
final ItemStack panta = new ItemStack(Material.IRON_LEGGINGS, 1); |
|||
final ItemMeta pantaM = panta.getItemMeta(); |
|||
panta.setItemMeta(pantaM); |
|||
final ItemStack boots = new ItemStack(Material.IRON_BOOTS, 1); |
|||
final ItemMeta bootsM = boots.getItemMeta(); |
|||
boots.setItemMeta(bootsM); |
|||
p.getInventory().setHelmet(helmet); |
|||
p.getInventory().setChestplate(peche); |
|||
p.getInventory().setLeggings(panta); |
|||
p.getInventory().setBoots(boots); |
|||
if (PlayerStat.getPlayerStat(p).getHotbar() == null) { |
|||
final ItemStack[] items = plugin.getGM().getKit().getContents(); |
|||
for (int slot = 0; slot < 35; 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)) { |
|||
final ItemStack item2 = new ItemStack(item.getType(), item.getAmount(), getColor(team.getFColor())); |
|||
p.getInventory().setItem(slot, item2); |
|||
continue; |
|||
} |
|||
p.getInventory().setItem(slot, item); |
|||
} |
|||
} else { |
|||
final ItemStack[] items = PlayerStat.getPlayerStat(p).getHotbar(); |
|||
for (int slot = 0; slot < 35; 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)) { |
|||
final ItemStack item2 = new ItemStack(item.getType(), item.getAmount(), getColor(team.getFColor())); |
|||
p.getInventory().setItem(slot, item2); |
|||
continue; |
|||
} |
|||
p.getInventory().setItem(slot, item); |
|||
} |
|||
} |
|||
} |
|||
|
|||
public void givePlayerItems(Player p) { |
|||
if (teamSize > 1) { |
|||
final ItemStack team = ItemBuilder.item(Material.PAPER, 1, (short) 0, |
|||
plugin.getLang().get("items.teams.nameItem"), plugin.getLang().get("items.teams.loreItem")); |
|||
p.getInventory().setItem(0, team); |
|||
} |
|||
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(8, leave); |
|||
} |
|||
|
|||
public byte getColor(Color color) { |
|||
if (color.equals(Color.RED)) |
|||
return 14; |
|||
if (color.equals(Color.BLUE)) |
|||
return 11; |
|||
return 0; |
|||
} |
|||
|
|||
public int getTeamSize() { |
|||
return teamSize; |
|||
} |
|||
|
|||
public void addPlace(Location loc) { |
|||
placed.add(loc); |
|||
} |
|||
|
|||
public ArrayList<Location> getPlaced() { |
|||
return placed; |
|||
} |
|||
|
|||
public int getStarting() { |
|||
return starting; |
|||
} |
|||
|
|||
public Location getLobby() { |
|||
return lobby; |
|||
} |
|||
|
|||
public Location getSpect() { |
|||
return spect; |
|||
} |
|||
|
|||
public HashMap<Player, PlayerData> getPD() { |
|||
return pd; |
|||
} |
|||
|
|||
} |
|||
} |
|||
|
@ -0,0 +1,754 @@ |
|||
package cx.sfy.TheBridge.game; |
|||
|
|||
import java.text.DecimalFormat; |
|||
import java.util.ArrayList; |
|||
import java.util.HashMap; |
|||
import java.util.Random; |
|||
|
|||
import org.bukkit.ChatColor; |
|||
import org.bukkit.Color; |
|||
import org.bukkit.FireworkEffect; |
|||
import org.bukkit.GameMode; |
|||
import org.bukkit.Location; |
|||
import org.bukkit.Material; |
|||
import org.bukkit.Sound; |
|||
import org.bukkit.entity.Firework; |
|||
import org.bukkit.entity.Player; |
|||
import org.bukkit.inventory.ItemStack; |
|||
import org.bukkit.inventory.meta.FireworkMeta; |
|||
import org.bukkit.inventory.meta.ItemMeta; |
|||
import org.bukkit.inventory.meta.LeatherArmorMeta; |
|||
import org.bukkit.scheduler.BukkitRunnable; |
|||
import org.bukkit.scheduler.BukkitTask; |
|||
|
|||
import cx.sfy.TheBridge.Main; |
|||
import cx.sfy.TheBridge.database.PlayerStat; |
|||
import cx.sfy.TheBridge.hologram.TruenoHologram; |
|||
import cx.sfy.TheBridge.hologram.TruenoHologramAPI; |
|||
import cx.sfy.TheBridge.team.TeamDuo; |
|||
import cx.sfy.TheBridge.utils.CenterMessage; |
|||
import cx.sfy.TheBridge.utils.ItemBuilder; |
|||
import cx.sfy.TheBridge.utils.Utils; |
|||
|
|||
public class GameDuo { |
|||
|
|||
private final Main plugin; |
|||
private final HashMap<ChatColor, TeamDuo> teams; |
|||
private final HashMap<Player, ChatColor> teamPlayer; |
|||
private final ArrayList<Player> players; |
|||
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<TruenoHologram> holograms = new ArrayList<>(); |
|||
private final ArrayList<Location> build = new ArrayList<>(); |
|||
private final ArrayList<Location> placed = new ArrayList<>(); |
|||
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 int restart; |
|||
private final Location lobby; |
|||
private final Location spect; |
|||
private BukkitTask start; |
|||
private BukkitTask prestarts; |
|||
private State state; |
|||
int time = 0; |
|||
int tick = 0; |
|||
|
|||
public GameDuo(Main plugin, String name, int min, int max, int teamSize, int starting, int prestart, int restart, |
|||
Location lobby, Location spect, Location buildMin, Location buildMax, Location spawnsRed, |
|||
Location spawnsBlue, ArrayList<Location> portalRed, ArrayList<Location> portalBlue, Location respawnsRed, |
|||
Location respawnsBlue, Location hRed, Location hBlue) { |
|||
this.plugin = plugin; |
|||
this.starting = starting; |
|||
this.prestart = prestart; |
|||
this.restart = restart; |
|||
this.max = max; |
|||
this.min = min; |
|||
this.teamSize = teamSize; |
|||
this.mode = teamSize + "v" + teamSize; |
|||
this.name = name; |
|||
this.lobby = lobby; |
|||
this.spect = spect; |
|||
this.teamPlayer = new HashMap<>(); |
|||
this.teams = new HashMap<>(); |
|||
this.players = new ArrayList<>(); |
|||
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) { |
|||
final Location location3 = new Location(buildMin.getWorld(), i, j, k); |
|||
build.add(location3); |
|||
} |
|||
this.teams.put(ChatColor.BLUE, new TeamDuo(plugin.getConfig().getString("names.blue"), ChatColor.BLUE, Color.BLUE, |
|||
respawnsBlue, spawnsBlue, portalBlue, hBlue)); |
|||
this.teams.put(ChatColor.RED, new TeamDuo(plugin.getConfig().getString("names.red"), ChatColor.RED, Color.RED, |
|||
respawnsRed, spawnsRed, portalRed, hRed)); |
|||
setState(State.WAITING); |
|||
updateSign(); |
|||
} |
|||
|
|||
public void checkCancel() { |
|||
if (isState(State.STARTING) && players.size() <= getMin()) { |
|||
if (start != null) |
|||
start.cancel(); |
|||
if (prestarts != null) |
|||
prestarts.cancel(); |
|||
setState(State.WAITING); |
|||
starting = 30; |
|||
updateSign(); |
|||
for (final Player on : players) |
|||
updateSB(on); |
|||
} |
|||
} |
|||
|
|||
public void updateSB(Player p) { |
|||
plugin.getSB().update(p); |
|||
} |
|||
|
|||
public void updateSign() { |
|||
plugin.getSIM().updateGameSign(this); |
|||
} |
|||
|
|||
public void addPlayer(Player p) { |
|||
pd.put(p, new PlayerData(p)); |
|||
Utils.setCleanPlayer(p); |
|||
players.add(p); |
|||
kills.put(p, 0); |
|||
goals.put(p, 0); |
|||
new BukkitRunnable() { |
|||
@Override |
|||
public void run() { |
|||
givePlayerItems(p); |
|||
} |
|||
}.runTaskLater(plugin, 20); |
|||
p.teleport(getLobby()); |
|||
updateSign(); |
|||
if (isState(State.WAITING) || isState(State.STARTING)) |
|||
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()))); |
|||
on.playSound(on.getLocation(), Sound.valueOf(plugin.getSounds().get("sounds.game.join")), 1.0f, 1.0f); |
|||
updateSB(on); |
|||
} |
|||
} |
|||
|
|||
public void removePlayer(Player p) { |
|||
Utils.setCleanPlayer(p); |
|||
pd.get(p).restore(); |
|||
removeAllPlayerTeam(p); |
|||
players.remove(p); |
|||
if (isState(State.WAITING) || isState(State.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 && players.size() >= 1) |
|||
checkWin(p, getLastTeam(), getLastTeam().getGoals()); |
|||
updateSign(); |
|||
checkCancel(); |
|||
} |
|||
|
|||
// FIXME: Not properly giving coins
|
|||
public boolean checkWin(Player w, TeamDuo team, int goals) { |
|||
if (isState(State.FINISH)) |
|||
return false; |
|||
final DecimalFormat df = new DecimalFormat("#.##"); |
|||
if (getTeamsAlive() <= 1 && players.size() >= 1) { |
|||
final TeamDuo win = getLastTeam(); |
|||
setState(State.FINISH); |
|||
firework(getSpect(), win.getFColor()); |
|||
for (final Player r : win.getTeamPlayers()) |
|||
PlayerStat.getPlayerStat(r).addNormalWins(); |
|||
for (final Player p : players) { |
|||
p.teleport(lobby); |
|||
updateSB(p); |
|||
plugin.getNMS().sendTitle(p, 0, 60, 0, |
|||
plugin.getLang().get("titles.win.title") |
|||
.replaceAll("<blueGoals>", String.valueOf(teams.get(ChatColor.BLUE).getGoals())) |
|||
.replaceAll("<redGoals>", String.valueOf(teams.get(ChatColor.RED).getGoals())) |
|||
.replaceAll("<team>", team.getTeamName()).replaceAll("<color>", team.getColor() + ""), |
|||
plugin.getLang().get("titles.win.subtitle") |
|||
.replaceAll("<blueGoals>", String.valueOf(teams.get(ChatColor.BLUE).getGoals())) |
|||
.replaceAll("<redGoals>", String.valueOf(teams.get(ChatColor.RED).getGoals())) |
|||
.replaceAll("<team>", team.getTeamName()).replaceAll("<color>", team.getColor() + "")); |
|||
for (final String msg : plugin.getLang().getList("messages.win")) |
|||
CenterMessage.sendCenteredMessage(p, |
|||
msg.replaceAll("&", "§").replaceAll("<player>", w.getName()) |
|||
.replaceAll("<blueGoals>", String.valueOf(teams.get(ChatColor.BLUE).getGoals())) |
|||
.replaceAll("<redGoals>", String.valueOf(teams.get(ChatColor.RED).getGoals())) |
|||
.replaceAll("<s>", getGoals(w) > 1 ? "es" : "") |
|||
.replaceAll("<goals>", String.valueOf(getGoals(w))) |
|||
.replaceAll("<health>", df.format(w.getHealth())).replaceAll("<heart>", "❤") |
|||
.replaceAll("<color>", "" + team.getColor()) |
|||
.replaceAll("<team>", win.getTeamName().toUpperCase())); |
|||
} |
|||
new BukkitRunnable() { |
|||
@Override |
|||
public void run() { |
|||
for (final TruenoHologram th : holograms) |
|||
th.delete(); |
|||
for (final Player p : spect.getWorld().getPlayers()) |
|||
if (pd.containsKey(p)) |
|||
plugin.getGM().removePlayerAllGames(p); |
|||
else |
|||
p.teleport(plugin.getMainLobby()); |
|||
} |
|||
}.runTaskLater(plugin, 20 * 10); |
|||
new BukkitRunnable() { |
|||
@Override |
|||
public void run() { |
|||
plugin.getGM().resetNormalGame(getName()); |
|||
} |
|||
}.runTaskLater(plugin, 20 * 12); |
|||
updateSign(); |
|||
return true; |
|||
} |
|||
if (team.getGoals() >= goals) { |
|||
setState(State.FINISH); |
|||
final TeamDuo win = getLastTeam(); |
|||
firework(getSpect(), team.getFColor()); |
|||
for (final Player r : win.getTeamPlayers()) |
|||
PlayerStat.getPlayerStat(r).addNormalWins(); |
|||
for (final Player p : players) { |
|||
p.teleport(lobby); |
|||
plugin.getNMS().sendTitle(p, 0, 60, 0, |
|||
plugin.getLang().get("titles.win.title") |
|||
.replaceAll("<blueGoals>", String.valueOf(teams.get(ChatColor.BLUE).getGoals())) |
|||
.replaceAll("<redGoals>", String.valueOf(teams.get(ChatColor.RED).getGoals())) |
|||
.replaceAll("<team>", team.getTeamName()).replaceAll("<color>", team.getColor() + ""), |
|||
plugin.getLang().get("titles.win.subtitle") |
|||
.replaceAll("<blueGoals>", String.valueOf(teams.get(ChatColor.BLUE).getGoals())) |
|||
.replaceAll("<redGoals>", String.valueOf(teams.get(ChatColor.RED).getGoals())) |
|||
.replaceAll("<team>", team.getTeamName()).replaceAll("<color>", team.getColor() + "")); |
|||
for (final String msg : plugin.getLang().getList("messages.win")) |
|||
CenterMessage.sendCenteredMessage(p, |
|||
msg.replaceAll("&", "§").replaceAll("<player>", w.getName()) |
|||
.replaceAll("<blueGoals>", String.valueOf(teams.get(ChatColor.BLUE).getGoals())) |
|||
.replaceAll("<redGoals>", String.valueOf(teams.get(ChatColor.RED).getGoals())) |
|||
.replaceAll("<s>", getGoals(w) > 1 ? "es" : "") |
|||
.replaceAll("<goals>", String.valueOf(getGoals(w))) |
|||
.replaceAll("<health>", df.format(w.getHealth())).replaceAll("<heart>", "❤") |
|||
.replaceAll("<color>", "" + team.getColor()) |
|||
.replaceAll("<team>", team.getTeamName().toUpperCase())); |
|||
} |
|||
new BukkitRunnable() { |
|||
@Override |
|||
public void run() { |
|||
for (final Player p : spect.getWorld().getPlayers()) |
|||
if (pd.containsKey(p)) |
|||
plugin.getGM().removePlayerAllGames(p); |
|||
else |
|||
p.teleport(plugin.getMainLobby()); |
|||
} |
|||
}.runTaskLater(plugin, 20 * 10); |
|||
new BukkitRunnable() { |
|||
@Override |
|||
public void run() { |
|||
plugin.getGM().resetNormalGame(getName()); |
|||
} |
|||
}.runTaskLater(plugin, 20 * 12); |
|||
updateSign(); |
|||
return true; |
|||
} |
|||
return false; |
|||
} |
|||
|
|||
public void celebrateGoal(TeamDuo team, Player e) { |
|||
restart = 5; |
|||
team.addGoal(); |
|||
addGoal(e); |
|||
PlayerStat.getPlayerStat(e).addNormalGoals(); |
|||
if (checkWin(e, team, 5)) |
|||
return; |
|||
firework(getSpect(), team.getFColor()); |
|||
if (plugin.isCage()) { |
|||
for (final TeamDuo te : teams.values()) |
|||
if (!te.isCage()) |
|||
if (te.getTeamPlayers().get(0) != null) { |
|||
te.createCage(plugin.getCM() |
|||
.getCageByName(PlayerStat.getPlayerStat(te.getTeamPlayers().get(0)).getCage())); |
|||
te.setCage(true); |
|||
} else { |
|||
te.createCage(plugin.getCM().getCageByName(plugin.getConfig().getString("defaultCage"))); |
|||
te.setCage(true); |
|||
} |
|||
} else |
|||
for (final ChatColor color : teams.keySet()) |
|||
plugin.getGLM().createCage(teams.get(color).getTeamSpawn(), color); |
|||
for (final Player p : players) { |
|||
p.teleport(getTeamPlayer(p).getTeamSpawn().clone().add(0, 1, 0)); |
|||
updateSB(p); |
|||
} |
|||
checkRestart(team, team.getColor(), e); |
|||
} |
|||
|
|||
public void firework(Location loc, Color c1) { |
|||
time = 0; |
|||
new BukkitRunnable() { |
|||
@Override |
|||
public void run() { |
|||
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); |
|||
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); |
|||
time++; |
|||
if (time == 10) |
|||
cancel(); |
|||
} |
|||
}.runTaskTimer(plugin, 0, 10); |
|||
} |
|||
|
|||
public void checkRestart(TeamDuo team, ChatColor color, Player e) { |
|||
final DecimalFormat df = new DecimalFormat("#.##"); |
|||
for (final Player p : players) { |
|||
Utils.setCleanPlayer(p); |
|||
p.setGameMode(GameMode.ADVENTURE); |
|||
giveKit(p, getTeamPlayer(p)); |
|||
for (final String msg : plugin.getLang().getList("messages.goal")) |
|||
CenterMessage.sendCenteredMessage(p, |
|||
msg.replaceAll("&", "§").replaceAll("<player>", e.getName()) |
|||
.replaceAll("<blueGoals>", String.valueOf(teams.get(ChatColor.BLUE).getGoals())) |
|||
.replaceAll("<redGoals>", String.valueOf(teams.get(ChatColor.RED).getGoals())) |
|||
.replaceAll("<s>", getGoals(e) > 1 ? "es" : "") |
|||
.replaceAll("<goals>", String.valueOf(getGoals(e))) |
|||
.replaceAll("<health>", df.format(e.getHealth())).replaceAll("<heart>", "❤") |
|||
.replaceAll("<color>", "" + team.getColor()) |
|||
.replaceAll("<team>", team.getTeamName().toUpperCase())); |
|||
} |
|||
new BukkitRunnable() { |
|||
@Override |
|||
public void run() { |
|||
if (restart == 10 || restart == 5 || restart == 4 || restart == 3 || restart == 2) |
|||
for (final Player p : players) { |
|||
p.sendMessage(plugin.getLang().get(p, "messages.restart").replaceAll("<color>", "" + color) |
|||
.replaceAll("<player>", e.getName()).replaceAll("<time>", String.valueOf(restart)) |
|||
.replaceAll("<s>", "s") |
|||
.replaceAll("<units>", plugin.getLang().get(p, "units.seconds"))); |
|||
p.playSound(p.getLocation(), Sound.valueOf(plugin.getSounds().get("sounds.game.restart")), 1.0f, |
|||
1.0f); |
|||
plugin.getTM().sendReStartTitle(e, p, restart, true); |
|||
} |
|||
if (restart == 1) |
|||
for (final Player p : players) { |
|||
p.sendMessage(plugin.getLang().get(p, "messages.restart").replaceAll("<color>", "" + color) |
|||
.replaceAll("<player>", e.getName()).replaceAll("<time>", String.valueOf(restart)) |
|||
.replaceAll("<s>", "").replaceAll("<units>", plugin.getLang().get(p, "units.second"))); |
|||
p.playSound(p.getLocation(), Sound.valueOf(plugin.getSounds().get("sounds.game.restart")), 1.0f, |
|||
1.0f); |
|||
plugin.getTM().sendReStartTitle(e, p, restart, false); |
|||
} |
|||
if (restart == 0) { |
|||
if (plugin.isCage()) { |
|||
for (final TeamDuo team : teams.values()) |
|||
if (team.isCage()) { |
|||
team.removeCage(); |
|||
team.setCage(false); |
|||
} |
|||
} else |
|||
for (final ChatColor color : teams.keySet()) |
|||
plugin.getGLM().removeGlass(teams.get(color).getTeamSpawn()); |
|||
for (final Player p : players) |
|||
p.setGameMode(GameMode.SURVIVAL); |
|||
cancel(); |
|||
} |
|||
restart--; |
|||
} |
|||
}.runTaskTimer(get(), 0, 20); |
|||
} |
|||
|
|||
public void updateGame() { |
|||
tick++; |
|||
if (isState(State.WAITING) && players.size() >= getMin()) { |
|||
setState(State.STARTING); |
|||
updateSign(); |
|||
for (final Player p : players) |
|||
p.setGameMode(GameMode.ADVENTURE); |
|||
} |
|||
if (isState(State.STARTING)) { |
|||
if (tick % 20 == 0) |
|||
for (final Player p : players) |
|||
updateSB(p); |
|||
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"))); |
|||
p.playSound(p.getLocation(), Sound.valueOf(plugin.getSounds().get("sounds.game.starting")), 1.0f, |
|||
1.0f); |
|||
plugin.getTM().sendStartTitle(p, starting, true); |
|||
} |
|||
else 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"))); |
|||
p.playSound(p.getLocation(), Sound.valueOf(plugin.getSounds().get("sounds.game.starting")), 1.0f, |
|||
1.0f); |
|||
plugin.getTM().sendStartTitle(p, starting, true); |
|||
} |
|||
else if (starting == 30 || starting == 15 || starting == 10 || starting == 5 || starting == 4 |
|||
|| starting == 3 || 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"))); |
|||
p.playSound(p.getLocation(), Sound.valueOf(plugin.getSounds().get("sounds.game.starting")), 1.0f, |
|||
1.0f); |
|||
plugin.getTM().sendStartTitle(p, starting, true); |
|||
} |
|||
else if (starting == 1) { |
|||
setState(State.PREGAME); |
|||
updateSign(); |
|||
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"))); |
|||
p.playSound(p.getLocation(), Sound.valueOf(plugin.getSounds().get("sounds.game.starting")), 1.0f, |
|||
1.0f); |
|||
plugin.getTM().sendStartTitle(p, starting, false); |
|||
if (getTeamPlayer(p) == null) |
|||
addRandomTeam(p); |
|||
p.getInventory().clear(); |
|||
} |
|||
if (plugin.isCage()) { |
|||
for (final TeamDuo team : teams.values()) |
|||
if (!team.isCage()) |
|||
if (team.getTeamPlayers().get(0) != null) { |
|||
team.createCage(plugin.getCM().getCageByName( |
|||
PlayerStat.getPlayerStat(team.getTeamPlayers().get(0)).getCage())); |
|||
team.setCage(true); |
|||
} else { |
|||
team.createCage( |
|||
plugin.getCM().getCageByName(plugin.getConfig().getString("defaultCage"))); |
|||
team.setCage(true); |
|||
} |
|||
} else |
|||
for (final ChatColor color : teams.keySet()) |
|||
plugin.getGLM().createCage(teams.get(color).getTeamSpawn(), color); |
|||
for (final Player p : players) { |
|||
p.teleport(getTeamPlayer(p).getTeamSpawn().clone().add(0, 1, 0)); |
|||
giveKit(p, getTeamPlayer(p)); |
|||
} |
|||
final Location hRed = teams.get(ChatColor.RED).getHologram(); |
|||
final Location hBlue = teams.get(ChatColor.BLUE).getHologram(); |
|||
if (hRed != null && hBlue != null) { |
|||
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"))); |
|||
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())); |
|||
phBlue.setupPlayerHologram(p, hBlue, pBlue); |
|||
phBlue.display(); |
|||
phRed.setupPlayerHologram(p, hRed, pRed); |
|||
phRed.display(); |
|||
holograms.add(phRed); |
|||
holograms.add(phBlue); |
|||
} |
|||
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.you")) |
|||
pRed.add(portal.replaceAll("&", "§").replaceAll("<color>", "" + ChatColor.BLUE) |
|||
.replaceAll("<team>", plugin.getLang().get("holograms.your"))); |
|||
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.RED) |
|||
.replaceAll("<team>", teams.get(ChatColor.RED).getTeamName())); |
|||
phBlue.setupPlayerHologram(p, hRed, pBlue); |
|||
phBlue.display(); |
|||
phRed.setupPlayerHologram(p, hBlue, pRed); |
|||
phRed.display(); |
|||
holograms.add(phRed); |
|||
holograms.add(phBlue); |
|||
} |
|||
} |
|||
teams.get(ChatColor.RED).createPortal(); |
|||
teams.get(ChatColor.BLUE).createPortal(); |
|||
} |
|||
starting--; |
|||
} |
|||
if (isState(State.PREGAME)) { |
|||
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"))); |
|||
p.playSound(p.getLocation(), Sound.valueOf(plugin.getSounds().get("sounds.game.prestart")), 1.0f, |
|||
1.0f); |
|||
plugin.getTM().sendPreTitle(p, prestart, true); |
|||
updateSB(p); |
|||
} |
|||
else 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"))); |
|||
p.playSound(p.getLocation(), Sound.valueOf(plugin.getSounds().get("sounds.game.prestart")), 1.0f, |
|||
1.0f); |
|||
plugin.getTM().sendPreTitle(p, prestart, false); |
|||
for (final String msg : plugin.getLang().getList("messages.start")) |
|||
CenterMessage.sendCenteredMessage(p, msg.replaceAll("&", "§")); |
|||
updateSB(p); |
|||
} |
|||
else if (prestart == 0) { |
|||
setState(State.INGAME); |
|||
updateSign(); |
|||
if (plugin.isCage()) { |
|||
for (final TeamDuo team : teams.values()) |
|||
if (team.isCage()) { |
|||
team.removeCage(); |
|||
team.setCage(false); |
|||
} |
|||
} else |
|||
for (final ChatColor color : teams.keySet()) |
|||
plugin.getGLM().removeGlass(teams.get(color).getTeamSpawn()); |
|||
for (final Player p : players) { |
|||
updateSB(p); |
|||
p.setGameMode(GameMode.SURVIVAL); |
|||
} |
|||
} |
|||
prestart--; |
|||
} |
|||
} |
|||
|
|||
public TeamDuo getTeamPlayer(Player p) { |
|||
return teams.get(teamPlayer.get(p)); |
|||
} |
|||
|
|||
public void addPlayerTeam(Player p, TeamDuo t) { |
|||
t.addPlayer(p); |
|||
teamPlayer.put(p, t.getColor()); |
|||
} |
|||
|
|||
public void addRandomTeam(Player p) { |
|||
final TeamDuo red = teams.get(ChatColor.RED); |
|||
final TeamDuo blue = teams.get(ChatColor.BLUE); |
|||
if (red.getTeamSize() <= blue.getTeamSize()) { |
|||
red.addPlayer(p); |
|||
teamPlayer.put(p, red.getColor()); |
|||
} else { |
|||
blue.addPlayer(p); |
|||
teamPlayer.put(p, blue.getColor()); |
|||
} |
|||
} |
|||
|
|||
public void removeAllPlayerTeam(Player p) { |
|||
for (final TeamDuo t : teams.values()) |
|||
if (t.getTeamPlayers().contains(p)) |
|||
t.removePlayer(p); |
|||
} |
|||
|
|||
public ArrayList<Location> getBuild() { |
|||
return build; |
|||
} |
|||
|
|||
public HashMap<ChatColor, TeamDuo> getTeams() { |
|||
return teams; |
|||
} |
|||
|
|||
public int getTeamsAlive() { |
|||
int cantidad = 0; |
|||
for (final TeamDuo team : teams.values()) |
|||
if (team.getTeamSize() > 0) |
|||
cantidad++; |
|||
return cantidad; |
|||
} |
|||
|
|||
public TeamDuo getLastTeam() { |
|||
for (final TeamDuo team : teams.values()) |
|||
if (team.getTeamSize() > 0) |
|||
return team; |
|||
return null; |
|||
} |
|||
|
|||
public int getPlayers() { |
|||
return players.size(); |
|||
} |
|||
|
|||
public ArrayList<Player> getGamePlayers() { |
|||
return players; |
|||
} |
|||
|
|||
public String getName() { |
|||
return this.name; |
|||
} |
|||
|
|||
public int getMax() { |
|||
return this.max; |
|||
} |
|||
|
|||
public String getMode() { |
|||
return mode; |
|||
} |
|||
|
|||
public int getMin() { |
|||
return this.min; |
|||
} |
|||
|
|||
public Main get() { |
|||
return plugin; |
|||
} |
|||
|
|||
public State getState() { |
|||
return this.state; |
|||
} |
|||
|
|||
public void setState(State state) { |
|||
this.state = state; |
|||
} |
|||
|
|||
public boolean isState(State state) { |
|||
if (this.state == state) |
|||
return true; |
|||
return false; |
|||
} |
|||
|
|||
public enum State { |
|||
WAITING, STARTING, PPGAME, PREGAME, INGAME, FINISH, RESTARTING; |
|||
} |
|||
|
|||
public int getGoals(Player p) { |
|||
return goals.get(p); |
|||
} |
|||
|
|||
public int getKills(Player p) { |
|||
return kills.get(p); |
|||
} |
|||
|
|||
public void addGoal(Player p) { |
|||
goals.put(p, goals.get(p) + 1); |
|||
updateSB(p); |
|||
} |
|||
|
|||
public void addKill(Player p) { |
|||
kills.put(p, kills.get(p) + 1); |
|||
updateSB(p); |
|||
} |
|||
|
|||
public void giveKit(Player p, TeamDuo team) { |
|||
final ItemStack helmet = new ItemStack(Material.LEATHER_HELMET, 1); |
|||
final LeatherArmorMeta helmetM = (LeatherArmorMeta) helmet.getItemMeta(); |
|||
helmetM.setColor(team.getFColor()); |
|||
helmet.setItemMeta(helmetM); |
|||
final ItemStack peche = new ItemStack(Material.LEATHER_CHESTPLATE, 1); |
|||
final LeatherArmorMeta pecheM = (LeatherArmorMeta) peche.getItemMeta(); |
|||
pecheM.setColor(team.getFColor()); |
|||
peche.setItemMeta(pecheM); |
|||
final ItemStack panta = new ItemStack(Material.IRON_LEGGINGS, 1); |
|||
final ItemMeta pantaM = panta.getItemMeta(); |
|||
panta.setItemMeta(pantaM); |
|||
final ItemStack boots = new ItemStack(Material.IRON_BOOTS, 1); |
|||
final ItemMeta bootsM = boots.getItemMeta(); |
|||
boots.setItemMeta(bootsM); |
|||
p.getInventory().setHelmet(helmet); |
|||
p.getInventory().setChestplate(peche); |
|||
p.getInventory().setLeggings(panta); |
|||
p.getInventory().setBoots(boots); |
|||
if (PlayerStat.getPlayerStat(p).getHotbar() == null) { |
|||
final ItemStack[] items = plugin.getGM().getKit().getContents(); |
|||
for (int slot = 0; slot < 35; 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) |
|||
|| item.getType().equals(Material.getMaterial("CLAY"))) { |
|||
final ItemStack item2 = new ItemStack(item.getType(), item.getAmount(), getColor(team.getFColor())); |
|||
p.getInventory().setItem(slot, item2); |
|||
continue; |
|||
} |
|||
p.getInventory().setItem(slot, item); |
|||
} |
|||
} else { |
|||
final ItemStack[] items = PlayerStat.getPlayerStat(p).getHotbar(); |
|||
for (int slot = 0; slot < 35; 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) |
|||
|| item.getType().equals(Material.getMaterial("CLAY"))) { |
|||
final ItemStack item2 = new ItemStack(item.getType(), item.getAmount(), getColor(team.getFColor())); |
|||
p.getInventory().setItem(slot, item2); |
|||
continue; |
|||
} |
|||
p.getInventory().setItem(slot, item); |
|||
} |
|||
} |
|||
} |
|||
|
|||
public void givePlayerItems(Player p) { |
|||
if (teamSize > 1) { |
|||
final ItemStack team = ItemBuilder.item(Material.PAPER, 1, (short) 0, |
|||
plugin.getLang().get("items.teams.nameItem"), plugin.getLang().get("items.teams.loreItem")); |
|||
p.getInventory().setItem(0, team); |
|||
} |
|||
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(8, leave); |
|||
} |
|||
|
|||
public byte getColor(Color color) { |
|||
if (color.equals(Color.RED)) |
|||
return 14; |
|||
if (color.equals(Color.BLUE)) |
|||
return 11; |
|||
return 0; |
|||
} |
|||
|
|||
public int getTeamSize() { |
|||
return teamSize; |
|||
} |
|||
|
|||
public void addPlace(Location loc) { |
|||
placed.add(loc); |
|||
} |
|||
|
|||
public ArrayList<Location> getPlaced() { |
|||
return placed; |
|||
} |
|||
|
|||
public int getStarting() { |
|||
return starting; |
|||
} |
|||
|
|||
public Location getLobby() { |
|||
return lobby; |
|||
} |
|||
|
|||
public Location getSpect() { |
|||
return spect; |
|||
} |
|||
|
|||
public HashMap<Player, PlayerData> getPD() { |
|||
return pd; |
|||
} |
|||
|
|||
} |
@ -0,0 +1,180 @@ |
|||
package cx.sfy.TheBridge.team; |
|||
|
|||
import org.bukkit.ChatColor; |
|||
import org.bukkit.Color; |
|||
import org.bukkit.Location; |
|||
import org.bukkit.Material; |
|||
import org.bukkit.entity.Player; |
|||
|
|||
import com.boydti.fawe.util.TaskManager; |
|||
import com.sk89q.worldedit.EditSession; |
|||
import com.sk89q.worldedit.Vector; |
|||
import com.sk89q.worldedit.bukkit.BukkitWorld; |
|||
import com.sk89q.worldedit.extent.clipboard.io.ClipboardFormat; |
|||
import com.sk89q.worldedit.math.transform.Transform; |
|||
|
|||
import cx.sfy.TheBridge.cages.Cage; |
|||
|
|||
import java.io.IOException; |
|||
import java.util.ArrayList; |
|||
|
|||
public class TeamDuo { |
|||
|
|||
private ArrayList<Player> players; |
|||
private ArrayList<Location> portal; |
|||
private Location hologram; |
|||
private Location spawn; |
|||
private Location respawn; |
|||
private String teamName; |
|||
private ChatColor color; |
|||
private Color fcolor; |
|||
private int goals; |
|||
private boolean cage; |
|||
private EditSession editSessionRed; |
|||
private EditSession editSessionBlue; |
|||
private Cage cages; |
|||
|
|||
public TeamDuo(String teamName, ChatColor color, Color fcolor, Location respawn, Location spawn, ArrayList<Location> portal, Location hologram) { |
|||
this.color = color; |
|||
this.teamName = teamName; |
|||
this.players = new ArrayList<Player>(); |
|||
this.goals = 0; |
|||
this.spawn = spawn; |
|||
this.respawn = respawn; |
|||
this.portal = portal; |
|||
this.fcolor = fcolor; |
|||
this.hologram = hologram; |
|||
this.cage = false; |
|||
} |
|||
|
|||
public void createCage(Cage cage) { |
|||
cages = cage; |
|||
if (color.equals(ChatColor.RED)) { |
|||
Vector to = new Vector(spawn.getBlockX(), spawn.getBlockY(), spawn.getBlockZ()); |
|||
BukkitWorld world = new BukkitWorld(spawn.getWorld()); |
|||
TaskManager.IMP.async(new Runnable() { |
|||
@Override |
|||
public void run() { |
|||
try { |
|||
editSessionRed = ClipboardFormat.findByFile(cage.getFileRed()).load(cage.getFileRed()).paste(world, to, true, true, (Transform) null); |
|||
editSessionRed.flushQueue(); |
|||
} catch (IOException e) { |
|||
// TODO Auto-generated catch block
|
|||
e.printStackTrace(); |
|||
} |
|||
} |
|||
}); |
|||
} |
|||
if (color.equals(ChatColor.BLUE)) { |
|||
Vector to = new Vector(spawn.getBlockX(), spawn.getBlockY(), spawn.getBlockZ()); |
|||
BukkitWorld world = new BukkitWorld(spawn.getWorld()); |
|||
TaskManager.IMP.async(new Runnable() { |
|||
@Override |
|||
public void run() { |
|||
try { |
|||
editSessionBlue = ClipboardFormat.findByFile(cage.getFileBlue()).load(cage.getFileBlue()).paste(world, to, true, true, (Transform) null); |
|||
editSessionBlue.flushQueue(); |
|||
} catch (IOException e) { |
|||
// TODO Auto-generated catch block
|
|||
e.printStackTrace(); |
|||
} |
|||
editSessionBlue.flushQueue(); |
|||
} |
|||
}); |
|||
} |
|||
} |
|||
|
|||
public void removeCage() { |
|||
Vector to = new Vector(spawn.getBlockX(), spawn.getBlockY(), spawn.getBlockZ()); |
|||
BukkitWorld world = new BukkitWorld(spawn.getWorld()); |
|||
TaskManager.IMP.async(new Runnable() { |
|||
@Override |
|||
public void run() { |
|||
try { |
|||
editSessionBlue = ClipboardFormat.findByFile(cages.getClear()).load(cages.getClear()).paste(world, to, true, true, (Transform) null); |
|||
} catch (IOException e) { |
|||
// TODO Auto-generated catch block
|
|||
e.printStackTrace(); |
|||
} |
|||
editSessionBlue.flushQueue(); |
|||
} |
|||
}); |
|||
} |
|||
|
|||
public boolean isCage() { |
|||
return cage; |
|||
} |
|||
|
|||
public void setCage(boolean cage) { |
|||
this.cage = cage; |
|||
} |
|||
|
|||
public Location getHologram() { |
|||
return hologram; |
|||
} |
|||
|
|||
public String getTeamName() { |
|||
return teamName; |
|||
} |
|||
|
|||
public ChatColor getColor() { |
|||
return color; |
|||
} |
|||
|
|||
public Location getTeamSpawn() { |
|||
return spawn; |
|||
} |
|||
|
|||
public Location getTeamRespawn() { |
|||
return respawn; |
|||
} |
|||
|
|||
public Color getFColor() { |
|||
return fcolor; |
|||
} |
|||
|
|||
public ArrayList<Location> getPortal() { |
|||
return portal; |
|||
} |
|||
|
|||
public void createPortal() { |
|||
for (Location loc : portal) { |
|||
loc.getBlock().setType(Material.ENDER_PORTAL); |
|||
} |
|||
} |
|||
|
|||
public void deletePortal() { |
|||
for (Location loc : portal) { |
|||
loc.getBlock().setType(Material.AIR); |
|||
} |
|||
} |
|||
|
|||
public void addGoal() { |
|||
this.goals = this.goals + 1; |
|||
} |
|||
|
|||
public int getGoals() { |
|||
return goals; |
|||
} |
|||
|
|||
public void addPlayer(Player p) { |
|||
if (!players.contains(p)) { |
|||
players.add(p); |
|||
} |
|||
} |
|||
|
|||
public void removePlayer(Player p) { |
|||
if (players.contains(p)) { |
|||
players.remove(p); |
|||
} |
|||
} |
|||
|
|||
public ArrayList<Player> getTeamPlayers() { |
|||
return players; |
|||
} |
|||
|
|||
public int getTeamSize() { |
|||
return players.size(); |
|||
} |
|||
|
|||
} |
@ -1,7 +0,0 @@ |
|||
package cx.sfy.TheBridge.utils; |
|||
|
|||
public class PaperOnly { |
|||
|
|||
|
|||
|
|||
} |
Loading…
Reference in new issue