Skip to content

Commit

Permalink
Update Paper
Browse files Browse the repository at this point in the history
  • Loading branch information
Spottedleaf committed Sep 11, 2023
1 parent 372d479 commit edafbce
Show file tree
Hide file tree
Showing 5 changed files with 37 additions and 37 deletions.
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ group=dev.folia

version=1.20.1-R0.1-SNAPSHOT
mcVersion=1.20.1
paperRef=33bec7f20a5d3e20d9a8c0a16a1e5276add5d4fb
paperRef=fb06829845db10be0405966f874a16f135f73229

org.gradle.caching=true
org.gradle.parallel=true
Expand Down
64 changes: 32 additions & 32 deletions patches/server/0003-Threaded-Regions.patch
Original file line number Diff line number Diff line change
Expand Up @@ -15360,7 +15360,7 @@ index 618ab9a2903f6d4139acd4aaa2e6db0a26e88ba9..82e9307e4c95edc30c9dd78cd3fefa87
org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockDropItemEvent(bblock, state, this.player, itemsToDrop); // Paper - use stored ref
}
diff --git a/src/main/java/net/minecraft/server/level/ThreadedLevelLightEngine.java b/src/main/java/net/minecraft/server/level/ThreadedLevelLightEngine.java
index b4be02ec4bb77059f79d3e4d6a6f1ee4843a01f9..b3d9133a569c0257c3ad2728f023a883fa730fad 100644
index 76bd323f25d7c2f4e12dd13baa53995fa4f8b27a..6a4265fb1fd4bb2c032c0da6c71532d56409428f 100644
--- a/src/main/java/net/minecraft/server/level/ThreadedLevelLightEngine.java
+++ b/src/main/java/net/minecraft/server/level/ThreadedLevelLightEngine.java
@@ -97,10 +97,15 @@ public class ThreadedLevelLightEngine extends LevelLightEngine implements AutoCl
Expand Down Expand Up @@ -15388,9 +15388,9 @@ index b4be02ec4bb77059f79d3e4d6a6f1ee4843a01f9..b3d9133a569c0257c3ad2728f023a883
- private final Long2IntOpenHashMap chunksBeingWorkedOn = new Long2IntOpenHashMap();
+ //private final Long2IntOpenHashMap chunksBeingWorkedOn = new Long2IntOpenHashMap(); // Folia - region threading

private void queueTaskForSection(final int chunkX, final int chunkY, final int chunkZ, final Supplier<CompletableFuture<Void>> runnable) {
final ServerLevel world = (ServerLevel)this.theLightEngine.getWorld();
@@ -127,11 +132,16 @@ public class ThreadedLevelLightEngine extends LevelLightEngine implements AutoCl
private void queueTaskForSection(final int chunkX, final int chunkY, final int chunkZ,
final Supplier<io.papermc.paper.chunk.system.light.LightQueue.ChunkTasks> runnable) { // Paper - rewrite chunk system
@@ -128,11 +133,16 @@ public class ThreadedLevelLightEngine extends LevelLightEngine implements AutoCl
return;
}

Expand All @@ -15410,9 +15410,9 @@ index b4be02ec4bb77059f79d3e4d6a6f1ee4843a01f9..b3d9133a569c0257c3ad2728f023a883
return;
}

@@ -144,22 +154,28 @@ public class ThreadedLevelLightEngine extends LevelLightEngine implements AutoCl
return;
@@ -151,22 +161,28 @@ public class ThreadedLevelLightEngine extends LevelLightEngine implements AutoCl
}
updateFuture.isTicketAdded = true;

- final int references = this.chunksBeingWorkedOn.addTo(key, 1);
+ final int references = this.chunkMap.level.getCurrentWorldData().chunksBeingWorkedOn.addTo(key, 1); // Folia - region threading
Expand All @@ -15421,7 +15421,7 @@ index b4be02ec4bb77059f79d3e4d6a6f1ee4843a01f9..b3d9133a569c0257c3ad2728f023a883
world.getChunkSource().addRegionTicket(ca.spottedleaf.starlight.common.light.StarLightInterface.CHUNK_WORK_TICKET, pos, 0, pos);
}

