From 0fd59e9fdb8b664a3aeb23c53626de584ae749b7 Mon Sep 17 00:00:00 2001 From: Mysticate Date: Sat, 25 Jul 2015 21:50:37 -0400 Subject: [PATCH 1/3] Added an achievement, removed team one, touched up another. Swag. --- .../core/achievement/Achievement.java | 26 ++++------ .../game/games/lobbers/BombLobbers.java | 7 ++- .../games/lobbers/trackers/Tracker6Kill.java | 1 - .../lobbers/trackers/TrackerBestTeam.java | 51 ------------------- .../lobbers/trackers/TrackerDirectHit.java | 34 +++++++++++++ .../lobbers/trackers/TrackerNoDamage.java | 32 ++++-------- .../lobbers/trackers/TrackerTNTThrown.java | 1 - 7 files changed, 55 insertions(+), 97 deletions(-) delete mode 100644 Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/lobbers/trackers/TrackerBestTeam.java create mode 100644 Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/lobbers/trackers/TrackerDirectHit.java diff --git a/Plugins/Mineplex.Core/src/mineplex/core/achievement/Achievement.java b/Plugins/Mineplex.Core/src/mineplex/core/achievement/Achievement.java index a058b7496..eba3a292a 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/achievement/Achievement.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/achievement/Achievement.java @@ -643,39 +643,31 @@ public enum Achievement new String[]{"Throw 2000 TNT"}, new int[]{2000}, AchievementCategory.BOMB_LOBBERS), - -// BOMB_LOBBERS_REKT_X3("Rekt x3", 800, -// new String[]{"Bomb Lobbers.3Kill"}, -// new String[]{"Kill 3 players with one explosion"}, -// new int[]{1}, -// AchievementCategory.BOMB_LOBBERS), - + BOMB_LOBBERS_ULTIMATE_KILLER("Ultimate Killer", 800, new String[]{"Bomb Lobbers.Killer"}, new String[]{"Kill 6 players in a single game"}, new int[]{1}, AchievementCategory.BOMB_LOBBERS), - BOMB_LOBBERS_EXPLOSION_PROOF("Jelly Skin", 1000, + BOMB_LOBBERS_EXPLOSION_PROOF("Jelly Skin", 1200, new String[]{"Bomb Lobbers.JellySkin"}, new String[]{"Win a game without taking any damage."}, new int[]{1}, AchievementCategory.BOMB_LOBBERS), - BOMB_LOBBERS_BEST_TEAM("The Best Team", 800, - new String[]{"Bomb Lobbers.BestTeam"}, - new String[]{"Win a game without losing a teammate"}, - new int[]{1}, - AchievementCategory.BOMB_LOBBERS), - BOMB_LOBBERS_BLAST_PROOF("Blast Proof", 800, new String[]{"Bomb Lobbers.BlastProof"}, new String[]{"Win 20 games using Armorer"}, new int[]{20}, - AchievementCategory.BOMB_LOBBERS) - + AchievementCategory.BOMB_LOBBERS), + + BOMB_LOBBERS_SNIPER("Sniper", 10000, + new String[]{"Bomb Lobbers.Direct Hit"}, + new String[]{"Get 50 direct hits"}, + new int[]{50}, + AchievementCategory.BOMB_LOBBERS) -// BOMB_LOBBERS_ ; private String _name; diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/lobbers/BombLobbers.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/lobbers/BombLobbers.java index 51190eed7..852611a4b 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/lobbers/BombLobbers.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/lobbers/BombLobbers.java @@ -33,12 +33,12 @@ import nautilus.game.arcade.game.TeamGame; import nautilus.game.arcade.game.games.lobbers.events.TNTPreExplodeEvent; import nautilus.game.arcade.game.games.lobbers.events.TNTThrowEvent; import nautilus.game.arcade.game.games.lobbers.kits.KitArmorer; -import nautilus.game.arcade.game.games.lobbers.kits.KitPitcher; import nautilus.game.arcade.game.games.lobbers.kits.KitJumper; +import nautilus.game.arcade.game.games.lobbers.kits.KitPitcher; import nautilus.game.arcade.game.games.lobbers.kits.KitWaller; import nautilus.game.arcade.game.games.lobbers.trackers.Tracker6Kill; -import nautilus.game.arcade.game.games.lobbers.trackers.TrackerBestTeam; import nautilus.game.arcade.game.games.lobbers.trackers.TrackerBlastProof; +import nautilus.game.arcade.game.games.lobbers.trackers.TrackerDirectHit; import nautilus.game.arcade.game.games.lobbers.trackers.TrackerNoDamage; import nautilus.game.arcade.game.games.lobbers.trackers.TrackerTNTThrown; import nautilus.game.arcade.kit.Kit; @@ -79,7 +79,6 @@ public class BombLobbers extends TeamGame implements IThrown new KitJumper(manager), new KitArmorer(manager), new KitPitcher(manager), -// new KitMortar(manager), << Spare time kit for Bobbeh new KitWaller(manager) }, new String[] { @@ -109,7 +108,7 @@ public class BombLobbers extends TeamGame implements IThrown HungerSet = 20; - registerStatTrackers(new Tracker6Kill(this), new TrackerBestTeam(this), new TrackerBlastProof(this), new TrackerNoDamage(this), new TrackerTNTThrown(this)); + registerStatTrackers(new Tracker6Kill(this), new TrackerBlastProof(this), new TrackerNoDamage(this), new TrackerTNTThrown(this), new TrackerDirectHit(this)); } public void addKill(Player player) diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/lobbers/trackers/Tracker6Kill.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/lobbers/trackers/Tracker6Kill.java index ee8bc27f5..571da0f45 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/lobbers/trackers/Tracker6Kill.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/lobbers/trackers/Tracker6Kill.java @@ -12,7 +12,6 @@ import org.bukkit.event.EventHandler; public class Tracker6Kill extends StatTracker { - public Tracker6Kill(Game game) { super(game); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/lobbers/trackers/TrackerBestTeam.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/lobbers/trackers/TrackerBestTeam.java deleted file mode 100644 index fb37cc3ae..000000000 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/lobbers/trackers/TrackerBestTeam.java +++ /dev/null @@ -1,51 +0,0 @@ -package nautilus.game.arcade.game.games.lobbers.trackers; - -import mineplex.core.common.util.NautHashMap; -import nautilus.game.arcade.events.GameStateChangeEvent; -import nautilus.game.arcade.game.Game; -import nautilus.game.arcade.game.Game.GameState; -import nautilus.game.arcade.game.GameTeam; -import nautilus.game.arcade.stats.StatTracker; - -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; - -public class TrackerBestTeam extends StatTracker -{ - private NautHashMap _teams = new NautHashMap(); - - public TrackerBestTeam(Game game) - { - super(game); - } - - @EventHandler - public void onGameStart(GameStateChangeEvent event) - { - if (event.GetState() != GameState.Prepare) - return; - - for (GameTeam team : getGame().GetTeamList()) - { - _teams.put(team, team.GetPlayers(true).size()); - } - } - - @EventHandler - public void onGameEnd(GameStateChangeEvent event) - { - if (event.GetState() != GameState.End) - return; - - for (GameTeam team : getGame().GetTeamList()) - { - if (_teams.get(team) == team.GetPlayers(true).size()) - { - for (Player player : team.GetPlayers(true)) - { - addStat(player, "BestTeam", 1, true, false); - } - } - } - } -} diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/lobbers/trackers/TrackerDirectHit.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/lobbers/trackers/TrackerDirectHit.java new file mode 100644 index 000000000..208a16526 --- /dev/null +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/lobbers/trackers/TrackerDirectHit.java @@ -0,0 +1,34 @@ +package nautilus.game.arcade.game.games.lobbers.trackers; + +import mineplex.minecraft.game.core.damage.CustomDamageEvent; +import nautilus.game.arcade.game.Game; +import nautilus.game.arcade.stats.StatTracker; + +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; + +public class TrackerDirectHit extends StatTracker +{ + public TrackerDirectHit(Game game) + { + super(game); + } + + @EventHandler + public void onKillDirectHit(CustomDamageEvent event) + { + if (!getGame().IsLive()) + return; + + if (event.GetDamagerPlayer(true) == null) + return; + + Player damager = event.GetDamagerPlayer(true); + + if (!getGame().IsAlive(damager)) + return; + + if (event.GetReason().toLowerCase().contains("direct hit")) + addStat(damager, "Direct Hit", 1, false, false); + } +} diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/lobbers/trackers/TrackerNoDamage.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/lobbers/trackers/TrackerNoDamage.java index 7ad9f8550..4fd51143e 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/lobbers/trackers/TrackerNoDamage.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/lobbers/trackers/TrackerNoDamage.java @@ -3,7 +3,6 @@ package nautilus.game.arcade.game.games.lobbers.trackers; import java.util.HashSet; import java.util.Set; -import mineplex.core.common.util.UtilPlayer; import mineplex.minecraft.game.core.damage.CustomDamageEvent; import nautilus.game.arcade.events.GameStateChangeEvent; import nautilus.game.arcade.game.Game; @@ -16,36 +15,25 @@ import org.bukkit.event.EventPriority; public class TrackerNoDamage extends StatTracker { - private Set _noDamage = new HashSet(); + private Set _damaged = new HashSet(); public TrackerNoDamage(Game game) { super(game); } - @EventHandler - public void onGameStart(GameStateChangeEvent event) - { - if (event.GetState() != GameState.Prepare) - return; - - for (Player player : getGame().GetPlayers(true)) - { - _noDamage.add(player.getName()); - } - } - @EventHandler public void onGameEnd(GameStateChangeEvent event) { if (event.GetState() != GameState.End) return; - for (String name : _noDamage) + if (event.GetGame().getWinners() == null) + return; + + for (Player player : event.GetGame().getWinners()) { - Player player = UtilPlayer.searchExact(name); - - if (player == null || !player.isOnline()) + if (_damaged.contains(player.getName())) continue; addStat(player, "JellySkin", 1, true, false); @@ -61,9 +49,7 @@ public class TrackerNoDamage extends StatTracker if (event.GetDamageePlayer() == null || !event.GetDamageePlayer().isOnline()) return; - if (_noDamage.contains(event.GetDamageePlayer().getName())) - { - _noDamage.remove(event.GetDamageePlayer().getName()); - } + if (!_damaged.contains(event.GetDamageePlayer().getName())) + _damaged.add(event.GetDamageePlayer().getName()); } -} +} \ No newline at end of file diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/lobbers/trackers/TrackerTNTThrown.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/lobbers/trackers/TrackerTNTThrown.java index 0aa2d93e6..e8d7993c3 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/lobbers/trackers/TrackerTNTThrown.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/lobbers/trackers/TrackerTNTThrown.java @@ -22,5 +22,4 @@ public class TrackerTNTThrown extends StatTracker addStat(event.getPlayer(), "Thrown", 1, false, false); } - } From 4ceb156e691e430f3ee15e1b46254d9ec12bdcc4 Mon Sep 17 00:00:00 2001 From: Mysticate Date: Sat, 25 Jul 2015 23:44:55 -0400 Subject: [PATCH 2/3] Various improvements. --- .../arcade/game/games/lobbers/BombLobbers.java | 16 +++++++++++++--- .../games/lobbers/trackers/TrackerDirectHit.java | 6 +++++- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/lobbers/BombLobbers.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/lobbers/BombLobbers.java index 852611a4b..df3d97f48 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/lobbers/BombLobbers.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/lobbers/BombLobbers.java @@ -108,6 +108,8 @@ public class BombLobbers extends TeamGame implements IThrown HungerSet = 20; + WorldTimeSet = -1; + registerStatTrackers(new Tracker6Kill(this), new TrackerBlastProof(this), new TrackerNoDamage(this), new TrackerTNTThrown(this), new TrackerDirectHit(this)); } @@ -294,6 +296,8 @@ public class BombLobbers extends TeamGame implements IThrown if (!IsLive()) return; + NautHashMap toAdd = new NautHashMap(); + Iterator> iterator = _tnt.entrySet().iterator(); while (iterator.hasNext()) { @@ -329,10 +333,16 @@ public class BombLobbers extends TeamGame implements IThrown tnt.getKey().remove(); iterator.remove(); - _tnt.put(newTNT, token); + toAdd.put(newTNT, token); } } } + + //Prevent concurrent modification thigns + for (Entry entry : toAdd.entrySet()) + { + _tnt.put(entry.getKey(), entry.getValue()); + } } @EventHandler @@ -442,13 +452,13 @@ public class BombLobbers extends TeamGame implements IThrown if (team.GetColor() == ChatColor.AQUA) { - for (int i = 0 ; i < 5 ; i++) + for (int i = 0 ; i < 2 ; i++) UtilParticle.PlayParticle(ParticleType.RED_DUST, newTarget.clone().add(0.0, 0.5, 0.0), -1, 1, 1, 1, 0, ViewDist.NORMAL, UtilServer.getPlayers()); } else { - for (int i = 0 ; i < 5 ; i++) + for (int i = 0 ; i < 2 ; i++) UtilParticle.PlayParticle(ParticleType.RED_DUST, newTarget.clone().add(0.0, 0.5, 0.0), 0, 0, 0, 0, 1, ViewDist.NORMAL, UtilServer.getPlayers()); } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/lobbers/trackers/TrackerDirectHit.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/lobbers/trackers/TrackerDirectHit.java index 208a16526..82bfe2120 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/lobbers/trackers/TrackerDirectHit.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/lobbers/trackers/TrackerDirectHit.java @@ -6,6 +6,7 @@ import nautilus.game.arcade.stats.StatTracker; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; public class TrackerDirectHit extends StatTracker { @@ -14,7 +15,7 @@ public class TrackerDirectHit extends StatTracker super(game); } - @EventHandler + @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onKillDirectHit(CustomDamageEvent event) { if (!getGame().IsLive()) @@ -28,6 +29,9 @@ public class TrackerDirectHit extends StatTracker if (!getGame().IsAlive(damager)) return; + if (event.GetReason() == null) + return; + if (event.GetReason().toLowerCase().contains("direct hit")) addStat(damager, "Direct Hit", 1, false, false); } From 0586e5fb77f5d6d757c393276fed51775ebe7dd8 Mon Sep 17 00:00:00 2001 From: Mysticate Date: Sun, 26 Jul 2015 00:27:09 -0400 Subject: [PATCH 3/3] Added an exception for a map to make it night. --- .../arcade/game/games/lobbers/BombLobbers.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/lobbers/BombLobbers.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/lobbers/BombLobbers.java index df3d97f48..837104e2d 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/lobbers/BombLobbers.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/lobbers/BombLobbers.java @@ -108,11 +108,23 @@ public class BombLobbers extends TeamGame implements IThrown HungerSet = 20; - WorldTimeSet = -1; + WorldTimeSet = 6000; registerStatTrackers(new Tracker6Kill(this), new TrackerBlastProof(this), new TrackerNoDamage(this), new TrackerTNTThrown(this), new TrackerDirectHit(this)); } + @EventHandler + public void setTime(GameStateChangeEvent event) + { + if (event.GetState() != GameState.Prepare) + return; + + if (WorldData.MapName.equalsIgnoreCase("Intergalactic")) + { + WorldTimeSet = 18000; + } + } + public void addKill(Player player) { _kills.put(player, _kills.containsKey(player) ? _kills.get(player) + 1 : 1);