diff --git a/src/nl/Steffion/BlockHunt/Arena.java b/src/nl/Steffion/BlockHunt/Arena.java index c99fc4d..b5b802c 100644 --- a/src/nl/Steffion/BlockHunt/Arena.java +++ b/src/nl/Steffion/BlockHunt/Arena.java @@ -34,6 +34,9 @@ public class Arena implements ConfigurationSerializable { public List seekersWinCommands; public List hidersWinCommands; public List allowedCommands; + public int seekersTokenWin; + public int hidersTokenWin; + public int killTokens; public List playersInArena; public ArenaState gameState; @@ -49,6 +52,7 @@ public class Arena implements ConfigurationSerializable { LocationSerializable lobbyWarp, LocationSerializable hidersWarp, LocationSerializable seekersWarp, List seekersWinCommands, List hidersWinCommands, List allowedCommands, + int seekersTokenWin, int hidersTokenWin, int killTokens, List playersInArena, ArenaState gameState, int timer, List seekers, Scoreboard scoreboard) { this.arenaName = arenaName; @@ -68,6 +72,9 @@ public class Arena implements ConfigurationSerializable { this.seekersWinCommands = seekersWinCommands; this.hidersWinCommands = hidersWinCommands; this.allowedCommands = allowedCommands; + this.seekersTokenWin = seekersTokenWin; + this.hidersTokenWin = hidersTokenWin; + this.killTokens = killTokens; this.playersInArena = playersInArena; this.gameState = gameState; @@ -83,7 +90,10 @@ public class Arena implements ConfigurationSerializable { timeInLobbyUntilStart, waitingTimeSeeker, gameTime, - timeUntilHidersSword; + timeUntilHidersSword, + hidersTokenWin, + seekersTokenWin, + killTokens; } public enum ArenaState { @@ -110,6 +120,8 @@ public class Arena implements ConfigurationSerializable { map.put("seekersWinCommands", seekersWinCommands); map.put("hidersWinCommands", hidersWinCommands); map.put("allowedCommands", allowedCommands); + map.put("seekersTokenWin", seekersTokenWin); + map.put("hidersTokenWin", hidersTokenWin); return map; } @@ -136,8 +148,11 @@ public class Arena implements ConfigurationSerializable { new ArrayList()), (ArrayList) M.g(map, "hidersWinCommands", new ArrayList()), (ArrayList) M.g(map, "allowedCommands", - new ArrayList()), new ArrayList(), - ArenaState.WAITING, 0, new ArrayList(), Bukkit - .getScoreboardManager().getNewScoreboard()); + new ArrayList()), (Integer) M.g(map, + "seekersTokenWin", 10), (Integer) M.g(map, + "hidersTokenWin", 50), (Integer) M.g(map, "killTokens", + 8), new ArrayList(), ArenaState.WAITING, 0, + new ArrayList(), Bukkit.getScoreboardManager() + .getNewScoreboard()); } } \ No newline at end of file diff --git a/src/nl/Steffion/BlockHunt/ArenaHandler.java b/src/nl/Steffion/BlockHunt/ArenaHandler.java index 8389704..5e02a56 100644 --- a/src/nl/Steffion/BlockHunt/ArenaHandler.java +++ b/src/nl/Steffion/BlockHunt/ArenaHandler.java @@ -337,6 +337,19 @@ public class ArenaHandler { Bukkit.dispatchCommand(Bukkit.getConsoleSender(), command.replaceAll("%player%", player.getName())); } + + if (W.shop.getFile().get(player.getName() + ".tokens") == null) { + W.shop.getFile().set(player.getName() + ".tokens", 0); + W.shop.save(); + } + int playerTokens = W.shop.getFile().getInt( + player.getName() + ".tokens"); + W.shop.getFile().set(player.getName() + ".tokens", + playerTokens + arena.seekersTokenWin); + W.shop.save(); + + MessageM.sendFMessage(player, ConfigC.normal_addedToken, true, + "amount-" + arena.seekersTokenWin); } } @@ -362,6 +375,19 @@ public class ArenaHandler { Bukkit.getConsoleSender(), command.replaceAll("%player%", player.getName())); } + + if (W.shop.getFile().get(player.getName() + ".tokens") == null) { + W.shop.getFile().set(player.getName() + ".tokens", 0); + W.shop.save(); + } + int playerTokens = W.shop.getFile().getInt( + player.getName() + ".tokens"); + W.shop.getFile().set(player.getName() + ".tokens", + playerTokens + arena.hidersTokenWin); + W.shop.save(); + + MessageM.sendFMessage(player, ConfigC.normal_addedToken, + true, "amount-" + arena.hidersTokenWin); } } } diff --git a/src/nl/Steffion/BlockHunt/Commands/CMDcreate.java b/src/nl/Steffion/BlockHunt/Commands/CMDcreate.java index 1ff344c..7a0436a 100644 --- a/src/nl/Steffion/BlockHunt/Commands/CMDcreate.java +++ b/src/nl/Steffion/BlockHunt/Commands/CMDcreate.java @@ -39,7 +39,7 @@ public class CMDcreate extends DefaultCMD { new ArrayList(), null, null, null, new ArrayList(), new ArrayList(), - new ArrayList(), + new ArrayList(), 10, 50, 8, new ArrayList(), ArenaState.WAITING, 0, new ArrayList(), Bukkit @@ -49,7 +49,7 @@ public class CMDcreate extends DefaultCMD { W.arenas.save(); W.signs.load(); - W.arenaList.add((Arena) arena); + W.arenaList.add(arena); ScoreboardHandler.createScoreboard(arena); MessageM.sendFMessage(player, diff --git a/src/nl/Steffion/BlockHunt/Commands/CMDreload.java b/src/nl/Steffion/BlockHunt/Commands/CMDreload.java index 40bcf8b..fa1678f 100644 --- a/src/nl/Steffion/BlockHunt/Commands/CMDreload.java +++ b/src/nl/Steffion/BlockHunt/Commands/CMDreload.java @@ -21,6 +21,7 @@ public class CMDreload extends DefaultCMD { W.messages.load(); W.arenas.load(); W.signs.load(); + W.shop.load(); for (Arena arena : W.arenaList) { ArenaHandler.stopArena(arena); } diff --git a/src/nl/Steffion/BlockHunt/InventoryHandler.java b/src/nl/Steffion/BlockHunt/InventoryHandler.java index 11d0ab5..abf0039 100644 --- a/src/nl/Steffion/BlockHunt/InventoryHandler.java +++ b/src/nl/Steffion/BlockHunt/InventoryHandler.java @@ -96,6 +96,24 @@ public class InventoryHandler { ItemStack timeUntilHidersSword_DOWN = new ItemStack( Material.GOLD_NUGGET, 1); + ItemStack hidersTokenWin_UP = new ItemStack(Material.GOLD_NUGGET, 1); + ItemStack hidersTokenWin = new ItemStack( + Material.PISTON_MOVING_PIECE, arena.hidersTokenWin); + ItemStack hidersTokenWin_DOWN = new ItemStack(Material.GOLD_NUGGET, + 1); + + ItemStack seekersTokenWin_UP = new ItemStack(Material.GOLD_NUGGET, + 1); + ItemStack seekersTokenWin = new ItemStack( + Material.PISTON_MOVING_PIECE, arena.seekersTokenWin); + ItemStack seekersTokenWin_DOWN = new ItemStack( + Material.GOLD_NUGGET, 1); + + ItemStack killTokens_UP = new ItemStack(Material.GOLD_NUGGET, 1); + ItemStack killTokens = new ItemStack(Material.PISTON_MOVING_PIECE, + arena.killTokens); + ItemStack killTokens_DOWN = new ItemStack(Material.GOLD_NUGGET, 1); + // updownButton(panel, arena, ArenaType.maxPlayers, "maxPlayers", "1", @@ -126,6 +144,18 @@ public class InventoryHandler { timeUntilHidersSword_UP, timeUntilHidersSword, timeUntilHidersSword_DOWN, 30, 39, 48); + updownButton(panel, arena, ArenaType.hidersTokenWin, + "hidersTokenWin", "1 %Ntoken", hidersTokenWin_UP, + hidersTokenWin, hidersTokenWin_DOWN, 32, 41, 50); + + updownButton(panel, arena, ArenaType.seekersTokenWin, + "seekersTokenWin", "1 %Ntoken", seekersTokenWin_UP, + seekersTokenWin, seekersTokenWin_DOWN, 33, 42, 51); + + updownButton(panel, arena, ArenaType.killTokens, "killTokens", + "1 %Ntoken", killTokens_UP, killTokens, killTokens_DOWN, + 34, 43, 52); + player.openInventory(panel); } else { MessageM.sendFMessage(player, ConfigC.error_noArena, true, "name-" @@ -165,6 +195,15 @@ public class InventoryHandler { case timeUntilHidersSword: setting = arena.timeUntilHidersSword; break; + case hidersTokenWin: + setting = arena.hidersTokenWin; + break; + case seekersTokenWin: + setting = arena.seekersTokenWin; + break; + case killTokens: + setting = arena.killTokens; + break; } ItemMeta BUTTON_IM = BUTTON.getItemMeta(); @@ -246,12 +285,38 @@ public class InventoryHandler { shopBlockChooser_IM.setLore(lores2); shopBlockChooser.setItemMeta(shopBlockChooser_IM); + ItemStack shopBlockHuntPass = new ItemStack( + Material.getMaterial((Integer) W.config + .get(ConfigC.shop_BlockHuntPassID)), 1); + ItemMeta shopBlockHuntPass_IM = shopBlockHuntPass.getItemMeta(); + shopBlockHuntPass_IM.setDisplayName(MessageM + .replaceAll((String) W.config + .get(ConfigC.shop_BlockHuntPassName))); + lores = W.config.getFile().getStringList( + ConfigC.shop_BlockHuntPassDescription.getLocation()); + lores2 = new ArrayList(); + for (String lore : lores) { + lores2.add(MessageM.replaceAll(lore)); + } + + lores2.add(MessageM.replaceAll( + (String) W.config.get(ConfigC.shop_price), + "amount-" + W.config.get(ConfigC.shop_BlockHuntPassPrice))); + + shopBlockHuntPass_IM.setLore(lores2); + shopBlockHuntPass.setItemMeta(shopBlockHuntPass_IM); + shop.setItem(0, shopTokens); if ((Boolean) W.config.get(ConfigC.shop_blockChooserEnabled) == true && (Boolean) W.shop.getFile().get( player.getName() + ".blockchooser") == null) { shop.setItem(1, shopBlockChooser); } + if ((Boolean) W.config.get(ConfigC.shop_BlockHuntPassEnabled) == true + && (Boolean) W.shop.getFile().get( + player.getName() + ".blockhuntpass") == null) { + shop.setItem(2, shopBlockHuntPass); + } player.openInventory(shop); } } diff --git a/src/nl/Steffion/BlockHunt/Listeners/OnEntityDamageByEntityEvent.java b/src/nl/Steffion/BlockHunt/Listeners/OnEntityDamageByEntityEvent.java index cd41a62..63a1325 100644 --- a/src/nl/Steffion/BlockHunt/Listeners/OnEntityDamageByEntityEvent.java +++ b/src/nl/Steffion/BlockHunt/Listeners/OnEntityDamageByEntityEvent.java @@ -5,10 +5,10 @@ import nl.Steffion.BlockHunt.Arena.ArenaState; import nl.Steffion.BlockHunt.ArenaHandler; import nl.Steffion.BlockHunt.W; import nl.Steffion.BlockHunt.Managers.ConfigC; +import nl.Steffion.BlockHunt.Managers.MessageM; import org.bukkit.GameMode; import org.bukkit.Sound; -import org.bukkit.entity.Entity; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; @@ -20,10 +20,14 @@ public class OnEntityDamageByEntityEvent implements Listener { @SuppressWarnings("deprecation") @EventHandler(priority = EventPriority.NORMAL) public void onEntityDamageByEntityEvent(EntityDamageByEntityEvent event) { - Entity ent = event.getEntity(); Player player = null; - if (ent instanceof Player) { - player = (Player) ent; + if (event.getEntity() instanceof Player) { + player = (Player) event.getEntity(); + } + + Player damager = null; + if (event.getDamager() instanceof Player) { + damager = (Player) event.getDamager(); } if (player != null) { @@ -54,6 +58,44 @@ public class OnEntityDamageByEntityEvent implements Listener { W.pBlock.remove(player); if (!arena.seekers.contains(player)) { + if (W.shop.getFile().get( + damager.getName() + ".tokens") == null) { + W.shop.getFile().set( + damager.getName() + ".tokens", + 0); + W.shop.save(); + } + int damagerTokens = W.shop.getFile() + .getInt(damager.getName() + + ".tokens"); + W.shop.getFile().set( + damager.getName() + ".tokens", + damagerTokens + arena.killTokens); + W.shop.save(); + + MessageM.sendFMessage(damager, + ConfigC.normal_addedToken, true, + "amount-" + arena.killTokens); + + if (W.shop.getFile().get( + player.getName() + ".tokens") == null) { + W.shop.getFile() + .set(player.getName() + + ".tokens", 0); + W.shop.save(); + } + int playerTokens = W.shop.getFile().getInt( + player.getName() + ".tokens"); + float addingTokens = ((float) arena.hidersTokenWin - (((float) arena.timer / (float) arena.gameTime) * (float) arena.hidersTokenWin)); + W.shop.getFile().set( + player.getName() + ".tokens", + playerTokens + (int) addingTokens); + W.shop.save(); + + MessageM.sendFMessage(player, + ConfigC.normal_addedToken, true, + "amount-" + (int) addingTokens); + arena.seekers.add(player); ArenaHandler .sendFMessage( diff --git a/src/nl/Steffion/BlockHunt/Listeners/OnInventoryClickEvent.java b/src/nl/Steffion/BlockHunt/Listeners/OnInventoryClickEvent.java index 3d8fa67..f5a4ee9 100644 --- a/src/nl/Steffion/BlockHunt/Listeners/OnInventoryClickEvent.java +++ b/src/nl/Steffion/BlockHunt/Listeners/OnInventoryClickEvent.java @@ -159,6 +159,21 @@ public class OnInventoryClickEvent implements Listener { updownButton(player, item, arena, ArenaType.timeUntilHidersSword, arena.timeUntilHidersSword, 1000, 0, 1, 1); + } else if (item.getItemMeta().getDisplayName() + .contains("hidersTokenWin")) { + updownButton(player, item, arena, + ArenaType.hidersTokenWin, + arena.hidersTokenWin, 1000, 0, 1, 1); + } else if (item.getItemMeta().getDisplayName() + .contains("seekersTokenWin")) { + updownButton(player, item, arena, + ArenaType.seekersTokenWin, + arena.seekersTokenWin, 1000, 0, 1, 1); + } else if (item.getItemMeta().getDisplayName() + .contains("killTokens")) { + updownButton(player, item, arena, + ArenaType.killTokens, arena.killTokens, + 1000, 0, 1, 1); } save(arena); @@ -208,6 +223,15 @@ public class OnInventoryClickEvent implements Listener { case timeUntilHidersSword: arena.timeUntilHidersSword = option + add; break; + case hidersTokenWin: + arena.hidersTokenWin = option + add; + break; + case seekersTokenWin: + arena.seekersTokenWin = option + add; + break; + case killTokens: + arena.killTokens = option + add; + break; } } else { MessageM.sendFMessage(player, ConfigC.error_setTooHighNumber, @@ -238,6 +262,15 @@ public class OnInventoryClickEvent implements Listener { case timeUntilHidersSword: arena.timeUntilHidersSword = option - remove; break; + case hidersTokenWin: + arena.hidersTokenWin = option - remove; + break; + case seekersTokenWin: + arena.seekersTokenWin = option - remove; + break; + case killTokens: + arena.killTokens = option - remove; + break; } } else { MessageM.sendFMessage(player, ConfigC.error_setTooLowNumber, diff --git a/src/nl/Steffion/BlockHunt/Managers/ConfigC.java b/src/nl/Steffion/BlockHunt/Managers/ConfigC.java index 77c7cc0..3765b08 100644 --- a/src/nl/Steffion/BlockHunt/Managers/ConfigC.java +++ b/src/nl/Steffion/BlockHunt/Managers/ConfigC.java @@ -43,7 +43,7 @@ public enum ConfigC { shop_price ("%NPrice: %A%amount% %Ntokens.", W.config), shop_blockChooserEnabled (true, W.config), - shop_blockChooserID (345, W.config), + shop_blockChooserID (340, W.config), shop_blockChooserPrice (3000, W.config), shop_blockChooserName ("%H&lBlock Chooser", W.config), shop_blockChooserDescription (new String[] { @@ -51,6 +51,16 @@ public enum ConfigC { "%ARight-Click%N in the lobby and choose", "%Nthe block you want to be!", "&6Unlimited uses." }, W.config), + shop_BlockHuntPassEnabled (true, W.config), + shop_BlockHuntPassID (421, W.config), + shop_BlockHuntPassPrice (150, W.config), + shop_BlockHuntPassName ("%H&lBlockHunt Pass", W.config), + shop_BlockHuntPassDescription (new String[] { + "%NUse this item before the arena starts.", + "%ARight-Click%N in the lobby and choose", + "%Nif you want to be a Hider or a Seeker!", "&61 use.", + "&c&lCOMING SOON!" }, W.config), + sign_LEAVE (new String[] { "%H[" + W.pluginName + "%H]", "&4LEAVE", "&8Right-Click", "&8To leave." }, W.config), sign_WAITING (new String[] { "%H[" + W.pluginName + "%H]", "%A%arenaname%", @@ -125,6 +135,8 @@ public enum ConfigC { normal_winHiders ("%NThe %AHIDERS%N have won!", W.messages), normal_setwarpWarpSet ("%NSet warp '%A%warp%%N' to your location!", W.messages), + normal_addedToken ("%A%amount%%N tokens were added to your account!", + W.messages), normal_removeRemovedArena ("%NRemoved arena '%A%name%%N'!", W.messages), normal_ingameNowSolid ("%NYou're now a solid '%A%block%%N' block!", W.messages),