diff --git a/.github/workflows/auto-update.yml b/.github/workflows/auto-update.yml index 535d727..5575890 100644 --- a/.github/workflows/auto-update.yml +++ b/.github/workflows/auto-update.yml @@ -11,7 +11,7 @@ jobs: uses: actions/checkout@v3 with: path: 'SparklyPaper' - ref: 'ver/1.21.7' + ref: 'ver/1.21.8' token: ${{ secrets.LORITTA_PAT }} - name: Checkout Paper Repository diff --git a/gradle.properties b/gradle.properties index 73afc90..a6f4aad 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,7 +1,7 @@ group=net.sparklypower.sparklypaper -version=1.21.7-R0.1-SNAPSHOT -mcVersion=1.21.7 -paperRef=e792779dd8d8ba06d6448ca34bdd98da1daed481 +version=1.21.8-R0.1-SNAPSHOT +mcVersion=1.21.8 +paperRef=f7c59f914c15de506ea08084093b1074cc043958 org.gradle.configuration-cache=true org.gradle.caching=true diff --git a/sparklypaper-server/build.gradle.kts.patch b/sparklypaper-server/build.gradle.kts.patch index ddbbb0b..e4d9f0f 100644 --- a/sparklypaper-server/build.gradle.kts.patch +++ b/sparklypaper-server/build.gradle.kts.patch @@ -61,7 +61,7 @@ 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-jni:3.27.1") // fall back to jni on java 21 -@@ -200,9 +_,14 @@ +@@ -196,9 +_,14 @@ val build = System.getenv("BUILD_NUMBER") ?: null val buildTime = if (build != null) Instant.now() else Instant.EPOCH val gitHash = git.exec(providers, "rev-parse", "--short=7", "HEAD").get().trim() @@ -77,7 +77,7 @@ attributes( "Main-Class" to "org.bukkit.craftbukkit.Main", "Implementation-Title" to "Paper", -@@ -211,8 +_,8 @@ +@@ -207,8 +_,8 @@ "Specification-Title" to "Paper", "Specification-Version" to project.version, "Specification-Vendor" to "Paper Team", @@ -88,7 +88,7 @@ "Build-Number" to (build ?: ""), "Build-Time" to buildTime.toString(), "Git-Branch" to gitBranch, -@@ -271,7 +_,7 @@ +@@ -267,7 +_,7 @@ jvmArgumentProviders.add(provider) } diff --git a/sparklypaper-server/minecraft-patches/features/0001-Parallel-World-Ticking.patch b/sparklypaper-server/minecraft-patches/features/0001-Parallel-World-Ticking.patch index e9a273c..86f5087 100644 --- a/sparklypaper-server/minecraft-patches/features/0001-Parallel-World-Ticking.patch +++ b/sparklypaper-server/minecraft-patches/features/0001-Parallel-World-Ticking.patch @@ -57,7 +57,7 @@ index ca02c4c71a0a5a1a0ae8bbb40f0b1b7eac64e6fd..7ce68f270d809ab0b2be45ffdd0346f0 List states = new java.util.ArrayList<>(level.capturedBlockStates.values()); level.capturedBlockStates.clear(); diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java -index 52fa5112cd90ba766c94512a02401dd3aee82cc9..07528605b060115fe4a61c881eec76897320df63 100644 +index 7aac2a6889af3edaebfaf94deecbf00d00758b68..650b324eeb6173d51069a918ec2fd1e84e054c30 100644 --- a/net/minecraft/server/MinecraftServer.java +++ b/net/minecraft/server/MinecraftServer.java @@ -303,6 +303,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop S spin(Function threadFunction) { ca.spottedleaf.dataconverter.minecraft.datatypes.MCTypeRegistry.init(); // Paper - rewrite data converter system -@@ -1703,6 +1704,9 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0; // Paper - BlockPhysicsEvent serverLevel.hasEntityMoveEvent = io.papermc.paper.event.entity.EntityMoveEvent.getHandlerList().getRegisteredListeners().length > 0; // Paper - Add EntityMoveEvent -@@ -1719,18 +1723,45 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop, ServerLevel> oldLevels = this.levels; Map, ServerLevel> newLevels = Maps.newLinkedHashMap(oldLevels); newLevels.remove(level.dimension()); @@ -241,7 +241,7 @@ index ecfe237fbecde610d095647a1f2a10f7d426d786..4211816c3b21a2ee66297a8f58b51de3 // Paper start - extra debug info if (entity.valid) { diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java -index dfa00516e9a6c941087bd7ecfd5aca8a9f7915be..6a71b746b282ee53f838c509c36590c8dd8eca4a 100644 +index 37c0a84758a1526791913898358659de202fa19f..a40e62beb26f89d306af3a5b6ce74b93407cde76 100644 --- a/net/minecraft/server/level/ServerPlayer.java +++ b/net/minecraft/server/level/ServerPlayer.java @@ -459,6 +459,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc @@ -260,7 +260,7 @@ index dfa00516e9a6c941087bd7ecfd5aca8a9f7915be..6a71b746b282ee53f838c509c36590c8 // CraftBukkit start if (this.joining) { this.joining = false; -@@ -1394,6 +1396,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc +@@ -1403,6 +1405,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc return this; } else { // CraftBukkit start @@ -268,7 +268,7 @@ index dfa00516e9a6c941087bd7ecfd5aca8a9f7915be..6a71b746b282ee53f838c509c36590c8 /* this.isChangingDimension = true; LevelData levelData = level.getLevelData(); -@@ -1730,6 +1733,12 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc +@@ -1739,6 +1742,12 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc return OptionalInt.empty(); } else { // CraftBukkit start @@ -281,7 +281,7 @@ index dfa00516e9a6c941087bd7ecfd5aca8a9f7915be..6a71b746b282ee53f838c509c36590c8 this.containerMenu = abstractContainerMenu; // Moved up if (!this.isImmobile()) this.connection -@@ -1794,6 +1803,11 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc +@@ -1803,6 +1812,11 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc } @Override public void closeContainer(org.bukkit.event.inventory.InventoryCloseEvent.Reason reason) { @@ -294,7 +294,7 @@ index dfa00516e9a6c941087bd7ecfd5aca8a9f7915be..6a71b746b282ee53f838c509c36590c8 // Paper end - Inventory close reason this.connection.send(new ClientboundContainerClosePacket(this.containerMenu.containerId)); diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java -index dea72819f2933e5a806bb3a0603e4ebdf7f99456..1652cb7df981225e551b9c034f0a3756a1a91193 100644 +index 2c2015bf19d5b30e945118661b7a9b474a1bddc8..816f850e636385ae61832874d9f46be86dda132c 100644 --- a/net/minecraft/server/players/PlayerList.java +++ b/net/minecraft/server/players/PlayerList.java @@ -112,7 +112,7 @@ public abstract class PlayerList { @@ -429,7 +429,7 @@ index f9e7532f86122a379692561a639a209a126e8bba..2709dfae53c1a210f36c45fa0df0d495 if (isLocatorBarEnabledFor(player)) { if (!connection.isBroken()) { diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index 3d2c0a4d3a1f9d3e5cc6cd0cdb988ae1205de821..53d99753ab7454df5fd9f2565283f93404030c70 100644 +index 70b6ea8ab35e88989b5b1f5ffd64490a9d743b56..0860bb163e9b7bf52c618e1e342dbee92e8770b8 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java @@ -834,7 +834,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -441,7 +441,7 @@ index 3d2c0a4d3a1f9d3e5cc6cd0cdb988ae1205de821..53d99753ab7454df5fd9f2565283f934 this.handlePortal(); } } -@@ -3999,6 +3999,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3998,6 +3998,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } private Entity teleportCrossDimension(ServerLevel oldLevel, ServerLevel newLevel, TeleportTransition teleportTransition) { @@ -450,7 +450,7 @@ index 3d2c0a4d3a1f9d3e5cc6cd0cdb988ae1205de821..53d99753ab7454df5fd9f2565283f934 List list = new ArrayList<>(passengers.size()); this.ejectPassengers(); diff --git a/net/minecraft/world/inventory/AbstractContainerMenu.java b/net/minecraft/world/inventory/AbstractContainerMenu.java -index f4548edae77eb86e54ba499acbb20613fd60d7bd..3f4cce0ba360652b09076ff265aaf5f6e633cd53 100644 +index 96da9b8e3556e58365dc6742f44d6dfd608e2953..3366a21dd176efb09718a70fcb323c2e8d35e8a9 100644 --- a/net/minecraft/world/inventory/AbstractContainerMenu.java +++ b/net/minecraft/world/inventory/AbstractContainerMenu.java @@ -95,8 +95,14 @@ public abstract class AbstractContainerMenu { @@ -469,7 +469,7 @@ index f4548edae77eb86e54ba499acbb20613fd60d7bd..3f4cce0ba360652b09076ff265aaf5f6 this.containerId = containerId; } diff --git a/net/minecraft/world/item/ItemStack.java b/net/minecraft/world/item/ItemStack.java -index cf283389d9263ba29720bf296a778be9eaf308a7..403cc6642dad5ac46f989ebcfb042fa0a36bc035 100644 +index da16f4831c875e07c25d7ed041bed493db614658..fc1512e434f5363d28f5cb9d58094c2d99bfb565 100644 --- a/net/minecraft/world/item/ItemStack.java +++ b/net/minecraft/world/item/ItemStack.java @@ -398,8 +398,8 @@ public final class ItemStack implements DataComponentHolder { diff --git a/sparklypaper-server/minecraft-patches/sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch b/sparklypaper-server/minecraft-patches/sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch index f4a5a6e..6c7040d 100644 --- a/sparklypaper-server/minecraft-patches/sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch +++ b/sparklypaper-server/minecraft-patches/sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -610,6 +_,31 @@ +@@ -622,6 +_,31 @@ LOGGER.warn("{} (vehicle of {}) moved wrongly! {}", rootVehicle.getName().getString(), this.player.getName().getString(), Math.sqrt(d7)); } @@ -32,7 +32,7 @@ // Paper start - optimise out extra getCubes boolean teleportBack = flag1; if (!teleportBack) { -@@ -1504,7 +_,7 @@ +@@ -1516,7 +_,7 @@ d3 = d - this.lastGoodX; // Paper - diff on change, used for checking large move vectors above d4 = d1 - this.lastGoodY; // Paper - diff on change, used for checking large move vectors above d5 = d2 - this.lastGoodZ; // Paper - diff on change, used for checking large move vectors above @@ -41,7 +41,7 @@ if (this.player.onGround() && !packet.isOnGround() && flag) { // Paper start - Add PlayerJumpEvent org.bukkit.entity.Player player = this.getCraftPlayer(); -@@ -1538,7 +_,37 @@ +@@ -1550,7 +_,37 @@ boolean flag1 = this.player.verticalCollisionBelow; this.player.move(MoverType.PLAYER, new Vec3(d3, d4, d5)); @@ -80,7 +80,7 @@ final boolean didCollide = toX != this.player.getX() || toY != this.player.getY() || toZ != this.player.getZ(); // Paper - needed here as the difference in Y can be reset - also note: this is only a guess at whether collisions took place, floating point errors can make this true when it shouldn't be... // Paper start - prevent position desync if (this.awaitingPositionFromClient != null) { -@@ -1671,14 +_,14 @@ +@@ -1683,14 +_,14 @@ && this.noBlocksAround(this.player); this.player.level().getChunkSource().move(this.player); Vec3 vec3 = new Vec3(this.player.getX() - x, this.player.getY() - y, this.player.getZ() - z); @@ -98,7 +98,7 @@ || this.player.hasLandedInLiquid() || this.player.onClimbable() || this.player.isSpectator() -@@ -1693,7 +_,7 @@ +@@ -1705,7 +_,7 @@ this.lastGoodZ = this.player.getZ(); } else { this.internalTeleport(x, y, z, f, f1); // CraftBukkit - SPIGOT-1807: Don't call teleport event, when the client thinks the player is falling, because the chunks are not loaded on the client yet. @@ -107,7 +107,7 @@ this.player.removeLatestMovementRecording(); } } -@@ -3173,6 +_,21 @@ +@@ -3175,6 +_,21 @@ } else { event = new CraftItemEvent(recipe, inventory, type, slotNum, click, action); } diff --git a/sparklypaper-server/minecraft-patches/sources/net/minecraft/world/entity/player/Player.java.patch b/sparklypaper-server/minecraft-patches/sources/net/minecraft/world/entity/player/Player.java.patch index 737ba65..f7577b4 100644 --- a/sparklypaper-server/minecraft-patches/sources/net/minecraft/world/entity/player/Player.java.patch +++ b/sparklypaper-server/minecraft-patches/sources/net/minecraft/world/entity/player/Player.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/entity/player/Player.java +++ b/net/minecraft/world/entity/player/Player.java -@@ -2146,6 +_,12 @@ +@@ -2145,6 +_,12 @@ if (!(shootable.getItem() instanceof ProjectileWeaponItem)) { return ItemStack.EMPTY; } else { diff --git a/sparklypaper-server/paper-patches/features/0001-Parallel-World-Ticking.patch b/sparklypaper-server/paper-patches/features/0001-Parallel-World-Ticking.patch index e29cfd4..a1cbb07 100644 --- a/sparklypaper-server/paper-patches/features/0001-Parallel-World-Ticking.patch +++ b/sparklypaper-server/paper-patches/features/0001-Parallel-World-Ticking.patch @@ -294,10 +294,10 @@ index 69cdd304d255d52c9b7dc9b6a33ffdb630b79abe..8fc5691d608359ce848b8caecdd55ddd + // SparklyPaper end } diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index 7990382df41824b7a4072fd4a44d02a229a4d9b6..343267292db75188cae483d72bc8faf03741a5b6 100644 +index 68351e47609ae06f0a1641b4ad2013ce6261ae4e..7e70491d6ff92feb64141925dc1e482f648ce21e 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -474,7 +474,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -478,7 +478,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { } private boolean unloadChunk0(int x, int z, boolean save) { @@ -306,7 +306,7 @@ index 7990382df41824b7a4072fd4a44d02a229a4d9b6..343267292db75188cae483d72bc8faf0 if (!this.isChunkLoaded(x, z)) { return true; } -@@ -491,6 +491,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -495,6 +495,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { @Override public boolean refreshChunk(int x, int z) { @@ -314,7 +314,7 @@ index 7990382df41824b7a4072fd4a44d02a229a4d9b6..343267292db75188cae483d72bc8faf0 ChunkHolder playerChunk = this.world.getChunkSource().chunkMap.getVisibleChunkIfPresent(ChunkPos.asLong(x, z)); if (playerChunk == null) return false; -@@ -541,6 +542,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -545,6 +546,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { @Override public boolean loadChunk(int x, int z, boolean generate) { @@ -322,7 +322,7 @@ index 7990382df41824b7a4072fd4a44d02a229a4d9b6..343267292db75188cae483d72bc8faf0 org.spigotmc.AsyncCatcher.catchOp("chunk load"); // Spigot 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 -@@ -769,6 +771,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -773,6 +775,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { @Override public boolean generateTree(Location loc, TreeType type, BlockChangeDelegate delegate) { @@ -330,7 +330,7 @@ index 7990382df41824b7a4072fd4a44d02a229a4d9b6..343267292db75188cae483d72bc8faf0 this.world.captureTreeGeneration = true; this.world.captureBlockStates = true; boolean grownTree = this.generateTree(loc, type); -@@ -884,6 +887,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -888,6 +891,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { } public boolean createExplosion(double x, double y, double z, float power, boolean setFire, boolean breakBlocks, Entity source, Consumer configurator) { // Paper end - expand explosion API @@ -338,7 +338,7 @@ index 7990382df41824b7a4072fd4a44d02a229a4d9b6..343267292db75188cae483d72bc8faf0 net.minecraft.world.level.Level.ExplosionInteraction explosionType; if (!breakBlocks) { explosionType = net.minecraft.world.level.Level.ExplosionInteraction.NONE; // Don't break blocks -@@ -975,6 +979,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -979,6 +983,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { @Override public int getHighestBlockYAt(int x, int z, org.bukkit.HeightMap heightMap) { @@ -346,7 +346,7 @@ index 7990382df41824b7a4072fd4a44d02a229a4d9b6..343267292db75188cae483d72bc8faf0 warnUnsafeChunk("getting a faraway chunk", x >> 4, z >> 4); // Paper // Transient load for this tick return this.world.getChunk(x >> 4, z >> 4).getHeight(CraftHeightMap.toNMS(heightMap), x, z); -@@ -1005,6 +1010,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -1009,6 +1014,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { @Override public void setBiome(int x, int y, int z, Holder bb) { BlockPos pos = new BlockPos(x, 0, z); @@ -354,7 +354,7 @@ index 7990382df41824b7a4072fd4a44d02a229a4d9b6..343267292db75188cae483d72bc8faf0 if (this.world.hasChunkAt(pos)) { net.minecraft.world.level.chunk.LevelChunk chunk = this.world.getChunkAt(pos); -@@ -2313,6 +2319,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -2317,6 +2323,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { @Override public void sendGameEvent(Entity sourceEntity, org.bukkit.GameEvent gameEvent, Vector position) { @@ -532,7 +532,7 @@ index a4d5c65edc1db59f3486ce5d3757cc306211a54b..3609e71f382f80017acb91c5e286008d this.getNMS().tick(level, this.position, level.random); } diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlockEntityState.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlockEntityState.java -index 7232b560aac9fbe48318f7af1c875583e06723ee..731cf7ef140c454466d8961e74ad2f43c0f9242d 100644 +index 5d4faad9df4824cfd61abfd4df011c006f114424..d1227c670db2dbe1816d78be51796c43e99a4d9b 100644 --- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlockEntityState.java +++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlockEntityState.java @@ -32,7 +32,7 @@ public abstract class CraftBlockEntityState extends Craft @@ -581,7 +581,7 @@ index 196835bdf95ba0e149b2977e9ef41698971f501f..641adf9666fef4d15bc9b585aabfe687 net.minecraft.world.item.ItemStack nms = org.bukkit.craftbukkit.inventory.CraftItemStack.asNMSCopy(item); diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlockStates.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlockStates.java -index cc5028cebcd0504635734907c73ee5c9d91f0e71..be3840a298fa778937803341018868351cdb535f 100644 +index 3c9131ac3cfb4f758e76830ca48813feb321e4c6..a74bf90de9059c81802f617ddea07a30aea47d1e 100644 --- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlockStates.java +++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlockStates.java @@ -195,14 +195,14 @@ public final class CraftBlockStates { @@ -603,10 +603,10 @@ index cc5028cebcd0504635734907c73ee5c9d91f0e71..be3840a298fa77893780334101886835 } diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index ffcc282dec5c3874f1170b42f1752a0f8421fe35..d24656e96f4628f7d02f0e0026e2ef7258765b35 100644 +index 807a8250913cafa685ad8928a34db5a4856e4e9c..b53f0aeb52a205ec7fa844623d5169148d0964fd 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -809,7 +809,7 @@ public class CraftEventFactory { +@@ -819,7 +819,7 @@ public class CraftEventFactory { return false; } @@ -615,7 +615,7 @@ index ffcc282dec5c3874f1170b42f1752a0f8421fe35..d24656e96f4628f7d02f0e0026e2ef72 public static boolean handleBlockSpreadEvent(LevelAccessor world, BlockPos source, BlockPos target, net.minecraft.world.level.block.state.BlockState state, int flags) { return handleBlockSpreadEvent(world, source, target, state, flags, false); -@@ -825,7 +825,7 @@ public class CraftEventFactory { +@@ -835,7 +835,7 @@ public class CraftEventFactory { CraftBlockState snapshot = CraftBlockStates.getBlockState(world, target); snapshot.setData(state);