mirror of
https://github.com/IntellectualSites/PlotSquared.git
synced 2024-11-26 23:26:45 +01:00
Fix incorrect schematic paste height, undo changes to HybridUtils
This commit is contained in:
parent
ff60ad1e24
commit
a12fe280db
@ -178,10 +178,9 @@ public class HybridPlotManager extends ClassicPlotManager {
|
|||||||
}
|
}
|
||||||
BaseBlock[] blocks = hybridPlotWorld.G_SCH.get(MathMan.pair(absX, absZ));
|
BaseBlock[] blocks = hybridPlotWorld.G_SCH.get(MathMan.pair(absX, absZ));
|
||||||
if (blocks != null) {
|
if (blocks != null) {
|
||||||
for (int yIndex = 0; yIndex < blocks.length; yIndex++) {
|
for (int y = 0; y < blocks.length; y++) {
|
||||||
int y = yIndex - hybridPlotWorld.getMinGenHeight();
|
if (blocks[y] != null) {
|
||||||
if (blocks[yIndex] != null) {
|
queue.setBlock(x, minY + y, z, blocks[y]);
|
||||||
queue.setBlock(x, minY + y, z, blocks[yIndex]);
|
|
||||||
} else {
|
} else {
|
||||||
// This is necessary, otherwise any blocks not specified in the schematic will remain after a clear
|
// This is necessary, otherwise any blocks not specified in the schematic will remain after a clear
|
||||||
queue.setBlock(x, minY + y, z, airBlock);
|
queue.setBlock(x, minY + y, z, airBlock);
|
||||||
|
@ -65,7 +65,6 @@ import com.sk89q.worldedit.world.block.BlockTypes;
|
|||||||
import org.apache.logging.log4j.LogManager;
|
import org.apache.logging.log4j.LogManager;
|
||||||
import org.apache.logging.log4j.Logger;
|
import org.apache.logging.log4j.Logger;
|
||||||
import org.checkerframework.checker.nullness.qual.NonNull;
|
import org.checkerframework.checker.nullness.qual.NonNull;
|
||||||
import org.checkerframework.checker.nullness.qual.Nullable;
|
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.ArrayDeque;
|
import java.util.ArrayDeque;
|
||||||
@ -444,9 +443,8 @@ public class HybridUtils {
|
|||||||
while (iter.hasNext()) {
|
while (iter.hasNext()) {
|
||||||
BlockVector2 chunk = iter.next();
|
BlockVector2 chunk = iter.next();
|
||||||
iter.remove();
|
iter.remove();
|
||||||
QueueCoordinator queue = blockQueue.getNewQueue(worldUtil.getWeWorld(area.getWorldName()));
|
boolean regenedRoad = regenerateRoad(area, chunk, extend);
|
||||||
boolean regenedRoad = regenerateRoad(area, chunk, extend, queue);
|
if (!regenedRoad) {
|
||||||
if (!regenedRoad || !queue.enqueue()) {
|
|
||||||
LOGGER.info("Failed to regenerate roads");
|
LOGGER.info("Failed to regenerate roads");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -482,12 +480,11 @@ public class HybridUtils {
|
|||||||
TaskManager.getPlatformImplementation().sync(() -> {
|
TaskManager.getPlatformImplementation().sync(() -> {
|
||||||
long start = System.currentTimeMillis();
|
long start = System.currentTimeMillis();
|
||||||
Iterator<BlockVector2> iterator = chunks.iterator();
|
Iterator<BlockVector2> iterator = chunks.iterator();
|
||||||
QueueCoordinator queue = blockQueue.getNewQueue(worldUtil.getWeWorld(area.getWorldName()));
|
|
||||||
while (System.currentTimeMillis() - start < 20 && !chunks.isEmpty()) {
|
while (System.currentTimeMillis() - start < 20 && !chunks.isEmpty()) {
|
||||||
final BlockVector2 chunk = iterator.next();
|
final BlockVector2 chunk = iterator.next();
|
||||||
iterator.remove();
|
iterator.remove();
|
||||||
boolean regenedRoads = regenerateRoad(area, chunk, extend, queue);
|
boolean regenedRoads = regenerateRoad(area, chunk, extend);
|
||||||
if (!regenedRoads || !queue.enqueue()) {
|
if (!regenedRoads) {
|
||||||
LOGGER.info("Failed to regenerate road");
|
LOGGER.info("Failed to regenerate road");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -575,35 +572,7 @@ public class HybridUtils {
|
|||||||
return ey;
|
return ey;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Regenerate the road in a chunk in a plot area.
|
|
||||||
*
|
|
||||||
* @param area Plot area to regenerate road for
|
|
||||||
* @param chunk Chunk location to regenerate
|
|
||||||
* @param extend How far to extend setting air above the road
|
|
||||||
* @return if successful
|
|
||||||
* @deprecated use {@link HybridUtils#regenerateRoad(PlotArea, BlockVector2, int, QueueCoordinator)}
|
|
||||||
*/
|
|
||||||
@Deprecated(forRemoval = true, since = "TODO")
|
|
||||||
public boolean regenerateRoad(final PlotArea area, final BlockVector2 chunk, int extend) {
|
public boolean regenerateRoad(final PlotArea area, final BlockVector2 chunk, int extend) {
|
||||||
return regenerateRoad(area, chunk, extend, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Regenerate the road in a chunk in a plot area.
|
|
||||||
*
|
|
||||||
* @param area Plot area to regenerate road for
|
|
||||||
* @param chunk Chunk location to regenerate
|
|
||||||
* @param extend How far to extend setting air above the road
|
|
||||||
* @param queueCoordinator {@link QueueCoordinator} to use to set the blocks. Null if one should be created and enqueued
|
|
||||||
* @return if successful
|
|
||||||
*/
|
|
||||||
public boolean regenerateRoad(
|
|
||||||
final PlotArea area,
|
|
||||||
final BlockVector2 chunk,
|
|
||||||
int extend,
|
|
||||||
@Nullable QueueCoordinator queueCoordinator
|
|
||||||
) {
|
|
||||||
int x = chunk.getX() << 4;
|
int x = chunk.getX() << 4;
|
||||||
int z = chunk.getZ() << 4;
|
int z = chunk.getZ() << 4;
|
||||||
int ex = x + 15;
|
int ex = x + 15;
|
||||||
@ -629,15 +598,7 @@ public class HybridUtils {
|
|||||||
z -= plotWorld.ROAD_OFFSET_Z;
|
z -= plotWorld.ROAD_OFFSET_Z;
|
||||||
final int finalX = x;
|
final int finalX = x;
|
||||||
final int finalZ = z;
|
final int finalZ = z;
|
||||||
final boolean enqueue;
|
QueueCoordinator queue = this.blockQueue.getNewQueue(worldUtil.getWeWorld(plotWorld.getWorldName()));
|
||||||
final QueueCoordinator queue;
|
|
||||||
if (queueCoordinator == null) {
|
|
||||||
queue = this.blockQueue.getNewQueue(worldUtil.getWeWorld(plotWorld.getWorldName()));
|
|
||||||
enqueue = true;
|
|
||||||
} else {
|
|
||||||
queue = queueCoordinator;
|
|
||||||
enqueue = false;
|
|
||||||
}
|
|
||||||
if (id1 == null || id2 == null || id1 != id2) {
|
if (id1 == null || id2 == null || id1 != id2) {
|
||||||
this.chunkManager.loadChunk(area.getWorldName(), chunk, false).thenRun(() -> {
|
this.chunkManager.loadChunk(area.getWorldName(), chunk, false).thenRun(() -> {
|
||||||
if (id1 != null) {
|
if (id1 != null) {
|
||||||
@ -721,9 +682,7 @@ public class HybridUtils {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (enqueue) {
|
|
||||||
queue.enqueue();
|
queue.enqueue();
|
||||||
}
|
|
||||||
});
|
});
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user