diff --git a/SchematicSystem_Core/src/de/steamwar/schematicsystem/commands/GUI.java b/SchematicSystem_Core/src/de/steamwar/schematicsystem/commands/GUI.java index 514e4b9..a05f3bf 100644 --- a/SchematicSystem_Core/src/de/steamwar/schematicsystem/commands/GUI.java +++ b/SchematicSystem_Core/src/de/steamwar/schematicsystem/commands/GUI.java @@ -22,6 +22,7 @@ package de.steamwar.schematicsystem.commands; import de.steamwar.inventory.*; import de.steamwar.schematicsystem.SchematicSystem; import de.steamwar.sql.*; +import lombok.experimental.UtilityClass; import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.event.inventory.ClickType; @@ -31,16 +32,13 @@ import java.util.*; import static de.steamwar.schematicsystem.commands.SchematicCommandUtils.*; public class GUI { + private GUI() {} - public static void open(Player player) { - list(player); - } - - private static void list(Player player) { + public static void list(Player player) { SchematicSelector selector = new SchematicSelector(player, SchematicSelector.selectSchematic(), new SchematicSelectorInjectable() { @Override public String createTitle(Player player) { - return "Schematic GUI: {1}"; + return "Schematics {1}"; } @Override @@ -48,7 +46,7 @@ public class GUI { if(parent == null) { inv.setItem(49, Material.AIR, "", clickType -> {}); } else { - inv.setItem(49, Material.ANVIL, "§7Ordner Eigenschaften", clickType -> { + inv.setItem(49, Material.ANVIL, "§7Ordnereigenschaften", clickType -> { info(selector.getPlayer(), parent); }); } @@ -64,7 +62,7 @@ public class GUI { if(!node.isDir()) { inv.setItem(0, SWItem.getMaterial("WOOD_AXE"), "§eLaden", click -> { player.closeInventory(); - SchematicSystem.getInstance().SCHEMATIC_COMMAND.loadSchem(player, node); + SchematicCommandUtils.loadSchem(player, node); }); } @@ -80,9 +78,7 @@ public class GUI { } } } - Material mat = node.isDir()?SWItem.getMaterial("CHEST"):SWItem.getMaterial("CAULDRON_ITEM"); - if(node.getItem() != null && !node.getItem().equals("")) - mat = SWItem.getMaterial(node.getItem()); + Material mat = SWItem.getMaterial(node.getItem()); inv.setItem(2, mat, "§e" + mat.name(), Arrays.asList("§7Zum Ändern", "§7anklicken"), false, click -> { player.closeInventory(); @@ -95,7 +91,7 @@ public class GUI { }); inv.setItem(4, SWItem.getMaterial("MAGENTA_GLAZED_TERRACOTTA"), "§eDownload", click -> { player.closeInventory(); - SchematicSystem.getInstance().SCHEMATIC_COMMAND.download(player, node); + SchematicCommandUtils.download(player, node); }); } SWItem skull = SWItem.getPlayerSkull("MHF_STEVE"); @@ -163,7 +159,7 @@ public class GUI { SWListInv inv = new SWListInv<>(p, "Typ ändern", types, (clickType, schematicType) -> { p.closeInventory(); - SchematicSystem.getInstance().SCHEMATIC_COMMAND.changeType(p, schem, schematicType); + SchematicCommandUtils.changeType(p, schem, schematicType, null); }); inv.setCallback(-999, (ClickType click) -> p.closeInventory()); inv.open(); diff --git a/SchematicSystem_Core/src/de/steamwar/schematicsystem/commands/SchematicCommand.java b/SchematicSystem_Core/src/de/steamwar/schematicsystem/commands/SchematicCommand.java index 847f1fa..b527779 100644 --- a/SchematicSystem_Core/src/de/steamwar/schematicsystem/commands/SchematicCommand.java +++ b/SchematicSystem_Core/src/de/steamwar/schematicsystem/commands/SchematicCommand.java @@ -66,7 +66,7 @@ public class SchematicCommand extends SWCommand { @Register("gui") public void gui(Player player) { - GUI.open(player); + GUI.list(player); } @Register("list") @@ -121,7 +121,7 @@ public class SchematicCommand extends SWCommand { @Register({"info", "/"}) public void schemInfoSecret(Player player) { - player.sendMessage("§7--==( §eSteam§8War §eSchematic-System §7)==--"); + player.sendMessage("§eSteam§8War §eSchematic-System"); player.sendMessage("§7Anzahl an Schematics: §e" + SchematicNode.countNodes()); player.sendMessage("§7Von dir einsehbar: §e" + SchematicNode.getAllSchematicsAccessibleByUser(getUser(player).getId()).size()); player.sendMessage("§7Autoren: §e" + Arrays.toString(SchematicSystem.getInstance().getDescription().getAuthors().toArray())); @@ -151,21 +151,7 @@ public class SchematicCommand extends SWCommand { @Register("l") @Register("load") public void loadSchem(Player player, SchematicNode node) { - if (node.isDir()) { - player.sendMessage(SchematicSystem.PREFIX + "§cDu kannst keine Ordner Laden"); - return; - } - - try { - node.loadToPlayer(player); - player.sendMessage(SchematicSystem.PREFIX + "§7Schematic §e" + node.getName() + " §7geladen!"); - Bukkit.getLogger().log(Level.INFO, "{0} has loaded Schematic {1} {2}", new Object[]{player.getName(), node.getId(), node.getName()}); - } catch (NoClipboardException e) { - player.sendMessage(SchematicSystem.PREFIX + "§cEs konnte keine Daten in der Schematic gefunden werden."); - } catch (Exception e) { - player.sendMessage(SchematicSystem.PREFIX + "§cDie Schematic konnte nicht geladen werden."); - throw new SecurityException(e); - } + SchematicCommandUtils.loadSchem(player, node); } @Register("save") @@ -306,14 +292,7 @@ public class SchematicCommand extends SWCommand { @Register("download") public void download(Player player, SchematicNode node) { - SteamwarUser user = getUser(player); - if (node.getOwner() != user.getId()) { - player.sendMessage("§cDu darfst nur deine eigenen Schematics herunterladen!"); - return; - } - - player.sendMessage(SchematicSystem.PREFIX + "Dein Download Link:"); - player.sendMessage(NodeDownload.getLink(node)); + SchematicCommandUtils.download(player, node); } @Register("dir") @@ -359,63 +338,7 @@ public class SchematicCommand extends SWCommand { @Register("changetype") public void changeType(Player player, SchematicNode node, SchematicType type, Extend extend) { - SteamwarUser user = getUser(player); - if (node.getOwner() != user.getId()) { - player.sendMessage(SchematicSystem.PREFIX + "§cDu kannst nur deine eigenen Schematics einsenden."); - return; - } - - if (node.isDir()) { - player.sendMessage(SchematicSystem.PREFIX + "§cOrdner haben keinen Typen."); - return; - } - - if (node.getType().equals(type.toDB())) { - player.sendMessage(SchematicSystem.PREFIX + "§cDie Schematic hat schon diesen Typen"); - return; - } - - if (type.writeable()) { - node.setSchemtype(type); - player.sendMessage(SchematicSystem.PREFIX + "§aSchematictyp geändert"); - } else if (type.fightType()) { - if (node.getSchemtype().check()) { - player.sendMessage(SchematicSystem.PREFIX + "§cDu hast diese Schematic bereits eingesendet"); - return; - } - - AutoCheckResult result = CheckSchemType.get(type).autoCheck(node); - Collection errors = result.errors(); - for (String warning : result.warnings()) { - player.sendMessage(" §e" + warning); - } - for (String error : errors) { - player.sendMessage(" §c" + error); - } - if (!errors.isEmpty()) { - player.sendMessage(SchematicSystem.PREFIX + "§cDie Schematic ist nicht regelkonform"); - return; - } - - if (extend == null) { - SWInventory inv = new SWInventory(player, 9, "Schematic ausfahren"); - inv.setItem(0, SWItem.getDye(10), (byte) 10, "§eSchematic ausfahren", click -> { - new PrepareSchemPacket(SteamwarUser.get(player.getUniqueId()), node, type).send(player); - player.sendMessage(SchematicSystem.PREFIX + "§aDer Vorbereitungsserver wird gestartet"); - player.closeInventory(); - }); - inv.setItem(8, SWItem.getDye(7), (byte) 7, "§eDirekt einsenden", click -> { - node.setSchemtype(type.checkType()); - player.sendMessage(SchematicSystem.PREFIX + "§aDie Schematic wird zeitnah überprüft"); - player.closeInventory(); - }); - inv.setCallback(-999, click -> player.closeInventory()); - inv.open(); - } else if (extend == Extend.AUSFAHREN) { - new PrepareSchemPacket(SteamwarUser.get(player.getUniqueId()), node, type).send(player); - player.sendMessage(SchematicSystem.PREFIX + "§aDer Vorbereitungsserver wird gestartet"); - } - } + SchematicCommandUtils.changeType(player, node, type, extend); } @Register("move") diff --git a/SchematicSystem_Core/src/de/steamwar/schematicsystem/commands/SchematicCommandHelp.java b/SchematicSystem_Core/src/de/steamwar/schematicsystem/commands/SchematicCommandHelp.java index 7f49b91..2f96d3a 100644 --- a/SchematicSystem_Core/src/de/steamwar/schematicsystem/commands/SchematicCommandHelp.java +++ b/SchematicSystem_Core/src/de/steamwar/schematicsystem/commands/SchematicCommandHelp.java @@ -31,8 +31,8 @@ public class SchematicCommandHelp { } public static void printHelpMainPage(Player player) { - player.sendMessage("§7---===( §eSchematicSystem Hilfe §7)===---"); - player.sendMessage("§eKategorien: "); + 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); @@ -43,7 +43,7 @@ public class SchematicCommandHelp { } public static void printHelpPage(Player player, HelpPage page) { - player.sendMessage("§7---===( §eSchematicSystem Hilfe §7)===---"); + player.sendMessage("§e§lSchematicSystem §8§lHilfe"); for (String s : page.content) { player.sendMessage(s); } @@ -51,28 +51,28 @@ public class SchematicCommandHelp { public enum HelpPage { - ANSICHT("Ansichtbefehle", "Schaue dir deine oder dir Freigegebene Schematics an", new String[]{ - "§8/§eschem info §8[§7Schematic§8] - §7Zeigt dir Informationen zur Schematic", - "§8/§eschem list §8- §7Zeigt dir deine Schematics an", - "§8/§eschem list public §8- §7Zeigt alle Public-Schematics", - "§8/§eschem search §8[§7Stichwort§8] - §7Sucht nach passenden Schematics", - "§8/§eschem load §8[§7Schematic§8] - §7Lädt eine Schematic", - "§8/§eschem download §8[§7Schematic§8] - §7Gibt dir einen Downloadlink (1 min gültig)" + ANSICHT("Ansichtbefehle", "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", + "§8/§7schem §esearch §8[§7Stichwort§8] - §7Sucht nach passenden Schematics", + "§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[]{ - "§8/§eschem save §8[§7Schematic§8] - §7Speichert dein Clipboard als Schematic", - "§8/§eschem ordner §8[§7Ordner§8] - §7Erstelle einen Leeren Ordner", - "§8/§eschem move §8[§7Schematic§8] [§7Neuer Pfad§8] - §7Verschiebe eine Schematic", - "§8/§eschem rename §8[§7Schematic§8] [§7Neuer Name§8] - §7Gib der Schematic einen neuen Namen", - "§8/§eschem changetype §8[§7Schematic§8] - §7Ändert die Art deiner Schematic", - "§8/§eschem delete §8[§7Schematic§8] - §7Löscht eine Schematic" + "§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", + "§8/§7schem §erename §8[§7Schematic§8] [§7Neuer Name§8] - §7Gib der Schematic einen neuen Namen", + "§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[]{ - "§8/§eschem addmember §8[§7Schematic§8] §8[§7Spieler§8] - §7Fügt einen Spieler zu einer Schematic hinzu", - "§8/§eschem delmember §8[§7Schematic§8] §8[§7Spieler§8] - §7Entfernt einen Spieler von einer Schematic", - "§8/§eschem clearmember §8[§7Schematic§8] - §7Entfernt alle Spieler von der Schematic", - "§8/§eschem addteam §8[§7Schematic§8] - §7Füge jeden aus deinem Team auf die Schematic hinzu", - "§8/§eschem remteam §8[§7Schematic§8] - §7Entferne jeden aus deinem Team von der Schematic" + "§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", + "§8/§7schem §eaddteam §8[§7Schematic§8] - §7Füge jeden aus deinem Team auf die Schematic hinzu", + "§8/§7schem §eremteam §8[§7Schematic§8] - §7Entferne jeden aus deinem Team 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 ebcb408..b36d5ad 100644 --- a/SchematicSystem_Core/src/de/steamwar/schematicsystem/commands/SchematicCommandUtils.java +++ b/SchematicSystem_Core/src/de/steamwar/schematicsystem/commands/SchematicCommandUtils.java @@ -19,6 +19,11 @@ package de.steamwar.schematicsystem.commands; +import de.steamwar.comms.packets.PrepareSchemPacket; +import de.steamwar.inventory.SWInventory; +import de.steamwar.inventory.SWItem; +import de.steamwar.schematicsystem.AutoCheckResult; +import de.steamwar.schematicsystem.CheckSchemType; import de.steamwar.schematicsystem.SchematicSystem; import de.steamwar.sql.*; import net.md_5.bungee.api.ChatColor; @@ -26,10 +31,12 @@ import net.md_5.bungee.api.chat.ClickEvent; import net.md_5.bungee.api.chat.ComponentBuilder; import net.md_5.bungee.api.chat.HoverEvent; import net.md_5.bungee.api.chat.TextComponent; +import org.bukkit.Bukkit; import org.bukkit.entity.Player; import java.time.format.DateTimeFormatter; import java.util.*; +import java.util.logging.Level; import java.util.stream.Collectors; public class SchematicCommandUtils { @@ -66,7 +73,7 @@ public class SchematicCommandUtils { SteamwarUser user = getUser(player); int pageCount = (int) Math.ceil(nodes.size() / (double) CHUNK_SIZE); - player.sendMessage("§7--==( §eSchematics §8(§e" + nodes.size() + "§8) §7)==--"); + player.sendMessage("§eSchematics §8(§e" + nodes.size() + "§8)"); player.sendMessage("§7Aktueller Pfad: §e" + (breadcrumbs.isEmpty() ? "/" : breadcrumbs)); if (!breadcrumbs.isEmpty()) { TextComponent back = new TextComponent("§e../"); @@ -82,7 +89,7 @@ public class SchematicCommandUtils { StringBuilder nodeString = new StringBuilder(); if (node.isDir()) { - nodeString.append("§9DIR §e"); + nodeString.append("§7§lDIR §e"); } else { SchematicType type = node.getSchemtype(); if (type != SchematicType.Normal) { @@ -148,12 +155,12 @@ public class SchematicCommandUtils { public static void printSchemInfo(Player player, SchematicNode node) { SteamwarUser user = getUser(player); - player.sendMessage("§7--==( §e" + node.getName() + " §7)==--"); + player.sendMessage("§7Schematic: §e" + node.getName()); player.sendMessage("§7Name: §e" + node.generateBreadcrumbs(user)); player.sendMessage("§7Besitzer: §e" + SteamwarUser.get(node.getOwner()).getUserName()); player.sendMessage("§7Ordner: §e" + (node.getParent() == null || node.getParent() == 0 ? "/" : node.getParentNode().generateBreadcrumbs(user))); player.sendMessage("§7Letzes Update: §e" + node.getLastUpdate().toLocalDateTime().format(DateTimeFormatter.ofPattern("HH:mm dd.MM.yyyy", Locale.GERMAN))); - player.sendMessage("§7Typ: §e" + (node.isDir() ? "§9DIR" : node.getSchemtype().name())); + player.sendMessage("§7Typ: §e" + (node.isDir() ? "§7DIR" : node.getSchemtype().name())); if (!node.isDir()) { if (node.getRank() > 0) { player.sendMessage("§7Rang: §e" + node.getRank()); @@ -278,4 +285,93 @@ public class SchematicCommandUtils { public static void turnOffPublic(Player player) { PUBLIC_TOGGLED.remove(player); } + + public static void loadSchem(Player player, SchematicNode node) { + if (node.isDir()) { + player.sendMessage(SchematicSystem.PREFIX + "§cDu kannst keine Ordner Laden"); + return; + } + + try { + node.loadToPlayer(player); + player.sendMessage(SchematicSystem.PREFIX + "§7Schematic §e" + node.getName() + " §7geladen!"); + Bukkit.getLogger().log(Level.INFO, "{0} has loaded Schematic {1} {2}", new Object[]{player.getName(), node.getId(), node.getName()}); + } catch (NoClipboardException e) { + player.sendMessage(SchematicSystem.PREFIX + "§cEs konnte keine Daten in der Schematic gefunden werden."); + } catch (Exception e) { + player.sendMessage(SchematicSystem.PREFIX + "§cDie Schematic konnte nicht geladen werden."); + throw new SecurityException(e); + } + } + + public static void download(Player player, SchematicNode node) { + SteamwarUser user = getUser(player); + if (node.getOwner() != user.getId()) { + player.sendMessage("§cDu darfst nur deine eigenen Schematics herunterladen!"); + return; + } + + player.sendMessage(SchematicSystem.PREFIX + "Dein Download Link:"); + player.sendMessage(NodeDownload.getLink(node)); + } + + public static void changeType(Player player, SchematicNode node, SchematicType type, SchematicCommand.Extend extend) { + SteamwarUser user = getUser(player); + if (node.getOwner() != user.getId()) { + player.sendMessage(SchematicSystem.PREFIX + "§cDu kannst nur deine eigenen Schematics einsenden."); + return; + } + + if (node.isDir()) { + player.sendMessage(SchematicSystem.PREFIX + "§cOrdner haben keinen Typen."); + return; + } + + if (node.getType().equals(type.toDB())) { + player.sendMessage(SchematicSystem.PREFIX + "§cDie Schematic hat schon diesen Typen"); + return; + } + + if (type.writeable()) { + node.setSchemtype(type); + player.sendMessage(SchematicSystem.PREFIX + "§aSchematictyp geändert"); + } else if (type.fightType()) { + if (node.getSchemtype().check()) { + player.sendMessage(SchematicSystem.PREFIX + "§cDu hast diese Schematic bereits eingesendet"); + return; + } + + AutoCheckResult result = CheckSchemType.get(type).autoCheck(node); + Collection errors = result.errors(); + for (String warning : result.warnings()) { + player.sendMessage(" §e" + warning); + } + for (String error : errors) { + player.sendMessage(" §c" + error); + } + if (!errors.isEmpty()) { + player.sendMessage(SchematicSystem.PREFIX + "§cDie Schematic ist nicht regelkonform"); + return; + } + + if (extend == null) { + SWInventory inv = new SWInventory(player, 9, "Schematic ausfahren"); + inv.setItem(0, SWItem.getDye(10), (byte) 10, "§eSchematic ausfahren", click -> { + new PrepareSchemPacket(SteamwarUser.get(player.getUniqueId()), node, type).send(player); + player.sendMessage(SchematicSystem.PREFIX + "§aDer Vorbereitungsserver wird gestartet"); + player.closeInventory(); + }); + inv.setItem(8, SWItem.getDye(7), (byte) 7, "§eDirekt einsenden", click -> { + node.setSchemtype(type.checkType()); + player.sendMessage(SchematicSystem.PREFIX + "§aDie Schematic wird zeitnah überprüft"); + player.closeInventory(); + }); + inv.setCallback(-999, click -> player.closeInventory()); + inv.open(); + } else if (extend == SchematicCommand.Extend.AUSFAHREN) { + new PrepareSchemPacket(SteamwarUser.get(player.getUniqueId()), node, type).send(player); + player.sendMessage(SchematicSystem.PREFIX + "§aDer Vorbereitungsserver wird gestartet"); + } + } + } } diff --git a/SchematicSystem_Main/pom.xml b/SchematicSystem_Main/pom.xml new file mode 100644 index 0000000..154470e --- /dev/null +++ b/SchematicSystem_Main/pom.xml @@ -0,0 +1,59 @@ + + + 4.0.0 + + + steamwar + SchematicSystem + 1.0 + + + + ${project.basedir}/.. + + + SchematicSystem_Main + 1.0 + + + + + org.apache.maven.plugins + maven-shade-plugin + 3.2.1 + + + package + + shade + + + + + + schematicsystem + + + + + steamwar + SchematicSystem_15 + 1.0 + compile + + + steamwar + SchematicSystem_8 + 1.0 + compile + + + steamwar + SchematicSystem_Core + 1.0 + compile + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml index 60ec21a..9a6ee7a 100644 --- a/pom.xml +++ b/pom.xml @@ -16,6 +16,7 @@ + clean package org.apache.maven.plugins @@ -32,6 +33,7 @@ SchematicSystem_8 SchematicSystem_15 + SchematicSystem_Main SchematicSystem_Core