diff --git a/src/de/warking/schematicsystem/commands/SchematicCommand.java b/src/de/warking/schematicsystem/commands/SchematicCommand.java index 0175e7e..7d8b8b8 100644 --- a/src/de/warking/schematicsystem/commands/SchematicCommand.java +++ b/src/de/warking/schematicsystem/commands/SchematicCommand.java @@ -29,12 +29,9 @@ import java.nio.file.attribute.PosixFilePermission; import java.util.ArrayList; import java.util.EnumSet; import java.util.List; -import java.util.UUID; public class SchematicCommand implements CommandExecutor { - private static ArrayList deletePlayers = new ArrayList<>(); - @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { @@ -59,15 +56,6 @@ public class SchematicCommand implements CommandExecutor { sendHelp(player); return false; } - - if(args[0].equalsIgnoreCase("removesavedelete")) { - if(deletePlayers.contains(player.getUniqueId())) { - deletePlayers.remove(player.getUniqueId()); - player.sendMessage(SchematicSystem.PREFIX + "§6Schematic wird nicht gelöscht."); - return false; - } - return false; - } return false; case 2: @@ -118,26 +106,18 @@ public class SchematicCommand implements CommandExecutor { Schematic schematic = Schematic.getSchemFromDB(args[1], player.getUniqueId()); if(schematic != null) { if(WarkingUser.get(schematic.getSchemOwner()).getUUID().equals(player.getUniqueId())) { - if(!deletePlayers.contains(player.getUniqueId())) { - deletePlayers.add(player.getUniqueId()); - TextComponent message = new TextComponent("§6Moechtest du die Schematic wirklich loeschen? "); - message.setBold(true); - message.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("Waehle eine Option...").create())); + TextComponent message = new TextComponent("§6Möchtest du die Schematic wirklich löschen?"); + message.setBold(true); + message.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("Wähle eine Option...").create())); - TextComponent ja = new TextComponent("§aja "); - ja.setBold(true); - ja.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/schem savedelete " + args[1])); + TextComponent ja = new TextComponent("§aja"); + ja.setBold(true); + ja.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("§4Schematic löschen...").create())); + ja.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/schem savedelete " + args[1])); - TextComponent nein = new TextComponent("nein"); - nein.setColor(ChatColor.RED); - nein.setBold(true); - nein.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/schem removesavedelete")); - - message.addExtra(ja); - message.addExtra(nein); - player.spigot().sendMessage(message); - } + player.spigot().sendMessage(message); + player.spigot().sendMessage(ja); return false; } else { player.sendMessage(SchematicSystem.PREFIX + "§cZum Löschen musst du der Owner der Schematic sein!"); @@ -155,24 +135,21 @@ public class SchematicCommand implements CommandExecutor { if(args[0].equalsIgnoreCase("savedelete")) { if(isSchematicNameAllowed(args[1])) { - if(deletePlayers.contains(player.getUniqueId())) { - Schematic schematic = Schematic.getSchemFromDB(args[1], player.getUniqueId()); - if(schematic != null) { - if(WarkingUser.get(schematic.getSchemOwner()).getUUID().equals(player.getUniqueId())) { - File file = new File(SchematicSystem.SCHEM_DIR + player.getUniqueId() + "/" + args[1] + ".schematic"); - file.delete(); - schematic.remove(); - deletePlayers.remove(player.getUniqueId()); - player.sendMessage(SchematicSystem.PREFIX + "Schematic §6" + args[1] + " §7gelöscht."); - return false; - } else { - player.sendMessage(SchematicSystem.PREFIX + "§cZum Löschen musst du der Owner der Schematic sein!"); - return false; - } + Schematic schematic = Schematic.getSchemFromDB(args[1], player.getUniqueId()); + if(schematic != null) { + if(WarkingUser.get(schematic.getSchemOwner()).getUUID().equals(player.getUniqueId())) { + File file = new File(SchematicSystem.SCHEM_DIR + player.getUniqueId() + "/" + args[1] + ".schematic"); + file.delete(); + schematic.remove(); + player.sendMessage(SchematicSystem.PREFIX + "Schematic §6" + args[1] + " §7gelöscht."); + return false; } else { - player.sendMessage(SchematicSystem.PREFIX + "§cDiese Schematic existiert nicht!"); + player.sendMessage(SchematicSystem.PREFIX + "§cZum Löschen musst du der Owner der Schematic sein!"); return false; } + } else { + player.sendMessage(SchematicSystem.PREFIX + "§cDiese Schematic existiert nicht!"); + return false; } } else { player.sendMessage(SchematicSystem.PREFIX + "§cDer angegebene Schematic Name enthält verbotene Zeichen!"); @@ -194,8 +171,11 @@ public class SchematicCommand implements CommandExecutor { } } - if(Schematic.getSchemFromDB(args[1], player.getUniqueId()) != null) + if(Schematic.getSchemFromDB(args[1], player.getUniqueId()) != null) { Schematic.getSchemFromDB(args[1], player.getUniqueId()).remove(); + player.sendMessage(SchematicSystem.PREFIX + "Schematic §6" + args[1] + " §7überschrieben!"); + } else + player.sendMessage(SchematicSystem.PREFIX + "Schematic §6" + args[1] + " §7gespeichert!"); File file = new File(SchematicSystem.SCHEM_DIR + player.getUniqueId().toString() + "/", args[1] + ".schematic"); file.createNewFile(); @@ -211,7 +191,6 @@ public class SchematicCommand implements CommandExecutor { FaweAPI.wrapPlayer(player).getSession().getClipboard().getWorldData()); Schematic schematic = new Schematic(args[1], player.getUniqueId(), "", SchematicType.normal); - player.sendMessage(SchematicSystem.PREFIX + "Schematic §6" + args[1] + " §7gespeichert!"); } else { player.sendMessage(SchematicSystem.PREFIX + "§cDein Clipboard ist leer!"); @@ -252,7 +231,7 @@ public class SchematicCommand implements CommandExecutor { player.spigot().sendMessage(loadSchematic); if(WarkingUser.get(schematic.getSchemOwner()).getUUID().equals(player.getUniqueId())) { - TextComponent deleteSchematic = new TextComponent("LOESCHEN"); + TextComponent deleteSchematic = new TextComponent("LÖSCHEN"); deleteSchematic.setColor(ChatColor.RED); deleteSchematic.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/schem delete " + schematic.getSchemName())); player.spigot().sendMessage(deleteSchematic); @@ -350,12 +329,12 @@ public class SchematicCommand implements CommandExecutor { Player target = Bukkit.getPlayer(warkingUser.getUUID()); if(target != null) - target.sendMessage(SchematicSystem.PREFIX + "Du hast keinen Zugriff mehr auf die Schematic §6" + schematic.getSchemName() + "§7von §6" + WarkingUser.get(schematic.getSchemOwner()).getUserName() + "§7."); + target.sendMessage(SchematicSystem.PREFIX + "Du hast nun Zugriff auf die Schematic §6" + schematic.getSchemName() + "§7von §6" + WarkingUser.get(schematic.getSchemOwner()).getUserName() + "§7."); return false; } } else { - player.sendMessage(SchematicSystem.PREFIX + "§cDu kannst dich nicht auf deine eigenen Schematics adden!"); + player.sendMessage(SchematicSystem.PREFIX + "§cDu kannst dich nicht auf deine eigene Schematic adden!"); return false; } } else { @@ -458,10 +437,24 @@ public class SchematicCommand implements CommandExecutor { return; } + int pages; + + double doublePages = (Double.valueOf(schematicList.size()) / Double.valueOf(filesPerPage)); + int intPages = schematicList.size() / filesPerPage; + + if(schematicList.size() <= filesPerPage) { + pages = 1; + } else if(doublePages > intPages) { + pages = (intPages + 1); + } else + pages = intPages; - int pages = schematicList.size() / filesPerPage; int currPage = currentPage; + if(currPage >= pages) return; + + player.sendMessage("§5======§8[§dSeite " + (currentPage + 1) + " §7/ §d" + pages + " §7| §d" + schematicList.size() + " Schematic(s)§8]§5======"); + for(int i = currPage * filesPerPage; i < (currPage * filesPerPage) + filesPerPage; i++) { if(schematicList.size() <= i) break; @@ -494,19 +487,34 @@ public class SchematicCommand implements CommandExecutor { player.spigot().sendMessage(schematics); } - if(pages < 1) return; + if(pages <= 1) return; - TextComponent nextPage = new TextComponent(">> Naechste Seite <<"); - nextPage.setColor(ChatColor.RED); + if(currPage == 0) { + TextComponent nextPage = new TextComponent("Nächste Seite >>"); + nextPage.setColor(ChatColor.RED); + nextPage.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("§6Nächste Seite...").create())); + nextPage.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/schem list 1")); + player.spigot().sendMessage(nextPage); + } else if((currPage + 1) == pages) { + TextComponent beforePage = new TextComponent("<< Vorherige Seite"); + beforePage.setColor(ChatColor.RED); + beforePage.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("§6Vorherige Seite...").create())); + beforePage.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/schem list " + (currPage - 1))); + player.spigot().sendMessage(beforePage); + } else { + TextComponent beforePage = new TextComponent("<< Seite "); + beforePage.setColor(ChatColor.RED); + beforePage.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("§6Vorherige Seite...").create())); + beforePage.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/schem list " + (currPage - 1))); - nextPage.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("Naechste Seite...").create())); + TextComponent nextPage = new TextComponent(">>"); + nextPage.setColor(ChatColor.RED); + nextPage.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("§6Nächste Seite...").create())); + nextPage.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/schem list " + (currPage + 1))); - if(currPage >= pages) { - nextPage.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/schem list " + 0)); - } else - nextPage.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/schem list " + (currentPage + 1))); - - player.spigot().sendMessage(nextPage); + beforePage.addExtra(nextPage); + player.spigot().sendMessage(beforePage); + } } private boolean isSchematicNameAllowed(String schematicName) {