|
@@ -18,7 +18,6 @@
|
|
|
|
|
|
package de.butzlabben.missilewars.missile.paste.r1_16.fawe;
|
|
|
|
|
|
-import com.sk89q.worldedit.EditSession;
|
|
|
import com.sk89q.worldedit.WorldEdit;
|
|
|
import com.sk89q.worldedit.bukkit.BukkitAdapter;
|
|
|
import com.sk89q.worldedit.bukkit.BukkitWorld;
|
|
@@ -31,13 +30,15 @@ import com.sk89q.worldedit.math.transform.AffineTransform;
|
|
|
import com.sk89q.worldedit.regions.CuboidRegion;
|
|
|
import com.sk89q.worldedit.session.ClipboardHolder;
|
|
|
import com.sk89q.worldedit.world.World;
|
|
|
-import java.io.File;
|
|
|
-import java.util.Set;
|
|
|
import org.bukkit.Material;
|
|
|
import org.bukkit.plugin.java.JavaPlugin;
|
|
|
import org.bukkit.scheduler.BukkitRunnable;
|
|
|
import org.bukkit.util.Vector;
|
|
|
|
|
|
+import java.io.File;
|
|
|
+import java.util.Set;
|
|
|
+import java.util.logging.Level;
|
|
|
+
|
|
|
/**
|
|
|
* @author Daniel Nägele
|
|
|
*/
|
|
@@ -47,11 +48,12 @@ public class R1_16Paster {
|
|
|
Material glassBlockReplace, int radius, Material replaceType, JavaPlugin plugin, int replaceTicks) {
|
|
|
World weWorld = new BukkitWorld(world);
|
|
|
|
|
|
- try (Clipboard clipboard = ClipboardFormats.findByFile(schematic).load(schematic)) {
|
|
|
+ try (Clipboard clipboard = ClipboardFormats.findByFile(schematic).load(schematic);
|
|
|
+ var session = WorldEdit.getInstance().newEditSession(weWorld)) {
|
|
|
ClipboardHolder clipboardHolder = new ClipboardHolder(clipboard);
|
|
|
clipboardHolder.setTransform(new AffineTransform().rotateY(rotation));
|
|
|
Operation pasteBuilder = clipboardHolder
|
|
|
- .createPaste(weWorld)
|
|
|
+ .createPaste(session)
|
|
|
.to(fromBukkitVector(pos))
|
|
|
.ignoreAirBlocks(true)
|
|
|
.build();
|
|
@@ -63,14 +65,16 @@ public class R1_16Paster {
|
|
|
public void run() {
|
|
|
Vector min = pos.subtract(new Vector(radius, radius, radius));
|
|
|
Vector max = pos.add(new Vector(radius, radius, radius));
|
|
|
- weWorld.replaceBlocks(new CuboidRegion(fromBukkitVector(min), fromBukkitVector(max)),
|
|
|
- Set.of(BukkitAdapter.adapt(replaceType.createBlockData()).toBaseBlock()),
|
|
|
- BukkitAdapter.adapt(Material.AIR.createBlockData()));
|
|
|
+ try (var session = WorldEdit.getInstance().newEditSession(weWorld)) {
|
|
|
+ session.replaceBlocks(new CuboidRegion(fromBukkitVector(min), fromBukkitVector(max)),
|
|
|
+ Set.of(BukkitAdapter.adapt(replaceType.createBlockData()).toBaseBlock()),
|
|
|
+ BukkitAdapter.adapt(Material.AIR.createBlockData()));
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
}.runTaskLater(plugin, replaceTicks);
|
|
|
-
|
|
|
} catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
+ plugin.getLogger().log(Level.SEVERE, "Could not paste schematic", e);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -79,7 +83,9 @@ public class R1_16Paster {
|
|
|
|
|
|
try (var clipboard = ClipboardFormats.findByFile(schematic).load(schematic);
|
|
|
var session = WorldEdit.getInstance().newEditSession(weWorld)) {
|
|
|
- Operation paste = new ClipboardHolder(clipboard).createPaste(session).to(fromBukkitVector(pos))
|
|
|
+ Operation paste = new ClipboardHolder(clipboard)
|
|
|
+ .createPaste(session)
|
|
|
+ .to(fromBukkitVector(pos))
|
|
|
.ignoreAirBlocks(true)
|
|
|
.build();
|
|
|
Operations.completeBlindly(paste);
|