Fix incorrect schematic paste height, undo changes to HybridUtils

This commit is contained in:
dordsor21 2022-01-26 17:59:44 +00:00 committed by Jordan
parent ff60ad1e24
commit a12fe280db
2 changed files with 9 additions and 51 deletions

View File

@ -178,10 +178,9 @@ public class HybridPlotManager extends ClassicPlotManager {
}
BaseBlock[] blocks = hybridPlotWorld.G_SCH.get(MathMan.pair(absX, absZ));
if (blocks != null) {
for (int yIndex = 0; yIndex < blocks.length; yIndex++) {
int y = yIndex - hybridPlotWorld.getMinGenHeight();
if (blocks[yIndex] != null) {
queue.setBlock(x, minY + y, z, blocks[yIndex]);
for (int y = 0; y < blocks.length; y++) {
if (blocks[y] != null) {
queue.setBlock(x, minY + y, z, blocks[y]);
} else {
// This is necessary, otherwise any blocks not specified in the schematic will remain after a clear
queue.setBlock(x, minY + y, z, airBlock);

View File

@ -65,7 +65,6 @@ import com.sk89q.worldedit.world.block.BlockTypes;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.checkerframework.checker.nullness.qual.NonNull;
import org.checkerframework.checker.nullness.qual.Nullable;
import java.io.File;
import java.util.ArrayDeque;
@ -444,9 +443,8 @@ public class HybridUtils {
while (iter.hasNext()) {
BlockVector2 chunk = iter.next();
iter.remove();
QueueCoordinator queue = blockQueue.getNewQueue(worldUtil.getWeWorld(area.getWorldName()));
boolean regenedRoad = regenerateRoad(area, chunk, extend, queue);
if (!regenedRoad || !queue.enqueue()) {
boolean regenedRoad = regenerateRoad(area, chunk, extend);
if (!regenedRoad) {
LOGGER.info("Failed to regenerate roads");
}
}
@ -482,12 +480,11 @@ public class HybridUtils {
TaskManager.getPlatformImplementation().sync(() -> {
long start = System.currentTimeMillis();
Iterator<BlockVector2> iterator = chunks.iterator();
QueueCoordinator queue = blockQueue.getNewQueue(worldUtil.getWeWorld(area.getWorldName()));
while (System.currentTimeMillis() - start < 20 && !chunks.isEmpty()) {
final BlockVector2 chunk = iterator.next();
iterator.remove();
boolean regenedRoads = regenerateRoad(area, chunk, extend, queue);
if (!regenedRoads || !queue.enqueue()) {
boolean regenedRoads = regenerateRoad(area, chunk, extend);
if (!regenedRoads) {
LOGGER.info("Failed to regenerate road");
}
}
@ -575,35 +572,7 @@ public class HybridUtils {
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) {
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 z = chunk.getZ() << 4;
int ex = x + 15;
@ -629,15 +598,7 @@ public class HybridUtils {
z -= plotWorld.ROAD_OFFSET_Z;
final int finalX = x;
final int finalZ = z;
final boolean enqueue;
final QueueCoordinator queue;
if (queueCoordinator == null) {
queue = this.blockQueue.getNewQueue(worldUtil.getWeWorld(plotWorld.getWorldName()));
enqueue = true;
} else {
queue = queueCoordinator;
enqueue = false;
}
QueueCoordinator queue = this.blockQueue.getNewQueue(worldUtil.getWeWorld(plotWorld.getWorldName()));
if (id1 == null || id2 == null || id1 != id2) {
this.chunkManager.loadChunk(area.getWorldName(), chunk, false).thenRun(() -> {
if (id1 != null) {
@ -721,9 +682,7 @@ public class HybridUtils {
}
}
}
if (enqueue) {
queue.enqueue();
}
});
return true;
}