diff --git a/FightSystem_14/src/de/steamwar/fightsystem/utils/WorldeditWrapper14.java b/FightSystem_14/src/de/steamwar/fightsystem/utils/WorldeditWrapper14.java index 8f1c317..bb5b450 100644 --- a/FightSystem_14/src/de/steamwar/fightsystem/utils/WorldeditWrapper14.java +++ b/FightSystem_14/src/de/steamwar/fightsystem/utils/WorldeditWrapper14.java @@ -109,6 +109,12 @@ public class WorldeditWrapper14 implements WorldeditWrapper.IWorldeditWrapper { e.flushSession(); } + @Override + public Vector getDimensions(Clipboard clipboard) { + BlockVector3 dims = clipboard.getDimensions(); + return new Vector(dims.getX(), dims.getY(), dims.getZ()); + } + @Override public Clipboard loadChar(String charName) throws IOException { return new SpongeSchematicReader(new NBTInputStream(new GZIPInputStream(new FileInputStream(new File(FightSystem.getPlugin().getDataFolder(), "text/" + charName + ".schem"))))).read(); diff --git a/FightSystem_8/src/de/steamwar/fightsystem/utils/WorldeditWrapper8.java b/FightSystem_8/src/de/steamwar/fightsystem/utils/WorldeditWrapper8.java index ad3ea1e..0969655 100644 --- a/FightSystem_8/src/de/steamwar/fightsystem/utils/WorldeditWrapper8.java +++ b/FightSystem_8/src/de/steamwar/fightsystem/utils/WorldeditWrapper8.java @@ -109,6 +109,12 @@ public class WorldeditWrapper8 implements WorldeditWrapper.IWorldeditWrapper { e.flushQueue(); } + @Override + public org.bukkit.util.Vector getDimensions(Clipboard clipboard) { + Vector dims = clipboard.getDimensions(); + return new org.bukkit.util.Vector(dims.getBlockX(), dims.getBlockY(), dims.getBlockZ()); + } + @Override public Clipboard loadChar(String charName) throws IOException { return new SchematicReader(new NBTInputStream(new GZIPInputStream(new FileInputStream(new File(FightSystem.getPlugin().getDataFolder(), "text/" + charName + ".schematic"))))).read(new BukkitWorld(Bukkit.getWorlds().get(0)).getWorldData()); diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/fight/FightSchematic.java b/FightSystem_Core/src/de/steamwar/fightsystem/fight/FightSchematic.java index 64cdf2e..c7f465c 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/fight/FightSchematic.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/fight/FightSchematic.java @@ -114,30 +114,30 @@ public class FightSchematic extends StateDependent { Bukkit.getScheduler().runTask(FightSystem.getPlugin(), this::paste); } - private void replaceTeamColor(Clipboard clipboard) throws WorldEditException { - WorldeditWrapper.impl.replaceTeamColor(clipboard, ArenaMode.AntiPrepare.contains(Config.mode) ? ColorConverter.chat2dye(team.getColor()) : DyeColor.PINK); + private void replaceTeamColor(Clipboard clipboard) { + try { + WorldeditWrapper.impl.replaceTeamColor(clipboard, ArenaMode.AntiPrepare.contains(Config.mode) ? ColorConverter.chat2dye(team.getColor()) : DyeColor.PINK); + } catch (WorldEditException e) { + Bukkit.getLogger().log(Level.SEVERE, "Could not recolor schematic", e); + } } private void paste(){ FreezeWorld freezer = new FreezeWorld(); - try { - replaceTeamColor(clipboard); - WorldeditWrapper.impl.pasteClipboard( - clipboard, - new Location(Bukkit.getWorlds().get(0), region.centerX(), region.getMinY(), region.centerZ()), - new Vector( - -clipboard.getDimensions().getBlockX()/2, - Config.WaterDepth != 0 ? Config.WaterDepth - WorldeditWrapper.impl.getWaterDepth(clipboard) : 0, - -clipboard.getDimensions().getBlockZ()/2 - ), - new AffineTransform().rotateY(rotate ? 180 : 0) - ); - } catch (WorldEditException e) { - FightSystem.broadcast("§cFehler beim Pasten der Schematic"); - Bukkit.getScheduler().runTask(FightSystem.getPlugin(), FightSystem::setPreSchemState); - throw new SecurityException("Could not paste schematic", e); - } + replaceTeamColor(clipboard); + + Vector dims = WorldeditWrapper.impl.getDimensions(clipboard); + WorldeditWrapper.impl.pasteClipboard( + clipboard, + new Location(Bukkit.getWorlds().get(0), region.centerX(), region.getMinY(), region.centerZ()), + new Vector( + -dims.getBlockX()/2, + Config.WaterDepth != 0 ? Config.WaterDepth - WorldeditWrapper.impl.getWaterDepth(clipboard) : 0, + -dims.getBlockZ()/2 + ), + new AffineTransform().rotateY(rotate ? 180 : 0) + ); Bukkit.getScheduler().runTaskLater(FightSystem.getPlugin(), freezer::disable, 3); Bukkit.getScheduler().runTaskLater(FightSystem.getPlugin(), team::teleportToSpawn, 40); @@ -179,15 +179,11 @@ public class FightSchematic extends StateDependent { } } - try { - replaceTeamColor(character); - } catch (WorldEditException e) { - Bukkit.getLogger().log(Level.SEVERE, "Could not recolor team text", e); - } + replaceTeamColor(character); characters[i] = character; offsets[i] = length; - length += character.getDimensions().getBlockX() + 1; // 1 is the distance between characters + length += WorldeditWrapper.impl.getDimensions(character).getBlockX() + 1; // 1 is the distance between characters } length -= 1; diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/utils/WorldeditWrapper.java b/FightSystem_Core/src/de/steamwar/fightsystem/utils/WorldeditWrapper.java index 0edf2e9..d96df0a 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/utils/WorldeditWrapper.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/utils/WorldeditWrapper.java @@ -39,6 +39,7 @@ public class WorldeditWrapper { void replaceTeamColor(Clipboard clipboard, DyeColor c) throws WorldEditException; int getWaterDepth(Clipboard clipboard); void pasteClipboard(Clipboard clipboard, Location position, Vector offset, AffineTransform aT); + Vector getDimensions(Clipboard clipboard); Clipboard loadChar(String charName) throws IOException; void saveSchem(Schematic schem, Region region, int minY) throws WorldEditException; }