9
0
mirror of https://github.com/SparklyPower/SparklyPaper.git synced 2025-12-19 23:19:22 +00:00

Updated Upstream (Paper)

This commit is contained in:
MrPowerGamerBR
2024-06-19 14:32:14 -03:00
parent 7e8ba65131
commit db48dbd9a9
4 changed files with 29 additions and 37 deletions

View File

@@ -2,7 +2,7 @@ group=net.sparklypower.sparklypaper
version=1.21-R0.1-SNAPSHOT version=1.21-R0.1-SNAPSHOT
mcVersion=1.21 mcVersion=1.21
paperRef=d23825aa56dbe22140b4191e41ae4cf8f7188ebd paperRef=c0268ca86eeb5ca767e5e2860aa2d936e5e7fc4f
org.gradle.caching=true org.gradle.caching=true
org.gradle.parallel=true org.gradle.parallel=true

View File

@@ -73,7 +73,7 @@ index 62484ebf4550b05182f693a3180bbac5d5fd906d..67800e426445060a8343e27a7452b8d7
throw new IllegalStateException("Ticking retired scheduler"); throw new IllegalStateException("Ticking retired scheduler");
} }
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index eb0a740f884fde081cabaec5a61c9b642a85a1b4..30dfcd4f9379754a3c104e689efec70d22be0e7e 100644 index b9b8a46f1de9867cc2161ac71c2993ab422cdfbf..46cd3fba13d1590ebb0b8bb7a55dea3bc1548ae8 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java --- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -322,6 +322,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa @@ -322,6 +322,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -101,7 +101,7 @@ index eb0a740f884fde081cabaec5a61c9b642a85a1b4..30dfcd4f9379754a3c104e689efec70d
+ } + }
+ /* + /*
getAllLevels().forEach(level -> { getAllLevels().forEach(level -> {
for (final Entity entity : level.getEntities().getAll()) { for (final Entity entity : level.moonrise$getEntityLookup().getAllCopy()) { // Paper - rewrite chunk system
if (entity.isRemoved()) { if (entity.isRemoved()) {
@@ -1666,6 +1679,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa @@ -1666,6 +1679,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
} }

View File

@@ -60,7 +60,7 @@ index 28e3b73507b988f7234cbf29c4024c88180d0aef..427cf73383155c52bca8fb4b32f43029
+ long getChunkCoordinateKey(); // SparklyPaper - optimize tickBlockEntities + long getChunkCoordinateKey(); // SparklyPaper - optimize tickBlockEntities
} }
diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
index 435f5f0a17901f743bd565b28f9feb5d4058c819..3e03946202cc6aca535322446c6e5e9a0a0dcf15 100644 index 589c1f13006660c28378f447ee373651257169d9..652490f2d75940241ed93239a3d6b8b73048fd5f 100644
--- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java --- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
+++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
@@ -74,6 +74,13 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p @@ -74,6 +74,13 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p
@@ -77,7 +77,7 @@ index 435f5f0a17901f743bd565b28f9feb5d4058c819..3e03946202cc6aca535322446c6e5e9a
}; };
private final Map<BlockPos, LevelChunk.RebindableTickingBlockEntityWrapper> tickersInLevel; private final Map<BlockPos, LevelChunk.RebindableTickingBlockEntityWrapper> tickersInLevel;
public boolean loaded; public boolean loaded;
@@ -1035,7 +1042,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p @@ -1039,7 +1046,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p
} }
private <T extends BlockEntity> TickingBlockEntity createTicker(T blockEntity, BlockEntityTicker<T> blockEntityTicker) { private <T extends BlockEntity> TickingBlockEntity createTicker(T blockEntity, BlockEntityTicker<T> blockEntityTicker) {
@@ -86,7 +86,7 @@ index 435f5f0a17901f743bd565b28f9feb5d4058c819..3e03946202cc6aca535322446c6e5e9a
} }
@FunctionalInterface @FunctionalInterface
@@ -1086,6 +1093,13 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p @@ -1090,6 +1097,13 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p
public String toString() { public String toString() {
return String.valueOf(this.ticker) + " <wrapped>"; return String.valueOf(this.ticker) + " <wrapped>";
} }
@@ -100,7 +100,7 @@ index 435f5f0a17901f743bd565b28f9feb5d4058c819..3e03946202cc6aca535322446c6e5e9a
} }
private class BoundTickingBlockEntity<T extends BlockEntity> implements TickingBlockEntity { private class BoundTickingBlockEntity<T extends BlockEntity> implements TickingBlockEntity {
@@ -1093,10 +1107,12 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p @@ -1097,10 +1111,12 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p
private final T blockEntity; private final T blockEntity;
private final BlockEntityTicker<T> ticker; private final BlockEntityTicker<T> ticker;
private boolean loggedInvalidBlockState; private boolean loggedInvalidBlockState;
@@ -114,7 +114,7 @@ index 435f5f0a17901f743bd565b28f9feb5d4058c819..3e03946202cc6aca535322446c6e5e9a
} }
@Override @Override
@@ -1164,5 +1180,12 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p @@ -1168,5 +1184,12 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p
return "Level ticker for " + s + "@" + String.valueOf(this.getPos()); return "Level ticker for " + s + "@" + String.valueOf(this.getPos());
} }

View File

@@ -6,7 +6,7 @@ Subject: [PATCH] Parallel world ticking
"mom can we have folia?" "we already have folia at home" folia at home: "mom can we have folia?" "we already have folia at home" folia at home:
diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/ChunkHolderManager.java b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/ChunkHolderManager.java diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/ChunkHolderManager.java b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/ChunkHolderManager.java
index 5576924839c9c5a42a8c430c30cb5a6275ae6f23..649126713e597224f9850488e15b20e8c3e4b27e 100644 index ad339978cd2e8d78b0566c2daf0495a418d127c7..b01c325f43a7f8989dea279e99fd87caf17969bb 100644
--- a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/ChunkHolderManager.java --- a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/ChunkHolderManager.java
+++ b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/ChunkHolderManager.java +++ b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/ChunkHolderManager.java
@@ -1007,7 +1007,7 @@ public final class ChunkHolderManager { @@ -1007,7 +1007,7 @@ public final class ChunkHolderManager {
@@ -27,15 +27,7 @@ index 5576924839c9c5a42a8c430c30cb5a6275ae6f23..649126713e597224f9850488e15b20e8
if (BLOCK_TICKET_UPDATES.get() == Boolean.TRUE) { if (BLOCK_TICKET_UPDATES.get() == Boolean.TRUE) {
throw new IllegalStateException("Cannot unload chunks recursively"); throw new IllegalStateException("Cannot unload chunks recursively");
@@ -1307,14 +1307,14 @@ public final class ChunkHolderManager { @@ -1313,7 +1313,7 @@ public final class ChunkHolderManager {
}
private boolean processTicketUpdates(final boolean processFullUpdates, List<ChunkProgressionTask> scheduledTasks) {
- io.papermc.paper.util.TickThread.ensureTickThread("Cannot process ticket levels off-main");
+ io.papermc.paper.util.TickThread.ensureTickThread(world, "Cannot process ticket levels off-main"); // SparklyPaper - parallel world ticking
if (BLOCK_TICKET_UPDATES.get() == Boolean.TRUE) {
throw new IllegalStateException("Cannot update ticket level while unloading chunks or updating entity manager");
}
List<NewChunkHolder> changedFullStatus = null; List<NewChunkHolder> changedFullStatus = null;
@@ -45,10 +37,10 @@ index 5576924839c9c5a42a8c430c30cb5a6275ae6f23..649126713e597224f9850488e15b20e8
boolean ret = false; boolean ret = false;
final boolean canProcessFullUpdates = processFullUpdates & isTickThread; final boolean canProcessFullUpdates = processFullUpdates & isTickThread;
diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/ChunkTaskScheduler.java b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/ChunkTaskScheduler.java diff --git a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/ChunkTaskScheduler.java b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/ChunkTaskScheduler.java
index bfb53d1f2f96539fbe62946252faa506188560a1..f95e79c8a72d6e4e137cfd188ce121bc1ea899ee 100644 index faf76a5c2f9fa2eea38d2c7f2ab1c43873254e72..66f61697b96d5b250a182b55f7870493800b95a1 100644
--- a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/ChunkTaskScheduler.java --- a/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/ChunkTaskScheduler.java
+++ b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/ChunkTaskScheduler.java +++ b/src/main/java/ca/spottedleaf/moonrise/patches/chunk_system/scheduling/ChunkTaskScheduler.java
@@ -365,7 +365,7 @@ public final class ChunkTaskScheduler { @@ -372,7 +372,7 @@ public final class ChunkTaskScheduler {
public void scheduleTickingState(final int chunkX, final int chunkZ, final FullChunkStatus toStatus, public void scheduleTickingState(final int chunkX, final int chunkZ, final FullChunkStatus toStatus,
final boolean addTicket, final PrioritisedExecutor.Priority priority, final boolean addTicket, final PrioritisedExecutor.Priority priority,
final Consumer<LevelChunk> onComplete) { final Consumer<LevelChunk> onComplete) {
@@ -57,7 +49,7 @@ index bfb53d1f2f96539fbe62946252faa506188560a1..f95e79c8a72d6e4e137cfd188ce121bc
this.scheduleChunkTask(chunkX, chunkZ, () -> { this.scheduleChunkTask(chunkX, chunkZ, () -> {
ChunkTaskScheduler.this.scheduleTickingState(chunkX, chunkZ, toStatus, addTicket, priority, onComplete); ChunkTaskScheduler.this.scheduleTickingState(chunkX, chunkZ, toStatus, addTicket, priority, onComplete);
}, priority); }, priority);
@@ -552,7 +552,7 @@ public final class ChunkTaskScheduler { @@ -563,7 +563,7 @@ public final class ChunkTaskScheduler {
public void scheduleChunkLoad(final int chunkX, final int chunkZ, final ChunkStatus toStatus, final boolean addTicket, public void scheduleChunkLoad(final int chunkX, final int chunkZ, final ChunkStatus toStatus, final boolean addTicket,
final PrioritisedExecutor.Priority priority, final Consumer<ChunkAccess> onComplete) { final PrioritisedExecutor.Priority priority, final Consumer<ChunkAccess> onComplete) {
@@ -549,7 +541,7 @@ index cb308808906a8cdb127df8284e106e00553473ca..323d41e2bed5e83a26dfe4c88dfce7ed
} }
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index 086ff182abaf0a3df4d20f98c6e5f9ddce26dc83..37fe8b0d66aa99d74fe70b00a1fff2c209d9ebeb 100644 index cb93aed058c050107f948e95396975d50d53bfb1..7da56241422fab1ff3fe53af4e1b9a943e0cc85c 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java --- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -324,6 +324,9 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa @@ -324,6 +324,9 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -686,7 +678,7 @@ index 086ff182abaf0a3df4d20f98c6e5f9ddce26dc83..37fe8b0d66aa99d74fe70b00a1fff2c2
this.isIteratingOverLevels = false; // Paper - Throw exception on world create while being ticked this.isIteratingOverLevels = false; // Paper - Throw exception on world create while being ticked
this.profiler.popPush("connection"); this.profiler.popPush("connection");
@@ -2905,7 +2924,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa @@ -2912,7 +2931,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
} }
public final java.util.concurrent.ExecutorService chatExecutor = java.util.concurrent.Executors.newCachedThreadPool( public final java.util.concurrent.ExecutorService chatExecutor = java.util.concurrent.Executors.newCachedThreadPool(
@@ -785,7 +777,7 @@ index 681fdab250d924a29ca160acffbcbf7f8a3ca78a..f3c5c66baf5e4d87d43c6e790923e223
if (flag1) { if (flag1) {
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
index f6d0b7d94995fff41def7edcf66fac40c43fec61..47a1e391a9ed800616b055ce1ef0026943e2ab89 100644 index 7e47c6f128090ea32ff36cf4fb2e660cc5ce04ef..5857d889f3debcfcc383914e7bb22f697de99ec7 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java --- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -222,6 +222,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. @@ -222,6 +222,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
@@ -1329,7 +1321,7 @@ index 597599138f69c9ee05dc7657c51c25336337875e..c9876514091f5cd0fc9c24b4f1577b1a
// CraftBukkit end // CraftBukkit end
diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
index 3e03946202cc6aca535322446c6e5e9a0a0dcf15..88dfeaa0fdd02cc7ee88a46a3c1ad2a5faac0484 100644 index 652490f2d75940241ed93239a3d6b8b73048fd5f..b8f32894b14db232c26b5ee61c35e84dba22342a 100644
--- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java --- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
+++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
@@ -425,6 +425,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p @@ -425,6 +425,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p
@@ -1380,10 +1372,10 @@ index d8b4196adf955f8d414688dc451caac2d9c609d9..fd638b1bb9d21e3a69c5b8a3a6c70d52
// To ensure nothing weird happens with dimension travelling, do not iterate over new entries... // To ensure nothing weird happens with dimension travelling, do not iterate over new entries...
// (by dfl iterator() is configured to not iterate over new entries) // (by dfl iterator() is configured to not iterate over new entries)
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index 95de729f0a02a202632ea85a4061607d632588e9..3f3721596c09a6d3226ed6e3abeb645bbd5a4bed 100644 index 8045d6c9398d1c88595da6e41aa1ed27fb6fbad0..4839884f3c8a473e74b32681a5f98c30bc8236de 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -427,7 +427,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { @@ -428,7 +428,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
} }
private boolean unloadChunk0(int x, int z, boolean save) { private boolean unloadChunk0(int x, int z, boolean save) {
@@ -1392,7 +1384,7 @@ index 95de729f0a02a202632ea85a4061607d632588e9..3f3721596c09a6d3226ed6e3abeb645b
if (!this.isChunkLoaded(x, z)) { if (!this.isChunkLoaded(x, z)) {
return true; return true;
} }
@@ -442,6 +442,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { @@ -443,6 +443,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override @Override
public boolean regenerateChunk(int x, int z) { public boolean regenerateChunk(int x, int z) {
@@ -1400,7 +1392,7 @@ index 95de729f0a02a202632ea85a4061607d632588e9..3f3721596c09a6d3226ed6e3abeb645b
org.spigotmc.AsyncCatcher.catchOp("chunk regenerate"); // Spigot org.spigotmc.AsyncCatcher.catchOp("chunk regenerate"); // Spigot
throw new UnsupportedOperationException("Not supported in this Minecraft version! Unless you can fix it, this is not a bug :)"); throw new UnsupportedOperationException("Not supported in this Minecraft version! Unless you can fix it, this is not a bug :)");
/* /*
@@ -469,6 +470,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { @@ -470,6 +471,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override @Override
public boolean refreshChunk(int x, int z) { public boolean refreshChunk(int x, int z) {
@@ -1408,7 +1400,7 @@ index 95de729f0a02a202632ea85a4061607d632588e9..3f3721596c09a6d3226ed6e3abeb645b
ChunkHolder playerChunk = this.world.getChunkSource().chunkMap.getVisibleChunkIfPresent(ChunkPos.asLong(x, z)); ChunkHolder playerChunk = this.world.getChunkSource().chunkMap.getVisibleChunkIfPresent(ChunkPos.asLong(x, z));
if (playerChunk == null) return false; if (playerChunk == null) return false;
@@ -529,7 +531,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { @@ -530,7 +532,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override @Override
public boolean loadChunk(int x, int z, boolean generate) { public boolean loadChunk(int x, int z, boolean generate) {
@@ -1417,7 +1409,7 @@ index 95de729f0a02a202632ea85a4061607d632588e9..3f3721596c09a6d3226ed6e3abeb645b
warnUnsafeChunk("loading a faraway chunk", x, z); // Paper warnUnsafeChunk("loading a faraway chunk", x, z); // Paper
ChunkAccess chunk = this.world.getChunkSource().getChunk(x, z, generate || isChunkGenerated(x, z) ? ChunkStatus.FULL : ChunkStatus.EMPTY, true); // Paper ChunkAccess chunk = this.world.getChunkSource().getChunk(x, z, generate || isChunkGenerated(x, z) ? ChunkStatus.FULL : ChunkStatus.EMPTY, true); // Paper
@@ -781,6 +783,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { @@ -782,6 +784,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override @Override
public boolean generateTree(Location loc, TreeType type, BlockChangeDelegate delegate) { public boolean generateTree(Location loc, TreeType type, BlockChangeDelegate delegate) {
@@ -1425,7 +1417,7 @@ index 95de729f0a02a202632ea85a4061607d632588e9..3f3721596c09a6d3226ed6e3abeb645b
this.world.captureTreeGeneration = true; this.world.captureTreeGeneration = true;
this.world.captureBlockStates = true; this.world.captureBlockStates = true;
boolean grownTree = this.generateTree(loc, type); boolean grownTree = this.generateTree(loc, type);
@@ -891,6 +894,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { @@ -892,6 +895,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override @Override
public boolean createExplosion(double x, double y, double z, float power, boolean setFire, boolean breakBlocks, Entity source) { public boolean createExplosion(double x, double y, double z, float power, boolean setFire, boolean breakBlocks, Entity source) {
@@ -1433,7 +1425,7 @@ index 95de729f0a02a202632ea85a4061607d632588e9..3f3721596c09a6d3226ed6e3abeb645b
net.minecraft.world.level.Level.ExplosionInteraction explosionType; net.minecraft.world.level.Level.ExplosionInteraction explosionType;
if (!breakBlocks) { if (!breakBlocks) {
explosionType = net.minecraft.world.level.Level.ExplosionInteraction.NONE; // Don't break blocks explosionType = net.minecraft.world.level.Level.ExplosionInteraction.NONE; // Don't break blocks
@@ -905,6 +909,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { @@ -906,6 +910,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
// Paper start // Paper start
@Override @Override
public boolean createExplosion(Entity source, Location loc, float power, boolean setFire, boolean breakBlocks) { public boolean createExplosion(Entity source, Location loc, float power, boolean setFire, boolean breakBlocks) {
@@ -1441,7 +1433,7 @@ index 95de729f0a02a202632ea85a4061607d632588e9..3f3721596c09a6d3226ed6e3abeb645b
return !world.explode(source != null ? ((org.bukkit.craftbukkit.entity.CraftEntity) source).getHandle() : null, loc.getX(), loc.getY(), loc.getZ(), power, setFire, breakBlocks ? net.minecraft.world.level.Level.ExplosionInteraction.MOB : net.minecraft.world.level.Level.ExplosionInteraction.NONE).wasCanceled; return !world.explode(source != null ? ((org.bukkit.craftbukkit.entity.CraftEntity) source).getHandle() : null, loc.getX(), loc.getY(), loc.getZ(), power, setFire, breakBlocks ? net.minecraft.world.level.Level.ExplosionInteraction.MOB : net.minecraft.world.level.Level.ExplosionInteraction.NONE).wasCanceled;
} }
// Paper end // Paper end
@@ -981,6 +986,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { @@ -982,6 +987,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override @Override
public int getHighestBlockYAt(int x, int z, org.bukkit.HeightMap heightMap) { public int getHighestBlockYAt(int x, int z, org.bukkit.HeightMap heightMap) {
@@ -1449,7 +1441,7 @@ index 95de729f0a02a202632ea85a4061607d632588e9..3f3721596c09a6d3226ed6e3abeb645b
warnUnsafeChunk("getting a faraway chunk", x >> 4, z >> 4); // Paper warnUnsafeChunk("getting a faraway chunk", x >> 4, z >> 4); // Paper
// Transient load for this tick // Transient load for this tick
return this.world.getChunk(x >> 4, z >> 4).getHeight(CraftHeightMap.toNMS(heightMap), x, z); return this.world.getChunk(x >> 4, z >> 4).getHeight(CraftHeightMap.toNMS(heightMap), x, z);
@@ -1011,6 +1017,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { @@ -1012,6 +1018,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override @Override
public void setBiome(int x, int y, int z, Holder<net.minecraft.world.level.biome.Biome> bb) { public void setBiome(int x, int y, int z, Holder<net.minecraft.world.level.biome.Biome> bb) {
BlockPos pos = new BlockPos(x, 0, z); BlockPos pos = new BlockPos(x, 0, z);
@@ -1457,7 +1449,7 @@ index 95de729f0a02a202632ea85a4061607d632588e9..3f3721596c09a6d3226ed6e3abeb645b
if (this.world.hasChunkAt(pos)) { if (this.world.hasChunkAt(pos)) {
net.minecraft.world.level.chunk.LevelChunk chunk = this.world.getChunkAt(pos); net.minecraft.world.level.chunk.LevelChunk chunk = this.world.getChunkAt(pos);
@@ -2280,6 +2287,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { @@ -2281,6 +2288,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
@Override @Override
public void sendGameEvent(Entity sourceEntity, org.bukkit.GameEvent gameEvent, Vector position) { public void sendGameEvent(Entity sourceEntity, org.bukkit.GameEvent gameEvent, Vector position) {
@@ -1465,7 +1457,7 @@ index 95de729f0a02a202632ea85a4061607d632588e9..3f3721596c09a6d3226ed6e3abeb645b
getHandle().gameEvent(sourceEntity != null ? ((CraftEntity) sourceEntity).getHandle(): null, net.minecraft.core.registries.BuiltInRegistries.GAME_EVENT.getHolder(org.bukkit.craftbukkit.util.CraftNamespacedKey.toMinecraft(gameEvent.getKey())).orElseThrow(), org.bukkit.craftbukkit.util.CraftVector.toBlockPos(position)); getHandle().gameEvent(sourceEntity != null ? ((CraftEntity) sourceEntity).getHandle(): null, net.minecraft.core.registries.BuiltInRegistries.GAME_EVENT.getHolder(org.bukkit.craftbukkit.util.CraftNamespacedKey.toMinecraft(gameEvent.getKey())).orElseThrow(), org.bukkit.craftbukkit.util.CraftVector.toBlockPos(position));
} }
// Paper end // Paper end
@@ -2408,7 +2416,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { @@ -2409,7 +2417,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
// Paper start // Paper start
public java.util.concurrent.CompletableFuture<Chunk> getChunkAtAsync(int x, int z, boolean gen, boolean urgent) { public java.util.concurrent.CompletableFuture<Chunk> getChunkAtAsync(int x, int z, boolean gen, boolean urgent) {
warnUnsafeChunk("getting a faraway chunk async", x, z); // Paper warnUnsafeChunk("getting a faraway chunk async", x, z); // Paper