Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package net.maxmine.luckyrace.factory;
- import com.google.common.collect.Lists;
- import lombok.Getter;
- import lombok.Setter;
- import net.maxmine.luckyrace.Main;
- import net.maxmine.luckyrace.board.Board;
- import net.maxmine.luckyrace.board.DeathMathBoard;
- import net.maxmine.luckyrace.game.RaceGame;
- import net.maxmine.luckyrace.users.RaceUser;
- import org.bukkit.Bukkit;
- import org.bukkit.Location;
- import org.bukkit.Material;
- import org.bukkit.configuration.file.FileConfiguration;
- import org.bukkit.entity.Player;
- import org.bukkit.inventory.ItemStack;
- import ru.maxmine.api.Management;
- import ru.maxmine.api.core.Core;
- import ru.maxmine.api.economy.EconomyManager;
- import ru.maxmine.api.games.Game;
- import ru.maxmine.api.games.GameType;
- import ru.maxmine.api.games.ModeType;
- import ru.maxmine.api.stats.StatsManager;
- import ru.maxmine.api.users.UserManager;
- import ru.maxmine.api.utils.CageUtils;
- import ru.maxmine.api.utils.ItemUtils;
- import ru.maxmine.api.utils.LocationUtils;
- import ru.maxmine.api.utils.TimerUtils;
- import java.util.List;
- import java.util.Random;
- public class GameFactory extends Game {
- private ItemStack back = ItemUtils.getBuilder(Material.BLAZE_POWDER).setName("§6Вернуться на последний чекпоинт").build();
- @Getter
- private static GameFactory factory;
- @Getter
- @Setter
- private int endTime = 600;
- private int time = 10;
- @Getter
- @Setter
- private List<Location> spawns = Lists.newArrayList();
- private int shutdown = 10;
- private EconomyManager economy = Management.getEconomy();
- private UserManager users = Management.getUsers();
- private StatsManager stats = Management.getStats();
- public GameFactory(FileConfiguration configuration) {
- super("Lucky Race", 4, configuration.getString("LuckyRace.MapName"), Main.isTeamMode() ? ModeType.TEAM : ModeType.TEAM, GameType.LW);
- factory = this;
- setSpawnLocation(LocationUtils.stringToLoc(configuration.getString("locations.lobby")));
- configuration.getStringList("Locations").forEach(s -> {
- Location loc = LocationUtils.stringToLoc(s);
- if(loc.getWorld() == null) loc.setWorld(Bukkit.getWorld(getMap()));
- spawns.add(loc);
- Bukkit.getLogger().info(s);
- });
- }
- @Override
- public void onKill(Player player, Player killer) {
- }
- @Override
- public void onStart() {
- Bukkit.getOnlinePlayers().forEach(Board::new);
- int player = 0;
- for (Player p : Bukkit.getOnlinePlayers()) {
- Location loc = spawns.get(player);
- if(loc.getWorld() == null) loc.setWorld(Bukkit.getWorld(getMap()));
- p.teleport(CageUtils.createCage(loc, 1));
- p.getInventory().clear();
- p.getInventory().setItem(8, back);
- }
- TimerUtils.startTimerTask("Start", () -> {
- Bukkit.getOnlinePlayers().forEach(all -> all.sendTitle("§c§lLucky Race",getTime(time)));
- if(time == 1) {
- TimerUtils.stopTask("Start");
- Bukkit.broadcastMessage("§8▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅");
- Bukkit.broadcastMessage(" §cLucky Race");
- Bukkit.broadcastMessage(" Проходи паркур и ломай лакиблоки из которых тебе могут");
- Bukkit.broadcastMessage(" выпасть различные вещи. Чем дальше ты проходишь - ");
- Bukkit.broadcastMessage(" тем лучше лут тебе пможет выпасть.");
- Bukkit.broadcastMessage(" §a§lПоехали!");
- Bukkit.broadcastMessage("§8▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅");
- startEndTime();
- }
- time--;
- }, 20L);
- }
- @Override
- public void onEnd(String winner) {
- Random random = new Random();
- TimerUtils.startTimerTask("End",() -> {
- if(shutdown == 5 ) {
- Bukkit.broadcastMessage("§cПерезагрузка сервера через несколько секунд...");
- }
- if(shutdown <= 1) {
- TimerUtils.stopTask("End");
- Bukkit.getOnlinePlayers().forEach(all -> Core.redirect(all.getName(), "LRLobby-" + random.nextInt(3)+1));
- Bukkit.shutdown();
- }
- shutdown--;
- },20L);
- if(winner.equals("Unknown")) {
- return;
- }
- for (Player all : Bukkit.getOnlinePlayers()) {
- all.teleport(getSpawnLocation());
- all.setHealth(all.getMaxHealth());
- all.setLevel(0);
- all.setExp(0);
- all.getInventory().clear();
- all.getPlayer().closeInventory();
- all.getPlayer().getInventory().clear();
- all.getPlayer().getInventory().setArmorContents(null);
- }
- }
- public void startEndTime() {
- TimerUtils.startTimerTask("End", () -> {
- if(endTime <= 1) {
- TimerUtils.stopTask("End");
- Bukkit.broadcastMessage(Main.PREFIX + "Время истекло, начинается битва");
- startDeathMath();
- }
- if(endTime <= 5) {
- Bukkit.getOnlinePlayers().forEach(all -> all.sendTitle(getEnd(), ""));
- }
- endTime--;
- },20L);
- }
- public void End() {
- endTime = 300;
- TimerUtils.startTimerTask("End",() -> {
- if(endTime <= 1) {
- TimerUtils.stopTask("End");
- onEnd("Unknown");
- }
- endTime--;
- },20L);
- }
- public void startDeathMath() {
- for(RaceUser user : RaceGame.getGame().getAlivePlayers()) {
- user.setHealth(2);
- }
- Bukkit.broadcastMessage("§8▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅");
- Bukkit.broadcastMessage(" §cLucky Race Final");
- Bukkit.broadcastMessage(" И так, Вы попали на очень зловещую арену, где все сражения");
- Bukkit.broadcastMessage(" очень жестоки. Ваша задача - убить всех и остаться последним");
- Bukkit.broadcastMessage(" выжившим, у каждого из вас будет по 2 попытки, если эти попытки");
- Bukkit.broadcastMessage(" Вы истратите, Вы проиграете и больше не сможете сражаться!");
- Bukkit.broadcastMessage(" §a§lПоехали!");
- Bukkit.broadcastMessage("§8▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅▅");
- End();
- Bukkit.getOnlinePlayers().forEach(DeathMathBoard::new);
- }
- public String getTime(int time) {
- switch (time) {
- case 3: {
- return "§6" + time;
- }
- case 2: {
- return "§c" + time;
- }
- case 1: {
- return "§c" + time;
- }
- }
- return "§a" + time;
- }
- public String getEnd() {
- switch (endTime) {
- case 5: {
- return "§a➄";
- }
- case 4: {
- return "§a➃";
- }
- case 3: {
- return "§6➂";
- }
- case 2: {
- return "§c➁";
- }
- case 1: {
- return "§c➀";
- }
- case 0: {
- return "§aПОЕХАЛИ";
- }
- }
- return null;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement