diff --git a/SchematicSystem_Core/src/de/steamwar/schematicsystem/commands/SchematicCommand.java b/SchematicSystem_Core/src/de/steamwar/schematicsystem/commands/SchematicCommand.java index a9a83c8..76a1ce6 100644 --- a/SchematicSystem_Core/src/de/steamwar/schematicsystem/commands/SchematicCommand.java +++ b/SchematicSystem_Core/src/de/steamwar/schematicsystem/commands/SchematicCommand.java @@ -216,33 +216,40 @@ public class SchematicCommand extends SWCommand { } @Register("addmember") - public void addMember(Player player, SchematicNode node, SteamwarUser target) { + public void addMember(Player player, SchematicNode node, SteamwarUser... targets) { SteamwarUser user = getUser(player); if (node.getOwner() != user.getId()) { player.sendMessage(SchematicSystem.PREFIX + "§cDu kannst nur auf deine eigenen Sachen jemanden hinzufügen."); return; } + List added = new ArrayList<>(); + for (SteamwarUser target: targets) { + if (user.getId() == target.getId()) { + player.sendMessage(SchematicSystem.PREFIX + "§cAlso bitte: Das ist deine eigene Schematic!"); + continue; + } - if (user.getId() == target.getId()) { - player.sendMessage(SchematicSystem.PREFIX + "§cAlso bitte: Das ist deine eigene Schematic!"); - return; + if (target.getId() == 0) { + player.sendMessage(SchematicSystem.PREFIX + "§cFür Public-Anträge bitte bei der Moderation melden"); + continue; + } + + if (NodeMember.getNodeMember(node.getId(), target.getId()) != null) { + player.sendMessage(SchematicSystem.PREFIX + "§c" + target.getUserName() + " ist bereits auf diese Schematic geaddet"); + continue; + } + + NodeMember.createNodeMember(node.getId(), target.getId()); + added.add(target); + + Player t = Bukkit.getPlayer(target.getUUID()); + if (t != null) { + t.sendMessage(SchematicSystem.PREFIX + "Du hast nun Zugriff auf die Schematic §e" + node.getName() + " §7von §e" + player.getName()); + } } - if (target.getId() == 0) { - player.sendMessage(SchematicSystem.PREFIX + "§cFür Public-Anträge bitte bei der Moderation melden"); - return; - } - - if (NodeMember.getNodeMember(node.getId(), target.getId()) != null) { - player.sendMessage(SchematicSystem.PREFIX + "§cDieser Spieler ist bereits auf diese Schematic geaddet"); - return; - } - NodeMember.createNodeMember(node.getId(), target.getId()); - player.sendMessage(SchematicSystem.PREFIX + "Der Spieler §e" + target.getUserName() + " §7hat nun Zugriff auf die Schematic §e" + node.generateBreadcrumbs(user)); - - Player t = Bukkit.getPlayer(target.getUUID()); - if (t != null) { - t.sendMessage(SchematicSystem.PREFIX + "Du hast nun Zugriff auf die Schematic §e" + node.getName() + " §7von §e" + player.getName()); + if(!added.isEmpty()) { + player.sendMessage(SchematicSystem.PREFIX + (added.size()>1?"Die":"Der") + " Spieler §e" + added.stream().map(SteamwarUser::getUserName).reduce((s, s2) -> s + ", " + s2).get() + " §7" + (added.size()>1?"haben":"hat") + " nun Zugriff auf die Schematic §e" + node.generateBreadcrumbs(user)); } } diff --git a/SchematicSystem_Core/src/de/steamwar/schematicsystem/commands/SchematicCommandHelp.java b/SchematicSystem_Core/src/de/steamwar/schematicsystem/commands/SchematicCommandHelp.java index 2f96d3a..5d48306 100644 --- a/SchematicSystem_Core/src/de/steamwar/schematicsystem/commands/SchematicCommandHelp.java +++ b/SchematicSystem_Core/src/de/steamwar/schematicsystem/commands/SchematicCommandHelp.java @@ -32,7 +32,6 @@ public class SchematicCommandHelp { public static void printHelpMainPage(Player player) { player.sendMessage("§e§lSchematicSystem §8§lHilfe"); - player.sendMessage("§7Kategorien§8:"); for (HelpPage page : HelpPage.values()) { TextComponent pageComp = new TextComponent(page.mainText); pageComp.setColor(ChatColor.GRAY); @@ -51,7 +50,7 @@ public class SchematicCommandHelp { public enum HelpPage { - ANSICHT("Ansichtbefehle", "Suche oder lade Schematics", new String[]{ + ANSICHT("Finden & Laden", "Suche oder lade Schematics", new String[]{ "§8/§7schem §einfo §8[§7Schematic§8] - §7Zeigt dir Informationen zur Schematic", "§8/§7schem §elist §8- §7Zeigt dir deine Schematics an", "§8/§7schem §elist public §8- §7Zeigt alle Public-Schematics", @@ -59,7 +58,7 @@ public class SchematicCommandHelp { "§8/§7schem §eload §8[§7Schematic§8] - §7Lädt eine Schematic", "§8/§7schem §edownload §8[§7Schematic§8] - §7Gibt dir einen Downloadlink (1 min gültig)" }), - BEARBEITUNG("Bearbeitungsbefehle", "Modifizierung von Schematics und Ordnern", new String[]{ + BEARBEITUNG("Speichern & Bearbeiten", "Modifizierung von Schematics und Ordnern", new String[]{ "§8/§7schem §esave §8[§7Schematic§8] - §7Speichert dein Clipboard als Schematic", "§8/§7schem §eordner §8[§7Ordner§8] - §7Erstelle einen leeren Ordner", "§8/§7schem §emove §8[§7Schematic§8] [§7Neuer Pfad§8] - §7Verschiebe eine Schematic", @@ -67,7 +66,7 @@ public class SchematicCommandHelp { "§8/§7schem §echangetype §8[§7Schematic§8] - §7Ändert die Art deiner Schematic", "§8/§7schem §edelete §8[§7Schematic§8] - §7Löscht eine Schematic" }), - MEMBER("Memberbefehle", "Schematics mit anderen teilen", new String[]{ + MEMBER("Besitzrechte", "Schematics mit anderen teilen", new String[]{ "§8/§7schem §eaddmember §8[§7Schematic§8] §8[§7Spieler§8] - §7Fügt einen Spieler zu einer Schematic hinzu", "§8/§7schem §edelmember §8[§7Schematic§8] §8[§7Spieler§8] - §7Entfernt einen Spieler von einer Schematic", "§8/§7schem §eclearmember §8[§7Schematic§8] - §7Entfernt alle Spieler von der Schematic", diff --git a/SchematicSystem_Core/src/de/steamwar/schematicsystem/commands/SchematicCommandUtils.java b/SchematicSystem_Core/src/de/steamwar/schematicsystem/commands/SchematicCommandUtils.java index b36d5ad..a283ff4 100644 --- a/SchematicSystem_Core/src/de/steamwar/schematicsystem/commands/SchematicCommandUtils.java +++ b/SchematicSystem_Core/src/de/steamwar/schematicsystem/commands/SchematicCommandUtils.java @@ -43,9 +43,9 @@ public class SchematicCommandUtils { private static final int CHUNK_SIZE = 15; private static final List PUBLIC_TOGGLED = new ArrayList<>(); + private static final List FORBIDDEN_NAMES = Collections.unmodifiableList(Arrays.asList("public")); - private SchematicCommandUtils() { - } + private SchematicCommandUtils() {} public static boolean invalidSchemName(Player player, String[] layers) { for (String layer : layers) { @@ -64,6 +64,10 @@ public class SchematicCommandUtils { player.sendMessage(SchematicSystem.PREFIX + "§cDer angegebene Schematicname enthält verbotene Zeichen"); return true; } + if(FORBIDDEN_NAMES.contains(layer.toLowerCase())) { + player.sendMessage(SchematicSystem.PREFIX + "§cDer Pfad darf nicht \"§l" + layer + "§c\" enthalten"); + return true; + } } return false; }