- updateFuture.thenAcceptAsync((final Void ignore) -> {
- updateFuture.onComplete.thenAcceptAsync((final Void ignore) -> {
- final int newReferences = this.chunksBeingWorkedOn.get(key);
- if (newReferences == 1) {
- this.chunksBeingWorkedOn.remove(key);
Expand All @@ -15432,7 +15432,7 @@ index b4be02ec4bb77059f79d3e4d6a6f1ee4843a01f9..b3d9133a569c0257c3ad2728f023a883
- }
- }, world.getChunkSource().chunkMap.mainThreadExecutor).whenComplete((final Void ignore, final Throwable thr) -> {
+ // Folia start - region threading
+ updateFuture.thenAccept((final Void ignore) -> {
+ updateFuture.onComplete.thenAccept((final Void ignore) -> {
+ io.papermc.paper.threadedregions.RegionizedServer.getInstance().taskQueue.queueTickTaskQueue(
+ this.chunkMap.level, chunkX, chunkZ, () -> {
+ final int newReferences = this.chunkMap.level.getCurrentWorldData().chunksBeingWorkedOn.get(key);
Expand Down Expand Up @@ -17792,7 +17792,7 @@ index e8485fb900b25e911a858678a833852731cb2ace..71830b5fbeda3c7c63460c7cee05217d
public Entity.RemovalReason getRemovalReason() {
return this.removalReason;
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
index e11d7283662834047b2ff81a2fd25a4263792deb..40dd667bacd296a3a329391dc87a5713c464f4a2 100644
index 7763450e85146d43fcf84d380d0e7a8183d83747..50e1390f455cf8e6da9153760f32ccb81aa20bd1 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -276,6 +276,13 @@ public abstract class LivingEntity extends Entity implements Attackable {
Expand Down Expand Up @@ -18405,7 +18405,7 @@ index 18eaccb39a4c81338a8cbebe3de03934913ac2a4..34b3541603b8cca16c7d62f3981d7ce3
boolean flag = this.blockState.is(BlockTags.ANVIL);

diff --git a/src/main/java/net/minecraft/world/entity/item/ItemEntity.java b/src/main/java/net/minecraft/world/entity/item/ItemEntity.java
index 52196431a6538872755344859a0454a0e50c3b6e..76e010769786132d8af3889051b3f52e9f683509 100644
index d39f31e7cf315c7cdc1daab28164380e44dd8341..c213ef54c93b98837528c2d5ca45e6659cd43515 100644
--- a/src/main/java/net/minecraft/world/entity/item/ItemEntity.java
+++ b/src/main/java/net/minecraft/world/entity/item/ItemEntity.java
@@ -52,7 +52,7 @@ public class ItemEntity extends Entity implements TraceableEntity {
Expand Down Expand Up @@ -19645,7 +19645,7 @@ index 8f97c9df726ac20cfce7bdddd5dd4f8c5aa76c35..e8c4815960ab144298d4352f393b9670

static class CacheKey {
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
index f39ab10c5b0b8d86b579a5b683491204c51db70b..53b51bab52c8bf1becc98916e5a25f7860bb8874 100644
index 773bfdd3ed457a352b5329f280c0d10297d579ba..3a760887aa1469963c34886b38cdb51e91408cd3 100644
--- a/src/main/java/net/minecraft/world/level/Level.java
+++ b/src/main/java/net/minecraft/world/level/Level.java
@@ -117,10 +117,10 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
Expand Down Expand Up @@ -19779,7 +19779,7 @@ index f39ab10c5b0b8d86b579a5b683491204c51db70b..53b51bab52c8bf1becc98916e5a25f78
this.registryAccess = iregistrycustom;
this.damageSources = new DamageSources(iregistrycustom);
// CraftBukkit start
@@ -457,8 +474,8 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
@@ -541,8 +558,8 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
@Nullable
public final BlockState getBlockStateIfLoaded(BlockPos pos) {
// CraftBukkit start - tree generation
Expand All @@ -19790,7 +19790,7 @@ index f39ab10c5b0b8d86b579a5b683491204c51db70b..53b51bab52c8bf1becc98916e5a25f78
if (previous != null) {
return previous.getHandle();
}
@@ -520,16 +537,18 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
@@ -604,16 +621,18 @@ public abstract class Level implements LevelAccessor, AutoCloseable {

@Override
public boolean setBlock(BlockPos pos, BlockState state, int flags, int maxUpdateDepth) {
Expand All @@ -19812,7 +19812,7 @@ index f39ab10c5b0b8d86b579a5b683491204c51db70b..53b51bab52c8bf1becc98916e5a25f78
}
blockstate.setFlag(flags); // Paper - update the flag also
blockstate.setData(state);
@@ -546,10 +565,10 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
@@ -630,10 +649,10 @@ public abstract class Level implements LevelAccessor, AutoCloseable {

// CraftBukkit start - capture blockstates
boolean captured = false;
Expand All @@ -19825,7 +19825,7 @@ index f39ab10c5b0b8d86b579a5b683491204c51db70b..53b51bab52c8bf1becc98916e5a25f78
captured = true;
}
// CraftBukkit end
@@ -559,8 +578,8 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
@@ -643,8 +662,8 @@ public abstract class Level implements LevelAccessor, AutoCloseable {

if (iblockdata1 == null) {
// CraftBukkit start - remove blockstate if failed (or the same)
Expand All @@ -19836,7 +19836,7 @@ index f39ab10c5b0b8d86b579a5b683491204c51db70b..53b51bab52c8bf1becc98916e5a25f78
}
// CraftBukkit end
return false;
@@ -597,7 +616,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
@@ -681,7 +700,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
*/

// CraftBukkit start
Expand All @@ -19845,7 +19845,7 @@ index f39ab10c5b0b8d86b579a5b683491204c51db70b..53b51bab52c8bf1becc98916e5a25f78
// Modularize client and physic updates
// Spigot start
try {
@@ -647,7 +666,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
@@ -731,7 +750,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
iblockdata1.updateIndirectNeighbourShapes(this, blockposition, k, j - 1); // Don't call an event for the old block to limit event spam
CraftWorld world = ((ServerLevel) this).getWorld();
boolean cancelledUpdates = false; // Paper
Expand All @@ -19854,7 +19854,7 @@ index f39ab10c5b0b8d86b579a5b683491204c51db70b..53b51bab52c8bf1becc98916e5a25f78
BlockPhysicsEvent event = new BlockPhysicsEvent(world.getBlockAt(blockposition.getX(), blockposition.getY(), blockposition.getZ()), CraftBlockData.fromData(iblockdata));
this.getCraftServer().getPluginManager().callEvent(event);

@@ -661,7 +680,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
@@ -745,7 +764,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
}

// CraftBukkit start - SPIGOT-5710
Expand All @@ -19863,7 +19863,7 @@ index f39ab10c5b0b8d86b579a5b683491204c51db70b..53b51bab52c8bf1becc98916e5a25f78
this.onBlockStateChange(blockposition, iblockdata1, iblockdata2);
}
// CraftBukkit end
@@ -740,7 +759,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
@@ -824,7 +843,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {

@Override
public void neighborShapeChanged(Direction direction, BlockState neighborState, BlockPos pos, BlockPos neighborPos, int flags, int maxUpdateDepth) {
Expand All @@ -19872,7 +19872,7 @@ index f39ab10c5b0b8d86b579a5b683491204c51db70b..53b51bab52c8bf1becc98916e5a25f78
}

@Override
@@ -765,11 +784,34 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
@@ -849,11 +868,34 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
return this.getChunkSource().getLightEngine();
}

Expand Down Expand Up @@ -19909,7 +19909,7 @@ index f39ab10c5b0b8d86b579a5b683491204c51db70b..53b51bab52c8bf1becc98916e5a25f78
if (previous != null) {
return previous.getHandle();
}
@@ -860,7 +902,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
@@ -944,7 +986,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
}

public void addBlockEntityTicker(TickingBlockEntity ticker) {
Expand All @@ -19918,7 +19918,7 @@ index f39ab10c5b0b8d86b579a5b683491204c51db70b..53b51bab52c8bf1becc98916e5a25f78
}

protected void tickBlockEntities() {
@@ -868,11 +910,10 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
@@ -952,11 +994,10 @@ public abstract class Level implements LevelAccessor, AutoCloseable {

gameprofilerfiller.push("blockEntities");
timings.tileEntityPending.startTiming(); // Spigot
Expand All @@ -19934,7 +19934,7 @@ index f39ab10c5b0b8d86b579a5b683491204c51db70b..53b51bab52c8bf1becc98916e5a25f78
timings.tileEntityPending.stopTiming(); // Spigot

timings.tileEntityTick.startTiming(); // Spigot
@@ -881,9 +922,8 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
@@ -965,9 +1006,8 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
int tilesThisCycle = 0;
var toRemove = new it.unimi.dsi.fastutil.objects.ObjectOpenCustomHashSet<TickingBlockEntity>(net.minecraft.Util.identityStrategy()); // Paper - use removeAll
toRemove.add(null);
Expand All @@ -19946,7 +19946,7 @@ index f39ab10c5b0b8d86b579a5b683491204c51db70b..53b51bab52c8bf1becc98916e5a25f78
// Spigot start
if (tickingblockentity == null) {
this.getCraftServer().getLogger().severe("Spigot has detected a null entity and has removed it, preventing a crash");
@@ -900,19 +940,19 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
@@ -984,19 +1024,19 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
} else if (this.shouldTickBlocksAt(tickingblockentity.getPos())) {
tickingblockentity.tick();
// Paper start - execute chunk tasks during tick
Expand All @@ -19971,7 +19971,7 @@ index f39ab10c5b0b8d86b579a5b683491204c51db70b..53b51bab52c8bf1becc98916e5a25f78
}

public <T extends Entity> void guardEntityTick(Consumer<T> tickConsumer, T entity) {
@@ -925,7 +965,8 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
@@ -1009,7 +1049,8 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
final String msg = String.format("Entity threw exception at %s:%s,%s,%s", entity.level().getWorld().getName(), entity.getX(), entity.getY(), entity.getZ());
MinecraftServer.LOGGER.error(msg, throwable);
getCraftServer().getPluginManager().callEvent(new ServerExceptionEvent(new ServerInternalException(msg, throwable)));
Expand All @@ -19981,7 +19981,7 @@ index f39ab10c5b0b8d86b579a5b683491204c51db70b..53b51bab52c8bf1becc98916e5a25f78
// Paper end
}
}
@@ -1008,9 +1049,14 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
@@ -1092,9 +1133,14 @@ public abstract class Level implements LevelAccessor, AutoCloseable {

@Nullable
public BlockEntity getBlockEntity(BlockPos blockposition, boolean validate) {
Expand All @@ -19997,7 +19997,7 @@ index f39ab10c5b0b8d86b579a5b683491204c51db70b..53b51bab52c8bf1becc98916e5a25f78
return blockEntity;
}
// Paper end
@@ -1023,8 +1069,8 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
@@ -1107,8 +1153,8 @@ public abstract class Level implements LevelAccessor, AutoCloseable {

if (!this.isOutsideBuildHeight(blockposition)) {
// CraftBukkit start
Expand All @@ -20008,23 +20008,23 @@ index f39ab10c5b0b8d86b579a5b683491204c51db70b..53b51bab52c8bf1becc98916e5a25f78
return;
}
// CraftBukkit end
@@ -1104,6 +1150,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
@@ -1188,6 +1234,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {

@Override
public List<Entity> getEntities(@Nullable Entity except, AABB box, Predicate<? super Entity> predicate) {
+ io.papermc.paper.util.TickThread.ensureTickThread((ServerLevel)this, box, "Cannot getEntities asynchronously"); // Folia - region threading
this.getProfiler().incrementCounter("getEntities");
List<Entity> list = Lists.newArrayList();
((ServerLevel)this).getEntityLookup().getEntities(except, box, list, predicate); // Paper - optimise this call
@@ -1123,6 +1170,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
@@ -1207,6 +1254,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
}

public <T extends Entity> void getEntities(EntityTypeTest<Entity, T> filter, AABB box, Predicate<? super T> predicate, List<? super T> result, int limit) {
+ io.papermc.paper.util.TickThread.ensureTickThread((ServerLevel)this, box, "Cannot getEntities asynchronously"); // Folia - region threading
this.getProfiler().incrementCounter("getEntities");
// Paper start - optimise this call
//TODO use limit
@@ -1160,13 +1208,30 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
@@ -1244,13 +1292,30 @@ public abstract class Level implements LevelAccessor, AutoCloseable {

public void disconnect() {}

Expand Down Expand Up @@ -20057,7 +20057,7 @@ index f39ab10c5b0b8d86b579a5b683491204c51db70b..53b51bab52c8bf1becc98916e5a25f78

public boolean mayInteract(Player player, BlockPos pos) {
return true;
@@ -1368,8 +1433,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
@@ -1452,8 +1517,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
}
public final BlockPos.MutableBlockPos getRandomBlockPosition(int x, int y, int z, int l, BlockPos.MutableBlockPos out) {
// Paper end
Expand All @@ -20067,7 +20067,7 @@ index f39ab10c5b0b8d86b579a5b683491204c51db70b..53b51bab52c8bf1becc98916e5a25f78

out.set(x + (i1 & 15), y + (i1 >> 16 & l), z + (i1 >> 8 & 15)); // Paper - change to setValues call
return out; // Paper
@@ -1400,7 +1464,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
@@ -1484,7 +1548,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {

@Override
public long nextSubTickCount() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1569,7 +1569,7 @@ index dbb435ec7a930c3b410fc4311f7eb0a4d2faa987..61f7630d2160411f35cc3ca33def30b9
}

diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
index f0ce29d21fe9af803ce4e41b8c037b2ec5d1b124..ab53eab269b204a59b2c9a9bef4f6cf4098e0dfd 100644
index b25f5931f836fd4d8695120f0bcb7c52deff8583..d2ab898c0f3902f5f0f9847232dac244b4095854 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
@@ -417,6 +417,13 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,10 @@ add explicit block update suppression techniques, it's better
than the server crashing.

diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
index 53b51bab52c8bf1becc98916e5a25f7860bb8874..4338b948a53d32cac5c780cbd43c6ca1cc5d11e5 100644
index 3a760887aa1469963c34886b38cdb51e91408cd3..916df0c8d263f90e04564c5f512fd5ed5eaaa6d5 100644
--- a/src/main/java/net/minecraft/world/level/Level.java
+++ b/src/main/java/net/minecraft/world/level/Level.java
@@ -1345,7 +1345,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
@@ -1429,7 +1429,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
Direction enumdirection = (Direction) iterator.next();
BlockPos blockposition1 = pos.relative(enumdirection);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ index 587934b8e96a3d8b8a57cda8730eb331aa63ef65..7cb6a0b99c8e51f7f767b704071473c5

// CraftBukkit start
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
index 40dd667bacd296a3a329391dc87a5713c464f4a2..f636bdf1075fa784ce7ee25478d4d94bacb05677 100644
index 50e1390f455cf8e6da9153760f32ccb81aa20bd1..17d6349ccdbb6ac91b2705be0b855e768423c50a 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -4280,6 +4280,11 @@ public abstract class LivingEntity extends Entity implements Attackable {
Expand Down

0 comments on commit edafbce

Please sign in to comment.