Skip to content
This repository was archived by the owner on May 27, 2023. It is now read-only.

Commit fb9e60b

Browse files
committed
fix: chunks not being loaded when building schematics
1 parent 3147722 commit fb9e60b

File tree

2 files changed

+7
-2
lines changed

2 files changed

+7
-2
lines changed

src/main/java/net/crystalgames/scaffolding/schematic/impl/MCEditSchematic.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,14 +124,16 @@ public CompletableFuture<Region> build(Instance instance, Pos position) {
124124
CompletableFuture.runAsync(() -> {
125125
AbsoluteBlockBatch blockBatch = new AbsoluteBlockBatch();
126126

127+
List<CompletableFuture<Void>> futures = new ArrayList<>();
127128
for (Region.Block regionBlock : regionBlocks) {
128129
Pos blockPosition = regionBlock.position();
129130
short stateId = regionBlock.stateId();
130131

131132
Block block = Block.fromStateId(stateId);
132-
if (block != null) blockBatch.setBlock(blockPosition.add(position), block);
133+
if (block != null) futures.add(instance.loadOptionalChunk(blockPosition).thenRun(() -> blockBatch.setBlock(blockPosition.add(position), block)));
133134
}
134135

136+
CompletableFuture.allOf(futures.toArray(new CompletableFuture[]{})).join();
135137
blockBatch.apply(instance, () -> future.complete(new Region(instance, position, position.add(width, height, length))));
136138
});
137139
return future;

src/main/java/net/crystalgames/scaffolding/schematic/impl/SpongeSchematic.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,13 +144,16 @@ public CompletableFuture<Region> build(Instance instance, Pos position) {
144144
CompletableFuture.runAsync(() -> {
145145
AbsoluteBlockBatch blockBatch = new AbsoluteBlockBatch();
146146

147+
List<CompletableFuture<Void>> futures = new ArrayList<>();
147148
for (Region.Block regionBlock : regionBlocks) {
148149
Pos blockPosition = regionBlock.position();
149150
short stateId = regionBlock.stateId();
150151

151152
Block block = Block.fromStateId(stateId);
152-
if (block != null) blockBatch.setBlock(blockPosition.add(position), block);
153+
if (block != null) futures.add(instance.loadOptionalChunk(blockPosition).thenRun(() -> blockBatch.setBlock(blockPosition.add(position), block)));
153154
}
155+
156+
CompletableFuture.allOf(futures.toArray(new CompletableFuture[]{})).join();
154157
blockBatch.apply(instance, () -> future.complete(new Region(instance, position, position.add(width, height, length))));
155158
});
156159
return future;

0 commit comments

Comments
 (0)