Ivan_number_one

aaa

May 31st, 2023
33
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.70 KB | None | 0 0
  1. package com.raspredelyator;
  2.  
  3. import org.bukkit.Bukkit;
  4. import org.bukkit.ChatColor;
  5. import org.bukkit.Location;
  6. import org.bukkit.entity.Player;
  7. import org.bukkit.event.EventHandler;
  8. import org.bukkit.event.Listener;
  9. import org.bukkit.event.player.PlayerJoinEvent;
  10. import org.bukkit.event.player.PlayerQuitEvent;
  11. import org.bukkit.plugin.java.JavaPlugin;
  12. import org.bukkit.scheduler.BukkitRunnable;
  13. import org.bukkit.scoreboard.DisplaySlot;
  14. import org.bukkit.scoreboard.Objective;
  15. import org.bukkit.scoreboard.Score;
  16. import org.bukkit.scoreboard.Scoreboard;
  17. import org.bukkit.scoreboard.Team;
  18.  
  19. import java.util.ArrayList;
  20. import java.util.HashMap;
  21. import java.util.List;
  22. import java.util.Map;
  23.  
  24. public class AutoTeamPlugin extends JavaPlugin implements Listener {
  25. private final Map<String, Team> teams = new HashMap<>();
  26. private final Scoreboard scoreboard = Bukkit.getScoreboardManager().getNewScoreboard();
  27. private final List<Player> players = new ArrayList<>();
  28. private final List<Player> team1 = new ArrayList<>();
  29. private final List<Player> team2 = new ArrayList<>();
  30. private int gameMode = 0;
  31. private int timeLimit = 0;
  32. private int lives = 0;
  33. private int maxLosses = 0;
  34. private int teleportDelay = 60;
  35. private int timerId = -1;
  36. private int timeRemaining;
  37. private int livesRemaining;
  38. private int team1Losses = 0;
  39. private int team2Losses = 0;
  40. private boolean gameStarted = false;
  41.  
  42. @Override
  43. public void onEnable() {
  44. getServer().getPluginManager().registerEvents(this, this);
  45. }
  46.  
  47. @EventHandler
  48. public void onPlayerJoin(PlayerJoinEvent event) {
  49. Player player = event.getPlayer();
  50. players.add(player);
  51. if (gameStarted) {
  52. addPlayerToTeam(player);
  53. }
  54. }
  55.  
  56. @EventHandler
  57. public void onPlayerQuit(PlayerQuitEvent event) {
  58. Player player = event.getPlayer();
  59. players.remove(player);
  60. if (team1.contains(player)) {
  61. team1.remove(player);
  62. } else if (team2.contains(player)) {
  63. team2.remove(player);
  64. }
  65. }
  66.  
  67. public void addPlayerToTeam(Player player) {
  68. if (team1.size() < team2.size()) {
  69. addPlayerToTeam(player, "Team 1");
  70. } else {
  71. addPlayerToTeam(player, "Team 2");
  72. }
  73. }
  74.  
  75. public void addPlayerToTeam(Player player, String teamName) {
  76. Team team = teams.get(teamName).getBukkitTeam();
  77. team.addEntry(player.getName());
  78. if (teamName.equals("Team 1")) {
  79. team1.add(player);
  80. } else {
  81. team2.add(player);
  82. }
  83. }
  84.  
  85. public void removePlayerFromTeam(Player player, String teamName) {
  86. Team team = teams.get(teamName).getBukkitTeam();
  87. team.removeEntry(player.getName());
  88. if (teamName.equals("Team 1")) {
  89. team1.remove(player);
  90. } else {
  91. team2.remove(player);
  92. }
  93. }
  94.  
  95. public void createTeam(String name, ChatColor color) {
  96. Team team = scoreboard.registerNewTeam(name);
  97. team.setPrefix(color.toString());
  98. teams.put(name, new Team(name, team));
  99. }
  100.  
  101. public void startGame(int gameMode, int timeLimit, int lives, int maxLosses) {
  102. this.gameMode = gameMode;
  103. this.timeLimit = timeLimit;
  104. this.lives = lives;
  105. this.maxLosses = maxLosses;
  106. this.timeRemaining = timeLimit;
  107. this.livesRemaining = lives;
  108. this.team1Losses = 0;
  109. this.team2Losses = 0;
  110. this.gameStarted = true;
  111.  
  112. // Create teams
  113. createTeam("Team 1", ChatColor.RED);
  114. createTeam("Team 2", ChatColor.BLUE);
  115.  
  116. // Add players to teams
  117. for (Player player : players) {
  118. addPlayerToTeam(player);
  119. }
  120.  
  121. // Start teleport timer
  122. startTeleportTimer();
  123.  
  124. // Start game timer
  125. startGameTimer();
  126. }
  127.  
  128. public void startTeleportTimer() {
  129. if (players.size() == 2) {
  130. timerId = Bukkit.getScheduler().scheduleSyncDelayedTask(this, new Runnable() {
  131. public void run() {
  132. teleportPlayers();
  133. }
  134. }, teleportDelay * 20);
  135. } else if (players.size() == 3) {
  136. Bukkit.getScheduler().cancelTask(timerId);
  137. timerId = Bukkit.getScheduler().scheduleSyncDelayedTask(this, new Runnable() {
  138. public void run() {
  139. teleportPlayers();
  140. }
  141. }, 10 * 20);
  142. }
  143. }
  144.  
  145. public void teleportPlayers() {
  146. for (Player player : players) {
  147. if (team1.contains(player)) {
  148. player.teleport(new Location(player.getWorld(), 0, 64, 0));
  149. } else if (team2.contains(player)) {
  150. player.teleport(new Location(player.getWorld(), 100, 64, 100));
  151. }
  152. }
  153. }
  154.  
  155. public void startGameTimer() {
  156. Objective objective = scoreboard.registerNewObjective("timer", "dummy", "Time Remaining");
  157. objective.setDisplaySlot(DisplaySlot.SIDEBAR);
  158.  
  159. new BukkitRunnable() {
  160. @Override
  161. public void run() {
  162. timeRemaining--;
  163. objective.getScore(ChatColor.RESET + "Time:").setScore(timeRemaining);
  164.  
  165. if (timeRemaining <= 0) {
  166. endGame();
  167. }
  168. }
  169. }.runTaskTimer(this, 0, 20);
  170. }
  171.  
  172. public void endGame() {
  173. // Determine winning team
  174. Team winningTeam = null;
  175. int maxPoints = 0;
  176. if (gameMode == 1) {
  177. // Time-based game mode
  178. for (Team team : teams.values()) {
  179. if (team.getPoints() > maxPoints) {
  180. winningTeam = team;
  181. maxPoints = team.getPoints();
  182. }
  183. }
  184. } else if (gameMode == 2) {
  185. // Normal game mode
  186. if (team1Losses < team2Losses) {
  187. winningTeam = teams.get("Team 1").getBukkitTeam();
  188. } else if (team2Losses < team1Losses) {
  189. winningTeam = teams.get("Team 2").getBukkitTeam();
  190. }
  191. } else if (gameMode == 3) {
  192. // Points or lives game mode
  193. if (team1Losses >= maxLosses) {
  194. winningTeam = teams.get("Team 2").getBukkitTeam();
  195. } else if (team2Losses >= maxLosses) {
  196. winningTeam = teams.get("Team 1").getBukkitTeam();
  197. } else if (livesRemaining <= 0) {
  198. if (team1Losses < team2Losses) {
  199. winningTeam = teams.get("Team 1").getBukkitTeam();
  200. } else if (team2Losses < team1Losses)
Advertisement
Add Comment
Please, Sign In to add comment