From 3ca0d663e7d56476a70846752a0a23bd18c3500e Mon Sep 17 00:00:00 2001 From: granny Date: Fri, 24 Oct 2025 21:08:35 -0700 Subject: [PATCH] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@1e67ca8e Add SpawnReason for REANIMATE a Copper Golem Statue (#13126) PaperMC/Paper@e75678b6 Update Mache for Java 25 setup runtime support PaperMC/Paper@bac3da12 Migrate external JD links from javadoc.io to javadocs.dev (#13205) PaperMC/Paper@080a72f2 [ci/skip] Add myself (roro1506HD) to MIT licensing (#13212) PaperMC/Paper@d98142ef Rework API teleportation to better align with Vanilla (#13181) --- gradle.properties | 2 +- .../java/org/bukkit/entity/Entity.java.patch | 2 +- .../features/0001-Ridables.patch | 52 +++++++++---------- ...-Configurable-entity-base-attributes.patch | 16 +++--- .../0003-Barrels-and-enderchests-6-rows.patch | 4 +- ...fing-override-to-everything-affected.patch | 4 +- ...018-API-for-any-mob-to-burn-daylight.patch | 4 +- .../server/level/ServerPlayer.java.patch | 35 ++++++++----- .../server/players/PlayerList.java.patch | 6 +-- .../minecraft/world/entity/Entity.java.patch | 32 ++++++------ .../features/0002-Ridables.patch | 10 ++-- ...0004-Add-EntityTeleportHinderedEvent.patch | 30 ++--------- ...005-API-for-any-mob-to-burn-daylight.patch | 8 +-- .../craftbukkit/entity/CraftEntity.java.patch | 2 +- .../entity/CraftLivingEntity.java.patch | 2 +- .../craftbukkit/entity/CraftPlayer.java.patch | 10 ++-- 16 files changed, 104 insertions(+), 115 deletions(-) diff --git a/gradle.properties b/gradle.properties index 9c9ff95a0..d3aaed8d0 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.10-R0.1-SNAPSHOT mcVersion = 1.21.10 -paperCommit = 7845cba0a5df21e6e9d815c99503988db2ea5615 +paperCommit = d98142efca60d6e4a6b207082c912c6a894c1558 org.gradle.configuration-cache = true org.gradle.caching = true diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Entity.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Entity.java.patch index d25846872..b6ccbe397 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Entity.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Entity.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/entity/Entity.java +++ b/src/main/java/org/bukkit/entity/Entity.java -@@ -1261,4 +_,59 @@ +@@ -1306,4 +_,59 @@ */ void broadcastHurtAnimation(@NotNull java.util.Collection players); // Paper end - broadcast hurt animation diff --git a/purpur-server/minecraft-patches/features/0001-Ridables.patch b/purpur-server/minecraft-patches/features/0001-Ridables.patch index 3261e9e7a..b02a7a924 100644 --- a/purpur-server/minecraft-patches/features/0001-Ridables.patch +++ b/purpur-server/minecraft-patches/features/0001-Ridables.patch @@ -30,7 +30,7 @@ index e35fb4f48a16780d8728ac1c7bb0fc64e2ded4e7..2c7039281854cc9b21e2badb62389522 /* Drop global time updates if (this.tickCount % 20 == 0) { diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java -index d814aa9654163cdd8f6f938276d820a85036f04a..7dedba7fa332e02c4655424fea5263fee56222d8 100644 +index 6f1a3d9323f3d84b6b0f5d443c0875a98e435f59..b8b641caf8b82f4071bfeff37d50ef65ff2a0505 100644 --- a/net/minecraft/server/level/ServerLevel.java +++ b/net/minecraft/server/level/ServerLevel.java @@ -224,6 +224,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe @@ -42,7 +42,7 @@ index d814aa9654163cdd8f6f938276d820a85036f04a..7dedba7fa332e02c4655424fea5263fe @Override public @Nullable LevelChunk getChunkIfLoaded(int x, int z) { diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java -index 1dc24601d40d54dd8db21ce3bec4fb9b4bf24f08..5b910e27daa43ba2ac29d29e8ecc1b0b0897fe84 100644 +index 1e490bcbeee18ca80ea79c9300863968894556bc..20f126bac6ed085e6c4a8b52480b2b8cfa679d95 100644 --- a/net/minecraft/server/level/ServerPlayer.java +++ b/net/minecraft/server/level/ServerPlayer.java @@ -774,6 +774,15 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc @@ -62,7 +62,7 @@ index 1dc24601d40d54dd8db21ce3bec4fb9b4bf24f08..5b910e27daa43ba2ac29d29e8ecc1b0b private void updatePlayerAttributes() { diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 753d668313a6e0b180975fb91ae7741f7ca19119..b39d3713b0ece3ae08f1c1c359d114011117192f 100644 +index a2d5ba92d03696d52a27f514336c6c06fea4e4af..5587142a35ef5887de3d962dd04caa6d76e462d0 100644 --- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -2862,6 +2862,8 @@ public class ServerGamePacketListenerImpl @@ -75,10 +75,10 @@ index 753d668313a6e0b180975fb91ae7741f7ca19119..b39d3713b0ece3ae08f1c1c359d11401 if (itemType == Items.WATER_BUCKET && target instanceof net.minecraft.world.entity.animal.Bucketable && target instanceof LivingEntity && resendData) { target.resendPossiblyDesyncedEntityData(ServerGamePacketListenerImpl.this.player); // Paper - The entire mob gets deleted, so resend it diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index faba848cf70bac2ac280565b0de3c2342be8e977..75039c43a1f7d6f22fdebd1bac56a028354d1527 100644 +index 7b86550bea4c78e904a60ee234cb711ce04e1076..1c318158e1cc016cf7f26d352519f45bc244cee8 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java -@@ -3361,6 +3361,13 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name +@@ -3353,6 +3353,13 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name this.passengers = ImmutableList.copyOf(list); } @@ -92,7 +92,7 @@ index faba848cf70bac2ac280565b0de3c2342be8e977..75039c43a1f7d6f22fdebd1bac56a028 } } -@@ -3401,6 +3408,14 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name +@@ -3393,6 +3400,14 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name return false; } // CraftBukkit end @@ -107,7 +107,7 @@ index faba848cf70bac2ac280565b0de3c2342be8e977..75039c43a1f7d6f22fdebd1bac56a028 if (this.passengers.size() == 1 && this.passengers.get(0) == passenger) { this.passengers = ImmutableList.of(); } else { -@@ -5468,4 +5483,44 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name +@@ -5435,4 +5450,44 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name return ((ServerLevel) this.level()).isPositionEntityTicking(this.blockPosition()); } // Paper end - Expose entity id counter @@ -3596,7 +3596,7 @@ index 9fb7b3e4cbbde0f1d45d9fffb648240fbd2f3d49..70cf903d95d35b539e9a299a4035c8dd this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true).setUnseenMemoryTicks(300)); this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, AbstractVillager.class, false).setUnseenMemoryTicks(300)); diff --git a/net/minecraft/world/entity/monster/Ghast.java b/net/minecraft/world/entity/monster/Ghast.java -index 226286194e662e61faed17e7d4c53b5f776779f3..1d888ebabecfd1beebdf718c5d771b312070245a 100644 +index 695fbbc996918339192a978c35a74ad599453796..efe4ed636d85624e4122880f95c634ffa7a3891a 100644 --- a/net/minecraft/world/entity/monster/Ghast.java +++ b/net/minecraft/world/entity/monster/Ghast.java @@ -52,11 +52,35 @@ public class Ghast extends Mob implements Enemy { @@ -3651,7 +3651,7 @@ index 226286194e662e61faed17e7d4c53b5f776779f3..1d888ebabecfd1beebdf718c5d771b31 } @Override -@@ -231,7 +264,7 @@ public class Ghast extends Mob implements Enemy { +@@ -236,7 +269,7 @@ public class Ghast extends Mob implements Enemy { } } @@ -3660,7 +3660,7 @@ index 226286194e662e61faed17e7d4c53b5f776779f3..1d888ebabecfd1beebdf718c5d771b31 private final Mob ghast; private int floatDuration; private final boolean careful; -@@ -245,7 +278,7 @@ public class Ghast extends Mob implements Enemy { +@@ -250,7 +283,7 @@ public class Ghast extends Mob implements Enemy { } @Override @@ -3704,7 +3704,7 @@ index 0de6a20a3fed53bd11a0152de6953bfaecc85289..dcbe6bbce0baa4fad7fe180944beeb6c return Monster.createMonsterAttributes() .add(Attributes.MAX_HEALTH, 100.0) diff --git a/net/minecraft/world/entity/monster/Guardian.java b/net/minecraft/world/entity/monster/Guardian.java -index 5aff55743129c293497f21330eb93ac0a86ae04b..339c81d0a9833e762ca4fc63430d22266f95627d 100644 +index c72b599a98960372b301e9ac0f5f0ca5ad330a32..3c20818bf6f86cb34666d12084caf13d409a35ca 100644 --- a/net/minecraft/world/entity/monster/Guardian.java +++ b/net/minecraft/world/entity/monster/Guardian.java @@ -66,14 +66,35 @@ public class Guardian extends Monster { @@ -3751,7 +3751,7 @@ index 5aff55743129c293497f21330eb93ac0a86ae04b..339c81d0a9833e762ca4fc63430d2226 this.targetSelector.addGoal(1, new NearestAttackableTargetGoal<>(this, LivingEntity.class, 10, true, false, new Guardian.GuardianAttackSelector(this))); } -@@ -344,7 +366,7 @@ public class Guardian extends Monster { +@@ -349,7 +371,7 @@ public class Guardian extends Monster { @Override public void travel(Vec3 travelVector) { if (this.isInWater()) { @@ -3760,7 +3760,7 @@ index 5aff55743129c293497f21330eb93ac0a86ae04b..339c81d0a9833e762ca4fc63430d2226 this.move(MoverType.SELF, this.getDeltaMovement()); this.setDeltaMovement(this.getDeltaMovement().scale(0.9)); if (!this.isMoving() && this.getTarget() == null) { -@@ -452,7 +474,7 @@ public class Guardian extends Monster { +@@ -457,7 +479,7 @@ public class Guardian extends Monster { } } @@ -3769,7 +3769,7 @@ index 5aff55743129c293497f21330eb93ac0a86ae04b..339c81d0a9833e762ca4fc63430d2226 private final Guardian guardian; public GuardianMoveControl(Guardian mob) { -@@ -460,8 +482,17 @@ public class Guardian extends Monster { +@@ -465,8 +487,17 @@ public class Guardian extends Monster { this.guardian = mob; } @@ -3788,7 +3788,7 @@ index 5aff55743129c293497f21330eb93ac0a86ae04b..339c81d0a9833e762ca4fc63430d2226 if (this.operation == MoveControl.Operation.MOVE_TO && !this.guardian.getNavigation().isDone()) { Vec3 vec3 = new Vec3(this.wantedX - this.guardian.getX(), this.wantedY - this.guardian.getY(), this.wantedZ - this.guardian.getZ()); double len = vec3.length(); -@@ -471,7 +502,7 @@ public class Guardian extends Monster { +@@ -476,7 +507,7 @@ public class Guardian extends Monster { float f = (float)(Mth.atan2(vec3.z, vec3.x) * 180.0F / (float)Math.PI) - 90.0F; this.guardian.setYRot(this.rotlerp(this.guardian.getYRot(), f, 90.0F)); this.guardian.yBodyRot = this.guardian.getYRot(); @@ -3867,7 +3867,7 @@ index 53e4a9b99bbaac7438e6d8380fbcd9d5ffe61fb9..162986914c6718438b7e1d5408bdbe5a this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true).setUnseenMemoryTicks(300)); this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, AbstractVillager.class, false).setUnseenMemoryTicks(300)); diff --git a/net/minecraft/world/entity/monster/MagmaCube.java b/net/minecraft/world/entity/monster/MagmaCube.java -index 034a41573c330b2366fb305bb0796293d5d6a187..9be4861fc5cf5e9f8f562785eb3e857b6c1d3585 100644 +index 2323a7315878e38710f8f31f7806ebda94077067..8b58e0a76c9651cacacb503391ef9b6a53a3ddbc 100644 --- a/net/minecraft/world/entity/monster/MagmaCube.java +++ b/net/minecraft/world/entity/monster/MagmaCube.java @@ -24,6 +24,28 @@ public class MagmaCube extends Slime { @@ -3899,7 +3899,7 @@ index 034a41573c330b2366fb305bb0796293d5d6a187..9be4861fc5cf5e9f8f562785eb3e857b public static AttributeSupplier.Builder createAttributes() { return Monster.createMonsterAttributes().add(Attributes.MOVEMENT_SPEED, 0.2F); } -@@ -71,6 +93,7 @@ public class MagmaCube extends Slime { +@@ -76,6 +98,7 @@ public class MagmaCube extends Slime { float f = this.getSize() * 0.1F; this.setDeltaMovement(deltaMovement.x, this.getJumpPower() + f, deltaMovement.z); this.hasImpulse = true; @@ -4261,7 +4261,7 @@ index d64e4b7175a017c92b3ffa4c2b0271c772a90030..c39072d9265b2640e3bd701dacb54aa6 protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/monster/Slime.java b/net/minecraft/world/entity/monster/Slime.java -index 6a4bdf6e8e785460c864552f21116dec8c545bd6..3b9c4f2623ddecf54b139e032d8056a7ec0d59c0 100644 +index 7abd42fa34c80e868875f0ff3986a85d1a6dcb8c..e46fd8c9f9966dab8b27004db0bc7028e95dedf2 100644 --- a/net/minecraft/world/entity/monster/Slime.java +++ b/net/minecraft/world/entity/monster/Slime.java @@ -59,6 +59,7 @@ public class Slime extends Mob implements Enemy { @@ -4321,7 +4321,7 @@ index 6a4bdf6e8e785460c864552f21116dec8c545bd6..3b9c4f2623ddecf54b139e032d8056a7 this.targetSelector .addGoal(1, new NearestAttackableTargetGoal<>(this, Player.class, 10, true, false, (entity, level) -> Math.abs(entity.getY() - this.getY()) <= 4.0)); this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, IronGolem.class, true)); -@@ -355,6 +392,7 @@ public class Slime extends Mob implements Enemy { +@@ -360,6 +397,7 @@ public class Slime extends Mob implements Enemy { Vec3 deltaMovement = this.getDeltaMovement(); this.setDeltaMovement(deltaMovement.x, this.getJumpPower(), deltaMovement.z); this.hasImpulse = true; @@ -4329,7 +4329,7 @@ index 6a4bdf6e8e785460c864552f21116dec8c545bd6..3b9c4f2623ddecf54b139e032d8056a7 } @Nullable -@@ -519,7 +557,7 @@ public class Slime extends Mob implements Enemy { +@@ -524,7 +562,7 @@ public class Slime extends Mob implements Enemy { } } @@ -4338,7 +4338,7 @@ index 6a4bdf6e8e785460c864552f21116dec8c545bd6..3b9c4f2623ddecf54b139e032d8056a7 private float yRot; private int jumpDelay; private final Slime slime; -@@ -537,21 +575,33 @@ public class Slime extends Mob implements Enemy { +@@ -542,21 +580,33 @@ public class Slime extends Mob implements Enemy { } public void setWantedMovement(double speedModifier) { @@ -4375,7 +4375,7 @@ index 6a4bdf6e8e785460c864552f21116dec8c545bd6..3b9c4f2623ddecf54b139e032d8056a7 if (this.jumpDelay-- <= 0) { this.jumpDelay = this.slime.getJumpDelay(); if (this.isAggressive) { -@@ -568,7 +618,7 @@ public class Slime extends Mob implements Enemy { +@@ -573,7 +623,7 @@ public class Slime extends Mob implements Enemy { this.mob.setSpeed(0.0F); } } else { @@ -4814,7 +4814,7 @@ index 862d32470a2eb40c947eb1ca4554737061d7bf6e..f9c119d38c2812cfeeb775e728f6c751 protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/monster/ZombifiedPiglin.java b/net/minecraft/world/entity/monster/ZombifiedPiglin.java -index d8f6612f65d9dd5f46f947c4748a9cde5cb98312..d52e83ee890ab278440a69972ad83d4dd2f972a6 100644 +index 08997d05ff75f68cd36c90eb8730dc44a052d5b8..d4f036c7d4b6652c5585f1ce5af9b26f9ed5b856 100644 --- a/net/minecraft/world/entity/monster/ZombifiedPiglin.java +++ b/net/minecraft/world/entity/monster/ZombifiedPiglin.java @@ -64,6 +64,23 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { @@ -4923,7 +4923,7 @@ index a5fb6c8247bbf41602984b094c09ed07394e9589..c3c4dfb89c807020c4147140bc23ba1c } } diff --git a/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/net/minecraft/world/entity/monster/hoglin/Hoglin.java -index 172783861b8704dc9c46c8c2f6be2d24c08e705b..d852f8cff28e3ff2189896d713d37a3400b0a70b 100644 +index 5af3c7a307e15680d15c4621870e6c17ea49c288..f304dea5ee2216b5b239dc5ce145f0aa425f5938 100644 --- a/net/minecraft/world/entity/monster/hoglin/Hoglin.java +++ b/net/minecraft/world/entity/monster/hoglin/Hoglin.java @@ -95,6 +95,23 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { @@ -4959,7 +4959,7 @@ index 172783861b8704dc9c46c8c2f6be2d24c08e705b..d852f8cff28e3ff2189896d713d37a34 profilerFiller.pop(); HoglinAi.updateActivity(this); diff --git a/net/minecraft/world/entity/monster/piglin/Piglin.java b/net/minecraft/world/entity/monster/piglin/Piglin.java -index fbbf7364b07ea49116dd86fa9722fa341978bc19..0dc2d7f71c06ba575c2ac97a4be6b2466d5407d9 100644 +index 072358efcc92f510d5281b7f37f8c36df85c2e4c..a74268846a160aa2e2e8688b1562216c2e248726 100644 --- a/net/minecraft/world/entity/monster/piglin/Piglin.java +++ b/net/minecraft/world/entity/monster/piglin/Piglin.java @@ -136,6 +136,23 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento @@ -4986,7 +4986,7 @@ index fbbf7364b07ea49116dd86fa9722fa341978bc19..0dc2d7f71c06ba575c2ac97a4be6b246 @Override protected void addAdditionalSaveData(ValueOutput output) { super.addAdditionalSaveData(output); -@@ -310,6 +327,7 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento +@@ -315,6 +332,7 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento protected void customServerAiStep(ServerLevel level) { ProfilerFiller profilerFiller = Profiler.get(); profilerFiller.push("piglinBrain"); diff --git a/purpur-server/minecraft-patches/features/0002-Configurable-entity-base-attributes.patch b/purpur-server/minecraft-patches/features/0002-Configurable-entity-base-attributes.patch index 1396abb3e..23389f977 100644 --- a/purpur-server/minecraft-patches/features/0002-Configurable-entity-base-attributes.patch +++ b/purpur-server/minecraft-patches/features/0002-Configurable-entity-base-attributes.patch @@ -1161,7 +1161,7 @@ index 70cf903d95d35b539e9a299a4035c8ddde5e4b97..a5243b7969fec5d60b94368caf5e962c protected void registerGoals() { super.registerGoals(); diff --git a/net/minecraft/world/entity/monster/Ghast.java b/net/minecraft/world/entity/monster/Ghast.java -index 1d888ebabecfd1beebdf718c5d771b312070245a..fdbf14ff7e62d8db023b3d3bdf4ae685b5f085a8 100644 +index efe4ed636d85624e4122880f95c634ffa7a3891a..9e4048d55a386aad22f2054632dff457b10f1068 100644 --- a/net/minecraft/world/entity/monster/Ghast.java +++ b/net/minecraft/world/entity/monster/Ghast.java @@ -74,6 +74,14 @@ public class Ghast extends Mob implements Enemy { @@ -1201,7 +1201,7 @@ index dcbe6bbce0baa4fad7fe180944beeb6ca4026f7d..416bb85fc87b5f9e372f33df8fe27f12 return Monster.createMonsterAttributes() .add(Attributes.MAX_HEALTH, 100.0) diff --git a/net/minecraft/world/entity/monster/Guardian.java b/net/minecraft/world/entity/monster/Guardian.java -index 339c81d0a9833e762ca4fc63430d22266f95627d..c59f2dd8661d7a6bd35aaa1933a60a47f795bdd1 100644 +index 3c20818bf6f86cb34666d12084caf13d409a35ca..70fbfe1d4d100d742712d19daf69c6b93891dab6 100644 --- a/net/minecraft/world/entity/monster/Guardian.java +++ b/net/minecraft/world/entity/monster/Guardian.java @@ -90,6 +90,14 @@ public class Guardian extends Monster { @@ -1264,7 +1264,7 @@ index 162986914c6718438b7e1d5408bdbe5a4d3e3a68..b6872c94d769346ed2a8bb2406fc2b39 protected void registerGoals() { super.registerGoals(); diff --git a/net/minecraft/world/entity/monster/MagmaCube.java b/net/minecraft/world/entity/monster/MagmaCube.java -index 9be4861fc5cf5e9f8f562785eb3e857b6c1d3585..f39611741c4dacec2b1ad2d25ca9b7d47c188049 100644 +index 8b58e0a76c9651cacacb503391ef9b6a53a3ddbc..db9e4dff83640b1e499db944a0c1cf3b869bc314 100644 --- a/net/minecraft/world/entity/monster/MagmaCube.java +++ b/net/minecraft/world/entity/monster/MagmaCube.java @@ -46,6 +46,28 @@ public class MagmaCube extends Slime { @@ -1442,7 +1442,7 @@ index c39072d9265b2640e3bd701dacb54aa629f3b230..8d1f83ba8042435a0dc1e6e1fb987317 protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/monster/Slime.java b/net/minecraft/world/entity/monster/Slime.java -index 3b9c4f2623ddecf54b139e032d8056a7ec0d59c0..beb504f9a5de48d9631585648a98cd3d2d682d76 100644 +index e46fd8c9f9966dab8b27004db0bc7028e95dedf2..5af9f8182fa8bc3720cf30ed073ecc8050a76b43 100644 --- a/net/minecraft/world/entity/monster/Slime.java +++ b/net/minecraft/world/entity/monster/Slime.java @@ -101,6 +101,39 @@ public class Slime extends Mob implements Enemy { @@ -1700,7 +1700,7 @@ index f9c119d38c2812cfeeb775e728f6c751bf748c85..1de823b94ee0e53109b4dd3e726f721e protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/monster/ZombifiedPiglin.java b/net/minecraft/world/entity/monster/ZombifiedPiglin.java -index d52e83ee890ab278440a69972ad83d4dd2f972a6..819faafec711edc6e837a2f52a318910f4ef0a5c 100644 +index d4f036c7d4b6652c5585f1ce5af9b26f9ed5b856..b78ba21e6aa753e3df6545432038daa0070fa7b7 100644 --- a/net/minecraft/world/entity/monster/ZombifiedPiglin.java +++ b/net/minecraft/world/entity/monster/ZombifiedPiglin.java @@ -81,6 +81,14 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { @@ -1718,7 +1718,7 @@ index d52e83ee890ab278440a69972ad83d4dd2f972a6..819faafec711edc6e837a2f52a318910 @Override public void setPersistentAngerTarget(@Nullable UUID target) { this.persistentAngerTarget = target; -@@ -261,7 +269,7 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { +@@ -266,7 +274,7 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { @Override protected void randomizeReinforcementsChance() { @@ -1747,7 +1747,7 @@ index c3c4dfb89c807020c4147140bc23ba1ce5cfe888..f31a29531cc7d63bed5a4bcbe3986bcc protected BodyRotationControl createBodyControl() { return new Creaking.CreakingBodyRotationControl(this); diff --git a/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/net/minecraft/world/entity/monster/hoglin/Hoglin.java -index d852f8cff28e3ff2189896d713d37a3400b0a70b..1062df067d6b98ffba27864450d8a867446aae79 100644 +index f304dea5ee2216b5b239dc5ce145f0aa425f5938..b468ad62723c20b9961c8b4b9c0c34a9518d98ea 100644 --- a/net/minecraft/world/entity/monster/hoglin/Hoglin.java +++ b/net/minecraft/world/entity/monster/hoglin/Hoglin.java @@ -112,6 +112,14 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { @@ -1766,7 +1766,7 @@ index d852f8cff28e3ff2189896d713d37a3400b0a70b..1062df067d6b98ffba27864450d8a867 public void setTimeInOverworld(int timeInOverworld) { this.timeInOverworld = timeInOverworld; diff --git a/net/minecraft/world/entity/monster/piglin/Piglin.java b/net/minecraft/world/entity/monster/piglin/Piglin.java -index 0dc2d7f71c06ba575c2ac97a4be6b2466d5407d9..19211c0d78113da7827a071fd510b4f36e63a9f2 100644 +index a74268846a160aa2e2e8688b1562216c2e248726..471d4d375eb437a42361f60e27919c209221d743 100644 --- a/net/minecraft/world/entity/monster/piglin/Piglin.java +++ b/net/minecraft/world/entity/monster/piglin/Piglin.java @@ -153,6 +153,14 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento diff --git a/purpur-server/minecraft-patches/features/0003-Barrels-and-enderchests-6-rows.patch b/purpur-server/minecraft-patches/features/0003-Barrels-and-enderchests-6-rows.patch index 745776b8c..d8f19b979 100644 --- a/purpur-server/minecraft-patches/features/0003-Barrels-and-enderchests-6-rows.patch +++ b/purpur-server/minecraft-patches/features/0003-Barrels-and-enderchests-6-rows.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Barrels and enderchests 6 rows diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java -index 1d6f77ade1456fd4ffc425e0c75ea98e86be7a42..72d24ebbbcd7d6db849190ca646ecdaf1053d0bb 100644 +index 235c179000b389c3b30bbe1764b837b634546512..f6b86ee7b9e5cc1b3ce0d5097e1ba8b566038a11 100644 --- a/net/minecraft/server/players/PlayerList.java +++ b/net/minecraft/server/players/PlayerList.java -@@ -929,6 +929,27 @@ public abstract class PlayerList { +@@ -882,6 +882,27 @@ public abstract class PlayerList { player.getBukkitEntity().recalculatePermissions(); // CraftBukkit this.server.getCommands().sendCommands(player); } // Paper - Add sendOpLevel API diff --git a/purpur-server/minecraft-patches/features/0015-Add-mobGriefing-override-to-everything-affected.patch b/purpur-server/minecraft-patches/features/0015-Add-mobGriefing-override-to-everything-affected.patch index d022ca456..9c81dd334 100644 --- a/purpur-server/minecraft-patches/features/0015-Add-mobGriefing-override-to-everything-affected.patch +++ b/purpur-server/minecraft-patches/features/0015-Add-mobGriefing-override-to-everything-affected.patch @@ -227,10 +227,10 @@ index 23722456ce82dcc6b571b96e5c9b0d70005f9c2e..97662c39001b4433601f46ef83f28c0e continue; } diff --git a/net/minecraft/world/entity/monster/piglin/Piglin.java b/net/minecraft/world/entity/monster/piglin/Piglin.java -index 19211c0d78113da7827a071fd510b4f36e63a9f2..4e1a7b6caf8c0a3721a3a799261d7b63301c3b29 100644 +index 471d4d375eb437a42361f60e27919c209221d743..de65ff0bf3de1d20360bc0ebb1cd3dc48c5560fe 100644 --- a/net/minecraft/world/entity/monster/piglin/Piglin.java +++ b/net/minecraft/world/entity/monster/piglin/Piglin.java -@@ -438,7 +438,7 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento +@@ -443,7 +443,7 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento @Override public boolean wantsToPickUp(ServerLevel level, ItemStack stack) { diff --git a/purpur-server/minecraft-patches/features/0018-API-for-any-mob-to-burn-daylight.patch b/purpur-server/minecraft-patches/features/0018-API-for-any-mob-to-burn-daylight.patch index f1861171f..478624168 100644 --- a/purpur-server/minecraft-patches/features/0018-API-for-any-mob-to-burn-daylight.patch +++ b/purpur-server/minecraft-patches/features/0018-API-for-any-mob-to-burn-daylight.patch @@ -6,10 +6,10 @@ Subject: [PATCH] API for any mob to burn daylight Co-authored by: Encode42 diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index 75039c43a1f7d6f22fdebd1bac56a028354d1527..906848dce743c66b18899c21d408d28ad6dc642c 100644 +index 1c318158e1cc016cf7f26d352519f45bc244cee8..1b9f3e94206cc5627ca6c98f142766d4aaa7f4d7 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java -@@ -544,6 +544,24 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name +@@ -543,6 +543,24 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name } // Purpur end - Add canSaveToDisk to Entity diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch index b50049a18..3e11403f7 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch @@ -52,15 +52,15 @@ Entity entity = damageSource.getEntity(); if (!( // Paper - split the if statement. If below statement is false, hurtServer would not have been evaluated. Return false. !(entity instanceof Player player && !this.canHarmPlayer(player)) -@@ -1549,6 +_,7 @@ - serverLevel.removePlayerImmediately(this, Entity.RemovalReason.CHANGED_DIMENSION); - this.unsetRemoved(); - // CraftBukkit end +@@ -1545,6 +_,7 @@ + + profilerFiller.pop(); + profilerFiller.push("placing"); + this.portalPos = org.bukkit.craftbukkit.util.CraftLocation.toBlockPosition(exit); // Purpur - Fix stuck in portals this.setServerLevel(level); this.connection.internalTeleport(PositionMoveRotation.of(teleportTransition), teleportTransition.relatives()); // CraftBukkit - use internal teleport without event this.connection.resetPosition(); -@@ -1668,7 +_,7 @@ +@@ -1646,7 +_,7 @@ new AABB(vec3.x() - 8.0, vec3.y() - 5.0, vec3.z() - 8.0, vec3.x() + 8.0, vec3.y() + 5.0, vec3.z() + 8.0), monster -> monster.isPreventingPlayerRest(this.level(), this) ); @@ -69,7 +69,7 @@ return Either.left(Player.BedSleepingProblem.NOT_SAFE); } } -@@ -1705,7 +_,19 @@ +@@ -1683,7 +_,19 @@ CriteriaTriggers.SLEPT_IN_BED.trigger(this); }); if (!this.level().canSleepThroughNights()) { @@ -90,7 +90,7 @@ } this.level().updateSleepingPlayerList(); -@@ -1797,6 +_,7 @@ +@@ -1775,6 +_,7 @@ @Override public void openTextEdit(SignBlockEntity signEntity, boolean isFrontText) { @@ -98,7 +98,7 @@ this.connection.send(new ClientboundBlockUpdatePacket(this.level(), signEntity.getBlockPos())); this.connection.send(new ClientboundOpenSignEditorPacket(signEntity.getBlockPos(), isFrontText)); } -@@ -2106,6 +_,26 @@ +@@ -2084,6 +_,26 @@ this.lastSentExp = -1; // CraftBukkit - Added to reset } @@ -125,7 +125,7 @@ @Override public void displayClientMessage(Component message, boolean overlay) { this.sendSystemMessage(message, overlay); -@@ -2327,6 +_,20 @@ +@@ -2318,6 +_,20 @@ ); } @@ -146,7 +146,7 @@ public void sendSystemMessage(Component message) { this.sendSystemMessage(message, false); } -@@ -2465,7 +_,67 @@ +@@ -2456,7 +_,67 @@ public void resetLastActionTime() { this.lastActionTime = Util.getMillis(); @@ -215,7 +215,7 @@ public ServerStatsCounter getStats() { return this.stats; -@@ -3109,4 +_,56 @@ +@@ -3097,4 +_,65 @@ return (org.bukkit.craftbukkit.entity.CraftPlayer) super.getBukkitEntity(); } // CraftBukkit end @@ -235,9 +235,18 @@ + + ServerLevel toLevel = ((org.bukkit.craftbukkit.CraftWorld) to.getWorld()).getHandle(); + if (this.level() == toLevel) { -+ this.connection.teleport(to); ++ this.connection.internalTeleport(to); + } else { -+ this.server.getPlayerList().respawn(this, true, RemovalReason.KILLED, org.bukkit.event.player.PlayerRespawnEvent.RespawnReason.DEATH, to); ++ this.teleport(new TeleportTransition( ++ toLevel, ++ org.bukkit.craftbukkit.util.CraftLocation.toVec3(to), ++ Vec3.ZERO, ++ to.getYaw(), ++ to.getPitch(), ++ net.minecraft.world.entity.Relative.ALL, ++ TeleportTransition.DO_NOTHING, ++ org.bukkit.event.player.PlayerTeleportEvent.TeleportCause.UNKNOWN ++ )); + } + } + // Purpur end - Add option to teleport to spawn if outside world border diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/players/PlayerList.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/players/PlayerList.java.patch index c407cb56c..4bb985c0d 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/players/PlayerList.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/players/PlayerList.java.patch @@ -16,7 +16,7 @@ ServerLevel serverLevel = player.level(); player.awardStat(Stats.LEAVE_GAME); // CraftBukkit start - Quitting must be before we do final save of data, in case plugins need to modify it -@@ -810,6 +_,20 @@ +@@ -763,6 +_,20 @@ } } @@ -37,7 +37,7 @@ public void broadcastAll(Packet packet, ResourceKey dimension) { for (ServerPlayer serverPlayer : this.players) { if (serverPlayer.level().dimension() == dimension) { -@@ -904,6 +_,7 @@ +@@ -857,6 +_,7 @@ } else { b = (byte)(24 + permLevel); } @@ -45,7 +45,7 @@ player.connection.send(new ClientboundEntityEventPacket(player, b)); } -@@ -916,7 +_,7 @@ +@@ -869,7 +_,7 @@ // Paper start - whitelist verify event / login event public LoginResult canBypassFullServerLogin(final NameAndId nameAndId, final LoginResult currentResult) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch index 8696af1b1..878834bd9 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch @@ -7,8 +7,8 @@ + public static javax.script.ScriptEngine scriptEngine = new javax.script.ScriptEngineManager().getEngineByName("rhino"); // Purpur - Configurable entity base attributes // CraftBukkit start private static final int CURRENT_LEVEL = 2; - public boolean preserveMotion = true; // Paper - Fix Entity Teleportation and cancel velocity if teleported; keep initial motion on first snapTo -@@ -282,8 +_,9 @@ + static boolean isLevelAtLeast(ValueInput input, int level) { +@@ -281,8 +_,9 @@ public double xOld; public double yOld; public double zOld; @@ -19,7 +19,7 @@ public int tickCount; private int remainingFireTicks; public boolean wasTouchingWater; -@@ -317,8 +_,8 @@ +@@ -316,8 +_,8 @@ public PortalProcessor portalProcess; public int portalCooldown; private boolean invulnerable; @@ -30,7 +30,7 @@ private boolean hasGlowingTag; private final Set tags = new io.papermc.paper.util.SizeLimitedSet<>(new it.unimi.dsi.fastutil.objects.ObjectOpenHashSet<>(), MAX_ENTITY_TAG_COUNT); // Paper - fully limit tag size - replace set impl private final double[] pistonDeltas = new double[]{0.0, 0.0, 0.0}; -@@ -373,6 +_,7 @@ +@@ -372,6 +_,7 @@ public long activatedTick = Integer.MIN_VALUE; public boolean isTemporarilyActive; public long activatedImmunityTick = Integer.MIN_VALUE; @@ -38,7 +38,7 @@ public void inactiveTick() { } -@@ -535,10 +_,21 @@ +@@ -534,10 +_,21 @@ } // Paper end - optimise entity tracker @@ -60,7 +60,7 @@ this.position = Vec3.ZERO; this.blockPosition = BlockPos.ZERO; this.chunkPosition = ChunkPos.ZERO; -@@ -917,6 +_,7 @@ +@@ -916,6 +_,7 @@ && this.level.paperConfig().environment.netherCeilingVoidDamageHeight.test(v -> this.getY() >= v) && (!(this instanceof Player player) || !player.getAbilities().invulnerable))) { // Paper end - Configurable nether ceiling damage @@ -68,7 +68,7 @@ this.onBelowWorld(); } } -@@ -1942,7 +_,7 @@ +@@ -1941,7 +_,7 @@ } public boolean fireImmune() { @@ -77,7 +77,7 @@ } public boolean causeFallDamage(double fallDistance, float damageMultiplier, DamageSource damageSource) { -@@ -2642,6 +_,11 @@ +@@ -2634,6 +_,11 @@ output.putBoolean("Paper.FreezeLock", true); } // Paper end @@ -89,7 +89,7 @@ } catch (Throwable var7) { CrashReport crashReport = CrashReport.forThrowable(var7, "Saving entity NBT"); CrashReportCategory crashReportCategory = crashReport.addCategory("Entity being saved"); -@@ -2762,6 +_,9 @@ +@@ -2754,6 +_,9 @@ } freezeLocked = input.getBooleanOr("Paper.FreezeLock", false); // Paper end @@ -99,7 +99,7 @@ } catch (Throwable var7) { CrashReport crashReport = CrashReport.forThrowable(var7, "Loading entity NBT"); CrashReportCategory crashReportCategory = crashReport.addCategory("Entity being loaded"); -@@ -3034,6 +_,7 @@ +@@ -3026,6 +_,7 @@ if (this.isAlive() && this instanceof Leashable leashable2) { if (leashable2.getLeashHolder() == player) { if (!this.level().isClientSide()) { @@ -107,7 +107,7 @@ // Paper start - EntityUnleashEvent if (!org.bukkit.craftbukkit.event.CraftEventFactory.handlePlayerUnleashEntityEvent( leashable2, player, hand, !player.hasInfiniteMaterials(), true -@@ -3458,15 +_,18 @@ +@@ -3450,15 +_,18 @@ return Vec3.directionFromRotation(this.getRotationVector()); } @@ -127,7 +127,7 @@ } } } -@@ -3671,7 +_,7 @@ +@@ -3663,7 +_,7 @@ } public int getMaxAirSupply() { @@ -136,8 +136,8 @@ } public int getAirSupply() { -@@ -4233,7 +_,7 @@ - // CraftBukkit end +@@ -4200,7 +_,7 @@ + } public boolean canUsePortal(boolean allowPassengers) { - return (allowPassengers || !this.isPassenger()) && this.isAlive(); @@ -145,7 +145,7 @@ } public boolean canTeleport(Level fromLevel, Level toLevel) { -@@ -4748,6 +_,12 @@ +@@ -4715,6 +_,12 @@ return Mth.lerp(partialTick, this.yRotO, this.yRot); } @@ -158,7 +158,7 @@ // Paper start - optimise collisions public boolean updateFluidHeightAndDoFluidPushing(final TagKey fluid, final double flowScale) { if (this.touchingUnloadedChunk()) { -@@ -5165,7 +_,7 @@ +@@ -5132,7 +_,7 @@ } public float maxUpStep() { diff --git a/purpur-server/paper-patches/features/0002-Ridables.patch b/purpur-server/paper-patches/features/0002-Ridables.patch index 0508aae70..caedaa5e0 100644 --- a/purpur-server/paper-patches/features/0002-Ridables.patch +++ b/purpur-server/paper-patches/features/0002-Ridables.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Ridables diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 15686e234b7e1a2833c0962fbead94c0cfd0a1e4..a80003a07834a9eafa554afd13afa13a3eac1c30 100644 +index bf3674f8984dd0ee441e04f92b747f908d629953..132e045f3885146a9a6510c6ed51fcb85e1c47ce 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -1348,4 +1348,26 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -1342,4 +1342,26 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { return this.entity.get(io.papermc.paper.datacomponent.PaperDataComponentType.bukkitToMinecraft(type)) != null; } @@ -36,10 +36,10 @@ index 15686e234b7e1a2833c0962fbead94c0cfd0a1e4..a80003a07834a9eafa554afd13afa13a + // Purpur end - Ridables } diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index cc108383fa62b3ea5781c1ac58f9f8a24412e6c3..0b536e4ee904cba3a724d98d491185cfded3d723 100644 +index 00af7ce338ea49375ce1a5e95d01fb24b1c43de8..691c7e393ff6a0d4b132f25b6de2b346b97f7169 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -517,6 +517,15 @@ public class CraftEventFactory { +@@ -521,6 +521,15 @@ public class CraftEventFactory { } craftServer.getPluginManager().callEvent(event); @@ -55,7 +55,7 @@ index cc108383fa62b3ea5781c1ac58f9f8a24412e6c3..0b536e4ee904cba3a724d98d491185cf return event; } -@@ -1049,6 +1058,7 @@ public class CraftEventFactory { +@@ -1053,6 +1062,7 @@ public class CraftEventFactory { EntityDamageEvent event; if (damager != null) { event = new EntityDamageByEntityEvent(damager.getBukkitEntity(), damagee.getBukkitEntity(), cause, bukkitDamageSource, modifiers, modifierFunctions, critical); diff --git a/purpur-server/paper-patches/features/0004-Add-EntityTeleportHinderedEvent.patch b/purpur-server/paper-patches/features/0004-Add-EntityTeleportHinderedEvent.patch index 052b12695..539386653 100644 --- a/purpur-server/paper-patches/features/0004-Add-EntityTeleportHinderedEvent.patch +++ b/purpur-server/paper-patches/features/0004-Add-EntityTeleportHinderedEvent.patch @@ -16,34 +16,14 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . -diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index a80003a07834a9eafa554afd13afa13a3eac1c30..b605a2662b72fde523bbe22142e712b059d43a0a 100644 ---- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -313,6 +313,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { - boolean retainPassengers = flagSet.contains(io.papermc.paper.entity.TeleportFlag.EntityState.RETAIN_PASSENGERS); - // Don't allow teleporting between worlds while keeping passengers - if (flagSet.contains(io.papermc.paper.entity.TeleportFlag.EntityState.RETAIN_PASSENGERS) && this.entity.isVehicle() && location.getWorld() != this.getWorld()) { -+ if (!new org.purpurmc.purpur.event.entity.EntityTeleportHinderedEvent(entity.getBukkitEntity(), org.purpurmc.purpur.event.entity.EntityTeleportHinderedEvent.Reason.IS_VEHICLE, cause).callEvent()) // Purpur - Add EntityTeleportHinderedEvent - return false; - } - diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index d352b1130c287007ea12392cc613e6bb0449d14b..4eb7d90f38e744b51c11d334a44dacb0a9ac6956 100644 +index ecb01b035d81a42911db1c8364e23ccba4a8b790..56bbaab57432a78e85bc0013cd7f991f662f0cd2 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -1426,6 +1426,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player, PluginMessa - // Paper start - Teleport passenger API - // Don't allow teleporting between worlds while keeping passengers - if (ignorePassengers && entity.isVehicle() && location.getWorld() != this.getWorld()) { -+ if (!new org.purpurmc.purpur.event.entity.EntityTeleportHinderedEvent(entity.getBukkitEntity(), org.purpurmc.purpur.event.entity.EntityTeleportHinderedEvent.Reason.IS_VEHICLE, cause).callEvent()) // Purpur - Add EntityTeleportHinderedEvent - return false; - } - -@@ -1447,6 +1448,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player, PluginMessa - } - - if (entity.isVehicle() && !ignorePassengers) { // Paper - Teleport API +@@ -1382,6 +1382,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player, PluginMessa + // Minecraft does not currently support teleporting players between worlds with passengers. + // It causes them to be dismounted, and causes weird behavior. + if (location.getWorld() != this.getWorld() && !this.getHandle().passengers.isEmpty()) { + if (!new org.purpurmc.purpur.event.entity.EntityTeleportHinderedEvent(entity.getBukkitEntity(), org.purpurmc.purpur.event.entity.EntityTeleportHinderedEvent.Reason.IS_VEHICLE, cause).callEvent()) // Purpur - Add EntityTeleportHinderedEvent return false; } diff --git a/purpur-server/paper-patches/features/0005-API-for-any-mob-to-burn-daylight.patch b/purpur-server/paper-patches/features/0005-API-for-any-mob-to-burn-daylight.patch index 86b85f5b9..4615615b8 100644 --- a/purpur-server/paper-patches/features/0005-API-for-any-mob-to-burn-daylight.patch +++ b/purpur-server/paper-patches/features/0005-API-for-any-mob-to-burn-daylight.patch @@ -6,10 +6,10 @@ Subject: [PATCH] API for any mob to burn daylight Co-authored by: Encode42 diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index b605a2662b72fde523bbe22142e712b059d43a0a..11c1a0abad4efb65547c5b42869ec06bb74b4d59 100644 +index 132e045f3885146a9a6510c6ed51fcb85e1c47ce..6ac0f9d208c41182b7c596ab809de41f07f265a9 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -124,6 +124,13 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -125,6 +125,13 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { } // Purpur end - Fire Immunity API @@ -24,10 +24,10 @@ index b605a2662b72fde523bbe22142e712b059d43a0a..11c1a0abad4efb65547c5b42869ec06b Preconditions.checkArgument(entity != null, "Unknown entity"); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index 74e2fc6e1f1c4513accaa4e9ad7f614021a4ea76..b266da70a69b8acfb0caec96af0399126d258fb0 100644 +index 3feb3ee939ce3814aec289841bae7f928893b83e..a0f514ed2ddf450a78811bc918a594c30e759081 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -1099,4 +1099,16 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { +@@ -1088,4 +1088,16 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { public CombatTracker getCombatTracker() { return this.getHandle().getCombatTracker().paperCombatTracker; } diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java.patch index b692ed88b..b515f8d97 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -112,6 +_,18 @@ +@@ -113,6 +_,18 @@ this.entityType = CraftEntityType.minecraftToBukkit(entity.getType()); } diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java.patch index 4ebff3601..c713f73ad 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -483,7 +_,7 @@ +@@ -482,7 +_,7 @@ net.minecraft.server.level.ServerPlayer nmsKiller = killer == null ? null : ((CraftPlayer) killer).getHandle(); this.getHandle().setLastHurtByMob(nmsKiller); if (nmsKiller != null) { diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch index 1d7be1a84..062cb1df2 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -572,10 +_,15 @@ +@@ -571,10 +_,15 @@ @Override public void setPlayerListName(String name) { @@ -17,7 +17,7 @@ if (this.getHandle().connection == null) return; // Paper - Updates are possible before the player has fully joined for (ServerPlayer player : this.server.getHandle().players) { if (player.getBukkitEntity().canSee(this)) { -@@ -978,6 +_,80 @@ +@@ -977,6 +_,80 @@ } } @@ -98,7 +98,7 @@ @Override public void sendBlockDamage(Location loc, float progress, org.bukkit.entity.Entity source) { Preconditions.checkArgument(source != null, "source must not be null"); -@@ -2590,6 +_,28 @@ +@@ -2475,6 +_,28 @@ public float getWalkSpeed() { return this.getHandle().getAbilities().walkingSpeed * 2f; } @@ -110,7 +110,7 @@ + } + + @Override -+ public boolean teleportOffline(Location destination, PlayerTeleportEvent.TeleportCause cause) { ++ public boolean teleportOffline(Location destination, org.bukkit.event.player.PlayerTeleportEvent.TeleportCause cause) { + return this.teleport(destination, cause); + } + @@ -120,7 +120,7 @@ + } + + @Override -+ public java.util.concurrent.CompletableFuture teleportOfflineAsync(Location destination, PlayerTeleportEvent.TeleportCause cause) { ++ public java.util.concurrent.CompletableFuture teleportOfflineAsync(Location destination, org.bukkit.event.player.PlayerTeleportEvent.TeleportCause cause) { + return this.teleportAsync(destination, cause); + } + // Purpur end - OfflinePlayer API