mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-17 16:37:43 +01:00
Updated Upstream (Paper & Tuinity)
Upstream has released updates that appears to apply and compile correctly Paper Changes: 6e7dc3f81 [Auto] Updated Upstream (CraftBukkit) 664ae4554 [Auto] Updated Upstream (CraftBukkit) dafc7b8f8 Fix off by one error for scheduling block ticks (#4014) 5791e512b Fix MaterialTags tests to actually pass 115972651 Expand MaterialTags v2 (#4009) 5aaf1c514 prevent path space splitting in testServer.sh (#4007) a8ef09b82 Tighten logic for handling target tick times in tick scheduler (#4010) d5ccd4139 Remove ability to disable async chunks unless single core cpu 76728529f Fix Light Prioritization Issues 2d66b5be8 [Auto] Updated Upstream (CraftBukkit) 51d10c201 Add missing strikeLighting call to World#spigot()#strikeLightningEffect Tuinity Changes: 416ed5e Fix 3 tick pistons not functioning correctly 489faf0 Fix up lock handling for UserCache
This commit is contained in:
@@ -133,10 +133,10 @@ index 49a38c6608..60d6469b81 100644
|
||||
switch (distance) {
|
||||
case -1:
|
||||
diff --git a/src/main/java/com/destroystokyo/paper/server/ticklist/PaperTickList.java b/src/main/java/com/destroystokyo/paper/server/ticklist/PaperTickList.java
|
||||
index 0692fe33bb..4263eb9172 100644
|
||||
index e7624948ea..77df688880 100644
|
||||
--- a/src/main/java/com/destroystokyo/paper/server/ticklist/PaperTickList.java
|
||||
+++ b/src/main/java/com/destroystokyo/paper/server/ticklist/PaperTickList.java
|
||||
@@ -188,6 +188,7 @@ public final class PaperTickList<T> extends TickListServer<T> { // extend to avo
|
||||
@@ -186,6 +186,7 @@ public final class PaperTickList<T> extends TickListServer<T> { // extend to avo
|
||||
}
|
||||
|
||||
public void onChunkSetTicking(final int chunkX, final int chunkZ) {
|
||||
@@ -146,13 +146,21 @@ index 0692fe33bb..4263eb9172 100644
|
||||
return;
|
||||
@@ -268,6 +269,7 @@ public final class PaperTickList<T> extends TickListServer<T> { // extend to avo
|
||||
|
||||
@Override
|
||||
protected void nextTick() {
|
||||
+ com.tuinity.tuinity.util.TickThread.softEnsureTickThread("async tick list tick"); // Tuinity - soft async catcher
|
||||
++this.currentTick;
|
||||
if (this.currentTick != this.world.getTime()) {
|
||||
if (!this.warnedAboutDesync) {
|
||||
@@ -280,6 +282,7 @@ public final class PaperTickList<T> extends TickListServer<T> { // extend to avo
|
||||
|
||||
@Override
|
||||
public void tick() {
|
||||
+ com.tuinity.tuinity.util.TickThread.softEnsureTickThread("async tick list tick"); // Tuinity - soft async catcher
|
||||
final ChunkProviderServer chunkProvider = this.world.getChunkProvider();
|
||||
|
||||
this.world.getMethodProfiler().enter("cleaning");
|
||||
@@ -296,6 +298,7 @@ public final class PaperTickList<T> extends TickListServer<T> { // extend to avo
|
||||
@@ -307,6 +310,7 @@ public final class PaperTickList<T> extends TickListServer<T> { // extend to avo
|
||||
if (toTick.tickState == STATE_TICKING) {
|
||||
toTick.tickState = STATE_TICKED;
|
||||
} // else it's STATE_CANCELLED_TICK
|
||||
@@ -160,7 +168,7 @@ index 0692fe33bb..4263eb9172 100644
|
||||
} else {
|
||||
// re-schedule eventually
|
||||
toTick.tickState = STATE_SCHEDULED;
|
||||
@@ -413,6 +416,7 @@ public final class PaperTickList<T> extends TickListServer<T> { // extend to avo
|
||||
@@ -424,6 +428,7 @@ public final class PaperTickList<T> extends TickListServer<T> { // extend to avo
|
||||
}
|
||||
|
||||
public void schedule(final BlockPosition pos, final T data, final long targetTick, final TickListPriority priority) {
|
||||
@@ -168,7 +176,7 @@ index 0692fe33bb..4263eb9172 100644
|
||||
final NextTickListEntry<T> entry = new NextTickListEntry<>(pos, data, targetTick, priority);
|
||||
if (this.excludeFromScheduling.test(entry.getData())) {
|
||||
return;
|
||||
@@ -468,6 +472,7 @@ public final class PaperTickList<T> extends TickListServer<T> { // extend to avo
|
||||
@@ -479,6 +484,7 @@ public final class PaperTickList<T> extends TickListServer<T> { // extend to avo
|
||||
|
||||
@Override
|
||||
public List<NextTickListEntry<T>> getEntriesInBoundingBox(final StructureBoundingBox structureboundingbox, final boolean removeReturned, final boolean excludeTicked) {
|
||||
@@ -176,7 +184,7 @@ index 0692fe33bb..4263eb9172 100644
|
||||
if (structureboundingbox.getMinX() == structureboundingbox.getMaxX() || structureboundingbox.getMinZ() == structureboundingbox.getMaxZ()) {
|
||||
return Collections.emptyList(); // vanilla behaviour, check isBlockInSortof above
|
||||
}
|
||||
@@ -524,6 +529,7 @@ public final class PaperTickList<T> extends TickListServer<T> { // extend to avo
|
||||
@@ -535,6 +541,7 @@ public final class PaperTickList<T> extends TickListServer<T> { // extend to avo
|
||||
|
||||
@Override
|
||||
public void copy(StructureBoundingBox structureboundingbox, BlockPosition blockposition) {
|
||||
@@ -184,7 +192,7 @@ index 0692fe33bb..4263eb9172 100644
|
||||
// start copy from TickListServer // TODO check on update
|
||||
List<NextTickListEntry<T>> list = this.getEntriesInBoundingBox(structureboundingbox, false, false);
|
||||
Iterator<NextTickListEntry<T>> iterator = list.iterator();
|
||||
@@ -543,6 +549,7 @@ public final class PaperTickList<T> extends TickListServer<T> { // extend to avo
|
||||
@@ -554,6 +561,7 @@ public final class PaperTickList<T> extends TickListServer<T> { // extend to avo
|
||||
|
||||
@Override
|
||||
public List<NextTickListEntry<T>> getEntriesInChunk(ChunkCoordIntPair chunkPos, boolean removeReturned, boolean excludeTicked) {
|
||||
@@ -192,7 +200,7 @@ index 0692fe33bb..4263eb9172 100644
|
||||
// Vanilla DOES get the entries 2 blocks out of the chunk too, but that doesn't matter since we ignore chunks
|
||||
// not at ticking status, and ticking status requires neighbours loaded
|
||||
// so with this method we will reduce scheduler churning
|
||||
@@ -574,6 +581,7 @@ public final class PaperTickList<T> extends TickListServer<T> { // extend to avo
|
||||
@@ -585,6 +593,7 @@ public final class PaperTickList<T> extends TickListServer<T> { // extend to avo
|
||||
|
||||
@Override
|
||||
public NBTTagList serialize(ChunkCoordIntPair chunkcoordintpair) {
|
||||
@@ -200,7 +208,7 @@ index 0692fe33bb..4263eb9172 100644
|
||||
// start copy from TickListServer // TODO check on update
|
||||
List<NextTickListEntry<T>> list = this.getEntriesInChunk(chunkcoordintpair, false, true);
|
||||
|
||||
@@ -583,6 +591,7 @@ public final class PaperTickList<T> extends TickListServer<T> { // extend to avo
|
||||
@@ -594,6 +603,7 @@ public final class PaperTickList<T> extends TickListServer<T> { // extend to avo
|
||||
|
||||
@Override
|
||||
public int getTotalScheduledEntries() {
|
||||
@@ -4237,7 +4245,7 @@ index ad8a00e0fb..78e7f6bc31 100644
|
||||
// Paper end - optimised tracker
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
|
||||
index 95d57c6de9..5af6140a77 100644
|
||||
index 19be6a93cf..bf603ba34f 100644
|
||||
--- a/src/main/java/net/minecraft/server/PlayerConnection.java
|
||||
+++ b/src/main/java/net/minecraft/server/PlayerConnection.java
|
||||
@@ -322,19 +322,24 @@ public class PlayerConnection implements PacketListenerPlayIn {
|
||||
@@ -5748,7 +5756,7 @@ index b2ceb6c179..b955d5d661 100644
|
||||
super(TileEntityTypes.LECTERN);
|
||||
this.book = ItemStack.b;
|
||||
diff --git a/src/main/java/net/minecraft/server/TileEntityPiston.java b/src/main/java/net/minecraft/server/TileEntityPiston.java
|
||||
index e7b7e468fc..38d0e841ca 100644
|
||||
index e7b7e468fc..faf5e4aff0 100644
|
||||
--- a/src/main/java/net/minecraft/server/TileEntityPiston.java
|
||||
+++ b/src/main/java/net/minecraft/server/TileEntityPiston.java
|
||||
@@ -5,10 +5,10 @@ import java.util.List;
|
||||
@@ -5801,7 +5809,7 @@ index e7b7e468fc..38d0e841ca 100644
|
||||
}
|
||||
|
||||
public boolean d() {
|
||||
@@ -238,7 +253,25 @@ public class TileEntityPiston extends TileEntity implements ITickable {
|
||||
@@ -238,7 +253,27 @@ public class TileEntityPiston extends TileEntity implements ITickable {
|
||||
iblockdata = Block.b(this.a, (GeneratorAccess) this.world, this.position);
|
||||
}
|
||||
|
||||
@@ -5816,9 +5824,11 @@ index e7b7e468fc..38d0e841ca 100644
|
||||
+ this.world.setAir(this.position, false);
|
||||
+ Block.dropItems(this.getBlockData(), this.world, this.position, null, null, ItemStack.NULL_ITEM);
|
||||
+ } else {
|
||||
+ // need to set to air before else the setTypeAndData call will create a new TE and override
|
||||
+ // the old one
|
||||
+ this.world.setTypeAndDataRaw(this.position, Blocks.AIR.getBlockData(), null);
|
||||
+ if (iblockdata.getBlock() == this.getBlockData().getBlock() && this.tileEntity != null) {
|
||||
+ // need to set to air before else the setTypeAndData call will create a new TE and override
|
||||
+ // the old one
|
||||
+ this.world.setAir(this.position, false);
|
||||
+ }
|
||||
+ this.world.setTypeAndData(this.position, iblockdata, 3, iblockdata.getBlock() == this.getBlockData().getBlock() ? this.tileEntity : null);
|
||||
+ }
|
||||
+ if (this.tileEntity != null && this.world.getType(this.position).getBlock() == this.getBlockData().getBlock()) {
|
||||
@@ -5828,7 +5838,7 @@ index e7b7e468fc..38d0e841ca 100644
|
||||
this.world.a(this.position, iblockdata.getBlock(), this.position);
|
||||
}
|
||||
}
|
||||
@@ -263,7 +296,12 @@ public class TileEntityPiston extends TileEntity implements ITickable {
|
||||
@@ -263,7 +298,12 @@ public class TileEntityPiston extends TileEntity implements ITickable {
|
||||
iblockdata = (IBlockData) iblockdata.set(BlockProperties.C, false);
|
||||
}
|
||||
|
||||
@@ -5842,7 +5852,7 @@ index e7b7e468fc..38d0e841ca 100644
|
||||
this.world.a(this.position, iblockdata.getBlock(), this.position);
|
||||
}
|
||||
}
|
||||
@@ -290,16 +328,34 @@ public class TileEntityPiston extends TileEntity implements ITickable {
|
||||
@@ -290,16 +330,34 @@ public class TileEntityPiston extends TileEntity implements ITickable {
|
||||
this.j = this.i;
|
||||
this.c = nbttagcompound.getBoolean("extending");
|
||||
this.g = nbttagcompound.getBoolean("source");
|
||||
@@ -5878,7 +5888,7 @@ index e7b7e468fc..38d0e841ca 100644
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/UserCache.java b/src/main/java/net/minecraft/server/UserCache.java
|
||||
index a038397028..c68af75629 100644
|
||||
index a038397028..2cdc6cf8ce 100644
|
||||
--- a/src/main/java/net/minecraft/server/UserCache.java
|
||||
+++ b/src/main/java/net/minecraft/server/UserCache.java
|
||||
@@ -51,6 +51,10 @@ public class UserCache {
|
||||
@@ -5925,20 +5935,13 @@ index a038397028..c68af75629 100644
|
||||
UserCache.UserCacheEntry usercache_usercacheentry = (UserCache.UserCacheEntry) this.d.get(s1);
|
||||
|
||||
if (usercache_usercacheentry != null && (new Date()).getTime() >= usercache_usercacheentry.c.getTime()) {
|
||||
@@ -135,6 +142,7 @@ public class UserCache {
|
||||
this.d.remove(usercache_usercacheentry.a().getName().toLowerCase(Locale.ROOT));
|
||||
this.f.remove(usercache_usercacheentry.a());
|
||||
usercache_usercacheentry = null;
|
||||
+ stateLocked = false; this.stateLock.unlock(); // Tuinity - allow better concurrency
|
||||
}
|
||||
|
||||
GameProfile gameprofile;
|
||||
@@ -143,8 +151,11 @@ public class UserCache {
|
||||
@@ -143,8 +150,12 @@ public class UserCache {
|
||||
gameprofile = usercache_usercacheentry.a();
|
||||
this.f.remove(gameprofile);
|
||||
this.f.addFirst(gameprofile);
|
||||
+ stateLocked = false; this.stateLock.unlock(); // Tuinity - allow better concurrency
|
||||
} else {
|
||||
+ stateLocked = false; this.stateLock.unlock(); // Tuinity - allow better concurrency
|
||||
+ try { this.lookupLock.lock(); // Tuinity - allow better concurrency
|
||||
gameprofile = a(this.g, s); // Spigot - use correct case for offline players
|
||||
+ } finally { this.lookupLock.unlock(); } // Tuinity - allow better concurrency
|
||||
@@ -5949,7 +5952,7 @@ index a038397028..c68af75629 100644
|
||||
|
||||
if( !org.spigotmc.SpigotConfig.saveUserCacheOnStopOnly ) this.c(); // Spigot - skip saving if disabled
|
||||
return usercache_usercacheentry == null ? null : usercache_usercacheentry.a();
|
||||
+ } finally { if (stateLocked) { stateLocked = false; this.stateLock.unlock(); } } // Tuinity - allow better concurrency
|
||||
+ } finally { if (stateLocked) { this.stateLock.unlock(); } } // Tuinity - allow better concurrency
|
||||
}
|
||||
|
||||
// Paper start
|
||||
@@ -6484,7 +6487,7 @@ index b651eb87bb..5cba3b0e61 100644
|
||||
return this.j.d();
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
index d048ee2313..8388629f57 100644
|
||||
index 63c1190729..2bee2dab9f 100644
|
||||
--- a/src/main/java/net/minecraft/server/WorldServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
@@ -55,7 +55,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
|
||||
@@ -7044,7 +7047,7 @@ index d048ee2313..8388629f57 100644
|
||||
this.tickBlockEntities();
|
||||
}
|
||||
|
||||
@@ -802,7 +1251,26 @@ public class WorldServer extends World implements GeneratorAccessSeed {
|
||||
@@ -804,7 +1253,26 @@ public class WorldServer extends World implements GeneratorAccessSeed {
|
||||
|
||||
}
|
||||
|
||||
@@ -7071,7 +7074,7 @@ index d048ee2313..8388629f57 100644
|
||||
if (!(entity instanceof EntityHuman) && !this.getChunkProvider().a(entity)) {
|
||||
this.chunkCheck(entity);
|
||||
} else {
|
||||
@@ -848,6 +1316,11 @@ public class WorldServer extends World implements GeneratorAccessSeed {
|
||||
@@ -850,6 +1318,11 @@ public class WorldServer extends World implements GeneratorAccessSeed {
|
||||
} // Paper - timings
|
||||
|
||||
}
|
||||
@@ -7083,7 +7086,7 @@ index d048ee2313..8388629f57 100644
|
||||
}
|
||||
|
||||
public void a(Entity entity, Entity entity1) {
|
||||
@@ -891,6 +1364,12 @@ public class WorldServer extends World implements GeneratorAccessSeed {
|
||||
@@ -893,6 +1366,12 @@ public class WorldServer extends World implements GeneratorAccessSeed {
|
||||
int i = MathHelper.floor(entity.locX() / 16.0D);
|
||||
int j = Math.min(15, Math.max(0, MathHelper.floor(entity.locY() / 16.0D))); // Paper - stay consistent with chunk add/remove behavior
|
||||
int k = MathHelper.floor(entity.locZ() / 16.0D);
|
||||
@@ -7096,7 +7099,7 @@ index d048ee2313..8388629f57 100644
|
||||
|
||||
if (!entity.inChunk || entity.chunkX != i || entity.chunkY != j || entity.chunkZ != k) {
|
||||
// Paper start - remove entity if its in a chunk more correctly.
|
||||
@@ -900,6 +1379,12 @@ public class WorldServer extends World implements GeneratorAccessSeed {
|
||||
@@ -902,6 +1381,12 @@ public class WorldServer extends World implements GeneratorAccessSeed {
|
||||
}
|
||||
// Paper end
|
||||
|
||||
@@ -7109,7 +7112,7 @@ index d048ee2313..8388629f57 100644
|
||||
if (entity.inChunk && this.isChunkLoaded(entity.chunkX, entity.chunkZ)) {
|
||||
this.getChunkAt(entity.chunkX, entity.chunkZ).a(entity, entity.chunkY);
|
||||
}
|
||||
@@ -913,6 +1398,11 @@ public class WorldServer extends World implements GeneratorAccessSeed {
|
||||
@@ -915,6 +1400,11 @@ public class WorldServer extends World implements GeneratorAccessSeed {
|
||||
} else {
|
||||
this.getChunkAt(i, k).a(entity);
|
||||
}
|
||||
@@ -7121,7 +7124,7 @@ index d048ee2313..8388629f57 100644
|
||||
}
|
||||
|
||||
this.getMethodProfiler().exit();
|
||||
@@ -1224,7 +1714,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
|
||||
@@ -1226,7 +1716,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
|
||||
Entity entity = (Entity) iterator.next();
|
||||
|
||||
if (!(entity instanceof EntityPlayer)) {
|
||||
@@ -7130,7 +7133,7 @@ index d048ee2313..8388629f57 100644
|
||||
throw (IllegalStateException) SystemUtils.c(new IllegalStateException("Removing entity while ticking!"));
|
||||
}
|
||||
|
||||
@@ -1252,6 +1742,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
|
||||
@@ -1254,6 +1744,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
|
||||
|
||||
public void unregisterEntity(Entity entity) {
|
||||
org.spigotmc.AsyncCatcher.catchOp("entity unregister"); // Spigot
|
||||
@@ -7138,7 +7141,7 @@ index d048ee2313..8388629f57 100644
|
||||
// Paper start - fix entity registration issues
|
||||
if (entity instanceof EntityComplexPart) {
|
||||
// Usually this is a no-op for complex parts, and ID's should be removed, but go ahead and remove it anyways
|
||||
@@ -1318,17 +1809,108 @@ public class WorldServer extends World implements GeneratorAccessSeed {
|
||||
@@ -1320,17 +1811,108 @@ public class WorldServer extends World implements GeneratorAccessSeed {
|
||||
this.getScoreboard().a(entity);
|
||||
// CraftBukkit start - SPIGOT-5278
|
||||
if (entity instanceof EntityDrowned) {
|
||||
@@ -7250,7 +7253,7 @@ index d048ee2313..8388629f57 100644
|
||||
private void registerEntity(Entity entity) {
|
||||
org.spigotmc.AsyncCatcher.catchOp("entity register"); // Spigot
|
||||
// Paper start - don't double enqueue entity registration
|
||||
@@ -1339,7 +1921,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
|
||||
@@ -1341,7 +1923,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
|
||||
return;
|
||||
}
|
||||
// Paper end
|
||||
@@ -7259,7 +7262,7 @@ index d048ee2313..8388629f57 100644
|
||||
if (!entity.isQueuedForRegister) { // Paper
|
||||
this.entitiesToAdd.add(entity);
|
||||
entity.isQueuedForRegister = true; // Paper
|
||||
@@ -1347,6 +1929,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
|
||||
@@ -1349,6 +1931,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
|
||||
} else {
|
||||
entity.isQueuedForRegister = false; // Paper
|
||||
this.entitiesById.put(entity.getId(), entity);
|
||||
@@ -7267,7 +7270,7 @@ index d048ee2313..8388629f57 100644
|
||||
if (entity instanceof EntityEnderDragon) {
|
||||
EntityComplexPart[] aentitycomplexpart = ((EntityEnderDragon) entity).eK();
|
||||
int i = aentitycomplexpart.length;
|
||||
@@ -1355,6 +1938,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
|
||||
@@ -1357,6 +1940,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
|
||||
EntityComplexPart entitycomplexpart = aentitycomplexpart[j];
|
||||
|
||||
this.entitiesById.put(entitycomplexpart.getId(), entitycomplexpart);
|
||||
@@ -7275,7 +7278,7 @@ index d048ee2313..8388629f57 100644
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1379,12 +1963,16 @@ public class WorldServer extends World implements GeneratorAccessSeed {
|
||||
@@ -1381,12 +1965,16 @@ public class WorldServer extends World implements GeneratorAccessSeed {
|
||||
// this.getChunkProvider().addEntity(entity); // Paper - moved down below valid=true
|
||||
// CraftBukkit start - SPIGOT-5278
|
||||
if (entity instanceof EntityDrowned) {
|
||||
@@ -7295,7 +7298,7 @@ index d048ee2313..8388629f57 100644
|
||||
}
|
||||
entity.valid = true; // CraftBukkit
|
||||
this.getChunkProvider().addEntity(entity); // Paper - from above to be below valid=true
|
||||
@@ -1400,7 +1988,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
|
||||
@@ -1402,7 +1990,7 @@ public class WorldServer extends World implements GeneratorAccessSeed {
|
||||
}
|
||||
|
||||
public void removeEntity(Entity entity) {
|
||||
@@ -7304,7 +7307,7 @@ index d048ee2313..8388629f57 100644
|
||||
throw (IllegalStateException) SystemUtils.c(new IllegalStateException("Removing entity while ticking!"));
|
||||
} else {
|
||||
this.removeEntityFromChunk(entity);
|
||||
@@ -1501,8 +2089,26 @@ public class WorldServer extends World implements GeneratorAccessSeed {
|
||||
@@ -1503,8 +2091,26 @@ public class WorldServer extends World implements GeneratorAccessSeed {
|
||||
VoxelShape voxelshape1 = iblockdata1.getCollisionShape(this, blockposition);
|
||||
|
||||
if (VoxelShapes.c(voxelshape, voxelshape1, OperatorBoolean.NOT_SAME)) {
|
||||
@@ -7332,7 +7335,7 @@ index d048ee2313..8388629f57 100644
|
||||
|
||||
while (iterator.hasNext()) {
|
||||
NavigationAbstract navigationabstract = (NavigationAbstract) iterator.next();
|
||||
@@ -1510,7 +2116,21 @@ public class WorldServer extends World implements GeneratorAccessSeed {
|
||||
@@ -1512,7 +2118,21 @@ public class WorldServer extends World implements GeneratorAccessSeed {
|
||||
if (!navigationabstract.i()) {
|
||||
navigationabstract.b(blockposition);
|
||||
}
|
||||
@@ -7438,7 +7441,7 @@ index 6282a05ae8..d434bd93bc 100644
|
||||
public void restart() {
|
||||
org.spigotmc.RestartCommand.restart();
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
||||
index 65b36a1741..39decca9c5 100644
|
||||
index ca0ca5e407..e8bbe1545e 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
||||
@@ -336,6 +336,14 @@ public class CraftWorld implements World {
|
||||
|
||||
Reference in New Issue
Block a user