Signed-off-by: Chaoscaot <chaoscaot444@gmail.com>
Dieser Commit ist enthalten in:
Ursprung
79050e3b09
Commit
d1ca48436c
@ -20,6 +20,7 @@
|
|||||||
package de.steamwar.inventory;
|
package de.steamwar.inventory;
|
||||||
|
|
||||||
import de.steamwar.core.Core;
|
import de.steamwar.core.Core;
|
||||||
|
import de.steamwar.sql.NodeMember;
|
||||||
import de.steamwar.sql.SchematicNode;
|
import de.steamwar.sql.SchematicNode;
|
||||||
import de.steamwar.sql.SchematicType;
|
import de.steamwar.sql.SchematicType;
|
||||||
import de.steamwar.sql.SteamwarUser;
|
import de.steamwar.sql.SteamwarUser;
|
||||||
@ -53,7 +54,9 @@ public class SchematicSelector {
|
|||||||
@Getter
|
@Getter
|
||||||
private boolean singleDirOpen;
|
private boolean singleDirOpen;
|
||||||
private boolean sdoTrigger = false;
|
private boolean sdoTrigger = false;
|
||||||
private boolean noDirOpen = true;
|
@Getter
|
||||||
|
@Setter
|
||||||
|
private int openedDirs = 0;
|
||||||
|
|
||||||
public SchematicSelector(Player player, SelectorTarget target, Consumer<SchematicNode> callback) {
|
public SchematicSelector(Player player, SelectorTarget target, Consumer<SchematicNode> callback) {
|
||||||
this.player = player;
|
this.player = player;
|
||||||
@ -87,7 +90,7 @@ public class SchematicSelector {
|
|||||||
|
|
||||||
List<SWListInv.SWListEntry<SchematicNode>> list = new ArrayList<>();
|
List<SWListInv.SWListEntry<SchematicNode>> list = new ArrayList<>();
|
||||||
|
|
||||||
if(parent != null && !noDirOpen) {
|
if(parent != null && openedDirs != 0) {
|
||||||
list.add(new SWListInv.SWListEntry<>(new SWItem(Material.ARROW, Core.MESSAGE.parse("SCHEM_SELECTOR_BACK", player), clickType -> {}), null));
|
list.add(new SWListInv.SWListEntry<>(new SWItem(Material.ARROW, Core.MESSAGE.parse("SCHEM_SELECTOR_BACK", player), clickType -> {}), null));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -127,24 +130,31 @@ public class SchematicSelector {
|
|||||||
|
|
||||||
private void handleClick(SchematicNode node, SchematicNode parent) {
|
private void handleClick(SchematicNode node, SchematicNode parent) {
|
||||||
if(node == null) {
|
if(node == null) {
|
||||||
|
openedDirs--;
|
||||||
if(!singleDirOpen) {
|
if(!singleDirOpen) {
|
||||||
if(parent.getParent() == null) {
|
if(NodeMember.getNodeMember(parent.getId(), user.getId()) != null) {
|
||||||
noDirOpen = true;
|
openList(null);
|
||||||
|
} else {
|
||||||
|
openList(getParent(parent));
|
||||||
}
|
}
|
||||||
openList(getParent(parent));
|
|
||||||
} else {
|
} else {
|
||||||
SchematicNode currentParent = parent;
|
SchematicNode currentParent = parent;
|
||||||
|
boolean isMember = false;
|
||||||
do {
|
do {
|
||||||
sdoTrigger = false;
|
sdoTrigger = false;
|
||||||
|
if(NodeMember.getNodeMember(currentParent.getId(), user.getId()) != null) {
|
||||||
|
isMember = true;
|
||||||
|
}
|
||||||
currentParent = getParent(currentParent);
|
currentParent = getParent(currentParent);
|
||||||
if(currentParent == null)
|
if(currentParent == null)
|
||||||
break;
|
break;
|
||||||
getSchematicList(currentParent);
|
getSchematicList(currentParent);
|
||||||
} while (sdoTrigger);
|
} while (sdoTrigger);
|
||||||
if(currentParent == null) {
|
if(isMember || NodeMember.getNodeMember(parent.getId(), user.getId()) != null) {
|
||||||
noDirOpen = true;
|
openList(null);
|
||||||
|
} else {
|
||||||
|
openList(currentParent);
|
||||||
}
|
}
|
||||||
openList(currentParent);
|
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -155,7 +165,7 @@ public class SchematicSelector {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
filter.reset();
|
filter.reset();
|
||||||
noDirOpen = false;
|
openedDirs++;
|
||||||
openList(node);
|
openList(node);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -488,13 +488,10 @@ public class SchematicNode {
|
|||||||
StringBuilder builder = new StringBuilder(getName());
|
StringBuilder builder = new StringBuilder(getName());
|
||||||
SchematicNode currentNode = this;
|
SchematicNode currentNode = this;
|
||||||
if (currentNode.isDir()) builder.append("/");
|
if (currentNode.isDir()) builder.append("/");
|
||||||
while (currentNode.getParentNode() != null) {
|
while (currentNode.getParentNode() != null && !currentNode.getMembers().stream().anyMatch(member -> member.getMember() == user.getId())) {
|
||||||
currentNode = currentNode.getParentNode();
|
currentNode = currentNode.getParentNode();
|
||||||
builder.insert(0, split)
|
builder.insert(0, split)
|
||||||
.insert(0, currentNode.getName());
|
.insert(0, currentNode.getName());
|
||||||
if (currentNode.getMembers().stream().anyMatch(member -> member.getMember() == user.getId())) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return builder.toString();
|
return builder.toString();
|
||||||
}
|
}
|
||||||
|
In neuem Issue referenzieren
Einen Benutzer sperren