diff --git a/SchematicSystem_12/src/de/steamwar/schematicsystem/WorldEdit_12.java b/SchematicSystem_12/src/de/steamwar/schematicsystem/WorldEdit_12.java index f3e8f1b..e3659c8 100644 --- a/SchematicSystem_12/src/de/steamwar/schematicsystem/WorldEdit_12.java +++ b/SchematicSystem_12/src/de/steamwar/schematicsystem/WorldEdit_12.java @@ -1,64 +1,34 @@ package de.steamwar.schematicsystem; -import com.boydti.fawe.FaweAPI; -import com.boydti.fawe.object.schematic.Schematic; -import com.sk89q.worldedit.EditSession; -import com.sk89q.worldedit.EmptyClipboardException; -import com.sk89q.worldedit.Vector; +import com.sk89q.worldedit.*; import com.sk89q.worldedit.bukkit.BukkitWorld; -import com.sk89q.worldedit.bukkit.WorldEditPlugin; -import com.sk89q.worldedit.extension.platform.Actor; import com.sk89q.worldedit.extent.clipboard.Clipboard; -import com.sk89q.worldedit.extent.clipboard.io.ClipboardFormat; -import com.sk89q.worldedit.session.ClipboardHolder; import com.sk89q.worldedit.world.World; -import org.bukkit.Bukkit; +import de.steamwar.sql.NoClipboardException; +import de.steamwar.sql.Schematic; import org.bukkit.Location; import org.bukkit.entity.Player; -import java.io.File; -import java.io.FileOutputStream; import java.io.IOException; -import java.nio.file.Files; class WorldEdit_12 { + private WorldEdit_12(){} - static void saveSchematic(Player player, String name) throws IOException, EmptyClipboardException { - ClipboardHolder clipboardHolder = FaweAPI.wrapPlayer(player).getSession().getClipboard(); - Clipboard clipboard = clipboardHolder.getClipboard(); - if(clipboard == null) - throw new EmptyClipboardException(); - - File folder = new File(Constants.SCHEM_DIR + player.getUniqueId().toString()); - if(!folder.exists()){ - folder.mkdir(); - Files.setPosixFilePermissions(folder.toPath(), Constants.FOLDER_PERMS); - } - - File file = new File(folder, name + ".schematic"); - file.createNewFile(); - Files.setPosixFilePermissions(file.toPath(), Constants.FILE_PERMS); - - ClipboardFormat.SCHEMATIC.getWriter(new FileOutputStream(file)).write(clipboard, clipboardHolder.getWorldData()); - - } - - static void loadClipboardToPlayer(Player player, Clipboard clipboard){ - Actor actor = getWorldEditPlugin().wrapCommandSender(player); - getWorldEditPlugin().getWorldEdit().getSessionManager().get(actor).setClipboard(new ClipboardHolder(clipboard, FaweAPI.getWorld(player.getWorld().getName()).getWorldData())); - } - - static EditSession pasteSchematic(Player player, Schematic schematic){ + static EditSession pasteSchematic(Player player, Schematic schematic) throws Schematic.WrongVersionException, NoClipboardException, IOException { World weWorld = new BukkitWorld(player.getWorld()); Location playerLocation = player.getLocation(); Vector vector = new Vector(playerLocation.getBlockX(), playerLocation.getBlockY(), playerLocation.getBlockZ()); - Vector offset = new Vector(schematic.getClipboard().getRegion().getMinimumPoint()).subtract(schematic.getClipboard().getOrigin()); - Vector dimensions = schematic.getClipboard().getDimensions(); + Clipboard clipboard = schematic.load(); + Vector offset = new Vector(clipboard.getRegion().getMinimumPoint()).subtract(clipboard.getOrigin()); + Vector dimensions = clipboard.getDimensions(); Vector v = vector.subtract(dimensions.getX()/2 - dimensions.getX()%2, 0, dimensions.getZ()).subtract(offset); - return schematic.paste(weWorld, v); - } - - private static WorldEditPlugin getWorldEditPlugin() { - return (WorldEditPlugin) Bukkit.getPluginManager().getPlugin("WorldEdit"); + EditSession e = WorldEdit.getInstance().getEditSessionFactory().getEditSession(weWorld, -1); + try { + ((CuboidClipboard)clipboard).paste(e, v, false, true); + } catch (MaxChangedBlocksException ex) { + throw new IOException(ex); + } + e.flushQueue(); + return e; } } diff --git a/SchematicSystem_14/src/de/steamwar/schematicsystem/WorldEdit_14.java b/SchematicSystem_14/src/de/steamwar/schematicsystem/WorldEdit_14.java index 9bdf5f1..31b7b96 100644 --- a/SchematicSystem_14/src/de/steamwar/schematicsystem/WorldEdit_14.java +++ b/SchematicSystem_14/src/de/steamwar/schematicsystem/WorldEdit_14.java @@ -1,66 +1,38 @@ package de.steamwar.schematicsystem; -import com.boydti.fawe.FaweAPI; -import com.boydti.fawe.object.schematic.Schematic; import com.sk89q.worldedit.EditSession; -import com.sk89q.worldedit.EmptyClipboardException; +import com.sk89q.worldedit.MaxChangedBlocksException; +import com.sk89q.worldedit.WorldEdit; import com.sk89q.worldedit.bukkit.BukkitWorld; -import com.sk89q.worldedit.bukkit.WorldEditPlugin; -import com.sk89q.worldedit.extension.platform.Actor; import com.sk89q.worldedit.extent.clipboard.Clipboard; -import com.sk89q.worldedit.extent.clipboard.io.ClipboardFormats; import com.sk89q.worldedit.math.BlockVector3; -import com.sk89q.worldedit.regions.Region; import com.sk89q.worldedit.session.ClipboardHolder; import com.sk89q.worldedit.world.World; -import org.bukkit.Bukkit; +import de.steamwar.sql.NoClipboardException; +import de.steamwar.sql.Schematic; import org.bukkit.Location; import org.bukkit.entity.Player; -import java.io.File; import java.io.IOException; -import java.nio.file.Files; class WorldEdit_14 { private WorldEdit_14(){} - static void saveSchematic(Player player, String name) throws IOException, EmptyClipboardException { - ClipboardHolder clipboardHolder = FaweAPI.wrapPlayer(player).getSession().getClipboard(); - Clipboard clipboard = clipboardHolder.getClipboard(); - if(clipboard == null) - throw new EmptyClipboardException(); - - File folder = new File(Constants.SCHEM_DIR + player.getUniqueId().toString()); - if(!folder.exists()){ - folder.mkdir(); - Files.setPosixFilePermissions(folder.toPath(), Constants.FOLDER_PERMS); - } - - File file = new File(folder, name + ".schematic"); - file.createNewFile(); - Files.setPosixFilePermissions(file.toPath(), Constants.FILE_PERMS); - - Region region = clipboard.getRegion(); - Schematic schem = new Schematic(region); - schem.save(file, ClipboardFormats.findByExtension("schem")); - } - - static void loadClipboardToPlayer(Player player, Clipboard clipboard){ - Actor actor = getWorldEditPlugin().wrapCommandSender(player); - getWorldEditPlugin().getWorldEdit().getSessionManager().get(actor).setClipboard(new ClipboardHolder(clipboard)); - } - - static EditSession pasteSchematic(Player player, Schematic schematic){ + static EditSession pasteSchematic(Player player, Schematic schematic) throws Schematic.WrongVersionException, IOException, NoClipboardException { World weWorld = new BukkitWorld(player.getWorld()); Location playerLocation = player.getLocation(); + Clipboard clipboard = schematic.load(); BlockVector3 vector = BlockVector3.at(playerLocation.getBlockX(), playerLocation.getBlockY(), playerLocation.getBlockZ()); - BlockVector3 offset = schematic.getClipboard().getRegion().getMinimumPoint().subtract(schematic.getClipboard().getOrigin()); - BlockVector3 dimensions = schematic.getClipboard().getDimensions(); + BlockVector3 offset = clipboard.getRegion().getMinimumPoint().subtract(clipboard.getOrigin()); + BlockVector3 dimensions = clipboard.getDimensions(); BlockVector3 v = vector.subtract(dimensions.getX()/2 - dimensions.getX()%2, 0, dimensions.getZ()).subtract(offset); - return schematic.paste(weWorld, v); - } - - private static WorldEditPlugin getWorldEditPlugin() { - return (WorldEditPlugin) Bukkit.getPluginManager().getPlugin("WorldEdit"); + EditSession e = WorldEdit.getInstance().getEditSessionFactory().getEditSession(weWorld, -1); + try { + new ClipboardHolder(clipboard).createPaste(e).to(v).build(); + } catch (MaxChangedBlocksException ex) { + throw new IOException(ex); + } + e.flushQueue(); + return e; } } diff --git a/SchematicSystem_Main/src/de/steamwar/schematicsystem/WorldEdit.java b/SchematicSystem_Main/src/de/steamwar/schematicsystem/WorldEdit.java index 1be3006..f7ac14f 100644 --- a/SchematicSystem_Main/src/de/steamwar/schematicsystem/WorldEdit.java +++ b/SchematicSystem_Main/src/de/steamwar/schematicsystem/WorldEdit.java @@ -1,10 +1,9 @@ package de.steamwar.schematicsystem; -import com.boydti.fawe.object.schematic.Schematic; import com.sk89q.worldedit.EditSession; -import com.sk89q.worldedit.EmptyClipboardException; -import com.sk89q.worldedit.extent.clipboard.Clipboard; import de.steamwar.core.Core; +import de.steamwar.sql.NoClipboardException; +import de.steamwar.sql.Schematic; import org.bukkit.entity.Player; import java.io.IOException; @@ -12,27 +11,7 @@ import java.io.IOException; public class WorldEdit { private WorldEdit(){} - public static void saveSchematic(Player player, String name) throws IOException, EmptyClipboardException { - switch(Core.getVersion()){ - case 14: - WorldEdit_14.saveSchematic(player, name); - break; - default: - WorldEdit_12.saveSchematic(player, name); - } - } - - public static void loadClipboardToPlayer(Player player, Clipboard clipboard){ - switch(Core.getVersion()){ - case 14: - WorldEdit_14.loadClipboardToPlayer(player, clipboard); - break; - default: - WorldEdit_12.loadClipboardToPlayer(player, clipboard); - } - } - - public static EditSession pasteSchematic(Player player, Schematic schematic){ + public static EditSession pasteSchematic(Player player, Schematic schematic) throws Schematic.WrongVersionException, IOException, NoClipboardException { switch(Core.getVersion()){ case 14: return WorldEdit_14.pasteSchematic(player, schematic); diff --git a/SchematicSystem_Main/src/de/steamwar/schematicsystem/commands/CheckCommand.java b/SchematicSystem_Main/src/de/steamwar/schematicsystem/commands/CheckCommand.java index 5b63aa5..6eb3dda 100644 --- a/SchematicSystem_Main/src/de/steamwar/schematicsystem/commands/CheckCommand.java +++ b/SchematicSystem_Main/src/de/steamwar/schematicsystem/commands/CheckCommand.java @@ -1,11 +1,10 @@ package de.steamwar.schematicsystem.commands; -import com.boydti.fawe.FaweAPI; -import de.steamwar.schematicsystem.Constants; import de.steamwar.schematicsystem.SchematicSystem; import de.steamwar.schematicsystem.WorldEdit; import de.steamwar.schematicsystem.check.CheckSession; import de.steamwar.schematicsystem.check.CheckUtils; +import de.steamwar.sql.NoClipboardException; import de.steamwar.sql.Schematic; import de.steamwar.sql.SteamwarUser; import org.bukkit.Bukkit; @@ -14,7 +13,6 @@ import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import java.io.File; import java.io.IOException; import java.util.List; import java.util.logging.Level; @@ -94,22 +92,17 @@ public class CheckCommand implements CommandExecutor { } } - File file = new File(Constants.SCHEM_DIR + user.getUUID().toString(),schematic.getSchemName() + ".schematic"); - if(!file.exists()) { - player.sendMessage(SchematicSystem.PREFIX + "§cDie Schematic gibts nicht?!?!"); - return false; - } - try { - com.boydti.fawe.object.schematic.Schematic schematicFAWE = FaweAPI.load(file); - checkSession = new CheckSession(player.getUniqueId(), schematic); checkSession.sendNextCheck(); - checkSession.setEditSession(WorldEdit.pasteSchematic(player, schematicFAWE)); - } catch (IOException ex) { + checkSession.setEditSession(WorldEdit.pasteSchematic(player, schematic)); + } catch (IOException | NoClipboardException ex) { player.sendMessage(SchematicSystem.PREFIX + "§cSchematic konnte nicht geladen/gepastet werden"); Bukkit.getLogger().log(Level.SEVERE, "Failed to load schematic", ex); return false; + } catch (Schematic.WrongVersionException e) { + player.sendMessage(SchematicSystem.PREFIX + "§cDiese Schematic kann nicht in dieser Minecraft-Version geladen werden"); + return false; } break; case "decline": diff --git a/SchematicSystem_Main/src/de/steamwar/schematicsystem/commands/GUI.java b/SchematicSystem_Main/src/de/steamwar/schematicsystem/commands/GUI.java index 5c7b52e..c605b95 100644 --- a/SchematicSystem_Main/src/de/steamwar/schematicsystem/commands/GUI.java +++ b/SchematicSystem_Main/src/de/steamwar/schematicsystem/commands/GUI.java @@ -3,7 +3,6 @@ package de.steamwar.schematicsystem.commands; import de.steamwar.inventory.SWInventory; import de.steamwar.inventory.SWItem; import de.steamwar.inventory.SWListInv; -import de.steamwar.schematicsystem.Constants; import de.steamwar.schematicsystem.SchematicSystem; import de.steamwar.sql.*; import javafx.util.Pair; @@ -14,7 +13,6 @@ import org.bukkit.event.inventory.ClickType; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.SkullMeta; -import java.io.File; import java.util.Arrays; import java.util.Collections; import java.util.LinkedList; @@ -47,8 +45,6 @@ class GUI { static void delete(Player p, Schematic schem){ SWInventory inv = new SWInventory(p, 9, schem.getSchemName() + " löschen"); inv.setItem(0, SWItem.getDye(1), (byte) 1, "§eLöschen", click -> { - File file = new File(Constants.SCHEM_DIR + p.getUniqueId(), schem.getSchemName() + ".schematic"); - file.delete(); schem.remove(); List checkedSchematics = CheckedSchematic.getLastDeclined(p.getUniqueId()); @@ -100,10 +96,11 @@ class GUI { private static void info(Player p, Schematic schem){ SWInventory inv = new SWInventory(p, 9, schem.getSchemName()); - inv.setItem(0, SWItem.getMaterial("WOOD_AXE"), "§eLaden", click -> { - SchematicCommand.load(p, schem); - p.closeInventory(); - }); + if(schem.availible()) + inv.setItem(0, SWItem.getMaterial("WOOD_AXE"), "§eLaden", click -> { + SchematicCommand.load(p, schem); + p.closeInventory(); + }); if(schem.getSchemOwner() == SteamwarUser.get(p.getUniqueId()).getId()){ if(schem.getSchemType().writeable()){ @@ -124,10 +121,11 @@ class GUI { p.closeInventory(); changeItem(p, schem); }); - inv.setItem(4, SWItem.getMaterial("CAULDRON_ITEM"), "§e" + schem.getSchemType().name(), Arrays.asList("§7Zum Ändern", "§7anklicken"), false, click -> { - p.closeInventory(); - changeType(p, schem); - }); + if(schem.availible()) + inv.setItem(4, SWItem.getMaterial("CAULDRON_ITEM"), "§e" + schem.getSchemType().name(), Arrays.asList("§7Zum Ändern", "§7anklicken"), false, click -> { + p.closeInventory(); + changeType(p, schem); + }); inv.setItem(6, SWItem.getMaterial("SKULL_ITEM"), "§eMitglieder", click -> { p.closeInventory(); delmembers(p, schem); diff --git a/SchematicSystem_Main/src/de/steamwar/schematicsystem/commands/SchematicCommand.java b/SchematicSystem_Main/src/de/steamwar/schematicsystem/commands/SchematicCommand.java index 52f648c..be525db 100644 --- a/SchematicSystem_Main/src/de/steamwar/schematicsystem/commands/SchematicCommand.java +++ b/SchematicSystem_Main/src/de/steamwar/schematicsystem/commands/SchematicCommand.java @@ -1,12 +1,7 @@ package de.steamwar.schematicsystem.commands; -import com.boydti.fawe.FaweAPI; -import com.sk89q.worldedit.EmptyClipboardException; -import com.sk89q.worldedit.extent.clipboard.Clipboard; import de.steamwar.schematicsystem.CheckSchemType; -import de.steamwar.schematicsystem.Constants; import de.steamwar.schematicsystem.SchematicSystem; -import de.steamwar.schematicsystem.WorldEdit; import de.steamwar.schematicsystem.check.CheckUtils; import de.steamwar.sql.*; import net.md_5.bungee.api.ChatColor; @@ -20,7 +15,6 @@ import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.LinkedList; @@ -133,21 +127,13 @@ public class SchematicCommand implements CommandExecutor { static void load(Player player, Schematic schematic){ try { - File file = new File(Constants.SCHEM_DIR + SteamwarUser.get(schematic.getSchemOwner()).getUUID(), schematic.getSchemName() + ".schematic"); - - if (!file.exists()) { - player.sendMessage(SchematicSystem.PREFIX + "§cDie angegebene Schematic existiert nicht"); - return; - } - Clipboard clipboard = FaweAPI.load(file).getClipboard(); - if (clipboard == null) - throw new IOException("File not a schematic"); - - WorldEdit.loadClipboardToPlayer(player, clipboard); + schematic.loadToPlayer(player); player.sendMessage(SchematicSystem.PREFIX + "Schematic §e" + schematic.getSchemName() + " §7geladen"); - }catch (IOException ex){ - Bukkit.getLogger().log(Level.SEVERE, "Schematic konnte nicht geladen werden", ex); + }catch (IOException | NoClipboardException e){ + Bukkit.getLogger().log(Level.SEVERE, "Schematic konnte nicht geladen werden", e); player.sendMessage(SchematicSystem.PREFIX + "§cFehler beim Laden der Schematic. Bitte wende dich an einen Developer"); + }catch (Schematic.WrongVersionException e) { + player.sendMessage(SchematicSystem.PREFIX + "§cDiese Schematic lässt sich nicht in dieser Minecraft-Version laden"); } } @@ -184,23 +170,32 @@ public class SchematicCommand implements CommandExecutor { return; } + boolean newSchem = false; + if(schematic == null || schematic.getSchemOwner() == SteamwarUser.get(player.getUniqueId()).getId()){ + newSchem = true; + Schematic.createSchem(args[1], player.getUniqueId(), "", SchematicType.Normal); + schematic = Schematic.getSchemFromDB(args[1], player.getUniqueId()); + } + try { - WorldEdit.saveSchematic(player, args[1]); - }catch(EmptyClipboardException e){ - player.sendMessage(SchematicSystem.PREFIX + "§cDein Clipboard ist leer"); - return; + schematic.saveFromPlayer(player); }catch(IOException ex){ Bukkit.getLogger().log(Level.SEVERE, "Could not save schematic", ex); player.sendMessage(SchematicSystem.PREFIX + "§cFehler beim Speichern der Schematic. Bitte wende dich an einen Developer"); + if(newSchem) + schematic.remove(); + return; + }catch (NoClipboardException e) { + player.sendMessage(SchematicSystem.PREFIX + "§cDein Clipboard ist leer"); + if(newSchem) + schematic.remove(); return; } - if (schematic != null && schematic.getSchemOwner() == SteamwarUser.get(player.getUniqueId()).getId()) { - player.sendMessage(SchematicSystem.PREFIX + "Schematic §e" + args[1] + " §7überschrieben"); - } else { - new Schematic(args[1], player.getUniqueId(), "", SchematicType.Normal); + if (newSchem) player.sendMessage(SchematicSystem.PREFIX + "Schematic §e" + args[1] + " §7gespeichert"); - } + else + player.sendMessage(SchematicSystem.PREFIX + "Schematic §e" + args[1] + " §7überschrieben"); } private void changetype(Player player, String[] args){ @@ -275,7 +270,7 @@ public class SchematicCommand implements CommandExecutor { player.sendMessage("§eName: §7" + schematic.getSchemName()); TextComponent type = new TextComponent("§eTyp: §7" + schematic.getSchemType().name()); - if(SteamwarUser.get(schematic.getSchemOwner()).getUUID().equals(player.getUniqueId())){ + if(SteamwarUser.get(schematic.getSchemOwner()).getUUID().equals(player.getUniqueId()) && schematic.availible()){ type.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, TextComponent.fromLegacyText("§eTyp ändern"))); type.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/schem changetype " + schematic.getSchemName())); } @@ -300,10 +295,12 @@ public class SchematicCommand implements CommandExecutor { player.sendMessage("§eMitglieder: §7" + schematicMembers.toString()); } - TextComponent loadSchematic = new TextComponent("LADEN"); - loadSchematic.setColor(ChatColor.DARK_GREEN); - loadSchematic.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/schem load " + schematic.getSchemName())); - player.spigot().sendMessage(loadSchematic); + if(schematic.availible()){ + TextComponent loadSchematic = new TextComponent("LADEN"); + loadSchematic.setColor(ChatColor.DARK_GREEN); + loadSchematic.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/schem load " + schematic.getSchemName())); + player.spigot().sendMessage(loadSchematic); + } } private void addmember(Player player, String[] args){ diff --git a/SchematicSystem_Main/src/de/steamwar/schematicsystem/listener/PlayerJoinListener.java b/SchematicSystem_Main/src/de/steamwar/schematicsystem/listener/PlayerJoinListener.java index ea7c898..ba2aec0 100644 --- a/SchematicSystem_Main/src/de/steamwar/schematicsystem/listener/PlayerJoinListener.java +++ b/SchematicSystem_Main/src/de/steamwar/schematicsystem/listener/PlayerJoinListener.java @@ -1,6 +1,5 @@ package de.steamwar.schematicsystem.listener; -import de.steamwar.schematicsystem.Constants; import de.steamwar.schematicsystem.SchematicSystem; import de.steamwar.schematicsystem.check.CheckSession; import de.steamwar.schematicsystem.check.CheckUtils; @@ -12,8 +11,6 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerJoinEvent; -import java.io.File; -import java.util.ArrayList; import java.util.LinkedList; import java.util.List; @@ -25,6 +22,7 @@ public class PlayerJoinListener implements Listener { if(CheckSession.currentChecking()){ CheckSession current = CheckSession.getCheckSession(); + assert current != null; if(!CheckUtils.allowedToCheck(player) && !SteamwarUser.get(current.getSchematic().getSchemOwner()).getUUID().equals(player.getUniqueId())){ player.sendMessage(SchematicSystem.PREFIX + "§cAuf diesem Server wird momentan eine Schematic geprüft!"); player.kickPlayer(""); @@ -32,8 +30,6 @@ public class PlayerJoinListener implements Listener { } } - addNewSchems(player); - if(CheckUtils.allowedToCheck(player)) player.sendMessage(CheckUtils.sendTeamMembersCSchematicsInfo()); @@ -47,27 +43,4 @@ public class PlayerJoinListener implements Listener { if(!uncheckedSchematics.isEmpty()) player.sendMessage(SchematicSystem.PREFIX + "§7Du hast noch §e" + uncheckedSchematics.size() + " §7ungeprüfte Schematic(s)!"); } - - private void addNewSchems(Player player){ - File file = new File(Constants.SCHEM_DIR + player.getUniqueId()); - File[] files = file.listFiles(); - - if(files != null && files.length > 0) { - List schematics = Schematic.getSchemsAccessibleByUser(player.getUniqueId()); - List schematicNames = new ArrayList<>(); - - for(Schematic schematic : schematics) { - if(schematic.getSchemOwner() == SteamwarUser.get(player.getUniqueId()).getId()) { - schematicNames.add(schematic.getSchemName()); - } - } - - for (File value : files) { - if (!schematicNames.contains(value.getName().substring(0, value.getName().lastIndexOf('.')))) { - String fileName = value.getName(); - new Schematic(fileName.substring(0, fileName.lastIndexOf('.')), player.getUniqueId(), "", SchematicType.Normal); - } - } - } - } }