diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ItemTNT.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ItemTNT.java index 383b46e24..91ac32a93 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ItemTNT.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ItemTNT.java @@ -14,7 +14,11 @@ import mineplex.core.common.util.C; import mineplex.core.common.util.F; import mineplex.core.common.util.UtilAction; import mineplex.core.common.util.UtilAlg; +import mineplex.core.common.util.UtilParticle; import mineplex.core.common.util.UtilPlayer; +import mineplex.core.common.util.UtilServer; +import mineplex.core.common.util.UtilParticle.ParticleType; +import mineplex.core.common.util.UtilParticle.ViewDist; import mineplex.core.gadget.GadgetManager; import mineplex.core.gadget.types.ItemGadget; import mineplex.core.updater.UpdateType; @@ -40,6 +44,7 @@ public class ItemTNT extends ItemGadget public void ActivateCustom(Player player) { TNTPrimed tnt = player.getWorld().spawn(player.getEyeLocation().add(player.getLocation().getDirection()), TNTPrimed.class); + tnt.setYield(0.0F); // Added in order to prevent water from being evaporated. UtilAction.velocity(tnt, player.getLocation().getDirection(), 0.6, false, 0, 0.2, 1, false); _tnt.add(tnt); @@ -58,7 +63,7 @@ public class ItemTNT extends ItemGadget HashMap players = UtilPlayer.getInRadius(event.getLocation(), 10); for (Player player : players.keySet()) - { + { if (Manager.collideEvent(this, player)) continue; @@ -67,6 +72,9 @@ public class ItemTNT extends ItemGadget //Knockback UtilAction.velocity(player, UtilAlg.getTrajectory(event.getLocation(), player.getLocation()), 3 * mult, false, 0, 0.5 + 2 * mult, 10, true); } + + // Simulating explosion to prevent water from being evaporated. + UtilParticle.PlayParticle(ParticleType.HUGE_EXPLOSION, event.getLocation(), 0, 0, 0, 0, 1, ViewDist.NORMAL, UtilServer.getPlayers()); } 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 index c0dbe5c9e..a49a647fd 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/MineStrike.java @@ -10,11 +10,11 @@ import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Color; import org.bukkit.Effect; -import org.bukkit.GameMode; 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_7_R4.entity.CraftArrow; import org.bukkit.craftbukkit.v1_7_R4.entity.CraftPlayer; import org.bukkit.entity.Arrow; @@ -277,7 +277,7 @@ public class MineStrike extends TeamGame //"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 Bomb", + "Look at the Bomb to Defuse it", "Moving decreases accuracy", "Sprinting heavily decreases accuracy", "Jumping massively decreases accuracy", @@ -716,6 +716,7 @@ public class MineStrike extends TeamGame return; Grenade grenade = getGrenadeInHand(event.getPlayer(), null); + if (grenade == null) return; @@ -1519,9 +1520,25 @@ public class MineStrike extends TeamGame 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 Bomb on the ground!")); + UtilPlayer.message(player, F.main("Game", "You can only plant the bomb on the ground.")); event.setCancelled(true); return; } @@ -1529,7 +1546,7 @@ public class MineStrike extends TeamGame //Should never occur with 1 Bomb if (_bombPlanter != null) { - UtilPlayer.message(player, F.main("Game", "Someone else is planting Bomb...")); + UtilPlayer.message(player, F.main("Game", "Someone else is planting the bomb.")); event.setCancelled(true); return; } @@ -1548,7 +1565,7 @@ public class MineStrike extends TeamGame //Too Far if (!near) { - UtilPlayer.message(player, F.main("Game", "You can only plant Bomb at a bomb site!")); + UtilPlayer.message(player, F.main("Game", "You can only plant the bomb at a bomb site.")); event.setCancelled(true); return; } @@ -1556,7 +1573,7 @@ public class MineStrike extends TeamGame _bombPlanter = player; _bombPlanter.setExp(0f); - UtilPlayer.message(player, F.main("Game", "You are placing the Bomb.")); + UtilPlayer.message(player, F.main("Game", "You are now placing the bomb.")); //Radio playSound(Radio.T_BOMB_PLANT, null, GetTeam(_bombPlanter)); @@ -1568,6 +1585,10 @@ public class MineStrike extends TeamGame 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; @@ -1937,6 +1958,7 @@ public class MineStrike extends TeamGame for (Player player : UtilServer.getPlayers()) { player.playSound(player.getLocation(), Sound.LEVEL_UP, 1f, 1f); + removeScope(player); Recharge.Instance.Reset(player, "reload"); } @@ -2838,4 +2860,28 @@ public class MineStrike extends TeamGame { return _freezeTime > 0; } + + @EventHandler + public void cancelFireExtinguish(PlayerInteractEvent event) + { + // This is an extra event added in order to prevent players from + // extinguishing fire that gets generated from moltovs and incendiary grenades. + + if (!IsLive()) + return; + + if (UtilEvent.isAction(event, ActionType.L_BLOCK)) + { + Block block = event.getClickedBlock(); + + for (BlockFace face : BlockFace.values()) + { + if (block.getRelative(face).getType() == Material.FIRE) + { + event.setCancelled(true); + return; + } + } + } + } } 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 bb6d58f7a..f6bb986f3 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 @@ -23,6 +23,7 @@ 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.Shotgun; +import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Color; import org.bukkit.GameMode; @@ -46,7 +47,7 @@ public class ShopManager } public void enterShop(Player player) - { + { GameTeam team = Host.GetTeam(player); if (team == null) return; @@ -101,14 +102,13 @@ public class ShopManager public void addItem(StrikeItem item, Player player, int slot) { player.getInventory().setItem(slot, item.getShopItem(getMoney(player), hasItem(player, item))); - _shop.get(player).put(slot, item); } public boolean hasItem(Player player, StrikeItem item) { - int count = 0; + for (int i=0 ; i<9 ; i++) { if (UtilGear.isMat(player.getInventory().getItem(i), item.getSkin())) @@ -286,7 +286,7 @@ public class ShopManager } public void update() - { + { for (Player player : Host.GetPlayers(false)) { GameTeam team = Host.GetTeam(player); 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 a9cdeded4..9558b55f9 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 @@ -3,7 +3,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.UtilEnt; import mineplex.core.common.util.UtilParticle; import mineplex.core.common.util.UtilServer; import mineplex.core.common.util.UtilParticle.ParticleType; @@ -12,6 +11,7 @@ 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; @@ -39,7 +39,10 @@ public abstract class FireGrenadeBase extends Grenade @Override public boolean updateCustom(MineStrike game, Entity ent) { - if (UtilEnt.isGrounded(ent)) + // Fixed grenade effect not being activated when thrown in the ground. + // Looks like ent.isOnGround() worked, while we previously used UtilEnt.isGrounded(ent). + + if (ent.isOnGround()) { createFire(game, ent.getLocation()); @@ -76,7 +79,10 @@ public abstract class FireGrenadeBase extends Grenade public void run() { if (round == game.getRound() && !game.isFreezeTime()) - game.Manager.GetBlockRestore().Add(block, 51, (byte)0, (long) (_baseTime + blocks.get(block) * _baseTime)); + { + double time = _baseTime + blocks.get(block) * _baseTime; + game.Manager.GetBlockRestore().Add(block, 51, (byte)0, (long) time); + } } }, 60 - (int)(60d * blocks.get(block))); } 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 be8715efc..595c303ea 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 @@ -130,7 +130,7 @@ public abstract class Grenade extends StrikeItem } public void throwGrenade(Player player, boolean wasLeftClick, MineStrike game) - { + { player.setItemInHand(null); _thrower = player; diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameLobbyManager.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameLobbyManager.java index 76f41dd0b..a18abd254 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameLobbyManager.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameLobbyManager.java @@ -15,9 +15,12 @@ import mineplex.core.common.util.MapUtil; import mineplex.core.common.util.NautHashMap; import mineplex.core.common.util.UtilBlockText; import mineplex.core.common.util.UtilBlockText.TextAlign; +import mineplex.core.common.util.UtilParticle.ParticleType; +import mineplex.core.common.util.UtilParticle.ViewDist; import mineplex.core.common.util.UtilEnt; import mineplex.core.common.util.UtilFirework; import mineplex.core.common.util.UtilInv; +import mineplex.core.common.util.UtilParticle; import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilServer; import mineplex.core.common.util.UtilTime; @@ -1298,7 +1301,7 @@ public class GameLobbyManager implements Listener, IPacketHandler if (Manager.GetGame().GetState() == GameState.Live) return; - + event.blockList().clear(); }