diff --git a/src/main/java/com/drtshock/playervaults/Metrics.java b/src/main/java/com/drtshock/playervaults/Metrics.java index a41b8ff..f145632 100644 --- a/src/main/java/com/drtshock/playervaults/Metrics.java +++ b/src/main/java/com/drtshock/playervaults/Metrics.java @@ -135,21 +135,22 @@ public class Metrics { logSentData = config.getBoolean("logSentData", false); logResponseStatusText = config.getBoolean("logResponseStatusText", false); - boolean found = false; - // Search for all other bStats Metrics classes to see if we are the first one - for (Class service : Bukkit.getServicesManager().getKnownServices()) { - try { - service.getField("B_STATS_VERSION"); // Our identifier :) - found = true; // We aren't the first - break; - } catch (NoSuchFieldException ignored) { + if (enabled) { + boolean found = false; + // Search for all other bStats Metrics classes to see if we are the first one + for (Class service : Bukkit.getServicesManager().getKnownServices()) { + try { + service.getField("B_STATS_VERSION"); // Our identifier :) + found = true; // We aren't the first + break; + } catch (NoSuchFieldException ignored) { } + } + // Register our service + Bukkit.getServicesManager().register(Metrics.class, this, plugin, ServicePriority.Normal); + if (!found) { + // We are the first! + startSubmitting(); } - } - // Register our service - Bukkit.getServicesManager().register(Metrics.class, this, plugin, ServicePriority.Normal); - if (!found) { - // We are the first! - startSubmitting(); } } diff --git a/src/main/java/com/drtshock/playervaults/listeners/Listeners.java b/src/main/java/com/drtshock/playervaults/listeners/Listeners.java index fed8d36..b945318 100644 --- a/src/main/java/com/drtshock/playervaults/listeners/Listeners.java +++ b/src/main/java/com/drtshock/playervaults/listeners/Listeners.java @@ -115,16 +115,29 @@ public class Listeners implements Listener { int num = info.getNumber(); String inventoryTitle = event.getView().getTitle(); String title = Lang.VAULT_TITLE.toString().replace("%number", String.valueOf(num)).replace("%p", info.getVaultName()); - if (((inventoryTitle.equalsIgnoreCase(title)) && event.getCurrentItem() != null)) { - try { - event.getCurrentItem().toString(); - } catch (Exception e) { - player.sendMessage(Lang.TITLE.toString() + Lang.BLOCKED_BAD_ITEM); - event.setCancelled(true); + if (inventoryTitle.equalsIgnoreCase(title)) { + ItemStack[] items = new ItemStack[2]; + items[0] = event.getCurrentItem(); + if (event.getHotbarButton() > -1 && event.getWhoClicked().getInventory().getItem(event.getHotbarButton()) != null) { + items[1] = event.getWhoClicked().getInventory().getItem(event.getHotbarButton()); } - if (!player.hasPermission("playervaults.bypassblockeditems") && PlayerVaults.getInstance().isBlockedMaterial(event.getCurrentItem().getType())) { - event.setCancelled(true); - player.sendMessage(Lang.TITLE.toString() + Lang.BLOCKED_ITEM.toString().replace("%m", event.getCurrentItem().getType().name())); + + for (ItemStack item : items) { + if (item == null) { + continue; + } + try { + item.toString(); + } catch (Exception e) { + player.sendMessage(Lang.TITLE.toString() + Lang.BLOCKED_BAD_ITEM); + event.setCancelled(true); + return; + } + if (!player.hasPermission("playervaults.bypassblockeditems") && PlayerVaults.getInstance().isBlockedMaterial(item.getType())) { + event.setCancelled(true); + player.sendMessage(Lang.TITLE.toString() + Lang.BLOCKED_ITEM.toString().replace("%m", item.getType().name())); + return; + } } } }