From ec90e592972d702f25c84e8f6326acb195a8c3ab Mon Sep 17 00:00:00 2001 From: Daniel Saukel Date: Tue, 22 Mar 2016 22:43:39 +0100 Subject: [PATCH] Added lives support for game types --- .../dre2n/dungeonsxl/command/MainCommand.java | 2 +- .../dre2n/dungeonsxl/game/GameType.java | 25 ++++++++--- .../dungeonsxl/game/GameTypeDefault.java | 44 ++++++++++++------- .../dungeonsxl/listener/PlayerListener.java | 29 +++++++----- 4 files changed, 66 insertions(+), 34 deletions(-) diff --git a/src/main/java/io/github/dre2n/dungeonsxl/command/MainCommand.java b/src/main/java/io/github/dre2n/dungeonsxl/command/MainCommand.java index c01d3c22..5f374a81 100644 --- a/src/main/java/io/github/dre2n/dungeonsxl/command/MainCommand.java +++ b/src/main/java/io/github/dre2n/dungeonsxl/command/MainCommand.java @@ -68,7 +68,7 @@ public class MainCommand extends BRCommand { MessageUtil.sendCenteredMessage(sender, "&4" + D[2] + "&f" + X[2] + L[2]); MessageUtil.sendCenteredMessage(sender, "&4" + D[3] + "&f" + X[3] + L[3]); MessageUtil.sendCenteredMessage(sender, "&4" + D[4] + "&f" + X[4] + L[4]); - MessageUtil.sendCenteredMessage(sender, "&b&l####### " + messageConfig.getMessage(Messages.CMD_MAIN_WELCOME) + "&7 v" + plugin.getDescription().getVersion() + " &b&l#######"); + MessageUtil.sendCenteredMessage(sender, "&b&l###### " + messageConfig.getMessage(Messages.CMD_MAIN_WELCOME) + "&7 v" + plugin.getDescription().getVersion() + " &b&l######"); MessageUtil.sendCenteredMessage(sender, messageConfig.getMessage(Messages.CMD_MAIN_LOADED, String.valueOf(maps), String.valueOf(dungeons), String.valueOf(loaded), String.valueOf(players))); MessageUtil.sendCenteredMessage(sender, messageConfig.getMessage(Messages.CMD_MAIN_COMPATIBILITY, String.valueOf(internals), vault, mythicMobs)); MessageUtil.sendCenteredMessage(sender, messageConfig.getMessage(Messages.CMD_MAIN_HELP)); diff --git a/src/main/java/io/github/dre2n/dungeonsxl/game/GameType.java b/src/main/java/io/github/dre2n/dungeonsxl/game/GameType.java index 3ddb1897..f5f84333 100644 --- a/src/main/java/io/github/dre2n/dungeonsxl/game/GameType.java +++ b/src/main/java/io/github/dre2n/dungeonsxl/game/GameType.java @@ -74,40 +74,40 @@ public interface GameType { /** * @param mobWaves - * the mobWaves to set + * enable / disable mob waves */ public void setMobWaves(boolean mobWaves); /** - * @return the rewards + * @return if players get rewards after the dungeon */ public boolean hasRewards(); /** * @param rewards - * the rewards to set + * enable / disable rewards */ public void setRewards(boolean rewards); /** - * @return the showTime + * @return if players shall see how long they play */ public boolean getShowTime(); /** * @param showTime - * the showTime to set + * set if players shall see how long they play */ public void setShowTime(boolean showTime); /** - * @return the build + * @return if players can build */ public boolean canBuild(); /** * @param build - * the build to set + * enable / disable building */ public void setBuild(boolean build); @@ -122,4 +122,15 @@ public interface GameType { */ public void setGameMode(GameMode gameMode); + /** + * @return if players lose lives + */ + public boolean hasLives(); + + /** + * @param lives + * set if the gametype uses player lives + */ + public void setLives(boolean lives); + } diff --git a/src/main/java/io/github/dre2n/dungeonsxl/game/GameTypeDefault.java b/src/main/java/io/github/dre2n/dungeonsxl/game/GameTypeDefault.java index 226e20fd..a4b388a6 100644 --- a/src/main/java/io/github/dre2n/dungeonsxl/game/GameTypeDefault.java +++ b/src/main/java/io/github/dre2n/dungeonsxl/game/GameTypeDefault.java @@ -23,21 +23,21 @@ import org.bukkit.GameMode; */ public enum GameTypeDefault implements GameType { - ADVENTURE("Adventure", "Adventure", false, false, false, true, false, true, GameMode.ADVENTURE), - ADVENTURE_TIME_IS_RUNNING("Adventure - Time is Running", "Adventure TiR", false, false, false, true, true, true, GameMode.ADVENTURE), - APOCALYPSE_LAST_MAN_STANDING("Apocalypse", "Apocalypse LMS", true, true, true, true, false, false, GameMode.SURVIVAL), - APOCALYPSE_LIMITED_MOBS("Apocalypse - Limited Mobs", "Apc Limited", true, true, true, true, false, false, GameMode.SURVIVAL), - APOCALYPSE_TIME_IS_RUNNING("Apocalypse - Time is Running", "Apocalypse TiR", true, true, true, true, true, false, GameMode.SURVIVAL), - PVE_LAST_MAN_STANDING("Player versus Environment - Last Man Standing", "PvE LMS", false, false, true, true, false, false, GameMode.SURVIVAL), - PVE_LIMITED_MOBS("Player versus Environment - Limited Mobs", "PvE Limited", false, false, true, true, false, false, GameMode.SURVIVAL), - PVE_TIME_IS_RUNNING("Player versus Environment - Time is Running", "PvE TiR", false, false, true, true, true, false, GameMode.SURVIVAL), - PVP_FACTIONS_BATTLEFIELD("Player versus Player - Factions Battlefield", "FactionsPvP", true, false, false, false, false, false, GameMode.SURVIVAL), - PVP_LAST_MAN_STANDING("Player versus Player - Last Man Standing", "PvP LMS", true, false, false, false, false, false, GameMode.SURVIVAL), - QUEST("Quest", "Quest", false, false, false, true, false, false, GameMode.SURVIVAL), - QUEST_TIME_IS_RUNNING("Quest - Time is Running", "Quest TiR", false, false, false, true, true, false, GameMode.SURVIVAL), - TEST("Test", "Test", false, false, false, false, true, true, GameMode.SURVIVAL), - TUTORIAL("Tutorial", "Tutorial", false, false, false, true, false, false, GameMode.SURVIVAL), - DEFAULT("Default", "Default", false, false, false, true, false, false, GameMode.SURVIVAL); + ADVENTURE("Adventure", "Adventure", false, false, false, true, false, true, GameMode.ADVENTURE, true), + ADVENTURE_TIME_IS_RUNNING("Adventure - Time is Running", "Adventure TiR", false, false, false, true, true, true, GameMode.ADVENTURE, true), + APOCALYPSE_LAST_MAN_STANDING("Apocalypse", "Apocalypse LMS", true, true, true, true, false, false, GameMode.SURVIVAL, true), + APOCALYPSE_LIMITED_MOBS("Apocalypse - Limited Mobs", "Apc Limited", true, true, true, true, false, false, GameMode.SURVIVAL, true), + APOCALYPSE_TIME_IS_RUNNING("Apocalypse - Time is Running", "Apocalypse TiR", true, true, true, true, true, false, GameMode.SURVIVAL, true), + PVE_LAST_MAN_STANDING("Player versus Environment - Last Man Standing", "PvE LMS", false, false, true, true, false, false, GameMode.SURVIVAL, true), + PVE_LIMITED_MOBS("Player versus Environment - Limited Mobs", "PvE Limited", false, false, true, true, false, false, GameMode.SURVIVAL, true), + PVE_TIME_IS_RUNNING("Player versus Environment - Time is Running", "PvE TiR", false, false, true, true, true, false, GameMode.SURVIVAL, true), + PVP_FACTIONS_BATTLEFIELD("Player versus Player - Factions Battlefield", "FactionsPvP", true, false, false, false, false, false, GameMode.SURVIVAL, true), + PVP_LAST_MAN_STANDING("Player versus Player - Last Man Standing", "PvP LMS", true, false, false, false, false, false, GameMode.SURVIVAL, true), + QUEST("Quest", "Quest", false, false, false, true, false, false, GameMode.SURVIVAL, true), + QUEST_TIME_IS_RUNNING("Quest - Time is Running", "Quest TiR", false, false, false, true, true, false, GameMode.SURVIVAL, true), + TEST("Test", "Test", false, false, false, false, true, true, GameMode.SURVIVAL, false), + TUTORIAL("Tutorial", "Tutorial", false, false, false, true, false, false, GameMode.SURVIVAL, false), + DEFAULT("Default", "Default", false, false, false, true, false, false, GameMode.SURVIVAL, true); private String displayName; private String signName; @@ -48,8 +48,9 @@ public enum GameTypeDefault implements GameType { private boolean showTime;// TODO: Implementing private boolean build;// TODO: Testing private GameMode gameMode;// TODO: Testing + private boolean lives; - GameTypeDefault(String displayName, String signName, boolean playerVersusPlayer, boolean friendlyFire, boolean mobWaves, boolean rewards, boolean showTime, boolean build, GameMode gameMode) { + GameTypeDefault(String displayName, String signName, boolean playerVersusPlayer, boolean friendlyFire, boolean mobWaves, boolean rewards, boolean showTime, boolean build, GameMode gameMode, boolean lives) { this.displayName = displayName; this.signName = signName; this.playerVersusPlayer = playerVersusPlayer; @@ -59,6 +60,7 @@ public enum GameTypeDefault implements GameType { this.showTime = showTime; this.build = build; this.gameMode = gameMode; + this.lives = lives; } @Override @@ -151,4 +153,14 @@ public enum GameTypeDefault implements GameType { this.gameMode = gameMode; } + @Override + public boolean hasLives() { + return lives; + } + + @Override + public void setLives(boolean lives) { + this.lives = lives; + } + } diff --git a/src/main/java/io/github/dre2n/dungeonsxl/listener/PlayerListener.java b/src/main/java/io/github/dre2n/dungeonsxl/listener/PlayerListener.java index 4a979fbf..65e80100 100644 --- a/src/main/java/io/github/dre2n/dungeonsxl/listener/PlayerListener.java +++ b/src/main/java/io/github/dre2n/dungeonsxl/listener/PlayerListener.java @@ -94,6 +94,14 @@ public class PlayerListener implements Listener { return; } + if (gameWorld.getGame() != null) { + if (!gameWorld.getGame().getType().hasLives()) { + return; + } + } else { + return; + } + dPlayer.setLives(dPlayer.getLives() - dPlayerDeathEvent.getLostLives()); if (dPlayer.getLives() == 0 && dPlayer.isReady()) { @@ -308,21 +316,23 @@ public class PlayerListener implements Listener { return; } - if (!DPlayer.getByPlayer(player).isReady()) { + DPlayer dPlayer = DPlayer.getByPlayer(player); + if (dPlayer == null) { + return; + } + + if (!dPlayer.isReady()) { event.setCancelled(true); return; } - DPlayer dPlayer = DPlayer.getByPlayer(player); GameWorld gameWorld = GameWorld.getByWorld(dPlayer.getWorld()); - if (dPlayer != null) { - for (Material material : gameWorld.getConfig().getSecureObjects()) { - if (material == event.getItemDrop().getItemStack().getType()) { - event.setCancelled(true); - MessageUtil.sendMessage(player, messageConfig.getMessage(Messages.ERROR_DROP)); - return; - } + for (Material material : gameWorld.getConfig().getSecureObjects()) { + if (material == event.getItemDrop().getItemStack().getType()) { + event.setCancelled(true); + MessageUtil.sendMessage(player, messageConfig.getMessage(Messages.ERROR_DROP)); + return; } } } @@ -331,7 +341,6 @@ public class PlayerListener implements Listener { public void onRespawn(PlayerRespawnEvent event) { Player player = event.getPlayer(); DPlayer dPlayer = DPlayer.getByPlayer(player); - if (dPlayer == null) { return; }