Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.raspredelyator;
- import org.bukkit.Bukkit;
- import org.bukkit.ChatColor;
- import org.bukkit.Location;
- import org.bukkit.entity.Player;
- import org.bukkit.event.EventHandler;
- import org.bukkit.event.Listener;
- import org.bukkit.event.player.PlayerJoinEvent;
- import org.bukkit.event.player.PlayerQuitEvent;
- import org.bukkit.plugin.java.JavaPlugin;
- import org.bukkit.scheduler.BukkitRunnable;
- import org.bukkit.scoreboard.DisplaySlot;
- import org.bukkit.scoreboard.Objective;
- import org.bukkit.scoreboard.Score;
- import org.bukkit.scoreboard.Scoreboard;
- import org.bukkit.scoreboard.Team;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- public class AutoTeamPlugin extends JavaPlugin implements Listener {
- private final Map<String, Team> teams = new HashMap<>();
- private final Scoreboard scoreboard = Bukkit.getScoreboardManager().getNewScoreboard();
- private final List<Player> players = new ArrayList<>();
- private final List<Player> team1 = new ArrayList<>();
- private final List<Player> team2 = new ArrayList<>();
- private int gameMode = 0;
- private int timeLimit = 0;
- private int lives = 0;
- private int maxLosses = 0;
- private int teleportDelay = 60;
- private int timerId = -1;
- private int timeRemaining;
- private int livesRemaining;
- private int team1Losses = 0;
- private int team2Losses = 0;
- private boolean gameStarted = false;
- @Override
- public void onEnable() {
- getServer().getPluginManager().registerEvents(this, this);
- }
- @EventHandler
- public void onPlayerJoin(PlayerJoinEvent event) {
- Player player = event.getPlayer();
- players.add(player);
- if (gameStarted) {
- addPlayerToTeam(player);
- }
- }
- @EventHandler
- public void onPlayerQuit(PlayerQuitEvent event) {
- Player player = event.getPlayer();
- players.remove(player);
- if (team1.contains(player)) {
- team1.remove(player);
- } else if (team2.contains(player)) {
- team2.remove(player);
- }
- }
- public void addPlayerToTeam(Player player) {
- if (team1.size() < team2.size()) {
- addPlayerToTeam(player, "Team 1");
- } else {
- addPlayerToTeam(player, "Team 2");
- }
- }
- public void addPlayerToTeam(Player player, String teamName) {
- Team team = teams.get(teamName).getBukkitTeam();
- team.addEntry(player.getName());
- if (teamName.equals("Team 1")) {
- team1.add(player);
- } else {
- team2.add(player);
- }
- }
- public void removePlayerFromTeam(Player player, String teamName) {
- Team team = teams.get(teamName).getBukkitTeam();
- team.removeEntry(player.getName());
- if (teamName.equals("Team 1")) {
- team1.remove(player);
- } else {
- team2.remove(player);
- }
- }
- public void createTeam(String name, ChatColor color) {
- Team team = scoreboard.registerNewTeam(name);
- team.setPrefix(color.toString());
- teams.put(name, new Team(name, team));
- }
- public void startGame(int gameMode, int timeLimit, int lives, int maxLosses) {
- this.gameMode = gameMode;
- this.timeLimit = timeLimit;
- this.lives = lives;
- this.maxLosses = maxLosses;
- this.timeRemaining = timeLimit;
- this.livesRemaining = lives;
- this.team1Losses = 0;
- this.team2Losses = 0;
- this.gameStarted = true;
- // Create teams
- createTeam("Team 1", ChatColor.RED);
- createTeam("Team 2", ChatColor.BLUE);
- // Add players to teams
- for (Player player : players) {
- addPlayerToTeam(player);
- }
- // Start teleport timer
- startTeleportTimer();
- // Start game timer
- startGameTimer();
- }
- public void startTeleportTimer() {
- if (players.size() == 2) {
- timerId = Bukkit.getScheduler().scheduleSyncDelayedTask(this, new Runnable() {
- public void run() {
- teleportPlayers();
- }
- }, teleportDelay * 20);
- } else if (players.size() == 3) {
- Bukkit.getScheduler().cancelTask(timerId);
- timerId = Bukkit.getScheduler().scheduleSyncDelayedTask(this, new Runnable() {
- public void run() {
- teleportPlayers();
- }
- }, 10 * 20);
- }
- }
- public void teleportPlayers() {
- for (Player player : players) {
- if (team1.contains(player)) {
- player.teleport(new Location(player.getWorld(), 0, 64, 0));
- } else if (team2.contains(player)) {
- player.teleport(new Location(player.getWorld(), 100, 64, 100));
- }
- }
- }
- public void startGameTimer() {
- Objective objective = scoreboard.registerNewObjective("timer", "dummy", "Time Remaining");
- objective.setDisplaySlot(DisplaySlot.SIDEBAR);
- new BukkitRunnable() {
- @Override
- public void run() {
- timeRemaining--;
- objective.getScore(ChatColor.RESET + "Time:").setScore(timeRemaining);
- if (timeRemaining <= 0) {
- endGame();
- }
- }
- }.runTaskTimer(this, 0, 20);
- }
- public void endGame() {
- // Determine winning team
- Team winningTeam = null;
- int maxPoints = 0;
- if (gameMode == 1) {
- // Time-based game mode
- for (Team team : teams.values()) {
- if (team.getPoints() > maxPoints) {
- winningTeam = team;
- maxPoints = team.getPoints();
- }
- }
- } else if (gameMode == 2) {
- // Normal game mode
- if (team1Losses < team2Losses) {
- winningTeam = teams.get("Team 1").getBukkitTeam();
- } else if (team2Losses < team1Losses) {
- winningTeam = teams.get("Team 2").getBukkitTeam();
- }
- } else if (gameMode == 3) {
- // Points or lives game mode
- if (team1Losses >= maxLosses) {
- winningTeam = teams.get("Team 2").getBukkitTeam();
- } else if (team2Losses >= maxLosses) {
- winningTeam = teams.get("Team 1").getBukkitTeam();
- } else if (livesRemaining <= 0) {
- if (team1Losses < team2Losses) {
- winningTeam = teams.get("Team 1").getBukkitTeam();
- } else if (team2Losses < team1Losses)
Advertisement
Add Comment
Please, Sign In to add comment