From e20ff69281379ca5b87c808cb1d711782a9413b6 Mon Sep 17 00:00:00 2001 From: Sam Date: Wed, 18 Jul 2018 23:52:26 +0100 Subject: [PATCH] Add a border --- .../src/nautilus/game/arcade/game/Game.java | 12 +-- .../arcade/game/games/cakewars/CakeWars.java | 2 +- .../games/cakewars/event/CakeRotEvent.java | 22 +++++ .../game/games/cakewars/modes/OPCakeWars.java | 83 ++++++++++++++++++- .../games/cakewars/team/CakeTeamModule.java | 5 +- .../games/cakewars/ui/CakeResourcePage.java | 2 +- .../arcade/managers/GamePlayerManager.java | 11 ++- 7 files changed, 122 insertions(+), 15 deletions(-) create mode 100644 Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/cakewars/event/CakeRotEvent.java diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/Game.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/Game.java index 81cefa700..cf1db0fb3 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/Game.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/Game.java @@ -14,6 +14,9 @@ import java.util.Set; import java.util.UUID; import java.util.stream.Collectors; +import net.minecraft.server.v1_8_R3.EntityItem; +import net.minecraft.server.v1_8_R3.PacketPlayInUseEntity; + import org.apache.commons.lang3.tuple.Triple; import org.bukkit.Bukkit; import org.bukkit.ChatColor; @@ -83,6 +86,7 @@ import mineplex.core.utils.UtilGameProfile; import mineplex.minecraft.game.classcombat.event.ClassCombatCreatureAllowSpawnEvent; import mineplex.minecraft.game.core.combat.DeathMessageType; import mineplex.minecraft.game.core.combat.event.CombatDeathEvent; + import nautilus.game.arcade.ArcadeFormat; import nautilus.game.arcade.ArcadeManager; import nautilus.game.arcade.GameType; @@ -101,6 +105,7 @@ import nautilus.game.arcade.kit.ChampionsKit; import nautilus.game.arcade.kit.Kit; import nautilus.game.arcade.kit.LinearUpgradeKit; import nautilus.game.arcade.kit.Perk; +import nautilus.game.arcade.managers.GamePlayerManager; import nautilus.game.arcade.managers.chat.ChatStatData; import nautilus.game.arcade.managers.lobby.LobbyManager; import nautilus.game.arcade.missions.BlocksMissionTracker; @@ -126,8 +131,6 @@ import nautilus.game.arcade.stats.StatTracker; import nautilus.game.arcade.stats.WinStatTracker; import nautilus.game.arcade.wineffect.WinEffectManager; import nautilus.game.arcade.world.WorldData; -import net.minecraft.server.v1_8_R3.EntityItem; -import net.minecraft.server.v1_8_R3.PacketPlayInUseEntity; public abstract class Game extends ListenerComponent implements Lifetimed { @@ -414,8 +417,6 @@ public abstract class Game extends ListenerComponent implements Lifetimed Manager = manager; _lifetime.register(this); - // Player List - UtilTabTitle.broadcastHeaderAndFooter(C.cGoldB + gameType.getName(), "Visit " + C.cGreen + "www.mineplex.com" + C.Reset + " for News, Forums and Shop"); // Game _gameType = gameType; @@ -678,6 +679,8 @@ public abstract class Game extends ListenerComponent implements Lifetimed public void prepareToRecruit() { + UtilTabTitle.broadcastHeaderAndFooter(GamePlayerManager.getHeader(this), GamePlayerManager.FOOTER); + generateTeams(); recruit(); } @@ -687,7 +690,6 @@ public abstract class Game extends ListenerComponent implements Lifetimed SetState(GameState.Recruit); } - public void generateTeams() { int count = 1; diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/cakewars/CakeWars.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/cakewars/CakeWars.java index b868cc8ff..80b82bc47 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/cakewars/CakeWars.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/cakewars/CakeWars.java @@ -135,7 +135,7 @@ public class CakeWars extends TeamGame private final CakePlayerModule _cakePlayerModule; private final CakeSpawnerModule _cakeSpawnerModule; private final CakeShopModule _cakeShopModule; - private final ChestLootModule _chestLootModule; + protected final ChestLootModule _chestLootModule; private final CustomScoreboardModule _customScoreboardModule; private final CapturePointModule _capturePointModule; private final CakePointModule _cakePointModule; diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/cakewars/event/CakeRotEvent.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/cakewars/event/CakeRotEvent.java new file mode 100644 index 000000000..fcc14bcc1 --- /dev/null +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/cakewars/event/CakeRotEvent.java @@ -0,0 +1,22 @@ +package nautilus.game.arcade.game.games.cakewars.event; + +import org.bukkit.event.Event; +import org.bukkit.event.HandlerList; + +public class CakeRotEvent extends Event +{ + + private static final HandlerList HANDLER_LIST = new HandlerList(); + + public static HandlerList getHandlerList() + { + return HANDLER_LIST; + } + + @Override + public HandlerList getHandlers() + { + return getHandlerList(); + } + +} diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/cakewars/modes/OPCakeWars.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/cakewars/modes/OPCakeWars.java index da06532e8..5bd10ec46 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/cakewars/modes/OPCakeWars.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/cakewars/modes/OPCakeWars.java @@ -1,12 +1,16 @@ package nautilus.game.arcade.game.games.cakewars.modes; +import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; +import java.util.concurrent.TimeUnit; import org.bukkit.Material; import org.bukkit.Sound; +import org.bukkit.WorldBorder; import org.bukkit.block.Block; +import org.bukkit.enchantments.Enchantment; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; @@ -14,6 +18,7 @@ import org.bukkit.event.entity.EntityDamageEvent.DamageCause; import org.bukkit.inventory.ItemStack; import org.bukkit.potion.PotionEffect; import org.bukkit.potion.PotionEffectType; +import org.bukkit.scheduler.BukkitRunnable; import mineplex.core.common.util.C; import mineplex.core.common.util.UtilBlock; @@ -21,6 +26,7 @@ import mineplex.core.common.util.UtilParticle; import mineplex.core.common.util.UtilParticle.ParticleType; import mineplex.core.common.util.UtilParticle.ViewDist; import mineplex.core.common.util.UtilPlayer; +import mineplex.core.common.util.UtilServer; import mineplex.core.common.util.UtilTextMiddle; import mineplex.core.itemstack.ItemBuilder; import mineplex.core.updater.UpdateType; @@ -31,7 +37,9 @@ import nautilus.game.arcade.ArcadeManager; import nautilus.game.arcade.events.GameStateChangeEvent; import nautilus.game.arcade.game.GameTeam; import nautilus.game.arcade.game.games.cakewars.CakeWars; +import nautilus.game.arcade.game.games.cakewars.event.CakeRotEvent; import nautilus.game.arcade.game.games.cakewars.general.CakePlayerModule; +import nautilus.game.arcade.game.games.cakewars.island.CakeIslandModule; import nautilus.game.arcade.game.games.cakewars.item.CakeSpecialItem; import nautilus.game.arcade.game.games.cakewars.item.items.CakeDeployPlatform; import nautilus.game.arcade.game.games.cakewars.item.items.CakeIceBridge; @@ -46,6 +54,7 @@ import nautilus.game.arcade.game.games.cakewars.shop.CakeShopModule; import nautilus.game.arcade.game.games.cakewars.shop.trap.CakeBearTrap; import nautilus.game.arcade.game.games.cakewars.shop.trap.CakeTNTTrap; import nautilus.game.arcade.game.games.cakewars.ui.CakeResourcePage; +import nautilus.game.arcade.game.modules.chest.ChestLootPool; public class OPCakeWars extends CakeWars { @@ -129,6 +138,48 @@ public class OPCakeWars extends CakeWars event.AddKnockback(GetMode(), 1.25); } + @EventHandler + public void cakeRot(CakeRotEvent event) + { + WorldBorder border = WorldData.World.getWorldBorder(); + border.setCenter(GetSpectatorLocation()); + border.setSize(Math.max(WorldData.MaxX, WorldData.MaxZ) * 2); + border.setSize(20, TimeUnit.MINUTES.toMillis(10) / 50); + border.setDamageAmount(0); + + UtilTextMiddle.display(C.cRedB + "Sugar Crash", "The border is closing in.", 0, 50, 0, UtilServer.getPlayers()); + + Manager.runSyncTimer(new BukkitRunnable() + { + @Override + public void run() + { + if (!IsLive()) + { + cancel(); + return; + } + + int size = (int) border.getSize() / 2; + + WorldData.MinX = WorldData.MinZ = -size; + WorldData.MaxX = WorldData.MaxZ = size; + } + }, 0, 20); + } + + @EventHandler + public void end(GameStateChangeEvent event) + { + if (event.GetState() != GameState.End) + { + return; + } + + WorldBorder border = WorldData.World.getWorldBorder(); + border.setSize(Integer.MAX_VALUE); + } + @Override public int getGeneratorRate(CakeResource resource, int current) { @@ -219,10 +270,8 @@ public class OPCakeWars extends CakeWars new CakeTNTTrap(8), new CakeBearTrap(8) ); - case STAR: - return super.generateItems(resource); default: - return null; + return super.generateItems(resource); } } @@ -239,6 +288,34 @@ public class OPCakeWars extends CakeWars ); } + @Override + public void generateChests() + { + _chestLootModule.registerChestType(CakeIslandModule.CHEST_TYPE, new ArrayList<>(), + + new ChestLootPool() + .addItem(new ItemBuilder(Material.DIAMOND_SWORD) + .addEnchantment(Enchantment.KNOCKBACK, 1) + .setUnbreakable(true) + .build()) + .addItem(new ItemBuilder(Material.BOW) + .addEnchantment(Enchantment.ARROW_KNOCKBACK, 1) + .addEnchantment(Enchantment.ARROW_INFINITE, 1) + .build()) + .addItem(new ItemBuilder(Material.GOLD_PICKAXE) + .setTitle(C.cGoldB + "The Golden Pickaxe") + .setUnbreakable(true) + .build()) + .addItem(CakeShopModule.ENDER_PEARL, 10, 20) + .addItem(CakeWall.ITEM_STACK, 10, 20) + .addItem(CakeIceBridge.ITEM_STACK, 2, 4) + .addItem(CakeSafeTeleport.ITEM_STACK, 2, 4) + .addItem(CakeSheep.ITEM_STACK, 2, 4) + .addItem(new ItemStack(Material.GOLDEN_APPLE), 5, 10) + + ).destroyAfterOpened(30); + } + @Override public CakeResourcePage getShopPage(CakeResource resource, Player player) { diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/cakewars/team/CakeTeamModule.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/cakewars/team/CakeTeamModule.java index 5e90b1910..78999273b 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/cakewars/team/CakeTeamModule.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/cakewars/team/CakeTeamModule.java @@ -52,6 +52,7 @@ import nautilus.game.arcade.game.Game.GameState; import nautilus.game.arcade.game.GameTeam; import nautilus.game.arcade.game.games.cakewars.CakeModule; import nautilus.game.arcade.game.games.cakewars.CakeWars; +import nautilus.game.arcade.game.games.cakewars.event.CakeRotEvent; import nautilus.game.arcade.game.games.cakewars.event.CakeWarsEatCakeEvent; import nautilus.game.arcade.game.games.cakewars.shop.CakeItem; import nautilus.game.arcade.game.games.cakewars.shop.CakeShopModule; @@ -64,7 +65,7 @@ public class CakeTeamModule extends CakeModule { private static final int HOLOGRAM_VIEW_SQUARED = 16; - private static final long CAKE_ROT_TIME = TimeUnit.MINUTES.toMillis(20); + private static final long CAKE_ROT_TIME = TimeUnit.MINUTES.toMillis(1); private static final long CAKE_WARNING_TIME = TimeUnit.MINUTES.toMillis(5); private static final long TRAP_COOLDOWN = TimeUnit.SECONDS.toMillis(10); private static final ItemStack[] STARTING_ITEMS = @@ -592,6 +593,8 @@ public class CakeTeamModule extends CakeModule _game.getModule(CompassModule.class) .setGiveCompassToAlive(true); + + UtilServer.CallEvent(new CakeRotEvent()); } return null; diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/cakewars/ui/CakeResourcePage.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/cakewars/ui/CakeResourcePage.java index 0718a7116..e46087b0c 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/cakewars/ui/CakeResourcePage.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/cakewars/ui/CakeResourcePage.java @@ -221,7 +221,7 @@ public class CakeResourcePage extends ShopPageBase