Mirror von
https://github.com/IntellectualSites/FastAsyncWorldEdit.git
synchronisiert 2024-12-24 18:10:08 +01:00
Synchronise on the nmsWorld so we're not attempting to load two chunks at the same time.
Possibly fixes #471
Dieser Commit ist enthalten in:
Ursprung
5be11c541b
Commit
31cc5e0b60
@ -136,7 +136,10 @@ public final class BukkitAdapter_1_14 extends NMSAdapter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static Chunk ensureLoaded(net.minecraft.server.v1_14_R1.World nmsWorld, int X, int Z) {
|
public static Chunk ensureLoaded(net.minecraft.server.v1_14_R1.World nmsWorld, int X, int Z) {
|
||||||
Chunk nmsChunk = nmsWorld.getChunkIfLoaded(X, Z);
|
Chunk nmsChunk;
|
||||||
|
synchronized (nmsWorld) {
|
||||||
|
nmsChunk = nmsWorld.getChunkIfLoaded(X, Z);
|
||||||
|
}
|
||||||
if (nmsChunk != null) {
|
if (nmsChunk != null) {
|
||||||
return nmsChunk;
|
return nmsChunk;
|
||||||
}
|
}
|
||||||
@ -144,13 +147,15 @@ public final class BukkitAdapter_1_14 extends NMSAdapter {
|
|||||||
return nmsWorld.getChunkAt(X, Z);
|
return nmsWorld.getChunkAt(X, Z);
|
||||||
}
|
}
|
||||||
if (PaperLib.isPaper()) {
|
if (PaperLib.isPaper()) {
|
||||||
CraftWorld craftWorld = nmsWorld.getWorld();
|
synchronized (nmsWorld) {
|
||||||
CompletableFuture<org.bukkit.Chunk> future = craftWorld.getChunkAtAsync(X, Z, true);
|
CraftWorld craftWorld = nmsWorld.getWorld();
|
||||||
try {
|
CompletableFuture<org.bukkit.Chunk> future = craftWorld.getChunkAtAsync(X, Z, true);
|
||||||
CraftChunk chunk = (CraftChunk) future.get();
|
try {
|
||||||
return chunk.getHandle();
|
CraftChunk chunk = (CraftChunk) future.get();
|
||||||
} catch (Throwable e) {
|
return chunk.getHandle();
|
||||||
e.printStackTrace();
|
} catch (Throwable e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// TODO optimize
|
// TODO optimize
|
||||||
|
@ -123,7 +123,10 @@ public final class BukkitAdapter_1_15 extends NMSAdapter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static Chunk ensureLoaded(net.minecraft.server.v1_15_R1.World nmsWorld, int X, int Z) {
|
public static Chunk ensureLoaded(net.minecraft.server.v1_15_R1.World nmsWorld, int X, int Z) {
|
||||||
Chunk nmsChunk = nmsWorld.getChunkIfLoaded(X, Z);
|
Chunk nmsChunk;
|
||||||
|
synchronized (nmsWorld) {
|
||||||
|
nmsChunk = nmsWorld.getChunkIfLoaded(X, Z);
|
||||||
|
}
|
||||||
if (nmsChunk != null) {
|
if (nmsChunk != null) {
|
||||||
return nmsChunk;
|
return nmsChunk;
|
||||||
}
|
}
|
||||||
@ -131,13 +134,15 @@ public final class BukkitAdapter_1_15 extends NMSAdapter {
|
|||||||
return nmsWorld.getChunkAt(X, Z);
|
return nmsWorld.getChunkAt(X, Z);
|
||||||
}
|
}
|
||||||
if (PaperLib.isPaper()) {
|
if (PaperLib.isPaper()) {
|
||||||
CraftWorld craftWorld = nmsWorld.getWorld();
|
synchronized (nmsWorld) {
|
||||||
CompletableFuture<org.bukkit.Chunk> future = craftWorld.getChunkAtAsync(X, Z, true);
|
CraftWorld craftWorld = nmsWorld.getWorld();
|
||||||
try {
|
CompletableFuture<org.bukkit.Chunk> future = craftWorld.getChunkAtAsync(X, Z, true);
|
||||||
CraftChunk chunk = (CraftChunk) future.get();
|
try {
|
||||||
return chunk.getHandle();
|
CraftChunk chunk = (CraftChunk) future.get();
|
||||||
} catch (Throwable e) {
|
return chunk.getHandle();
|
||||||
e.printStackTrace();
|
} catch (Throwable e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// TODO optimize
|
// TODO optimize
|
||||||
|
@ -124,7 +124,10 @@ public final class BukkitAdapter_1_15_2 extends NMSAdapter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static Chunk ensureLoaded(World nmsWorld, int X, int Z) {
|
public static Chunk ensureLoaded(World nmsWorld, int X, int Z) {
|
||||||
Chunk nmsChunk = nmsWorld.getChunkIfLoaded(X, Z);
|
Chunk nmsChunk;
|
||||||
|
synchronized (nmsWorld) {
|
||||||
|
nmsChunk = nmsWorld.getChunkIfLoaded(X, Z);
|
||||||
|
}
|
||||||
if (nmsChunk != null) {
|
if (nmsChunk != null) {
|
||||||
return nmsChunk;
|
return nmsChunk;
|
||||||
}
|
}
|
||||||
@ -132,13 +135,15 @@ public final class BukkitAdapter_1_15_2 extends NMSAdapter {
|
|||||||
return nmsWorld.getChunkAt(X, Z);
|
return nmsWorld.getChunkAt(X, Z);
|
||||||
}
|
}
|
||||||
if (PaperLib.isPaper()) {
|
if (PaperLib.isPaper()) {
|
||||||
CraftWorld craftWorld = nmsWorld.getWorld();
|
synchronized (nmsWorld) {
|
||||||
CompletableFuture<org.bukkit.Chunk> future = craftWorld.getChunkAtAsync(X, Z, true);
|
CraftWorld craftWorld = nmsWorld.getWorld();
|
||||||
try {
|
CompletableFuture<org.bukkit.Chunk> future = craftWorld.getChunkAtAsync(X, Z, true);
|
||||||
CraftChunk chunk = (CraftChunk) future.get();
|
try {
|
||||||
return chunk.getHandle();
|
CraftChunk chunk = (CraftChunk) future.get();
|
||||||
} catch (Throwable e) {
|
return chunk.getHandle();
|
||||||
e.printStackTrace();
|
} catch (Throwable e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// TODO optimize
|
// TODO optimize
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren