use of au.com.mineauz.minigames.MinigamePlayer in project Minigames by AddstarMC.
the class ScoreCommand method onCommand.
@Override
public boolean onCommand(CommandSender sender, Minigame minigame, String label, String[] args) {
if (args != null && args.length >= 2) {
MinigamePlayer ply = null;
TeamColor color = TeamColor.matchColor(args[1]);
if (color == null) {
List<Player> plys = plugin.getServer().matchPlayer(args[1]);
if (!plys.isEmpty()) {
ply = plugin.pdata.getMinigamePlayer(plys.get(0));
} else {
sender.sendMessage(ChatColor.RED + "No player or team found by the name " + args[1]);
return true;
}
}
if (args[0].equalsIgnoreCase("get") && args.length >= 2) {
if (ply != null) {
if (ply.isInMinigame()) {
sender.sendMessage(ChatColor.GRAY + ply.getName() + "'s Score: " + ChatColor.GREEN + ply.getScore());
} else {
sender.sendMessage(ChatColor.RED + ply.getName() + " is not playing a Minigame!");
}
} else if (color != null) {
if (args.length >= 3) {
Minigame mg = null;
if (plugin.mdata.hasMinigame(args[2])) {
mg = plugin.mdata.getMinigame(args[2]);
} else {
sender.sendMessage(ChatColor.RED + "No Minigame found by the name " + args[2]);
return true;
}
TeamsModule tmod = TeamsModule.getMinigameModule(mg);
if (mg.isTeamGame()) {
if (tmod.hasTeam(color)) {
Team t = tmod.getTeam(color);
sender.sendMessage(color.getColor() + t.getDisplayName() + ChatColor.GRAY + " score in " + mg.getName(false) + ": " + ChatColor.GREEN + t.getScore());
} else {
sender.sendMessage(ChatColor.RED + mg.getName(false) + " does not have a " + color.toString().toLowerCase() + " team.");
}
} else {
sender.sendMessage(ChatColor.RED + mg.getName(false) + " is not a team Minigame!");
return true;
}
} else {
sender.sendMessage(ChatColor.RED + "This command requires a Minigame name as the last argument!");
}
}
return true;
} else if (args[0].equalsIgnoreCase("set") && args.length >= 3) {
int score = 0;
if (args[2].matches("-?[0-9]+")) {
score = Integer.parseInt(args[2]);
} else {
sender.sendMessage(ChatColor.RED + args[2] + " is not a valid number!");
return true;
}
if (ply != null) {
if (ply.isInMinigame()) {
ply.setScore(score);
ply.getMinigame().setScore(ply, ply.getScore());
sender.sendMessage(ChatColor.GRAY + ply.getName() + "'s score has been set to " + score);
if (ply.getMinigame().getMaxScore() != 0 && score >= ply.getMinigame().getMaxScorePerPlayer()) {
plugin.pdata.endMinigame(ply);
}
} else {
sender.sendMessage(ChatColor.RED + ply.getName() + " is not playing a Minigame!");
}
} else if (color != null) {
if (args.length >= 4) {
Minigame mg = null;
if (plugin.mdata.hasMinigame(args[3])) {
mg = plugin.mdata.getMinigame(args[3]);
} else {
sender.sendMessage(ChatColor.RED + "No Minigame found by the name " + args[2]);
return true;
}
TeamsModule tmod = TeamsModule.getMinigameModule(mg);
if (mg.isTeamGame() && mg.hasPlayers()) {
Team t = null;
if (tmod.hasTeam(color)) {
t = tmod.getTeam(color);
t.setScore(score);
sender.sendMessage(t.getChatColor() + t.getDisplayName() + ChatColor.GRAY + " score has been set to " + score);
} else {
sender.sendMessage(ChatColor.RED + mg.getName(false) + " does not have a " + color.toString().toLowerCase() + " team.");
return true;
}
if (mg.getMaxScore() != 0 && score >= mg.getMaxScorePerPlayer()) {
List<MinigamePlayer> w = new ArrayList<MinigamePlayer>(t.getPlayers());
List<MinigamePlayer> l = new ArrayList<MinigamePlayer>(mg.getPlayers().size() - t.getPlayers().size());
for (Team te : tmod.getTeams()) {
if (te != t) {
l.addAll(te.getPlayers());
}
}
plugin.pdata.endMinigame(mg, w, l);
}
} else if (!mg.hasPlayers()) {
sender.sendMessage(ChatColor.RED + mg.getName(false) + " has no players playing!");
} else {
sender.sendMessage(ChatColor.RED + mg.getName(false) + " is not a team Minigame!");
}
} else {
sender.sendMessage(ChatColor.RED + "This command requires a Minigame name as the last argument!");
}
}
return true;
} else if (args[0].equalsIgnoreCase("add") && args.length >= 3) {
int score = 0;
if (args[2].matches("-?[0-9]+")) {
score = Integer.parseInt(args[2]);
} else {
score = 1;
}
if (ply != null) {
if (ply.isInMinigame()) {
ply.addScore(score);
ply.getMinigame().setScore(ply, ply.getScore());
sender.sendMessage(ChatColor.GRAY + "Added " + score + " to " + ply.getName() + "'s score, new score: " + ply.getScore());
if (ply.getMinigame().getMaxScore() != 0 && ply.getScore() >= ply.getMinigame().getMaxScorePerPlayer()) {
plugin.pdata.endMinigame(ply);
}
} else {
sender.sendMessage(ChatColor.RED + ply.getName() + " is not playing a Minigame!");
}
} else if (color != null) {
Minigame mg = null;
String mgName = null;
if (args.length == 4) {
mgName = args[3];
} else {
mgName = args[2];
}
if (plugin.mdata.hasMinigame(mgName)) {
mg = plugin.mdata.getMinigame(mgName);
} else {
sender.sendMessage(ChatColor.RED + "No Minigame found by the name " + mgName);
return true;
}
TeamsModule tmod = TeamsModule.getMinigameModule(mg);
if (mg.isTeamGame() && mg.hasPlayers()) {
Team team = null;
if (tmod.hasTeam(color)) {
team = tmod.getTeam(color);
team.addScore(score);
sender.sendMessage(ChatColor.GRAY + "Added " + score + " to " + team.getChatColor() + team.getDisplayName() + ChatColor.GRAY + " score, new score: " + team.getScore());
} else {
sender.sendMessage(ChatColor.RED + mg.getName(false) + " does not have a " + color.toString().toLowerCase() + " team.");
return true;
}
if (mg.getMaxScore() != 0 && team.getScore() >= mg.getMaxScorePerPlayer()) {
List<MinigamePlayer> w = new ArrayList<MinigamePlayer>(team.getPlayers());
List<MinigamePlayer> l = new ArrayList<MinigamePlayer>(mg.getPlayers().size() - team.getPlayers().size());
for (Team te : tmod.getTeams()) {
if (te != team) {
l.addAll(te.getPlayers());
}
}
plugin.pdata.endMinigame(mg, w, l);
}
} else if (!mg.hasPlayers()) {
sender.sendMessage(ChatColor.RED + mg.getName(false) + " has no players playing!");
} else {
sender.sendMessage(ChatColor.RED + mg.getName(false) + " is not a team Minigame!");
}
}
return true;
}
}
return false;
}
use of au.com.mineauz.minigames.MinigamePlayer in project Minigames by AddstarMC.
the class SpectateCommand method onCommand.
@Override
public boolean onCommand(CommandSender sender, Minigame minigame, String label, String[] args) {
if (args != null) {
if (plugin.mdata.hasMinigame(args[0])) {
MinigamePlayer ply = plugin.pdata.getMinigamePlayer((Player) sender);
Minigame mgm = plugin.mdata.getMinigame(args[0]);
plugin.pdata.spectateMinigame(ply, mgm);
} else {
sender.sendMessage(ChatColor.RED + "No Minigame found by the name: " + args[0]);
}
return true;
}
return false;
}
use of au.com.mineauz.minigames.MinigamePlayer in project Minigames by AddstarMC.
the class StartCommand method onCommand.
@Override
public boolean onCommand(CommandSender sender, Minigame minigame, String label, String[] args) {
if (args != null) {
Minigame mgm = plugin.mdata.getMinigame(args[0]);
if (mgm != null) {
if (!mgm.isEnabled() && mgm.getType() == MinigameType.GLOBAL) {
MinigamePlayer caller = null;
if (sender instanceof Player)
caller = plugin.pdata.getMinigamePlayer((Player) sender);
plugin.mdata.startGlobalMinigame(mgm, caller);
} else if (mgm.getType() != MinigameType.GLOBAL && mgm.getType() != MinigameType.SINGLEPLAYER && mgm.hasPlayers()) {
if (mgm.getMpTimer() == null || mgm.getMpTimer().getPlayerWaitTimeLeft() != 0) {
if (mgm.getMpTimer() == null) {
mgm.setMpTimer(new MultiplayerTimer(mgm));
}
mgm.getMpTimer().setPlayerWaitTime(0);
mgm.getMpTimer().startTimer();
} else
sender.sendMessage(ChatColor.RED + mgm.getName(false) + " has already started.");
} else if (mgm.isEnabled() && mgm.getType() == MinigameType.GLOBAL) {
sender.sendMessage(ChatColor.RED + mgm.getName(false) + " is already running!");
}
} else {
sender.sendMessage(ChatColor.RED + "No Global or Multiplayer Minigame found by the name " + args[0]);
}
return true;
}
return false;
}
use of au.com.mineauz.minigames.MinigamePlayer in project Minigames by AddstarMC.
the class MultiplayerType method endMinigame.
@Override
public void endMinigame(List<MinigamePlayer> winners, List<MinigamePlayer> losers, Minigame mgm) {
if (mgm.isTeamGame()) {
for (MinigamePlayer player : winners) {
player.removeTeam();
}
for (MinigamePlayer player : losers) {
player.removeTeam();
}
for (Team t : TeamsModule.getMinigameModule(mgm).getTeams()) {
t.resetScore();
}
}
if (mgm.getMpTimer() == null)
return;
mgm.getMpTimer().setStartWaitTime(0);
mgm.setMpTimer(null);
}
use of au.com.mineauz.minigames.MinigamePlayer in project Minigames by AddstarMC.
the class MultiplayerType method joinMinigame.
@Override
public boolean joinMinigame(MinigamePlayer player, Minigame mgm) {
if (!LobbySettingsModule.getMinigameModule(mgm).canInteractPlayerWait())
player.setCanInteract(false);
if (!LobbySettingsModule.getMinigameModule(mgm).canMovePlayerWait())
player.setFrozen(true);
if (!mgm.isWaitingForPlayers() && !mgm.hasStarted()) {
if (mgm.getMpTimer() == null && mgm.getPlayers().size() == mgm.getMinPlayers()) {
mgm.setMpTimer(new MultiplayerTimer(mgm));
mgm.getMpTimer().startTimer();
if (mgm.getPlayers().size() == mgm.getMaxPlayers()) {
mgm.getMpTimer().setPlayerWaitTime(0);
mdata.sendMinigameMessage(mgm, MinigameUtils.getLang("minigame.skipWaitTime"), "info", null);
}
} else if (mgm.getMpTimer() != null && mgm.getPlayers().size() == mgm.getMaxPlayers()) {
mgm.getMpTimer().setPlayerWaitTime(0);
mdata.sendMinigameMessage(mgm, MinigameUtils.getLang("minigame.skipWaitTime"), "info", null);
} else if (mgm.getMpTimer() == null) {
int neededPlayers = mgm.getMinPlayers() - mgm.getPlayers().size();
mdata.sendMinigameMessage(mgm, MinigameUtils.formStr("minigame.waitingForPlayers", neededPlayers), null, null);
}
} else if (mgm.hasStarted()) {
player.setLatejoining(true);
//TODO: Late join delay variable
player.sendMessage(MinigameUtils.formStr("minigame.lateJoin", 5));
final MinigamePlayer fply = player;
final Minigame fmgm = mgm;
if (mgm.isTeamGame()) {
Team smTeam = null;
for (Team team : TeamsModule.getMinigameModule(mgm).getTeams()) {
if (smTeam == null || team.getPlayers().size() < smTeam.getPlayers().size()) {
smTeam = team;
}
}
smTeam.addPlayer(player);
player.sendMessage(String.format(smTeam.getAssignMessage(), smTeam.getChatColor() + smTeam.getDisplayName()), null);
final Team fteam = smTeam;
player.setLateJoinTimer(Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() {
@Override
public void run() {
if (fply.isInMinigame()) {
List<Location> locs = new ArrayList<Location>();
if (TeamsModule.getMinigameModule(fmgm).hasTeamStartLocations()) {
locs.addAll(fteam.getStartLocations());
} else {
locs.addAll(fmgm.getStartLocations());
}
Collections.shuffle(locs);
fply.teleport(locs.get(0));
fply.getLoadout().equiptLoadout(fply);
fply.setLatejoining(false);
fply.setFrozen(false);
fply.setCanInteract(true);
fply.setLateJoinTimer(-1);
}
}
}, //TODO: Latejoin variable
5 * 20));
} else {
player.setLateJoinTimer(Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() {
@Override
public void run() {
if (fply.isInMinigame()) {
List<Location> locs = new ArrayList<Location>(fmgm.getStartLocations());
Collections.shuffle(locs);
fply.teleport(locs.get(0));
fply.getLoadout().equiptLoadout(fply);
fply.setLatejoining(false);
fply.setFrozen(false);
fply.setCanInteract(true);
fply.setLateJoinTimer(-1);
}
}
}, //TODO: Latejoin variable
5 * 20));
}
player.getPlayer().setScoreboard(mgm.getScoreboardManager());
mgm.setScore(player, 1);
mgm.setScore(player, 0);
}
return true;
}
Aggregations