From 16ac997b28c1bd9075c0fa53f6785aac51b53a75 Mon Sep 17 00:00:00 2001 From: Morphan1 Date: Sun, 12 Oct 2014 02:54:02 -0400 Subject: [PATCH] Stop workbenches from being opened by tags This is a somewhat error prone system if you don't know what you're doing. I'm not sure how to handle sub-tag exceptions after the dInventory returns null... Or if that should even be done... @mcmonkey4eva ? --- .../aufdemrand/denizen/objects/dInventory.java | 10 ++++++++-- .../net/aufdemrand/denizen/objects/dPlayer.java | 17 ++++++++++------- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/src/main/java/net/aufdemrand/denizen/objects/dInventory.java b/src/main/java/net/aufdemrand/denizen/objects/dInventory.java index 6a834d8433..4f651fc2aa 100644 --- a/src/main/java/net/aufdemrand/denizen/objects/dInventory.java +++ b/src/main/java/net/aufdemrand/denizen/objects/dInventory.java @@ -194,8 +194,14 @@ else if (type.equals("player")) { return dPlayer.valueOf(holder).getInventory(); } else if (type.equals("workbench")) { - if (dPlayer.matches(holder)) - return dPlayer.valueOf(holder).getWorkbench(); + if (dPlayer.matches(holder)) { + dInventory workbench = dPlayer.valueOf(holder).getWorkbench(); + if (workbench != null) + dB.echoError("Value of dInventory returning null (" + string + ")." + + " Specified player does not have an open workbench."); + else + return workbench; + } } else if (type.equals("enderchest")) { if (dPlayer.matches(holder)) diff --git a/src/main/java/net/aufdemrand/denizen/objects/dPlayer.java b/src/main/java/net/aufdemrand/denizen/objects/dPlayer.java index 976ba4ddc4..774616c7a3 100644 --- a/src/main/java/net/aufdemrand/denizen/objects/dPlayer.java +++ b/src/main/java/net/aufdemrand/denizen/objects/dPlayer.java @@ -258,17 +258,20 @@ public dInventory getInventory() { public CraftingInventory getBukkitWorkbench() { if (isOnline()) { - if (getPlayerEntity().getOpenInventory().getType() != InventoryType.WORKBENCH - && getPlayerEntity().getOpenInventory().getType() != InventoryType.CRAFTING) - getPlayerEntity().openWorkbench(null, true); - return (CraftingInventory) getPlayerEntity().getOpenInventory().getTopInventory(); + if (getPlayerEntity().getOpenInventory().getType() == InventoryType.WORKBENCH + || getPlayerEntity().getOpenInventory().getType() == InventoryType.CRAFTING) + return (CraftingInventory) getPlayerEntity().getOpenInventory().getTopInventory(); } - else return null; + return null; } public dInventory getWorkbench() { - if (isOnline()) return new dInventory(getBukkitWorkbench(), getPlayerEntity()); - else return null; + if (isOnline()) { + CraftingInventory workbench = getBukkitWorkbench(); + if (workbench != null) + return new dInventory(workbench, getPlayerEntity()); + } + return null; } public Inventory getBukkitEnderChest() {