SteamWar/SpigotCore
Archiviert
13
0

NodeMember: SpigotCore #221

Zusammengeführt
Lixfel hat 6 Commits von nodemember nach master 2023-01-17 18:09:51 +01:00 zusammengeführt
2 geänderte Dateien mit 18 neuen und 35 gelöschten Zeilen

@ -1 +1 @@
Subproject commit d56150a8b105f5ad63a8c3a21b6833f388a83225
Subproject commit 8b8e6a9e574040eea1bdea955f69263e63eb8078
Veraltet
Review

Das wird nach dem Merge im CommonCore nochmal aktualisiert werden müssen.

Das wird nach dem Merge im CommonCore nochmal aktualisiert werden müssen.

Datei anzeigen

@ -20,10 +20,7 @@
package de.steamwar.inventory;
import de.steamwar.core.Core;
import de.steamwar.sql.NodeMember;
import de.steamwar.sql.SchematicNode;
import de.steamwar.sql.SchematicType;
import de.steamwar.sql.SteamwarUser;
import de.steamwar.sql.*;
import lombok.*;
import org.bukkit.Bukkit;
import org.bukkit.Material;
@ -118,7 +115,7 @@ public class SchematicSelector {
list.add(renderItem(node));
}
SWListInv<SchematicNode> inv = new SWListInv<>(player, MessageFormat.format(injectable.createTitle(player), target.target.getName(player), filter.getName() == null?(parent == null?"/":parent.generateBreadcrumbs(user)):filter.getName()), false, list, (clickType, node) -> handleClick(node, parent));
SWListInv<SchematicNode> inv = new SWListInv<>(player, MessageFormat.format(injectable.createTitle(player), target.target.getName(player), filter.getName() == null?(parent == null?"/":parent.generateBreadcrumbs()):filter.getName()), false, list, (clickType, node) -> handleClick(node, parent));
if(publicMode == PublicMode.ALL) {
if(user.getId() == 0) {
inv.setItem(48, Material.BUCKET, Core.MESSAGE.parse("SCHEM_SELECTOR_OWN", player), clickType -> {
@ -166,28 +163,21 @@ public class SchematicSelector {
}
if(!singleDirOpen) {
if(NodeMember.getNodeMember(parent.getId(), user.getId()) != null) {
return null;
return Optional.ofNullable(SchematicNode.byIdAndUser(user, parent.getId())).flatMap(SchematicNode::getOptionalParent).map(integer -> SchematicNode.byIdAndUser(user, integer)).orElse(null);
} else {
return getParent(parent);
return getParent(parent).orElse(null);
}
} else {
SchematicNode currentParent = parent;
boolean isMember = false;
Optional<SchematicNode> currentParent = Optional.of(parent);
do {
sdoTrigger = false;
if(NodeMember.getNodeMember(currentParent.getId(), user.getId()) != null) {
isMember = true;
}
currentParent = getParent(currentParent);
if(currentParent == null)
currentParent = currentParent.flatMap(SchematicSelector::getParent);
if(!currentParent.isPresent()) {
break;
getSchematicList(currentParent);
}
getSchematicList(currentParent.get());
} while (sdoTrigger);
if(isMember || NodeMember.getNodeMember(parent.getId(), user.getId()) != null) {
return null;
} else {
return currentParent;
}
return currentParent.orElse(null);
}
}
@ -397,7 +387,7 @@ public class SchematicSelector {
}
private List<SchematicNode> getFilteredSchematics() {
List<SchematicNode> nodes = new ArrayList<>(SchematicNode.getAllSchematicsAccessibleByUser(user.getId()));
List<SchematicNode> nodes = new ArrayList<>(SchematicNode.getAll(user));
nodes.removeIf(node -> {
injectable.onNodeFilter(this, node);
return !filter.matches(node);
@ -415,15 +405,11 @@ public class SchematicSelector {
List<SchematicNode> nodes = new ArrayList<>();
switch (target.target) {
case DIRECTORY:
if(parent == null) {
nodes.addAll(SchematicNode.getSchematicsAccessibleByUser(user.getId(), null));
nodes.removeIf(node -> !node.isDir());
} else {
nodes.addAll(SchematicNode.getSchematicDirectoryInNode(parent.getId()));
}
nodes.addAll(SchematicNode.list(user, Optional.ofNullable(parent).map(SchematicNode::getId).orElse(null)));
nodes.removeIf(node -> !node.isDir());
break;
case SCHEMATIC_TYPE:
nodes.addAll(SchematicNode.getAccessibleSchematicsOfTypeInParent(user.getId(), target.type.toDB(), parent==null?0:parent.getId()));
nodes.addAll(SchematicNode.accessibleByUserTypeMap(user, target.type).get(parent==null?null:parent.getId()));
if(target.rank >= 0) {
nodes.removeIf(node -> {
if(node.isDir()) {
@ -434,7 +420,7 @@ public class SchematicSelector {
}
break;
default:
nodes.addAll(SchematicNode.getSchematicsAccessibleByUser(user.getId(), parent == null?0:parent.getId()));
nodes.addAll(SchematicNode.list(user, parent == null?null:parent.getId()));
}
if(singleDirOpen && nodes.size() == 1 && nodes.get(0).isDir()) {
@ -443,11 +429,8 @@ public class SchematicSelector {
return nodes;
}
private static SchematicNode getParent(SchematicNode node) {
if(node.getParent() == null) {
return null;
}
return node.getParentNode();
private static Optional<SchematicNode> getParent(SchematicNode node) {
return node.getOptionalParent().map(integer -> SchematicNode.byIdAndUser(SteamwarUser.get(node.getEffectiveOwner()), integer));
}
public static SelectorTarget selectSchematic() {