From bef7e4fab54a6b4cda42dd8196dc401aabc8a042 Mon Sep 17 00:00:00 2001 From: PdeBot Date: Wed, 11 Dec 2019 19:45:35 +0100 Subject: [PATCH] Changed the way GameItems/LobbyItems are handled. Cleaned up code. --- .../commands/SpectateCommandExecutor.java | 9 +- .../val59000mc/customitems/GameItem.java | 127 +++++++++ .../val59000mc/customitems/UhcItems.java | 156 ++--------- .../val59000mc/listeners/ItemsListener.java | 246 +++++++----------- .../val59000mc/players/PlayersManager.java | 17 +- .../val59000mc/utils/UniversalMaterial.java | 6 + 6 files changed, 256 insertions(+), 305 deletions(-) create mode 100644 src/main/java/com/gmail/val59000mc/customitems/GameItem.java diff --git a/src/main/java/com/gmail/val59000mc/commands/SpectateCommandExecutor.java b/src/main/java/com/gmail/val59000mc/commands/SpectateCommandExecutor.java index 2ab514852..47e0440c5 100644 --- a/src/main/java/com/gmail/val59000mc/commands/SpectateCommandExecutor.java +++ b/src/main/java/com/gmail/val59000mc/commands/SpectateCommandExecutor.java @@ -75,14 +75,7 @@ private void setPlayerPlaying(Player player, UhcPlayer uhcPlayer){ gm.getScoreboardManager().updatePlayerTab(uhcPlayer); // Give lobby items back - UhcItems.giveLobbyItemTo(player); - UhcItems.giveKitSelectionTo(player); - UhcItems.giveCraftBookTo(player); - if (gm.getConfiguration().getUseTeamColors()){ - UhcItems.giveLobbyColorItemTo(player); - } - UhcItems.giveScenariosItemTo(player); - UhcItems.giveBungeeItemTo(player); + UhcItems.giveLobbyItemsTo(player); } } \ No newline at end of file diff --git a/src/main/java/com/gmail/val59000mc/customitems/GameItem.java b/src/main/java/com/gmail/val59000mc/customitems/GameItem.java new file mode 100644 index 000000000..f4c347fec --- /dev/null +++ b/src/main/java/com/gmail/val59000mc/customitems/GameItem.java @@ -0,0 +1,127 @@ +package com.gmail.val59000mc.customitems; + +import com.gmail.val59000mc.configuration.MainConfiguration; +import com.gmail.val59000mc.game.GameManager; +import com.gmail.val59000mc.languages.Lang; +import com.gmail.val59000mc.utils.UniversalMaterial; +import org.apache.commons.lang.Validate; +import org.bukkit.ChatColor; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; + +import java.util.Arrays; + +public enum GameItem{ + // Lobby Items + TEAM_SELECTION(UniversalMaterial.IRON_SWORD), + KIT_SELECTION(UniversalMaterial.IRON_PICKAXE), + TEAM_COLOR_SELECTION(UniversalMaterial.LAPIS_LAZULI), + SCENARIO_VIEWER(UniversalMaterial.PAPER), + BUNGEE_ITEM(UniversalMaterial.BARRIER), + + // Game Items + CUSTOM_CRAFT_BOOK(UniversalMaterial.ENCHANTED_BOOK), + COMPASS_ITEM(UniversalMaterial.COMPASS), + + UNKNOWN(UniversalMaterial.AIR); + + private static final String LORE_PREFIX = ChatColor.DARK_GRAY + "UHC Item"; + public static final GameItem[] LOBBY_ITEMS = new GameItem[]{ + TEAM_SELECTION, + KIT_SELECTION, + CUSTOM_CRAFT_BOOK, + TEAM_COLOR_SELECTION, + SCENARIO_VIEWER, + BUNGEE_ITEM + }; + + private UniversalMaterial type; + + GameItem(UniversalMaterial type){ + this.type = type; + } + + public ItemStack getItem(){ + ItemStack item = type.getStack(); + ItemMeta meta = item.getItemMeta(); + meta.setDisplayName(getItemName()); + meta.setLore(Arrays.asList(LORE_PREFIX)); + item.setItemMeta(meta); + return item; + } + + public boolean equals(ItemStack item){ + Validate.notNull(item); + if (item.getType() != type.getType()){ + return false; + } + ItemMeta meta = item.getItemMeta(); + Validate.notNull(meta); + return meta.getDisplayName().equals(getItemName()); + } + + public boolean meetsUsageRequirements(){ + GameManager gm = GameManager.getGameManager(); + MainConfiguration cfg = gm.getConfiguration(); + switch (this){ + case TEAM_SELECTION: + return cfg.getMaxPlayersPerTeam() > 1 || !cfg.getTeamAlwaysReady(); + case KIT_SELECTION: + return KitsManager.isAtLeastOneKit(); + case CUSTOM_CRAFT_BOOK: + return CraftsManager.isAtLeastOneCraft(); + case TEAM_COLOR_SELECTION: + return cfg.getUseTeamColors(); + case SCENARIO_VIEWER: + return true; + case BUNGEE_ITEM: + return cfg.getEnableBungeeSupport() && cfg.getEnableBungeeLobbyItem(); + case COMPASS_ITEM: + return cfg.getEnablePlayingCompass(); + case UNKNOWN: + return false; + } + return true; + } + + private String getItemName(){ + switch (this){ + case TEAM_SELECTION: + return Lang.ITEMS_SWORD; + case KIT_SELECTION: + return Lang.ITEMS_KIT_SELECTION; + case CUSTOM_CRAFT_BOOK: + return Lang.ITEMS_CRAFT_BOOK; + case TEAM_COLOR_SELECTION: + return Lang.TEAM_COLOR_ITEM; + case SCENARIO_VIEWER: + return Lang.SCENARIO_GLOBAL_ITEM_HOTBAR; + case BUNGEE_ITEM: + return Lang.ITEMS_BUNGEE; + case COMPASS_ITEM: + return Lang.ITEMS_COMPASS_PLAYING; + } + return "Unknown item!"; + } + + public static boolean isLobbyItem(ItemStack item){ + if (!item.hasItemMeta()){ + return false; + } + ItemMeta meta = item.getItemMeta(); + if (!meta.hasLore()){ + return false; + } + return meta.getLore().contains(LORE_PREFIX); + } + + public static GameItem getLobbyItem(ItemStack item){ + for (GameItem lobbyItem : GameItem.values()){ + if (lobbyItem.equals(item)){ + return lobbyItem; + } + } + return UNKNOWN; + } + +} \ No newline at end of file diff --git a/src/main/java/com/gmail/val59000mc/customitems/UhcItems.java b/src/main/java/com/gmail/val59000mc/customitems/UhcItems.java index 82c603729..5778ba131 100644 --- a/src/main/java/com/gmail/val59000mc/customitems/UhcItems.java +++ b/src/main/java/com/gmail/val59000mc/customitems/UhcItems.java @@ -1,10 +1,8 @@ package com.gmail.val59000mc.customitems; -import com.gmail.val59000mc.configuration.MainConfiguration; import com.gmail.val59000mc.exceptions.UhcPlayerDoesntExistException; import com.gmail.val59000mc.game.GameManager; import com.gmail.val59000mc.languages.Lang; -import com.gmail.val59000mc.players.PlayerState; import com.gmail.val59000mc.players.TeamManager; import com.gmail.val59000mc.players.UhcPlayer; import com.gmail.val59000mc.players.UhcTeam; @@ -24,84 +22,24 @@ import java.util.*; -public class UhcItems { - - public static void giveLobbyItemTo(Player player){ - MainConfiguration cfg = GameManager.getGameManager().getConfiguration(); - if (cfg.getMaxPlayersPerTeam() > 1 || !cfg.getTeamAlwaysReady()) { - ItemStack item = new ItemStack(Material.IRON_SWORD); - ItemMeta meta = item.getItemMeta(); - meta.setDisplayName(Lang.ITEMS_SWORD); - meta.setLore(Arrays.asList("Lobby")); - item.setItemMeta(meta); - player.getInventory().addItem(item); - } - } +public class UhcItems{ - public static void giveBungeeItemTo(Player player){ - GameManager gm = GameManager.getGameManager(); - if (gm.getConfiguration().getEnableBungeeSupport() && gm.getConfiguration().getEnableBungeeLobbyItem()){ - ItemStack barrier = new ItemStack(Material.BARRIER); - ItemMeta barrierItemMeta = barrier.getItemMeta(); - barrierItemMeta.setDisplayName(Lang.ITEMS_BUNGEE); - barrier.setItemMeta(barrierItemMeta); - player.getInventory().setItem(8, barrier); + public static void giveGameItemTo(Player player, GameItem gameItem){ + if (!gameItem.meetsUsageRequirements()){ + return; } - } - - public static void giveLobbyColorItemTo(Player player){ - ItemStack item = UniversalMaterial.LAPIS_LAZULI.getStack(); - ItemMeta meta = item.getItemMeta(); - meta.setDisplayName(Lang.TEAM_COLOR_ITEM); - meta.setLore(Arrays.asList("Lobby")); - item.setItemMeta(meta); - player.getInventory().addItem(item); - } - - public static void giveScenariosItemTo(Player player){ - ItemStack paper = new ItemStack(Material.PAPER); - ItemMeta meta = paper.getItemMeta(); - meta.setDisplayName(Lang.SCENARIO_GLOBAL_ITEM_HOTBAR); - paper.setItemMeta(meta); - player.getInventory().addItem(paper); - } - - public static boolean isLobbyItem(ItemStack item){ - return ( - item != null - && item.getType().equals(Material.IRON_SWORD) - && item.getItemMeta().getLore().contains("Lobby") - ); - } - - public static boolean isLobbyColorItem(ItemStack item){ - return ( - item != null - && UniversalMaterial.LAPIS_LAZULI.getType().equals(item.getType()) - && item.hasItemMeta() - && item.getItemMeta().hasLore() - && item.getItemMeta().getLore().contains("Lobby") - ); - } - public static boolean isScenariosHotbarItem(ItemStack item){ - return ( - item != null && - item.getType().equals(Material.PAPER) && - item.hasItemMeta() && - item.getItemMeta().hasDisplayName() && - item.getItemMeta().getDisplayName().equals(Lang.SCENARIO_GLOBAL_ITEM_HOTBAR) - ); + if (gameItem == GameItem.BUNGEE_ITEM){ + player.getInventory().setItem(8, gameItem.getItem()); + }else { + player.getInventory().addItem(gameItem.getItem()); + } } - public static boolean isLobbyBarrierItem(ItemStack item){ - return ( - item != null && - item.getType().equals(Material.BARRIER) && - item.hasItemMeta() && - item.getItemMeta().hasDisplayName() && - item.getItemMeta().getDisplayName().equals(Lang.ITEMS_BUNGEE) - ); + public static void giveLobbyItemsTo(Player player){ + for (GameItem lobbyItem : GameItem.LOBBY_ITEMS){ + giveGameItemTo(player, lobbyItem); + } } public static void openTeamInventory(Player player){ @@ -219,7 +157,7 @@ private static ItemStack getWoolItem(ChatColor chatColor, String name, Universal return wool; } - public static ItemStack createTeamSkullItem(UhcTeam team){ + private static ItemStack createTeamSkullItem(UhcTeam team){ UhcPlayer leader = team.getLeader(); String leaderName = leader.getName(); ItemStack item = VersionUtils.getVersionUtils().createPlayerSkull(leaderName, leader.getUuid()); @@ -263,8 +201,6 @@ public static boolean isLobbyLeaveTeamItem(ItemStack item){ && item.getItemMeta().getDisplayName().equals(ChatColor.RED+Lang.ITEMS_BARRIER) ); } - - public static boolean isLobbyReadyTeamItem(ItemStack item) { return ( @@ -275,7 +211,6 @@ public static boolean isLobbyReadyTeamItem(ItemStack item) { || item.getItemMeta().getDisplayName().equals(ChatColor.GREEN+Lang.TEAM_READY)) ); } - public static boolean isRegenHeadItem(ItemStack item) { return ( @@ -300,72 +235,13 @@ public static ItemStack createRegenHead(Player player) { ItemMeta im = item.getItemMeta(); // Setting up lore with team members - List lore = new ArrayList(); - lore.add(ChatColor.GREEN+Lang.ITEMS_REGEN_HEAD); - im.setLore(lore); + im.setLore(Collections.singletonList(ChatColor.GREEN + Lang.ITEMS_REGEN_HEAD)); im.setDisplayName(name); item.setItemMeta(im); return item; } - public static void giveCompassPlayingTo(Player player) { - ItemStack compass = new ItemStack(Material.COMPASS, 1); - ItemMeta im = compass.getItemMeta(); - im.setDisplayName(ChatColor.GREEN+Lang.ITEMS_COMPASS_PLAYING); - compass.setItemMeta(im); - player.getInventory().addItem(compass); - } - - - - public static boolean isCompassPlayingItem(ItemStack item) { - return ( - item != null - && item.getType() == Material.COMPASS - && item.getItemMeta().getDisplayName().equals(ChatColor.GREEN+Lang.ITEMS_COMPASS_PLAYING) - ); - } - - public static boolean isKitSelectionItem(ItemStack item){ - return ( - item != null - && item.getType() == Material.IRON_PICKAXE - && item.getItemMeta().getDisplayName().equals(ChatColor.GREEN+Lang.ITEMS_KIT_SELECTION) - ); - } - - public static void giveKitSelectionTo(Player player) { - if(KitsManager.isAtLeastOneKit()){ - ItemStack pickaxe = new ItemStack(Material.IRON_PICKAXE, 1); - ItemMeta im = pickaxe.getItemMeta(); - im.setDisplayName(ChatColor.GREEN+Lang.ITEMS_KIT_SELECTION); - pickaxe.setItemMeta(im); - player.getInventory().addItem(pickaxe); - } - } - - public static void giveCraftBookTo(Player player) { - if(CraftsManager.isAtLeastOneCraft()){ - ItemStack book = new ItemStack(Material.ENCHANTED_BOOK, 1); - ItemMeta im = book.getItemMeta(); - im.setDisplayName(ChatColor.LIGHT_PURPLE+Lang.ITEMS_CRAFT_BOOK); - book.setItemMeta(im); - player.getInventory().addItem(book); - } - } - - public static boolean isCraftBookItem(ItemStack item){ - return ( - item != null - && item.getType().equals(Material.ENCHANTED_BOOK) - && item.hasItemMeta() - && item.getItemMeta().hasDisplayName() - && item.getItemMeta().getDisplayName().equals(ChatColor.LIGHT_PURPLE+Lang.ITEMS_CRAFT_BOOK) - ); - } - - public static void spawnExtraXp(Location location, int quantity) { ExperienceOrb orb = (ExperienceOrb) location.getWorld().spawnEntity(location, EntityType.EXPERIENCE_ORB); orb.setExperience(quantity); @@ -386,7 +262,6 @@ public static ItemStack createGoldenHeadPlayerSkull(String name, UUID uuid){ } public static ItemStack createGoldenHead(){ - ItemStack itemStack = new ItemStack(Material.GOLDEN_APPLE); ItemMeta itemMeta = itemStack.getItemMeta(); @@ -394,7 +269,6 @@ public static ItemStack createGoldenHead(){ itemMeta.setLore(Collections.singletonList(Lang.ITEMS_GOLDEN_HEAD_APPLE_HELP)); itemStack.setItemMeta(itemMeta); - return itemStack; } diff --git a/src/main/java/com/gmail/val59000mc/listeners/ItemsListener.java b/src/main/java/com/gmail/val59000mc/listeners/ItemsListener.java index 2ab831763..15b660e8f 100644 --- a/src/main/java/com/gmail/val59000mc/listeners/ItemsListener.java +++ b/src/main/java/com/gmail/val59000mc/listeners/ItemsListener.java @@ -41,134 +41,96 @@ public class ItemsListener implements Listener { @EventHandler(priority = EventPriority.HIGHEST) - public void onRightClickItem(PlayerInteractEvent event) { + public void onRightClickItem(PlayerInteractEvent event){ + if ( + event.getAction() != Action.RIGHT_CLICK_AIR && + event.getAction() != Action.RIGHT_CLICK_BLOCK + ){ + return; + } + Player player = event.getPlayer(); GameManager gm = GameManager.getGameManager(); UhcPlayer uhcPlayer; try { uhcPlayer = gm.getPlayersManager().getUhcPlayer(player); - ItemStack hand = player.getItemInHand(); - - if (gm.getGameState().equals(GameState.WAITING) - && UhcItems.isLobbyItem(hand) - && uhcPlayer.getState().equals(PlayerState.WAITING) - && (event.getAction() == Action.RIGHT_CLICK_AIR - || event.getAction() == Action.RIGHT_CLICK_BLOCK) - ){ - event.setCancelled(true); - UhcItems.openTeamInventory(player); - return; - } + }catch (UhcPlayerDoesntExistException ex){ + return; // Event should not trigger for none existent player. + } - if (gm.getGameState().equals(GameState.WAITING) - && UhcItems.isLobbyColorItem(hand) - && uhcPlayer.getState().equals(PlayerState.WAITING) - && (event.getAction() == Action.RIGHT_CLICK_AIR - || event.getAction() == Action.RIGHT_CLICK_BLOCK) - ) { - event.setCancelled(true); - UhcItems.openTeamColorInventory(player); - } + ItemStack hand = player.getItemInHand(); - if (gm.getGameState().equals(GameState.WAITING) - && UhcItems.isScenariosHotbarItem(hand) - && uhcPlayer.getState().equals(PlayerState.WAITING) - && (event.getAction() == Action.RIGHT_CLICK_AIR - || event.getAction() == Action.RIGHT_CLICK_BLOCK) - ){ - event.setCancelled(true); - Inventory inv; - if (gm.getConfiguration().getEnableScenarioVoting()){ - inv = gm.getScenarioManager().getScenarioVoteInventory(uhcPlayer); - }else { - inv = gm.getScenarioManager().getScenarioMainInventory(player.hasPermission("uhc-core.scenarios.edit")); - } - player.openInventory(inv); - return; - } + if (GameItem.isLobbyItem(hand)){ + event.setCancelled(true); + GameItem lobbyItem = GameItem.getLobbyItem(hand); + + switch (lobbyItem){ + case TEAM_SELECTION: + UhcItems.openTeamInventory(player); + break; + case KIT_SELECTION: + KitsManager.openKitSelectionInventory(player); + break; + case CUSTOM_CRAFT_BOOK: + CraftsManager.openCraftBookInventory(player); + break; + case TEAM_COLOR_SELECTION: + UhcItems.openTeamColorInventory(player); + break; + case SCENARIO_VIEWER: + Inventory inv; + if (gm.getConfiguration().getEnableScenarioVoting()){ + inv = gm.getScenarioManager().getScenarioVoteInventory(uhcPlayer); + }else { + inv = gm.getScenarioManager().getScenarioMainInventory(player.hasPermission("uhc-core.scenarios.edit")); + } + player.openInventory(inv); + break; + case BUNGEE_ITEM: + GameManager.getGameManager().getPlayersManager().sendPlayerToBungeeServer(player); + break; + case COMPASS_ITEM: + uhcPlayer.pointCompassToNextPlayer(gm.getConfiguration().getPlayingCompassMode(), gm.getConfiguration().getPlayingCompassCooldown()); + break; + } + return; + } - if (gm.getGameState().equals(GameState.WAITING) - && UhcItems.isLobbyBarrierItem(hand) - && uhcPlayer.getState().equals(PlayerState.WAITING) - && (event.getAction() == Action.RIGHT_CLICK_AIR - || event.getAction() == Action.RIGHT_CLICK_BLOCK) - ) { - event.setCancelled(true); - GameManager.getGameManager().getPlayersManager().sendPlayerToBungeeServer(player); - return; + if (gm.getGameState().equals(GameState.WAITING) + && UhcItems.isLobbyTeamItem(hand) + && uhcPlayer.getState().equals(PlayerState.WAITING) + && (event.getAction() == Action.RIGHT_CLICK_AIR + || event.getAction() == Action.RIGHT_CLICK_BLOCK) + ) { + event.setCancelled(true); + Player itemPlayer = Bukkit.getPlayer(hand.getItemMeta().getDisplayName()); + if(itemPlayer != null){ + try { + UhcPlayer uhcPlayerRequest = gm.getPlayersManager().getUhcPlayer(itemPlayer); + uhcPlayer.getTeam().join(uhcPlayerRequest); + } catch (UhcPlayerNotOnlineException | UhcTeamException | UhcPlayerDoesntExistException e) { + player.sendMessage(ChatColor.RED+e.getMessage()); + } + }else{ + player.sendMessage(ChatColor.RED+ Lang.TEAM_PLAYER_JOIN_NOT_ONLINE); } - - if ((uhcPlayer.getState().equals(PlayerState.WAITING) - || uhcPlayer.getState().equals(PlayerState.PLAYING)) - && UhcItems.isCraftBookItem(hand) - && (event.getAction() == Action.RIGHT_CLICK_AIR - || event.getAction() == Action.RIGHT_CLICK_BLOCK) - ) { - event.setCancelled(true); - CraftsManager.openCraftBookInventory(player); - return; - } - - if (gm.getGameState().equals(GameState.WAITING) - && UhcItems.isLobbyTeamItem(hand) - && uhcPlayer.getState().equals(PlayerState.WAITING) - && (event.getAction() == Action.RIGHT_CLICK_AIR - || event.getAction() == Action.RIGHT_CLICK_BLOCK) - ) { - event.setCancelled(true); - Player itemPlayer = Bukkit.getPlayer(hand.getItemMeta().getDisplayName()); - if(itemPlayer != null){ - try { - UhcPlayer uhcPlayerRequest = gm.getPlayersManager().getUhcPlayer(itemPlayer); - uhcPlayer.getTeam().join(uhcPlayerRequest); - } catch (UhcPlayerNotOnlineException | UhcTeamException e) { - player.sendMessage(ChatColor.RED+e.getMessage()); - } - }else{ - player.sendMessage(ChatColor.RED+ Lang.TEAM_PLAYER_JOIN_NOT_ONLINE); - } - - player.getInventory().remove(hand); - } - - if ( (gm.getGameState().equals(GameState.PLAYING) || gm.getGameState().equals(GameState.DEATHMATCH)) - && UhcItems.isRegenHeadItem(hand) - && uhcPlayer.getState().equals(PlayerState.PLAYING) - && (event.getAction() == Action.RIGHT_CLICK_AIR - || event.getAction() == Action.RIGHT_CLICK_BLOCK) - ) { - event.setCancelled(true); - uhcPlayer.getTeam().regenTeam(gm.getConfiguration().getEnableDoubleRegenHead()); - player.getInventory().remove(hand); - } - - if ((gm.getGameState().equals(GameState.PLAYING) || gm.getGameState().equals(GameState.DEATHMATCH)) - && UhcItems.isCompassPlayingItem(hand) - && uhcPlayer.getState().equals(PlayerState.PLAYING) - && (event.getAction() == Action.RIGHT_CLICK_AIR - || event.getAction() == Action.RIGHT_CLICK_BLOCK) - ) { - event.setCancelled(true); - uhcPlayer.pointCompassToNextPlayer(gm.getConfiguration().getPlayingCompassMode(), gm.getConfiguration().getPlayingCompassCooldown()); - } - - if (gm.getGameState().equals(GameState.WAITING) - && UhcItems.isKitSelectionItem(hand) - && uhcPlayer.getState().equals(PlayerState.WAITING) - && (event.getAction() == Action.RIGHT_CLICK_AIR - || event.getAction() == Action.RIGHT_CLICK_BLOCK) - ) { - event.setCancelled(true); - KitsManager.openKitSelectionInventory(player); - } - - - } catch (UhcPlayerDoesntExistException e1) { + + player.getInventory().remove(hand); + return; + } + + if ( (gm.getGameState().equals(GameState.PLAYING) || gm.getGameState().equals(GameState.DEATHMATCH)) + && UhcItems.isRegenHeadItem(hand) + && uhcPlayer.getState().equals(PlayerState.PLAYING) + && (event.getAction() == Action.RIGHT_CLICK_AIR + || event.getAction() == Action.RIGHT_CLICK_BLOCK) + ) { + event.setCancelled(true); + uhcPlayer.getTeam().regenTeam(gm.getConfiguration().getEnableDoubleRegenHead()); + player.getInventory().remove(hand); } - } - @EventHandler(priority = EventPriority.HIGHEST) public void onClickInInventory(InventoryClickEvent event){ handleScenarioInventory(event); @@ -176,6 +138,18 @@ public void onClickInInventory(InventoryClickEvent event){ Player player = (Player) event.getWhoClicked(); ItemStack item = event.getCurrentItem(); GameManager gm = GameManager.getGameManager(); + + // Only handle clicked items. + if (item == null){ + return; + } + + // Stop players from moving game items in their inventory. + if (gm.getGameState() == GameState.WAITING){ + if (GameItem.isLobbyItem(item)){ + event.setCancelled(true); + } + } // Click on a player head to join a team if(event.getView().getTitle().equals(ChatColor.GREEN+Lang.DISPLAY_MESSAGE_PREFIX+" "+ChatColor.DARK_GREEN+Lang.ITEMS_KIT_INVENTORY)){ @@ -191,11 +165,10 @@ public void onClickInInventory(InventoryClickEvent event){ uhcPlayer.sendMessage(ChatColor.RED+Lang.ITEMS_KIT_NO_PERMISSION); } player.closeInventory(); - } catch (UhcPlayerDoesntExistException e1) { + } catch (UhcPlayerDoesntExistException e1){ + // Should never be triggered } - } - } if(event.getView().getTitle().equals(ChatColor.GREEN+Lang.DISPLAY_MESSAGE_PREFIX+" "+ChatColor.DARK_GREEN+Lang.TEAM_INVENTORY)){ @@ -264,7 +237,7 @@ public void onClickInInventory(InventoryClickEvent event){ if(event.getView().getTitle().equals(Lang.TEAM_COLOR_INVENTORY)){ event.setCancelled(true); - if (item != null && item.hasItemMeta() && item.getItemMeta().hasLore()){ + if (item.hasItemMeta() && item.getItemMeta().hasLore()){ String selectedColor = item.getItemMeta().getLore().get(0).replace(ChatColor.RESET.toString(), ""); player.closeInventory(); UhcPlayer uhcPlayer; @@ -327,22 +300,12 @@ public void onClickInInventory(InventoryClickEvent event){ } - - if(!gm.getGameState().equals(GameState.PLAYING) && !gm.getGameState().equals(GameState.DEATHMATCH) && player.getGameMode() != GameMode.CREATIVE){ - // Click in its own inventory while not playing - event.setCancelled(true); - } - // Ban level 2 potions if(event.getInventory().getType().equals(InventoryType.BREWING) && gm.getConfiguration().getBanLevelTwoPotions()){ - final BrewerInventory inv = (BrewerInventory) event.getInventory(); final HumanEntity human = event.getWhoClicked(); Bukkit.getScheduler().runTaskLater(UhcCore.getPlugin(), new CheckBrewingStandAfterClick(inv.getHolder(),human),1); - } - - } @EventHandler(priority = EventPriority.HIGHEST) @@ -380,25 +343,18 @@ public void run() { @EventHandler(priority = EventPriority.HIGHEST) public void onPlayerDropItem(PlayerDropItemEvent event) { Player player = event.getPlayer(); + ItemStack item = event.getItemDrop().getItemStack(); GameManager gm = GameManager.getGameManager(); + + if (gm.getGameState() == GameState.WAITING && GameItem.isLobbyItem(item)){ + event.setCancelled(true); + return; + } + UhcPlayer uhcPlayer; try { uhcPlayer = gm.getPlayersManager().getUhcPlayer(player); - ItemStack playerRequestItem = new ItemStack(event.getItemDrop().getItemStack()); - - // Deny drop of Lobby Item - if (gm.getGameState().equals(GameState.WAITING) && uhcPlayer.getState() == PlayerState.WAITING){ - ItemStack item = event.getItemDrop().getItemStack(); - if ( - UhcItems.isLobbyItem(item) - || UhcItems.isKitSelectionItem(item) - || UhcItems.isCraftBookItem(item) - || UhcItems.isScenariosHotbarItem(item) - || UhcItems.isLobbyBarrierItem(item) - ) { - event.setCancelled(true); - } - } + ItemStack playerRequestItem = new ItemStack(item); if (gm.getGameState().equals(GameState.WAITING) && UhcItems.isLobbyTeamItem(playerRequestItem) diff --git a/src/main/java/com/gmail/val59000mc/players/PlayersManager.java b/src/main/java/com/gmail/val59000mc/players/PlayersManager.java index a52ddb77c..6ea125736 100644 --- a/src/main/java/com/gmail/val59000mc/players/PlayersManager.java +++ b/src/main/java/com/gmail/val59000mc/players/PlayersManager.java @@ -3,6 +3,8 @@ import com.gmail.val59000mc.UhcCore; import com.gmail.val59000mc.configuration.MainConfiguration; import com.gmail.val59000mc.configuration.VaultManager; +import com.gmail.val59000mc.customitems.CraftsManager; +import com.gmail.val59000mc.customitems.GameItem; import com.gmail.val59000mc.customitems.KitsManager; import com.gmail.val59000mc.customitems.UhcItems; import com.gmail.val59000mc.events.PlayerStartsPlayingEvent; @@ -239,14 +241,8 @@ public void setPlayerWaitsAtLobby(UhcPlayer uhcPlayer){ player.setExhaustion(20); player.setFoodLevel(20); player.setExp(0); - UhcItems.giveLobbyItemTo(player); - UhcItems.giveKitSelectionTo(player); - UhcItems.giveCraftBookTo(player); - if (gm.getConfiguration().getUseTeamColors()){ - UhcItems.giveLobbyColorItemTo(player); - } - UhcItems.giveScenariosItemTo(player); - UhcItems.giveBungeeItemTo(player); + + UhcItems.giveLobbyItemsTo(player); } catch (UhcPlayerNotOnlineException e) { // Do nothing beacause WAITING is a safe state } @@ -274,13 +270,12 @@ public void setPlayerStartPlaying(UhcPlayer uhcPlayer){ player.addPotionEffect(new PotionEffect(PotionEffectType.BLINDNESS, 999999, 1), false); player.addPotionEffect(new PotionEffect(PotionEffectType.SLOW_DIGGING, 999999, 40), false); player.setGameMode(GameMode.SURVIVAL); - if(cfg.getEnablePlayingCompass()) - UhcItems.giveCompassPlayingTo(player); if(cfg.getEnableExtraHalfHearts()){ VersionUtils.getVersionUtils().setPlayerMaxHealth(player, 20+((double) cfg.getExtraHalfHearts())); player.setHealth(20+((double) cfg.getExtraHalfHearts())); } - UhcItems.giveCraftBookTo(player); + UhcItems.giveGameItemTo(player, GameItem.COMPASS_ITEM); + UhcItems.giveGameItemTo(player, GameItem.CUSTOM_CRAFT_BOOK); KitsManager.giveKitTo(player); } catch (UhcPlayerNotOnlineException e) { // Nothing done diff --git a/src/main/java/com/gmail/val59000mc/utils/UniversalMaterial.java b/src/main/java/com/gmail/val59000mc/utils/UniversalMaterial.java index a2d6675dd..b4c82b032 100644 --- a/src/main/java/com/gmail/val59000mc/utils/UniversalMaterial.java +++ b/src/main/java/com/gmail/val59000mc/utils/UniversalMaterial.java @@ -80,6 +80,11 @@ public enum UniversalMaterial{ IRON_SWORD, DIAMOND_SWORD, EGG, + ENCHANTED_BOOK, + PAPER, + BARRIER, + AIR, + COMPASS, // Flowers POPPY("RED_ROSE", "POPPY", (short) 0), @@ -101,6 +106,7 @@ public enum UniversalMaterial{ WOODEN_PICKAXE("WOOD_PICKAXE", "WOODEN_PICKAXE"), GOLDEN_PICKAXE("GOLD_PICKAXE", "GOLDEN_PICKAXE"), + IRON_PICKAXE, WOODEN_SHOVEL("WOOD_SPADE", "WOODEN_SHOVEL"), STONE_SHOVEL("STONE_SPADE", "STONE_SHOVEL"),