diff --git a/.gitignore b/.gitignore index 7eae63f..02142ca 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ .idea target -dependency-reduced-pom.xml \ No newline at end of file +dependency-reduced-pom.xml +*.iml \ No newline at end of file diff --git a/SchematicSystem_Main/src/de/steamwar/schematicsystem/commands/GUI.java b/SchematicSystem_Main/src/de/steamwar/schematicsystem/commands/GUI.java index fac69a7..3fbd253 100644 --- a/SchematicSystem_Main/src/de/steamwar/schematicsystem/commands/GUI.java +++ b/SchematicSystem_Main/src/de/steamwar/schematicsystem/commands/GUI.java @@ -13,10 +13,7 @@ import org.bukkit.event.inventory.ClickType; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.SkullMeta; -import java.util.Arrays; -import java.util.Collections; -import java.util.LinkedList; -import java.util.List; +import java.util.*; class GUI { private GUI(){} @@ -182,4 +179,36 @@ class GUI { inv.setCallback(-999, (ClickType click) -> p.closeInventory()); inv.open(); } + + static boolean listSearch(Player player, String search) { + List> schemList = new LinkedList<>(); + List filteredSchems = new ArrayList<>(); + + for(Schematic currentSchem : Schematic.getSchemsAccessibleByUser(player.getUniqueId())) { + if(currentSchem.getSchemName().toLowerCase().contains(search.toLowerCase())) + filteredSchems.add(currentSchem); + } + + if(filteredSchems.isEmpty()) + return false; + + for(Schematic currentSchem : filteredSchems) { + Material m; + if (currentSchem.getItem().isEmpty()) + m = SWItem.getMaterial("CAULDRON_ITEM"); + else + m = SWItem.getMaterial(currentSchem.getItem()); + + SWItem item = new SWItem(m, "§e" + currentSchem.getSchemName(), Collections.singletonList("§7" + currentSchem.getSchemType().name()), !currentSchem.getSchemType().writeable(), click -> {}); + schemList.add(new Pair<>(item, currentSchem)); + } + + SWListInv inv = new SWListInv<>(player, "§eSuchergebnisse", (clickType, schem) -> { + player.closeInventory(); + info(player, schem); + }, schemList); + inv.setCallback(-999, (ClickType click) -> player.closeInventory()); + inv.open(); + return true; + } } diff --git a/SchematicSystem_Main/src/de/steamwar/schematicsystem/commands/SchematicCommand.java b/SchematicSystem_Main/src/de/steamwar/schematicsystem/commands/SchematicCommand.java index f83733a..51a8cf8 100644 --- a/SchematicSystem_Main/src/de/steamwar/schematicsystem/commands/SchematicCommand.java +++ b/SchematicSystem_Main/src/de/steamwar/schematicsystem/commands/SchematicCommand.java @@ -68,6 +68,9 @@ public class SchematicCommand implements CommandExecutor { case "download": download(player, args); break; + case "search": + search(player, args); + break; default: help(player); } @@ -330,6 +333,15 @@ public class SchematicCommand implements CommandExecutor { download(player, schematic); } + private void search(Player player, String[] args) { + if(args.length < 2) { + help(player); + return; + } + if(!GUI.listSearch(player, args[1])) + player.sendMessage("§cEs wurden keine Schematics gefunden!"); + } + static void download(Player player, Schematic schematic){ if(schematic.getSchemOwner() != SteamwarUser.get(player.getUniqueId()).getId()){ player.sendMessage("§cDu darfst nur deine eigenen Schematics herunterladen!"); @@ -426,6 +438,7 @@ public class SchematicCommand implements CommandExecutor { player.sendMessage("§8/§eschem gui §8- §7Öffnet die Schematic-GUI"); player.sendMessage("§8/§eschem list §8- §7Zeigt dir deine Schematics an"); player.sendMessage("§8/§eschem list public §8- §7Zeigt alle Public-Schematics"); + player.sendMessage("§8/§eschem search §8[§7Stichwort§8] - §7Sucht nach passenden Schematics"); player.sendMessage("§8/§eschem load §8[§7Schematic§8] - §7Lädt eine Schematic"); player.sendMessage("§8/§eschem save §8[§7Schematic§8] - §7Speichert dein Clipboard als Schematic"); player.sendMessage("§8/§eschem changetype §8[§7Schematic§8] - §7Ändert die Art deiner Schematic");