HungerGames
HungerGames copied to clipboard
autojoin
package tk.shanebee.hg.commands;
import org.bukkit.entity.Player;
import tk.shanebee.hg.HG;
import tk.shanebee.hg.game.Game;
import tk.shanebee.hg.util.Util;
import tk.shanebee.hg.Status;
import java.util.List;
import java.util.Arrays;
import org.bukkit.Bukkit;
public class AutoJoinCmd extends BaseCmd {
public AutoJoinCmd() {
forcePlayer = true;
cmdName = "autojoin";
forceInGame = false;
argLength = 1;
usage = "";
}
@Override
public boolean run() {
if (playerManager.hasPlayerData(player) || playerManager.hasSpectatorData(player)) {
Util.scm(player, HG.getPlugin().getLang().cmd_join_in_game);
} else {
Game targetGame = null;
for (Game game : plugin.getGames()) {
if (game == null) {
continue;
}
if (game.getGamePlayerData().getPlayers().size() < game.getGameArenaData().getMaxPlayers() &&
game.getGameArenaData().getStatus() != Status.RUNNING) {
targetGame = game;
break;
}
}
if (targetGame != null) {
if (!HG.getParty().hasParty(player)) {
targetGame.getGamePlayerData().join(player, true);
return true;
} else if (HG.getParty().isOwner(player) &&
(targetGame.getGamePlayerData().getPlayers().size() + HG.getParty().partySize(player)) <= targetGame.getGameArenaData().getMaxPlayers()) {
List<Player> party = HG.getParty().getMembers(player);
final Game finalTargetGame = targetGame;
for (int i = 0; i < party.size(); i++) {
Player p = party.get(i);
if (i != 0) {
Bukkit.getScheduler().runTaskLater(HG.getPlugin(), () -> finalTargetGame.getGamePlayerData().join(p, true), 20);
continue;
}
finalTargetGame.getGamePlayerData().join(p, true);
}
} else if (!HG.getParty().isOwner(player)) {
player.sendMessage("You are in a party but not the leader, unable to join game");
} else {
player.sendMessage("Party is too large to join this arena");
}
} else {
Util.scm(player, "No available arenas to join.");
}
}
return true;
}
}