diff --git a/.gitignore b/.gitignore index b496ca8c..225e40f1 100644 --- a/.gitignore +++ b/.gitignore @@ -10,4 +10,5 @@ /target/ /.gradle /.idea -/forge/build \ No newline at end of file +/forge/build +forge/.gradle/gradle.log \ No newline at end of file diff --git a/bukkit/src/main/java/com/boydti/fawe/bukkit/v0/BukkitQueue_0.java b/bukkit/src/main/java/com/boydti/fawe/bukkit/v0/BukkitQueue_0.java index 1466f35e..376deb0e 100644 --- a/bukkit/src/main/java/com/boydti/fawe/bukkit/v0/BukkitQueue_0.java +++ b/bukkit/src/main/java/com/boydti/fawe/bukkit/v0/BukkitQueue_0.java @@ -123,11 +123,17 @@ public abstract class BukkitQueue_0 extends FaweQueue implements Listener { @Override public void addTask(String world, int x, int y, int z, Runnable runnable) { - // TODO Auto-generated method stub final ChunkLoc wrap = new ChunkLoc(world, x >> 4, z >> 4); FaweChunk result = this.blocks.get(wrap); if (result == null) { - throw new IllegalArgumentException("Task must be accompanied by a block change or manually adding to queue!"); + result = this.getChunk(wrap); + result.addTask(runnable); + final FaweChunk previous = this.blocks.put(wrap, result); + if (previous == null) { + return; + } + this.blocks.put(wrap, previous); + result = previous; } result.addTask(runnable); } diff --git a/core/src/main/java/com/boydti/fawe/object/extent/FastWorldEditExtent.java b/core/src/main/java/com/boydti/fawe/object/extent/FastWorldEditExtent.java index 2f09c37b..a39711e3 100644 --- a/core/src/main/java/com/boydti/fawe/object/extent/FastWorldEditExtent.java +++ b/core/src/main/java/com/boydti/fawe/object/extent/FastWorldEditExtent.java @@ -1,10 +1,7 @@ package com.boydti.fawe.object.extent; -import java.util.List; - import com.boydti.fawe.util.SetQueue; import com.boydti.fawe.util.TaskManager; -import com.sk89q.jnbt.CompoundTag; import com.sk89q.worldedit.BlockVector; import com.sk89q.worldedit.EditSession; import com.sk89q.worldedit.Vector; @@ -18,6 +15,7 @@ import com.sk89q.worldedit.regions.Region; import com.sk89q.worldedit.util.Location; import com.sk89q.worldedit.world.World; import com.sk89q.worldedit.world.biome.BaseBiome; +import java.util.List; public class FastWorldEditExtent extends AbstractDelegateExtent { @@ -141,9 +139,7 @@ public class FastWorldEditExtent extends AbstractDelegateExtent { case 33: case 151: case 178: { - SetQueue.IMP.setBlock(this.world, x, y, z, id, (byte) block.getData()); if (block.hasNbtData()) { - final CompoundTag nbt = block.getNbtData(); SetQueue.IMP.addTask(this.world, x, y, z, new Runnable() { @Override public void run() { diff --git a/core/src/main/java/com/boydti/fawe/object/extent/ProcessedWEExtent.java b/core/src/main/java/com/boydti/fawe/object/extent/ProcessedWEExtent.java index f5764642..73c20e8e 100644 --- a/core/src/main/java/com/boydti/fawe/object/extent/ProcessedWEExtent.java +++ b/core/src/main/java/com/boydti/fawe/object/extent/ProcessedWEExtent.java @@ -188,7 +188,6 @@ public class ProcessedWEExtent extends AbstractDelegateExtent { } return false; } - SetQueue.IMP.setBlock(this.world, x, location.getBlockY(), z, id, (byte) block.getData()); if (block.hasNbtData()) { SetQueue.IMP.addTask(this.world, x, location.getBlockY(), z, new Runnable() { @Override diff --git a/forge/src/main/java/com/boydti/fawe/forge/v0/SpongeQueue_0.java b/forge/src/main/java/com/boydti/fawe/forge/v0/SpongeQueue_0.java index d832bde6..31cf4114 100644 --- a/forge/src/main/java/com/boydti/fawe/forge/v0/SpongeQueue_0.java +++ b/forge/src/main/java/com/boydti/fawe/forge/v0/SpongeQueue_0.java @@ -33,11 +33,17 @@ public abstract class SpongeQueue_0 extends FaweQueue { @Override public void addTask(String world, int x, int y, int z, Runnable runnable) { - // TODO Auto-generated method stub final ChunkLoc wrap = new ChunkLoc(world, x >> 4, z >> 4); FaweChunk result = this.blocks.get(wrap); if (result == null) { - throw new IllegalArgumentException("Task must be accompanied by a block change or manually adding to queue!"); + result = this.getChunk(wrap); + result.addTask(runnable); + final FaweChunk previous = this.blocks.put(wrap, result); + if (previous == null) { + return; + } + this.blocks.put(wrap, previous); + result = previous; } result.addTask(runnable); } diff --git a/forge/src/main/java/com/boydti/fawe/forge/v1_8/SpongeQueue_1_8.java b/forge/src/main/java/com/boydti/fawe/forge/v1_8/SpongeQueue_1_8.java index ef5b36f4..c6b85d73 100644 --- a/forge/src/main/java/com/boydti/fawe/forge/v1_8/SpongeQueue_1_8.java +++ b/forge/src/main/java/com/boydti/fawe/forge/v1_8/SpongeQueue_1_8.java @@ -81,7 +81,6 @@ public class SpongeQueue_1_8 extends SpongeQueue_0 { Chunk spongeChunk = fc.getChunk(); net.minecraft.world.World nmsWorld = (net.minecraft.world.World) spongeChunk.getWorld(); ChunkLoc wrapper = fc.getChunkLoc(); - spongeChunk.loadChunk(true); try { boolean flag = !nmsWorld.provider.getHasNoSky(); // Sections @@ -151,7 +150,7 @@ public class SpongeQueue_1_8 extends SpongeQueue_0 { fs.setCount(j, Short.MAX_VALUE); } } - // Clear +// // Clear } catch (Throwable e) { e.printStackTrace(); }