From 8d6eb135047b127fa623e9d2c183313fcc9fbdf7 Mon Sep 17 00:00:00 2001 From: Sam Date: Thu, 17 Nov 2016 01:10:16 +0000 Subject: [PATCH] Add "%player% is your teammate" in 2 player team games (#273) * Add "%player% is your teammate" in 2 player team games * Add to Team Skyfall --- .../src/nautilus/game/arcade/game/Game.java | 3 + .../game/games/skyfall/TeamSkyfall.java | 1 + .../game/games/skywars/TeamSkywars.java | 1 + .../game/games/smash/TeamSuperSmash.java | 58 +------------------ .../survivalgames/TeamSurvivalGames.java | 1 + .../arcade/managers/GamePlayerManager.java | 57 +++++++++++++++++- 6 files changed, 65 insertions(+), 56 deletions(-) diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/Game.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/Game.java index 153a260f0..430870814 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/Game.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/Game.java @@ -362,6 +362,9 @@ public abstract class Game implements Listener public boolean TeamMode = false; public boolean TeamPerSpawn = false; + + // Used for "%player% is your teammate" + public boolean ShowTeammateMessage = false; public boolean ForceTeamSize = true; public int PlayersPerTeam = 2; diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/skyfall/TeamSkyfall.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/skyfall/TeamSkyfall.java index ef02c6deb..05fe70127 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/skyfall/TeamSkyfall.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/skyfall/TeamSkyfall.java @@ -40,6 +40,7 @@ public class TeamSkyfall extends Skyfall DontAllowOverfill = true; TeamMode = true; + ShowTeammateMessage = true; HideTeamSheep = true; diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/skywars/TeamSkywars.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/skywars/TeamSkywars.java index 74ed0a76a..ead56b27c 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/skywars/TeamSkywars.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/skywars/TeamSkywars.java @@ -67,6 +67,7 @@ public class TeamSkywars extends Skywars TeamMode = true; TeamPerSpawn = true; + ShowTeammateMessage = true; registerModule(new TeamModule()); } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/smash/TeamSuperSmash.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/smash/TeamSuperSmash.java index c6414d5fd..d142b1471 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/smash/TeamSuperSmash.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/smash/TeamSuperSmash.java @@ -6,18 +6,15 @@ import java.util.List; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.entity.EntityDamageEvent.DamageCause; -import org.bukkit.scheduler.BukkitRunnable; import mineplex.core.common.Pair; import mineplex.core.common.util.C; -import mineplex.core.common.util.UtilTextMiddle; import mineplex.core.updater.UpdateType; import mineplex.core.updater.event.UpdateEvent; import mineplex.minecraft.game.core.damage.CustomDamageEvent; import nautilus.game.arcade.ArcadeManager; import nautilus.game.arcade.GameType; -import nautilus.game.arcade.events.GameStateChangeEvent; import nautilus.game.arcade.game.GameTeam; import nautilus.game.arcade.game.modules.TeamModule; import nautilus.game.arcade.managers.chat.ChatStatData; @@ -40,12 +37,12 @@ public class TeamSuperSmash extends SuperSmash SpawnNearAllies = true; DamageTeamSelf = false; - TeamArmorHotbar = true; - DontAllowOverfill = true; TeamMode = true; - + TeamArmorHotbar = true; + ShowTeammateMessage = true; + registerModule(new TeamModule()); registerStatTrackers(new WinWithoutDyingStatTracker(this, "MLGPro"), new FreeKitWinStatTracker(this), new OneVThreeStatTracker(this), new KillFastStatTracker(this, 3, 10, "TripleKill"), @@ -99,55 +96,6 @@ public class TeamSuperSmash extends SuperSmash Scoreboard.draw(); } - - @Override - @EventHandler - public void gameStart(GameStateChangeEvent event) - { - if (event.GetState() != GameState.Prepare) - { - return; - } - - super.gameStart(event); - - new BukkitRunnable() - { - - @Override - public void run() - { - for (Player player : GetPlayers(true)) - { - GameTeam team = GetTeam(player); - Player bestTeamMember = null; - - if (team == null) - { - continue; - } - - for (Player teamMember : team.GetPlayers(true)) - { - if (player.equals(teamMember)) - { - continue; - } - - bestTeamMember = teamMember; - } - - if (bestTeamMember == null) - { - UtilTextMiddle.display(C.cRedB + "No one", "You don\'t have a teammate :(", 10, 50, 10, player); - return; - } - - UtilTextMiddle.display(null, team.GetColor() + bestTeamMember.getName() + " is your teammate", 10, 50, 10, player); - } - } - }.runTaskLater(Manager.getPlugin(), 40); - } @EventHandler public void onCustomDamage(CustomDamageEvent event) diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/survivalgames/TeamSurvivalGames.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/survivalgames/TeamSurvivalGames.java index f6c6b1820..229a38aef 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/survivalgames/TeamSurvivalGames.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/survivalgames/TeamSurvivalGames.java @@ -48,6 +48,7 @@ public class TeamSurvivalGames extends SurvivalGames DontAllowOverfill = true; TeamMode = true; + ShowTeammateMessage = true; registerModule(new TeamModule()); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GamePlayerManager.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GamePlayerManager.java index efa539be2..d75c0f38f 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GamePlayerManager.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GamePlayerManager.java @@ -6,6 +6,7 @@ import mineplex.core.common.util.F; import mineplex.core.common.util.UtilMath; import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilTabTitle; +import mineplex.core.common.util.UtilTextMiddle; import mineplex.core.common.util.UtilTime; import mineplex.core.party.PartyManager; import mineplex.core.recharge.Recharge; @@ -16,6 +17,7 @@ import mineplex.minecraft.game.core.condition.Condition.ConditionType; import mineplex.minecraft.game.core.damage.CustomDamageEvent; import nautilus.game.arcade.ArcadeManager; import nautilus.game.arcade.GameType; +import nautilus.game.arcade.events.GameStateChangeEvent; import nautilus.game.arcade.events.PlayerStateChangeEvent; import nautilus.game.arcade.game.Game; import nautilus.game.arcade.game.Game.GameState; @@ -44,10 +46,13 @@ import java.util.ArrayList; public class GamePlayerManager implements Listener { ArcadeManager Manager; + + private static final int TEAMMATE_MESSAGE_DELAY = 40; + private static final long PLAYER_VISIBILITY_REFRESH_RATE = 30000; private static final int VIEW_DISTANCE_BLOCK_VALUE = 8; private long _lastVisibilityRefresh = 0; - + public GamePlayerManager(ArcadeManager manager) { Manager = manager; @@ -418,4 +423,54 @@ public class GamePlayerManager implements Listener player.teleport(target); } } + + @EventHandler + public void sendTeammateDetails(GameStateChangeEvent event) + { + if (event.GetState() != GameState.Prepare) + { + return; + } + + Game game = Manager.GetGame(); + + if (!game.ShowTeammateMessage || game.GetTeamList().size() == 1) + { + return; + } + + Manager.runSyncLater(() -> { + + for (Player player : game.GetPlayers(true)) + { + GameTeam team = game.GetTeam(player); + Player bestTeamMember = null; + + if (team == null) + { + continue; + } + + for (Player teamMember : team.GetPlayers(true)) + { + if (player.equals(teamMember)) + { + continue; + } + + bestTeamMember = teamMember; + } + + if (bestTeamMember == null) + { + UtilTextMiddle.display(C.cRedB + "No one", "You don\'t have a teammate :(", 10, 50, 10, player); + return; + } + + UtilTextMiddle.display(null, team.GetColor() + bestTeamMember.getName() + " is your teammate", 10, 50, 10, player); + } + + }, TEAMMATE_MESSAGE_DELAY); + } + } \ No newline at end of file