mirror of
https://github.com/IntellectualSites/PlotSquared.git
synced 2024-11-22 13:16:45 +01:00
Fix augmented generation
This commit is contained in:
parent
1522632f5a
commit
ef04ed9151
@ -518,7 +518,7 @@ public class BukkitUtil extends WorldUtil {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static void ensureLoaded(final String world, final int x, final int z, final Consumer<Chunk> chunkConsumer) {
|
private static void ensureLoaded(final String world, final int x, final int z, final Consumer<Chunk> chunkConsumer) {
|
||||||
PaperLib.getChunkAtAsync(getWorld(world), x << 4, z << 4, true).thenAccept(chunk ->
|
PaperLib.getChunkAtAsync(getWorld(world), x >> 4, z >> 4, true).thenAccept(chunk ->
|
||||||
ensureMainThread(chunkConsumer, chunk));
|
ensureMainThread(chunkConsumer, chunk));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -142,13 +142,17 @@ public class BukkitLocalQueue extends BasicLocalBlockQueue {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private Chunk getChunk(final World world, final LocalChunk localChunk) {
|
private Chunk getChunk(final World world, final LocalChunk localChunk) {
|
||||||
|
Chunk chunk = null;
|
||||||
if (this.getChunkObject() != null && this.getChunkObject() instanceof Chunk) {
|
if (this.getChunkObject() != null && this.getChunkObject() instanceof Chunk) {
|
||||||
final Chunk chunk = (Chunk) this.getChunkObject();
|
chunk = (Chunk) this.getChunkObject();
|
||||||
if (chunk.getWorld().equals(world) && chunk.getX() == localChunk.getX() && chunk.getZ() == localChunk.getZ()) {
|
|
||||||
return chunk;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return world.getChunkAt(localChunk.getX(), localChunk.getZ());
|
if (chunk == null) {
|
||||||
|
chunk = world.getChunkAt(localChunk.getX(), localChunk.getZ());
|
||||||
|
}
|
||||||
|
if (!chunk.isLoaded()) {
|
||||||
|
chunk.load(true);
|
||||||
|
}
|
||||||
|
return chunk;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setMaterial(@NonNull final BlockState plotBlock, @NonNull final Block block) {
|
private void setMaterial(@NonNull final BlockState plotBlock, @NonNull final Block block) {
|
||||||
|
@ -11,8 +11,11 @@ import com.github.intellectualsites.plotsquared.plot.util.block.GlobalBlockQueue
|
|||||||
import com.github.intellectualsites.plotsquared.plot.util.block.LocalBlockQueue;
|
import com.github.intellectualsites.plotsquared.plot.util.block.LocalBlockQueue;
|
||||||
import com.github.intellectualsites.plotsquared.plot.util.block.ScopedLocalBlockQueue;
|
import com.github.intellectualsites.plotsquared.plot.util.block.ScopedLocalBlockQueue;
|
||||||
import com.github.intellectualsites.plotsquared.plot.util.world.RegionUtil;
|
import com.github.intellectualsites.plotsquared.plot.util.world.RegionUtil;
|
||||||
|
import com.sk89q.worldedit.function.pattern.Pattern;
|
||||||
|
import com.sk89q.worldedit.math.BlockVector3;
|
||||||
import com.sk89q.worldedit.regions.CuboidRegion;
|
import com.sk89q.worldedit.regions.CuboidRegion;
|
||||||
import com.sk89q.worldedit.world.biome.BiomeType;
|
import com.sk89q.worldedit.world.biome.BiomeType;
|
||||||
|
import com.sk89q.worldedit.world.block.BaseBlock;
|
||||||
import com.sk89q.worldedit.world.block.BlockState;
|
import com.sk89q.worldedit.world.block.BlockState;
|
||||||
import com.sk89q.worldedit.world.block.BlockTypes;
|
import com.sk89q.worldedit.world.block.BlockTypes;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
@ -121,6 +124,24 @@ public class AugmentedUtils {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override public boolean setBlock(int x, int y, int z, BaseBlock id) {
|
||||||
|
try {
|
||||||
|
if (canPlace[x - blockX][z - blockZ]) {
|
||||||
|
return super.setBlock(x, y, z, id);
|
||||||
|
}
|
||||||
|
} catch (final Exception e) {
|
||||||
|
PlotSquared.debug(String.format("Failed to set block at: %d;%d;%d (to = %s) with offset %d;%d."
|
||||||
|
+ " Translated to: %d;%d", x, y, z, id, blockX, blockZ, x - blockX, z - blockZ));
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override public boolean setBlock(int x, int y, int z, Pattern pattern) {
|
||||||
|
final BlockVector3 blockVector3 = BlockVector3.at(x + blockX, y, z + blockZ);
|
||||||
|
return this.setBlock(x, y, z, pattern.apply(blockVector3));
|
||||||
|
}
|
||||||
|
|
||||||
@Override public boolean setBiome(int x, int y, BiomeType biome) {
|
@Override public boolean setBiome(int x, int y, BiomeType biome) {
|
||||||
return super.setBiome(x, y, biome);
|
return super.setBiome(x, y, biome);
|
||||||
}
|
}
|
||||||
@ -141,9 +162,8 @@ public class AugmentedUtils {
|
|||||||
secondaryMask.setChunkObject(chunkObject);
|
secondaryMask.setChunkObject(chunkObject);
|
||||||
secondaryMask.setForceSync(true);
|
secondaryMask.setForceSync(true);
|
||||||
|
|
||||||
ScopedLocalBlockQueue scoped = new ScopedLocalBlockQueue(secondaryMask,
|
ScopedLocalBlockQueue scoped = new ScopedLocalBlockQueue(secondaryMask, new Location(world, blockX, 0, blockZ),
|
||||||
new Location(area.getWorldName(), blockX, 0, blockZ),
|
new Location(world, blockX + 15, 255, blockZ + 15));
|
||||||
new Location(area.getWorldName(), blockX + 15, 255, blockZ + 15));
|
|
||||||
generator.generateChunk(scoped, area);
|
generator.generateChunk(scoped, area);
|
||||||
generator.populateChunk(scoped, area);
|
generator.populateChunk(scoped, area);
|
||||||
}
|
}
|
||||||
|
@ -12,6 +12,11 @@ public class DelegateLocalBlockQueue extends LocalBlockQueue {
|
|||||||
public DelegateLocalBlockQueue(LocalBlockQueue parent) {
|
public DelegateLocalBlockQueue(LocalBlockQueue parent) {
|
||||||
super(parent == null ? null : parent.getWorld());
|
super(parent == null ? null : parent.getWorld());
|
||||||
this.parent = parent;
|
this.parent = parent;
|
||||||
|
|
||||||
|
if (parent != null) {
|
||||||
|
this.setForceSync(parent.isForceSync());
|
||||||
|
this.setChunkObject(parent.getChunkObject());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public LocalBlockQueue getParent() {
|
public LocalBlockQueue getParent() {
|
||||||
|
@ -6,6 +6,7 @@ import com.github.intellectualsites.plotsquared.plot.object.Plot;
|
|||||||
import com.github.intellectualsites.plotsquared.plot.object.PlotArea;
|
import com.github.intellectualsites.plotsquared.plot.object.PlotArea;
|
||||||
import com.github.intellectualsites.plotsquared.plot.object.PlotManager;
|
import com.github.intellectualsites.plotsquared.plot.object.PlotManager;
|
||||||
import com.github.intellectualsites.plotsquared.plot.object.RunnableVal3;
|
import com.github.intellectualsites.plotsquared.plot.object.RunnableVal3;
|
||||||
|
import com.sk89q.worldedit.function.pattern.Pattern;
|
||||||
import com.sk89q.worldedit.world.biome.BiomeType;
|
import com.sk89q.worldedit.world.biome.BiomeType;
|
||||||
import com.sk89q.worldedit.world.block.BaseBlock;
|
import com.sk89q.worldedit.world.block.BaseBlock;
|
||||||
import com.sk89q.worldedit.world.block.BlockState;
|
import com.sk89q.worldedit.world.block.BlockState;
|
||||||
@ -36,8 +37,10 @@ public class ScopedLocalBlockQueue extends DelegateLocalBlockQueue {
|
|||||||
this.dx = maxX - minX;
|
this.dx = maxX - minX;
|
||||||
this.dy = maxY - minY;
|
this.dy = maxY - minY;
|
||||||
this.dz = maxZ - minZ;
|
this.dz = maxZ - minZ;
|
||||||
}
|
|
||||||
|
|
||||||
|
this.setForceSync(parent.isForceSync());
|
||||||
|
this.setChunkObject(parent.getChunkObject());
|
||||||
|
}
|
||||||
|
|
||||||
@Override public boolean setBiome(int x, int z, BiomeType biome) {
|
@Override public boolean setBiome(int x, int z, BiomeType biome) {
|
||||||
return x >= 0 && x <= dx && z >= 0 && z <= dz && super.setBiome(x + minX, z + minZ, biome);
|
return x >= 0 && x <= dx && z >= 0 && z <= dz && super.setBiome(x + minX, z + minZ, biome);
|
||||||
@ -61,6 +64,11 @@ public class ScopedLocalBlockQueue extends DelegateLocalBlockQueue {
|
|||||||
.setBlock(x + minX, y + minY, z + minZ, id);
|
.setBlock(x + minX, y + minY, z + minZ, id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override public boolean setBlock(int x, int y, int z, Pattern pattern) {
|
||||||
|
return x >= 0 && x <= dx && y >= 0 && y <= dy && z >= 0 && z <= dz && super
|
||||||
|
.setBlock(x + minX, y + minY, z + minZ, pattern);
|
||||||
|
}
|
||||||
|
|
||||||
public Location getMin() {
|
public Location getMin() {
|
||||||
return new Location(getWorld(), minX, minY, minZ);
|
return new Location(getWorld(), minX, minY, minZ);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user