diff --git a/SchematicSystem_12/pom.xml b/SchematicSystem_12/pom.xml
new file mode 100644
index 0000000..db8635d
--- /dev/null
+++ b/SchematicSystem_12/pom.xml
@@ -0,0 +1,55 @@
+
+
+ 4.0.0
+
+ SchematicSystem_12
+ 1.0
+
+
+ steamwar
+ SchematicSystem
+ 1.0
+
+
+
+ src
+
+
+ src
+
+ **/*.java
+ **/*.kt
+
+
+
+
+
+
+
+ steamwar
+ Spigot-1.12
+ 1.0
+ provided
+
+
+ steamwar
+ WorldEdit
+ 1.0
+ provided
+
+
+ steamwar
+ FAWE
+ 1.0
+ provided
+
+
+ steamwar
+ SchematicSystem_API
+ 1.0
+ compile
+
+
+
\ No newline at end of file
diff --git a/src/de/steamwar/schematicsystem/CheckSchemType.java b/SchematicSystem_12/src/de/steamwar/schematicsystem/CheckSchemType_v12.java
similarity index 57%
rename from src/de/steamwar/schematicsystem/CheckSchemType.java
rename to SchematicSystem_12/src/de/steamwar/schematicsystem/CheckSchemType_v12.java
index de98b5a..dd32e41 100644
--- a/src/de/steamwar/schematicsystem/CheckSchemType.java
+++ b/SchematicSystem_12/src/de/steamwar/schematicsystem/CheckSchemType_v12.java
@@ -6,20 +6,19 @@ import com.sk89q.worldedit.Vector;
import com.sk89q.worldedit.blocks.BaseBlock;
import com.sk89q.worldedit.extent.clipboard.Clipboard;
import com.sk89q.worldedit.regions.Region;
-import de.warking.hunjy.MySQL.Schematic;
-import de.warking.hunjy.MySQL.SchematicType;
-import de.warking.hunjy.MySQL.WarkingUser;
+import de.steamwar.sql.Schematic;
+import de.steamwar.sql.SteamwarUser;
import org.bukkit.Bukkit;
import org.bukkit.Material;
-import org.bukkit.configuration.ConfigurationSection;
import java.io.File;
import java.io.IOException;
-import java.util.*;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
import java.util.logging.Level;
-public class CheckSchemType {
-
+class CheckSchemType_v12 {
private static final int TNT = Material.TNT.getId();
private static final int SLIME = Material.SLIME_BLOCK.getId();
private static final int DISPENSER = Material.DISPENSER.getId();
@@ -65,57 +64,13 @@ public class CheckSchemType {
FLOWERS = flowers;
}
- private static final Map types = new EnumMap<>(SchematicType.class);
+ private CheckSchemType_v12(){}
- private final String name;
-
- private final int width;
- private final int height;
- private final int depth;
-
- private final int maxTNT;
- private final int maxSlime;
- private final int maxTNTSlime;
- private final int maxDispenser;
- private final int maxDispenserItems;
- private final List forbiddenIds;
- private final LinkedList checkList;
-
- CheckSchemType(ConfigurationSection section) {
- name = section.getName();
- width = section.getInt("width");
- height = section.getInt("height");
- depth = section.getInt("depth");
-
- maxTNT = section.getInt("maxTNT");
- maxSlime = section.getInt("maxSlime");
- maxTNTSlime = section.getInt("maxTNTSlime");
- maxDispenser = section.getInt("maxDispenser");
- maxDispenserItems = section.getInt("maxDispenserItems");
-
- forbiddenIds = section.getIntegerList("forbiddenIds");
- checkList = new LinkedList<>(section.getStringList("checkList"));
- types.put(SchematicType.fromDB(name), this);
- types.put(SchematicType.fromDB("c" + name), this);
- }
-
- public static CheckSchemType get(SchematicType type){
- return types.get(type);
- }
-
- public LinkedList getCheckList() {
- return checkList;
- }
-
- public SchematicType getAcceptedType(){
- return SchematicType.fromDB(name);
- }
-
- public void autoCheck(Schematic schematic, List errors, List warnings) {
+ static void autoCheck(Schematic schematic, List errors, List warnings, ICheckSchemType type) {
Clipboard clipboard;
try {
- clipboard = FaweAPI.load(new File(SchematicSystem.SCHEM_DIR + WarkingUser.get(schematic.getSchemOwner()).getUUID(), schematic.getSchemName() + ".schematic")).getClipboard();
+ clipboard = FaweAPI.load(new File(Constants.SCHEM_DIR + SteamwarUser.get(schematic.getSchemOwner()).getUUID(), schematic.getSchemName() + ".schematic")).getClipboard();
if(clipboard == null)
throw new IOException();
} catch (IOException e) {
@@ -126,8 +81,8 @@ public class CheckSchemType {
Vector dimensions = clipboard.getDimensions();
- if(dimensions.getBlockX() > width || dimensions.getBlockY() > height || dimensions.getBlockZ() > depth)
- errors.add("Das " + name + " überschreitet die Maximalmaße");
+ if(dimensions.getBlockX() > type.getWidth() || dimensions.getBlockY() > type.getHeight() || dimensions.getBlockZ() > type.getDepth())
+ errors.add("Das " + type.getName() + " überschreitet die Maximalmaße");
Region region = clipboard.getRegion();
Vector min = region.getMinimumPoint();
@@ -153,19 +108,19 @@ public class CheckSchemType {
dispenser++;
if(INVENTORY.contains(blockId)){
- checkInventory(errors, warnings, block, blockId);
+ checkInventory(errors, warnings, block, blockId, type);
}
- if(forbiddenIds.contains(blockId))
+ if(type.getForbidden().contains(Material.getMaterial(blockId).name()))
errors.add("Der Block " + Material.getMaterial(blockId).name() + " ist verboten");
}
}
}
- finalChecks(errors, tnt, slime, dispenser);
+ type.finalChecks(errors, tnt, slime, dispenser);
}
- private void checkInventory(List errors, List warnings, BaseBlock block, int blockId){
+ private static void checkInventory(List errors, List warnings, BaseBlock block, int blockId, ICheckSchemType type){
CompoundTag nbt = block.getNbtData();
if(nbt == null){
warnings.add("Ein(e) " + Material.getMaterial(blockId).name() + " ist defekt");
@@ -188,31 +143,19 @@ public class CheckSchemType {
continue;
}
- Material type = Material.getMaterial(item.getString("id").split(":")[1].toUpperCase().replace("SHOVEL", "SPADE"));
- if(type == null && item.getString("id").equals("minecraft:fire_charge"))
- type = Material.FIREBALL;
- if(type == null) //Leere Slots
+ Material t = Material.getMaterial(item.getString("id").split(":")[1].toUpperCase().replace("SHOVEL", "SPADE"));
+ if(t == null && item.getString("id").equals("minecraft:fire_charge"))
+ t = Material.FIREBALL;
+ if(t == null) //Leere Slots
continue;
- if(blockId == DISPENSER && (type.equals(Material.FIREBALL) || type.equals(Material.ARROW)))
+ if(blockId == DISPENSER && (t.equals(Material.FIREBALL) || t.equals(Material.ARROW)))
counter += item.getByte("Count");
- else if(!FLOWERS.contains(type) && !(blockId == CHEST && type.equals(Material.TNT)))
- errors.add("In einem/r " + Material.getMaterial(blockId).name() + " ist das verbotene Item " + type);
+ else if(!FLOWERS.contains(t) && !(blockId == CHEST && t.equals(Material.TNT)))
+ errors.add("In einem/r " + Material.getMaterial(blockId).name() + " ist das verbotene Item " + t);
}
- if(counter > maxDispenserItems)
- errors.add("Ein Werfer enthält mehr als " + maxDispenserItems + " Pfeile und Feuerbälle");
- }
-
- private void finalChecks(List errors, int tnt, int slime, int dispenser){
- int tntSlime = tnt + slime;
- if(maxTNT != 0 && tnt > maxTNT)
- errors.add("Zu viele TNT-Blöcke");
- if(maxSlime != 0 && slime > maxSlime)
- errors.add("Zu viele Schleim-Blöcke");
- if(maxDispenser != 0 && dispenser > maxDispenser)
- errors.add("Zu viele Werfer");
- if(maxTNTSlime != 0 && tntSlime > maxTNTSlime)
- errors.add("Zu viel Schleim+TNT");
+ if(counter > type.getMaxDispenserItems())
+ errors.add("Ein Werfer enthält mehr als " + type.getMaxDispenserItems() + " Pfeile und Feuerbälle");
}
}
diff --git a/SchematicSystem_12/src/de/steamwar/schematicsystem/WorldEdit_v12.java b/SchematicSystem_12/src/de/steamwar/schematicsystem/WorldEdit_v12.java
new file mode 100644
index 0000000..9031000
--- /dev/null
+++ b/SchematicSystem_12/src/de/steamwar/schematicsystem/WorldEdit_v12.java
@@ -0,0 +1,64 @@
+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.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.regions.Region;
+import com.sk89q.worldedit.session.ClipboardHolder;
+import com.sk89q.worldedit.world.World;
+import org.bukkit.Bukkit;
+import org.bukkit.Location;
+import org.bukkit.entity.Player;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Files;
+
+class WorldEdit_v12 {
+
+ 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, ClipboardFormat.SCHEMATIC);
+ }
+
+ 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){
+ 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();
+ 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");
+ }
+}
diff --git a/SchematicSystem_14/pom.xml b/SchematicSystem_14/pom.xml
new file mode 100644
index 0000000..cb64822
--- /dev/null
+++ b/SchematicSystem_14/pom.xml
@@ -0,0 +1,48 @@
+
+
+ 4.0.0
+
+ SchematicSystem_14
+ 1.0
+
+
+ steamwar
+ SchematicSystem
+ 1.0
+
+
+
+ src
+
+
+ src
+
+ **/*.java
+ **/*.kt
+
+
+
+
+
+
+
+ steamwar
+ SchematicSystem_API
+ 1.0
+
+
+ steamwar
+ Spigot-1.14
+ 1.0
+ provided
+
+
+ steamwar
+ FAWE
+ 1.14
+ provided
+
+
+
\ No newline at end of file
diff --git a/SchematicSystem_14/src/de/steamwar/schematicsystem/CheckSchemType_v14.java b/SchematicSystem_14/src/de/steamwar/schematicsystem/CheckSchemType_v14.java
new file mode 100644
index 0000000..c3ddc15
--- /dev/null
+++ b/SchematicSystem_14/src/de/steamwar/schematicsystem/CheckSchemType_v14.java
@@ -0,0 +1,145 @@
+package de.steamwar.schematicsystem;
+
+import com.boydti.fawe.FaweAPI;
+import com.sk89q.jnbt.CompoundTag;
+import com.sk89q.worldedit.extent.clipboard.Clipboard;
+import com.sk89q.worldedit.math.BlockVector3;
+import com.sk89q.worldedit.regions.Region;
+import com.sk89q.worldedit.world.block.BaseBlock;
+import de.steamwar.sql.Schematic;
+import de.steamwar.sql.SteamwarUser;
+import org.bukkit.Bukkit;
+import org.bukkit.Material;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.EnumSet;
+import java.util.List;
+import java.util.Set;
+import java.util.logging.Level;
+
+class CheckSchemType_v14 {
+ private static final Set INVENTORY = EnumSet.of(
+ Material.CHEST,
+ Material.TRAPPED_CHEST,
+ Material.HOPPER,
+ Material.FURNACE,
+ Material.DROPPER,
+ Material.JUKEBOX,
+ Material.DISPENSER,
+ Material.ANVIL,
+ Material.BREWING_STAND,
+ Material.BLACK_SHULKER_BOX,
+ Material.RED_SHULKER_BOX,
+ Material.WHITE_SHULKER_BOX,
+ Material.ORANGE_SHULKER_BOX,
+ Material.BLUE_SHULKER_BOX,
+ Material.LIGHT_BLUE_SHULKER_BOX,
+ Material.YELLOW_SHULKER_BOX,
+ Material.GREEN_SHULKER_BOX,
+ Material.BROWN_SHULKER_BOX,
+ Material.CYAN_SHULKER_BOX,
+ Material.GRAY_SHULKER_BOX,
+ Material.LIGHT_GRAY_SHULKER_BOX,
+ Material.LIME_SHULKER_BOX,
+ Material.MAGENTA_SHULKER_BOX,
+ Material.PINK_SHULKER_BOX,
+ Material.PURPLE_SHULKER_BOX);
+ //TODO: New Inventory Items
+ //TODO: Adding flowers
+ private static final Set FLOWERS = EnumSet.of(
+ Material.CORNFLOWER);
+
+ private CheckSchemType_v14(){}
+
+ static void autoCheck(Schematic schematic, List errors, List warnings, ICheckSchemType type) {
+ Clipboard clipboard;
+
+ try {
+ clipboard = FaweAPI.load(new File(Constants.SCHEM_DIR + SteamwarUser.get(schematic.getSchemOwner()).getUUID(), schematic.getSchemName() + ".schematic")).getClipboard();
+ if(clipboard == null)
+ throw new IOException();
+ } catch (IOException e) {
+ Bukkit.getLogger().log(Level.SEVERE, "Schematic could not be loaded", e);
+ errors.add("Die Schematic konnte nicht geladen werden");
+ return;
+ }
+
+ BlockVector3 dimensions = clipboard.getDimensions();
+
+ if(dimensions.getBlockX() > type.getWidth() || dimensions.getBlockY() > type.getHeight() || dimensions.getBlockZ() > type.getDepth())
+ errors.add("Das " + type.getName() + " überschreitet die Maximalmaße");
+
+ Region region = clipboard.getRegion();
+ BlockVector3 min = region.getMinimumPoint();
+ BlockVector3 max = region.getMaximumPoint();
+
+ int tnt = 0;
+ int slime = 0;
+ int dispenser = 0;
+
+ for(int x = min.getBlockX(); x <= max.getBlockX(); x++){
+ for(int y = min.getBlockY(); y <= max.getBlockY(); y++){
+ for(int z = min.getBlockZ(); z <= max.getBlockZ(); z++){
+ final BaseBlock block = clipboard.getFullBlock(BlockVector3.at(x, y, z));
+ final Material blockMaterial = Material.matchMaterial(block.getBlockType().getId());
+
+ if(blockMaterial == Material.TNT)
+ tnt++;
+
+ if(blockMaterial == Material.SLIME_BLOCK)
+ slime++;
+
+ if(blockMaterial == Material.DISPENSER)
+ dispenser++;
+
+ if(INVENTORY.contains(blockMaterial)){
+ checkInventory(errors, warnings, block, blockMaterial, type);
+ }
+
+ if(type.getForbidden().contains(blockMaterial.name()))
+ errors.add("Der Block " + blockMaterial.name() + " ist verboten");
+ }
+ }
+ }
+
+ type.finalChecks(errors, tnt, slime, dispenser);
+ }
+
+ private static void checkInventory(List errors, List warnings, BaseBlock block, Material blockMaterial, ICheckSchemType type){
+ CompoundTag nbt = block.getNbtData();
+ if(nbt == null){
+ warnings.add("Ein(e) " + blockMaterial.name() + " ist defekt");
+ return;
+ }
+
+ if(blockMaterial == Material.JUKEBOX && nbt.getValue().containsKey("RecordItem")){
+ errors.add("Schallplatten sind auch nicht in Schallplattenspielern gestattet");
+ return;
+ }
+
+ List items = nbt.getList("Items", CompoundTag.class);
+ if(items.isEmpty())
+ return; //Leeres Inventar
+
+ int counter = 0;
+ for(CompoundTag item : items){
+ if(!item.containsKey("id")){
+ warnings.add("Ein(e) " + blockMaterial.name() + " ist defekt");
+ continue;
+ }
+
+ Material t = Material.matchMaterial(item.getString("id"));
+ if(t == null) //Leere Slots
+ continue;
+
+ if(blockMaterial == Material.DISPENSER && (t.equals(Material.FIRE_CHARGE) || t.equals(Material.ARROW)))
+ counter += item.getByte("Count");
+ else if(!FLOWERS.contains(t) && !(blockMaterial == Material.CHEST && t.equals(Material.TNT)))
+ errors.add("In einem/r " + blockMaterial.name() + " ist das verbotene Item " + t);
+ }
+
+ if(counter > type.getMaxDispenserItems())
+ errors.add("Ein Werfer enthält mehr als " + type.getMaxDispenserItems() + " Pfeile und Feuerbälle");
+ }
+}
diff --git a/SchematicSystem_14/src/de/steamwar/schematicsystem/WorldEdit_v14.java b/SchematicSystem_14/src/de/steamwar/schematicsystem/WorldEdit_v14.java
new file mode 100644
index 0000000..dad1da1
--- /dev/null
+++ b/SchematicSystem_14/src/de/steamwar/schematicsystem/WorldEdit_v14.java
@@ -0,0 +1,66 @@
+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.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 org.bukkit.Location;
+import org.bukkit.entity.Player;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Files;
+
+class WorldEdit_v14 {
+ private WorldEdit_v14(){}
+
+ 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){
+ World weWorld = new BukkitWorld(player.getWorld());
+ Location playerLocation = player.getLocation();
+ 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 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");
+ }
+}
diff --git a/SchematicSystem_API/pom.xml b/SchematicSystem_API/pom.xml
new file mode 100644
index 0000000..9cbe30a
--- /dev/null
+++ b/SchematicSystem_API/pom.xml
@@ -0,0 +1,28 @@
+
+
+ 4.0.0
+
+
+ steamwar
+ SchematicSystem
+ 1.0
+
+
+ SchematicSystem_API
+ 1.0
+
+
+ src
+
+
+ src
+
+ **/*.java
+ **/*.kt
+
+
+
+
+
\ No newline at end of file
diff --git a/SchematicSystem_API/src/de/steamwar/schematicsystem/Constants.java b/SchematicSystem_API/src/de/steamwar/schematicsystem/Constants.java
new file mode 100644
index 0000000..ea0cec0
--- /dev/null
+++ b/SchematicSystem_API/src/de/steamwar/schematicsystem/Constants.java
@@ -0,0 +1,29 @@
+package de.steamwar.schematicsystem;
+
+import java.nio.file.attribute.PosixFilePermission;
+import java.util.EnumSet;
+import java.util.Set;
+
+public class Constants {
+ private Constants(){}
+
+ public static final Set FILE_PERMS = EnumSet.of(
+ PosixFilePermission.OWNER_READ,
+ PosixFilePermission.OWNER_WRITE,
+ PosixFilePermission.GROUP_READ,
+ PosixFilePermission.GROUP_WRITE,
+ PosixFilePermission.OTHERS_READ,
+ PosixFilePermission.OTHERS_WRITE);
+ public static final Set FOLDER_PERMS = EnumSet.of(
+ PosixFilePermission.OWNER_READ,
+ PosixFilePermission.OWNER_WRITE,
+ PosixFilePermission.GROUP_READ,
+ PosixFilePermission.GROUP_WRITE,
+ PosixFilePermission.OTHERS_READ,
+ PosixFilePermission.OTHERS_WRITE,
+ PosixFilePermission.OWNER_EXECUTE,
+ PosixFilePermission.GROUP_EXECUTE,
+ PosixFilePermission.OTHERS_EXECUTE);
+
+ public static final String SCHEM_DIR = "/home/minecraft/schematics/";
+}
diff --git a/SchematicSystem_API/src/de/steamwar/schematicsystem/ICheckSchemType.java b/SchematicSystem_API/src/de/steamwar/schematicsystem/ICheckSchemType.java
new file mode 100644
index 0000000..8ec60dc
--- /dev/null
+++ b/SchematicSystem_API/src/de/steamwar/schematicsystem/ICheckSchemType.java
@@ -0,0 +1,16 @@
+package de.steamwar.schematicsystem;
+
+import java.util.List;
+
+interface ICheckSchemType {
+ String getName();
+
+ int getWidth();
+ int getHeight();
+ int getDepth();
+ int getMaxDispenserItems();
+
+ List getForbidden();
+
+ void finalChecks(List errors, int tnt, int slime, int dispenser);
+}
diff --git a/SchematicSystem_Main/pom.xml b/SchematicSystem_Main/pom.xml
new file mode 100644
index 0000000..24d475f
--- /dev/null
+++ b/SchematicSystem_Main/pom.xml
@@ -0,0 +1,86 @@
+
+
+ 4.0.0
+
+
+ steamwar
+ SchematicSystem
+ 1.0
+
+
+ SchematicSystem_Main
+ 1.0
+ jar
+
+
+ src
+
+
+ src
+
+ **/*.java
+ **/*.kt
+
+
+
+
+
+ maven-assembly-plugin
+
+
+ package
+
+ single
+
+
+
+
+
+ jar-with-dependencies
+
+
+
+
+
+
+
+
+ steamwar
+ Spigot-1.12
+ 1.0
+ provided
+
+
+ steamwar
+ FAWE
+ 1.0
+ provided
+
+
+ steamwar
+ WorldEdit
+ 1.0
+ provided
+
+
+ steamwar
+ SchematicSystem_14
+ 1.0
+ compile
+
+
+ steamwar
+ SchematicSystem_12
+ 1.0
+ compile
+
+
+ steamwar
+ SchematicSystem_API
+ 1.0
+ compile
+
+
+
\ No newline at end of file
diff --git a/SchematicSystem_Main/src/de/steamwar/schematicsystem/CheckSchemType.java b/SchematicSystem_Main/src/de/steamwar/schematicsystem/CheckSchemType.java
new file mode 100644
index 0000000..6b05ad4
--- /dev/null
+++ b/SchematicSystem_Main/src/de/steamwar/schematicsystem/CheckSchemType.java
@@ -0,0 +1,113 @@
+package de.steamwar.schematicsystem;
+
+import de.steamwar.core.Core;
+import de.steamwar.sql.Schematic;
+import de.steamwar.sql.SchematicType;
+import org.bukkit.configuration.ConfigurationSection;
+
+import java.util.EnumMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+
+public class CheckSchemType implements ICheckSchemType {
+
+ private static final Map types = new EnumMap<>(SchematicType.class);
+
+ private final String name;
+
+ private final int width;
+ private final int height;
+ private final int depth;
+ private final int maxDispenserItems;
+ private final List forbiddenMaterials;
+
+ private final int maxTNT;
+ private final int maxSlime;
+ private final int maxTNTSlime;
+ private final int maxDispenser;
+ private final LinkedList checkList;
+
+ CheckSchemType(ConfigurationSection section) {
+ name = section.getName();
+ width = section.getInt("width");
+ height = section.getInt("height");
+ depth = section.getInt("depth");
+
+ maxTNT = section.getInt("maxTNT");
+ maxSlime = section.getInt("maxSlime");
+ maxTNTSlime = section.getInt("maxTNTSlime");
+ maxDispenser = section.getInt("maxDispenser");
+ maxDispenserItems = section.getInt("maxDispenserItems");
+
+ forbiddenMaterials = section.getStringList("forbiddenMaterials");
+ checkList = new LinkedList<>(section.getStringList("checkList"));
+ types.put(SchematicType.fromDB(name), this);
+ types.put(SchematicType.fromDB("c" + name), this);
+ }
+
+ public static CheckSchemType get(SchematicType type){
+ return types.get(type);
+ }
+
+ public List getCheckList() {
+ return checkList;
+ }
+
+ public SchematicType getAcceptedType(){
+ return SchematicType.fromDB(name);
+ }
+
+ public void autoCheck(Schematic schematic, List errors, List warnings) {
+ switch(Core.getVersion()){
+ case 14:
+ CheckSchemType_v14.autoCheck(schematic, errors, warnings, this);
+ break;
+ default:
+ CheckSchemType_v12.autoCheck(schematic, errors, warnings, this);
+ }
+ }
+
+ @Override
+ public void finalChecks(List errors, int tnt, int slime, int dispenser){
+ int tntSlime = tnt + slime;
+ if(maxTNT != 0 && tnt > maxTNT)
+ errors.add("Zu viele TNT-Blöcke");
+ if(maxSlime != 0 && slime > maxSlime)
+ errors.add("Zu viele Schleim-Blöcke");
+ if(maxDispenser != 0 && dispenser > maxDispenser)
+ errors.add("Zu viele Werfer");
+ if(maxTNTSlime != 0 && tntSlime > maxTNTSlime)
+ errors.add("Zu viel Schleim+TNT");
+ }
+
+ @Override
+ public String getName() {
+ return name;
+ }
+
+ @Override
+ public int getWidth() {
+ return width;
+ }
+
+ @Override
+ public int getHeight() {
+ return height;
+ }
+
+ @Override
+ public int getDepth() {
+ return depth;
+ }
+
+ @Override
+ public int getMaxDispenserItems() {
+ return maxDispenserItems;
+ }
+
+ @Override
+ public List getForbidden() {
+ return forbiddenMaterials;
+ }
+}
diff --git a/src/de/steamwar/schematicsystem/SchematicSystem.java b/SchematicSystem_Main/src/de/steamwar/schematicsystem/SchematicSystem.java
similarity index 86%
rename from src/de/steamwar/schematicsystem/SchematicSystem.java
rename to SchematicSystem_Main/src/de/steamwar/schematicsystem/SchematicSystem.java
index b13ec5b..f1a0dd0 100644
--- a/src/de/steamwar/schematicsystem/SchematicSystem.java
+++ b/SchematicSystem_Main/src/de/steamwar/schematicsystem/SchematicSystem.java
@@ -1,13 +1,12 @@
package de.steamwar.schematicsystem;
-import com.sk89q.worldedit.bukkit.WorldEditPlugin;
+import de.steamwar.core.CommandRemover;
import de.steamwar.schematicsystem.check.CheckUtils;
import de.steamwar.schematicsystem.commands.CheckCommand;
import de.steamwar.schematicsystem.commands.SchematicCommand;
import de.steamwar.schematicsystem.listener.PlayerCommandPreProcessListener;
import de.steamwar.schematicsystem.listener.PlayerJoinListener;
import de.steamwar.schematicsystem.listener.PlayerQuitListener;
-import de.steamwar.schematicsystem.utils.CommandRemover;
import org.bukkit.Bukkit;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.configuration.file.FileConfiguration;
@@ -18,7 +17,6 @@ import java.io.File;
public class SchematicSystem extends JavaPlugin {
- public static final String SCHEM_DIR = "/home/minecraft/schematics/";
public static final String PREFIX = "§eSchematic§8» §7";
@Override
@@ -50,8 +48,4 @@ public class SchematicSystem extends JavaPlugin {
CheckUtils.sendTeamMembersCSchematics(CheckUtils.sendTeamMembersCSchematicsInfo());
}, 0, 6000);
}
-
- public static WorldEditPlugin getWorldEditPlugin() {
- return (WorldEditPlugin) Bukkit.getPluginManager().getPlugin("WorldEdit");
- }
}
diff --git a/SchematicSystem_Main/src/de/steamwar/schematicsystem/WorldEdit.java b/SchematicSystem_Main/src/de/steamwar/schematicsystem/WorldEdit.java
new file mode 100644
index 0000000..22825db
--- /dev/null
+++ b/SchematicSystem_Main/src/de/steamwar/schematicsystem/WorldEdit.java
@@ -0,0 +1,43 @@
+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 org.bukkit.entity.Player;
+
+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_v14.saveSchematic(player, name);
+ break;
+ default:
+ WorldEdit_v12.saveSchematic(player, name);
+ }
+ }
+
+ public static void loadClipboardToPlayer(Player player, Clipboard clipboard){
+ switch(Core.getVersion()){
+ case 14:
+ WorldEdit_v14.loadClipboardToPlayer(player, clipboard);
+ break;
+ default:
+ WorldEdit_v12.loadClipboardToPlayer(player, clipboard);
+ }
+ }
+
+ public static EditSession pasteSchematic(Player player, Schematic schematic){
+ switch(Core.getVersion()){
+ case 14:
+ return WorldEdit_v14.pasteSchematic(player, schematic);
+ default:
+ return WorldEdit_v12.pasteSchematic(player, schematic);
+ }
+ }
+}
diff --git a/src/de/steamwar/schematicsystem/check/CheckSession.java b/SchematicSystem_Main/src/de/steamwar/schematicsystem/check/CheckSession.java
similarity index 88%
rename from src/de/steamwar/schematicsystem/check/CheckSession.java
rename to SchematicSystem_Main/src/de/steamwar/schematicsystem/check/CheckSession.java
index 8c7f8e6..69bfbd4 100644
--- a/src/de/steamwar/schematicsystem/check/CheckSession.java
+++ b/SchematicSystem_Main/src/de/steamwar/schematicsystem/check/CheckSession.java
@@ -3,10 +3,10 @@ package de.steamwar.schematicsystem.check;
import com.sk89q.worldedit.EditSession;
import de.steamwar.schematicsystem.CheckSchemType;
import de.steamwar.schematicsystem.SchematicSystem;
-import de.steamwar.schematicsystem.utils.CheckedSchematic;
-import de.warking.hunjy.MySQL.Schematic;
-import de.warking.hunjy.MySQL.SchematicType;
-import de.warking.hunjy.MySQL.WarkingUser;
+import de.steamwar.sql.CheckedSchematic;
+import de.steamwar.sql.Schematic;
+import de.steamwar.sql.SchematicType;
+import de.steamwar.sql.SteamwarUser;
import net.md_5.bungee.api.ChatColor;
import net.md_5.bungee.api.chat.ClickEvent;
import net.md_5.bungee.api.chat.TextComponent;
@@ -58,9 +58,9 @@ public class CheckSession {
public void sendNextCheck() {
if(!checkList.hasNext()){
- Bukkit.getPlayer(uuid).sendMessage(SchematicSystem.PREFIX + "§aDie Schematic §e" + schematic.getSchemName() + " §avon §e" + WarkingUser.get(schematic.getSchemOwner()).getUserName() + " §aist nun freigegeben!");
+ Bukkit.getPlayer(uuid).sendMessage(SchematicSystem.PREFIX + "§aDie Schematic §e" + schematic.getSchemName() + " §avon §e" + SteamwarUser.get(schematic.getSchemOwner()).getUserName() + " §aist nun freigegeben!");
schematic.setSchemType(CheckSchemType.get(schematic.getSchemType()).getAcceptedType());
- new CheckedSchematic(this.schematic.getSchemName(), this.schematic.getSchemOwner(), WarkingUser.get(this.uuid).getId(), this.startTime, this.stopTime, "freigegeben");
+ new CheckedSchematic(this.schematic.getSchemName(), this.schematic.getSchemOwner(), SteamwarUser.get(this.uuid).getId(), this.startTime, this.stopTime, "freigegeben");
removeSchematic();
return;
@@ -98,7 +98,7 @@ public class CheckSession {
public void declineSchematic(String declineReason) {
schematic.setSchemType(SchematicType.Normal);
- new CheckedSchematic(this.schematic.getSchemName(), this.schematic.getSchemOwner(), WarkingUser.get(this.uuid).getId(), this.startTime, this.stopTime, declineReason);
+ new CheckedSchematic(this.schematic.getSchemName(), this.schematic.getSchemOwner(), SteamwarUser.get(this.uuid).getId(), this.startTime, this.stopTime, declineReason);
removeSchematic();
}
diff --git a/src/de/steamwar/schematicsystem/check/CheckUtils.java b/SchematicSystem_Main/src/de/steamwar/schematicsystem/check/CheckUtils.java
similarity index 87%
rename from src/de/steamwar/schematicsystem/check/CheckUtils.java
rename to SchematicSystem_Main/src/de/steamwar/schematicsystem/check/CheckUtils.java
index 8807c43..90893a9 100644
--- a/src/de/steamwar/schematicsystem/check/CheckUtils.java
+++ b/SchematicSystem_Main/src/de/steamwar/schematicsystem/check/CheckUtils.java
@@ -1,10 +1,10 @@
package de.steamwar.schematicsystem.check;
import de.steamwar.schematicsystem.SchematicSystem;
-import de.warking.hunjy.MySQL.Schematic;
-import de.warking.hunjy.MySQL.SchematicType;
-import de.warking.hunjy.MySQL.UserGroup;
-import de.warking.hunjy.MySQL.WarkingUser;
+import de.steamwar.sql.Schematic;
+import de.steamwar.sql.SchematicType;
+import de.steamwar.sql.SteamwarUser;
+import de.steamwar.sql.UserGroup;
import net.md_5.bungee.api.chat.ClickEvent;
import net.md_5.bungee.api.chat.ComponentBuilder;
import net.md_5.bungee.api.chat.HoverEvent;
@@ -30,7 +30,7 @@ public class CheckUtils {
}
public static boolean allowedToCheck(Player player) {
- WarkingUser warkingUser = WarkingUser.get(player.getUniqueId());
+ SteamwarUser warkingUser = SteamwarUser.get(player.getUniqueId());
return warkingUser.getUserGroup() == UserGroup.Supporter ||
warkingUser.getUserGroup() == UserGroup.Developer ||
warkingUser.getUserGroup() == UserGroup.Moderator ||
@@ -83,10 +83,10 @@ public class CheckUtils {
player.sendMessage("§e" + schematicList.size() + " ungeprüfte Schematics");
for(Schematic schematic : schematicList) {
- TextComponent schematics = new TextComponent("§8" + schematic.getSchemType().getKuerzel() + " §7" + WarkingUser.get(schematic.getSchemOwner()).getUserName() + " §e" + schematic.getSchemName());
+ TextComponent schematics = new TextComponent("§8" + schematic.getSchemType().getKuerzel() + " §7" + SteamwarUser.get(schematic.getSchemOwner()).getUserName() + " §e" + schematic.getSchemName());
schematics.setBold(true);
schematics.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("Schematic prüfen").create()));
- schematics.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/check schematic " + schematic.getSchemName() + " " + WarkingUser.get(schematic.getSchemOwner()).getUserName()));
+ schematics.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/check schematic " + schematic.getSchemName() + " " + SteamwarUser.get(schematic.getSchemOwner()).getUserName()));
player.spigot().sendMessage(schematics);
}
}
diff --git a/src/de/steamwar/schematicsystem/commands/CheckCommand.java b/SchematicSystem_Main/src/de/steamwar/schematicsystem/commands/CheckCommand.java
similarity index 79%
rename from src/de/steamwar/schematicsystem/commands/CheckCommand.java
rename to SchematicSystem_Main/src/de/steamwar/schematicsystem/commands/CheckCommand.java
index 666a600..5b63aa5 100644
--- a/src/de/steamwar/schematicsystem/commands/CheckCommand.java
+++ b/SchematicSystem_Main/src/de/steamwar/schematicsystem/commands/CheckCommand.java
@@ -1,16 +1,14 @@
package de.steamwar.schematicsystem.commands;
import com.boydti.fawe.FaweAPI;
-import com.sk89q.worldedit.Vector;
-import com.sk89q.worldedit.bukkit.BukkitWorld;
-import com.sk89q.worldedit.world.World;
+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.warking.hunjy.MySQL.Schematic;
-import de.warking.hunjy.MySQL.WarkingUser;
+import de.steamwar.sql.Schematic;
+import de.steamwar.sql.SteamwarUser;
import org.bukkit.Bukkit;
-import org.bukkit.Location;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
@@ -66,7 +64,7 @@ public class CheckCommand implements CommandExecutor {
return false;
}
- WarkingUser user = WarkingUser.get(args[2]);
+ SteamwarUser user = SteamwarUser.get(args[2]);
if(user.getUUID() == null){
player.sendMessage(SchematicSystem.PREFIX + "§cUnbekannter Benutzer");
return false;
@@ -79,7 +77,7 @@ public class CheckCommand implements CommandExecutor {
}else if(!schematic.getSchemType().check()){
player.sendMessage(SchematicSystem.PREFIX + "§cSchematic ist nicht zu prüfen");
return false;
- }else if(schematic.getSchemOwner() == WarkingUser.get(player.getUniqueId()).getId()) {
+ }else if(schematic.getSchemOwner() == SteamwarUser.get(player.getUniqueId()).getId()) {
player.sendMessage(SchematicSystem.PREFIX + "§cDu kannst nicht deine eigenen Schematics prüfen");
return false;
}
@@ -87,16 +85,16 @@ public class CheckCommand implements CommandExecutor {
List worldPlayers = player.getWorld().getPlayers();
for(Player players : worldPlayers) {
if(!players.getUniqueId().toString().equals(player.getWorld().getName())) {
- WarkingUser warkingUsers = WarkingUser.get(players.getUniqueId());
+ SteamwarUser warkingUsers = SteamwarUser.get(players.getUniqueId());
if(!CheckUtils.allowedToCheck(players) &&
- !warkingUsers.getUUID().toString().equals(WarkingUser.get(schematic.getSchemOwner()).getUUID().toString())) {
+ !warkingUsers.getUUID().toString().equals(SteamwarUser.get(schematic.getSchemOwner()).getUUID().toString())) {
player.sendMessage(SchematicSystem.PREFIX + "§cZum Prüfen darf sich kein Unbeteiligter auf deinem Bauserver befinden!");
return false;
}
}
}
- File file = new File(SchematicSystem.SCHEM_DIR + user.getUUID().toString(),schematic.getSchemName() + ".schematic");
+ 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;
@@ -104,19 +102,10 @@ public class CheckCommand implements CommandExecutor {
try {
com.boydti.fawe.object.schematic.Schematic schematicFAWE = FaweAPI.load(file);
- Location playerLocation = player.getLocation();
-
- World weWorld = new BukkitWorld(player.getWorld());
- Vector vector = new Vector(playerLocation.getBlockX(), playerLocation.getBlockY(), playerLocation.getBlockZ());
- Vector offset = new Vector(schematicFAWE.getClipboard().getRegion().getMinimumPoint()).subtract(schematicFAWE.getClipboard().getOrigin());
- Vector v;
- Vector dimensions = schematicFAWE.getClipboard().getDimensions();
- v = vector.subtract(dimensions.getX()/2 - dimensions.getX()%2, 0, dimensions.getZ()).subtract(offset);
-
checkSession = new CheckSession(player.getUniqueId(), schematic);
checkSession.sendNextCheck();
- checkSession.setEditSession(schematicFAWE.paste(weWorld, v));
+ checkSession.setEditSession(WorldEdit.pasteSchematic(player, schematicFAWE));
} catch (IOException ex) {
player.sendMessage(SchematicSystem.PREFIX + "§cSchematic konnte nicht geladen/gepastet werden");
Bukkit.getLogger().log(Level.SEVERE, "Failed to load schematic", ex);
@@ -135,7 +124,7 @@ public class CheckCommand implements CommandExecutor {
StringBuilder message = new StringBuilder();
for (int i = 1; i < args.length; i++) message.append(args[i]).append(" ");
- player.sendMessage(SchematicSystem.PREFIX + "§aDie Schematic §6" + checkSession.getSchematic().getSchemName() + " §avon §6" + WarkingUser.get(checkSession.getSchematic().getSchemOwner()).getUserName() + " §awurde aufgrund von §6" + message + " §anicht freigegeben!");
+ player.sendMessage(SchematicSystem.PREFIX + "§aDie Schematic §6" + checkSession.getSchematic().getSchemName() + " §avon §6" + SteamwarUser.get(checkSession.getSchematic().getSchemOwner()).getUserName() + " §awurde aufgrund von §6" + message + " §anicht freigegeben!");
checkSession.declineSchematic(message.toString());
break;
default:
diff --git a/src/de/steamwar/schematicsystem/commands/GUI.java b/SchematicSystem_Main/src/de/steamwar/schematicsystem/commands/GUI.java
similarity index 74%
rename from src/de/steamwar/schematicsystem/commands/GUI.java
rename to SchematicSystem_Main/src/de/steamwar/schematicsystem/commands/GUI.java
index b6db76b..5c7b52e 100644
--- a/src/de/steamwar/schematicsystem/commands/GUI.java
+++ b/SchematicSystem_Main/src/de/steamwar/schematicsystem/commands/GUI.java
@@ -3,12 +3,9 @@ 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.schematicsystem.utils.CheckedSchematic;
-import de.warking.hunjy.MySQL.Schematic;
-import de.warking.hunjy.MySQL.SchematicMember;
-import de.warking.hunjy.MySQL.SchematicType;
-import de.warking.hunjy.MySQL.WarkingUser;
+import de.steamwar.sql.*;
import javafx.util.Pair;
import org.bukkit.Bukkit;
import org.bukkit.Material;
@@ -18,7 +15,10 @@ import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.SkullMeta;
import java.io.File;
-import java.util.*;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.LinkedList;
+import java.util.List;
class GUI {
private GUI(){}
@@ -29,7 +29,7 @@ class GUI {
if(!type.isAssignable())
continue;
- SWItem item = new SWItem(Material.STONE_BUTTON, type.name());
+ SWItem item = new SWItem(SWItem.getMaterial("STONE_BUTTON"), type.name());
if(type.fightType())
item.setEnchanted(true);
@@ -46,8 +46,8 @@ class GUI {
static void delete(Player p, Schematic schem){
SWInventory inv = new SWInventory(p, 9, schem.getSchemName() + " löschen");
- inv.setItem(0, Material.INK_SACK, (byte) 1, "§eLöschen", click -> {
- File file = new File(SchematicSystem.SCHEM_DIR + p.getUniqueId(), schem.getSchemName() + ".schematic");
+ 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();
@@ -60,7 +60,7 @@ class GUI {
p.sendMessage(SchematicSystem.PREFIX + "Schematic §e" + schem.getSchemName() + " §7gelöscht");
p.closeInventory();
});
- inv.setItem(8, Material.INK_SACK, (byte) 14, "§cAbbruch", click -> p.closeInventory());
+ inv.setItem(8, SWItem.getDye(14), (byte) 14, "§cAbbruch", click -> p.closeInventory());
inv.setCallback(-999, click -> p.closeInventory());
inv.open();
}
@@ -68,17 +68,8 @@ class GUI {
static void delmembers(Player p, Schematic schem){
List> members = new LinkedList<>();
for(SchematicMember member : SchematicMember.getSchemMembers(schem.getSchemName(), schem.getSchemOwner())){
- WarkingUser user = WarkingUser.get(member.getMember());
-
- SWItem item = new SWItem();
- ItemStack head = new ItemStack(Material.SKULL_ITEM, 1, (short)3);
- SkullMeta headmeta = (SkullMeta)head.getItemMeta();
- headmeta.setOwningPlayer(Bukkit.getOfflinePlayer(user.getUUID()));
- headmeta.setDisplayName(user.getUserName());
- head.setItemMeta(headmeta);
- item.setItemStack(head);
-
- members.add(new Pair<>(item, member));
+ SteamwarUser user = SteamwarUser.get(member.getMember());
+ members.add(new Pair<>(SWItem.getPlayerSkull(Bukkit.getOfflinePlayer(user.getUUID())), member));
}
SWListInv inv = new SWListInv<>(p, "Mitglieder entfernen", (clickType, member) -> {
@@ -109,48 +100,48 @@ class GUI {
private static void info(Player p, Schematic schem){
SWInventory inv = new SWInventory(p, 9, schem.getSchemName());
- inv.setItem(0, Material.WOOD_AXE, "§eLaden", click -> {
+ inv.setItem(0, SWItem.getMaterial("WOOD_AXE"), "§eLaden", click -> {
SchematicCommand.load(p, schem);
p.closeInventory();
});
- if(schem.getSchemOwner() == WarkingUser.get(p.getUniqueId()).getId()){
+ if(schem.getSchemOwner() == SteamwarUser.get(p.getUniqueId()).getId()){
if(schem.getSchemType().writeable()){
List checkedSchematics = CheckedSchematic.getLastDeclined(p.getUniqueId());
for(CheckedSchematic checkedSchematic : checkedSchematics) {
if(checkedSchematic.getSchemName().equals(schem.getSchemName()) &&
checkedSchematic.getSchemOwner() == schem.getSchemOwner()) {
- inv.setItem(1, Material.INK_SACK, (byte) 10, "§eStatus " + schem.getSchemType().name(), Collections.singletonList("§7" + checkedSchematic.getDeclineReason()), false, click -> {});
+ inv.setItem(1, SWItem.getDye(10), (byte) 10, "§eStatus " + schem.getSchemType().name(), Collections.singletonList("§7" + checkedSchematic.getDeclineReason()), false, click -> {});
break;
}
}
}
- Material mat = Material.CAULDRON_ITEM;
+ Material mat = SWItem.getMaterial("CAULDRON_ITEM");
if(schem.getItem() != null && !schem.getItem().equals(""))
- mat = Material.valueOf(schem.getItem());
+ mat = SWItem.getMaterial(schem.getItem());
inv.setItem(2, mat, "§e" + mat.name(), Arrays.asList("§7Zum Ändern", "§7anklicken"), false, click -> {
p.closeInventory();
changeItem(p, schem);
});
- inv.setItem(4, Material.CAULDRON_ITEM, "§e" + schem.getSchemType().name(), Arrays.asList("§7Zum Ändern", "§7anklicken"), false, click -> {
+ 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, Material.SKULL_ITEM, "§eMitglieder", click -> {
+ inv.setItem(6, SWItem.getMaterial("SKULL_ITEM"), "§eMitglieder", click -> {
p.closeInventory();
delmembers(p, schem);
});
- inv.setItem(8, Material.INK_SACK, (byte) 1, "§cLöschen", click -> {
+ inv.setItem(8, SWItem.getDye(1), (byte) 1, "§cLöschen", click -> {
p.closeInventory();
delete(p, schem);
});
}else{
- inv.setItem(4, Material.CAULDRON_ITEM, "§e" + schem.getSchemType().name(), click -> {});
+ inv.setItem(4, SWItem.getMaterial("CAULDRON_ITEM"), "§e" + schem.getSchemType().name(), click -> {});
- WarkingUser owneruser = WarkingUser.get(schem.getSchemOwner());
+ SteamwarUser owneruser = SteamwarUser.get(schem.getSchemOwner());
SWItem owner = new SWItem();
- ItemStack head = new ItemStack(Material.SKULL_ITEM, 1, (short)3);
+ ItemStack head = new ItemStack(SWItem.getMaterial("SKULL_ITEM"), 1, (short)3);
SkullMeta headmeta = (SkullMeta)head.getItemMeta();
headmeta.setOwningPlayer(Bukkit.getOfflinePlayer(owneruser.getUUID()));
headmeta.setDisplayName("§7von §e" + owneruser.getUserName());
@@ -164,7 +155,7 @@ class GUI {
}
static void list(Player p){
- list(p, WarkingUser.get(p.getUniqueId()).getId());
+ list(p, SteamwarUser.get(p.getUniqueId()).getId());
}
static void list(Player p, int pid){
@@ -174,9 +165,9 @@ class GUI {
for(Schematic schem : schems) {
Material m;
if (schem.getItem().isEmpty())
- m = Material.CAULDRON_ITEM;
+ m = SWItem.getMaterial("CAULDRON_ITEM");
else
- m = Material.valueOf(schem.getItem());
+ m = SWItem.getMaterial(schem.getItem());
SWItem item = new SWItem(m, "§e" + schem.getSchemName(), Collections.singletonList("§7" + schem.getSchemType().name()), !schem.getSchemType().writeable(), click -> {});
schemList.add(new Pair<>(item, schem));
diff --git a/src/de/steamwar/schematicsystem/commands/SchematicCommand.java b/SchematicSystem_Main/src/de/steamwar/schematicsystem/commands/SchematicCommand.java
similarity index 77%
rename from src/de/steamwar/schematicsystem/commands/SchematicCommand.java
rename to SchematicSystem_Main/src/de/steamwar/schematicsystem/commands/SchematicCommand.java
index cf55a6b..5a5ab31 100644
--- a/src/de/steamwar/schematicsystem/commands/SchematicCommand.java
+++ b/SchematicSystem_Main/src/de/steamwar/schematicsystem/commands/SchematicCommand.java
@@ -2,18 +2,13 @@ package de.steamwar.schematicsystem.commands;
import com.boydti.fawe.FaweAPI;
import com.sk89q.worldedit.EmptyClipboardException;
-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 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.schematicsystem.utils.CheckedSchematic;
-import de.warking.hunjy.MySQL.Schematic;
-import de.warking.hunjy.MySQL.SchematicMember;
-import de.warking.hunjy.MySQL.SchematicType;
-import de.warking.hunjy.MySQL.WarkingUser;
+import de.steamwar.sql.*;
import net.md_5.bungee.api.ChatColor;
import net.md_5.bungee.api.chat.ClickEvent;
import net.md_5.bungee.api.chat.ComponentBuilder;
@@ -26,12 +21,8 @@ import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import java.io.File;
-import java.io.FileOutputStream;
import java.io.IOException;
-import java.nio.file.Files;
-import java.nio.file.attribute.PosixFilePermission;
import java.util.ArrayList;
-import java.util.EnumSet;
import java.util.LinkedList;
import java.util.List;
import java.util.logging.Level;
@@ -39,23 +30,6 @@ import java.util.logging.Level;
public class SchematicCommand implements CommandExecutor {
private static final int FILES_PER_PAGE = 15;
- private static final EnumSet FILE_PERMS = EnumSet.of(
- PosixFilePermission.OWNER_READ,
- PosixFilePermission.OWNER_WRITE,
- PosixFilePermission.GROUP_READ,
- PosixFilePermission.GROUP_WRITE,
- PosixFilePermission.OTHERS_READ,
- PosixFilePermission.OTHERS_WRITE);
- private static final EnumSet FOLDER_PERMS = EnumSet.of(
- PosixFilePermission.OWNER_READ,
- PosixFilePermission.OWNER_WRITE,
- PosixFilePermission.GROUP_READ,
- PosixFilePermission.GROUP_WRITE,
- PosixFilePermission.OTHERS_READ,
- PosixFilePermission.OTHERS_WRITE,
- PosixFilePermission.OWNER_EXECUTE,
- PosixFilePermission.GROUP_EXECUTE,
- PosixFilePermission.OTHERS_EXECUTE);
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
@@ -104,7 +78,7 @@ public class SchematicCommand implements CommandExecutor {
private void list(Player player, String[] args){
if(args.length <= 1){
- sendPlayerSchematicList(0, WarkingUser.get(player.getUniqueId()).getId(), player);
+ sendPlayerSchematicList(0, SteamwarUser.get(player.getUniqueId()).getId(), player);
return;
}
@@ -114,7 +88,7 @@ public class SchematicCommand implements CommandExecutor {
}
try {
- sendPlayerSchematicList(Integer.parseInt(args[1]), WarkingUser.get(player.getUniqueId()).getId(), player);
+ sendPlayerSchematicList(Integer.parseInt(args[1]), SteamwarUser.get(player.getUniqueId()).getId(), player);
} catch (NumberFormatException ex) {
player.sendMessage(SchematicSystem.PREFIX + "§cUngültige Seitenzahl");
}
@@ -158,20 +132,18 @@ public class SchematicCommand implements CommandExecutor {
}
static void load(Player player, Schematic schematic){
- try{
- Actor actor = SchematicSystem.getWorldEditPlugin().wrapCommandSender(player);
+ try {
+ File file = new File(Constants.SCHEM_DIR + SteamwarUser.get(schematic.getSchemOwner()).getUUID(), schematic.getSchemName() + ".schematic");
- File file = new File(SchematicSystem.SCHEM_DIR + WarkingUser.get(schematic.getSchemOwner()).getUUID(), schematic.getSchemName() + ".schematic");
-
- if(!file.exists()) {
+ if (!file.exists()) {
player.sendMessage(SchematicSystem.PREFIX + "§cDie angegebene Schematic existiert nicht");
return;
}
Clipboard clipboard = FaweAPI.load(file).getClipboard();
- if(clipboard == null)
+ if (clipboard == null)
throw new IOException("File not a schematic");
- SchematicSystem.getWorldEditPlugin().getWorldEdit().getSessionManager().get(actor).setClipboard(new ClipboardHolder(clipboard, FaweAPI.getWorld(player.getWorld().getName()).getWorldData()));
+ WorldEdit.loadClipboardToPlayer(player, clipboard);
player.sendMessage(SchematicSystem.PREFIX + "Schematic §e" + schematic.getSchemName() + " §7geladen");
}catch (IOException ex){
Bukkit.getLogger().log(Level.SEVERE, "Schematic konnte nicht geladen werden", ex);
@@ -189,7 +161,7 @@ public class SchematicCommand implements CommandExecutor {
if(schematic == null)
return;
- if(WarkingUser.get(player.getUniqueId()).getId() != schematic.getSchemOwner()){
+ if(SteamwarUser.get(player.getUniqueId()).getId() != schematic.getSchemOwner()){
player.sendMessage(SchematicSystem.PREFIX + "§cDu darfst nur deine eigenen Schematics löschen");
return;
}
@@ -213,33 +185,21 @@ public class SchematicCommand implements CommandExecutor {
}
try {
- ClipboardHolder clipboardHolder = FaweAPI.wrapPlayer(player).getSession().getClipboard();
- Clipboard clipboard = clipboardHolder.getClipboard();
- if(clipboard == null) {
- player.sendMessage(SchematicSystem.PREFIX + "§cDein Clipboard ist leer");
- return;
- }
-
- File folder = new File(SchematicSystem.SCHEM_DIR + player.getUniqueId().toString());
- if(!folder.exists()){
- folder.mkdir();
- Files.setPosixFilePermissions(folder.toPath(), FOLDER_PERMS);
- }
-
- File file = new File(folder, args[1] + ".schematic");
- file.createNewFile();
- Files.setPosixFilePermissions(file.toPath(), FILE_PERMS);
- ClipboardFormat.SCHEMATIC.getWriter(new FileOutputStream(file)).write(clipboard, clipboardHolder.getWorldData());
-
- if(schematic != null && schematic.getSchemOwner() == WarkingUser.get(player.getUniqueId()).getId()){
- player.sendMessage(SchematicSystem.PREFIX + "Schematic §e" + args[1] + " §7überschrieben");
- }else{
- new Schematic(args[1], player.getUniqueId(), "", SchematicType.Normal);
- player.sendMessage(SchematicSystem.PREFIX + "Schematic §e" + args[1] + " §7gespeichert");
- }
- }catch(IOException | EmptyClipboardException ex){
+ WorldEdit.saveSchematic(player, args[1]);
+ }catch(EmptyClipboardException e){
+ player.sendMessage(SchematicSystem.PREFIX + "§cDein Clipboard ist leer");
+ return;
+ }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");
+ 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);
+ player.sendMessage(SchematicSystem.PREFIX + "Schematic §e" + args[1] + " §7gespeichert");
}
}
@@ -315,7 +275,7 @@ public class SchematicCommand implements CommandExecutor {
player.sendMessage("§eName: §7" + schematic.getSchemName());
TextComponent type = new TextComponent("§eTyp: §7" + schematic.getSchemType().name());
- if(WarkingUser.get(schematic.getSchemOwner()).getUUID().equals(player.getUniqueId())){
+ if(SteamwarUser.get(schematic.getSchemOwner()).getUUID().equals(player.getUniqueId())){
type.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, TextComponent.fromLegacyText("§eTyp ändern")));
type.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/schem changetype " + schematic.getSchemName()));
}
@@ -330,12 +290,12 @@ public class SchematicCommand implements CommandExecutor {
}
}
- if(!WarkingUser.get(schematic.getSchemOwner()).getUUID().equals(player.getUniqueId())) {
- player.sendMessage("§eBesitzer: §7" + WarkingUser.get(schematic.getSchemOwner()).getUserName());
+ if(!SteamwarUser.get(schematic.getSchemOwner()).getUUID().equals(player.getUniqueId())) {
+ player.sendMessage("§eBesitzer: §7" + SteamwarUser.get(schematic.getSchemOwner()).getUserName());
} else {
List schematicMembers = new ArrayList<>();
for(SchematicMember schematicMember : SchematicMember.getSchemMembers(schematic.getSchemName(), schematic.getSchemOwner())) {
- schematicMembers.add(WarkingUser.get(schematicMember.getMember()).getUserName());
+ schematicMembers.add(SteamwarUser.get(schematicMember.getMember()).getUserName());
}
player.sendMessage("§eMitglieder: §7" + schematicMembers.toString());
}
@@ -356,12 +316,12 @@ public class SchematicCommand implements CommandExecutor {
if(schematic == null)
return;
- if(schematic.getSchemOwner() != WarkingUser.get(player.getUniqueId()).getId()) {
+ if(schematic.getSchemOwner() != SteamwarUser.get(player.getUniqueId()).getId()) {
player.sendMessage(SchematicSystem.PREFIX + "§cDu darfst nur auf deine eigene Schematic Mitglieder hinzufügen");
return;
}
- WarkingUser warkingUser = WarkingUser.get(args[2]);
+ SteamwarUser warkingUser = SteamwarUser.get(args[2]);
if(warkingUser.getUUID() == null){
player.sendMessage(SchematicSystem.PREFIX + "§cDieser Spieler existiert nicht");
return;
@@ -371,17 +331,17 @@ public class SchematicCommand implements CommandExecutor {
return;
}
- if(SchematicMember.getSchemMemberFromDB(schematic.getSchemName(), WarkingUser.get(schematic.getSchemOwner()).getUUID(), warkingUser.getUUID()) != null){
+ if(SchematicMember.getSchemMemberFromDB(schematic.getSchemName(), SteamwarUser.get(schematic.getSchemOwner()).getUUID(), warkingUser.getUUID()) != null){
player.sendMessage(SchematicSystem.PREFIX + "§cDieser Spieler ist bereits auf diese Schematic geaddet");
return;
}
- new SchematicMember(schematic.getSchemName(), WarkingUser.get(schematic.getSchemOwner()).getUUID(), warkingUser.getUUID());
+ new SchematicMember(schematic.getSchemName(), SteamwarUser.get(schematic.getSchemOwner()).getUUID(), warkingUser.getUUID());
player.sendMessage(SchematicSystem.PREFIX + "Der Spieler §e" + warkingUser.getUserName() + " §7hat nun Zugriff auf die Schematic §e" + schematic.getSchemName());
Player target = Bukkit.getPlayer(warkingUser.getUUID());
if(target != null)
- target.sendMessage(SchematicSystem.PREFIX + "Du hast nun Zugriff auf die Schematic §e" + schematic.getSchemName() + " §7von §e" + WarkingUser.get(schematic.getSchemOwner()).getUserName());
+ target.sendMessage(SchematicSystem.PREFIX + "Du hast nun Zugriff auf die Schematic §e" + schematic.getSchemName() + " §7von §e" + SteamwarUser.get(schematic.getSchemOwner()).getUserName());
}
private void delmember(Player player, String[] args){
@@ -394,7 +354,7 @@ public class SchematicCommand implements CommandExecutor {
if(schematic == null)
return;
- if(schematic.getSchemOwner() != WarkingUser.get(player.getUniqueId()).getId()) {
+ if(schematic.getSchemOwner() != SteamwarUser.get(player.getUniqueId()).getId()) {
player.sendMessage(SchematicSystem.PREFIX + "§cDu darfst nur von deinen eigenen Schematics Mitglieder entfernen");
return;
}
@@ -404,7 +364,7 @@ public class SchematicCommand implements CommandExecutor {
return;
}
- WarkingUser warkingUser = WarkingUser.get(args[2]);
+ SteamwarUser warkingUser = SteamwarUser.get(args[2]);
if(warkingUser.getUUID() == null){
player.sendMessage(SchematicSystem.PREFIX + "§cDieser Spieler existiert nicht");
return;
@@ -414,7 +374,7 @@ public class SchematicCommand implements CommandExecutor {
return;
}
- SchematicMember schematicMember = SchematicMember.getSchemMemberFromDB(schematic.getSchemName(), WarkingUser.get(schematic.getSchemOwner()).getUUID(), warkingUser.getUUID());
+ SchematicMember schematicMember = SchematicMember.getSchemMemberFromDB(schematic.getSchemName(), SteamwarUser.get(schematic.getSchemOwner()).getUUID(), warkingUser.getUUID());
if(schematicMember == null) {
player.sendMessage(SchematicSystem.PREFIX + "§cDieser Spieler ist nicht auf die Schematic hinzugefügt");
return;
@@ -425,7 +385,7 @@ 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 §e" + schematic.getSchemName() + "§7von §e" + WarkingUser.get(schematic.getSchemOwner()).getUserName());
+ target.sendMessage(SchematicSystem.PREFIX + "Du hast keinen Zugriff mehr auf die Schematic §e" + schematic.getSchemName() + "§7von §e" + SteamwarUser.get(schematic.getSchemOwner()).getUserName());
}
private void help(Player player) {
@@ -473,7 +433,7 @@ public class SchematicCommand implements CommandExecutor {
String schematicPlayer = "";
if(schematic.getSchemOwner() != schemOwner)
- schematicPlayer = " §8von §7" + WarkingUser.get(schematic.getSchemOwner()).getUserName();
+ schematicPlayer = " §8von §7" + SteamwarUser.get(schematic.getSchemOwner()).getUserName();
TextComponent schematics = new TextComponent("§e" + schematic.getSchemType().getKuerzel() + " §7" + schematic.getSchemName() + schematicPlayer);
schematics.setBold(true);
diff --git a/src/de/steamwar/schematicsystem/listener/PlayerCommandPreProcessListener.java b/SchematicSystem_Main/src/de/steamwar/schematicsystem/listener/PlayerCommandPreProcessListener.java
similarity index 100%
rename from src/de/steamwar/schematicsystem/listener/PlayerCommandPreProcessListener.java
rename to SchematicSystem_Main/src/de/steamwar/schematicsystem/listener/PlayerCommandPreProcessListener.java
diff --git a/src/de/steamwar/schematicsystem/listener/PlayerJoinListener.java b/SchematicSystem_Main/src/de/steamwar/schematicsystem/listener/PlayerJoinListener.java
similarity index 80%
rename from src/de/steamwar/schematicsystem/listener/PlayerJoinListener.java
rename to SchematicSystem_Main/src/de/steamwar/schematicsystem/listener/PlayerJoinListener.java
index c43718f..ea7c898 100644
--- a/src/de/steamwar/schematicsystem/listener/PlayerJoinListener.java
+++ b/SchematicSystem_Main/src/de/steamwar/schematicsystem/listener/PlayerJoinListener.java
@@ -1,11 +1,12 @@
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;
-import de.warking.hunjy.MySQL.Schematic;
-import de.warking.hunjy.MySQL.SchematicType;
-import de.warking.hunjy.MySQL.WarkingUser;
+import de.steamwar.sql.Schematic;
+import de.steamwar.sql.SchematicType;
+import de.steamwar.sql.SteamwarUser;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
@@ -13,6 +14,7 @@ import org.bukkit.event.player.PlayerJoinEvent;
import java.io.File;
import java.util.ArrayList;
+import java.util.LinkedList;
import java.util.List;
public class PlayerJoinListener implements Listener {
@@ -23,7 +25,7 @@ public class PlayerJoinListener implements Listener {
if(CheckSession.currentChecking()){
CheckSession current = CheckSession.getCheckSession();
- if(!CheckUtils.allowedToCheck(player) && !WarkingUser.get(current.getSchematic().getSchemOwner()).getUUID().equals(player.getUniqueId())){
+ 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("");
return;
@@ -35,7 +37,7 @@ public class PlayerJoinListener implements Listener {
if(CheckUtils.allowedToCheck(player))
player.sendMessage(CheckUtils.sendTeamMembersCSchematicsInfo());
- List uncheckedSchematics = new ArrayList<>();
+ List uncheckedSchematics = new LinkedList<>();
for(SchematicType type : SchematicType.values()){
if(type.check())
@@ -47,7 +49,7 @@ public class PlayerJoinListener implements Listener {
}
private void addNewSchems(Player player){
- File file = new File(SchematicSystem.SCHEM_DIR + player.getUniqueId());
+ File file = new File(Constants.SCHEM_DIR + player.getUniqueId());
File[] files = file.listFiles();
if(files != null && files.length > 0) {
@@ -55,7 +57,7 @@ public class PlayerJoinListener implements Listener {
List schematicNames = new ArrayList<>();
for(Schematic schematic : schematics) {
- if(schematic.getSchemOwner() == WarkingUser.get(player.getUniqueId()).getId()) {
+ if(schematic.getSchemOwner() == SteamwarUser.get(player.getUniqueId()).getId()) {
schematicNames.add(schematic.getSchemName());
}
}
diff --git a/src/de/steamwar/schematicsystem/listener/PlayerQuitListener.java b/SchematicSystem_Main/src/de/steamwar/schematicsystem/listener/PlayerQuitListener.java
similarity index 100%
rename from src/de/steamwar/schematicsystem/listener/PlayerQuitListener.java
rename to SchematicSystem_Main/src/de/steamwar/schematicsystem/listener/PlayerQuitListener.java
diff --git a/src/plugin.yml b/SchematicSystem_Main/src/plugin.yml
similarity index 76%
rename from src/plugin.yml
rename to SchematicSystem_Main/src/plugin.yml
index 442c679..ce8624a 100644
--- a/src/plugin.yml
+++ b/SchematicSystem_Main/src/plugin.yml
@@ -1,7 +1,7 @@
name: SchematicSystem
version: "1.0"
authors: [Yaruma3341, Lixfel]
-depend: [CoreSystem, WorldEdit, FastAsyncWorldEdit]
+depend: [SpigotCore, WorldEdit]
main: de.steamwar.schematicsystem.SchematicSystem
commands:
diff --git a/pom.xml b/pom.xml
index 1e73429..7f048a3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,11 +4,11 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
- de.warking
+ steamwar
SchematicSystem
1.0
- jar
https://maven.apache.org
+ pom
UTF-8
@@ -17,21 +17,11 @@
maven
- https://steamwar.de:81/maven/
+ https://steamwar.de/maven/
- src
-
-
- src
-
- **/*.java
- **/*.kt
-
-
-
org.apache.maven.plugins
@@ -45,29 +35,18 @@
+
+ SchematicSystem_12
+ SchematicSystem_14
+ SchematicSystem_API
+ SchematicSystem_Main
+
+
-
- steamwar
- Spigot
- 1.0
- provided
-
steamwar
SpigotCore
- 1.0
- provided
-
-
- steamwar
- WorldEdit
- 1.0
- provided
-
-
- steamwar
- FAWE
- 1.0
+ 2.0
provided
diff --git a/src/config.yml b/src/config.yml
deleted file mode 100644
index 3f24ed8..0000000
--- a/src/config.yml
+++ /dev/null
@@ -1,41 +0,0 @@
-Schematics:
- WarGear:
- Breite:
- Höhe:
- Tiefe:
- TNT:
- Schleim:
- TNTSchleim:
- Dispenser:
- ForbiddenIds:
- CheckList:
- MiniWarGear:
- Breite:
- Höhe:
- Tiefe:
- TNT:
- Schleim:
- TNTSchleim:
- Dispenser:
- ForbiddenIds:
- CheckList:
- WarShip:
- Breite:
- Höhe:
- Tiefe:
- TNT:
- Schleim:
- TNTSchleim:
- Dispenser:
- ForbiddenIds:
- CheckList:
- AirShip:
- Breite:
- Höhe:
- Tiefe:
- TNT:
- Schleim:
- TNTSchleim:
- Dispenser:
- ForbiddenIds:
- CheckList:
\ No newline at end of file
diff --git a/src/de/steamwar/schematicsystem/utils/CheckedSchematic.java b/src/de/steamwar/schematicsystem/utils/CheckedSchematic.java
deleted file mode 100644
index 0b5bfdf..0000000
--- a/src/de/steamwar/schematicsystem/utils/CheckedSchematic.java
+++ /dev/null
@@ -1,102 +0,0 @@
-package de.steamwar.schematicsystem.utils;
-
-import de.warking.hunjy.Core;
-import de.warking.hunjy.MySQL.MySQL;
-import de.warking.hunjy.MySQL.WarkingUser;
-import org.bukkit.Bukkit;
-
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.sql.Timestamp;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.UUID;
-import java.util.logging.Level;
-
-import static de.warking.hunjy.Core.sql;
-
-public class CheckedSchematic {
-
- private final String schemName;
- private final int schemOwner;
- private final int validator;
- private final Timestamp startTime;
- private final Timestamp endTime;
- private final String declineReason;
-
- private CheckedSchematic(String schemName, int schemOwner, int validator, Timestamp startTime, Timestamp endTime, String declineReason, boolean insertDB){
- this.schemName = MySQL.disarmString(schemName);
- this.schemOwner = schemOwner;
- this.validator = validator;
- this.startTime = startTime;
- this.endTime = endTime;
- this.declineReason = MySQL.disarmString(declineReason);
- if(insertDB)
- insertDB();
- }
-
- public CheckedSchematic(String schemName, int schemOwner, int validator, Timestamp startTime, Timestamp endTime, String declineReason){
- this(schemName, schemOwner, validator, startTime, endTime, declineReason, true);
- }
-
- public CheckedSchematic(String schemName, UUID schemOwner, UUID validator, Timestamp startTime, Timestamp endTime, String declineReason){
- this(schemName, WarkingUser.get(schemOwner).getId(), WarkingUser.get(validator).getId(), startTime, endTime, declineReason, true);
- }
-
- private void insertDB(){
- sql.update("INSERT INTO CheckedSchematic" +
- " (SchemName, SchemOwner, Validator, StartTime, EndTime, DeclineReason)" +
- " VALUES" +
- " ('"+ schemName + "', '" + schemOwner + "', '" + validator + "', '" + startTime.toString() + "', '" + endTime.toString() + "', '" + declineReason + "')");
- }
-
- public static List getLastDeclined(UUID schemOwner){
- return getLastDelined(WarkingUser.get(schemOwner).getId());
- }
-
- public static List getLastDelined(int schemOwner){
- List lastDeclined = new LinkedList<>();
- try{
- ResultSet lastRS = sql.select("SELECT * FROM CheckedSchematic WHERE SchemOwner = '" + schemOwner + "' AND DeclineReason != '' ORDER BY EndTime DESC");
- while(lastRS.next()){
- String schemName = lastRS.getString("SchemName");
- int validator = lastRS.getInt("Validator");
- Timestamp startTime = lastRS.getTimestamp("StartTime");
- Timestamp endTime = lastRS.getTimestamp("EndTime");
- String declineReason = lastRS.getString("DeclineReason");
- lastDeclined.add(new CheckedSchematic(schemName, schemOwner, validator, startTime, endTime, declineReason, false));
- }
- }catch(SQLException e){
- Bukkit.getLogger().log(Level.SEVERE, "getLastDeclined failed", e);
- }
- return lastDeclined;
- }
-
- public void remove() {
- Core.sql.update("DELETE FROM CheckedSchematic WHERE SchemOwner = " + this.schemOwner + " AND SchemName = '" + this.schemName + "'");
- }
-
- public String getSchemName() {
- return schemName;
- }
-
- public int getSchemOwner() {
- return schemOwner;
- }
-
- public int getValidator() {
- return validator;
- }
-
- public Timestamp getStartTime() {
- return startTime;
- }
-
- public Timestamp getEndTime() {
- return endTime;
- }
-
- public String getDeclineReason() {
- return declineReason;
- }
-}
diff --git a/src/de/steamwar/schematicsystem/utils/CommandRemover.java b/src/de/steamwar/schematicsystem/utils/CommandRemover.java
deleted file mode 100644
index d5fbf5c..0000000
--- a/src/de/steamwar/schematicsystem/utils/CommandRemover.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package de.steamwar.schematicsystem.utils;
-
-import org.bukkit.Bukkit;
-import org.bukkit.command.Command;
-import org.bukkit.command.SimpleCommandMap;
-
-import java.lang.reflect.Field;
-import java.util.Map;
-import java.util.logging.Level;
-
-public class CommandRemover {
- private CommandRemover(){}
-
- private static String packageName = Bukkit.getServer().getClass().getPackage().getName();
- private static String version = packageName.substring(packageName.lastIndexOf('.') + 1);
-
- public static void removeAll(String... cmds){
- for (String cmd : cmds) removeCommand(cmd);
- }
-
-
- private static void removeCommand(String command) {
- try {
- Class> serverClass = Class.forName("org.bukkit.craftbukkit." + version + ".CraftServer");
-
-
- Field f1 = serverClass.getDeclaredField("commandMap");
- f1.setAccessible(true);
- SimpleCommandMap commandMap = (SimpleCommandMap) f1.get(Bukkit.getServer());
-
- Field f2 = SimpleCommandMap.class.getDeclaredField("knownCommands");
- f2.setAccessible(true);
- Map knownCommands = (Map) f2.get(commandMap);
-
- knownCommands.remove(command.toLowerCase());
- } catch (Exception e) {
- Bukkit.getLogger().log(Level.SEVERE, "Could not remove command", e);
- }
- }
-
-
-
-}