mirror of
https://github.com/IntellectualSites/PlotSquared.git
synced 2024-11-22 11:55:38 +01:00
Fix my stupid mistake of using lamdas not creating nested classes when creating schematics. "this" doesn't work like that. Cheers Java.
This commit is contained in:
parent
9c3d2cfb02
commit
02f3c3ef50
@ -130,8 +130,7 @@ public abstract class SchematicHandler {
|
|||||||
name =
|
name =
|
||||||
plot.getId().x + ";" + plot.getId().y + ',' + plot.getArea() + ',' + owner;
|
plot.getId().x + ";" + plot.getId().y + ',' + plot.getArea() + ',' + owner;
|
||||||
} else {
|
} else {
|
||||||
name = namingScheme
|
name = namingScheme.replaceAll("%id%", plot.getId().toString())
|
||||||
.replaceAll("%id%", plot.getId().toString())
|
|
||||||
.replaceAll("%idx%", plot.getId().x + "")
|
.replaceAll("%idx%", plot.getId().x + "")
|
||||||
.replaceAll("%idy%", plot.getId().y + "")
|
.replaceAll("%idy%", plot.getId().y + "")
|
||||||
.replaceAll("%world%", plot.getArea().toString());
|
.replaceAll("%world%", plot.getArea().toString());
|
||||||
@ -566,100 +565,114 @@ public abstract class SchematicHandler {
|
|||||||
final int p2z = pos2.getZ();
|
final int p2z = pos2.getZ();
|
||||||
final int ey = pos2.getY();
|
final int ey = pos2.getY();
|
||||||
Iterator<Integer> yiter = IntStream.range(sy, ey + 1).iterator();
|
Iterator<Integer> yiter = IntStream.range(sy, ey + 1).iterator();
|
||||||
final Runnable yTask = () -> {
|
final Runnable yTask = new Runnable() {
|
||||||
long ystart = System.currentTimeMillis();
|
@Override public void run() {
|
||||||
while (yiter.hasNext() && System.currentTimeMillis() - ystart < 20) {
|
long ystart = System.currentTimeMillis();
|
||||||
final int y = yiter.next();
|
while (yiter.hasNext() && System.currentTimeMillis() - ystart < 20) {
|
||||||
Iterator<Integer> ziter = IntStream.range(p1z, p2z + 1).iterator();
|
final int y = yiter.next();
|
||||||
final Runnable zTask = () -> {
|
Iterator<Integer> ziter = IntStream.range(p1z, p2z + 1).iterator();
|
||||||
long zstart = System.currentTimeMillis();
|
final Runnable zTask = new Runnable() {
|
||||||
while (ziter.hasNext()
|
@Override public void run() {
|
||||||
&& System.currentTimeMillis() - zstart < 20) {
|
long zstart = System.currentTimeMillis();
|
||||||
final int z = ziter.next();
|
while (ziter.hasNext()
|
||||||
Iterator<Integer> xiter =
|
&& System.currentTimeMillis() - zstart < 20) {
|
||||||
IntStream.range(p1x, p2x + 1).iterator();
|
final int z = ziter.next();
|
||||||
final Runnable xTask = () -> {
|
Iterator<Integer> xiter =
|
||||||
long xstart = System.currentTimeMillis();
|
IntStream.range(p1x, p2x + 1).iterator();
|
||||||
final int ry = y - sy;
|
final Runnable xTask = new Runnable() {
|
||||||
final int rz = z - p1z;
|
@Override public void run() {
|
||||||
while (xiter.hasNext()
|
long xstart = System.currentTimeMillis();
|
||||||
&& System.currentTimeMillis() - xstart < 20) {
|
final int ry = y - sy;
|
||||||
final int x = xiter.next();
|
final int rz = z - p1z;
|
||||||
final int rx = x - p1x;
|
while (xiter.hasNext()
|
||||||
BlockVector3 point = BlockVector3.at(x, y, z);
|
&& System.currentTimeMillis() - xstart
|
||||||
BaseBlock block =
|
< 20) {
|
||||||
cuboidRegion.getWorld().getFullBlock(point);
|
final int x = xiter.next();
|
||||||
if (block.getNbtData() != null) {
|
final int rx = x - p1x;
|
||||||
Map<String, Tag> values = new HashMap<>();
|
BlockVector3 point =
|
||||||
for (Map.Entry<String, Tag> entry : block
|
BlockVector3.at(x, y, z);
|
||||||
.getNbtData().getValue().entrySet()) {
|
BaseBlock block = cuboidRegion.getWorld()
|
||||||
values.put(entry.getKey(), entry.getValue());
|
.getFullBlock(point);
|
||||||
|
if (block.getNbtData() != null) {
|
||||||
|
Map<String, Tag> values =
|
||||||
|
new HashMap<>();
|
||||||
|
for (Map.Entry<String, Tag> entry : block
|
||||||
|
.getNbtData().getValue()
|
||||||
|
.entrySet()) {
|
||||||
|
values.put(entry.getKey(),
|
||||||
|
entry.getValue());
|
||||||
|
}
|
||||||
|
// Remove 'id' if it exists. We want 'Id'
|
||||||
|
values.remove("id");
|
||||||
|
|
||||||
|
// Positions are kept in NBT, we don't want that.
|
||||||
|
values.remove("x");
|
||||||
|
values.remove("y");
|
||||||
|
values.remove("z");
|
||||||
|
|
||||||
|
values.put("Id",
|
||||||
|
new StringTag(block.getNbtId()));
|
||||||
|
values.put("Pos", new IntArrayTag(
|
||||||
|
new int[] {rx, ry, rz}));
|
||||||
|
|
||||||
|
tileEntities
|
||||||
|
.add(new CompoundTag(values));
|
||||||
|
}
|
||||||
|
String blockKey =
|
||||||
|
block.toImmutableState().getAsString();
|
||||||
|
int blockId;
|
||||||
|
if (palette.containsKey(blockKey)) {
|
||||||
|
blockId = palette.get(blockKey);
|
||||||
|
} else {
|
||||||
|
blockId = palette.size();
|
||||||
|
palette.put(blockKey, palette.size());
|
||||||
|
}
|
||||||
|
|
||||||
|
while ((blockId & -128) != 0) {
|
||||||
|
buffer.write(blockId & 127 | 128);
|
||||||
|
blockId >>>= 7;
|
||||||
|
}
|
||||||
|
buffer.write(blockId);
|
||||||
|
|
||||||
|
if (ry > 0) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
BlockVector2 pt = BlockVector2.at(x, z);
|
||||||
|
BiomeType biome =
|
||||||
|
cuboidRegion.getWorld().getBiome(pt);
|
||||||
|
String biomeStr = biome.getId();
|
||||||
|
int biomeId;
|
||||||
|
if (biomePalette.containsKey(biomeStr)) {
|
||||||
|
biomeId = biomePalette.get(biomeStr);
|
||||||
|
} else {
|
||||||
|
biomeId = biomePalette.size();
|
||||||
|
biomePalette.put(biomeStr, biomeId);
|
||||||
|
}
|
||||||
|
while ((biomeId & -128) != 0) {
|
||||||
|
biomeBuffer.write(biomeId & 127 | 128);
|
||||||
|
biomeId >>>= 7;
|
||||||
|
}
|
||||||
|
biomeBuffer.write(biomeId);
|
||||||
|
}
|
||||||
|
if (xiter.hasNext()) {
|
||||||
|
this.run();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// Remove 'id' if it exists. We want 'Id'
|
};
|
||||||
values.remove("id");
|
xTask.run();
|
||||||
|
|
||||||
// Positions are kept in NBT, we don't want that.
|
|
||||||
values.remove("x");
|
|
||||||
values.remove("y");
|
|
||||||
values.remove("z");
|
|
||||||
|
|
||||||
values.put("Id", new StringTag(block.getNbtId()));
|
|
||||||
values.put("Pos",
|
|
||||||
new IntArrayTag(new int[] {rx, ry, rz}));
|
|
||||||
|
|
||||||
tileEntities.add(new CompoundTag(values));
|
|
||||||
}
|
|
||||||
String blockKey =
|
|
||||||
block.toImmutableState().getAsString();
|
|
||||||
int blockId;
|
|
||||||
if (palette.containsKey(blockKey)) {
|
|
||||||
blockId = palette.get(blockKey);
|
|
||||||
} else {
|
|
||||||
blockId = palette.size();
|
|
||||||
palette.put(blockKey, palette.size());
|
|
||||||
}
|
|
||||||
|
|
||||||
while ((blockId & -128) != 0) {
|
|
||||||
buffer.write(blockId & 127 | 128);
|
|
||||||
blockId >>>= 7;
|
|
||||||
}
|
|
||||||
buffer.write(blockId);
|
|
||||||
|
|
||||||
if (ry > 0) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
BlockVector2 pt = BlockVector2.at(x, z);
|
|
||||||
BiomeType biome = cuboidRegion.getWorld().getBiome(pt);
|
|
||||||
String biomeStr = biome.getId();
|
|
||||||
int biomeId;
|
|
||||||
if (biomePalette.containsKey(biomeStr)) {
|
|
||||||
biomeId = biomePalette.get(biomeStr);
|
|
||||||
} else {
|
|
||||||
biomeId = biomePalette.size();
|
|
||||||
biomePalette.put(biomeStr, biomeId);
|
|
||||||
}
|
|
||||||
while ((biomeId & -128) != 0) {
|
|
||||||
biomeBuffer.write(biomeId & 127 | 128);
|
|
||||||
biomeId >>>= 7;
|
|
||||||
}
|
|
||||||
biomeBuffer.write(biomeId);
|
|
||||||
}
|
}
|
||||||
if (xiter.hasNext()) {
|
if (ziter.hasNext()) {
|
||||||
this.run();
|
this.run();
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
xTask.run();
|
};
|
||||||
}
|
zTask.run();
|
||||||
if (ziter.hasNext()) {
|
}
|
||||||
this.run();
|
if (yiter.hasNext()) {
|
||||||
}
|
TaskManager.runTaskLater(this, 1);
|
||||||
};
|
} else {
|
||||||
zTask.run();
|
regionTask.run();
|
||||||
}
|
}
|
||||||
if (yiter.hasNext()) {
|
|
||||||
TaskManager.runTaskLater(this, 1);
|
|
||||||
} else {
|
|
||||||
regionTask.run();
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
yTask.run();
|
yTask.run();
|
||||||
|
Loading…
Reference in New Issue
Block a user