diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/GameMode.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/GameMode.java index bfc40cc26..468447539 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/GameMode.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/GameMode.java @@ -1,5 +1,7 @@ package nautilus.game.arcade; +import mineplex.core.common.MinecraftVersion; +import mineplex.core.common.Pair; import nautilus.game.arcade.game.Game; /** @@ -14,16 +16,34 @@ public class GameMode private GameType _gameType; private String _name; + private Pair[] _resourcePackUrls; + private boolean _enforceResourcePack; + /** * * @param gameMode Game class that in most cases extends the host game class * @param name Gamemode name */ public GameMode(Class gameMode, GameType gameType, String name) + { + this(gameMode, gameType, name, null, false); + } + + /** + * + * @param gameMode Game class that in most cases extends the host game class + * @param gameType original GameType of modded game + * @param name Gamemode name + * @param resourcePackUrls URLs to 1.8/1.9 resource pack + * @param enforceResourcePack enforece resource pack on players + */ + public GameMode(Class gameMode, GameType gameType, String name, Pair[] resourcePackUrls, boolean enforceResourcePack) { _gameMode = gameMode; _gameType = gameType; _name = name; + _resourcePackUrls = resourcePackUrls; + _enforceResourcePack = enforceResourcePack; } /** @@ -52,5 +72,23 @@ public class GameMode { return _gameType; } + + /** + * + * @return Gamemode resource pack URLs + */ + public Pair[] getResPackURLs() + { + return _resourcePackUrls; + } + + /** + * + * @return Gamemode enforcing of resource packs + */ + public boolean enforceResourcePack() + { + return _enforceResourcePack; + } } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/GameType.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/GameType.java index f24912520..3894640cd 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/GameType.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/GameType.java @@ -50,7 +50,8 @@ import nautilus.game.arcade.game.games.micro.modes.TinySmash; import nautilus.game.arcade.game.games.micro.modes.TinyWinners; import nautilus.game.arcade.game.games.milkcow.MilkCow; import nautilus.game.arcade.game.games.minecraftleague.MinecraftLeague; -import nautilus.game.arcade.game.games.minestrike.MineStrike; +import nautilus.game.arcade.game.games.minestrike.GunModule; +import nautilus.game.arcade.game.games.minestrike.Minestrike; import nautilus.game.arcade.game.games.mineware.MineWare; import nautilus.game.arcade.game.games.monsterleague.MonsterLeague; import nautilus.game.arcade.game.games.monstermaze.MonsterMaze; @@ -89,6 +90,7 @@ import nautilus.game.arcade.game.games.survivalgames.SoloSurvivalGames; import nautilus.game.arcade.game.games.survivalgames.TeamSurvivalGames; import nautilus.game.arcade.game.games.survivalgames.modes.ChangingKits; import nautilus.game.arcade.game.games.survivalgames.modes.OverpoweredSurvival; +import nautilus.game.arcade.game.games.survivalgames.modes.StrikeGames; import nautilus.game.arcade.game.games.survivalgames.modes.UHCSurvivalgames; import nautilus.game.arcade.game.games.tug.Tug; import nautilus.game.arcade.game.games.turfforts.TurfForts; @@ -142,7 +144,7 @@ public enum GameType Lobbers(BombLobbers.class, GameDisplay.Lobbers), Micro(Micro.class, GameDisplay.Micro), MilkCow(MilkCow.class, GameDisplay.MilkCow), - MineStrike(MineStrike.class, GameDisplay.MineStrike, new Pair[] + MineStrike(Minestrike.class, GameDisplay.MineStrike, new Pair[] { Pair.create(MinecraftVersion.Version1_8, "http://file.mineplex.com/ResMinestrike.zip"), Pair.create(MinecraftVersion.Version1_9, "http://file.mineplex.com/ResMinestrike19.zip") @@ -222,7 +224,12 @@ public enum GameType new GameMode(Assassins.class, GameType.UHC, "Assassins"), new GameMode(OverpoweredSurvival.class, GameType.SurvivalGames, "OP Survival Games"), new GameMode(UHCSurvivalgames.class, GameType.SurvivalGames, "UHC Survivalgames"), - new GameMode(ChangingKits.class, GameType.SurvivalGames, "Changing Kits"), + new GameMode(ChangingKits.class, GameType.SurvivalGames, "Changing Kits"), + new GameMode(StrikeGames.class, GameType.SurvivalGames, "Strike Games", new Pair[] + { + Pair.create(MinecraftVersion.Version1_8, "http://file.mineplex.com/ResMinestrike.zip"), + Pair.create(MinecraftVersion.Version1_9, "http://file.mineplex.com/ResMinestrike19.zip") + }, true), new GameMode(TinyWinners.class, GameType.Micro, "Tiny Winners"), new GameMode(OverpoweredMicroBattles.class, GameType.Micro, "OP Micro Battles"), new GameMode(CookieFight.class, GameType.Micro, "Cookie Fight"), @@ -304,13 +311,21 @@ public enum GameType return _gameModes; } - public boolean isEnforceResourcePack() + public boolean isEnforceResourcePack(Game game) { + if (hasGamemodes()) + { + return getGameMode(game.getClass()).enforceResourcePack(); + } return _enforceResourcePack; } - public Pair[] getResourcePackUrls() + public Pair[] getResourcePackUrls(Game game) { + if (hasGamemodes()) + { + return getGameMode(game.getClass()).getResPackURLs(); + } return _resourcePacks; } @@ -359,15 +374,25 @@ public enum GameType return _gameMaps; } - public GameType getModeGameType(Class game) + public GameMode getGameMode(Class game) { for (GameMode mode : getGameModes()) { if (mode.getGameClass() != null && mode.getGameClass().getName().contentEquals(game.getName())) { - return mode.getType(); + return mode; } } return null; } + + public GameType getModeGameType(Class game) + { + return getGameMode(game).getType(); + } + + public boolean hasGamemodes() + { + return _gameModes.length != 0; + } } 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 0e4c4815c..6e48814bf 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 @@ -398,7 +398,7 @@ public abstract class Game implements Listener new ExperienceStatTracker(this), new WinStatTracker(this), new LoseStatTracker(this), new DamageDealtStatTracker( this), new DamageTakenStatTracker(this), new GamesPlayedStatTracker(this)); - Manager.getResourcePackManager().setResourcePack(gameType.getResourcePackUrls(), gameType.isEnforceResourcePack()); + Manager.getResourcePackManager().setResourcePack(gameType.getResourcePackUrls(this), gameType.isEnforceResourcePack(this)); _useEntityPacketHandler = new IPacketHandler() { diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/CustomGunDamageEvent.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/CustomGunDamageEvent.java new file mode 100644 index 000000000..023f90950 --- /dev/null +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/CustomGunDamageEvent.java @@ -0,0 +1,59 @@ +package nautilus.game.arcade.game.games.minestrike; + +import org.bukkit.entity.Player; +import org.bukkit.event.HandlerList; +import org.bukkit.event.player.PlayerEvent; + +import mineplex.minecraft.game.core.damage.CustomDamageEvent; +import nautilus.game.arcade.game.games.minestrike.data.Bullet; + +public class CustomGunDamageEvent extends PlayerEvent +{ + private static final HandlerList handlers = new HandlerList(); + + public static HandlerList getHandlerList() + { + return handlers; + } + + @Override + public HandlerList getHandlers() + { + return getHandlerList(); + } + + private Bullet _bullet; + private final boolean _headshot; + private CustomDamageEvent _damageEvent; + private GunModule _game; + + public CustomGunDamageEvent(Bullet _bullet, Player _target, boolean _headshot, CustomDamageEvent _damageEvent, GunModule game) + { + super(_target); + this._bullet = _bullet; + this._headshot = _headshot; + this._damageEvent = _damageEvent; + this._game = game; + } + + public Bullet getBullet() + { + return _bullet; + } + + public boolean isHeadshot() + { + return _headshot; + } + + public CustomDamageEvent getDamageEvent() + { + return _damageEvent; + } + + public GunModule getGame() + { + return _game; + } + +} \ No newline at end of file diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/MineStrike.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/GunModule.java similarity index 55% rename from Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/MineStrike.java rename to Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/GunModule.java index a7468cf90..f975d28be 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/MineStrike.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/GunModule.java @@ -8,7 +8,6 @@ import java.util.Iterator; import org.bukkit.Bukkit; import org.bukkit.ChatColor; -import org.bukkit.Color; import org.bukkit.Effect; import org.bukkit.Location; import org.bukkit.Material; @@ -29,32 +28,25 @@ import org.bukkit.event.Event; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.HandlerList; +import org.bukkit.event.Listener; import org.bukkit.event.entity.EntityDamageEvent.DamageCause; import org.bukkit.event.entity.EntityRegainHealthEvent; import org.bukkit.event.entity.EntityRegainHealthEvent.RegainReason; +import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.event.entity.ItemDespawnEvent; import org.bukkit.event.entity.PlayerDeathEvent; import org.bukkit.event.entity.ProjectileHitEvent; -import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.event.painting.PaintingBreakEvent; import org.bukkit.event.player.PlayerCommandPreprocessEvent; import org.bukkit.event.player.PlayerDropItemEvent; -import org.bukkit.event.player.PlayerEvent; import org.bukkit.event.player.PlayerInteractEvent; -import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerMoveEvent; import org.bukkit.event.player.PlayerPickupItemEvent; -import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.event.player.PlayerTeleportEvent; import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause; import org.bukkit.event.player.PlayerToggleSneakEvent; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; -import org.bukkit.inventory.meta.LeatherArmorMeta; -import org.bukkit.scoreboard.DisplaySlot; -import org.bukkit.scoreboard.NameTagVisibility; -import org.bukkit.scoreboard.Objective; -import org.bukkit.scoreboard.Team; import org.bukkit.util.Vector; import mineplex.core.common.util.C; @@ -80,6 +72,7 @@ import mineplex.core.disguise.disguises.DisguisePlayer; import mineplex.core.gadget.GadgetManager; import mineplex.core.gadget.gadgets.gamemodifiers.GameModifierType; import mineplex.core.gadget.gadgets.gamemodifiers.minestrike.GameModifierMineStrikeSkin; +import mineplex.core.gadget.gadgets.gamemodifiers.minestrike.MineStrikeSkin; import mineplex.core.itemstack.ItemStackFactory; import mineplex.core.recharge.Recharge; import mineplex.core.recharge.RechargedEvent; @@ -89,13 +82,10 @@ import mineplex.minecraft.game.core.combat.event.CombatDeathEvent; import mineplex.minecraft.game.core.condition.Condition.ConditionType; import mineplex.minecraft.game.core.damage.CustomDamageEvent; import nautilus.game.arcade.ArcadeManager; -import nautilus.game.arcade.GameType; import nautilus.game.arcade.events.GameStateChangeEvent; -import nautilus.game.arcade.events.PlayerKitGiveEvent; import nautilus.game.arcade.game.Game; +import nautilus.game.arcade.game.Game.GameState; import nautilus.game.arcade.game.GameTeam; -import nautilus.game.arcade.game.GameTeam.PlayerState; -import nautilus.game.arcade.game.TeamGame; import nautilus.game.arcade.game.games.minestrike.data.Bomb; import nautilus.game.arcade.game.games.minestrike.data.Bullet; import nautilus.game.arcade.game.games.minestrike.items.StrikeItem; @@ -105,106 +95,16 @@ import nautilus.game.arcade.game.games.minestrike.items.grenades.Grenade; import nautilus.game.arcade.game.games.minestrike.items.guns.Gun; import nautilus.game.arcade.game.games.minestrike.items.guns.GunStats; import nautilus.game.arcade.game.games.minestrike.items.guns.GunType; -import nautilus.game.arcade.game.games.minestrike.kits.KitPlayer; -import nautilus.game.arcade.kit.Kit; -import nautilus.game.arcade.managers.chat.ChatStatData; -import nautilus.game.arcade.stats.KaboomStatTracker; -import nautilus.game.arcade.stats.KillAllOpposingMineStrikeRoundStatTracker; -import nautilus.game.arcade.stats.KillFastStatTracker; -import nautilus.game.arcade.stats.KillReasonStatTracker; -import nautilus.game.arcade.stats.KillsWithConditionStatTracker; -import nautilus.game.arcade.stats.MineStrikeGunStats; -import nautilus.game.arcade.stats.MineStrikeLastAliveKillStatTracker; -import nautilus.game.arcade.stats.TeamDeathsStatTracker; -import nautilus.game.arcade.stats.TeamKillsStatTracker; import net.minecraft.server.v1_8_R3.EntityArrow; -public class MineStrike extends TeamGame +public class GunModule implements Listener { + public ArcadeManager Manager; + private Game _host; + public static float RECOIL = 0.8f; public static float CONE = 0.7f; public static float MOVE_PENALTY = 0.8f; - - public static class PlayerHeadshotEvent extends PlayerEvent - { - private static final HandlerList handlers = new HandlerList(); - - public static HandlerList getHandlerList() - { - return handlers; - } - - @Override - public HandlerList getHandlers() - { - return getHandlerList(); - } - - private final Player _shooter; - - public PlayerHeadshotEvent(Player who, Player shooter) - { - super(who); - - _shooter = shooter; - } - - public Player getShooter() - { - return _shooter; - } - } - - public static class CustomGunDamageEvent extends PlayerEvent - { - private static final HandlerList handlers = new HandlerList(); - - public static HandlerList getHandlerList() - { - return handlers; - } - - @Override - public HandlerList getHandlers() - { - return getHandlerList(); - } - - private Bullet _bullet; - private final boolean _headshot; - private CustomDamageEvent _damageEvent; - private MineStrike _game; - - public CustomGunDamageEvent(Bullet _bullet, Player _target, boolean _headshot, CustomDamageEvent _damageEvent, MineStrike game) - { - super(_target); - this._bullet = _bullet; - this._headshot = _headshot; - this._damageEvent = _damageEvent; - this._game = game; - } - - public Bullet getBullet() - { - return _bullet; - } - - public boolean isHeadshot() - { - return _headshot; - } - - public CustomDamageEvent getDamageEvent() - { - return _damageEvent; - } - - public MineStrike getGame() - { - return _game; - } - - } public static class RoundOverEvent extends Event { @@ -234,27 +134,23 @@ public class MineStrike extends TeamGame } } - //Managers - private ShopManager _shopManager; - - //Data - private int _roundsToWin = 8; - private long _roundTime = 120000; - - private boolean _debug = false; - private int _bulletInstant = 2; //0 = Slow, 1 = Instant, 2 = Mix - private boolean _customHitbox = true; - private boolean _bulletAlternate = false; - - //Map Data - private ArrayList _bombSites; + public boolean Debug = false; + public int BulletInstant = 2; //0 = Slow, 1 = Instant, 2 = Mix + public boolean CustomHitbox = true; + public boolean BulletAlternate = false; + + private long _freezeTime = -1; + + private int _round; + + private boolean _enablePickup = true; + private boolean _enableDrop = true; + private boolean _enableCleaning = true; //Ongoing Data private HashMap _gunsEquipped = new HashMap(); private HashMap _grenadesEquipped = new HashMap(); - private HashMap _score = new HashMap(); - private HashMap _disguise = new HashMap(); //Round Data (wiped at end of each round) @@ -274,211 +170,24 @@ public class MineStrike extends TeamGame private Player _bombHolder = null; private long _bombHolderLastMove = 0; - private Player _bombPlanter; - private Player _bombDefuser; - private Player _bombPlantedBy; - - private boolean _bombScoreboardFlash = false; - private HashMap _scoped = new HashMap(); - //Round Data - private String _winText = null; - private boolean _roundOver = false; - private int _freezeTime = 0; - - //Money Data - private boolean _bombPlanted = false; - private boolean _ctWonLast = false; - private int _winStreak = 0; - - //Scoreboard - private Objective _scoreObj; - - public MineStrike(ArcadeManager manager) + public GunModule(Game host) { - super(manager, GameType.MineStrike, - - new Kit[] - { - new KitPlayer(manager), - }, - - new String[] - { - C.cAqua + "SWAT" + C.cWhite + " Defend the Bomb Sites", - C.cAqua + "SWAT" + C.cWhite + " Kill the Bombers", - " ", - C.cRed + "Bombers" + C.cWhite + " Plant the Bomb at Bomb Site", - C.cRed + "Bombers" + C.cWhite + " Kill the SWAT Team", - }); - - _shopManager = new ShopManager(this); - Manager.getCosmeticManager().setHideParticles(true); - - this.StrictAntiHack = true; - - AnnounceStay = false; - - this.HungerSet = 20; - - this.ItemDrop = true; - - this.DeathTeleport = false; - - this.InventoryClick = true; - - this.JoinInProgress = true; - - this.DontAllowOverfill = true; - - _scoreObj = Scoreboard.GetScoreboard().registerNewObjective("HP", "dummy"); - _scoreObj.setDisplaySlot(DisplaySlot.BELOW_NAME); - - this._help = new String[] - { - //"Tap Crouch when close to an ally to Boost", - "Open Inventory at spawn to buy guns", - "Hold Right-Click to Plant Bomb", - "Look at the Bomb to Defuse it", - "Moving decreases accuracy", - "Sprinting heavily decreases accuracy", - "Jumping massively decreases accuracy", - "Crouching increases accuracy", - "Left-Click to drop Grenades", - "Right-Click to throw Grenades", - "Burst Fire for greater accuracy", - "Sniper Rifles are only accurate while scoped", - "Rifles have 30% recoil reduction while scoped", - "Pick up better weapons from dead players" - }; - - registerStatTrackers( - new KillReasonStatTracker(this, "Headshot", "BoomHeadshot", true), - new KillAllOpposingMineStrikeRoundStatTracker(this), - new KaboomStatTracker(this), - new KillReasonStatTracker(this, "Backstab", "Assassination", false), - new MineStrikeLastAliveKillStatTracker(this), - new KillFastStatTracker(this, 4, 5, "KillingSpree"), - new KillsWithConditionStatTracker(this, "Blindfolded", ConditionType.BLINDNESS, "Flash Bang", 2), - - new TeamDeathsStatTracker(this), - new TeamKillsStatTracker(this), - - new MineStrikeGunStats(this) - ); - - registerChatStats( - Kills, - Deaths, - KDRatio, - BlankLine, - new ChatStatData("BoomHeadshot", "Headshots", true), - Assists - ); - } - - @Override - public void ParseData() - { - _bombSites = WorldData.GetDataLocs("RED"); - } - - @EventHandler - public void CustomTeamGeneration(GameStateChangeEvent event) - { - if (event.GetState() != GameState.Recruit) - return; + _host = host; + Manager = host.Manager; + _round = 1; - this.GetTeamList().get(0).SetColor(ChatColor.AQUA); - this.GetTeamList().get(0).SetName("SWAT"); - - this.GetTeamList().get(1).SetColor(ChatColor.RED); - this.GetTeamList().get(1).SetName("Bombers"); + Manager.registerEvents(this); } @EventHandler - public void SetScoreboardNameVisibility(GameStateChangeEvent event) + public void unregisterSelf(GameStateChangeEvent event) { - if (event.GetState() != GameState.Prepare) + if (event.GetState() != GameState.Dead) return; - System.out.println("Hiding Scoreboard Nametags for Other Teams"); - for (Team curTeam : Scoreboard.GetScoreboard().getTeams()) - { - curTeam.setNameTagVisibility(NameTagVisibility.HIDE_FOR_OTHER_TEAMS); - //UtilServer.getServer().dispatchCommand(UtilServer.getServer().getConsoleSender(), - // "scoreboard teams option " + curTeam.getName() + " nametagVisibility hideForOtherTeams"); - } - } - - @EventHandler - public void giveStartEquipment(PlayerKitGiveEvent event) - { - GameTeam team = GetTeam(event.getPlayer()); - if (team == null) - return; - - GadgetManager gadgetManager = Manager.getCosmeticManager().getGadgetManager(); - GameModifierMineStrikeSkin knifeSkin = (GameModifierMineStrikeSkin) gadgetManager.getActiveGameModifier(event.getPlayer(), - GameModifierType.MineStrike, GameModifierMineStrikeSkin.getWeaponFilter("Knife")); - - Material mat = Material.IRON_AXE; - byte data = 0; - String name = "Knife"; - - if(knifeSkin != null) - { - mat = knifeSkin.getSkinMaterial(); - data = knifeSkin.getSkinData(); - name = knifeSkin.GetName(); - } - - ItemStack knife = ItemStackFactory.Instance.CreateStack(mat, data, 1, name); - - if (team.GetColor() == ChatColor.RED) - { - if (IsAlive(event.getPlayer())) - { - //Pistol - Gun gun = new Gun(GunStats.GLOCK_18); - registerGun(gun, event.getPlayer()); - gun.giveToPlayer(event.getPlayer(), true); - gun.updateSkin(event.getPlayer(), getArcadeManager().getCosmeticManager().getGadgetManager()); - gun.updateWeaponName(event.getPlayer(), this); - - //Knife - if(knifeSkin == null) knife.setType(Material.IRON_AXE); - - event.getPlayer().getInventory().setItem(2, knife); - - //Armor - giveTeamArmor(event.getPlayer(), Color.fromRGB(255, 75, 75)); - } - } - else if (team.GetColor() == ChatColor.AQUA) - { - if (IsAlive(event.getPlayer())) - { - //Pistol - Gun gun = new Gun(GunStats.P2000); - registerGun(gun, event.getPlayer()); - gun.giveToPlayer(event.getPlayer(), true); - gun.updateWeaponName(event.getPlayer(), this); - gun.updateSkin(event.getPlayer(), getArcadeManager().getCosmeticManager().getGadgetManager()); - - //Knife - if(knifeSkin == null) knife.setType(Material.IRON_SWORD); - - event.getPlayer().getInventory().setItem(2, knife); - - //Armor - giveTeamArmor(event.getPlayer(), Color.fromRGB(125, 200, 255)); - } - } - - //Enter Shop - _shopManager.enterShop(event.getPlayer()); + HandlerList.unregisterAll(this); } @EventHandler(priority = EventPriority.MONITOR) @@ -515,133 +224,6 @@ public class MineStrike extends TeamGame // } // } - public void giveTeamArmor(Player player, Color color) - { - ItemStack armor = new ItemStack(Material.LEATHER_CHESTPLATE); - LeatherArmorMeta meta = (LeatherArmorMeta)armor.getItemMeta(); - meta.setColor(color); - armor.setItemMeta(meta); - player.getInventory().setChestplate(armor); - - ItemStack legs = new ItemStack(Material.LEATHER_LEGGINGS); - LeatherArmorMeta metaLegs = (LeatherArmorMeta)legs.getItemMeta(); - metaLegs.setColor(color); - legs.setItemMeta(metaLegs); - player.getInventory().setLeggings(legs); - - ItemStack boots = new ItemStack(Material.LEATHER_BOOTS); - LeatherArmorMeta metaBoots = (LeatherArmorMeta)boots.getItemMeta(); - metaBoots.setColor(color); - boots.setItemMeta(metaBoots); - player.getInventory().setBoots(boots); - } - - @EventHandler - public void shopInventoryClick(InventoryClickEvent event) - { - _shopManager.inventoryClick(event); - } - - - - @EventHandler - public void shopUpdate(UpdateEvent event) - { - if (event.getType() != UpdateType.SEC) - return; - - _shopManager.update(); - } - - @EventHandler - public void quitClean(PlayerQuitEvent event) - { - _shopManager.leaveShop(event.getPlayer(), false, true); - _disguise.remove(event.getPlayer()); - _scoped.remove(event.getPlayer()); - dropInventory(event.getPlayer()); - } - - @EventHandler - public void giveBombInitial(GameStateChangeEvent event) - { - if (event.GetState() != GameState.Prepare) - return; - - UtilServer.getServer().getScheduler().scheduleSyncDelayedTask(Manager.getPlugin(), new Runnable() - { - public void run() - { - Player player = UtilAlg.Random(GetTeam(ChatColor.RED).GetPlayers(true)); - - giveBombToPlayer(player); - } - }, 40); - } - - public void giveBombToPlayer(Player player) - { - if (player == null) - return; - - GameTeam team = GetTeam(player); - if (team == null) - return; - - if (team.GetColor() != ChatColor.RED) - return; - - //Bomb - player.getInventory().setItem(8, ItemStackFactory.Instance.CreateStack(Material.GOLD_SWORD, (byte)0, 1, C.cGold + C.Bold + "C4 Explosive")); - - //Inform - if (!IsLive() || _freezeTime > 0) - { - for (Player other : team.GetPlayers(false)) - if (!other.equals(player)) - { - UtilTextMiddle.display(null, player.getName() + " has the Bomb", 10, 80, 10, other); - UtilPlayer.message(other, C.cGold + C.Bold + player.getName() + " has the Bomb!"); - } - - //Chat - UtilPlayer.message(player, C.cGold + C.Bold + "You have the Bomb!"); - UtilPlayer.message(player, C.cGold + C.Bold + "Hold Right-Click to place at a Bomb Site!"); - - //Title - UtilTextMiddle.display(C.cRed + "You have the Bomb", "Hold Right-Click to place at a Bomb Site!", 10, 80, 10, player); - } - else - { - for (Player other : team.GetPlayers(false)) - if (!other.equals(player)) - { - UtilPlayer.message(other, C.cGold + C.Bold + player.getName() + " picked up the Bomb!"); - - //Title - UtilTextMiddle.display(null, player.getName() + " picked up the Bomb", 10, 50, 10, other); - } - - - //Chat - UtilPlayer.message(player, C.cGold + C.Bold + "You picked up the Bomb!"); - - //Title - UtilTextMiddle.display(null, "You picked up the Bomb", 10, 50, 10, player); - } - - - player.playSound(player.getLocation(), Sound.NOTE_PLING, 1f, 2f); - _bombHolder = player; - _bombHolderLastMove = System.currentTimeMillis(); - - if (_bombItem != null) - { - _bombItem.remove(); - _bombItem = null; - } - } - public void registerGun(Gun gun, Player player) { _gunsEquipped.put(gun, player); @@ -766,10 +348,10 @@ public class MineStrike extends TeamGame if (_freezeTime > 0) return; - if (!IsLive()) + if (!_host.IsLive()) return; - if (!IsAlive(event.getPlayer())) + if (!_host.IsAlive(event.getPlayer())) return; if (!UtilEvent.isAction(event, ActionType.R)) @@ -793,10 +375,10 @@ public class MineStrike extends TeamGame if (_freezeTime > 0) return; - if (!IsLive()) + if (!_host.IsLive()) return; - if (!IsAlive(event.getPlayer())) + if (!_host.IsAlive(event.getPlayer())) return; if (!UtilEvent.isAction(event, ActionType.L)) @@ -822,10 +404,10 @@ public class MineStrike extends TeamGame if (!UtilEvent.isAction(event, ActionType.L) && !UtilEvent.isAction(event, ActionType.R)) return; - if (!IsLive()) + if (!_host.IsLive()) return; - if (!IsAlive(event.getPlayer())) + if (!_host.IsAlive(event.getPlayer())) return; Grenade grenade = getGrenadeInHand(event.getPlayer(), null); @@ -833,7 +415,7 @@ public class MineStrike extends TeamGame if (grenade == null) return; - if (!UtilTime.elapsed(GetStateTime(), 10000)) + if (!UtilTime.elapsed(_host.GetStateTime(), 10000)) { UtilPlayer.message(event.getPlayer(), F.main("Game", "You cannot throw Grenades yet.")); return; @@ -846,7 +428,10 @@ public class MineStrike extends TeamGame @EventHandler public void triggerDrop(PlayerDropItemEvent event) { - if (!InProgress()) + if(!_enableDrop) + return; + + if (!_host.InProgress()) return; //Without this, the event is cancelled in pre-game by managers @@ -880,7 +465,7 @@ public class MineStrike extends TeamGame _bombHolder = null; //Radio - playSound(Radio.T_BOMB_DROP, null, GetTeam(event.getPlayer())); + playSound(Radio.T_BOMB_DROP, null, _host.GetTeam(event.getPlayer())); return; } @@ -897,7 +482,7 @@ public class MineStrike extends TeamGame public void dropInventory(Player player) { - if (!InProgress()) + if (!_host.InProgress()) return; for (int i=0 ; i<9 ; i++) @@ -979,7 +564,7 @@ public class MineStrike extends TeamGame _bombHolder = null; //Radio - playSound(Radio.T_BOMB_DROP, null, GetTeam(ChatColor.RED)); + playSound(Radio.T_BOMB_DROP, null, _host.GetTeam(ChatColor.RED)); } } @@ -989,7 +574,10 @@ public class MineStrike extends TeamGame @EventHandler public void triggerPickup(PlayerPickupItemEvent event) { - if (!InProgress()) + if (!_enablePickup) + return; + + if (!_host.InProgress()) return; if (event.getItem().getTicksLived() < 10) @@ -998,7 +586,7 @@ public class MineStrike extends TeamGame if (UtilMath.offset(event.getItem(), event.getPlayer()) > 1) return; - if (!IsAlive(event.getPlayer())) + if (!_host.IsAlive(event.getPlayer())) return; //Guns @@ -1020,7 +608,7 @@ public class MineStrike extends TeamGame //Defusal if (UtilGear.isMat(event.getItem().getItemStack(), Material.SHEARS)) { - if (GetTeam(event.getPlayer()).GetColor() == ChatColor.RED) + if (_host.GetTeam(event.getPlayer()).GetColor() == ChatColor.RED) return; if (UtilInv.contains(event.getPlayer(), Material.SHEARS, (byte)0, 1)) @@ -1296,7 +884,7 @@ public class MineStrike extends TeamGame if (event.GetCause() == DamageCause.FALL) { - event.AddMod(GetName(), "Fall Reduction", -2, false); + event.AddMod(_host.GetName(), "Fall Reduction", -2, false); return; } @@ -1368,7 +956,7 @@ public class MineStrike extends TeamGame //Get Hit Area int hitArea = 0; - if (_customHitbox) + if (CustomHitbox) { if (event.GetProjectile() instanceof Arrow) hitArea = getArrowHitArea(event.GetDamageePlayer(), bullet.Origin.clone(), bullet.Direction.clone()); @@ -1394,7 +982,7 @@ public class MineStrike extends TeamGame if (!Manager.canHurt(event.GetDamageePlayer(), event.GetDamagerPlayer(true))) event.SetCancelled("Team Damage"); - event.AddMod(GetName(), "Negate Default", -event.GetDamageInitial(), false); + event.AddMod(_host.GetName(), "Negate Default", -event.GetDamageInitial(), false); //Damage + Dropoff double damage = bullet.getDamage(); @@ -1504,62 +1092,6 @@ public class MineStrike extends TeamGame loc.getY() >= player.getEyeLocation().getY() + 0.0 && loc.getY() < player.getEyeLocation().getY() + 0.2; } - - - @EventHandler - public void killReward(CombatDeathEvent event) - { - if (!(event.GetEvent().getEntity() instanceof Player)) - return; - - Player killed = (Player)event.GetEvent().getEntity(); - - if (event.GetLog().GetKiller() != null) - { - Player killer = UtilPlayer.searchExact(event.GetLog().GetKiller().GetName()); - - if (killer == null || killer.equals(killed)) - return; - - if (GetTeam(killed).equals(GetTeam(killer))) - return; - - int amount = 300; - - if (event.GetLog().GetLastDamager().GetReason().contains("AWP")) - amount = 100; - - else if (event.GetLog().GetLastDamager().GetReason().contains("PP-Bizon")) - amount = 600; - - else if (event.GetLog().GetLastDamager().GetReason().contains("Nova")) - amount = 900; - - else if (event.GetLog().GetLastDamager().GetReason().contains("Knife")) - amount = 1500; - - _shopManager.addMoney(killer, amount, "kill with " + event.GetLog().GetLastDamager().GetReason()); - - /* - if(event.GetLog().GetLastDamager().GetReason().contains("Knife")) - { - GadgetManager gadgetManager = Manager.getCosmeticManager().getGadgetManager(); - GameModifierMineStrikeSkin knifeSkin = (GameModifierMineStrikeSkin) gadgetManager.getActiveGameModifier(event.getPlayer(), - GameModifierType.MineStrike, GameModifierMineStrikeSkin.getWeaponFilter("Knife")); - - if(knifeSkin != null) - { - int kills = GetStats().get(killer).get("") - ItemStack item = killer.getInventory().getItem(2); - ItemMeta im = item.getItemMeta(); - im.setDisplayName(C.cYellow + C.Bold + knifeSkin.GetName() + " - Kills: " + kills); - - AddStat(killer, "Knife." + knifeSkin.GetName() + ".Kills", 1, false, false); - } - } - */ - } - } @EventHandler(priority = EventPriority.LOWEST) public void killMessage(CombatDeathEvent event) @@ -1581,7 +1113,7 @@ public class MineStrike extends TeamGame { reason = ""; - GameTeam team = GetTeam(killer); + GameTeam team = _host.GetTeam(killer); if (team != null) reason += team.GetColor(); @@ -1649,294 +1181,10 @@ public class MineStrike extends TeamGame } } - @EventHandler - public void plantBomb(PlayerInteractEvent event) - { - Player player = event.getPlayer(); - - if (!UtilGear.isMat(player.getItemInHand(), Material.GOLD_SWORD)) - return; - - // Fixed bomb able to be planted after the round is over. - if (_roundOver) - { - UtilPlayer.message(player, F.main("Game", "You cannot plant the bomb once the round is over.")); - event.setCancelled(true); - return; - } - - // Added a small tip for players that are trying to right-click with the bomb. - if (UtilEvent.isAction(event, ActionType.L)) - { - UtilPlayer.message(player, F.main("Game", "You must " + F.elem("Right-Click") + " while holding the bomb to plant it.")); - event.setCancelled(true); - return; - } - - if (!UtilEnt.isGrounded(player)) - { - UtilPlayer.message(player, F.main("Game", "You can only plant the bomb on the ground.")); - event.setCancelled(true); - return; - } - - //Should never occur with 1 Bomb - if (_bombPlanter != null) - { - UtilPlayer.message(player, F.main("Game", "Someone else is planting the bomb.")); - event.setCancelled(true); - return; - } - - //Check Bomb Sites - boolean near = false; - for (Location loc : _bombSites) - { - if (UtilMath.offset(player.getLocation(), loc) < 5) - { - near = true; - break; - } - } - - //Too Far - if (!near) - { - UtilPlayer.message(player, F.main("Game", "You can only plant the bomb at a bomb site.")); - event.setCancelled(true); - return; - } - - _bombPlanter = player; - _bombPlanter.setExp(0f); - - UtilPlayer.message(player, F.main("Game", "You are now placing the bomb.")); - - //Radio - playSound(Radio.T_BOMB_PLANT, null, GetTeam(_bombPlanter)); - } - - @EventHandler - public void plantBombUpdate(UpdateEvent event) - { - if (event.getType() != UpdateType.TICK) - return; - - // Added to check if the round is over when a bomb is being planted. - if (_roundOver) - return; - - if (_bombPlanter == null) - return; - - if (!_bombPlanter.isBlocking() || !_bombPlanter.isOnline()) - { - _bombPlanter.setExp(0f); - UtilTextMiddle.clear(_bombPlanter); - _bombPlanter = null; - return; - } - - _bombPlanter.setExp(Math.min(_bombPlanter.getExp() + 0.017f, 0.99999f)); - - if (Math.random() > 0.90) - _bombPlanter.getWorld().playSound(_bombPlanter.getLocation(), Sound.NOTE_PLING, 2f, 3f); - - UtilTextMiddle.display(C.cRed + C.Bold + "Planting Bomb", UtilTextMiddle.progress(_bombPlanter.getExp()), 0, 10, 0, _bombPlanter); - - if (_bombPlanter.getExp() >= 0.98f) - { - _bomb = new Bomb(_bombPlanter); - - _shopManager.addMoney(_bombPlanter, 300, "planting the bomb"); - - Announce(C.cRed + C.Bold + _bombPlanter.getName() + " has planted the bomb!"); - - _bombPlantedBy = _bombPlanter; - - _bombPlanter.setExp(0f); - _bombPlanter.setItemInHand(null); - _bombPlanter = null; - _bombHolder = null; - - //Sound - playSound(Radio.BOMB_PLANT, null, null); - - //Title - UtilTextMiddle.display(null, C.cRed + C.Bold + "Bomb has been planted!", 10, 50, 10); - } - } - - @EventHandler - public void plantDefuseBombRestrictMovement(PlayerMoveEvent event) - { - if (_bombPlanter != null && _bombPlanter.equals(event.getPlayer())) - if (UtilMath.offset(event.getFrom(), event.getTo()) > 0) - event.setTo(event.getFrom()); - - // if (_bombDefuser != null && _bombDefuser.equals(event.getPlayer())) - // if (UtilMath.offset(event.getFrom(), event.getTo()) > 0) - // event.setTo(event.getFrom()); - } - - @EventHandler - public void defuseKitMessage(PlayerInteractEvent event) - { - Player player = event.getPlayer(); - - if (!UtilGear.isMat(player.getItemInHand(), Material.SHEARS)) - return; - - UtilPlayer.message(player, F.main("Game", "Look at the Bomb to defuse it.")); - } - - public void startDefuse() - { - for (Player player : GetTeam(ChatColor.AQUA).GetPlayers(true)) - { - HashSet ignoreBlocks = new HashSet(); - ignoreBlocks.add(Material.AIR); - ignoreBlocks.add(Material.PORTAL); - - Block block = player.getTargetBlock(ignoreBlocks, 5); - - if (block == null || !_bomb.isBlock(block)) - continue; - - if (UtilMath.offset(player.getLocation(), block.getLocation().add(0.5, 0, 0.5)) > 3) - continue; - - if (_bombDefuser != null) - { - if (Recharge.Instance.use(player, "Defuse Message", 2000, false, false)) - UtilPlayer.message(player, F.main("Game", _bombDefuser.getName() + " is already defusing the Bomb.")); - - continue; - } - - _bombDefuser = player; - _bombDefuser.setExp(0f); - - UtilPlayer.message(player, F.main("Game", "You are defusing the Bomb.")); - - _bombDefuser.getWorld().playSound(_bombDefuser.getLocation(), Sound.PISTON_RETRACT, 2f, 1f); - } - } - - @EventHandler - public void defuseBombUpdate(UpdateEvent event) - { - if (_bomb == null) - return; - - if (!IsLive()) - return; - - if (event.getType() != UpdateType.TICK) - return; - - if (_bombDefuser == null) - { - startDefuse(); - } - - if (_bombDefuser == null) - return; - - HashSet ignoreBlocks = new HashSet(); - ignoreBlocks.add(Material.AIR); - ignoreBlocks.add(Material.PORTAL); - - Block block = _bombDefuser.getTargetBlock(ignoreBlocks, 5); - - if (!IsAlive(_bombDefuser) || block == null || !_bomb.isBlock(block) || !_bombDefuser.isOnline() || UtilMath.offset(_bombDefuser.getLocation(), block.getLocation().add(0.5, 0, 0.5)) > 3) - { - _bombDefuser.setExp(0f); - _bombDefuser = null; - return; - } - - //Kit or Not? - float defuseRate = 0.005f; - if (UtilGear.isMat(_bombDefuser.getInventory().getItem(8), Material.SHEARS)) - defuseRate = 0.01f; - - _bombDefuser.setExp(Math.min(_bombDefuser.getExp() + defuseRate, 0.99999f)); - - UtilTextMiddle.display(C.cAqua + C.Bold + "Defusing Bomb", UtilTextMiddle.progress(_bombDefuser.getExp()), 0, 10, 0, _bombDefuser); - - if (_bombDefuser.getExp() >= 0.98f) - { - _bomb.defuse(); - - _winText = _bombDefuser.getName() + " defused the bomb!"; - - _bomb = null; - _bombDefuser.setExp(0f); - _bombDefuser = null; - - //Sound - playSound(Radio.BOMB_DEFUSE, null, null); - - setWinner(GetTeam(ChatColor.AQUA), true); - } - } - - @EventHandler - public void bombUpdate(UpdateEvent event) - { - if (!IsLive()) - return; - - if (event.getType() != UpdateType.TICK) - return; - - if (_bomb == null) - return; - - if (!_bomb.update()) - return; - - /* - Set blocks = UtilBlock.getInRadius(_bomb.Block.getLocation(), 10d).keySet(); - - Iterator blockIterator = blocks.iterator(); - while (blockIterator.hasNext()) - { - Block block = blockIterator.next(); - - if (block.getY() < 2) - blockIterator.remove(); - } - - Manager.GetExplosion().BlockExplosion(blocks, _bomb.Block.getLocation(), false); - */ - - - HashMap players = UtilPlayer.getInRadius(_bomb.Block.getLocation(), 48); - for (Player player : players.keySet()) - { - if (!IsAlive(player)) - continue; - - // Damage Event - Manager.GetDamage().NewDamageEvent(player, null, null, - DamageCause.CUSTOM, 1 + (players.get(player) * 40), - true, true, false, "Bomb", "C4 Explosion"); - } - - - _bomb = null; - - _winText = _bombPlantedBy.getName() + " destroyed the bomb site!"; - - setWinner(GetTeam(ChatColor.RED), false); - } - @EventHandler public void bombItemUpdate(UpdateEvent event) { - if (!InProgress()) + if (!_host.InProgress()) return; if (event.getType() != UpdateType.SEC) @@ -1948,324 +1196,9 @@ public class MineStrike extends TeamGame UtilParticle.PlayParticle(ParticleType.HAPPY_VILLAGER, _bombItem.getLocation().add(0.0, 0.2, 0.0), 0, 0, 0, 0, 1, ViewDist.LONG, UtilServer.getPlayers()); } - - public int getScore(GameTeam team) + + public void reset() { - if (!_score.containsKey(team)) - _score.put(team, 0); - - return _score.get(team); - } - - public void addScore(GameTeam team) - { - _score.put(team, getScore(team) + 1); - } - - @EventHandler - public void roundTimerUpdate(UpdateEvent event) - { - if (!IsLive()) - return; - - if (event.getType() != UpdateType.TICK) - return; - - if (_bomb != null) - return; - - if (UtilTime.elapsed(GetStateTime(), _roundTime)) - { - _winText = "Bomb sites were successfully defended!"; - drawScoreboard(); - setWinner(GetTeam(ChatColor.AQUA), false); - } - } - - @EventHandler - public void roundPlayerCheck(UpdateEvent event) - { - if (!IsLive()) - return; - - if (event.getType() != UpdateType.TICK) - return; - - ArrayList teamsAlive = new ArrayList(); - - for (GameTeam team : this.GetTeamList()) - if (team.GetPlayers(true).size() > 0) - teamsAlive.add(team); - - if (teamsAlive.size() == 1) - { - //Bomb Planted - CT cannot win without defusing - if (_bomb != null) - { - if (teamsAlive.size() > 0) - { - if (teamsAlive.get(0).GetColor() == ChatColor.AQUA) - { - return; - } - } - } - - setWinner(teamsAlive.get(0), false); - } - else if (teamsAlive.size() == 0) - { - if (_bomb == null) - { - _winText = "Bomb sites were successfully defended!"; - setWinner(GetTeam(ChatColor.AQUA), false); - } - else - { - _winText = "Bomb site will be destroyed!"; - setWinner(GetTeam(ChatColor.RED), false); - } - } - } - - public void setWinner(final GameTeam winner, boolean defuse) - { - if (_roundOver) - return; - - Bukkit.getPluginManager().callEvent(new RoundOverEvent(this)); - - _roundOver = true; - - String winnerLine = C.Bold + "The round was a draw!"; - ChatColor color = ChatColor.GRAY; - if (winner != null) - { - if(winner.GetName().contains("Bombers")) { - winnerLine= winner.GetColor() + C.Bold + winner.GetName() + " have won the round!"; - } else { - winnerLine= winner.GetColor() + C.Bold + winner.GetName() + " has won the round!"; - } - addScore(winner); - drawScoreboard(); - color = winner.GetColor(); - - - } - - //Sound - if (winner != null) - { - UtilServer.getServer().getScheduler().scheduleSyncDelayedTask(Manager.getPlugin(), new Runnable() - { - public void run() - { - if (winner.GetColor() == ChatColor.RED) - playSound(Radio.T_WIN, null, null); - else - playSound(Radio.CT_WIN, null, null); - } - }, defuse ? 60 : 0); - } - - //Record Streak for Money - if (winner.GetColor() == ChatColor.RED) - { - _winStreak++; - - if (_ctWonLast) - { - _ctWonLast = false; - _winStreak = 0; - } - } - else - { - _winStreak++; - - if (!_ctWonLast) - { - _ctWonLast = true; - _winStreak = 0; - } - } - - //Announce - Announce("", false); - Announce(color + "===================================", false); - Announce("", false); - Announce(winnerLine, false); - if (_winText != null) - Announce(_winText, false); - Announce("", false); - Announce(color + "===================================", false); - - for (Player player : UtilServer.getPlayers()) - { - player.playSound(player.getLocation(), Sound.LEVEL_UP, 1f, 1f); - removeScope(player); - - Recharge.Instance.Reset(player, "reload"); - } - - UtilTextMiddle.display(null, winnerLine, 20, 120, 20); - - //Check for total game win - EndCheck(); - - //Next Round (if not over) - if (IsLive()) - { - UtilServer.getServer().getScheduler().scheduleSyncDelayedTask(Manager.getPlugin(), new Runnable() - { - public void run() - { - restartRound(); - } - }, 100); - } - } - - public void restartRound() - { - giveMoney(); - - //Clean - resetGame(); - - //Teleport to Spawn - for (GameTeam team : GetTeamList()) - team.SpawnTeleport(false); - - //Revive Dead Players - for (Player player : GetPlayers(false)) - if (!IsAlive(player)) - { - SetPlayerState(player, PlayerState.IN); - - GameTeam team = GetTeam(player); - - //Teleport - team.SpawnTeleport(player); - - Manager.Clear(player); - UtilInv.Clear(player); - - ValidateKit(player, GetTeam(player)); - - if (GetKit(player) != null) - GetKit(player).ApplyKit(player); - } - - //Remove Scope - for (Player player : GetPlayers(false)) - removeScope(player); - - //Get Hit By Bullets - for (Player player : GetPlayers(false)) - ((CraftPlayer) player).getHandle().spectating = false; - - //Prepare Sound - for (Player player : GetPlayers(false)) - { - player.playSound(player.getLocation(), Sound.HORSE_ARMOR, 1f, 2f); - Manager.GetCondition().Factory().Blind("Respawn", player, null, 2, 0, false, false, false); - UtilPlayer.message(player, F.main("Game", "You have " + F.elem(C.cGreen + "$" + _shopManager.getMoney(player)) + ". Open your Inventory to spend it.")); - - UtilTextMiddle.display(C.cGreen + "$" + _shopManager.getMoney(player), "Open your Inventory to buy new equipment", 10, 120, 10, player); - } - - //Update Scoreboard Teams - for (GameTeam team : GetTeamList()) - for (Player teamMember : team.GetPlayers(true)) - GetScoreboard().SetPlayerTeam(teamMember, team.GetName().toUpperCase()); - - //Alternate Bullets - if (_bulletAlternate) - _bulletInstant = (_bulletInstant + 1)%3; - - //Debug Details - if (_debug) - { - Announce(C.cDPurple + C.Bold + "ROUND SETTINGS:"); - - if (_customHitbox) - Announce(C.cPurple + C.Bold + "Hitbox: " + ChatColor.RESET + "Accurate with Headshots"); - else - Announce(C.cPurple + C.Bold + "Hitbox: " + ChatColor.RESET + "Default with No Headshot"); - - if (_bulletInstant == 0) - Announce(C.cPurple + C.Bold + "Bullets: " + ChatColor.RESET + "Slow and Visible"); - else if (_bulletInstant == 1) - Announce(C.cPurple + C.Bold + "Bullets: " + ChatColor.RESET + "Instant and Invisible"); - else - Announce(C.cPurple + C.Bold + "Bullets: " + ChatColor.RESET + "Slow and Visible with Instant Sniper"); - } - } - - public void giveMoney() - { - if (_ctWonLast) - { - int ctMoney = 3250; - int tMoney = 1400 + (Math.min(4,_winStreak) * 500); - - if (_bombPlanted) - { - ctMoney += 250; - tMoney += 800; - } - - //Award - for (Player player : GetTeam(ChatColor.RED).GetPlayers(false)) - _shopManager.addMoney(player, tMoney, "losing the round"); - - for (Player player : GetTeam(ChatColor.AQUA).GetPlayers(false)) - _shopManager.addMoney(player, ctMoney, "winning the round"); - } - else - { - int tMoney = 3250; - int ctMoney = 1400 + (Math.min(4,_winStreak) * 500); - - //Award - for (Player player : GetTeam(ChatColor.RED).GetPlayers(false)) - _shopManager.addMoney(player, tMoney, "winning the round"); - - for (Player player : GetTeam(ChatColor.AQUA).GetPlayers(false)) - _shopManager.addMoney(player, ctMoney, "losing the round"); - } - } - - public void resetGame() - { - //General - _roundOver = false; - SetStateTime(System.currentTimeMillis()); - _freezeTime = 10; - _winText = null; - - //Bomb - if (_bomb != null) - _bomb.clean(); - - if (_bombItem != null) - _bombItem.remove(); - - if (_bombHolder != null) - { - _bombHolder.getInventory().remove(Material.GOLD_SWORD); - _bombHolder = null; - } - - _bomb = null; - _bombItem = null; - - _bombPlanter = null; - _bombDefuser = null; - _bombPlantedBy = null; - _bombPlanted = false; - //Dropped Guns for (Entity ent : _gunsDropped.keySet()) ent.remove(); @@ -2302,79 +1235,7 @@ public class MineStrike extends TeamGame //Restock Ammo for (Gun gun : _gunsEquipped.keySet()) - gun.restockAmmo(_gunsEquipped.get(gun)); - - //Health - for (Player player : UtilServer.getPlayers()) - player.setHealth(20); - - //Reset Shop - for (Player player : UtilServer.getPlayers()) - _shopManager.leaveShop(player, false, false); - } - - @EventHandler(priority = EventPriority.HIGHEST) - public void specToTeam(PlayerJoinEvent event) - { - if (GetState() == GameState.Recruit || GetState() == GameState.Loading) - return; - - //Target Team - GameTeam targetTeam = null; - if (GetTeamList().get(0).GetPlayers(false).size() < GetTeamList().get(1).GetPlayers(false).size()) - targetTeam = GetTeamList().get(0); - else if (GetTeamList().get(0).GetPlayers(false).size() > GetTeamList().get(1).GetPlayers(false).size()) - targetTeam = GetTeamList().get(1); - else if (Math.random() > 0.5) - targetTeam = GetTeamList().get(1); - else - targetTeam = GetTeamList().get(0); - - SetPlayerTeam(event.getPlayer(), targetTeam, false); - - ((CraftPlayer) event.getPlayer()).getHandle().spectating = true; - } - - @EventHandler(priority = EventPriority.HIGHEST) - public void quitLeaveTeam(PlayerQuitEvent event) - { - GameTeam team = GetTeam(event.getPlayer()); - - if (team != null) - { - team.RemovePlayer(event.getPlayer()); - } - } - - @EventHandler - public void restartFreezeCountdown(UpdateEvent event) - { - if (event.getType() != UpdateType.SEC) - return; - - if (_freezeTime <= 0) - return; - - _freezeTime--; - - for (Player player : UtilServer.getPlayers()) - { - if (_freezeTime > 0) - player.playSound(player.getLocation(), Sound.NOTE_STICKS, 1f, 1f); - else - player.playSound(player.getLocation(), Sound.NOTE_SNARE_DRUM, 1f, 1f); - } - - if (_freezeTime == 0) - { - //Give Bomb - Player bombPlayer = UtilAlg.Random(GetTeam(ChatColor.RED).GetPlayers(true)); - giveBombToPlayer(bombPlayer); - - //Sound - playSound(Radio.CT_START, null, GetTeam(ChatColor.AQUA)); - playSound(Radio.T_START, null, GetTeam(ChatColor.RED)); - } + gun.restockAmmo(_gunsEquipped.get(gun)); } @EventHandler @@ -2383,7 +1244,7 @@ public class MineStrike extends TeamGame if (_freezeTime <= 0) return; - if (!IsAlive(event.getPlayer())) + if (!_host.IsAlive(event.getPlayer())) return; if (UtilMath.offset2d(event.getFrom(), event.getTo()) <= 0) @@ -2398,13 +1259,13 @@ public class MineStrike extends TeamGame //@EventHandler public void boostClimb(PlayerToggleSneakEvent event) { - if (!IsLive()) + if (!_host.IsLive()) return; Player player = event.getPlayer(); boolean nearOther = false; - for (Player other : GetPlayers(true)) + for (Player other : _host.GetPlayers(true)) { if (player.equals(other)) continue; @@ -2439,7 +1300,7 @@ public class MineStrike extends TeamGame @EventHandler(priority = EventPriority.MONITOR) public void scopeUpdate(PlayerToggleSneakEvent event) { - if (!IsLive()) + if (!_host.IsLive()) return; Gun gun = getGunInHand(event.getPlayer(), null); @@ -2474,13 +1335,13 @@ public class MineStrike extends TeamGame @EventHandler public void scopeUpdate(UpdateEvent event) { - if (!IsLive()) + if (!_host.IsLive()) return; if (event.getType() != UpdateType.TICK) return; - for (Player player : GetPlayers(true)) + for (Player player : _host.GetPlayers(true)) { if (!_scoped.containsKey(player)) continue; @@ -2512,13 +1373,13 @@ public class MineStrike extends TeamGame //@EventHandler public void speedUpdate(UpdateEvent event) { - if (!IsLive()) + if (!_host.IsLive()) return; if (event.getType() != UpdateType.TICK) return; - for (Player player : GetPlayers(true)) + for (Player player : _host.GetPlayers(true)) { if (UtilGear.isMat(player.getItemInHand(), Material.IRON_AXE) || UtilGear.isMat(player.getItemInHand(), Material.IRON_SWORD)) Manager.GetCondition().Factory().Speed("Knife", player, player, 1.9, 0, false, false, false); @@ -2554,7 +1415,7 @@ public class MineStrike extends TeamGame @EventHandler public void gunUpdate(UpdateEvent event) { - if (!IsLive()) + if (!_host.IsLive()) return; if (event.getType() != UpdateType.TICK) @@ -2611,143 +1472,20 @@ public class MineStrike extends TeamGame } } - @Override - @EventHandler - public void ScoreboardUpdate(UpdateEvent event) - { - if (event != null && event.getType() != UpdateType.FAST) - return; - - drawScoreboard(); - } - - public void drawScoreboard() - { - Scoreboard.Reset(); - - for (GameTeam team : this.GetTeamList()) - { - - Scoreboard.WriteBlank(); - - Scoreboard.Write(getScore(team) + " " + team.GetColor() + C.Bold + team.GetName()); - //Scoreboard.Write(team.GetColor() + "" + getScore(team) + "" + " Wins" + team.GetColor()); - Scoreboard.Write(team.GetPlayers(true).size() + "" + " Alive" + team.GetColor()); - - } - - Scoreboard.WriteBlank(); - Scoreboard.Write(C.cGold + C.Bold + "Playing To"); - Scoreboard.Write(_roundsToWin + " Wins"); - - if (InProgress()) - { - Scoreboard.WriteBlank(); - - if (_bomb == null) - { - Scoreboard.Write(C.cGold + C.Bold + "Time Left"); - Scoreboard.Write(UtilTime.MakeStr(_roundTime - (System.currentTimeMillis() - this.GetStateTime()), 1)); - } - else - { - if (_bombScoreboardFlash) - Scoreboard.Write(C.cRed + C.Bold + "Bomb Active"); - else - Scoreboard.Write(C.cWhite + C.Bold + "Bomb Active"); - - _bombScoreboardFlash = !_bombScoreboardFlash; - } - } - - - Scoreboard.Draw(); - } - - @Override - public void EndCheck() - { - endCheckScore(); - endCheckPlayer(); - } - - public void endCheckScore() - { - if (!IsLive()) - return; - - for (GameTeam team : GetTeamList()) - { - if (getScore(team) >= _roundsToWin) - { - //Announce - AnnounceEnd(team); - - for (GameTeam other : GetTeamList()) - { - if (WinnerTeam != null && other.equals(WinnerTeam)) - { - for (Player player : other.GetPlayers(false)) - AddGems(player, 10, "Winning Team", false, false); - } - - for (Player player : other.GetPlayers(false)) - if (player.isOnline()) - AddGems(player, 10, "Participation", false, false); - } - - //End - SetState(GameState.End); - } - } - } - - public void endCheckPlayer() - { - if (!IsLive()) - return; - - ArrayList teamsAlive = new ArrayList(); - - for (GameTeam team : this.GetTeamList()) - if (team.GetPlayers(false).size() > 0) - teamsAlive.add(team); - - if (teamsAlive.size() <= 1) - { - //Announce - if (teamsAlive.size() > 0) - AnnounceEnd(teamsAlive.get(0)); - - for (GameTeam team : GetTeamList()) - { - if (WinnerTeam != null && team.equals(WinnerTeam)) - { - for (Player player : team.GetPlayers(false)) - AddGems(player, 10, "Winning Team", false, false); - } - - for (Player player : team.GetPlayers(false)) - if (player.isOnline()) - AddGems(player, 10, "Participation", false, false); - } - - //End - SetState(GameState.End); - } - } - //Cleans entities that may not have been removed due to unloaded chunks @EventHandler public void clean(UpdateEvent event) { - if (!IsLive()) + if(!_enableCleaning) + return; + + if (!_host.IsLive()) return; if (event.getType() != UpdateType.SEC) return; - for (Entity ent : WorldData.World.getEntities()) + for (Entity ent : _host.WorldData.World.getEntities()) { if (ent instanceof Player) continue; @@ -2809,7 +1547,7 @@ public class MineStrike extends TeamGame @EventHandler public void terroristCompass(UpdateEvent event) { - if (!IsLive()) + if (!_host.IsLive()) return; if (event.getType() != UpdateType.TICK) @@ -2823,7 +1561,10 @@ public class MineStrike extends TeamGame else if (_bomb != null) target = _bomb.Block.getLocation(); - for (Player player : GetTeam(ChatColor.RED).GetPlayers(true)) + if (_host.GetTeam(ChatColor.RED) == null) + return; + + for (Player player : _host.GetTeam(ChatColor.RED).GetPlayers(true)) { //Has Bomb if (player.getInventory().contains(Material.GOLD_SWORD)) @@ -2871,41 +1612,18 @@ public class MineStrike extends TeamGame player.getInventory().setItem(8, stack); } } - - @EventHandler - public void healthUpdate(UpdateEvent event) - { - if (!IsLive()) - return; - - if (event.getType() != UpdateType.SEC) - return; - - for (Player player : UtilServer.getPlayers()) - _scoreObj.getScore(player.getName()).setScore((int)(player.getHealth() * 5)); - } - - @EventHandler(priority = EventPriority.MONITOR) - public void damageHealth(CustomDamageEvent event) - { - Player player = event.GetDamagerPlayer(true); - if (player == null) - return; - - _scoreObj.getScore(player.getName()).setScore((int)(player.getHealth() * 5)); - } @EventHandler public void fireDamage(CustomDamageEvent event) { if (event.GetCause() == DamageCause.FIRE) - event.AddMod(this.GetName(), "Fire", 1, false); + event.AddMod(_host.GetName(), "Fire", 1, false); } @EventHandler public void teleportCancel(PlayerTeleportEvent event) { - if (!IsLive()) + if (!_host.IsLive()) return; if (event.getCause() == TeleportCause.ENDER_PEARL) @@ -2914,7 +1632,7 @@ public class MineStrike extends TeamGame public int getBulletType() { - return _bulletInstant; + return BulletInstant; } public void playSound(Radio radio, Player player, GameTeam team) @@ -2931,7 +1649,7 @@ public class MineStrike extends TeamGame } else if (player != null) { - GameTeam playerTeam = GetTeam(player); + GameTeam playerTeam = _host.GetTeam(player); if (playerTeam == null) return; @@ -2943,21 +1661,13 @@ public class MineStrike extends TeamGame @EventHandler public void debug(PlayerCommandPreprocessEvent event) { - if (!event.getPlayer().isOp()) - return; - - if (event.getMessage().contains("money")) - { - _shopManager.addMoney(event.getPlayer(), 16000, "Debug"); - event.setCancelled(true); - } if (event.getMessage().contains("recoil")) { try { - MineStrike.RECOIL = Float.parseFloat(event.getMessage().split(" ")[1]); - this.Announce(C.cPurple + C.Bold + "Recoil Bloom: " + ChatColor.RESET + (int)(MineStrike.RECOIL * 100) + "%"); + GunModule.RECOIL = Float.parseFloat(event.getMessage().split(" ")[1]); + _host.Announce(C.cPurple + C.Bold + "Recoil Bloom: " + ChatColor.RESET + (int)(GunModule.RECOIL * 100) + "%"); } catch (Exception e) { @@ -2970,8 +1680,8 @@ public class MineStrike extends TeamGame { try { - MineStrike.CONE = Float.parseFloat(event.getMessage().split(" ")[1]); - this.Announce(C.cPurple + C.Bold + "Cone of Fire: " + ChatColor.RESET + (int)(MineStrike.CONE * 100) + "%"); + GunModule.CONE = Float.parseFloat(event.getMessage().split(" ")[1]); + _host.Announce(C.cPurple + C.Bold + "Cone of Fire: " + ChatColor.RESET + (int)(GunModule.CONE * 100) + "%"); } catch (Exception e) { @@ -2984,8 +1694,8 @@ public class MineStrike extends TeamGame { try { - MineStrike.MOVE_PENALTY = Float.parseFloat(event.getMessage().split(" ")[1]); - this.Announce(C.cPurple + C.Bold + "Move/Sprint/Jump Penalties: " + ChatColor.RESET + (int)(MineStrike.MOVE_PENALTY * 100) + "%"); + GunModule.MOVE_PENALTY = Float.parseFloat(event.getMessage().split(" ")[1]); + _host.Announce(C.cPurple + C.Bold + "Move/Sprint/Jump Penalties: " + ChatColor.RESET + (int)(GunModule.MOVE_PENALTY * 100) + "%"); } catch (Exception e) { @@ -2996,14 +1706,14 @@ public class MineStrike extends TeamGame if (event.getMessage().contains("instant")) { - _bulletInstant = (_bulletInstant + 1)%3; + BulletInstant = (BulletInstant + 1)%3; - if (_bulletInstant == 0) - Announce(C.cPurple + C.Bold + "Bullets: " + ChatColor.RESET + "Slow and Visible"); - else if (_bulletInstant == 1) - Announce(C.cPurple + C.Bold + "Bullets: " + ChatColor.RESET + "Instant and Invisible"); + if (BulletInstant == 0) + _host.Announce(C.cPurple + C.Bold + "Bullets: " + ChatColor.RESET + "Slow and Visible"); + else if (BulletInstant == 1) + _host.Announce(C.cPurple + C.Bold + "Bullets: " + ChatColor.RESET + "Instant and Invisible"); else - Announce(C.cPurple + C.Bold + "Bullets: " + ChatColor.RESET + "Slow and Visible with Instant Sniper"); + _host.Announce(C.cPurple + C.Bold + "Bullets: " + ChatColor.RESET + "Slow and Visible with Instant Sniper"); event.setCancelled(true); @@ -3011,48 +1721,48 @@ public class MineStrike extends TeamGame if (event.getMessage().contains("hitbox")) { - _customHitbox = !_customHitbox; + CustomHitbox = !CustomHitbox; - if (_customHitbox) - Announce(C.cPurple + C.Bold + "Hitbox: " + ChatColor.RESET + "Accurate with Headshots"); + if (CustomHitbox) + _host.Announce(C.cPurple + C.Bold + "Hitbox: " + ChatColor.RESET + "Accurate with Headshots"); else - Announce(C.cPurple + C.Bold + "Hitbox: " + ChatColor.RESET + "Default with No Headshot"); + _host.Announce(C.cPurple + C.Bold + "Hitbox: " + ChatColor.RESET + "Default with No Headshot"); event.setCancelled(true); } if (event.getMessage().contains("alternate")) { - _bulletAlternate = !_bulletAlternate; + BulletAlternate = !BulletAlternate; - Announce(C.cPurple + C.Bold + "Alternate Bullet Type: " + ChatColor.RESET + _bulletAlternate); + _host.Announce(C.cPurple + C.Bold + "Alternate Bullet Type: " + ChatColor.RESET + BulletAlternate); event.setCancelled(true); } if (event.getMessage().contains("god")) { - if (HealthSet == 20) - HealthSet = -1; + if (_host.HealthSet == 20) + _host.HealthSet = -1; else - HealthSet = 20; + _host.HealthSet = 20; - Announce(C.cPurple + C.Bold + "God Mode: " + ChatColor.RESET + (HealthSet == 20)); + _host.Announce(C.cPurple + C.Bold + "God Mode: " + ChatColor.RESET + (_host.HealthSet == 20)); event.setCancelled(true); } if (event.getMessage().contains("debugplayer")) { - Announce(C.Bold + "PLAYER DEBUG:"); + _host.Announce(C.Bold + "PLAYER DEBUG:"); for (Player player : UtilServer.getPlayers()) { - GameTeam team = GetTeam(player); + GameTeam team = _host.GetTeam(player); - Announce(player.getName() + " " + + _host.Announce(player.getName() + " " + (team != null ? team.GetColor() + team.GetName() : C.cGray + "No Team") + " " + - (IsAlive(player) ? C.cGreen + "ALIVE" : C.cRed + "DEAD") + " " + + (_host.IsAlive(player) ? C.cGreen + "ALIVE" : C.cRed + "DEAD") + " " + C.cGray + UtilWorld.locToStrClean(player.getLocation()) ); } @@ -3062,14 +1772,14 @@ public class MineStrike extends TeamGame if (event.getMessage().contains("debugteam")) { - Announce(C.Bold + "TEAM DEBUG:"); + _host.Announce(C.Bold + "TEAM DEBUG:"); - for (GameTeam team : GetTeamList()) + for (GameTeam team : _host.GetTeamList()) for (Player player : team.GetPlayers(false)) { - Announce(player.getName() + " " + + _host.Announce(player.getName() + " " + (team != null ? team.GetColor() + team.GetName() : C.cGray + "No Team") + " " + - (IsAlive(player) ? C.cGreen + "ALIVE" : C.cRed + "DEAD") + " " + + (_host.IsAlive(player) ? C.cGreen + "ALIVE" : C.cRed + "DEAD") + " " + C.cGray + UtilWorld.locToStrClean(player.getLocation()) ); } @@ -3078,17 +1788,6 @@ public class MineStrike extends TeamGame } } - //Used for fire grenade spread - public int getRound() - { - int rounds = 0; - - for (int i : _score.values()) - rounds += i; - - return rounds; - } - public boolean isFreezeTime() { return _freezeTime > 0; @@ -3100,7 +1799,7 @@ public class MineStrike extends TeamGame // This is an extra event added in order to prevent players from // extinguishing fire that gets generated from moltovs and incendiary grenades. - if (!IsLive()) + if (!_host.IsLive()) return; if (UtilEvent.isAction(event, ActionType.L_BLOCK)) @@ -3150,77 +1849,12 @@ public class MineStrike extends TeamGame _bombItem.setPickupDelay(60); //Radio - playSound(Radio.T_BOMB_DROP, null, GetTeam(_bombHolder)); + playSound(Radio.T_BOMB_DROP, null, _host.GetTeam(_bombHolder)); _bombHolder = null; } } - @Override - public Location GetSpectatorLocation() - { - if (SpectatorSpawn != null) - return SpectatorSpawn; - - Vector vec = new Vector(0, 0, 0); - double count = 0; - - for (GameTeam team : this.GetTeamList()) - { - for (Location spawn : team.GetSpawns()) - { - count++; - vec.add(spawn.toVector()); - } - } - - SpectatorSpawn = new Location(this.WorldData.World, 0, 0, 0); - - vec.multiply(1d / count); - - SpectatorSpawn.setX(vec.getX()); - SpectatorSpawn.setY(vec.getY() + 7); //ADD 7 - SpectatorSpawn.setZ(vec.getZ()); - - // Move Up - Out Of Blocks - while (!UtilBlock.airFoliage(SpectatorSpawn.getBlock()) - || !UtilBlock.airFoliage(SpectatorSpawn.getBlock().getRelative(BlockFace.UP))) - { - SpectatorSpawn.add(0, 1, 0); - } - - int Up = 0; - - // Move Up - Through Air - for (int i = 0; i < 15; i++) - { - if (UtilBlock.airFoliage(SpectatorSpawn.getBlock().getRelative(BlockFace.UP))) - { - SpectatorSpawn.add(0, 1, 0); - Up++; - } - else - { - break; - } - } - - // Move Down - Out Of Blocks - while (Up > 0 && !UtilBlock.airFoliage(SpectatorSpawn.getBlock()) - || !UtilBlock.airFoliage(SpectatorSpawn.getBlock().getRelative(BlockFace.UP))) - { - SpectatorSpawn.subtract(0, 1, 0); - Up--; - } - - SpectatorSpawn = SpectatorSpawn.getBlock().getLocation().add(0.5, 0.1, 0.5); - - while (SpectatorSpawn.getBlock().getTypeId() != 0 || SpectatorSpawn.getBlock().getRelative(BlockFace.UP).getTypeId() != 0) - SpectatorSpawn.add(0, 1, 0); - - return SpectatorSpawn; - } - @EventHandler public void enableScpResPack(PlayerCommandPreprocessEvent event) { @@ -3239,4 +1873,155 @@ public class MineStrike extends TeamGame UtilPlayer.message(event.getPlayer(), F.main("Resource Pack", "Type " + F.elem("/rpoff") + " to disable.")); } } + + public void giveBombToPlayer(Player player) + { + if (player == null) + return; + + GameTeam team = _host.GetTeam(player); + if (team == null) + return; + + if (team.GetColor() != ChatColor.RED) + return; + + //Bomb + player.getInventory().setItem(8, ItemStackFactory.Instance.CreateStack(Material.GOLD_SWORD, (byte)0, 1, C.cGold + C.Bold + "C4 Explosive")); + + //Inform + if (!_host.IsLive() || _freezeTime > 0) + { + for (Player other : team.GetPlayers(false)) + if (!other.equals(player)) + { + UtilTextMiddle.display(null, player.getName() + " has the Bomb", 10, 80, 10, other); + UtilPlayer.message(other, C.cGold + C.Bold + player.getName() + " has the Bomb!"); + } + + //Chat + UtilPlayer.message(player, C.cGold + C.Bold + "You have the Bomb!"); + UtilPlayer.message(player, C.cGold + C.Bold + "Hold Right-Click to place at a Bomb Site!"); + + //Title + UtilTextMiddle.display(C.cRed + "You have the Bomb", "Hold Right-Click to place at a Bomb Site!", 10, 80, 10, player); + } + else + { + for (Player other : team.GetPlayers(false)) + if (!other.equals(player)) + { + UtilPlayer.message(other, C.cGold + C.Bold + player.getName() + " picked up the Bomb!"); + + //Title + UtilTextMiddle.display(null, player.getName() + " picked up the Bomb", 10, 50, 10, other); + } + + + //Chat + UtilPlayer.message(player, C.cGold + C.Bold + "You picked up the Bomb!"); + + //Title + UtilTextMiddle.display(null, "You picked up the Bomb", 10, 50, 10, player); + } + + + player.playSound(player.getLocation(), Sound.NOTE_PLING, 1f, 2f); + _bombHolder = player; + _bombHolderLastMove = System.currentTimeMillis(); + + if (_bombItem != null) + { + _bombItem.remove(); + _bombItem = null; + } + } + + public void undisguise(Player player) + { + _disguise.remove(player); + } + + public Player getBombHolder() + { + return _bombHolder; + } + + public void setBombHolder(Player player) + { + _bombHolder = player; + } + + public Bomb getBomb() + { + return _bomb; + } + + public void setBomb(Bomb bomb) + { + _bomb = bomb; + } + + public Item getBombItem() + { + return _bombItem; + } + + public void setBombItem(Item bomb) + { + _bombItem = bomb; + } + + public long getFreezeTime() + { + return _freezeTime; + } + + public void setFreezeTime(long time) + { + _freezeTime = time; + } + + public int getRound() + { + if (_host instanceof Minestrike) + return ((Minestrike) _host).getRound(); + + return _round; + } + + public void setRound(int round) + { + _round = round; + } + + public void setEnablePickup(boolean pickup) + { + _enablePickup = pickup; + } + + public void setEnableDrop(boolean drop) + { + _enableDrop = drop; + } + + public void setEnableCleaning(boolean cleaning) + { + _enableCleaning = cleaning; + } + + public Game getHost() + { + return _host; + } + + public HashMap getDroppedGuns() + { + return _gunsDropped; + } + + public HashMap getDroppedGrenades() + { + return _grenadesDropped; + } } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/Minestrike.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/Minestrike.java new file mode 100644 index 000000000..7fa92ed36 --- /dev/null +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/Minestrike.java @@ -0,0 +1,1347 @@ +package nautilus.game.arcade.game.games.minestrike; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; + +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.Color; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.block.Block; +import org.bukkit.block.BlockFace; +import org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer; +import org.bukkit.entity.Entity; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.entity.EntityDamageEvent.DamageCause; +import org.bukkit.event.inventory.InventoryClickEvent; +import org.bukkit.event.player.PlayerCommandPreprocessEvent; +import org.bukkit.event.player.PlayerInteractEvent; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.event.player.PlayerMoveEvent; +import org.bukkit.event.player.PlayerQuitEvent; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.LeatherArmorMeta; +import org.bukkit.scoreboard.DisplaySlot; +import org.bukkit.scoreboard.NameTagVisibility; +import org.bukkit.scoreboard.Objective; +import org.bukkit.scoreboard.Team; +import org.bukkit.util.Vector; + +import mineplex.core.common.util.C; +import mineplex.core.common.util.F; +import mineplex.core.common.util.UtilAlg; +import mineplex.core.common.util.UtilBlock; +import mineplex.core.common.util.UtilEnt; +import mineplex.core.common.util.UtilEvent; +import mineplex.core.common.util.UtilGear; +import mineplex.core.common.util.UtilInv; +import mineplex.core.common.util.UtilMath; +import mineplex.core.common.util.UtilPlayer; +import mineplex.core.common.util.UtilServer; +import mineplex.core.common.util.UtilTextMiddle; +import mineplex.core.common.util.UtilTime; +import mineplex.core.common.util.UtilEvent.ActionType; +import mineplex.core.gadget.GadgetManager; +import mineplex.core.gadget.gadgets.gamemodifiers.GameModifierType; +import mineplex.core.gadget.gadgets.gamemodifiers.minestrike.GameModifierMineStrikeSkin; +import mineplex.core.itemstack.ItemStackFactory; +import mineplex.core.recharge.Recharge; +import mineplex.core.updater.UpdateType; +import mineplex.core.updater.event.UpdateEvent; +import mineplex.minecraft.game.core.combat.event.CombatDeathEvent; +import mineplex.minecraft.game.core.condition.Condition.ConditionType; +import mineplex.minecraft.game.core.damage.CustomDamageEvent; +import nautilus.game.arcade.ArcadeManager; +import nautilus.game.arcade.GameType; +import nautilus.game.arcade.events.GameStateChangeEvent; +import nautilus.game.arcade.events.PlayerKitGiveEvent; +import nautilus.game.arcade.game.GameTeam; +import nautilus.game.arcade.game.TeamGame; +import nautilus.game.arcade.game.GameTeam.PlayerState; +import nautilus.game.arcade.game.games.minestrike.GunModule.RoundOverEvent; +import nautilus.game.arcade.game.games.minestrike.data.Bomb; +import nautilus.game.arcade.game.games.minestrike.items.guns.Gun; +import nautilus.game.arcade.game.games.minestrike.items.guns.GunStats; +import nautilus.game.arcade.game.games.minestrike.kits.KitPlayer; +import nautilus.game.arcade.kit.Kit; +import nautilus.game.arcade.managers.chat.ChatStatData; +import nautilus.game.arcade.stats.KaboomStatTracker; +import nautilus.game.arcade.stats.KillAllOpposingMineStrikeRoundStatTracker; +import nautilus.game.arcade.stats.KillFastStatTracker; +import nautilus.game.arcade.stats.KillReasonStatTracker; +import nautilus.game.arcade.stats.KillsWithConditionStatTracker; +import nautilus.game.arcade.stats.MineStrikeGunStats; +import nautilus.game.arcade.stats.MineStrikeLastAliveKillStatTracker; +import nautilus.game.arcade.stats.TeamDeathsStatTracker; +import nautilus.game.arcade.stats.TeamKillsStatTracker; + +/** + * Minestrike + * + * @author xXVevzZXx + */ +public class Minestrike extends TeamGame +{ + + //Managers + private ShopManager _shopManager; + + //Data + private int _roundsToWin = 8; + private long _roundTime = 120000; + + //Round Data + private String _winText = null; + private boolean _roundOver = false; + + //Money Data + private boolean _bombPlanted = false; + private boolean _ctWonLast = false; + private int _winStreak = 0; + + private HashMap _score = new HashMap(); + + //Map Data + private ArrayList _bombSites; + + private Player _bombPlanter; + private Player _bombDefuser; + private Player _bombPlantedBy; + + private boolean _bombScoreboardFlash = false; + + private GunModule _gunModule; + + //Scoreboard + private Objective _scoreObj; + + public Minestrike(ArcadeManager manager) + { + super(manager, GameType.MineStrike, + + new Kit[] + { + new KitPlayer(manager), + }, + + new String[] + { + C.cAqua + "SWAT" + C.cWhite + " Defend the Bomb Sites", + C.cAqua + "SWAT" + C.cWhite + " Kill the Bombers", + " ", + C.cRed + "Bombers" + C.cWhite + " Plant the Bomb at Bomb Site", + C.cRed + "Bombers" + C.cWhite + " Kill the SWAT Team", + }); + + _shopManager = new ShopManager(this); + Manager.getCosmeticManager().setHideParticles(true); + + this.StrictAntiHack = true; + + AnnounceStay = false; + + this.HungerSet = 20; + + this.ItemDrop = true; + + this.DeathTeleport = false; + + this.InventoryClick = true; + + this.JoinInProgress = true; + + this.DontAllowOverfill = true; + + _scoreObj = Scoreboard.GetScoreboard().registerNewObjective("HP", "dummy"); + _scoreObj.setDisplaySlot(DisplaySlot.BELOW_NAME); + + this._help = new String[] + { + //"Tap Crouch when close to an ally to Boost", + "Open Inventory at spawn to buy guns", + "Hold Right-Click to Plant Bomb", + "Look at the Bomb to Defuse it", + "Moving decreases accuracy", + "Sprinting heavily decreases accuracy", + "Jumping massively decreases accuracy", + "Crouching increases accuracy", + "Left-Click to drop Grenades", + "Right-Click to throw Grenades", + "Burst Fire for greater accuracy", + "Sniper Rifles are only accurate while scoped", + "Rifles have 30% recoil reduction while scoped", + "Pick up better weapons from dead players" + }; + + registerStatTrackers( + new KillReasonStatTracker(this, "Headshot", "BoomHeadshot", true), + new KillAllOpposingMineStrikeRoundStatTracker(this), + new KaboomStatTracker(this), + new KillReasonStatTracker(this, "Backstab", "Assassination", false), + new MineStrikeLastAliveKillStatTracker(this), + new KillFastStatTracker(this, 4, 5, "KillingSpree"), + new KillsWithConditionStatTracker(this, "Blindfolded", ConditionType.BLINDNESS, "Flash Bang", 2), + + new TeamDeathsStatTracker(this), + new TeamKillsStatTracker(this), + + new MineStrikeGunStats(this) + ); + + registerChatStats( + Kills, + Deaths, + KDRatio, + BlankLine, + new ChatStatData("BoomHeadshot", "Headshots", true), + Assists + ); + + _gunModule = new GunModule(this); + } + + @EventHandler + public void CustomTeamGeneration(GameStateChangeEvent event) + { + if (event.GetState() != GameState.Recruit) + return; + + this.GetTeamList().get(0).SetColor(ChatColor.AQUA); + this.GetTeamList().get(0).SetName("SWAT"); + + this.GetTeamList().get(1).SetColor(ChatColor.RED); + this.GetTeamList().get(1).SetName("Bombers"); + } + + @EventHandler + public void SetScoreboardNameVisibility(GameStateChangeEvent event) + { + if (event.GetState() != GameState.Prepare) + return; + + System.out.println("Hiding Scoreboard Nametags for Other Teams"); + for (Team curTeam : Scoreboard.GetScoreboard().getTeams()) + { + curTeam.setNameTagVisibility(NameTagVisibility.HIDE_FOR_OTHER_TEAMS); + //UtilServer.getServer().dispatchCommand(UtilServer.getServer().getConsoleSender(), + // "scoreboard teams option " + curTeam.getName() + " nametagVisibility hideForOtherTeams"); + } + } + + @Override + public void ParseData() + { + _bombSites = WorldData.GetDataLocs("RED"); + } + + @EventHandler + public void giveStartEquipment(PlayerKitGiveEvent event) + { + GameTeam team = GetTeam(event.getPlayer()); + if (team == null) + return; + + GadgetManager gadgetManager = Manager.getCosmeticManager().getGadgetManager(); + GameModifierMineStrikeSkin knifeSkin = (GameModifierMineStrikeSkin) gadgetManager.getActiveGameModifier(event.getPlayer(), + GameModifierType.MineStrike, GameModifierMineStrikeSkin.getWeaponFilter("Knife")); + + Material mat = Material.IRON_AXE; + byte data = 0; + String name = "Knife"; + + if(knifeSkin != null) + { + mat = knifeSkin.getSkinMaterial(); + data = knifeSkin.getSkinData(); + name = knifeSkin.GetName(); + } + + ItemStack knife = ItemStackFactory.Instance.CreateStack(mat, data, 1, name); + + if (team.GetColor() == ChatColor.RED) + { + if (IsAlive(event.getPlayer())) + { + //Pistol + Gun gun = new Gun(GunStats.GLOCK_18, _gunModule); + _gunModule.registerGun(gun, event.getPlayer()); + gun.giveToPlayer(event.getPlayer(), true); + gun.updateSkin(event.getPlayer(), getArcadeManager().getCosmeticManager().getGadgetManager()); + gun.updateWeaponName(event.getPlayer(), _gunModule); + + //Knife + if(knifeSkin == null) knife.setType(Material.IRON_AXE); + + event.getPlayer().getInventory().setItem(2, knife); + + //Armor + giveTeamArmor(event.getPlayer(), Color.fromRGB(255, 75, 75)); + } + } + else if (team.GetColor() == ChatColor.AQUA) + { + if (IsAlive(event.getPlayer())) + { + //Pistol + Gun gun = new Gun(GunStats.P2000, _gunModule); + _gunModule.registerGun(gun, event.getPlayer()); + gun.giveToPlayer(event.getPlayer(), true); + gun.updateWeaponName(event.getPlayer(), _gunModule); + gun.updateSkin(event.getPlayer(), getArcadeManager().getCosmeticManager().getGadgetManager()); + + //Knife + if(knifeSkin == null) knife.setType(Material.IRON_SWORD); + + event.getPlayer().getInventory().setItem(2, knife); + + //Armor + giveTeamArmor(event.getPlayer(), Color.fromRGB(125, 200, 255)); + } + } + + //Enter Shop + _shopManager.enterShop(event.getPlayer()); + } + + public void giveTeamArmor(Player player, Color color) + { + ItemStack armor = new ItemStack(Material.LEATHER_CHESTPLATE); + LeatherArmorMeta meta = (LeatherArmorMeta)armor.getItemMeta(); + meta.setColor(color); + armor.setItemMeta(meta); + player.getInventory().setChestplate(armor); + + ItemStack legs = new ItemStack(Material.LEATHER_LEGGINGS); + LeatherArmorMeta metaLegs = (LeatherArmorMeta)legs.getItemMeta(); + metaLegs.setColor(color); + legs.setItemMeta(metaLegs); + player.getInventory().setLeggings(legs); + + ItemStack boots = new ItemStack(Material.LEATHER_BOOTS); + LeatherArmorMeta metaBoots = (LeatherArmorMeta)boots.getItemMeta(); + metaBoots.setColor(color); + boots.setItemMeta(metaBoots); + player.getInventory().setBoots(boots); + } + + @EventHandler + public void shopInventoryClick(InventoryClickEvent event) + { + _shopManager.inventoryClick(event); + } + + @EventHandler + public void shopUpdate(UpdateEvent event) + { + if (event.getType() != UpdateType.SEC) + return; + + _shopManager.update(); + } + + @EventHandler + public void quitClean(PlayerQuitEvent event) + { + _shopManager.leaveShop(event.getPlayer(), false, true); + _gunModule.undisguise(event.getPlayer()); + _gunModule.removeScope(event.getPlayer()); + _gunModule.dropInventory(event.getPlayer()); + } + + @EventHandler + public void giveBombInitial(GameStateChangeEvent event) + { + if (event.GetState() != GameState.Prepare) + return; + + UtilServer.getServer().getScheduler().scheduleSyncDelayedTask(Manager.getPlugin(), new Runnable() + { + public void run() + { + Player player = UtilAlg.Random(GetTeam(ChatColor.RED).GetPlayers(true)); + + _gunModule.giveBombToPlayer(player); + } + }, 40); + } + + + @EventHandler + public void killReward(CombatDeathEvent event) + { + if (!(event.GetEvent().getEntity() instanceof Player)) + return; + + Player killed = (Player)event.GetEvent().getEntity(); + + if (event.GetLog().GetKiller() != null) + { + Player killer = UtilPlayer.searchExact(event.GetLog().GetKiller().GetName()); + + if (killer == null || killer.equals(killed)) + return; + + if (GetTeam(killed).equals(GetTeam(killer))) + return; + + int amount = 300; + + if (event.GetLog().GetLastDamager().GetReason().contains("AWP")) + amount = 100; + + else if (event.GetLog().GetLastDamager().GetReason().contains("PP-Bizon")) + amount = 600; + + else if (event.GetLog().GetLastDamager().GetReason().contains("Nova")) + amount = 900; + + else if (event.GetLog().GetLastDamager().GetReason().contains("Knife")) + amount = 1500; + + _shopManager.addMoney(killer, amount, "kill with " + event.GetLog().GetLastDamager().GetReason()); + + /* + if(event.GetLog().GetLastDamager().GetReason().contains("Knife")) + { + GadgetManager gadgetManager = Manager.getCosmeticManager().getGadgetManager(); + GameModifierMineStrikeSkin knifeSkin = (GameModifierMineStrikeSkin) gadgetManager.getActiveGameModifier(event.getPlayer(), + GameModifierType.MineStrike, GameModifierMineStrikeSkin.getWeaponFilter("Knife")); + + if(knifeSkin != null) + { + int kills = GetStats().get(killer).get("") + ItemStack item = killer.getInventory().getItem(2); + ItemMeta im = item.getItemMeta(); + im.setDisplayName(C.cYellow + C.Bold + knifeSkin.GetName() + " - Kills: " + kills); + + AddStat(killer, "Knife." + knifeSkin.GetName() + ".Kills", 1, false, false); + } + } + */ + } + } + + @EventHandler + public void plantBomb(PlayerInteractEvent event) + { + Player player = event.getPlayer(); + + if (!UtilGear.isMat(player.getItemInHand(), Material.GOLD_SWORD)) + return; + + // Fixed bomb able to be planted after the round is over. + if (_roundOver) + { + UtilPlayer.message(player, F.main("Game", "You cannot plant the bomb once the round is over.")); + event.setCancelled(true); + return; + } + + // Added a small tip for players that are trying to right-click with the bomb. + if (UtilEvent.isAction(event, ActionType.L)) + { + UtilPlayer.message(player, F.main("Game", "You must " + F.elem("Right-Click") + " while holding the bomb to plant it.")); + event.setCancelled(true); + return; + } + + if (!UtilEnt.isGrounded(player)) + { + UtilPlayer.message(player, F.main("Game", "You can only plant the bomb on the ground.")); + event.setCancelled(true); + return; + } + + //Should never occur with 1 Bomb + if (_bombPlanter != null) + { + UtilPlayer.message(player, F.main("Game", "Someone else is planting the bomb.")); + event.setCancelled(true); + return; + } + + //Check Bomb Sites + boolean near = false; + for (Location loc : _bombSites) + { + if (UtilMath.offset(player.getLocation(), loc) < 5) + { + near = true; + break; + } + } + + //Too Far + if (!near) + { + UtilPlayer.message(player, F.main("Game", "You can only plant the bomb at a bomb site.")); + event.setCancelled(true); + return; + } + + _bombPlanter = player; + _bombPlanter.setExp(0f); + + UtilPlayer.message(player, F.main("Game", "You are now placing the bomb.")); + + //Radio + _gunModule.playSound(Radio.T_BOMB_PLANT, null, GetTeam(_bombPlanter)); + } + + @EventHandler + public void plantBombUpdate(UpdateEvent event) + { + if (event.getType() != UpdateType.TICK) + return; + + // Added to check if the round is over when a bomb is being planted. + if (_roundOver) + return; + + if (_bombPlanter == null) + return; + + if (!_bombPlanter.isBlocking() || !_bombPlanter.isOnline()) + { + _bombPlanter.setExp(0f); + UtilTextMiddle.clear(_bombPlanter); + _bombPlanter = null; + return; + } + + _bombPlanter.setExp(Math.min(_bombPlanter.getExp() + 0.017f, 0.99999f)); + + if (Math.random() > 0.90) + _bombPlanter.getWorld().playSound(_bombPlanter.getLocation(), Sound.NOTE_PLING, 2f, 3f); + + UtilTextMiddle.display(C.cRed + C.Bold + "Planting Bomb", UtilTextMiddle.progress(_bombPlanter.getExp()), 0, 10, 0, _bombPlanter); + + if (_bombPlanter.getExp() >= 0.98f) + { + _gunModule.setBomb(new Bomb(_bombPlanter)); + + _shopManager.addMoney(_bombPlanter, 300, "planting the bomb"); + + Announce(C.cRed + C.Bold + _bombPlanter.getName() + " has planted the bomb!"); + + _bombPlantedBy = _bombPlanter; + + _bombPlanter.setExp(0f); + _bombPlanter.setItemInHand(null); + _bombPlanter = null; + _gunModule.setBombHolder(null); + + //Sound + _gunModule.playSound(Radio.BOMB_PLANT, null, null); + + //Title + UtilTextMiddle.display(null, C.cRed + C.Bold + "Bomb has been planted!", 10, 50, 10); + } + } + + @EventHandler + public void plantDefuseBombRestrictMovement(PlayerMoveEvent event) + { + if (_bombPlanter != null && _bombPlanter.equals(event.getPlayer())) + if (UtilMath.offset(event.getFrom(), event.getTo()) > 0) + event.setTo(event.getFrom()); + + // if (_bombDefuser != null && _bombDefuser.equals(event.getPlayer())) + // if (UtilMath.offset(event.getFrom(), event.getTo()) > 0) + // event.setTo(event.getFrom()); + } + + @EventHandler + public void defuseKitMessage(PlayerInteractEvent event) + { + Player player = event.getPlayer(); + + if (!UtilGear.isMat(player.getItemInHand(), Material.SHEARS)) + return; + + UtilPlayer.message(player, F.main("Game", "Look at the Bomb to defuse it.")); + } + + public void startDefuse() + { + for (Player player : GetTeam(ChatColor.AQUA).GetPlayers(true)) + { + HashSet ignoreBlocks = new HashSet(); + ignoreBlocks.add(Material.AIR); + ignoreBlocks.add(Material.PORTAL); + + Block block = player.getTargetBlock(ignoreBlocks, 5); + + if (block == null || !_gunModule.getBomb().isBlock(block)) + continue; + + if (UtilMath.offset(player.getLocation(), block.getLocation().add(0.5, 0, 0.5)) > 3) + continue; + + if (_bombDefuser != null) + { + if (Recharge.Instance.use(player, "Defuse Message", 2000, false, false)) + UtilPlayer.message(player, F.main("Game", _bombDefuser.getName() + " is already defusing the Bomb.")); + + continue; + } + + _bombDefuser = player; + _bombDefuser.setExp(0f); + + UtilPlayer.message(player, F.main("Game", "You are defusing the Bomb.")); + + _bombDefuser.getWorld().playSound(_bombDefuser.getLocation(), Sound.PISTON_RETRACT, 2f, 1f); + } + } + + @EventHandler + public void defuseBombUpdate(UpdateEvent event) + { + if (_gunModule.getBomb() == null) + return; + + if (!IsLive()) + return; + + if (event.getType() != UpdateType.TICK) + return; + + if (_bombDefuser == null) + { + startDefuse(); + } + + if (_bombDefuser == null) + return; + + HashSet ignoreBlocks = new HashSet(); + ignoreBlocks.add(Material.AIR); + ignoreBlocks.add(Material.PORTAL); + + Block block = _bombDefuser.getTargetBlock(ignoreBlocks, 5); + + if (!IsAlive(_bombDefuser) || block == null || !_gunModule.getBomb().isBlock(block) || !_bombDefuser.isOnline() || UtilMath.offset(_bombDefuser.getLocation(), block.getLocation().add(0.5, 0, 0.5)) > 3) + { + _bombDefuser.setExp(0f); + _bombDefuser = null; + return; + } + + //Kit or Not? + float defuseRate = 0.005f; + if (UtilGear.isMat(_bombDefuser.getInventory().getItem(8), Material.SHEARS)) + defuseRate = 0.01f; + + _bombDefuser.setExp(Math.min(_bombDefuser.getExp() + defuseRate, 0.99999f)); + + UtilTextMiddle.display(C.cAqua + C.Bold + "Defusing Bomb", UtilTextMiddle.progress(_bombDefuser.getExp()), 0, 10, 0, _bombDefuser); + + if (_bombDefuser.getExp() >= 0.98f) + { + _gunModule.getBomb().defuse(); + + _winText = _bombDefuser.getName() + " defused the bomb!"; + + _gunModule.setBomb(null); + _bombDefuser.setExp(0f); + _bombDefuser = null; + + //Sound + _gunModule.playSound(Radio.BOMB_DEFUSE, null, null); + + setWinner(GetTeam(ChatColor.AQUA), true); + } + } + + @EventHandler + public void bombUpdate(UpdateEvent event) + { + if (!IsLive()) + return; + + if (event.getType() != UpdateType.TICK) + return; + + if (_gunModule.getBomb() == null) + return; + + if (!_gunModule.getBomb().update()) + return; + + /* + Set blocks = UtilBlock.getInRadius(_bomb.Block.getLocation(), 10d).keySet(); + + Iterator blockIterator = blocks.iterator(); + while (blockIterator.hasNext()) + { + Block block = blockIterator.next(); + + if (block.getY() < 2) + blockIterator.remove(); + } + + Manager.GetExplosion().BlockExplosion(blocks, _bomb.Block.getLocation(), false); + */ + + + HashMap players = UtilPlayer.getInRadius(_gunModule.getBomb().Block.getLocation(), 48); + for (Player player : players.keySet()) + { + if (!IsAlive(player)) + continue; + + // Damage Event + Manager.GetDamage().NewDamageEvent(player, null, null, + DamageCause.CUSTOM, 1 + (players.get(player) * 40), + true, true, false, "Bomb", "C4 Explosion"); + } + + + _gunModule.setBomb(null); + + _winText = _bombPlantedBy.getName() + " destroyed the bomb site!"; + + setWinner(GetTeam(ChatColor.RED), false); + } + + public int getScore(GameTeam team) + { + if (!_score.containsKey(team)) + _score.put(team, 0); + + return _score.get(team); + } + + public void addScore(GameTeam team) + { + _score.put(team, getScore(team) + 1); + } + + @EventHandler + public void roundTimerUpdate(UpdateEvent event) + { + if (!IsLive()) + return; + + if (event.getType() != UpdateType.TICK) + return; + + if (_gunModule.getBomb() != null) + return; + + if (UtilTime.elapsed(GetStateTime(), _roundTime)) + { + _winText = "Bomb sites were successfully defended!"; + drawScoreboard(); + setWinner(GetTeam(ChatColor.AQUA), false); + } + } + + @EventHandler + public void roundPlayerCheck(UpdateEvent event) + { + if (!IsLive()) + return; + + if (event.getType() != UpdateType.TICK) + return; + + ArrayList teamsAlive = new ArrayList(); + + for (GameTeam team : this.GetTeamList()) + if (team.GetPlayers(true).size() > 0) + teamsAlive.add(team); + + if (teamsAlive.size() == 1) + { + //Bomb Planted - CT cannot win without defusing + if (_gunModule.getBomb() != null) + { + if (teamsAlive.size() > 0) + { + if (teamsAlive.get(0).GetColor() == ChatColor.AQUA) + { + return; + } + } + } + + setWinner(teamsAlive.get(0), false); + } + else if (teamsAlive.size() == 0) + { + if (_gunModule.getBomb() == null) + { + _winText = "Bomb sites were successfully defended!"; + setWinner(GetTeam(ChatColor.AQUA), false); + } + else + { + _winText = "Bomb site will be destroyed!"; + setWinner(GetTeam(ChatColor.RED), false); + } + } + } + + public void setWinner(final GameTeam winner, boolean defuse) + { + if (_roundOver) + return; + + Bukkit.getPluginManager().callEvent(new RoundOverEvent(this)); + + _roundOver = true; + + String winnerLine = C.Bold + "The round was a draw!"; + ChatColor color = ChatColor.GRAY; + if (winner != null) + { + if(winner.GetName().contains("Bombers")) { + winnerLine= winner.GetColor() + C.Bold + winner.GetName() + " have won the round!"; + } else { + winnerLine= winner.GetColor() + C.Bold + winner.GetName() + " has won the round!"; + } + addScore(winner); + drawScoreboard(); + color = winner.GetColor(); + + + } + + //Sound + if (winner != null) + { + UtilServer.getServer().getScheduler().scheduleSyncDelayedTask(Manager.getPlugin(), new Runnable() + { + public void run() + { + if (winner.GetColor() == ChatColor.RED) + _gunModule.playSound(Radio.T_WIN, null, null); + else + _gunModule.playSound(Radio.CT_WIN, null, null); + } + }, defuse ? 60 : 0); + } + + //Record Streak for Money + if (winner.GetColor() == ChatColor.RED) + { + _winStreak++; + + if (_ctWonLast) + { + _ctWonLast = false; + _winStreak = 0; + } + } + else + { + _winStreak++; + + if (!_ctWonLast) + { + _ctWonLast = true; + _winStreak = 0; + } + } + + //Announce + Announce("", false); + Announce(color + "===================================", false); + Announce("", false); + Announce(winnerLine, false); + if (_winText != null) + Announce(_winText, false); + Announce("", false); + Announce(color + "===================================", false); + + for (Player player : UtilServer.getPlayers()) + { + player.playSound(player.getLocation(), Sound.LEVEL_UP, 1f, 1f); + _gunModule.removeScope(player); + + Recharge.Instance.Reset(player, "reload"); + } + + UtilTextMiddle.display(null, winnerLine, 20, 120, 20); + + //Check for total game win + EndCheck(); + + //Next Round (if not over) + if (IsLive()) + { + UtilServer.getServer().getScheduler().scheduleSyncDelayedTask(Manager.getPlugin(), new Runnable() + { + public void run() + { + restartRound(); + } + }, 100); + } + } + + public void restartRound() + { + giveMoney(); + + //Clean + resetGame(); + + //Teleport to Spawn + for (GameTeam team : GetTeamList()) + team.SpawnTeleport(false); + + //Revive Dead Players + for (Player player : GetPlayers(false)) + if (!IsAlive(player)) + { + SetPlayerState(player, PlayerState.IN); + + GameTeam team = GetTeam(player); + + //Teleport + team.SpawnTeleport(player); + + Manager.Clear(player); + UtilInv.Clear(player); + + ValidateKit(player, GetTeam(player)); + + if (GetKit(player) != null) + GetKit(player).ApplyKit(player); + } + + //Remove Scope + for (Player player : GetPlayers(false)) + _gunModule.removeScope(player); + + //Get Hit By Bullets + for (Player player : GetPlayers(false)) + ((CraftPlayer) player).getHandle().spectating = false; + + //Prepare Sound + for (Player player : GetPlayers(false)) + { + player.playSound(player.getLocation(), Sound.HORSE_ARMOR, 1f, 2f); + Manager.GetCondition().Factory().Blind("Respawn", player, null, 2, 0, false, false, false); + UtilPlayer.message(player, F.main("Game", "You have " + F.elem(C.cGreen + "$" + _shopManager.getMoney(player)) + ". Open your Inventory to spend it.")); + + UtilTextMiddle.display(C.cGreen + "$" + _shopManager.getMoney(player), "Open your Inventory to buy new equipment", 10, 120, 10, player); + } + + //Update Scoreboard Teams + for (GameTeam team : GetTeamList()) + for (Player teamMember : team.GetPlayers(true)) + GetScoreboard().SetPlayerTeam(teamMember, team.GetName().toUpperCase()); + + //Alternate Bullets + if (_gunModule.BulletAlternate) + _gunModule.BulletInstant = (_gunModule.BulletInstant + 1)%3; + + //Debug Details + if (_gunModule.Debug) + { + Announce(C.cDPurple + C.Bold + "ROUND SETTINGS:"); + + if (_gunModule.CustomHitbox) + Announce(C.cPurple + C.Bold + "Hitbox: " + ChatColor.RESET + "Accurate with Headshots"); + else + Announce(C.cPurple + C.Bold + "Hitbox: " + ChatColor.RESET + "Default with No Headshot"); + + if (_gunModule.BulletInstant == 0) + Announce(C.cPurple + C.Bold + "Bullets: " + ChatColor.RESET + "Slow and Visible"); + else if (_gunModule.BulletInstant == 1) + Announce(C.cPurple + C.Bold + "Bullets: " + ChatColor.RESET + "Instant and Invisible"); + else + Announce(C.cPurple + C.Bold + "Bullets: " + ChatColor.RESET + "Slow and Visible with Instant Sniper"); + } + } + + public void giveMoney() + { + if (_ctWonLast) + { + int ctMoney = 3250; + int tMoney = 1400 + (Math.min(4,_winStreak) * 500); + + if (_bombPlanted) + { + ctMoney += 250; + tMoney += 800; + } + + //Award + for (Player player : GetTeam(ChatColor.RED).GetPlayers(false)) + _shopManager.addMoney(player, tMoney, "losing the round"); + + for (Player player : GetTeam(ChatColor.AQUA).GetPlayers(false)) + _shopManager.addMoney(player, ctMoney, "winning the round"); + } + else + { + int tMoney = 3250; + int ctMoney = 1400 + (Math.min(4,_winStreak) * 500); + + //Award + for (Player player : GetTeam(ChatColor.RED).GetPlayers(false)) + _shopManager.addMoney(player, tMoney, "winning the round"); + + for (Player player : GetTeam(ChatColor.AQUA).GetPlayers(false)) + _shopManager.addMoney(player, ctMoney, "losing the round"); + } + } + + public void resetGame() + { + //General + _roundOver = false; + SetStateTime(System.currentTimeMillis()); + _gunModule.setFreezeTime(10); + _winText = null; + + //Bomb + if (_gunModule.getBomb() != null) + _gunModule.getBomb().clean(); + + if (_gunModule.getBombItem() != null) + _gunModule.getBombItem().remove(); + + if (_gunModule.getBombHolder() != null) + { + _gunModule.getBombHolder().getInventory().remove(Material.GOLD_SWORD); + _gunModule.setBombHolder(null); + } + + _gunModule.setBomb(null); + _gunModule.setBombItem(null); + + _bombPlanter = null; + _bombDefuser = null; + _bombPlantedBy = null; + _bombPlanted = false; + + _gunModule.reset(); + + //Health + for (Player player : UtilServer.getPlayers()) + player.setHealth(20); + + //Reset Shop + for (Player player : UtilServer.getPlayers()) + _shopManager.leaveShop(player, false, false); + } + + @EventHandler(priority = EventPriority.HIGHEST) + public void specToTeam(PlayerJoinEvent event) + { + if (GetState() == GameState.Recruit || GetState() == GameState.Loading) + return; + + //Target Team + GameTeam targetTeam = null; + if (GetTeamList().get(0).GetPlayers(false).size() < GetTeamList().get(1).GetPlayers(false).size()) + targetTeam = GetTeamList().get(0); + else if (GetTeamList().get(0).GetPlayers(false).size() > GetTeamList().get(1).GetPlayers(false).size()) + targetTeam = GetTeamList().get(1); + else if (Math.random() > 0.5) + targetTeam = GetTeamList().get(1); + else + targetTeam = GetTeamList().get(0); + + SetPlayerTeam(event.getPlayer(), targetTeam, false); + + ((CraftPlayer) event.getPlayer()).getHandle().spectating = true; + } + + @EventHandler(priority = EventPriority.HIGHEST) + public void quitLeaveTeam(PlayerQuitEvent event) + { + GameTeam team = GetTeam(event.getPlayer()); + + if (team != null) + { + team.RemovePlayer(event.getPlayer()); + } + } + + @EventHandler + public void restartFreezeCountdown(UpdateEvent event) + { + if (event.getType() != UpdateType.SEC) + return; + + if (_gunModule.getFreezeTime() <= 0) + return; + + _gunModule.setFreezeTime(_gunModule.getFreezeTime() - 1); + + for (Player player : UtilServer.getPlayers()) + { + if (_gunModule.getFreezeTime() > 0) + player.playSound(player.getLocation(), Sound.NOTE_STICKS, 1f, 1f); + else + player.playSound(player.getLocation(), Sound.NOTE_SNARE_DRUM, 1f, 1f); + } + + if (_gunModule.getFreezeTime() == 0) + { + //Give Bomb + Player bombPlayer = UtilAlg.Random(GetTeam(ChatColor.RED).GetPlayers(true)); + _gunModule.giveBombToPlayer(bombPlayer); + + //Sound + _gunModule.playSound(Radio.CT_START, null, GetTeam(ChatColor.AQUA)); + _gunModule.playSound(Radio.T_START, null, GetTeam(ChatColor.RED)); + } + } + + @Override + @EventHandler + public void ScoreboardUpdate(UpdateEvent event) + { + if (event != null && event.getType() != UpdateType.FAST) + return; + + drawScoreboard(); + } + + public void drawScoreboard() + { + Scoreboard.Reset(); + + for (GameTeam team : this.GetTeamList()) + { + + Scoreboard.WriteBlank(); + + Scoreboard.Write(getScore(team) + " " + team.GetColor() + C.Bold + team.GetName()); + //Scoreboard.Write(team.GetColor() + "" + getScore(team) + "" + " Wins" + team.GetColor()); + Scoreboard.Write(team.GetPlayers(true).size() + "" + " Alive" + team.GetColor()); + + } + + Scoreboard.WriteBlank(); + Scoreboard.Write(C.cGold + C.Bold + "Playing To"); + Scoreboard.Write(_roundsToWin + " Wins"); + + if (InProgress()) + { + Scoreboard.WriteBlank(); + + if (_gunModule.getBomb() == null) + { + Scoreboard.Write(C.cGold + C.Bold + "Time Left"); + Scoreboard.Write(UtilTime.MakeStr(_roundTime - (System.currentTimeMillis() - this.GetStateTime()), 1)); + } + else + { + if (_bombScoreboardFlash) + Scoreboard.Write(C.cRed + C.Bold + "Bomb Active"); + else + Scoreboard.Write(C.cWhite + C.Bold + "Bomb Active"); + + _bombScoreboardFlash = !_bombScoreboardFlash; + } + } + + + Scoreboard.Draw(); + } + + @Override + public void EndCheck() + { + endCheckScore(); + endCheckPlayer(); + } + + public void endCheckScore() + { + if (!IsLive()) + return; + + for (GameTeam team : GetTeamList()) + { + if (getScore(team) >= _roundsToWin) + { + //Announce + AnnounceEnd(team); + + for (GameTeam other : GetTeamList()) + { + if (WinnerTeam != null && other.equals(WinnerTeam)) + { + for (Player player : other.GetPlayers(false)) + AddGems(player, 10, "Winning Team", false, false); + } + + for (Player player : other.GetPlayers(false)) + if (player.isOnline()) + AddGems(player, 10, "Participation", false, false); + } + + //End + SetState(GameState.End); + } + } + } + + public void endCheckPlayer() + { + if (!IsLive()) + return; + + ArrayList teamsAlive = new ArrayList(); + + for (GameTeam team : this.GetTeamList()) + if (team.GetPlayers(false).size() > 0) + teamsAlive.add(team); + + if (teamsAlive.size() <= 1) + { + //Announce + if (teamsAlive.size() > 0) + AnnounceEnd(teamsAlive.get(0)); + + for (GameTeam team : GetTeamList()) + { + if (WinnerTeam != null && team.equals(WinnerTeam)) + { + for (Player player : team.GetPlayers(false)) + AddGems(player, 10, "Winning Team", false, false); + } + + for (Player player : team.GetPlayers(false)) + if (player.isOnline()) + AddGems(player, 10, "Participation", false, false); + } + + //End + SetState(GameState.End); + } + } + + @EventHandler + public void healthUpdate(UpdateEvent event) + { + if (!IsLive()) + return; + + if (event.getType() != UpdateType.SEC) + return; + + for (Player player : UtilServer.getPlayers()) + _scoreObj.getScore(player.getName()).setScore((int)(player.getHealth() * 5)); + } + + @EventHandler(priority = EventPriority.MONITOR) + public void damageHealth(CustomDamageEvent event) + { + Player player = event.GetDamagerPlayer(true); + if (player == null) + return; + + _scoreObj.getScore(player.getName()).setScore((int)(player.getHealth() * 5)); + } + + @EventHandler + public void debug(PlayerCommandPreprocessEvent event) + { + if (!event.getPlayer().isOp()) + return; + + if (event.getMessage().contains("money")) + { + _shopManager.addMoney(event.getPlayer(), 16000, "Debug"); + event.setCancelled(true); + } + } + + //Used for fire grenade spread + public int getRound() + { + int rounds = 0; + + for (int i : _score.values()) + rounds += i; + + return rounds; + } + + @Override + public Location GetSpectatorLocation() + { + if (SpectatorSpawn != null) + return SpectatorSpawn; + + Vector vec = new Vector(0, 0, 0); + double count = 0; + + for (GameTeam team : this.GetTeamList()) + { + for (Location spawn : team.GetSpawns()) + { + count++; + vec.add(spawn.toVector()); + } + } + + SpectatorSpawn = new Location(this.WorldData.World, 0, 0, 0); + + vec.multiply(1d / count); + + SpectatorSpawn.setX(vec.getX()); + SpectatorSpawn.setY(vec.getY() + 7); //ADD 7 + SpectatorSpawn.setZ(vec.getZ()); + + // Move Up - Out Of Blocks + while (!UtilBlock.airFoliage(SpectatorSpawn.getBlock()) + || !UtilBlock.airFoliage(SpectatorSpawn.getBlock().getRelative(BlockFace.UP))) + { + SpectatorSpawn.add(0, 1, 0); + } + + int Up = 0; + + // Move Up - Through Air + for (int i = 0; i < 15; i++) + { + if (UtilBlock.airFoliage(SpectatorSpawn.getBlock().getRelative(BlockFace.UP))) + { + SpectatorSpawn.add(0, 1, 0); + Up++; + } + else + { + break; + } + } + + // Move Down - Out Of Blocks + while (Up > 0 && !UtilBlock.airFoliage(SpectatorSpawn.getBlock()) + || !UtilBlock.airFoliage(SpectatorSpawn.getBlock().getRelative(BlockFace.UP))) + { + SpectatorSpawn.subtract(0, 1, 0); + Up--; + } + + SpectatorSpawn = SpectatorSpawn.getBlock().getLocation().add(0.5, 0.1, 0.5); + + while (SpectatorSpawn.getBlock().getTypeId() != 0 || SpectatorSpawn.getBlock().getRelative(BlockFace.UP).getTypeId() != 0) + SpectatorSpawn.add(0, 1, 0); + + return SpectatorSpawn; + } + + public GunModule getGunModule() + { + return _gunModule; + } +} diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/PlayerHeadshotEvent.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/PlayerHeadshotEvent.java new file mode 100644 index 000000000..d84734bde --- /dev/null +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/PlayerHeadshotEvent.java @@ -0,0 +1,35 @@ +package nautilus.game.arcade.game.games.minestrike; + +import org.bukkit.entity.Player; +import org.bukkit.event.HandlerList; +import org.bukkit.event.player.PlayerEvent; + +public class PlayerHeadshotEvent extends PlayerEvent +{ + private static final HandlerList handlers = new HandlerList(); + + public static HandlerList getHandlerList() + { + return handlers; + } + + @Override + public HandlerList getHandlers() + { + return getHandlerList(); + } + + private final Player _shooter; + + public PlayerHeadshotEvent(Player who, Player shooter) + { + super(who); + + _shooter = shooter; + } + + public Player getShooter() + { + return _shooter; + } +} \ No newline at end of file diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/ShopManager.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/ShopManager.java index 3be74a24a..0c2edb818 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/ShopManager.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/ShopManager.java @@ -35,15 +35,15 @@ import org.bukkit.event.inventory.InventoryClickEvent; public class ShopManager { - private MineStrike Host; + private Minestrike Host; private HashMap> _shop = new HashMap>(); private HashMap _money = new HashMap(); private HashSet _inShop = new HashSet(); - public ShopManager(MineStrike host) + public ShopManager(Minestrike minestrike) { - Host = host; + Host = minestrike; } public void enterShop(Player player) @@ -60,27 +60,27 @@ public class ShopManager //Pistols slot = 9; - addItem(team.GetColor() == ChatColor.RED ? new Gun(GunStats.GLOCK_18) : new Gun(GunStats.P2000), player, slot++); - addItem(new Gun(GunStats.P250), player, slot++); - addItem(new Gun(GunStats.CZ75), player, slot++); - addItem(new Gun(GunStats.DEAGLE), player, slot++); + addItem(team.GetColor() == ChatColor.RED ? new Gun(GunStats.GLOCK_18, Host.getGunModule()) : new Gun(GunStats.P2000, Host.getGunModule()), player, slot++); + addItem(new Gun(GunStats.P250, Host.getGunModule()), player, slot++); + addItem(new Gun(GunStats.CZ75, Host.getGunModule()), player, slot++); + addItem(new Gun(GunStats.DEAGLE, Host.getGunModule()), player, slot++); //Shotgun slot = 18; - addItem(new Shotgun(GunStats.NOVA), player, slot++); - addItem(new Shotgun(GunStats.XM1014), player, slot++); + addItem(new Shotgun(GunStats.NOVA, Host.getGunModule()), player, slot++); + addItem(new Shotgun(GunStats.XM1014, Host.getGunModule()), player, slot++); //SMG - addItem(new Gun(GunStats.PPBIZON), player, slot++); - addItem(new Gun(GunStats.P90), player, slot++); + addItem(new Gun(GunStats.PPBIZON, Host.getGunModule()), player, slot++); + addItem(new Gun(GunStats.P90, Host.getGunModule()), player, slot++); //Rifles slot = 27; - addItem(team.GetColor() == ChatColor.RED ? new Gun(GunStats.GALIL) : new Gun(GunStats.FAMAS), player, slot++); - addItem(team.GetColor() == ChatColor.RED ? new Gun(GunStats.AK47) : new Gun(GunStats.M4A4), player, slot++); - addItem(team.GetColor() == ChatColor.RED ? new Gun(GunStats.SG553) : new Gun(GunStats.AUG), player, slot++); - addItem(new Gun(GunStats.SSG08), player, slot++); - addItem(new Gun(GunStats.AWP), player, slot++); + addItem(team.GetColor() == ChatColor.RED ? new Gun(GunStats.GALIL, Host.getGunModule()) : new Gun(GunStats.FAMAS, Host.getGunModule()), player, slot++); + addItem(team.GetColor() == ChatColor.RED ? new Gun(GunStats.AK47, Host.getGunModule()) : new Gun(GunStats.M4A4, Host.getGunModule()), player, slot++); + addItem(team.GetColor() == ChatColor.RED ? new Gun(GunStats.SG553, Host.getGunModule()) : new Gun(GunStats.AUG, Host.getGunModule()), player, slot++); + addItem(new Gun(GunStats.SSG08, Host.getGunModule()), player, slot++); + addItem(new Gun(GunStats.AWP, Host.getGunModule()), player, slot++); //Grenades addItem(new FlashBang(), player, 14); @@ -217,11 +217,11 @@ public class ShopManager if (item instanceof Gun) { Gun gun = (Gun)item; - Host.dropSlotItem(player, gun.getSlot()); + Host.getGunModule().dropSlotItem(player, gun.getSlot()); gun.giveToPlayer(player, true); - gun.updateWeaponName(player, Host); + gun.updateWeaponName(player, Host.getGunModule()); gun.updateSkin(player, Host.getArcadeManager().getCosmeticManager().getGadgetManager()); - Host.registerGun(gun, player); + Host.getGunModule().registerGun(gun, player); } //Grenade @@ -235,7 +235,7 @@ public class ShopManager return; } - Host.registerGrenade(grenade, player); + Host.getGunModule().registerGrenade(grenade, player); } //Use 250 instead of 255, to show that its kevlar/helmet diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/data/Bullet.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/data/Bullet.java index 6c22a1042..3b3c275ac 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/data/Bullet.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/data/Bullet.java @@ -2,7 +2,7 @@ package nautilus.game.arcade.game.games.minestrike.data; import java.util.HashSet; -import nautilus.game.arcade.game.games.minestrike.MineStrike; +import nautilus.game.arcade.game.games.minestrike.GunModule; import nautilus.game.arcade.game.games.minestrike.items.guns.Gun; import org.bukkit.Location; @@ -25,7 +25,7 @@ public class Bullet public HashSet WhizzSound = new HashSet(); - public Bullet(Entity bullet, Gun gun, Player shooter, MineStrike game) + public Bullet(Entity bullet, Gun gun, Player shooter, GunModule game) { Bullet = bullet; Gun = gun; diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/items/StrikeItem.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/items/StrikeItem.java index 7d93deed5..ad4898dd6 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/items/StrikeItem.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/items/StrikeItem.java @@ -19,7 +19,7 @@ import mineplex.core.common.util.UtilGear; import mineplex.core.common.util.UtilInv; import mineplex.core.common.util.UtilPlayer; import mineplex.core.itemstack.ItemStackFactory; -import nautilus.game.arcade.game.games.minestrike.MineStrike; +import nautilus.game.arcade.game.games.minestrike.GunModule; import nautilus.game.arcade.game.games.minestrike.items.grenades.Grenade; import nautilus.game.arcade.game.games.minestrike.items.guns.Gun; @@ -104,7 +104,7 @@ public abstract class StrikeItem _ownerName = ownerName; } - public void drop(MineStrike game, Player player, boolean natural, boolean onlyDeregisterAndRemove) + public void drop(GunModule game, Player player, boolean natural, boolean onlyDeregisterAndRemove) { _stack.setAmount(1); @@ -160,6 +160,20 @@ public abstract class StrikeItem public boolean isStack(ItemStack stack) { + if (stack.hasItemMeta()) + { + if (stack.getItemMeta().hasLore()) + { + if (getStack().hasItemMeta()) + { + if (getStack().getItemMeta().hasLore()) + { + if (UtilGear.isMat(stack, _skinMaterial)) + return stack.getItemMeta().getLore().get(0).equalsIgnoreCase(getStack().getItemMeta().getLore().get(0)); + } + } + } + } return UtilGear.isMat(stack, _skinMaterial); } @@ -184,7 +198,7 @@ public abstract class StrikeItem _stack.setItemMeta(meta); } - public abstract boolean pickup(MineStrike game, Player player); + public abstract boolean pickup(GunModule game, Player player); public ItemStack getShopItem(int money, boolean alreadyHas) { diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/items/equipment/DefusalKit.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/items/equipment/DefusalKit.java index c23f851e1..b93042442 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/items/equipment/DefusalKit.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/items/equipment/DefusalKit.java @@ -8,7 +8,7 @@ import org.bukkit.entity.Player; import mineplex.core.common.util.C; import mineplex.core.common.util.F; import mineplex.core.common.util.UtilPlayer; -import nautilus.game.arcade.game.games.minestrike.MineStrike; +import nautilus.game.arcade.game.games.minestrike.GunModule; import nautilus.game.arcade.game.games.minestrike.items.StrikeItem; import nautilus.game.arcade.game.games.minestrike.items.StrikeItemType; @@ -24,7 +24,7 @@ public class DefusalKit extends StrikeItem } @Override - public boolean pickup(MineStrike game, Player player) + public boolean pickup(GunModule game, Player player) { return false; } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/items/equipment/armor/Armor.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/items/equipment/armor/Armor.java index 69f0de11a..d8a971131 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/items/equipment/armor/Armor.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/items/equipment/armor/Armor.java @@ -11,7 +11,7 @@ import org.bukkit.inventory.meta.LeatherArmorMeta; import mineplex.core.common.util.C; import mineplex.core.common.util.F; import mineplex.core.common.util.UtilPlayer; -import nautilus.game.arcade.game.games.minestrike.MineStrike; +import nautilus.game.arcade.game.games.minestrike.GunModule; import nautilus.game.arcade.game.games.minestrike.items.StrikeItem; import nautilus.game.arcade.game.games.minestrike.items.StrikeItemType; @@ -23,7 +23,7 @@ public class Armor extends StrikeItem } @Override - public boolean pickup(MineStrike game, Player player) + public boolean pickup(GunModule game, Player player) { return false; } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/items/grenades/FireGrenadeBase.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/items/grenades/FireGrenadeBase.java index 493d836ba..2910721ff 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/items/grenades/FireGrenadeBase.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/items/grenades/FireGrenadeBase.java @@ -2,16 +2,6 @@ package nautilus.game.arcade.game.games.minestrike.items.grenades; import java.util.HashMap; -import mineplex.core.common.util.UtilBlock; -import mineplex.core.common.util.UtilParticle; -import mineplex.core.common.util.UtilServer; -import mineplex.core.common.util.UtilParticle.ParticleType; -import mineplex.core.common.util.UtilParticle.ViewDist; -import nautilus.game.arcade.game.GameTeam; -import nautilus.game.arcade.game.games.minestrike.MineStrike; -import nautilus.game.arcade.game.games.minestrike.Radio; - -import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Location; import org.bukkit.Material; @@ -21,6 +11,15 @@ import org.bukkit.block.BlockFace; import org.bukkit.entity.Entity; import org.bukkit.entity.Player; +import mineplex.core.common.util.UtilBlock; +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.UtilServer; +import nautilus.game.arcade.game.GameTeam; +import nautilus.game.arcade.game.games.minestrike.GunModule; +import nautilus.game.arcade.game.games.minestrike.Radio; + public abstract class FireGrenadeBase extends Grenade { private long _baseTime; @@ -37,7 +36,7 @@ public abstract class FireGrenadeBase extends Grenade } @Override - public boolean updateCustom(MineStrike game, Entity ent) + public boolean updateCustom(GunModule game, Entity ent) { // Fixed grenade effect not being activated when thrown in the ground. // Looks like ent.isOnGround() worked, while we previously used UtilEnt.isGrounded(ent). @@ -52,7 +51,7 @@ public abstract class FireGrenadeBase extends Grenade return false; } - private void createFire(final MineStrike game, final Location loc) + private void createFire(final GunModule game, final Location loc) { //Sound loc.getWorld().playSound(loc, Sound.IRONGOLEM_THROW, 1f, 1f); @@ -114,9 +113,9 @@ public abstract class FireGrenadeBase extends Grenade } @Override - public void playSound(MineStrike game, Player player) + public void playSound(GunModule game, Player player) { - GameTeam team = game.GetTeam(player); + GameTeam team = game.getHost().GetTeam(player); if (team == null) return; diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/items/grenades/FlashBang.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/items/grenades/FlashBang.java index 21c4d3dab..f098df120 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/items/grenades/FlashBang.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/items/grenades/FlashBang.java @@ -9,7 +9,7 @@ import mineplex.core.common.util.UtilMath; import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilTime; import nautilus.game.arcade.game.GameTeam; -import nautilus.game.arcade.game.games.minestrike.MineStrike; +import nautilus.game.arcade.game.games.minestrike.GunModule; import nautilus.game.arcade.game.games.minestrike.Radio; import org.bukkit.ChatColor; @@ -33,7 +33,7 @@ public class FlashBang extends Grenade } @Override - public boolean updateCustom(MineStrike game, Entity ent) + public boolean updateCustom(GunModule game, Entity ent) { if (UtilTime.elapsed(_throwTime, 2000)) { @@ -43,7 +43,7 @@ public class FlashBang extends Grenade HashMap players = UtilPlayer.getInRadius(ent.getLocation(), 48); for (Player player : players.keySet()) { - if (!game.IsAlive(player)) + if (!game.getHost().IsAlive(player)) continue; //Line of Sight @@ -83,9 +83,9 @@ public class FlashBang extends Grenade } @Override - public void playSound(MineStrike game, Player player) + public void playSound(GunModule game, Player player) { - GameTeam team = game.GetTeam(player); + GameTeam team = game.getHost().GetTeam(player); if (team == null) return; diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/items/grenades/Grenade.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/items/grenades/Grenade.java index 02c8bcb4d..3533a8973 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/items/grenades/Grenade.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/items/grenades/Grenade.java @@ -11,6 +11,7 @@ import org.bukkit.entity.Entity; import org.bukkit.entity.Player; import org.bukkit.event.Event; import org.bukkit.event.HandlerList; +import org.bukkit.inventory.ItemStack; import org.bukkit.util.Vector; import mineplex.core.common.util.C; @@ -20,7 +21,7 @@ import mineplex.core.common.util.UtilEnt; import mineplex.core.common.util.UtilInv; import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilTime; -import nautilus.game.arcade.game.games.minestrike.MineStrike; +import nautilus.game.arcade.game.games.minestrike.GunModule; import nautilus.game.arcade.game.games.minestrike.items.StrikeItem; import nautilus.game.arcade.game.games.minestrike.items.StrikeItemType; @@ -132,9 +133,20 @@ public abstract class Grenade extends StrikeItem return true; } - public void throwGrenade(Player player, boolean wasLeftClick, MineStrike game) - { - player.setItemInHand(null); + public void throwGrenade(Player player, boolean wasLeftClick, GunModule game) + { + + if (player.getItemInHand().getAmount() < 2) + { + player.setItemInHand(null); + } + else + { + int amount = player.getItemInHand().getAmount(); + ItemStack stack = getStack(); + stack.setAmount(amount - 1); + player.setItemInHand(stack); + } _thrower = player; @@ -151,9 +163,13 @@ public abstract class Grenade extends StrikeItem _lastLoc = ent.getLocation(); UtilPlayer.message(player, F.main("Game", "You threw " + getName() + ".")); - + game.registerThrownGrenade(ent, this); - game.deregisterGrenade(this); + + if (player.getItemInHand().getAmount() < 2) + { + game.deregisterGrenade(this); + } //Sound playSound(game, player); @@ -161,7 +177,7 @@ public abstract class Grenade extends StrikeItem _throwTime = System.currentTimeMillis(); } - public boolean update(MineStrike game, Entity ent) + public boolean update(GunModule game, Entity ent) { if (UtilTime.elapsed(_throwTime, 20000)) return true; @@ -233,10 +249,10 @@ public abstract class Grenade extends StrikeItem _lastLoc = ent.getLocation(); } - public abstract boolean updateCustom(MineStrike game, Entity ent); + public abstract boolean updateCustom(GunModule game, Entity ent); @Override - public boolean pickup(MineStrike game, Player player) + public boolean pickup(GunModule game, Player player) { if (giveToPlayer(player, false)) { @@ -255,5 +271,5 @@ public abstract class Grenade extends StrikeItem return C.cDGreen + C.Bold + "Grenade" + ChatColor.RESET; } - public abstract void playSound(MineStrike game, Player player); + public abstract void playSound(GunModule game, Player player); } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/items/grenades/HighExplosive.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/items/grenades/HighExplosive.java index 02c7b7300..12a7dcd36 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/items/grenades/HighExplosive.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/items/grenades/HighExplosive.java @@ -11,7 +11,7 @@ import mineplex.core.common.util.UtilParticle.ParticleType; import mineplex.core.common.util.UtilParticle.ViewDist; import mineplex.core.common.util.UtilPlayer; import nautilus.game.arcade.game.GameTeam; -import nautilus.game.arcade.game.games.minestrike.MineStrike; +import nautilus.game.arcade.game.games.minestrike.GunModule; import nautilus.game.arcade.game.games.minestrike.Radio; import org.bukkit.Bukkit; @@ -34,7 +34,7 @@ public class HighExplosive extends Grenade } @Override - public boolean updateCustom(MineStrike game, Entity ent) + public boolean updateCustom(GunModule game, Entity ent) { if (UtilTime.elapsed(_throwTime, 2000)) { @@ -48,7 +48,7 @@ public class HighExplosive extends Grenade List damagedPlayers = new ArrayList<>(); for (Player player : players.keySet()) { - if (!game.IsAlive(player)) + if (!game.getHost().IsAlive(player)) continue; // Damage Event @@ -68,9 +68,9 @@ public class HighExplosive extends Grenade } @Override - public void playSound(MineStrike game, Player player) + public void playSound(GunModule game, Player player) { - GameTeam team = game.GetTeam(player); + GameTeam team = game.getHost().GetTeam(player); if (team == null) return; diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/items/grenades/Smoke.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/items/grenades/Smoke.java index dbbd4dddb..b221404ae 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/items/grenades/Smoke.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/items/grenades/Smoke.java @@ -10,7 +10,7 @@ import mineplex.core.common.util.UtilTime; import mineplex.core.common.util.UtilParticle.ParticleType; import mineplex.core.common.util.UtilParticle.ViewDist; import nautilus.game.arcade.game.GameTeam; -import nautilus.game.arcade.game.games.minestrike.MineStrike; +import nautilus.game.arcade.game.games.minestrike.GunModule; import nautilus.game.arcade.game.games.minestrike.Radio; import org.bukkit.ChatColor; @@ -36,7 +36,7 @@ public class Smoke extends Grenade } @Override - public boolean updateCustom(final MineStrike game, Entity ent) + public boolean updateCustom(final GunModule game, Entity ent) { if (UtilTime.elapsed(_throwTime, 2000) && (UtilEnt.isGrounded(ent) || !ent.isValid())) { @@ -95,9 +95,9 @@ public class Smoke extends Grenade } @Override - public void playSound(MineStrike game, Player player) + public void playSound(GunModule game, Player player) { - GameTeam team = game.GetTeam(player); + GameTeam team = game.getHost().GetTeam(player); if (team == null) return; diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/items/guns/Gun.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/items/guns/Gun.java index 3a9cfc761..377253133 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/items/guns/Gun.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/items/guns/Gun.java @@ -32,10 +32,11 @@ import mineplex.core.common.util.UtilTime; import mineplex.core.gadget.GadgetManager; import mineplex.core.gadget.gadgets.gamemodifiers.GameModifierType; import mineplex.core.gadget.gadgets.gamemodifiers.minestrike.GameModifierMineStrikeSkin; +import mineplex.core.gadget.gadgets.gamemodifiers.minestrike.MineStrikeSkin; import mineplex.core.recharge.Recharge; import mineplex.core.recharge.RechargedEvent; import mineplex.core.stats.PlayerStats; -import nautilus.game.arcade.game.games.minestrike.MineStrike; +import nautilus.game.arcade.game.games.minestrike.GunModule; import nautilus.game.arcade.game.games.minestrike.data.Bullet; import nautilus.game.arcade.game.games.minestrike.items.StrikeItem; import nautilus.game.arcade.game.games.minestrike.items.StrikeItemType; @@ -59,11 +60,15 @@ public class Gun extends StrikeItem protected int _kills = -1; protected String _activeSkinName = "Default"; + + protected GunModule _module; - public Gun(GunStats gunStats) + public Gun(GunStats gunStats, GunModule module) { super(gunStats.getItemType(), gunStats.getName(), gunStats.getDesc(), gunStats.getCost(), gunStats.getGemCost(), gunStats.getSkin()); - + + _module = module; + _gunStats = gunStats; if (gunStats.getItemType() == StrikeItemType.PRIMARY_WEAPON) @@ -79,7 +84,7 @@ public class Gun extends StrikeItem updateWeaponName(null, null); } - public void shoot(final Player player, final MineStrike game) + public void shoot(final Player player, final GunModule game) { if (_reloading) return; @@ -94,7 +99,7 @@ public class Gun extends StrikeItem { public void run() { - if (game.IsAlive(player)) + if (game.getHost().IsAlive(player)) shootOnce(player, game); } }, 2); @@ -109,7 +114,7 @@ public class Gun extends StrikeItem { public void run() { - if (game.IsAlive(player)) + if (game.getHost().IsAlive(player)) shootOnce(player, game); } }, i); @@ -117,7 +122,7 @@ public class Gun extends StrikeItem } } - public void shootOnce(Player player, MineStrike game) + public void shootOnce(Player player, GunModule game) { if (_reloading) return; @@ -167,7 +172,7 @@ public class Gun extends StrikeItem reload(player); } - public Bullet fireBullet(Player player, MineStrike game) + public Bullet fireBullet(Player player, GunModule game) { //Instant? boolean instant = game.getBulletType() == 1 || (game.getBulletType() == 2 && _gunStats.getGunType() == GunType.SNIPER); @@ -186,7 +191,7 @@ public class Gun extends StrikeItem Vector cof = new Vector(Math.random() - 0.5, (Math.random() - 0.2) * (5d/8d), Math.random() - 0.5); cof.normalize(); cof.multiply(cone); - cof.multiply(MineStrike.CONE); + cof.multiply(GunModule.CONE); cof.add(player.getLocation().getDirection()); cof.normalize(); @@ -307,12 +312,12 @@ public class Gun extends StrikeItem public void displayAmmo(Player player) { - if (!UtilGear.isMat(player.getItemInHand(), getStack().getType())) + if (_module.getGunInHand(player, null) != this) return; //Weapon Bob during reload if (_reloading) - updateWeaponName(player, null); + updateWeaponName(player, null, false); if (!Recharge.Instance.usable(player, getName() + " Reload")) return; @@ -323,7 +328,7 @@ public class Gun extends StrikeItem UtilTextBottom.display(C.cRed + "No Ammo", player); } - public void updateWeaponName(Player player, MineStrike game) + public void updateWeaponName(Player player, GunModule game, boolean setItem) { if(game != null) { @@ -331,24 +336,24 @@ public class Gun extends StrikeItem { new BukkitRunnable() { public void run() { - PlayerStats remoteStats = game.getArcadeManager().GetStatsManager().Get(player);; - _kills = (int) remoteStats.getStat(game.GetName() + "." + getStatNameKills(true)); + PlayerStats remoteStats = game.getHost().getArcadeManager().GetStatsManager().Get(player);; + _kills = (int) remoteStats.getStat(game.getHost().GetName() + "." + getStatNameKills(true)); Player owner = UtilPlayer.searchExact(getOwnerName()); if(owner != null) { - HashMap localStatsMap = game.GetStats().get(owner); + HashMap localStatsMap = game.getHost().GetStats().get(owner); if(localStatsMap != null) { - Integer kills = localStatsMap.get(game.GetName() + "." + getStatNameKills(true)); + Integer kills = localStatsMap.get(game.getHost().GetName() + "." + getStatNameKills(true)); if(kills != null) { _kills += kills.intValue(); } } } - updateWeaponName(player, null); + updateWeaponName(player, null, setItem); } - }.runTaskAsynchronously(game.getArcadeManager().getPlugin()); + }.runTaskAsynchronously(game.getHost().getArcadeManager().getPlugin()); } } int kls = _kills; @@ -368,11 +373,18 @@ public class Gun extends StrikeItem if (player != null) { - player.getInventory().setItem(_slot, getStack()); + if (setItem) + player.getInventory().setItem(_slot, getStack()); + _reloadTick = !_reloadTick; } } + public void updateWeaponName(Player player, GunModule module) + { + updateWeaponName(player, module, true); + } + public void incrementKill() { _kills++; } @@ -399,7 +411,7 @@ public class Gun extends StrikeItem loc.getWorld().playSound(loc, Sound.PISTON_RETRACT, 1f, 0.8f); } - public void cancelReloadCheck(Player player, MineStrike game) + public void cancelReloadCheck(Player player, GunModule game) { if (!_reloading) return; @@ -457,6 +469,19 @@ public class Gun extends StrikeItem owner.getInventory().setItem(_slot, getStack()); } + + public void enableSkin() + { + MineStrikeSkin skin = null; + for (MineStrikeSkin otherSkin : MineStrikeSkin.values()) + { + if (otherSkin.getWeaponName().equalsIgnoreCase(_gunStats.getName())) + skin = otherSkin; + } + + setSkin(skin.getSkinMaterial(), skin.getSkinData()); + _activeSkinName = skin.getSkinName(); + } public int getSlot() { @@ -492,7 +517,7 @@ public class Gun extends StrikeItem } @Override - public boolean pickup(MineStrike game, Player player) + public boolean pickup(GunModule game, Player player) { if (player.getInventory().getItem(_slot) != null && player.getInventory().getItem(_slot).getType() != Material.AIR) return false; diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/items/guns/GunFactory.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/items/guns/GunFactory.java index d6cc459ed..9cb4e430f 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/items/guns/GunFactory.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/items/guns/GunFactory.java @@ -1,12 +1,14 @@ package nautilus.game.arcade.game.games.minestrike.items.guns; +import nautilus.game.arcade.game.games.minestrike.GunModule; + public class GunFactory { - public Gun createGun(GunStats gun) + public Gun createGun(GunStats gun, GunModule module) { if (gun.getGunType() == GunType.SHOTGUN) - return new Shotgun(gun); + return new Shotgun(gun, module); - return new Gun(gun); + return new Gun(gun, module); } } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/items/guns/GunStats.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/items/guns/GunStats.java index a7e777c70..fe59ff214 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/items/guns/GunStats.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/items/guns/GunStats.java @@ -1,6 +1,6 @@ package nautilus.game.arcade.game.games.minestrike.items.guns; -import nautilus.game.arcade.game.games.minestrike.MineStrike; +import nautilus.game.arcade.game.games.minestrike.GunModule; import nautilus.game.arcade.game.games.minestrike.items.StrikeItemType; import org.bukkit.Material; @@ -375,7 +375,7 @@ public enum GunStats public double getConeIncreaseRate() { - return _coneIncreaseRate * MineStrike.RECOIL; + return _coneIncreaseRate * GunModule.RECOIL; } public boolean getScope() diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/items/guns/GunType.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/items/guns/GunType.java index 3bdb407ac..f97e795da 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/items/guns/GunType.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/items/guns/GunType.java @@ -1,6 +1,6 @@ package nautilus.game.arcade.game.games.minestrike.items.guns; -import nautilus.game.arcade.game.games.minestrike.MineStrike; +import nautilus.game.arcade.game.games.minestrike.GunModule; public enum GunType { @@ -40,17 +40,17 @@ public enum GunType public double getMovePenalty() { - return _movePenalty * MineStrike.MOVE_PENALTY; + return _movePenalty * GunModule.MOVE_PENALTY; } public double getSprintPenalty() { - return _sprintPentalty * MineStrike.MOVE_PENALTY; + return _sprintPentalty * GunModule.MOVE_PENALTY; } public double getJumpPenalty() { - return _jumpPenalty * MineStrike.MOVE_PENALTY; + return _jumpPenalty * GunModule.MOVE_PENALTY; } public float getVolume() diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/items/guns/Shotgun.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/items/guns/Shotgun.java index 78f565db2..e613fb040 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/items/guns/Shotgun.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/items/guns/Shotgun.java @@ -5,7 +5,7 @@ import mineplex.core.common.util.UtilServer; import mineplex.core.common.util.UtilParticle.ParticleType; import mineplex.core.common.util.UtilParticle.ViewDist; import mineplex.core.recharge.Recharge; -import nautilus.game.arcade.game.games.minestrike.MineStrike; +import nautilus.game.arcade.game.games.minestrike.GunModule; import nautilus.game.arcade.game.games.minestrike.items.StrikeItemType; import org.bukkit.Location; @@ -18,15 +18,15 @@ public class Shotgun extends Gun { private int _pellets; - public Shotgun(GunStats gunStats) + public Shotgun(GunStats gunStats, GunModule module) { - super(gunStats); + super(gunStats, module); _pellets = gunStats.getPellets(); } @Override - public void shoot(Player player, MineStrike game) + public void shoot(Player player, GunModule game) { if (_reloading) return; diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/survivalgames/modes/StrikeGames.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/survivalgames/modes/StrikeGames.java new file mode 100644 index 000000000..f90f9c141 --- /dev/null +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/survivalgames/modes/StrikeGames.java @@ -0,0 +1,444 @@ +package nautilus.game.arcade.game.games.survivalgames.modes; + +import java.util.Arrays; + +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.Color; +import org.bukkit.Material; +import org.bukkit.block.Block; +import org.bukkit.block.Chest; +import org.bukkit.craftbukkit.v1_8_R3.inventory.CraftItemStack; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.inventory.InventoryClickEvent; +import org.bukkit.event.player.PlayerDropItemEvent; +import org.bukkit.event.player.PlayerPickupItemEvent; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.PlayerInventory; +import org.bukkit.inventory.meta.ItemMeta; + +import mineplex.core.common.util.UtilInv; +import mineplex.core.common.util.UtilItem; +import mineplex.core.common.util.UtilMath; +import mineplex.core.gadget.GadgetManager; +import mineplex.core.gadget.gadgets.gamemodifiers.GameModifierType; +import mineplex.core.gadget.gadgets.gamemodifiers.minestrike.GameModifierMineStrikeSkin; +import mineplex.core.itemstack.ItemStackFactory; +import mineplex.core.loot.RandomItem; +import nautilus.game.arcade.ArcadeManager; +import nautilus.game.arcade.GameType; +import nautilus.game.arcade.events.PlayerKitGiveEvent; +import nautilus.game.arcade.game.GameTeam; +import nautilus.game.arcade.game.games.minestrike.GunModule; +import nautilus.game.arcade.game.games.minestrike.items.grenades.FlashBang; +import nautilus.game.arcade.game.games.minestrike.items.grenades.Grenade; +import nautilus.game.arcade.game.games.minestrike.items.grenades.HighExplosive; +import nautilus.game.arcade.game.games.minestrike.items.grenades.Incendiary; +import nautilus.game.arcade.game.games.minestrike.items.grenades.Molotov; +import nautilus.game.arcade.game.games.minestrike.items.grenades.Smoke; +import nautilus.game.arcade.game.games.minestrike.items.guns.Gun; +import nautilus.game.arcade.game.games.minestrike.items.guns.GunStats; +import nautilus.game.arcade.game.games.survivalgames.SoloSurvivalGames; +import nautilus.game.arcade.game.games.survivalgames.SupplyChestOpenEvent; +import nautilus.game.arcade.game.games.survivalgames.kit.KitLooter; +import nautilus.game.arcade.game.games.survivalgames.modes.kit.KitPlayer; +import nautilus.game.arcade.kit.Kit; + +/** + * StrikeGames + * + * @author xXVevzZXx + */ +public class StrikeGames extends SoloSurvivalGames +{ + + private GunModule _gunModule; + + public StrikeGames(ArcadeManager manager) + { + super(manager, new Kit[] + { new KitPlayer(manager) }, GameType.Brawl); + + _gunModule = new GunModule(this); + _gunModule.setEnablePickup(false); + _gunModule.setEnableDrop(false); + _gunModule.setEnableCleaning(false); + } + + public void setupLoot() + { + // Food + getBaseLoot().addLoot(new RandomItem(Material.BAKED_POTATO, 30, 1, 3)); + getBaseLoot().addLoot(new RandomItem(Material.COOKED_BEEF, 30, 1, 2)); + getBaseLoot().addLoot(new RandomItem(Material.COOKED_CHICKEN, 30, 1, 2)); + getBaseLoot().addLoot(new RandomItem(Material.MUSHROOM_SOUP, 15, 1, 1)); + getBaseLoot().addLoot(new RandomItem(Material.WHEAT, 30, 1, 6)); + getBaseLoot().addLoot(new RandomItem(Material.ROTTEN_FLESH, 40, 1, 6)); + + // Weapons + getBaseLoot().addLoot(new RandomItem(Material.WOOD_SWORD, 70)); + getBaseLoot().addLoot(new RandomItem(Material.STONE_SWORD, 30)); + + // Leather armor + getBaseLoot().addLoot(new RandomItem(Material.LEATHER_BOOTS, 30)); + getBaseLoot().addLoot(new RandomItem(Material.LEATHER_LEGGINGS, 30)); + + // Gold armor + getBaseLoot().addLoot(new RandomItem(Material.GOLD_BOOTS, 25)); + getBaseLoot().addLoot(new RandomItem(Material.GOLD_CHESTPLATE, 25)); + getBaseLoot().addLoot(new RandomItem(Material.GOLD_HELMET, 25)); + getBaseLoot().addLoot(new RandomItem(Material.GOLD_LEGGINGS, 25)); + + // Grenades + getBaseLoot().addLoot(new RandomItem(Material.CARROT_ITEM, 15)); + getBaseLoot().addLoot(new RandomItem(Material.APPLE, 15)); + getBaseLoot().addLoot(new RandomItem(Material.PORK, 15)); + getBaseLoot().addLoot(new RandomItem(Material.GRILLED_PORK, 15)); + getBaseLoot().addLoot(new RandomItem(Material.POTATO_ITEM, 15)); + + // Chain armor + getBaseLoot().addLoot(new RandomItem(Material.CHAINMAIL_BOOTS, 20)); + getBaseLoot().addLoot(new RandomItem(Material.CHAINMAIL_CHESTPLATE, 20)); + getBaseLoot().addLoot(new RandomItem(Material.CHAINMAIL_HELMET, 20)); + getBaseLoot().addLoot(new RandomItem(Material.CHAINMAIL_LEGGINGS, 20)); + + // Throwable + getBaseLoot().addLoot(new RandomItem(Material.FISHING_ROD, 30)); + getBaseLoot().addLoot(new RandomItem(Material.BOW, 20)); + getBaseLoot().addLoot(new RandomItem(Material.ARROW, 20, 1, 3)); + getBaseLoot().addLoot(new RandomItem(Material.EGG, 30, 1, 2)); + + // Misc + getBaseLoot().addLoot(new RandomItem(Material.EXP_BOTTLE, 30, 1, 2)); + getBaseLoot().addLoot(new RandomItem(Material.COMPASS, 20)); + getBaseLoot().addLoot(new RandomItem(Material.STICK, 30, 1, 2)); + getBaseLoot().addLoot(new RandomItem(Material.BOAT, 15)); + getBaseLoot().addLoot(new RandomItem(Material.FLINT, 30, 1, 2)); + getBaseLoot().addLoot(new RandomItem(Material.FEATHER, 30, 1, 2)); + getBaseLoot().addLoot(new RandomItem(Material.GOLD_INGOT, 20)); + getSpawnLoot().addLoot(new RandomItem(Material.MUSHROOM_SOUP, 15)); + + getSpawnLoot().cloneLoot(getBaseLoot()); + + // Food + getSpawnLoot().addLoot(new RandomItem(Material.BAKED_POTATO, 30, 1, 5)); + getSpawnLoot().addLoot(new RandomItem(Material.CAKE, 30)); + getSpawnLoot().addLoot(new RandomItem(Material.MUSHROOM_SOUP, 30, 1, 1)); + getSpawnLoot().addLoot(new RandomItem(Material.COOKED_BEEF, 30, 1, 3)); + getSpawnLoot().addLoot(new RandomItem(Material.COOKED_CHICKEN, 30, 1, 3)); + getSpawnLoot().addLoot(new RandomItem(Material.COOKED_FISH, 30, 1, 6)); + getSpawnLoot().addLoot(new RandomItem(Material.COOKIE, 30)); + getSpawnLoot().addLoot(new RandomItem(Material.PUMPKIN_PIE, 30, 1, 3)); + + // Loot for chests in spawn + // Weaponry and ores + getSpawnLoot().addLoot(new RandomItem(Material.STONE_SWORD, 30)); + getSpawnLoot().addLoot(new RandomItem(Material.IRON_INGOT, 30, 1, 2)); + + // Iron gear + getSpawnLoot().addLoot(new RandomItem(Material.IRON_BOOTS, 30)); + getSpawnLoot().addLoot(new RandomItem(Material.IRON_CHESTPLATE, 30)); + getSpawnLoot().addLoot(new RandomItem(Material.IRON_HELMET, 30)); + getSpawnLoot().addLoot(new RandomItem(Material.IRON_LEGGINGS, 30)); + + // Supply crate loot + // Diamond gear + getCrateLoot().addLoot(new RandomItem(Material.DIAMOND_HELMET, 10)); + getCrateLoot().addLoot(new RandomItem(Material.DIAMOND_CHESTPLATE, 6)); + getCrateLoot().addLoot(new RandomItem(Material.DIAMOND_LEGGINGS, 8)); + getCrateLoot().addLoot(new RandomItem(Material.DIAMOND_BOOTS, 10)); + + // Iron gear + getCrateLoot().addLoot(new RandomItem(Material.IRON_HELMET, 30)); + getCrateLoot().addLoot(new RandomItem(Material.IRON_CHESTPLATE, 24)); + getCrateLoot().addLoot(new RandomItem(Material.IRON_LEGGINGS, 27)); + getCrateLoot().addLoot(new RandomItem(Material.IRON_BOOTS, 30)); + + // Weapons + getCrateLoot().addLoot(new RandomItem(Material.IRON_SWORD, 24)); + getCrateLoot().addLoot(new RandomItem(Material.DIAMOND_SWORD, 8)); + getCrateLoot().addLoot(new RandomItem(Material.GOLD_SPADE, 12)); + + // Cooked furnace + getFurnace().addLoot(new RandomItem(Material.COOKED_BEEF, 3, 1, 2)); + getFurnace().addLoot(new RandomItem(Material.COOKED_CHICKEN, 3, 1, 2)); + getFurnace().addLoot(new RandomItem(Material.COOKED_FISH, 3, 1, 2)); + getFurnace().addLoot(new RandomItem(Material.BAKED_POTATO, 3, 1, 1)); + getFurnace().addLoot(new RandomItem(Material.PUMPKIN_PIE, 3, 1, 1)); + getFurnace().addLoot(new RandomItem(Material.IRON_INGOT, 1, 1, 1)); + + // Raw furnace + getRawFurnace().addLoot(new RandomItem(Material.RAW_BEEF, 1, 1, 3)); + getRawFurnace().addLoot(new RandomItem(Material.RAW_CHICKEN, 1, 1, 3)); + getRawFurnace().addLoot(new RandomItem(Material.RAW_FISH, 1, 1, 3)); + + // Deathmatch Loot + getDeathMatch().addLoot(new RandomItem(Material.PUMPKIN_PIE, 4)); + getDeathMatch().addLoot(new RandomItem(Material.BAKED_POTATO, 4)); + getDeathMatch().addLoot(new RandomItem(Material.CAKE, 4)); + getDeathMatch().addLoot(new RandomItem(Material.WOOD_SWORD, 3)); + getDeathMatch().addLoot(new RandomItem(Material.STONE_SWORD, 1)); + } + + @Override + public void fillChest(Player looter, Block block) + { + getLootedBlocks().add(block.getLocation()); + + Chest chest = (Chest) block.getState(); + + chest.getBlockInventory().clear(); + + int items = 2; + if (Math.random() > 0.50) + items++; + if (Math.random() > 0.65) + items++; + if (Math.random() > 0.80) + items++; + if (Math.random() > 0.95) + items++; + + boolean spawnChest = getChestRefillTime() > 0 + && UtilMath.offset(chest.getLocation(), getSpawn()) < 8; + + if (spawnChest) + items += 3; + + if (GetKit(looter) instanceof KitLooter) + { + items += UtilMath.r(3); + } + + if (getSupplyBlocks().contains(block)) + { + items = 5; + if (Math.random() > 0.50) + items++; + if (Math.random() > 0.60) + items++; + if (Math.random() > 0.70) + items++; + if (Math.random() > 0.80) + items++; + if (Math.random() > 0.90) + items++; + if (Math.random() > 0.95) + items++; + } + + for (int i = 0; i < items; i++) + { + ItemStack item; + + if (spawnChest) + { + item = getSpawnLoot().getLoot(); + } + else if (isDeathMatchTeleported()) + { + item = getDeathMatch().getLoot(); + } + else + { + item = GetChestItem(getSupplyBlocks().contains(block)); + } + + if (item.getType() == Material.COMPASS) + { + item = buildCompass(5); + } + if (UtilItem.isWeapon(item)) + { + GunStats gunStat = GunStats.values()[UtilMath.r(GunStats.values().length)]; + + int e = 0; + + while (gunStat == GunStats.AWP && e < 20) + { + gunStat = GunStats.values()[UtilMath.r(GunStats.values().length)]; + e++; + } + + item = ItemStackFactory.Instance.CreateStack(gunStat.getSkin(), (byte) 0, 1, gunStat.getName()); + } + + String name = null; + if (item.getType() == Material.APPLE) + { + name = "High Explosive"; + } + else if (item.getType() == Material.CARROT_ITEM) + { + name = "Flash Bang"; + } + else if (item.getType() == Material.POTATO_ITEM) + { + name = "Smoke"; + } + else if (item.getType() == Material.PORK) + { + name = "Incendiary"; + } + else if (item.getType() == Material.GRILLED_PORK) + { + name = "Molotov"; + } + if (name != null) + { + ItemMeta meta = item.getItemMeta(); + meta.setDisplayName(name); + item.setItemMeta(meta); + } + + chest.getBlockInventory().setItem(UtilMath.r(27), item); + } + + if (getSupplyBlocks().contains(block)) + { + Bukkit.getPluginManager().callEvent(new SupplyChestOpenEvent(looter, block)); + } + + getSupplyBlocks().remove(block); + } + + @EventHandler + public void addEquipment(InventoryClickEvent event) + { + if (event.getCurrentItem() == null) + return; + + if (!(event.getWhoClicked() instanceof Player)) + return; + + Player player = (Player) event.getWhoClicked(); + + if (!(event.getClickedInventory() instanceof PlayerInventory)) + { + ItemStack stack = event.getCurrentItem(); + for (GunStats stat : GunStats.values()) + { + if (stat.getSkin() == stack.getType()) + { + Gun gun = new Gun(stat, _gunModule); + ItemMeta meta = stack.getItemMeta(); + meta.setLore(Arrays.asList(ChatColor.RED + "" + ChatColor.BOLD + "Identifier: " + UtilMath.r(1000) + 1)); + stack.setItemMeta(meta); + gun.setStack(stack); + gun.updateWeaponName(player, null, false); + _gunModule.registerGun(gun, player); + return; + } + } + + Grenade grenade = null; + + if (stack.getType() == Material.APPLE) + { + grenade = new HighExplosive(); + } + else if (stack.getType() == Material.CARROT_ITEM) + { + grenade = new FlashBang(); + } + else if (stack.getType() == Material.POTATO_ITEM) + { + grenade = new Smoke(); + } + else if (stack.getType() == Material.PORK) + { + grenade = new Incendiary(); + } + else if (stack.getType() == Material.GRILLED_PORK) + { + grenade = new Molotov(); + } + + if (grenade != null) + { + ItemMeta meta = stack.getItemMeta(); + meta.setDisplayName(grenade.getName()); + stack.setItemMeta(meta); + grenade.setStack(stack); + _gunModule.registerGrenade(grenade, player); + } + } + } + + @EventHandler + public void triggerPickup(PlayerPickupItemEvent event) + { + + if (!InProgress()) + return; + + if (!IsAlive(event.getPlayer())) + return; + + //Guns + Gun gun = _gunModule.getDroppedGuns().get(event.getItem()); + if (gun != null) + { + _gunModule.deregisterDroppedGun(gun); + _gunModule.registerGun(gun, event.getPlayer()); + gun.setStack(event.getItem().getItemStack()); + } + + //Grenades + Grenade grenade = _gunModule.getDroppedGrenades().get(event.getItem()); + if (grenade != null) + { + _gunModule.deregisterDroppedGrenade(grenade); + _gunModule.registerGrenade(grenade, event.getPlayer()); + grenade.setStack(event.getItem().getItemStack()); + } + } + + @EventHandler + public void triggerDrop(PlayerDropItemEvent event) + { + if (!InProgress()) + return; + + //Guns + Gun gun = _gunModule.getGunInHand(event.getPlayer(), event.getItemDrop().getItemStack()); + if (gun != null) + { + gun.drop(_gunModule, event.getPlayer(), false, false); + event.getItemDrop().remove(); + event.getPlayer().setItemInHand(null); + return; + } + + //Grenades + Grenade grenade = _gunModule.getGrenadeInHand(event.getPlayer(), event.getItemDrop().getItemStack()); + if (grenade != null) + { + grenade.drop(_gunModule, event.getPlayer(), false, false); + event.getItemDrop().remove(); + event.getPlayer().setItemInHand(null); + return; + } + }@EventHandler + public void giveStartEquipment(PlayerKitGiveEvent event) + { + GameTeam team = GetTeam(event.getPlayer()); + if (team == null) + return; + + Material mat = Material.IRON_SWORD; + byte data = 0; + String name = "Knife"; + + ItemStack knife = ItemStackFactory.Instance.CreateStack(mat, data, 1, name); + event.getPlayer().getInventory().setItem(0, knife); + } + + @Override + public String GetMode() + { + return "Strike Games"; + } + +} diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/survivalgames/modes/kit/KitPlayer.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/survivalgames/modes/kit/KitPlayer.java new file mode 100644 index 000000000..9942e1cc3 --- /dev/null +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/survivalgames/modes/kit/KitPlayer.java @@ -0,0 +1,46 @@ +package nautilus.game.arcade.game.games.survivalgames.modes.kit; + +import org.bukkit.Material; +import org.bukkit.entity.EntityType; +import org.bukkit.entity.LivingEntity; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; + +import mineplex.core.common.util.C; +import nautilus.game.arcade.ArcadeManager; +import nautilus.game.arcade.kit.Kit; +import nautilus.game.arcade.kit.KitAvailability; +import nautilus.game.arcade.kit.Perk; + +public class KitPlayer extends Kit +{ + public KitPlayer(ArcadeManager manager) + { + super(manager, "Player", KitAvailability.Free, + new String[] + { + C.cGreen + "Right-Click" + C.cWhite + " - " + C.cYellow + "Fire Gun", + C.cGreen + "Left-Click" + C.cWhite + " - " + C.cYellow + "Reload Gun", + C.cGreen + "Crouch" + C.cWhite + " - " + C.cYellow + "Sniper Scope", + }, + new Perk[] + { + + }, + EntityType.PLAYER, + new ItemStack(Material.AIR)); + + } + + @Override + public void GiveItems(Player player) + { + + } + + @Override + public void SpawnCustom(LivingEntity ent) + { + + } +} diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameFlagManager.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameFlagManager.java index 4300dfd09..c00b8f81d 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameFlagManager.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameFlagManager.java @@ -1263,7 +1263,7 @@ public class GameFlagManager implements Listener if (Manager.GetGame() == null) return; - if (Manager.GetGame().GetType().getResourcePackUrls() == null || Manager.GetGame().GetType().getResourcePackUrls().length == 0) + if (Manager.GetGame().GetType().getResourcePackUrls(Manager.GetGame()) == null || Manager.GetGame().GetType().getResourcePackUrls(Manager.GetGame()).length == 0) return; UtilTextMiddle.display(C.cGold + C.Bold + Manager.GetGame().GetType().GetName(), "Make sure you accept the Resource Pack", 20, 120, 20, event.getPlayer()); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/stats/HeadShotStatTracker.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/stats/HeadShotStatTracker.java index 3e7c37303..c551e3e76 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/stats/HeadShotStatTracker.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/stats/HeadShotStatTracker.java @@ -4,7 +4,7 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import nautilus.game.arcade.game.Game; -import nautilus.game.arcade.game.games.minestrike.MineStrike; +import nautilus.game.arcade.game.games.minestrike.PlayerHeadshotEvent; public class HeadShotStatTracker extends StatTracker { @@ -23,7 +23,7 @@ public class HeadShotStatTracker extends StatTracker } @EventHandler(ignoreCancelled = true, priority = EventPriority.MONITOR) - public void onPlayerHeadshot(MineStrike.PlayerHeadshotEvent event) + public void onPlayerHeadshot(PlayerHeadshotEvent event) { addStat(event.getShooter(), "Headshot", 1, false, false); } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/stats/KaboomStatTracker.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/stats/KaboomStatTracker.java index 7f4387d6b..5110df7d2 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/stats/KaboomStatTracker.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/stats/KaboomStatTracker.java @@ -4,13 +4,13 @@ import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; -import nautilus.game.arcade.game.games.minestrike.MineStrike; +import nautilus.game.arcade.game.games.minestrike.Minestrike; import nautilus.game.arcade.game.games.minestrike.items.grenades.Grenade; import nautilus.game.arcade.game.games.minestrike.items.grenades.HighExplosive; -public class KaboomStatTracker extends StatTracker +public class KaboomStatTracker extends StatTracker { - public KaboomStatTracker(MineStrike game) + public KaboomStatTracker(Minestrike game) { super(game); } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/stats/KillAllOpposingMineStrikeRoundStatTracker.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/stats/KillAllOpposingMineStrikeRoundStatTracker.java index 949d01d41..e71bcffd8 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/stats/KillAllOpposingMineStrikeRoundStatTracker.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/stats/KillAllOpposingMineStrikeRoundStatTracker.java @@ -14,14 +14,14 @@ import mineplex.core.common.util.UtilPlayer; import mineplex.minecraft.game.core.combat.event.CombatDeathEvent; import nautilus.game.arcade.game.Game; import nautilus.game.arcade.game.GameTeam; -import nautilus.game.arcade.game.TeamGame; -import nautilus.game.arcade.game.games.minestrike.MineStrike; +import nautilus.game.arcade.game.games.minestrike.GunModule; +import nautilus.game.arcade.game.games.minestrike.Minestrike; -public class KillAllOpposingMineStrikeRoundStatTracker extends StatTracker +public class KillAllOpposingMineStrikeRoundStatTracker extends StatTracker { private final Map> _kills = new HashMap<>(); - public KillAllOpposingMineStrikeRoundStatTracker(MineStrike game) + public KillAllOpposingMineStrikeRoundStatTracker(Minestrike game) { super(game); } @@ -63,7 +63,7 @@ public class KillAllOpposingMineStrikeRoundStatTracker extends StatTracker { diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/stats/MineStrikeLastAliveKillStatTracker.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/stats/MineStrikeLastAliveKillStatTracker.java index 958dfe1a3..fe53d5984 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/stats/MineStrikeLastAliveKillStatTracker.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/stats/MineStrikeLastAliveKillStatTracker.java @@ -13,13 +13,14 @@ import mineplex.core.common.util.UtilPlayer; import mineplex.minecraft.game.core.combat.event.CombatDeathEvent; import nautilus.game.arcade.game.Game; import nautilus.game.arcade.game.GameTeam; -import nautilus.game.arcade.game.games.minestrike.MineStrike; +import nautilus.game.arcade.game.games.minestrike.GunModule; +import nautilus.game.arcade.game.games.minestrike.Minestrike; -public class MineStrikeLastAliveKillStatTracker extends StatTracker +public class MineStrikeLastAliveKillStatTracker extends StatTracker { private final Map _killCount = new HashMap<>(); - public MineStrikeLastAliveKillStatTracker(MineStrike game) + public MineStrikeLastAliveKillStatTracker(Minestrike game) { super(game); } @@ -45,7 +46,7 @@ public class MineStrikeLastAliveKillStatTracker extends StatTracker } @EventHandler(ignoreCancelled = true, priority = EventPriority.MONITOR) - public void onRoundOver(MineStrike.RoundOverEvent event) + public void onRoundOver(GunModule.RoundOverEvent event) { for (GameTeam team : getGame().GetTeamList()) {