فهرست منبع

Use explicit edit session

Lilly 11 ماه پیش
والد
کامیت
202d731de7
1فایلهای تغییر یافته به همراه17 افزوده شده و 11 حذف شده
  1. 17 11
      1_16_FAWE/src/main/java/de/butzlabben/missilewars/missile/paste/r1_16/fawe/R1_16Paster.java

+ 17 - 11
1_16_FAWE/src/main/java/de/butzlabben/missilewars/missile/paste/r1_16/fawe/R1_16Paster.java

@@ -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);