mirror of
https://github.com/PaperMC/Folia.git
synced 2025-04-23 04:39:19 +08:00
Resolve notes
This commit is contained in:
parent
838465ab24
commit
b1da93e90b
@ -49,7 +49,7 @@
|
|||||||
dependencies {
|
dependencies {
|
||||||
- implementation(project(":paper-api"))
|
- implementation(project(":paper-api"))
|
||||||
+ implementation(project(":folia-api"))
|
+ implementation(project(":folia-api"))
|
||||||
implementation("ca.spottedleaf:concurrentutil:0.0.2")
|
implementation("ca.spottedleaf:concurrentutil:0.0.3")
|
||||||
implementation("org.jline:jline-terminal-ffm:3.27.1") // use ffm on java 22+
|
implementation("org.jline:jline-terminal-ffm:3.27.1") // use ffm on java 22+
|
||||||
implementation("org.jline:jline-terminal-jni:3.27.1") // fall back to jni on java 21
|
implementation("org.jline:jline-terminal-jni:3.27.1") // fall back to jni on java 21
|
||||||
@@ -192,14 +_,14 @@
|
@@ -192,14 +_,14 @@
|
||||||
|
@ -6,6 +6,28 @@ Subject: [PATCH] Threaded Regions
|
|||||||
See https://docs.papermc.io/folia/reference/overview and
|
See https://docs.papermc.io/folia/reference/overview and
|
||||||
https://docs.papermc.io/folia/reference/region-logic
|
https://docs.papermc.io/folia/reference/region-logic
|
||||||
|
|
||||||
|
diff --git a/ca/spottedleaf/moonrise/paper/PaperHooks.java b/ca/spottedleaf/moonrise/paper/PaperHooks.java
|
||||||
|
index 4d344559a20a0c35c181e297e81788c747363ec9..e799155d2ccbfe9dd3e5a87c6b6c28278e9accce 100644
|
||||||
|
--- a/ca/spottedleaf/moonrise/paper/PaperHooks.java
|
||||||
|
+++ b/ca/spottedleaf/moonrise/paper/PaperHooks.java
|
||||||
|
@@ -105,7 +105,7 @@ public final class PaperHooks extends BaseChunkSystemHooks implements PlatformHo
|
||||||
|
}
|
||||||
|
|
||||||
|
for (final EnderDragonPart part : parts) {
|
||||||
|
- if (part != entity && part.getBoundingBox().intersects(boundingBox) && (predicate == null || predicate.test(part))) {
|
||||||
|
+ if (part != entity && part.getBoundingBox().intersects(boundingBox) && ca.spottedleaf.moonrise.common.util.TickThread.isTickThreadFor(part) && (predicate == null || predicate.test(part))) { // Folia - region threading
|
||||||
|
into.add(part);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@@ -127,7 +127,7 @@ public final class PaperHooks extends BaseChunkSystemHooks implements PlatformHo
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
final T casted = (T)entityTypeTest.tryCast(part);
|
||||||
|
- if (casted != null && (predicate == null || predicate.test(casted))) {
|
||||||
|
+ if (casted != null && ca.spottedleaf.moonrise.common.util.TickThread.isTickThreadFor(part) && (predicate == null || predicate.test(casted))) { // Folia - region threading
|
||||||
|
into.add(casted);
|
||||||
|
if (into.size() >= maxCount) {
|
||||||
|
break;
|
||||||
diff --git a/ca/spottedleaf/moonrise/paper/util/BaseChunkSystemHooks.java b/ca/spottedleaf/moonrise/paper/util/BaseChunkSystemHooks.java
|
diff --git a/ca/spottedleaf/moonrise/paper/util/BaseChunkSystemHooks.java b/ca/spottedleaf/moonrise/paper/util/BaseChunkSystemHooks.java
|
||||||
index ece1261b67033e946dfc20a96872708755bffe0a..58986c62c485cae379180ba95ba0ea60145ef73f 100644
|
index ece1261b67033e946dfc20a96872708755bffe0a..58986c62c485cae379180ba95ba0ea60145ef73f 100644
|
||||||
--- a/ca/spottedleaf/moonrise/paper/util/BaseChunkSystemHooks.java
|
--- a/ca/spottedleaf/moonrise/paper/util/BaseChunkSystemHooks.java
|
||||||
@ -10951,7 +10973,7 @@ index 794770985c261fd56806188237921b5ec5e548e6..b715d1fbde9db81a2515249bb9a0fc7a
|
|||||||
list.add(player);
|
list.add(player);
|
||||||
}
|
}
|
||||||
diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java
|
diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java
|
||||||
index ebeeb63c3dca505a3ce8b88feaa5d2ca20ec24a2..c09099070117483054f438b2bb77ff48a81610f0 100644
|
index ebeeb63c3dca505a3ce8b88feaa5d2ca20ec24a2..49a385261deef774575dfd7a5b259d8ed31ed91a 100644
|
||||||
--- a/net/minecraft/server/level/ServerLevel.java
|
--- a/net/minecraft/server/level/ServerLevel.java
|
||||||
+++ b/net/minecraft/server/level/ServerLevel.java
|
+++ b/net/minecraft/server/level/ServerLevel.java
|
||||||
@@ -179,42 +179,40 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
@@ -179,42 +179,40 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
||||||
@ -10991,7 +11013,8 @@ index ebeeb63c3dca505a3ce8b88feaa5d2ca20ec24a2..c09099070117483054f438b2bb77ff48
|
|||||||
private final List<CustomSpawner> customSpawners;
|
private final List<CustomSpawner> customSpawners;
|
||||||
@Nullable
|
@Nullable
|
||||||
private EndDragonFight dragonFight;
|
private EndDragonFight dragonFight;
|
||||||
final Int2ObjectMap<EnderDragonPart> dragonParts = new Int2ObjectOpenHashMap<>();
|
- final Int2ObjectMap<EnderDragonPart> dragonParts = new Int2ObjectOpenHashMap<>();
|
||||||
|
+ final ca.spottedleaf.concurrentutil.map.ConcurrentLong2ReferenceChainedHashTable<net.minecraft.world.entity.boss.EnderDragonPart> dragonParts = new ca.spottedleaf.concurrentutil.map.ConcurrentLong2ReferenceChainedHashTable<>(); // Folia - region threading
|
||||||
private final StructureManager structureManager;
|
private final StructureManager structureManager;
|
||||||
private final StructureCheck structureCheck;
|
private final StructureCheck structureCheck;
|
||||||
- private final boolean tickTime;
|
- private final boolean tickTime;
|
||||||
@ -11788,23 +11811,22 @@ index ebeeb63c3dca505a3ce8b88feaa5d2ca20ec24a2..c09099070117483054f438b2bb77ff48
|
|||||||
}
|
}
|
||||||
public <T extends ParticleOptions> int sendParticlesSource(
|
public <T extends ParticleOptions> int sendParticlesSource(
|
||||||
List<ServerPlayer> receivers,
|
List<ServerPlayer> receivers,
|
||||||
@@ -2045,7 +2127,14 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
@@ -2045,12 +2127,12 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
||||||
@Nullable
|
@Nullable
|
||||||
public Entity getEntityOrPart(int id) {
|
public Entity getEntityOrPart(int id) {
|
||||||
Entity entity = this.getEntities().get(id);
|
Entity entity = this.getEntities().get(id);
|
||||||
- return entity != null ? entity : this.dragonParts.get(id);
|
- return entity != null ? entity : this.dragonParts.get(id);
|
||||||
+ // Folia start - region threading
|
+ return entity != null ? entity : this.dragonParts.get((long)id); // Folia - diff on change
|
||||||
+ if (entity != null) {
|
|
||||||
+ return entity;
|
|
||||||
+ }
|
|
||||||
+ synchronized (this.dragonParts) {
|
|
||||||
+ return this.dragonParts.get(id);
|
|
||||||
+ }
|
|
||||||
+ // Folia end - region threading
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -2105,6 +2194,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
public Collection<EnderDragonPart> dragonParts() {
|
||||||
|
- return this.dragonParts.values();
|
||||||
|
+ return this.dragonParts.values(); // Folia - diff on change
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
@@ -2105,6 +2187,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
||||||
// Paper start - Call missing map initialize event and set id
|
// Paper start - Call missing map initialize event and set id
|
||||||
final DimensionDataStorage storage = this.getServer().overworld().getDataStorage();
|
final DimensionDataStorage storage = this.getServer().overworld().getDataStorage();
|
||||||
|
|
||||||
@ -11812,7 +11834,7 @@ index ebeeb63c3dca505a3ce8b88feaa5d2ca20ec24a2..c09099070117483054f438b2bb77ff48
|
|||||||
final Optional<net.minecraft.world.level.saveddata.SavedData> cacheEntry = storage.cache.get(mapId.key());
|
final Optional<net.minecraft.world.level.saveddata.SavedData> cacheEntry = storage.cache.get(mapId.key());
|
||||||
if (cacheEntry == null) { // Cache did not contain, try to load and may init
|
if (cacheEntry == null) { // Cache did not contain, try to load and may init
|
||||||
final MapItemSavedData mapData = storage.get(MapItemSavedData.factory(), mapId.key()); // get populates the cache
|
final MapItemSavedData mapData = storage.get(MapItemSavedData.factory(), mapId.key()); // get populates the cache
|
||||||
@@ -2124,6 +2214,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
@@ -2124,6 +2207,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
@ -11820,7 +11842,7 @@ index ebeeb63c3dca505a3ce8b88feaa5d2ca20ec24a2..c09099070117483054f438b2bb77ff48
|
|||||||
// Paper end - Call missing map initialize event and set id
|
// Paper end - Call missing map initialize event and set id
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2178,6 +2269,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
@@ -2178,6 +2262,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean setChunkForced(int chunkX, int chunkZ, boolean add) {
|
public boolean setChunkForced(int chunkX, int chunkZ, boolean add) {
|
||||||
@ -11828,7 +11850,7 @@ index ebeeb63c3dca505a3ce8b88feaa5d2ca20ec24a2..c09099070117483054f438b2bb77ff48
|
|||||||
ForcedChunksSavedData forcedChunksSavedData = this.getDataStorage().computeIfAbsent(ForcedChunksSavedData.factory(), "chunks");
|
ForcedChunksSavedData forcedChunksSavedData = this.getDataStorage().computeIfAbsent(ForcedChunksSavedData.factory(), "chunks");
|
||||||
ChunkPos chunkPos = new ChunkPos(chunkX, chunkZ);
|
ChunkPos chunkPos = new ChunkPos(chunkX, chunkZ);
|
||||||
long packedChunkPos = chunkPos.toLong();
|
long packedChunkPos = chunkPos.toLong();
|
||||||
@@ -2185,7 +2277,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
@@ -2185,7 +2270,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
||||||
if (add) {
|
if (add) {
|
||||||
flag = forcedChunksSavedData.getChunks().add(packedChunkPos);
|
flag = forcedChunksSavedData.getChunks().add(packedChunkPos);
|
||||||
if (flag) {
|
if (flag) {
|
||||||
@ -11837,7 +11859,7 @@ index ebeeb63c3dca505a3ce8b88feaa5d2ca20ec24a2..c09099070117483054f438b2bb77ff48
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
flag = forcedChunksSavedData.getChunks().remove(packedChunkPos);
|
flag = forcedChunksSavedData.getChunks().remove(packedChunkPos);
|
||||||
@@ -2210,11 +2302,24 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
@@ -2210,11 +2295,24 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
||||||
Optional<Holder<PoiType>> optional1 = PoiTypes.forState(newState);
|
Optional<Holder<PoiType>> optional1 = PoiTypes.forState(newState);
|
||||||
if (!Objects.equals(optional, optional1)) {
|
if (!Objects.equals(optional, optional1)) {
|
||||||
BlockPos blockPos = pos.immutable();
|
BlockPos blockPos = pos.immutable();
|
||||||
@ -11865,7 +11887,7 @@ index ebeeb63c3dca505a3ce8b88feaa5d2ca20ec24a2..c09099070117483054f438b2bb77ff48
|
|||||||
// Paper start - Remove stale POIs
|
// Paper start - Remove stale POIs
|
||||||
if (optional.isEmpty() && this.getPoiManager().exists(blockPos, ignored -> true)) {
|
if (optional.isEmpty() && this.getPoiManager().exists(blockPos, ignored -> true)) {
|
||||||
this.getPoiManager().remove(blockPos);
|
this.getPoiManager().remove(blockPos);
|
||||||
@@ -2222,7 +2327,15 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
@@ -2222,7 +2320,15 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
||||||
// Paper end - Remove stale POIs
|
// Paper end - Remove stale POIs
|
||||||
this.getPoiManager().add(blockPos, (Holder<PoiType>)poiType);
|
this.getPoiManager().add(blockPos, (Holder<PoiType>)poiType);
|
||||||
DebugPackets.sendPoiAddedPacket(this, blockPos);
|
DebugPackets.sendPoiAddedPacket(this, blockPos);
|
||||||
@ -11882,7 +11904,7 @@ index ebeeb63c3dca505a3ce8b88feaa5d2ca20ec24a2..c09099070117483054f438b2bb77ff48
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2276,7 +2389,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
@@ -2276,7 +2382,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
||||||
}
|
}
|
||||||
|
|
||||||
bufferedWriter.write(String.format(Locale.ROOT, "entities: %s\n", this.moonrise$getEntityLookup().getDebugInfo())); // Paper - rewrite chunk system
|
bufferedWriter.write(String.format(Locale.ROOT, "entities: %s\n", this.moonrise$getEntityLookup().getDebugInfo())); // Paper - rewrite chunk system
|
||||||
@ -11891,7 +11913,7 @@ index ebeeb63c3dca505a3ce8b88feaa5d2ca20ec24a2..c09099070117483054f438b2bb77ff48
|
|||||||
bufferedWriter.write(String.format(Locale.ROOT, "block_ticks: %d\n", this.getBlockTicks().count()));
|
bufferedWriter.write(String.format(Locale.ROOT, "block_ticks: %d\n", this.getBlockTicks().count()));
|
||||||
bufferedWriter.write(String.format(Locale.ROOT, "fluid_ticks: %d\n", this.getFluidTicks().count()));
|
bufferedWriter.write(String.format(Locale.ROOT, "fluid_ticks: %d\n", this.getFluidTicks().count()));
|
||||||
bufferedWriter.write("distance_manager: " + chunkMap.getDistanceManager().getDebugStatus() + "\n");
|
bufferedWriter.write("distance_manager: " + chunkMap.getDistanceManager().getDebugStatus() + "\n");
|
||||||
@@ -2346,7 +2459,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
@@ -2346,7 +2452,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
||||||
private void dumpBlockEntityTickers(Writer output) throws IOException {
|
private void dumpBlockEntityTickers(Writer output) throws IOException {
|
||||||
CsvOutput csvOutput = CsvOutput.builder().addColumn("x").addColumn("y").addColumn("z").addColumn("type").build(output);
|
CsvOutput csvOutput = CsvOutput.builder().addColumn("x").addColumn("y").addColumn("z").addColumn("type").build(output);
|
||||||
|
|
||||||
@ -11900,7 +11922,7 @@ index ebeeb63c3dca505a3ce8b88feaa5d2ca20ec24a2..c09099070117483054f438b2bb77ff48
|
|||||||
BlockPos pos = tickingBlockEntity.getPos();
|
BlockPos pos = tickingBlockEntity.getPos();
|
||||||
csvOutput.writeRow(pos.getX(), pos.getY(), pos.getZ(), tickingBlockEntity.getType());
|
csvOutput.writeRow(pos.getX(), pos.getY(), pos.getZ(), tickingBlockEntity.getType());
|
||||||
}
|
}
|
||||||
@@ -2354,14 +2467,14 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
@@ -2354,14 +2460,14 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
public void clearBlockEvents(BoundingBox boundingBox) {
|
public void clearBlockEvents(BoundingBox boundingBox) {
|
||||||
@ -11917,7 +11939,7 @@ index ebeeb63c3dca505a3ce8b88feaa5d2ca20ec24a2..c09099070117483054f438b2bb77ff48
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// CraftBukkit end
|
// CraftBukkit end
|
||||||
@@ -2410,8 +2523,8 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
@@ -2410,8 +2516,8 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
||||||
this.players.size(),
|
this.players.size(),
|
||||||
this.moonrise$getEntityLookup().getDebugInfo(), // Paper - rewrite chunk system
|
this.moonrise$getEntityLookup().getDebugInfo(), // Paper - rewrite chunk system
|
||||||
getTypeCount(this.moonrise$getEntityLookup().getAll(), entity -> BuiltInRegistries.ENTITY_TYPE.getKey(entity.getType()).toString()), // Paper - rewrite chunk system
|
getTypeCount(this.moonrise$getEntityLookup().getAll(), entity -> BuiltInRegistries.ENTITY_TYPE.getKey(entity.getType()).toString()), // Paper - rewrite chunk system
|
||||||
@ -11928,7 +11950,7 @@ index ebeeb63c3dca505a3ce8b88feaa5d2ca20ec24a2..c09099070117483054f438b2bb77ff48
|
|||||||
this.getBlockTicks().count(),
|
this.getBlockTicks().count(),
|
||||||
this.getFluidTicks().count(),
|
this.getFluidTicks().count(),
|
||||||
this.gatherChunkSourceStats()
|
this.gatherChunkSourceStats()
|
||||||
@@ -2463,15 +2576,15 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
@@ -2463,15 +2569,15 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
||||||
}
|
}
|
||||||
|
|
||||||
public void startTickingChunk(LevelChunk chunk) {
|
public void startTickingChunk(LevelChunk chunk) {
|
||||||
@ -11947,7 +11969,7 @@ index ebeeb63c3dca505a3ce8b88feaa5d2ca20ec24a2..c09099070117483054f438b2bb77ff48
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -2489,7 +2602,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
@@ -2489,7 +2595,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
||||||
return this.moonrise$getAnyChunkIfLoaded(ca.spottedleaf.moonrise.common.util.CoordinateUtils.getChunkX(chunkPos), ca.spottedleaf.moonrise.common.util.CoordinateUtils.getChunkZ(chunkPos)) != null; // Paper - rewrite chunk system
|
return this.moonrise$getAnyChunkIfLoaded(ca.spottedleaf.moonrise.common.util.CoordinateUtils.getChunkX(chunkPos), ca.spottedleaf.moonrise.common.util.CoordinateUtils.getChunkZ(chunkPos)) != null; // Paper - rewrite chunk system
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -11956,7 +11978,7 @@ index ebeeb63c3dca505a3ce8b88feaa5d2ca20ec24a2..c09099070117483054f438b2bb77ff48
|
|||||||
// Paper start - rewrite chunk system
|
// Paper start - rewrite chunk system
|
||||||
final ca.spottedleaf.moonrise.patches.chunk_system.scheduling.NewChunkHolder chunkHolder = this.moonrise$getChunkTaskScheduler().chunkHolderManager.getChunkHolder(chunkPos);
|
final ca.spottedleaf.moonrise.patches.chunk_system.scheduling.NewChunkHolder chunkHolder = this.moonrise$getChunkTaskScheduler().chunkHolderManager.getChunkHolder(chunkPos);
|
||||||
// isTicking implies the chunk is loaded, and the chunk is loaded now implies the entities are loaded
|
// isTicking implies the chunk is loaded, and the chunk is loaded now implies the entities are loaded
|
||||||
@@ -2581,7 +2694,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
@@ -2581,7 +2687,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
||||||
// Paper start - optimize redstone (Alternate Current)
|
// Paper start - optimize redstone (Alternate Current)
|
||||||
@Override
|
@Override
|
||||||
public alternate.current.wire.WireHandler getWireHandler() {
|
public alternate.current.wire.WireHandler getWireHandler() {
|
||||||
@ -11965,7 +11987,7 @@ index ebeeb63c3dca505a3ce8b88feaa5d2ca20ec24a2..c09099070117483054f438b2bb77ff48
|
|||||||
}
|
}
|
||||||
// Paper end - optimize redstone (Alternate Current)
|
// Paper end - optimize redstone (Alternate Current)
|
||||||
|
|
||||||
@@ -2592,18 +2705,18 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
@@ -2592,18 +2698,18 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDestroyed(Entity entity) {
|
public void onDestroyed(Entity entity) {
|
||||||
@ -11987,7 +12009,7 @@ index ebeeb63c3dca505a3ce8b88feaa5d2ca20ec24a2..c09099070117483054f438b2bb77ff48
|
|||||||
// Paper start - Reset pearls when they stop being ticked
|
// Paper start - Reset pearls when they stop being ticked
|
||||||
if (ServerLevel.this.paperConfig().fixes.disableUnloadedChunkEnderpearlExploit && ServerLevel.this.paperConfig().misc.legacyEnderPearlBehavior && entity instanceof net.minecraft.world.entity.projectile.ThrownEnderpearl pearl) {
|
if (ServerLevel.this.paperConfig().fixes.disableUnloadedChunkEnderpearlExploit && ServerLevel.this.paperConfig().misc.legacyEnderPearlBehavior && entity instanceof net.minecraft.world.entity.projectile.ThrownEnderpearl pearl) {
|
||||||
pearl.cachedOwner = null;
|
pearl.cachedOwner = null;
|
||||||
@@ -2615,6 +2728,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
@@ -2615,6 +2721,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
||||||
@Override
|
@Override
|
||||||
public void onTrackingStart(Entity entity) {
|
public void onTrackingStart(Entity entity) {
|
||||||
org.spigotmc.AsyncCatcher.catchOp("entity register"); // Spigot
|
org.spigotmc.AsyncCatcher.catchOp("entity register"); // Spigot
|
||||||
@ -11995,7 +12017,7 @@ index ebeeb63c3dca505a3ce8b88feaa5d2ca20ec24a2..c09099070117483054f438b2bb77ff48
|
|||||||
// ServerLevel.this.getChunkSource().addEntity(entity); // Paper - ignore and warn about illegal addEntity calls instead of crashing server; moved down below valid=true
|
// ServerLevel.this.getChunkSource().addEntity(entity); // Paper - ignore and warn about illegal addEntity calls instead of crashing server; moved down below valid=true
|
||||||
if (entity instanceof ServerPlayer serverPlayer) {
|
if (entity instanceof ServerPlayer serverPlayer) {
|
||||||
ServerLevel.this.players.add(serverPlayer);
|
ServerLevel.this.players.add(serverPlayer);
|
||||||
@@ -2629,12 +2743,14 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
@@ -2629,12 +2736,12 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -12005,13 +12027,12 @@ index ebeeb63c3dca505a3ce8b88feaa5d2ca20ec24a2..c09099070117483054f438b2bb77ff48
|
|||||||
|
|
||||||
if (entity instanceof EnderDragon enderDragon) {
|
if (entity instanceof EnderDragon enderDragon) {
|
||||||
for (EnderDragonPart enderDragonPart : enderDragon.getSubEntities()) {
|
for (EnderDragonPart enderDragonPart : enderDragon.getSubEntities()) {
|
||||||
+ synchronized (ServerLevel.this.dragonParts) { // Folia - region threading
|
- ServerLevel.this.dragonParts.put(enderDragonPart.getId(), enderDragonPart);
|
||||||
ServerLevel.this.dragonParts.put(enderDragonPart.getId(), enderDragonPart);
|
+ ServerLevel.this.dragonParts.put((long)enderDragonPart.getId(), enderDragonPart); // Folia - diff on change
|
||||||
+ } // Folia - region threading
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2657,18 +2773,27 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
@@ -2657,18 +2764,27 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
||||||
@Override
|
@Override
|
||||||
public void onTrackingEnd(Entity entity) {
|
public void onTrackingEnd(Entity entity) {
|
||||||
org.spigotmc.AsyncCatcher.catchOp("entity unregister"); // Spigot
|
org.spigotmc.AsyncCatcher.catchOp("entity unregister"); // Spigot
|
||||||
@ -12040,7 +12061,7 @@ index ebeeb63c3dca505a3ce8b88feaa5d2ca20ec24a2..c09099070117483054f438b2bb77ff48
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2699,18 +2824,21 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
@@ -2699,18 +2815,19 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -12050,9 +12071,8 @@ index ebeeb63c3dca505a3ce8b88feaa5d2ca20ec24a2..c09099070117483054f438b2bb77ff48
|
|||||||
|
|
||||||
if (entity instanceof EnderDragon enderDragon) {
|
if (entity instanceof EnderDragon enderDragon) {
|
||||||
for (EnderDragonPart enderDragonPart : enderDragon.getSubEntities()) {
|
for (EnderDragonPart enderDragonPart : enderDragon.getSubEntities()) {
|
||||||
+ synchronized (ServerLevel.this.dragonParts) { // Folia - region threading
|
- ServerLevel.this.dragonParts.remove(enderDragonPart.getId());
|
||||||
ServerLevel.this.dragonParts.remove(enderDragonPart.getId());
|
+ ServerLevel.this.dragonParts.remove((long)enderDragonPart.getId()); // Folia - diff on change
|
||||||
+ } // Folia - region threading
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -12063,7 +12083,7 @@ index ebeeb63c3dca505a3ce8b88feaa5d2ca20ec24a2..c09099070117483054f438b2bb77ff48
|
|||||||
if (!(entity instanceof ServerPlayer)) {
|
if (!(entity instanceof ServerPlayer)) {
|
||||||
for (ServerPlayer player : ServerLevel.this.server.getPlayerList().players) { // Paper - call onEntityRemove for all online players
|
for (ServerPlayer player : ServerLevel.this.server.getPlayerList().players) { // Paper - call onEntityRemove for all online players
|
||||||
player.getBukkitEntity().onEntityRemove(entity);
|
player.getBukkitEntity().onEntityRemove(entity);
|
||||||
@@ -2738,11 +2866,11 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
@@ -2738,11 +2855,11 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
||||||
private long lagCompensationTick = MinecraftServer.SERVER_INIT;
|
private long lagCompensationTick = MinecraftServer.SERVER_INIT;
|
||||||
|
|
||||||
public long getLagCompensationTick() {
|
public long getLagCompensationTick() {
|
||||||
|
@ -2,7 +2,7 @@ group=dev.folia
|
|||||||
version=1.21.4-R0.1-SNAPSHOT
|
version=1.21.4-R0.1-SNAPSHOT
|
||||||
mcVersion=1.21.4
|
mcVersion=1.21.4
|
||||||
|
|
||||||
paperRef=3d9ecc4e085d9cfb6c97fd7efe877b3468c6b4fb
|
paperRef=3ad3fbc19ad6a85a7a992f907e3e5f98cad85b68
|
||||||
|
|
||||||
org.gradle.configuration-cache=true
|
org.gradle.configuration-cache=true
|
||||||
org.gradle.caching=true
|
org.gradle.caching=true
|
||||||
|
Loading…
x
Reference in New Issue
Block a user