From f9b49caeed84c730699526a4f9e82dab0982c2f2 Mon Sep 17 00:00:00 2001 From: Cheese Date: Fri, 5 Jun 2015 12:21:20 +1000 Subject: [PATCH] More gems for bridges/sg kills Changed Al'Jaha MS name to Bombers Added Reporting functionality to Builders Nerfed Iron Hook Allowed longer AFk during games --- .../mineplex/core/common/util/UtilTime.java | 2 +- .../game/core/combat/CombatManager.java | 2 +- .../game/arcade/game/games/bridge/Bridge.java | 17 +++++ .../game/arcade/game/games/build/Build.java | 74 ++++++++++++++++--- .../arcade/game/games/build/BuildData.java | 18 ++++- .../game/arcade/game/games/micro/Micro.java | 3 +- .../game/games/minestrike/MineStrike.java | 6 +- .../games/survivalgames/SurvivalGames.java | 6 +- .../game/arcade/kit/perks/PerkIronHook.java | 2 +- .../game/arcade/managers/IdleManager.java | 2 +- .../nautilus/game/arcade/ore/OreHider.java | 14 ++-- 11 files changed, 118 insertions(+), 28 deletions(-) diff --git a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilTime.java b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilTime.java index 15a286157..3a220464a 100644 --- a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilTime.java +++ b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilTime.java @@ -98,7 +98,7 @@ public class UtilTime if (type == TimeUnit.DAYS) text = (num = UtilMath.trim(trim, time / 86400000d)) + " Day"; else if (type == TimeUnit.HOURS) text = (num = UtilMath.trim(trim, time / 3600000d)) + " Hour"; else if (type == TimeUnit.MINUTES) text = (num = UtilMath.trim(trim, time / 60000d)) + " Minute"; - else if (type == TimeUnit.SECONDS) text = (int) (num = (int) UtilMath.trim(0, time / 1000d)) + " Second"; + else if (type == TimeUnit.SECONDS) text = (num = UtilMath.trim(trim, time / 1000d)) + " Second"; else text = (int) (num = (int) UtilMath.trim(0, time)) + " Millisecond"; } diff --git a/Plugins/Mineplex.Minecraft.Game.Core/src/mineplex/minecraft/game/core/combat/CombatManager.java b/Plugins/Mineplex.Minecraft.Game.Core/src/mineplex/minecraft/game/core/combat/CombatManager.java index f25fdedaa..46c925898 100644 --- a/Plugins/Mineplex.Minecraft.Game.Core/src/mineplex/minecraft/game/core/combat/CombatManager.java +++ b/Plugins/Mineplex.Minecraft.Game.Core/src/mineplex/minecraft/game/core/combat/CombatManager.java @@ -417,7 +417,7 @@ public class CombatManager extends MiniPlugin CombatDeathEvent deathEvent = new CombatDeathEvent(event, Get(event.getEntity().getName()), log); UtilServer.getServer().getPluginManager().callEvent(deathEvent); - + //XXX Death MSG if (deathEvent.GetBroadcastType() == DeathMessageType.Detailed || deathEvent.GetBroadcastType() == DeathMessageType.Absolute) { //Display Simple diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/bridge/Bridge.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/bridge/Bridge.java index b496a7530..6c4917e88 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/bridge/Bridge.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/bridge/Bridge.java @@ -31,6 +31,7 @@ import org.bukkit.event.entity.EntityExplodeEvent; import org.bukkit.event.entity.ItemSpawnEvent; import org.bukkit.event.inventory.PrepareItemCraftEvent; import org.bukkit.event.player.PlayerBucketEmptyEvent; +import org.bukkit.event.player.PlayerCommandPreprocessEvent; import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.event.player.PlayerPickupItemEvent; import org.bukkit.inventory.CraftingInventory; @@ -1626,4 +1627,20 @@ public class Bridge extends TeamGame implements OreObsfucation event.setCancelled(true); } } + + @Override + public double GetKillsGems(Player killer, Player killed, boolean assist) + { + if (assist) + return 3; + else + return 12; + } + + @EventHandler + public void toggleOre(PlayerCommandPreprocessEvent event) + { + if (event.getPlayer().isOp() && event.getMessage().contains("/oretoggle")) + _ore.ToggleVisibility(); + } } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/build/Build.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/build/Build.java index 9e5a9bc64..1d7ee11d3 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/build/Build.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/build/Build.java @@ -63,6 +63,7 @@ import org.bukkit.event.vehicle.VehicleCreateEvent; import org.bukkit.event.vehicle.VehicleDamageEvent; import org.bukkit.inventory.ItemStack; +import mineplex.core.common.Rank; import mineplex.core.common.util.C; import mineplex.core.common.util.F; import mineplex.core.common.util.NautHashMap; @@ -91,6 +92,7 @@ import nautilus.game.arcade.GameType; import nautilus.game.arcade.events.GameStateChangeEvent; import nautilus.game.arcade.events.PlayerPrepareTeleportEvent; import nautilus.game.arcade.game.SoloGame; +import nautilus.game.arcade.game.Game.GameState; import nautilus.game.arcade.game.games.build.gui.MobShop; import nautilus.game.arcade.game.games.build.gui.OptionsShop; import nautilus.game.arcade.game.games.build.kits.KitBuilder; @@ -107,8 +109,8 @@ public class Build extends SoloGame private int _buildGameState = 0; private long _buildStateTime = 0; private long _buildTime = 300000; - private long _voteTime = 12000; - private long _viewTime = 16000; + private long _voteTime = 14000; + private long _viewTime = 18000; private BuildData _viewData = null; private int _countdownTimerState = 0; @@ -372,7 +374,27 @@ public class Build extends SoloGame } } - if (!hasDecentVote) + String result = null; + + //More than half think its abusive + if (GetPlayers(true).size() >= 4 && _viewData.AbuseVotes.size() >= (double)(GetPlayers(true).size() - 1) / 2d) + { + result = C.cWhite + "Inappropriate Build"; + _viewData.setAbusive(); + + //Record Abuse + AddStat(_viewData.Player, "Build Draw Abuse", 1, false, true); + + //Announce + Announce(C.cWhite + C.Bold + _viewData.Player.getName() + " has been reported for an inappropriate build.", false); + _viewData.Spawn.getWorld().playSound(_viewData.Spawn, Sound.ENDERDRAGON_GROWL, 10f, 1f); + + UtilPlayer.message(_viewData.Player, C.cWhite + C.Bold + "Inappropriate Builds can result in a Master Buildres ban."); + + //Return to Hub + getArcadeManager().GetPortal().sendPlayerToServer(_viewData.Player, "Lobby"); + } + else if (!hasDecentVote) { Manager.GetExplosion().BlockExplosion(_viewData.Blocks, _viewData.Spawn, false); @@ -380,10 +402,12 @@ public class Build extends SoloGame _viewData.Spawn.getWorld().playSound(_viewData.Spawn, Sound.EXPLODE, 3f, 1f); UtilParticle.PlayParticle(ParticleType.HUGE_EXPLOSION, _viewData.Spawn, 4f, 4f, 4f, 0, 10, ViewDist.MAX, UtilServer.getPlayers()); + + result = C.cRed + "Failure"; } //Announce Builder - UtilTextMiddle.display(hasDecentVote ? null : C.cRed + "Failure", "Built by: " + C.Bold + _viewData.Player.getName(), 0, 80, 5); + UtilTextMiddle.display(result, "Built by: " + C.Bold + _viewData.Player.getName(), 0, 80, 5); } _viewData.Judged = true; @@ -431,6 +455,8 @@ public class Build extends SoloGame player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(160, (byte)3, 1, C.cAqua + C.Bold + "Amazing")); player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(160, (byte)10, 1, C.cPurple + C.Bold + "WOW! EVERYTHING IS AWESOME!")); + player.getInventory().setItem(8, ItemStackFactory.Instance.CreateStack(Material.BOOK, (byte)0, 1, C.cWhite + C.Bold + "Report Inappropriate Build")); + UtilTextMiddle.display(null, C.cYellow + "Click to Vote", 0, 60, 5, player); } @@ -711,9 +737,6 @@ public class Build extends SoloGame if (!IsAlive(event.getPlayer())) return; - if (!UtilGear.isMat(event.getPlayer().getItemInHand(), Material.STAINED_GLASS_PANE)) - return; - if (!UtilEvent.isAction(event, ActionType.R) && !UtilEvent.isAction(event, ActionType.L)) return; @@ -722,9 +745,22 @@ public class Build extends SoloGame UtilPlayer.message(event.getPlayer(), F.main("Game", "You cannot vote on your own creation!")); return; } - + if (!UtilTime.elapsed(_buildStateTime, 1500)) return; + + //Vote Abuse + if (UtilGear.isMat(event.getPlayer().getItemInHand(), Material.BOOK)) + { + _viewData.addAbuseVote(event.getPlayer()); + UtilTextMiddle.display(null, C.cWhite + C.Bold + "Inappropriate Build", 0, 40, 5, event.getPlayer()); + UtilPlayer.message(event.getPlayer(), C.cWhite + C.Bold + "You reported " + _viewData.Player.getName() + " for inappropriate build!"); + UtilPlayer.message(event.getPlayer(), C.cWhite + C.Bold + "Thanks for helping us keep Master Builders clean!"); + return; + } + + if (!UtilGear.isMat(event.getPlayer().getItemInHand(), Material.STAINED_GLASS_PANE)) + return; if (!_votes.containsKey(event.getPlayer())) _votes.put(event.getPlayer(), new NautHashMap()); @@ -1179,12 +1215,12 @@ public class Build extends SoloGame if (_buildGameState == 0) { Scoreboard.Write(C.cYellow + C.Bold + "Build Time"); - Scoreboard.Write(UtilTime.MakeStr(Math.max(0, _buildTime - (System.currentTimeMillis() - this.GetStateTime())), 1)); + Scoreboard.Write(UtilTime.MakeStr(Math.max(0, _buildTime - (System.currentTimeMillis() - this.GetStateTime())), 0)); } else if (_buildGameState == 2) { Scoreboard.Write(C.cYellow + C.Bold + "Vote Time"); - Scoreboard.Write(UtilTime.MakeStr(Math.max(0, _voteTime - (System.currentTimeMillis() - _buildStateTime)), 1)); + Scoreboard.Write(UtilTime.MakeStr(Math.max(0, _voteTime - (System.currentTimeMillis() - _buildStateTime)), 0)); // if (_viewData != null) // { @@ -1441,4 +1477,22 @@ public class Build extends SoloGame return GetTeamList().get(0).GetSpawn(); } + + @EventHandler + public void kickAbusers(UpdateEvent event) + { + if (event.getType() != UpdateType.SLOW) + return; + + for (Player player : UtilServer.getPlayers()) + { + if (Manager.GetStatsManager().Get(player).getStat("Global.Build Draw Abuse") >= 3) + { + UtilPlayer.message(player, C.cRed + C.Bold + "You have been flagged as an Inappropriate Builder!"); + UtilPlayer.message(player, C.cRed + C.Bold + "As a result, you are banned from this game."); + player.playSound(player.getLocation(), Sound.ENDERDRAGON_GROWL, 10f, 1f); + getArcadeManager().GetPortal().sendPlayerToServer(player, "Lobby"); + } + } + } } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/build/BuildData.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/build/BuildData.java index d1892ca79..4069df70f 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/build/BuildData.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/build/BuildData.java @@ -51,7 +51,10 @@ public class BuildData public NautHashMap Particles = new NautHashMap(); public int Time = 6000; - + + public HashSet AbuseVotes = new HashSet(); + public boolean IsAbusive = false; + // This is used to show the player to use their inventory to grab items public boolean ClickedInventory = false; @@ -307,6 +310,9 @@ public class BuildData public void addPoints(double d) { + if (IsAbusive) + return; + _totalPoints += d; } @@ -319,4 +325,14 @@ public class BuildData { _totalPoints = 0; } + + public void addAbuseVote(Player voter) + { + AbuseVotes.add(voter.getName()); + } + + public void setAbusive() + { + IsAbusive = true; + } } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/micro/Micro.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/micro/Micro.java index e35832f40..d8a817f01 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/micro/Micro.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/micro/Micro.java @@ -11,6 +11,7 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.block.BlockBreakEvent; import org.bukkit.event.block.BlockPlaceEvent; +import mineplex.core.common.util.MapUtil; import mineplex.core.common.util.UtilMath; import mineplex.core.common.util.UtilTime; import mineplex.core.updater.UpdateType; @@ -178,7 +179,7 @@ public class Micro extends TeamGame return; for (Block block : _glass) - block.setType(Material.AIR); + MapUtil.QuickChangeBlockAt(block.getLocation(), Material.AIR); _glass.clear(); } 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 cfc70dab1..cb3d46357 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 @@ -245,8 +245,8 @@ public class MineStrike extends TeamGame C.cAqua + "SWAT" + C.cWhite + " Defend the Bomb Sites", C.cAqua + "SWAT" + C.cWhite + " Kill the Terrorists", " ", - C.cRed + "Al'Jaha" + C.cWhite + " Plant the Bomb at Bomb Site", - C.cRed + "Al'Jaha" + C.cWhite + " Kill the Counter-Terrorists", + C.cRed + "Bombers" + C.cWhite + " Plant the Bomb at Bomb Site", + C.cRed + "Bombers" + C.cWhite + " Kill the Counter-Terrorists", }); _shopManager = new ShopManager(this); @@ -313,7 +313,7 @@ public class MineStrike extends TeamGame this.GetTeamList().get(0).SetName("SWAT"); this.GetTeamList().get(1).SetColor(ChatColor.RED); - this.GetTeamList().get(1).SetName("Al'Jaha"); + this.GetTeamList().get(1).SetName("Bombers"); } @EventHandler diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/survivalgames/SurvivalGames.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/survivalgames/SurvivalGames.java index c7ca00602..d3e3a08d8 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/survivalgames/SurvivalGames.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/survivalgames/SurvivalGames.java @@ -1037,7 +1037,10 @@ public class SurvivalGames extends SoloGame @Override public double GetKillsGems(Player killer, Player killed, boolean assist) { - return 4; + if (assist) + return 3; + else + return 12; } @EventHandler @@ -2272,5 +2275,4 @@ public class SurvivalGames extends SoloGame } } } - } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkIronHook.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkIronHook.java index ef55aae76..b707bf669 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkIronHook.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkIronHook.java @@ -98,7 +98,7 @@ public class PerkIronHook extends Perk implements IThrown //Damage Event Manager.GetDamage().NewDamageEvent(target, player, null, - DamageCause.CUSTOM, velocity * 8, false, true, false, + DamageCause.CUSTOM, velocity * 4, false, true, false, player.getName(), GetName()); //Inform diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/IdleManager.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/IdleManager.java index 35fdef010..4d0ca2244 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/IdleManager.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/IdleManager.java @@ -73,7 +73,7 @@ public class IdleManager implements Listener if (_yaw.get(player) == player.getLocation().getYaw()) { - if (UtilTime.elapsed(_idle.get(player), 120000)) + if (UtilTime.elapsed(_idle.get(player), getArcadeManager().GetGame().IsLive() ? 240000 : 120000)) { if (getArcadeManager().GetGame().GetState() != GameState.Recruit && !getArcadeManager().GetGame().IsAlive(player)) continue; diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/ore/OreHider.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/ore/OreHider.java index f16cfda1c..467310428 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/ore/OreHider.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/ore/OreHider.java @@ -13,11 +13,11 @@ public class OreHider { private NautHashMap _hidden = new NautHashMap(); private boolean _visible = false; - + public void AddOre(Location loc, Material type) { boolean visible = false; - + for (Block block : UtilBlock.getSurrounding(loc.getBlock(), false)) { if (!block.getType().isOccluding()) @@ -26,7 +26,7 @@ public class OreHider break; } } - + if (visible) { loc.getBlock().setType(type); @@ -36,7 +36,7 @@ public class OreHider _hidden.put(loc.getBlock().getLocation(), type); } } - + public void BlockBreak(BlockBreakEvent event) { for (Block block : UtilBlock.getSurrounding(event.getBlock(), false)) @@ -47,7 +47,7 @@ public class OreHider } } } - + public void Explosion(ExplosionEvent event) { for (Block cur : event.GetBlocks()) @@ -61,7 +61,7 @@ public class OreHider } } } - + public void ToggleVisibility() { if (!_visible) @@ -78,7 +78,7 @@ public class OreHider loc.getBlock().setType(Material.STONE); } } - + _visible = !_visible; }