From 86c57225f79408e5fdc968d5d40fbfc5177ecf74 Mon Sep 17 00:00:00 2001 From: Lixfel Date: Mon, 9 Dec 2019 14:32:03 +0100 Subject: [PATCH] Hotfixing schematic pasting --- .../fightsystem/fight/FightTeam_8.java | 19 +++++++++++-------- .../src/de/steamwar/fightsystem/Config.java | 2 -- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/FightSystem_8/src/de/steamwar/fightsystem/fight/FightTeam_8.java b/FightSystem_8/src/de/steamwar/fightsystem/fight/FightTeam_8.java index bf4705a..f42711e 100644 --- a/FightSystem_8/src/de/steamwar/fightsystem/fight/FightTeam_8.java +++ b/FightSystem_8/src/de/steamwar/fightsystem/fight/FightTeam_8.java @@ -1,9 +1,13 @@ package de.steamwar.fightsystem.fight; -import com.sk89q.worldedit.*; +import com.sk89q.worldedit.EditSession; +import com.sk89q.worldedit.MaxChangedBlocksException; +import com.sk89q.worldedit.Vector; +import com.sk89q.worldedit.WorldEdit; import com.sk89q.worldedit.blocks.BaseBlock; import com.sk89q.worldedit.bukkit.BukkitWorld; import com.sk89q.worldedit.extent.clipboard.Clipboard; +import com.sk89q.worldedit.function.operation.Operations; import com.sk89q.worldedit.math.transform.AffineTransform; import com.sk89q.worldedit.regions.CuboidRegion; import com.sk89q.worldedit.session.ClipboardHolder; @@ -67,19 +71,18 @@ class FightTeam_8 { } static EditSession pasteSchematic(Schematic schematic, int pasteX, int pasteY, int pasteZ, boolean rotate) throws Schematic.WrongVersionException, IOException, NoClipboardException { - Vector paste = new Vector(pasteX, pasteY, pasteZ); Clipboard clipboard = schematic.load(); World w = new BukkitWorld(Bukkit.getWorlds().get(0)); Vector dimensions = clipboard.getDimensions(); - Vector v; - Vector offset = new Vector(clipboard.getOrigin()); + Vector v = new Vector(pasteX, pasteY, pasteZ); + Vector offset = clipboard.getMinimumPoint().subtract(clipboard.getOrigin()); AffineTransform aT = new AffineTransform(); if(rotate){ - aT.rotateY(180); - v = paste.add(dimensions.getX()/2 + dimensions.getX()%2, 0, dimensions.getZ()/2 + dimensions.getZ()%2).subtract(offset.multiply(-1, 1, -1)).subtract(1, 0, 1); + aT = aT.rotateY(180); + v = v.add(dimensions.getX()/2 + dimensions.getX()%2, 0, dimensions.getZ()/2 + dimensions.getZ()%2).subtract(offset.multiply(-1, 1, -1)).subtract(1, 0, 1); }else{ - v = paste.subtract(dimensions.getX()/2 - dimensions.getX()%2, 0, dimensions.getZ()/2 - dimensions.getZ()%2).subtract(offset); + v = v.subtract(dimensions.getX()/2 - dimensions.getX()%2, 0, dimensions.getZ()/2 - dimensions.getZ()%2).subtract(offset); } if(Config.AlignWater){ @@ -97,7 +100,7 @@ class FightTeam_8 { Bukkit.getPluginManager().registerEvents(freezer, IFightSystem.getPlugin()); ClipboardHolder ch = new ClipboardHolder(clipboard, w.getWorldData()); ch.setTransform(aT); - ch.createPaste(e, w.getWorldData()).to(v).build(); + Operations.completeBlindly(ch.createPaste(e, w.getWorldData()).to(v).build()); e.flushQueue(); HandlerList.unregisterAll(freezer); return e; diff --git a/FightSystem_API/src/de/steamwar/fightsystem/Config.java b/FightSystem_API/src/de/steamwar/fightsystem/Config.java index ee08967..5948434 100644 --- a/FightSystem_API/src/de/steamwar/fightsystem/Config.java +++ b/FightSystem_API/src/de/steamwar/fightsystem/Config.java @@ -59,7 +59,6 @@ public class Config { //schematic parameter public static final boolean OnlyPublicSchematics; - public static final String SchematicDirectory; public static final de.steamwar.sql.SchematicType SchematicType; public static final boolean TeamRedRotate; public static final boolean TeamBlueRotate; @@ -140,7 +139,6 @@ public class Config { AlignWater = worldconfig.getBoolean("Arena.AlignWater"); WaterDepth = worldconfig.getInt("Arena.WaterDepth"); - SchematicDirectory = config.getString("Schematic.Directory"); SchematicType = de.steamwar.sql.SchematicType.fromDB(config.getString("Schematic.SchematicType")); boolean rotate = config.getBoolean("Schematic.Rotate");