diff --git a/SpigotCore_Main/src/de/steamwar/inventory/SchematicSelector.java b/SpigotCore_Main/src/de/steamwar/inventory/SchematicSelector.java index db42cb1..7676de2 100644 --- a/SpigotCore_Main/src/de/steamwar/inventory/SchematicSelector.java +++ b/SpigotCore_Main/src/de/steamwar/inventory/SchematicSelector.java @@ -89,6 +89,12 @@ public class SchematicSelector { injectable.onSelectorOpen(this, SchematicSelectorInjectable.OpenFrom.REOPEN); } + public void reOpenDirUp() { + depth--; + openList(dirUp(lastParent)); + injectable.onSelectorOpen(this, SchematicSelectorInjectable.OpenFrom.REOPEN); + } + private void openList(SchematicNode parent) { lastParent = parent; List nodes = applySorting(filter.isFilter()?getFilteredSchematics():getSchematicList(parent)); @@ -150,34 +156,38 @@ public class SchematicSelector { inv.open(); } + private SchematicNode dirUp(SchematicNode parent) { + if(!singleDirOpen) { + if(NodeMember.getNodeMember(parent.getId(), user.getId()) != null) { + return null; + } else { + return getParent(parent); + } + } else { + SchematicNode currentParent = parent; + boolean isMember = false; + do { + sdoTrigger = false; + if(NodeMember.getNodeMember(currentParent.getId(), user.getId()) != null) { + isMember = true; + } + currentParent = getParent(currentParent); + if(currentParent == null) + break; + getSchematicList(currentParent); + } while (sdoTrigger); + if(isMember || NodeMember.getNodeMember(parent.getId(), user.getId()) != null) { + return null; + } else { + return currentParent; + } + } + } + private void handleClick(SchematicNode node, SchematicNode parent) { if(node == null) { depth--; - if(!singleDirOpen) { - if(NodeMember.getNodeMember(parent.getId(), user.getId()) != null) { - openList(null); - } else { - openList(getParent(parent)); - } - } else { - SchematicNode currentParent = parent; - boolean isMember = false; - do { - sdoTrigger = false; - if(NodeMember.getNodeMember(currentParent.getId(), user.getId()) != null) { - isMember = true; - } - currentParent = getParent(currentParent); - if(currentParent == null) - break; - getSchematicList(currentParent); - } while (sdoTrigger); - if(isMember || NodeMember.getNodeMember(parent.getId(), user.getId()) != null) { - openList(null); - } else { - openList(currentParent); - } - } + openList(dirUp(parent)); return; } if(node.isDir()) {