Advertisement
Guest User

Untitled

a guest
Dec 15th, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.95 KB | None | 0 0
  1. package net.maxmine.luckyrace.factory;
  2.  
  3. import com.google.common.collect.Lists;
  4. import lombok.Getter;
  5. import lombok.Setter;
  6. import net.maxmine.luckyrace.Main;
  7. import net.maxmine.luckyrace.board.Board;
  8. import net.maxmine.luckyrace.board.DeathMathBoard;
  9. import net.maxmine.luckyrace.game.RaceGame;
  10. import net.maxmine.luckyrace.users.RaceUser;
  11. import org.bukkit.Bukkit;
  12. import org.bukkit.Location;
  13. import org.bukkit.Material;
  14. import org.bukkit.configuration.file.FileConfiguration;
  15. import org.bukkit.entity.Player;
  16. import org.bukkit.inventory.ItemStack;
  17. import ru.maxmine.api.Management;
  18. import ru.maxmine.api.core.Core;
  19. import ru.maxmine.api.economy.EconomyManager;
  20. import ru.maxmine.api.games.Game;
  21. import ru.maxmine.api.games.GameType;
  22. import ru.maxmine.api.games.ModeType;
  23. import ru.maxmine.api.stats.StatsManager;
  24. import ru.maxmine.api.users.UserManager;
  25. import ru.maxmine.api.utils.CageUtils;
  26. import ru.maxmine.api.utils.ItemUtils;
  27. import ru.maxmine.api.utils.LocationUtils;
  28. import ru.maxmine.api.utils.TimerUtils;
  29.  
  30. import java.util.List;
  31. import java.util.Random;
  32.  
  33. public class GameFactory extends Game {
  34.  
  35. private ItemStack back = ItemUtils.getBuilder(Material.BLAZE_POWDER).setName("§6Вернуться на последний чекпоинт").build();
  36.  
  37. @Getter
  38. private static GameFactory factory;
  39.  
  40. @Getter
  41. @Setter
  42. private int endTime = 600;
  43.  
  44. private int time = 10;
  45.  
  46. @Getter
  47. @Setter
  48. private List<Location> spawns = Lists.newArrayList();
  49.  
  50. private int shutdown = 10;
  51.  
  52. private EconomyManager economy = Management.getEconomy();
  53. private UserManager users = Management.getUsers();
  54. private StatsManager stats = Management.getStats();
  55.  
  56.  
  57.  
  58. public GameFactory(FileConfiguration configuration) {
  59. super("Lucky Race", 4, configuration.getString("LuckyRace.MapName"), Main.isTeamMode() ? ModeType.TEAM : ModeType.TEAM, GameType.LW);
  60. factory = this;
  61.  
  62. setSpawnLocation(LocationUtils.stringToLoc(configuration.getString("locations.lobby")));
  63. configuration.getStringList("Locations").forEach(s -> {
  64. Location loc = LocationUtils.stringToLoc(s);
  65. if(loc.getWorld() == null) loc.setWorld(Bukkit.getWorld(getMap()));
  66. spawns.add(loc);
  67. Bukkit.getLogger().info(s);
  68. });
  69.  
  70. }
  71.  
  72. @Override
  73. public void onKill(Player player, Player killer) {
  74. }
  75.  
  76. @Override
  77. public void onStart() {
  78. Bukkit.getOnlinePlayers().forEach(Board::new);
  79.  
  80. int player = 0;
  81.  
  82. for (Player p : Bukkit.getOnlinePlayers()) {
  83. Location loc = spawns.get(player);
  84. if(loc.getWorld() == null) loc.setWorld(Bukkit.getWorld(getMap()));
  85. p.teleport(CageUtils.createCage(loc, 1));
  86. p.getInventory().clear();
  87. p.getInventory().setItem(8, back);
  88. }
  89. TimerUtils.startTimerTask("Start", () -> {
  90. Bukkit.getOnlinePlayers().forEach(all -> all.sendTitle("§c§lLucky Race",getTime(time)));
  91.  
  92. if(time == 1) {
  93. TimerUtils.stopTask("Start");
  94.  
  95. Bukkit.broadcastMessage("§8▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅");
  96. Bukkit.broadcastMessage(" §cLucky Race");
  97. Bukkit.broadcastMessage(" Проходи паркур и ломай лакиблоки из которых тебе могут");
  98. Bukkit.broadcastMessage(" выпасть различные вещи. Чем дальше ты проходишь - ");
  99. Bukkit.broadcastMessage(" тем лучше лут тебе пможет выпасть.");
  100. Bukkit.broadcastMessage(" §a§lПоехали!");
  101. Bukkit.broadcastMessage("§8▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅");
  102.  
  103. startEndTime();
  104. }
  105.  
  106. time--;
  107. }, 20L);
  108. }
  109. @Override
  110. public void onEnd(String winner) {
  111. Random random = new Random();
  112. TimerUtils.startTimerTask("End",() -> {
  113. if(shutdown == 5 ) {
  114. Bukkit.broadcastMessage("§cПерезагрузка сервера через несколько секунд...");
  115. }
  116. if(shutdown <= 1) {
  117. TimerUtils.stopTask("End");
  118. Bukkit.getOnlinePlayers().forEach(all -> Core.redirect(all.getName(), "LRLobby-" + random.nextInt(3)+1));
  119. Bukkit.shutdown();
  120. }
  121. shutdown--;
  122. },20L);
  123.  
  124. if(winner.equals("Unknown")) {
  125. return;
  126. }
  127.  
  128. for (Player all : Bukkit.getOnlinePlayers()) {
  129. all.teleport(getSpawnLocation());
  130. all.setHealth(all.getMaxHealth());
  131. all.setLevel(0);
  132. all.setExp(0);
  133. all.getInventory().clear();
  134. all.getPlayer().closeInventory();
  135. all.getPlayer().getInventory().clear();
  136. all.getPlayer().getInventory().setArmorContents(null);
  137. }
  138. }
  139.  
  140. public void startEndTime() {
  141. TimerUtils.startTimerTask("End", () -> {
  142. if(endTime <= 1) {
  143. TimerUtils.stopTask("End");
  144. Bukkit.broadcastMessage(Main.PREFIX + "Время истекло, начинается битва");
  145. startDeathMath();
  146. }
  147. if(endTime <= 5) {
  148. Bukkit.getOnlinePlayers().forEach(all -> all.sendTitle(getEnd(), ""));
  149. }
  150. endTime--;
  151. },20L);
  152. }
  153.  
  154. public void End() {
  155. endTime = 300;
  156. TimerUtils.startTimerTask("End",() -> {
  157. if(endTime <= 1) {
  158. TimerUtils.stopTask("End");
  159. onEnd("Unknown");
  160. }
  161. endTime--;
  162. },20L);
  163. }
  164. public void startDeathMath() {
  165. for(RaceUser user : RaceGame.getGame().getAlivePlayers()) {
  166. user.setHealth(2);
  167. }
  168.  
  169. Bukkit.broadcastMessage("§8▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅");
  170. Bukkit.broadcastMessage(" §cLucky Race Final");
  171. Bukkit.broadcastMessage(" И так, Вы попали на очень зловещую арену, где все сражения");
  172. Bukkit.broadcastMessage(" очень жестоки. Ваша задача - убить всех и остаться последним");
  173. Bukkit.broadcastMessage(" выжившим, у каждого из вас будет по 2 попытки, если эти попытки");
  174. Bukkit.broadcastMessage(" Вы истратите, Вы проиграете и больше не сможете сражаться!");
  175. Bukkit.broadcastMessage(" §a§lПоехали!");
  176. Bukkit.broadcastMessage("§8▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅");
  177.  
  178. End();
  179. Bukkit.getOnlinePlayers().forEach(DeathMathBoard::new);
  180.  
  181. }
  182. public String getTime(int time) {
  183. switch (time) {
  184.  
  185. case 3: {
  186. return "§6" + time;
  187. }
  188. case 2: {
  189. return "§c" + time;
  190. }
  191. case 1: {
  192. return "§c" + time;
  193. }
  194. }
  195. return "§a" + time;
  196.  
  197. }
  198. public String getEnd() {
  199. switch (endTime) {
  200. case 5: {
  201. return "§a➄";
  202. }
  203. case 4: {
  204. return "§a➃";
  205. }
  206. case 3: {
  207. return "§6➂";
  208. }
  209. case 2: {
  210. return "§c➁";
  211. }
  212. case 1: {
  213. return "§c➀";
  214. }
  215. case 0: {
  216. return "§aПОЕХАЛИ";
  217. }
  218. }
  219. return null;
  220. }
  221. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement