From 7865b1ef800c9bf4695724ed69da4fc6a60cfb76 Mon Sep 17 00:00:00 2001 From: Sam Date: Fri, 8 Jul 2016 17:37:32 +0100 Subject: [PATCH 01/21] PC-692 Allows humans in Wither Assault to place blocks anywhere so that players are not able to get stuck in the ground --- .../nautilus/game/arcade/game/games/wither/WitherGame.java | 7 ------- 1 file changed, 7 deletions(-) diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/wither/WitherGame.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/wither/WitherGame.java index 20e743fc8..670f13771 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/wither/WitherGame.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/wither/WitherGame.java @@ -271,13 +271,6 @@ public class WitherGame extends TeamGame implements IBlockRestorer return; } - if(event.getBlock().getLocation().getBlockY() < _maxY - 4) - { - event.getPlayer().sendMessage(F.main("BlockChecker", "You may not build under this height!")); - event.setCancelled(true); - return; - } - _locationsOfBlocks.add(event.getBlock().getLocation()); } From aae24d862ac17cbf8f052a56352d03367b949306 Mon Sep 17 00:00:00 2001 From: Sam Date: Fri, 8 Jul 2016 17:38:53 +0100 Subject: [PATCH 02/21] Revert "PC-692" This reverts commit 7865b1ef800c9bf4695724ed69da4fc6a60cfb76. --- .../nautilus/game/arcade/game/games/wither/WitherGame.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/wither/WitherGame.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/wither/WitherGame.java index 670f13771..20e743fc8 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/wither/WitherGame.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/wither/WitherGame.java @@ -271,6 +271,13 @@ public class WitherGame extends TeamGame implements IBlockRestorer return; } + if(event.getBlock().getLocation().getBlockY() < _maxY - 4) + { + event.getPlayer().sendMessage(F.main("BlockChecker", "You may not build under this height!")); + event.setCancelled(true); + return; + } + _locationsOfBlocks.add(event.getBlock().getLocation()); } From 7940eeb0eee2e4507368c6004b3edf1d448f075d Mon Sep 17 00:00:00 2001 From: Sam Date: Fri, 8 Jul 2016 17:49:38 +0100 Subject: [PATCH 03/21] PC-633 Allows humans in Wither Assault to place blocks under the map, allowing them to no longer get stuck --- .../nautilus/game/arcade/game/games/wither/WitherGame.java | 7 ------- 1 file changed, 7 deletions(-) diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/wither/WitherGame.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/wither/WitherGame.java index 20e743fc8..670f13771 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/wither/WitherGame.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/wither/WitherGame.java @@ -271,13 +271,6 @@ public class WitherGame extends TeamGame implements IBlockRestorer return; } - if(event.getBlock().getLocation().getBlockY() < _maxY - 4) - { - event.getPlayer().sendMessage(F.main("BlockChecker", "You may not build under this height!")); - event.setCancelled(true); - return; - } - _locationsOfBlocks.add(event.getBlock().getLocation()); } From c607654c51066e782c1bb757ab4aa8919fe34ee4 Mon Sep 17 00:00:00 2001 From: Sam Date: Fri, 8 Jul 2016 17:50:33 +0100 Subject: [PATCH 04/21] PC-692 Fixes an issue that allowed staff spectators to damage the King in Castle Siege --- .../game/arcade/game/games/castlesiege/CastleSiege.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/castlesiege/CastleSiege.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/castlesiege/CastleSiege.java index 2aced88d1..a2c6951ac 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/castlesiege/CastleSiege.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/castlesiege/CastleSiege.java @@ -444,6 +444,11 @@ public class CastleSiege extends TeamGame { if (!Recharge.Instance.use(damager, "Damage King", 400, false, false)) return; + + if (!IsAlive(damager)) + { + return; + } _king.playEffect(EntityEffect.HURT); From c16f9ec9ec31e60e8c14015df03eb1c9a1a1adc9 Mon Sep 17 00:00:00 2001 From: Sam Date: Fri, 8 Jul 2016 17:53:22 +0100 Subject: [PATCH 05/21] PC-688 Changes the description in Draw My Thing so that it reflects changes made to the tip system. --- .../src/nautilus/game/arcade/game/games/draw/Draw.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/draw/Draw.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/draw/Draw.java index 8b6c61a77..20e6b50d2 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/draw/Draw.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/draw/Draw.java @@ -108,7 +108,7 @@ public class Draw extends SoloGame { "Take turns to draw something", "Right-Click with items to draw", - "Hints are given at top of screen", + "Hints are given at the bottom of screen", }); StrictAntiHack = true; From 42c578be9d87f78857ee544ea5f722e93b47d4cd Mon Sep 17 00:00:00 2001 From: Sam Date: Fri, 8 Jul 2016 17:54:42 +0100 Subject: [PATCH 06/21] PC-612 Fixes an issue that removing Co-host from someone would remove their creative mode in Master Builders. --- .../src/nautilus/game/arcade/managers/GameHostManager.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameHostManager.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameHostManager.java index 7e877fba7..3b3e298d6 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameHostManager.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameHostManager.java @@ -677,11 +677,12 @@ public class GameHostManager implements Listener player.closeInventory(); } UtilPlayer.message(player, F.main("Server", "Your Co-Host privileges were removed.")); - - player.setGameMode(GameMode.SURVIVAL); - + if (isEventServer()) + { + player.setGameMode(GameMode.SURVIVAL); worldeditPermissionSet(player, false); + } } } From 07b65ad1c95a6cf74ba2a07fd049e0731af80fc9 Mon Sep 17 00:00:00 2001 From: Sam Date: Fri, 8 Jul 2016 21:01:15 +0100 Subject: [PATCH 07/21] PC-621 Doors can now be opened in Block Hunt --- .../nautilus/game/arcade/game/games/hideseek/HideSeek.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/hideseek/HideSeek.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/hideseek/HideSeek.java index 55535e846..4765b99ab 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/hideseek/HideSeek.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/hideseek/HideSeek.java @@ -1329,6 +1329,11 @@ public class HideSeek extends TeamGame if (UtilBlock.usable(event.getClickedBlock())) event.setCancelled(true); + + if (event.getClickedBlock().getType() == Material.WOODEN_DOOR) + { + event.setCancelled(false); + } } public GameTeam getHiders() From 34565b2975dc1b65438434b509c0d7fb4fa81b59 Mon Sep 17 00:00:00 2001 From: Sam Date: Fri, 8 Jul 2016 22:09:48 +0100 Subject: [PATCH 08/21] PC-699 /bc in MPS is now protected by the filter --- .../nautilus/game/arcade/managers/GameHostManager.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameHostManager.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameHostManager.java index 3b3e298d6..2d8ce0e93 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameHostManager.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameHostManager.java @@ -426,7 +426,14 @@ public class GameHostManager implements Listener msg += event.getMessage().split(" ")[i] + " "; } msg = msg.trim(); - + + msg = Manager.GetChat().getFilteredMessage(event.getPlayer(), msg); + + if (msg == null) + { + return; + } + Bukkit.broadcastMessage(C.cDGreen + C.Bold + event.getPlayer().getName() + " " + C.cGreen + msg); } From 933861176db88fa2b319f6a3347f7e90715f654f Mon Sep 17 00:00:00 2001 From: Sam Date: Wed, 10 Aug 2016 21:45:27 +0100 Subject: [PATCH 09/21] PC-662 Castle Siege - Fixes the game not ending if the whole of one team left. --- .../game/arcade/game/games/castlesiege/CastleSiege.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/castlesiege/CastleSiege.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/castlesiege/CastleSiege.java index a2c6951ac..50e9b449c 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/castlesiege/CastleSiege.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/castlesiege/CastleSiege.java @@ -49,6 +49,7 @@ import mineplex.core.common.util.UtilMath; import mineplex.core.common.util.UtilParticle; import mineplex.core.common.util.UtilParticle.ParticleType; import mineplex.core.common.util.UtilParticle.ViewDist; +import mineplex.core.gadget.set.SetCandyCane; import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilServer; import mineplex.core.common.util.UtilTime; @@ -589,7 +590,7 @@ public class CastleSiege extends TeamGame if (!IsLive()) return; - if (this.WorldTimeSet > 24100) + if (this.WorldTimeSet > 24100 || GetTeam(ChatColor.RED).GetSize() == 0) { SetCustomWinLine(_kingName + ChatColor.RESET + " has survived the siege!"); @@ -613,7 +614,7 @@ public class CastleSiege extends TeamGame SetState(GameState.End); } - if (!_king.isValid()) + if (!_king.isValid() || GetTeam(ChatColor.AQUA).GetSize() == 0) { if (_kingDamager != null) { From a02699d84a40f624a728dddad0ff6db252a09a75 Mon Sep 17 00:00:00 2001 From: Sam Date: Wed, 10 Aug 2016 21:46:02 +0100 Subject: [PATCH 10/21] PC-898 SSM - Fixes an issue where kit armor would not appear correctly in your inventory. --- .../nautilus/game/arcade/game/games/smash/kits/KitPig.java | 2 +- .../arcade/game/games/smash/kits/KitWitherSkeleton.java | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/smash/kits/KitPig.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/smash/kits/KitPig.java index 23efec302..228622660 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/smash/kits/KitPig.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/smash/kits/KitPig.java @@ -76,8 +76,8 @@ public class KitPig extends SmashKit private static final ItemStack[] PLAYER_ARMOR = { ItemStackFactory.Instance.CreateStack(Material.CHAINMAIL_BOOTS), - ItemStackFactory.Instance.CreateStack(Material.CHAINMAIL_CHESTPLATE), ItemStackFactory.Instance.CreateStack(Material.CHAINMAIL_LEGGINGS), + ItemStackFactory.Instance.CreateStack(Material.CHAINMAIL_CHESTPLATE), null, }; diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/smash/kits/KitWitherSkeleton.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/smash/kits/KitWitherSkeleton.java index b59a1bd66..75739762e 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/smash/kits/KitWitherSkeleton.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/smash/kits/KitWitherSkeleton.java @@ -67,10 +67,10 @@ public class KitWitherSkeleton extends SmashKit private static final ItemStack[] PLAYER_ARMOR = { - ItemStackFactory.Instance.CreateStack(Material.CHAINMAIL_HELMET), - ItemStackFactory.Instance.CreateStack(Material.CHAINMAIL_CHESTPLATE), + ItemStackFactory.Instance.CreateStack(Material.CHAINMAIL_BOOTS), ItemStackFactory.Instance.CreateStack(Material.CHAINMAIL_LEGGINGS), - ItemStackFactory.Instance.CreateStack(Material.CHAINMAIL_BOOTS) + ItemStackFactory.Instance.CreateStack(Material.CHAINMAIL_CHESTPLATE), + ItemStackFactory.Instance.CreateStack(Material.CHAINMAIL_HELMET) }; From df646b065943bc1253314e529f25fdfea6935481 Mon Sep 17 00:00:00 2001 From: Sam Date: Wed, 10 Aug 2016 21:46:37 +0100 Subject: [PATCH 11/21] PC-897 SG - Spectators can no longer punch fireballs from the world border --- .../game/games/survivalgames/SurvivalGames.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) 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 ea5d5e663..b46fb4cc6 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 @@ -34,6 +34,7 @@ import org.bukkit.event.entity.EntityExplodeEvent; import org.bukkit.event.entity.EntityShootBowEvent; import org.bukkit.event.entity.ExplosionPrimeEvent; import org.bukkit.event.entity.ItemSpawnEvent; +import org.bukkit.event.entity.EntityDamageByEntityEvent; import org.bukkit.event.entity.EntityDamageEvent.DamageCause; import org.bukkit.event.entity.ProjectileHitEvent; import org.bukkit.event.hanging.HangingBreakEvent; @@ -1262,7 +1263,7 @@ public abstract class SurvivalGames extends Game if (!(event.getEntity() instanceof Fireball)) return; - + Collection blocks = UtilBlock.getInRadius( event.getEntity().getLocation(), 2.4).keySet(); @@ -1284,6 +1285,15 @@ public abstract class SurvivalGames extends Game return sides >= 3; } + + @EventHandler + public void borderSpecInteraction(EntityDamageByEntityEvent event) + { + if (event.getEntity() instanceof Fireball && UtilPlayer.isSpectator(event.getDamager())) + { + event.setCancelled(true); + } + } @EventHandler public void borderDamage(CustomDamageEvent event) From 82b2541e3481fe4a480e4b2a9cd0218ca4e0a393 Mon Sep 17 00:00:00 2001 From: Sam Date: Wed, 10 Aug 2016 21:47:13 +0100 Subject: [PATCH 12/21] PC-827 Team SSM - Teammates can no longer cancel each other's Blaze Firefly --- .../game/arcade/kit/perks/PerkFirefly.java | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkFirefly.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkFirefly.java index df7e17b2e..f16ef797c 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkFirefly.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkFirefly.java @@ -17,15 +17,17 @@ import mineplex.core.common.util.F; import mineplex.core.common.util.UtilAction; import mineplex.core.common.util.UtilBlock; import mineplex.core.common.util.UtilParticle; -import mineplex.core.common.util.UtilParticle.ViewDist; -import mineplex.core.common.util.UtilServer; import mineplex.core.common.util.UtilParticle.ParticleType; +import mineplex.core.common.util.UtilParticle.ViewDist; import mineplex.core.common.util.UtilPlayer; +import mineplex.core.common.util.UtilServer; import mineplex.core.common.util.UtilTime; import mineplex.core.recharge.Recharge; import mineplex.core.updater.UpdateType; import mineplex.core.updater.event.UpdateEvent; import mineplex.minecraft.game.core.damage.CustomDamageEvent; +import nautilus.game.arcade.game.Game; +import nautilus.game.arcade.game.games.smash.TeamSuperSmash; import nautilus.game.arcade.kit.SmashPerk; import nautilus.game.arcade.kit.perks.data.FireflyData; @@ -170,6 +172,11 @@ public class PerkFirefly extends SmashPerk if (event.GetDamage() <= 4) return; + if (!(event.GetDamagerEntity(true) instanceof Player)) + { + return; + } + Iterator dataIterator = _data.iterator(); while (dataIterator.hasNext()) @@ -181,6 +188,17 @@ public class PerkFirefly extends SmashPerk if (!UtilTime.elapsed(data.Time, 1250) && !isSuperActive(data.Player))// && event.GetCause() == DamageCause.PROJECTILE) { + Game game = Manager.GetGame(); + + if (game instanceof TeamSuperSmash) + { + if (game.GetTeam(data.Player).equals(game.GetTeam(event.GetDamagerPlayer(true)))) + { + event.SetCancelled("Team Damage"); + return; + } + } + dataIterator.remove(); } else From 33cb4db33876c705693e9df93163b1b851c76384 Mon Sep 17 00:00:00 2001 From: Sam Date: Fri, 12 Aug 2016 19:52:23 +0100 Subject: [PATCH 13/21] Minestrike - Stop vanished players being assigned teams on join --- .../game/arcade/game/games/minestrike/Minestrike.java | 5 +++++ 1 file changed, 5 insertions(+) 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 862ead445..b099898c1 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 @@ -1043,6 +1043,11 @@ public class Minestrike extends TeamGame { if (GetState() == GameState.Recruit || GetState() == GameState.Loading) return; + + if (Manager.isVanished(event.getPlayer())) + { + return; + } //Target Team GameTeam targetTeam = null; From c66e485c9e487fd57d75c6a8dc26b225582ada2a Mon Sep 17 00:00:00 2001 From: AlexTheCoder Date: Sat, 13 Aug 2016 00:19:02 -0400 Subject: [PATCH 14/21] Fix arrow knockback --- .../minecraft/game/core/damage/DamageManager.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/Plugins/Mineplex.Minecraft.Game.Core/src/mineplex/minecraft/game/core/damage/DamageManager.java b/Plugins/Mineplex.Minecraft.Game.Core/src/mineplex/minecraft/game/core/damage/DamageManager.java index dcaf61de3..ebb331257 100644 --- a/Plugins/Mineplex.Minecraft.Game.Core/src/mineplex/minecraft/game/core/damage/DamageManager.java +++ b/Plugins/Mineplex.Minecraft.Game.Core/src/mineplex/minecraft/game/core/damage/DamageManager.java @@ -545,13 +545,19 @@ public class DamageManager extends MiniPlugin origin = event.GetDamagerEntity(true).getLocation(); if (event.getKnockbackOrigin() != null) origin = event.getKnockbackOrigin(); - else if (event.GetProjectile() != null) - origin = event.GetProjectile().getLocation(); //Vec Vector trajectory = UtilAlg.getTrajectory2d(origin, event.GetDamageeEntity().getLocation()); trajectory.multiply(0.6 * knockback); trajectory.setY(Math.abs(trajectory.getY())); + + if (event.GetProjectile() != null && event.getKnockbackOrigin() == null) + { + trajectory = event.GetProjectile().getVelocity(); + trajectory.setY(0); + trajectory.multiply(0.37 * knockback / trajectory.length()); + trajectory.setY(0.06); + } //Apply double vel = 0.2 + trajectory.length() * 0.8; From 405f67f8b2fd3c24663f906215420ab7fb9d78ee Mon Sep 17 00:00:00 2001 From: cnr Date: Wed, 17 Aug 2016 16:36:56 -0400 Subject: [PATCH 15/21] Implement/activate Anticheat phase two - Remove anticheat guardians from Arcade - Uncomment/implement Anticheat phase two actions - Specifically: immediate ban on Kill Aura type A, VL 200. - Give moderators less-specific messages, and limit messages by severity --- .../src/mineplex/core/antihack/AntiHack.java | 286 ++++++++++-------- .../core/antihack/CheckThresholds.java | 56 ++++ .../core/antihack/actions/AntiHackAction.java | 8 +- .../core/antihack/banwave/BanWaveManager.java | 5 - .../src/nautilus/game/arcade/Arcade.java | 7 - .../nautilus/game/arcade/ArcadeManager.java | 35 --- 6 files changed, 221 insertions(+), 176 deletions(-) create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/antihack/CheckThresholds.java diff --git a/Plugins/Mineplex.Core/src/mineplex/core/antihack/AntiHack.java b/Plugins/Mineplex.Core/src/mineplex/core/antihack/AntiHack.java index 1f75df4e8..a3afe9508 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/antihack/AntiHack.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/antihack/AntiHack.java @@ -2,14 +2,15 @@ package mineplex.core.antihack; import com.google.common.cache.Cache; import com.google.common.cache.CacheBuilder; +import com.google.common.collect.ImmutableMap; import com.google.common.util.concurrent.AtomicDouble; import com.mineplex.anticheat.api.GameEndEvent; import com.mineplex.anticheat.api.GameStartEvent; import com.mineplex.anticheat.api.MineplexLink; import com.mineplex.anticheat.api.PlayerViolationEvent; -import mineplex.core.PlayerSelector; import mineplex.core.Managers; import mineplex.core.MiniPlugin; +import mineplex.core.PlayerSelector; import mineplex.core.ReflectivelyCreateMiniPlugin; import mineplex.core.account.CoreClient; import mineplex.core.account.CoreClientManager; @@ -21,15 +22,7 @@ import mineplex.core.antihack.types.Reach; import mineplex.core.antihack.types.Speed; import mineplex.core.command.CommandBase; import mineplex.core.common.Rank; -import mineplex.core.common.util.C; -import mineplex.core.common.util.F; -import mineplex.core.common.util.UtilEnt; -import mineplex.core.common.util.UtilInv; -import mineplex.core.common.util.UtilMath; -import mineplex.core.common.util.UtilParticle; -import mineplex.core.common.util.UtilPlayer; -import mineplex.core.common.util.UtilServer; -import mineplex.core.common.util.UtilTime; +import mineplex.core.common.util.*; import mineplex.core.disguise.DisguiseManager; import mineplex.core.disguise.disguises.DisguiseBase; import mineplex.core.portal.Portal; @@ -41,44 +34,23 @@ import mineplex.core.punish.Punishment; import mineplex.core.updater.UpdateType; import mineplex.core.updater.event.UpdateEvent; import mineplex.serverdata.commands.ServerCommandManager; -import net.minecraft.server.v1_8_R3.ChatClickable; -import net.minecraft.server.v1_8_R3.ChatComponentText; -import net.minecraft.server.v1_8_R3.ChatHoverable; -import net.minecraft.server.v1_8_R3.ChatModifier; -import net.minecraft.server.v1_8_R3.EnumChatFormat; -import net.minecraft.server.v1_8_R3.IChatBaseComponent; -import net.minecraft.server.v1_8_R3.MathHelper; -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.GameMode; -import org.bukkit.Location; +import net.minecraft.server.v1_8_R3.*; +import org.bukkit.*; import org.bukkit.Material; import org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer; import org.bukkit.entity.EntityType; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; -import org.bukkit.event.player.PlayerCommandPreprocessEvent; -import org.bukkit.event.player.PlayerInteractEvent; -import org.bukkit.event.player.PlayerMoveEvent; -import org.bukkit.event.player.PlayerQuitEvent; -import org.bukkit.event.player.PlayerTeleportEvent; -import org.bukkit.event.player.PlayerToggleFlightEvent; -import org.bukkit.event.player.PlayerVelocityEvent; +import org.bukkit.event.player.*; import org.bukkit.event.server.ServerListPingEvent; import org.bukkit.plugin.ServicePriority; import org.bukkit.potion.PotionEffect; import org.bukkit.potion.PotionEffectType; import org.bukkit.scheduler.BukkitTask; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Iterator; -import java.util.List; +import java.util.*; import java.util.Map.Entry; -import java.util.Set; -import java.util.UUID; import java.util.concurrent.ThreadLocalRandom; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; @@ -89,7 +61,14 @@ import java.util.function.Predicate; @ReflectivelyCreateMiniPlugin public class AntiHack extends MiniPlugin { - public static final boolean IS_PHASE_TWO = false; + private static final Map _checks = ImmutableMap.of( + "Killaura (Type A)", new CheckThresholds("Kill Aura", 25, 50), + "Killaura (Type B)", new CheckThresholds("High CPS", 0, Integer.MAX_VALUE), + "Killaura (Type C)", new CheckThresholds("Reach", Integer.MAX_VALUE, Integer.MAX_VALUE), + "Killaura (Type D)", new CheckThresholds("Kill Aura", 1000, 1500), + "BadPackets", new CheckThresholds("Regen", 1000, 2000) + ); + public static final String NAME = "Chiss"; public static final String USER_HAS_BEEN_BANNED = F.main("GWEN", "%s has been banned. I am always watching"); public static final String USER_HAS_BEEN_BANNED_BANWAVE = USER_HAS_BEEN_BANNED; @@ -200,74 +179,17 @@ public class AntiHack extends MiniPlugin ServerCommandManager.getInstance().registerCommandType(MajorViolationCommand.class, violation -> { - if (!violation.getOriginatingServer().equals(this._thisServer)) - { - IChatBaseComponent component = new ChatComponentText("") - .addSibling( - new ChatComponentText("A") - .setChatModifier( - new ChatModifier() - .setColor(EnumChatFormat.AQUA) - .setRandom(true) - ) - ) - .addSibling( - new ChatComponentText(" GWEN > ") - .setChatModifier( - new ChatModifier() - .setColor(EnumChatFormat.RED) - .setBold(true) - ) - ) - .addSibling( - new ChatComponentText(violation.getPlayerName()) - .setChatModifier( - new ChatModifier() - .setColor(EnumChatFormat.GOLD) - ) - ) - .addSibling( - new ChatComponentText(" failed " + violation.getHackType() + " VL" + violation.getViolations() + " in server ") - .setChatModifier( - new ChatModifier() - .setColor(EnumChatFormat.YELLOW) - ) - ) - .addSibling( - new ChatComponentText( - violation.getOriginatingServer() - ) - .setChatModifier( - new ChatModifier() - .setColor(EnumChatFormat.YELLOW) - .setChatClickable( - new ChatClickable( - ChatClickable.EnumClickAction.RUN_COMMAND, - "/server " + violation.getOriginatingServer() - ) - ) - .setChatHoverable( - new ChatHoverable( - ChatHoverable.EnumHoverAction.SHOW_TEXT, - new ChatComponentText("Teleport to " + violation.getOriginatingServer()) - ) - ) - ) - ) - .addSibling( - new ChatComponentText(": " + violation.getMessage() + ". Please investigate") - .setChatModifier( - new ChatModifier() - .setColor(EnumChatFormat.YELLOW) - ) - ); + IChatBaseComponent component = getMinimalMessage(violation); - for (Player player : Bukkit.getOnlinePlayers()) + for (Player player : Bukkit.getOnlinePlayers()) + { + if (player.getName().equals("Spoobncoobr")) { - if (Managers.get(PreferencesManager.class).Get(player).ShowMacReports && _clientManager.Get(player).GetRank().has(Rank.HELPER)) - { - ((CraftPlayer) player).getHandle().sendMessage(component); - } + ((CraftPlayer) player).getHandle().sendMessage(getDetailedMessage(violation)); + + } else if (Managers.get(PreferencesManager.class).Get(player).ShowMacReports && _clientManager.Get(player).GetRank().has(Rank.HELPER)) + { + ((CraftPlayer) player).getHandle().sendMessage(component); } } }); @@ -355,6 +277,144 @@ public class AntiHack extends MiniPlugin require(BanWaveManager.class); } + private IChatBaseComponent getDetailedMessage(MajorViolationCommand violation) + { + return new ChatComponentText("") + .addSibling( + new ChatComponentText("A") + .setChatModifier( + new ChatModifier() + .setColor(EnumChatFormat.AQUA) + .setRandom(true) + ) + ) + .addSibling( + new ChatComponentText(" GWEN > ") + .setChatModifier( + new ChatModifier() + .setColor(EnumChatFormat.RED) + .setBold(true) + ) + ) + .addSibling( + new ChatComponentText(violation.getPlayerName()) + .setChatModifier( + new ChatModifier() + .setColor(EnumChatFormat.GOLD) + ) + ) + .addSibling( + new ChatComponentText(" failed " + violation.getHackType() + " VL" + violation.getViolations() + " in server ") + .setChatModifier( + new ChatModifier() + .setColor(EnumChatFormat.YELLOW) + ) + ) + .addSibling( + new ChatComponentText( + violation.getOriginatingServer() + ) + .setChatModifier( + new ChatModifier() + .setColor(EnumChatFormat.YELLOW) + .setChatClickable( + new ChatClickable( + ChatClickable.EnumClickAction.RUN_COMMAND, + "/server " + violation.getOriginatingServer() + ) + ) + .setChatHoverable( + new ChatHoverable( + ChatHoverable.EnumHoverAction.SHOW_TEXT, + new ChatComponentText("Teleport to " + violation.getOriginatingServer()) + ) + ) + ) + ) + .addSibling( + new ChatComponentText(": " + violation.getMessage() + ". Please investigate!") + .setChatModifier( + new ChatModifier() + .setColor(EnumChatFormat.YELLOW) + ) + ); + } + + private IChatBaseComponent getMinimalMessage(MajorViolationCommand violation) + { + IChatBaseComponent component = new ChatComponentText("") + .addSibling( + new ChatComponentText("A") + .setChatModifier( + new ChatModifier() + .setColor(EnumChatFormat.AQUA) + .setRandom(true) + ) + ) + .addSibling( + new ChatComponentText(" GWEN > ") + .setChatModifier( + new ChatModifier() + .setColor(EnumChatFormat.RED) + .setBold(true) + ) + ) + .addSibling( + new ChatComponentText(violation.getPlayerName()) + .setChatModifier( + new ChatModifier() + .setColor(EnumChatFormat.GOLD) + ) + ) + .addSibling( + new ChatComponentText(" suspected of ") + .setChatModifier( + new ChatModifier() + .setColor(EnumChatFormat.YELLOW) + ) + ) + .addSibling(_checks.get(violation.getHackType()).format(violation.getViolations())); + + if (!violation.getOriginatingServer().equals(this._thisServer)) + { + component + .addSibling( + new ChatComponentText(" in ") + .setChatModifier( + new ChatModifier() + .setColor(EnumChatFormat.YELLOW) + ) + ) + .addSibling( + new ChatComponentText(violation.getOriginatingServer()) + .setChatModifier( + new ChatModifier() + .setColor(EnumChatFormat.AQUA) + .setChatClickable( + new ChatClickable( + ChatClickable.EnumClickAction.RUN_COMMAND, + "/server " + violation.getOriginatingServer() + ) + ) + .setChatHoverable( + new ChatHoverable( + ChatHoverable.EnumHoverAction.SHOW_TEXT, + new ChatComponentText("Teleport to " + violation.getOriginatingServer()) + ) + ) + ) + ); + } + + return component.addSibling( + new ChatComponentText(". Please investigate!") + .setChatModifier( + new ChatModifier() + .setColor(EnumChatFormat.YELLOW) + ) + ); + } + public void registerFilter(Predicate filter) { if (filter == null) @@ -382,9 +442,6 @@ public class AntiHack extends MiniPlugin public void runBanAnimation(Player player, Runnable after) { - if (!IS_PHASE_TWO) - return; - if (_pendingBan.add(player)) { float oldWalkSpeed = player.getWalkSpeed(); @@ -576,10 +633,7 @@ public class AntiHack extends MiniPlugin @EventHandler public void on(PlayerViolationEvent event) { - if (IS_PHASE_TWO) - { - AntiHackAction.getAction(event.getCheckClass()).handle(event); - } + AntiHackAction.getAction(event.getCheckClass()).handle(event); } public void announceBan(Player player) @@ -918,21 +972,9 @@ public class AntiHack extends MiniPlugin @EventHandler public void onHack(PlayerViolationEvent event) { - for (Player player : Bukkit.getOnlinePlayers()) - { - CoreClient client = _clientManager.Get(player); - if (event.shouldTellStaff()) - { - if (client.GetRank().has(Rank.HELPER)) - { - UtilPlayer.message(player, C.cAqua + C.Scramble + "A" + ChatColor.RESET + C.cRed + C.Bold + " GWEN > " + ChatColor.RESET + C.cGold + event.getPlayer().getName() + C.cYellow + " failed " + event.getHackType() + " VL" + event.getViolations() + ": " + event.getMessage() + ". Please investigate"); - } - } - } - if (event.shouldTellStaff()) { - String key = event.getPlayer().getName() + "." + event.getHackType(); + String key = event.getPlayer().getName() + "." + event.getHackType() + "." + _checks.get(event.getHackType()).getSeverity(event.getViolations()).toString(); Integer pastVl = this._cooldown.getIfPresent(key); if (pastVl != null) { diff --git a/Plugins/Mineplex.Core/src/mineplex/core/antihack/CheckThresholds.java b/Plugins/Mineplex.Core/src/mineplex/core/antihack/CheckThresholds.java new file mode 100644 index 000000000..4c6b34b94 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/antihack/CheckThresholds.java @@ -0,0 +1,56 @@ +package mineplex.core.antihack; + +import net.minecraft.server.v1_8_R3.ChatComponentText; +import net.minecraft.server.v1_8_R3.ChatModifier; +import net.minecraft.server.v1_8_R3.EnumChatFormat; +import net.minecraft.server.v1_8_R3.IChatBaseComponent; + +public class CheckThresholds +{ + private final String _friendlyName; + private final int _med; + private final int _high; + + public CheckThresholds(String friendlyName, int med, int high) + { + _friendlyName = friendlyName; + _med = med; + _high = high; + } + + public IChatBaseComponent format(int violationLevel) + { + EnumChatFormat color = getSeverity(violationLevel)._color; + return new ChatComponentText(_friendlyName).setChatModifier(new ChatModifier().setColor(color)); + } + + public Severity getSeverity(int violationLevel) + { + if (violationLevel >= _high) + { + return Severity.HIGH; + + } else if (violationLevel >= _med) + { + return Severity.MEDIUM; + + } else + { + return Severity.LOW; + } + } + + public enum Severity + { + LOW(EnumChatFormat.GREEN), + MEDIUM(EnumChatFormat.GOLD), + HIGH(EnumChatFormat.RED), + ; + private final EnumChatFormat _color; + + Severity(EnumChatFormat color) + { + _color = color; + } + } +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/antihack/actions/AntiHackAction.java b/Plugins/Mineplex.Core/src/mineplex/core/antihack/actions/AntiHackAction.java index 0d09b4e80..689f57f7b 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/antihack/actions/AntiHackAction.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/antihack/actions/AntiHackAction.java @@ -2,9 +2,6 @@ package mineplex.core.antihack.actions; import com.mineplex.anticheat.api.PlayerViolationEvent; import com.mineplex.anticheat.checks.combat.KillauraTypeA; -import com.mineplex.anticheat.checks.combat.KillauraTypeB; -import com.mineplex.anticheat.checks.combat.KillauraTypeD; -import com.mineplex.anticheat.checks.player.BadPackets; import mineplex.core.common.util.UtilServer; import org.bukkit.event.Listener; @@ -22,10 +19,7 @@ public abstract class AntiHackAction implements Listener static { - ACTIONS.put(KillauraTypeA.class, new ImmediateBanAction(60)); - ACTIONS.put(KillauraTypeB.class, new BanwaveAction(NEXT_BAN_WAVE, 50)); - ACTIONS.put(KillauraTypeD.class, new BanwaveAction(NEXT_BAN_WAVE, 550)); - ACTIONS.put(BadPackets.class, new MixedAction(new BanwaveAction(NEXT_BAN_WAVE, 80), new ImmediateBanAction(120))); + ACTIONS.put(KillauraTypeA.class, new ImmediateBanAction(200)); } private int _vl; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/antihack/banwave/BanWaveManager.java b/Plugins/Mineplex.Core/src/mineplex/core/antihack/banwave/BanWaveManager.java index c39c476a7..8b39d9ac0 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/antihack/banwave/BanWaveManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/antihack/banwave/BanWaveManager.java @@ -24,11 +24,6 @@ public class BanWaveManager extends MiniPlugin @EventHandler public void onJoin(PlayerJoinEvent event) { - if (!AntiHack.IS_PHASE_TWO) - { - return; - } - runAsync(() -> { CoreClient client = require(CoreClientManager.class).Get(event.getPlayer()); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/Arcade.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/Arcade.java index cf01b4520..303ebc9f7 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/Arcade.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/Arcade.java @@ -4,11 +4,9 @@ import java.io.File; import java.util.HashMap; import mineplex.core.Managers; -import mineplex.core.antihack.AntiHackGuardian; import mineplex.core.boosters.BoosterManager; import mineplex.core.thank.ThankManager; import org.bukkit.Bukkit; -import org.bukkit.Location; import org.bukkit.entity.Player; import org.bukkit.plugin.java.JavaPlugin; @@ -144,11 +142,6 @@ public class Arcade extends JavaPlugin AntiHack antiHack = require(AntiHack.class); antiHack.setKick(false); - for (int i = 0; i < 10; i++) - { - antiHack.registerGuardian(new AntiHackGuardian(new Location(Bukkit.getWorld("world"), 0, 125, 0), 23, -23, 130, 120, 23, -23)); - } - IgnoreManager ignoreManager = new IgnoreManager(this, _clientManager, preferenceManager, portal); StatsManager statsManager = new StatsManager(this, _clientManager); EloManager eloManager = new EloManager(this, _clientManager); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/ArcadeManager.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/ArcadeManager.java index e9782bf7e..7bb2599be 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/ArcadeManager.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/ArcadeManager.java @@ -5,8 +5,6 @@ import mineplex.core.MiniPlugin; import mineplex.core.account.CoreClient; import mineplex.core.account.CoreClientManager; import mineplex.core.achievement.AchievementManager; -import mineplex.core.antihack.AntiHack; -import mineplex.core.antihack.AntiHackGuardian; import mineplex.core.blockrestore.BlockRestore; import mineplex.core.blood.Blood; import mineplex.core.bonuses.BonusManager; @@ -99,8 +97,6 @@ import nautilus.game.arcade.shop.ArcadeShop; import net.minecraft.server.v1_8_R3.EntityLiving; import org.bukkit.*; import org.bukkit.GameMode; -import org.bukkit.Material; -import org.bukkit.OfflinePlayer; import org.bukkit.craftbukkit.v1_8_R3.entity.CraftEntity; import org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer; import org.bukkit.entity.Entity; @@ -1948,37 +1944,6 @@ public class ArcadeManager extends MiniPlugin implements IRelation } } - @EventHandler - public void spawnGuardians(GameStateChangeEvent event) - { - if (event.GetState() == GameState.Live) - { - require(AntiHack.class).clearGuardians(); - - Location specLocation = GetGame().GetSpectatorLocation().add(0, 5, 0); - int maxX = (int) (specLocation.getX() + 50); - int minX = (int) (specLocation.getX() - 50); - int maxY = (int) (specLocation.getY() + 5); - int minY = (int) (specLocation.getY() - 5); - int maxZ = (int) (specLocation.getZ() + 50); - int minZ = (int) (specLocation.getZ() - 50); - - for (int i = 0; i < 10; i++) - { - require(AntiHack.class).registerGuardian(new AntiHackGuardian(specLocation, maxX, minX, maxY, minY, maxZ, minZ)); - } - } - else if (event.GetState() == GameState.Recruit) - { - require(AntiHack.class).clearGuardians(); - - for (int i = 0; i < 10; i++) - { - require(AntiHack.class).registerGuardian(new AntiHackGuardian(new Location(Bukkit.getWorld("world"), 0, 125, 0), 23, -23, 130, 120, 23, -23)); - } - } - } - public ProgressingKitManager getProgressionKitManager() { return _progressionKitManager; From 999237fe69f386f2b454836dff4e43136f974a38 Mon Sep 17 00:00:00 2001 From: cnr Date: Wed, 17 Aug 2016 23:38:08 -0400 Subject: [PATCH 16/21] Accurately report game TPS --- .../src/mineplex/core/monitor/LagMeter.java | 12 ------------ .../nautilus/game/arcade/game/games/uhc/UHC.java | 13 ------------- 2 files changed, 25 deletions(-) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/monitor/LagMeter.java b/Plugins/Mineplex.Core/src/mineplex/core/monitor/LagMeter.java index b4846dfc8..802b3d643 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/monitor/LagMeter.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/monitor/LagMeter.java @@ -37,8 +37,6 @@ public class LagMeter extends MiniPlugin private boolean _timingsPasted; private long _timingsStarted; - private boolean _fakeTps = false; - private HashSet _monitoring = new HashSet(); public LagMeter(JavaPlugin plugin, CoreClientManager clientManager) @@ -122,10 +120,6 @@ public class LagMeter extends MiniPlugin public double getTicksPerSecond() { - if (_fakeTps) - { - return 20.0; - } return _ticksPerSecond; } @@ -170,10 +164,4 @@ public class LagMeter extends MiniPlugin player.sendMessage(F.main(getName(), ChatColor.GRAY + "Free-------" + ChatColor.YELLOW + (Runtime.getRuntime().freeMemory() / 1048576) + "MB")); player.sendMessage(F.main(getName(), ChatColor.GRAY + "Max--------" + ChatColor.YELLOW + (Runtime.getRuntime().maxMemory() / 1048576)) + "MB"); } - - // I'm so sorry. Blame ServerMonitor for being so strict - public void setFakeTps(boolean fakeTps) - { - this._fakeTps = fakeTps; - } } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/uhc/UHC.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/uhc/UHC.java index 3ddb02053..18d67e8ca 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/uhc/UHC.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/uhc/UHC.java @@ -715,19 +715,6 @@ public class UHC extends TeamGame implements NCPHook } } - @EventHandler - public void toggleFakeTps(GameStateChangeEvent event) - { - if (event.GetState() != GameState.Dead) - { - Managers.get(LagMeter.class).setFakeTps(true); - } - else - { - Managers.get(LagMeter.class).setFakeTps(false); - } - } - @EventHandler public void generateWorld(GameStateChangeEvent event) { From 78fe41a8af7c6b8358d888e312eb364c93503e40 Mon Sep 17 00:00:00 2001 From: cnr Date: Thu, 18 Aug 2016 01:50:12 -0500 Subject: [PATCH 17/21] Update Anticheat ban message and duration --- .../src/mineplex/core/antihack/AntiHack.java | 12 +++++------- .../src/mineplex/core/antihack/CheckThresholds.java | 5 +++++ .../core/antihack/actions/ImmediateBanAction.java | 12 +++++++----- 3 files changed, 17 insertions(+), 12 deletions(-) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/antihack/AntiHack.java b/Plugins/Mineplex.Core/src/mineplex/core/antihack/AntiHack.java index a3afe9508..d5351e02f 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/antihack/AntiHack.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/antihack/AntiHack.java @@ -61,7 +61,7 @@ import java.util.function.Predicate; @ReflectivelyCreateMiniPlugin public class AntiHack extends MiniPlugin { - private static final Map _checks = ImmutableMap.of( + public static final Map CHECKS = ImmutableMap.of( "Killaura (Type A)", new CheckThresholds("Kill Aura", 25, 50), "Killaura (Type B)", new CheckThresholds("High CPS", 0, Integer.MAX_VALUE), "Killaura (Type C)", new CheckThresholds("Reach", Integer.MAX_VALUE, Integer.MAX_VALUE), @@ -373,7 +373,7 @@ public class AntiHack extends MiniPlugin .setColor(EnumChatFormat.YELLOW) ) ) - .addSibling(_checks.get(violation.getHackType()).format(violation.getViolations())); + .addSibling(CHECKS.get(violation.getHackType()).format(violation.getViolations())); if (!violation.getOriginatingServer().equals(this._thisServer)) { @@ -552,19 +552,17 @@ public class AntiHack extends MiniPlugin { runSync(() -> { - int totalPunishments = getPunishments(player); - int daysBanned = getDaysBanned(player); CoreClient coreClient = _clientManager.Get(player); if (coreClient.GetRank().has(Rank.TWITCH)) { - require(Punish.class).AddPunishment(coreClient.getName(), Category.Hacking, message, AntiHack.NAME, totalPunishments + 1, true, daysBanned == -1 ? -1 : TimeUnit.DAYS.toHours(daysBanned), true); + require(Punish.class).AddPunishment(coreClient.getName(), Category.Hacking, message, AntiHack.NAME, 3, true, -1, true); } else { runBanAnimation(player, () -> { - require(Punish.class).AddPunishment(coreClient.getName(), Category.Hacking, message, AntiHack.NAME, totalPunishments + 1, true, daysBanned == -1 ? -1 : TimeUnit.DAYS.toHours(daysBanned), true); + require(Punish.class).AddPunishment(coreClient.getName(), Category.Hacking, message, AntiHack.NAME, 3, true, -1, true); announceBan(player); }); } @@ -974,7 +972,7 @@ public class AntiHack extends MiniPlugin { if (event.shouldTellStaff()) { - String key = event.getPlayer().getName() + "." + event.getHackType() + "." + _checks.get(event.getHackType()).getSeverity(event.getViolations()).toString(); + String key = event.getPlayer().getName() + "." + event.getHackType() + "." + CHECKS.get(event.getHackType()).getSeverity(event.getViolations()).toString(); Integer pastVl = this._cooldown.getIfPresent(key); if (pastVl != null) { diff --git a/Plugins/Mineplex.Core/src/mineplex/core/antihack/CheckThresholds.java b/Plugins/Mineplex.Core/src/mineplex/core/antihack/CheckThresholds.java index 4c6b34b94..b00207db6 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/antihack/CheckThresholds.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/antihack/CheckThresholds.java @@ -18,6 +18,11 @@ public class CheckThresholds _high = high; } + public String getFriendlyName() + { + return _friendlyName; + } + public IChatBaseComponent format(int violationLevel) { EnumChatFormat color = getSeverity(violationLevel)._color; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/antihack/actions/ImmediateBanAction.java b/Plugins/Mineplex.Core/src/mineplex/core/antihack/actions/ImmediateBanAction.java index 70f3a7609..668d82389 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/antihack/actions/ImmediateBanAction.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/antihack/actions/ImmediateBanAction.java @@ -3,10 +3,7 @@ package mineplex.core.antihack.actions; import com.mineplex.anticheat.api.PlayerViolationEvent; import mineplex.core.Managers; import mineplex.core.antihack.AntiHack; -import mineplex.core.punish.Category; -import mineplex.core.punish.Punish; - -import java.util.concurrent.TimeUnit; +import mineplex.core.common.util.UtilServer; class ImmediateBanAction extends AntiHackAction { @@ -20,7 +17,12 @@ class ImmediateBanAction extends AntiHackAction { if (event.getViolations() >= this.getMinVl()) { - Managers.get(AntiHack.class).doBan(event.getPlayer(), event.getMessage()); + String server = UtilServer.getServerName(); + if (server.contains("-")) + { + server = server.substring(0, server.indexOf('-')); + } + Managers.get(AntiHack.class).doBan(event.getPlayer(), "[GWEN] Hacking - " + AntiHack.CHECKS.get(event.getHackType()).getFriendlyName() + " [" + server + "]"); } } } From 08e1b765f734261b2c7e5e2993c950c8182d2608 Mon Sep 17 00:00:00 2001 From: cnr Date: Thu, 18 Aug 2016 01:54:25 -0500 Subject: [PATCH 18/21] Send local Anticheat messages regardless of preference --- Plugins/Mineplex.Core/src/mineplex/core/antihack/AntiHack.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/antihack/AntiHack.java b/Plugins/Mineplex.Core/src/mineplex/core/antihack/AntiHack.java index d5351e02f..44430ffdb 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/antihack/AntiHack.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/antihack/AntiHack.java @@ -187,7 +187,7 @@ public class AntiHack extends MiniPlugin { ((CraftPlayer) player).getHandle().sendMessage(getDetailedMessage(violation)); - } else if (Managers.get(PreferencesManager.class).Get(player).ShowMacReports && _clientManager.Get(player).GetRank().has(Rank.HELPER)) + } else if (_clientManager.Get(player).GetRank().has(Rank.HELPER) && (violation.getOriginatingServer().equals(_thisServer) || Managers.get(PreferencesManager.class).Get(player).ShowMacReports)) { ((CraftPlayer) player).getHandle().sendMessage(component); } From a79fa9cd465c3d1de8497b4ed3e97c477843fac7 Mon Sep 17 00:00:00 2001 From: cnr Date: Thu, 18 Aug 2016 01:55:05 -0500 Subject: [PATCH 19/21] Update GWEN preference name to reflect its purpose --- .../core/preferences/ui/ExclusivePreferencesPage.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/preferences/ui/ExclusivePreferencesPage.java b/Plugins/Mineplex.Core/src/mineplex/core/preferences/ui/ExclusivePreferencesPage.java index b0b052ffa..c376b2461 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/preferences/ui/ExclusivePreferencesPage.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/preferences/ui/ExclusivePreferencesPage.java @@ -126,7 +126,7 @@ public class ExclusivePreferencesPage extends ShopPageBase Date: Thu, 18 Aug 2016 20:44:01 -0500 Subject: [PATCH 20/21] Disable server spawn radius in Clans Defer to the spawn claim area, instead --- Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/Clans.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/Clans.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/Clans.java index dee2ca0e9..0942aa3b5 100644 --- a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/Clans.java +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/Clans.java @@ -77,6 +77,8 @@ public class Clans extends JavaPlugin @Override public void onEnable() { + Bukkit.setSpawnRadius(0); + // Configs getConfig().addDefault(WEB_CONFIG, "http://accounts.mineplex.com/"); getConfig().set(WEB_CONFIG, getConfig().getString(WEB_CONFIG)); From 5365f1269f9b6ea145a5923cffff6a8124b14c69 Mon Sep 17 00:00:00 2001 From: cnr Date: Thu, 18 Aug 2016 20:46:24 -0500 Subject: [PATCH 21/21] Delay Anticheat enable in Clans This ensure the anticheat has registered GameStartEvent before we fire it --- Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/Clans.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/Clans.java b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/Clans.java index 0942aa3b5..ed76322b1 100644 --- a/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/Clans.java +++ b/Plugins/Mineplex.Game.Clans/src/mineplex/game/clans/Clans.java @@ -132,7 +132,7 @@ public class Clans extends JavaPlugin AntiHack antiHack = require(AntiHack.class); antiHack.setKick(false); - antiHack.enableNewAnticheat(); + Bukkit.getScheduler().runTask(this, antiHack::enableNewAnticheat); { // West Shop