mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-18 00:47:42 +01:00
Updated Upstream (Paper)
Upstream has released updates that appear to apply and compile correctly Paper Changes: aeb6e7dd2 Updated Upstream (Bukkit/CraftBukkit/Spigot) (#5601) b0a4f353b fix cancelling block falling causing client desync (fixes #5386) (#5419)
This commit is contained in:
@@ -14054,7 +14054,7 @@ index 3c804c7b20a14ea6e510810e2be10c1cc89ff5c1..3738c51b5e673c439d88a7ef7f4614f3
|
||||
return new TicketType<>(s, comparator, 0L);
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/server/level/WorldServer.java b/src/main/java/net/minecraft/server/level/WorldServer.java
|
||||
index 47fbb8df04b2b77e10314666e87eaef621cffb3b..a42d3c6c227a74d691278a65a9c516f6507b6865 100644
|
||||
index 7e032845fe9a46d33236444d62405a41e29daa17..a8a2c29874e95dc08b85eb41882fc947108fbe5b 100644
|
||||
--- a/src/main/java/net/minecraft/server/level/WorldServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/level/WorldServer.java
|
||||
@@ -168,12 +168,13 @@ import org.bukkit.event.server.MapInitializeEvent;
|
||||
@@ -14973,7 +14973,7 @@ index 47fbb8df04b2b77e10314666e87eaef621cffb3b..a42d3c6c227a74d691278a65a9c516f6
|
||||
throw (IllegalStateException) SystemUtils.c((Throwable) (new IllegalStateException("Removing entity while ticking!")));
|
||||
} else {
|
||||
this.removeEntityFromChunk(entity);
|
||||
@@ -1684,20 +2304,33 @@ public class WorldServer extends World implements GeneratorAccessSeed {
|
||||
@@ -1683,20 +2303,33 @@ public class WorldServer extends World implements GeneratorAccessSeed {
|
||||
|
||||
@Override
|
||||
public void notify(BlockPosition blockposition, IBlockData iblockdata, IBlockData iblockdata1, int i) {
|
||||
@@ -15009,7 +15009,7 @@ index 47fbb8df04b2b77e10314666e87eaef621cffb3b..a42d3c6c227a74d691278a65a9c516f6
|
||||
} catch (java.util.ConcurrentModificationException ex) {
|
||||
// This can happen because the pathfinder update below may trigger a chunk load, which in turn may cause more navigators to register
|
||||
// In this case we just run the update again across all the iterators as the chunk will then be loaded
|
||||
@@ -1711,6 +2344,9 @@ public class WorldServer extends World implements GeneratorAccessSeed {
|
||||
@@ -1710,6 +2343,9 @@ public class WorldServer extends World implements GeneratorAccessSeed {
|
||||
navigationabstract.b(blockposition);
|
||||
}
|
||||
}
|
||||
@@ -16820,20 +16820,10 @@ index c39c50e53549e9cb9d3520bc7e8b7e89cfa20163..5bce47fa8f191bc1d33c04c9865cb0ef
|
||||
public void closeInventory() {
|
||||
this.activeContainer = this.defaultContainer;
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/projectile/EntityArrow.java b/src/main/java/net/minecraft/world/entity/projectile/EntityArrow.java
|
||||
index 2f8b3587f527620152609d5be342b328a7621e0f..e440d26c920c4efddf958c61bfdfa508273062cc 100644
|
||||
index b0e8e9934edbb0cf7ac063e4903452be526afbc7..42c1a7e8d51868c74e92d97f1df8d36fcaab6252 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/projectile/EntityArrow.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/projectile/EntityArrow.java
|
||||
@@ -211,7 +211,9 @@ public abstract class EntityArrow extends IProjectile {
|
||||
// Paper end
|
||||
|
||||
if (object != null && !flag) {
|
||||
+ if (org.bukkit.craftbukkit.event.CraftEventFactory.callProjectileHitEvent(this, (MovingObjectPosition) object)) { // CraftBukkit - Call event // Paper - make cancellable // Tuinity - implement cancellation properly
|
||||
this.a((MovingObjectPosition) object);
|
||||
+ } // Tuinity - implement cancellation properly
|
||||
this.impulse = true;
|
||||
}
|
||||
|
||||
@@ -545,7 +547,8 @@ public abstract class EntityArrow extends IProjectile {
|
||||
@@ -545,7 +545,8 @@ public abstract class EntityArrow extends IProjectile {
|
||||
}
|
||||
itemstack = item.getItemStack();
|
||||
}
|
||||
@@ -16843,101 +16833,6 @@ index 2f8b3587f527620152609d5be342b328a7621e0f..e440d26c920c4efddf958c61bfdfa508
|
||||
|
||||
if (this.fromPlayer == EntityArrow.PickupStatus.ALLOWED && !entityhuman.inventory.pickup(itemstack)) {
|
||||
// CraftBukkit end
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/projectile/EntityFireball.java b/src/main/java/net/minecraft/world/entity/projectile/EntityFireball.java
|
||||
index c4248531d4a6a11259d9d78ce1d7683a86840d40..f3077c22445949c484a73ee56eab593f527795a6 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/projectile/EntityFireball.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/projectile/EntityFireball.java
|
||||
@@ -83,7 +83,9 @@ public abstract class EntityFireball extends IProjectile {
|
||||
// Paper end
|
||||
|
||||
if (movingobjectposition != null && movingobjectposition.getType() != MovingObjectPosition.EnumMovingObjectType.MISS) { // Paper - add null check in case cancelled
|
||||
+ if (org.bukkit.craftbukkit.event.CraftEventFactory.callProjectileHitEvent(this, movingobjectposition)) { // CraftBukkit - Call event // Paper - make cancellable // Tuinity - implement cancellation properly
|
||||
this.a(movingobjectposition);
|
||||
+ } // Tuinity - implement cancellation properly
|
||||
|
||||
// CraftBukkit start - Fire ProjectileHitEvent
|
||||
if (this.dead) {
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/projectile/EntityFireworks.java b/src/main/java/net/minecraft/world/entity/projectile/EntityFireworks.java
|
||||
index 9cc59439ae2c4e758c44b2a92b78bc328efdfa1b..f9a355c847d778a9aad1987882fc816af92450ba 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/projectile/EntityFireworks.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/projectile/EntityFireworks.java
|
||||
@@ -149,7 +149,9 @@ public class EntityFireworks extends IProjectile {
|
||||
MovingObjectPosition movingobjectposition = ProjectileHelper.a((Entity) this, this::a);
|
||||
|
||||
if (!this.noclip) {
|
||||
+ if (org.bukkit.craftbukkit.event.CraftEventFactory.callProjectileHitEvent(this, movingobjectposition)) { // CraftBukkit - Call event // Paper - make cancellable // Tuinity - implement cancellation properly
|
||||
this.a(movingobjectposition);
|
||||
+ } // Tuinity - implement cancellation properly
|
||||
this.impulse = true;
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/projectile/EntityFishingHook.java b/src/main/java/net/minecraft/world/entity/projectile/EntityFishingHook.java
|
||||
index addea9c1309a308b76c93ee71e839c915bc773e8..dc6d279766ccc83a8f450028a09491b1c88f524c 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/projectile/EntityFishingHook.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/projectile/EntityFishingHook.java
|
||||
@@ -265,7 +265,9 @@ public class EntityFishingHook extends IProjectile {
|
||||
private void m() {
|
||||
MovingObjectPosition movingobjectposition = ProjectileHelper.a((Entity) this, this::a);
|
||||
|
||||
+ if (org.bukkit.craftbukkit.event.CraftEventFactory.callProjectileHitEvent(this, movingobjectposition)) { // CraftBukkit - Call event // Paper - make cancellable // Tuinity - implement cancellation properly
|
||||
this.a(movingobjectposition);
|
||||
+ } // Tuinity - implement cancellation properly
|
||||
}
|
||||
|
||||
@Override
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/projectile/EntityLlamaSpit.java b/src/main/java/net/minecraft/world/entity/projectile/EntityLlamaSpit.java
|
||||
index 39b34e619cf7ac3ad308f98551c796ac47073484..8aef834a6e8fcf5d44986745affb8f27bc3dfd6b 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/projectile/EntityLlamaSpit.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/projectile/EntityLlamaSpit.java
|
||||
@@ -34,7 +34,9 @@ public class EntityLlamaSpit extends IProjectile {
|
||||
MovingObjectPosition movingobjectposition = ProjectileHelper.a((Entity) this, this::a);
|
||||
|
||||
if (movingobjectposition != null) {
|
||||
+ if (org.bukkit.craftbukkit.event.CraftEventFactory.callProjectileHitEvent(this, movingobjectposition)) { // CraftBukkit - Call event // Paper - make cancellable // Tuinity - implement cancellation properly
|
||||
this.a(movingobjectposition);
|
||||
+ } // Tuinity - implement cancellation properly
|
||||
}
|
||||
|
||||
double d0 = this.locX() + vec3d.x;
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/projectile/EntityProjectile.java b/src/main/java/net/minecraft/world/entity/projectile/EntityProjectile.java
|
||||
index 3b379e83b79bd9b46dbdd4a48ac3842abc4dfbb8..e55061b6c04b4bde92404a6ef58ba9a52cd99c1d 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/projectile/EntityProjectile.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/projectile/EntityProjectile.java
|
||||
@@ -65,7 +65,7 @@ public abstract class EntityProjectile extends IProjectile {
|
||||
movingobjectposition = null;
|
||||
}
|
||||
}
|
||||
- if (movingobjectposition != null) {
|
||||
+ if (movingobjectposition != null && org.bukkit.craftbukkit.event.CraftEventFactory.callProjectileHitEvent(this, movingobjectposition)) { // Tuinity - implement cancellation properly
|
||||
// Paper end
|
||||
this.a(movingobjectposition);
|
||||
} // Paper
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/projectile/EntityShulkerBullet.java b/src/main/java/net/minecraft/world/entity/projectile/EntityShulkerBullet.java
|
||||
index c3dcebad0706386e52ef2d28f2074cb6aed9f9e4..1ae528ccd09a6536b3aac320e6218f03c274d6a9 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/projectile/EntityShulkerBullet.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/projectile/EntityShulkerBullet.java
|
||||
@@ -230,7 +230,7 @@ public class EntityShulkerBullet extends IProjectile {
|
||||
|
||||
MovingObjectPosition movingobjectposition = ProjectileHelper.a((Entity) this, this::a);
|
||||
|
||||
- if (movingobjectposition.getType() != MovingObjectPosition.EnumMovingObjectType.MISS) {
|
||||
+ if (movingobjectposition.getType() != MovingObjectPosition.EnumMovingObjectType.MISS && org.bukkit.craftbukkit.event.CraftEventFactory.callProjectileHitEvent(this, movingobjectposition)) { // Tuinity - implement cancellation properly
|
||||
this.a(movingobjectposition);
|
||||
}
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/projectile/IProjectile.java b/src/main/java/net/minecraft/world/entity/projectile/IProjectile.java
|
||||
index 9f2e7d345d98f50e6d47cbf4bb35714852fa42da..2e2e4ee98619cfbeaecffa1ebae78ccc1d7666ca 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/projectile/IProjectile.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/projectile/IProjectile.java
|
||||
@@ -130,7 +130,7 @@ public abstract class IProjectile extends Entity {
|
||||
}
|
||||
|
||||
protected void a(MovingObjectPosition movingobjectposition) {
|
||||
- if (!org.bukkit.craftbukkit.event.CraftEventFactory.callProjectileHitEvent(this, movingobjectposition)) return; // CraftBukkit - Call event // Paper - make cancellable
|
||||
+ // Tuinity - proper cancellation requires moving this into the caller (see method overrides) - TODO this unfortunately means we need to manually inspect each call on update
|
||||
MovingObjectPosition.EnumMovingObjectType movingobjectposition_enummovingobjecttype = movingobjectposition.getType();
|
||||
|
||||
if (movingobjectposition_enummovingobjecttype == MovingObjectPosition.EnumMovingObjectType.ENTITY) {
|
||||
diff --git a/src/main/java/net/minecraft/world/item/ItemEnderEye.java b/src/main/java/net/minecraft/world/item/ItemEnderEye.java
|
||||
index f74685a7cdb905af8e9712ca8597e7ed3dc8b120..feedbd8c97c1b1c56eaff359e6a940696d416906 100644
|
||||
--- a/src/main/java/net/minecraft/world/item/ItemEnderEye.java
|
||||
@@ -17748,7 +17643,7 @@ index 15096a9c2719b8b4c099f62d0a1c808e56b63a8e..9bbd175f7e20591bbefdbddcb5e998e7
|
||||
}
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/world/level/block/state/BlockBase.java b/src/main/java/net/minecraft/world/level/block/state/BlockBase.java
|
||||
index 3fdafc0ff0c4148ec844dbdc1455d17cdcb4a75a..6124b56d935386784371422960a07d518f848cf3 100644
|
||||
index 0d26250887f80d0c250bcd6bc7de303362427d3e..1d82f719440c95765c01a588f4785d630b8b527a 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/block/state/BlockBase.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/block/state/BlockBase.java
|
||||
@@ -348,21 +348,23 @@ public abstract class BlockBase {
|
||||
@@ -17873,7 +17768,7 @@ index 3fdafc0ff0c4148ec844dbdc1455d17cdcb4a75a..6124b56d935386784371422960a07d51
|
||||
}
|
||||
|
||||
public final boolean e() { // Paper
|
||||
@@ -728,9 +784,9 @@ public abstract class BlockBase {
|
||||
@@ -729,9 +785,9 @@ public abstract class BlockBase {
|
||||
private static final int f = EnumBlockSupport.values().length;
|
||||
protected final boolean a;
|
||||
private final boolean g;
|
||||
@@ -21085,10 +20980,10 @@ index 295ffab08672d77d88aca368cb5b56f80bc4f1b5..dee4d12a49468d38f077784b219199f0
|
||||
@Override
|
||||
public boolean teleport(Location location) {
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||
index e5549439b3d4d608cf37dd33b6c8c9e10dfe9328..45e786565ac988abadffda2e7ba3ff1e2880b786 100644
|
||||
index f150ba393bc62e52840e6ebbf3d7696b670ff7e4..51d68fc13fcb8c30c10e21063f4d658f403df8ce 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||
@@ -2257,15 +2257,70 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
@@ -2262,15 +2262,70 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user