-
-
Notifications
You must be signed in to change notification settings - Fork 2.4k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Fix PickupStatus getting reset (#11154)
- Loading branch information
Showing
2 changed files
with
90 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 | ||
From: Tamion <[email protected]> | ||
Date: Tue, 23 Jul 2024 18:37:12 +0200 | ||
Subject: [PATCH] Fix PickupStatus getting reset | ||
|
||
|
||
diff --git a/src/main/java/org/bukkit/entity/AbstractArrow.java b/src/main/java/org/bukkit/entity/AbstractArrow.java | ||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 | ||
--- a/src/main/java/org/bukkit/entity/AbstractArrow.java | ||
+++ b/src/main/java/org/bukkit/entity/AbstractArrow.java | ||
@@ -0,0 +0,0 @@ public interface AbstractArrow extends Projectile { | ||
*/ | ||
void setHitSound(@NotNull org.bukkit.Sound sound); | ||
// Paper end - more projectile API | ||
+ | ||
+ // Paper start - Fix PickupStatus getting reset | ||
+ /** | ||
+ * Set the shooter of this projectile. | ||
+ * | ||
+ * @param source the {@link org.bukkit.projectiles.ProjectileSource} that shot this projectile | ||
+ * @param resetPickupStatus whether the {@link org.bukkit.entity.AbstractArrow.PickupStatus} should be reset | ||
+ */ | ||
+ void setShooter(@Nullable org.bukkit.projectiles.ProjectileSource source, boolean resetPickupStatus); | ||
+ // Paper end - Fix PickupStatus getting reset | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,65 @@ | ||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 | ||
From: Tamion <[email protected]> | ||
Date: Sun, 21 Jul 2024 19:11:22 +0200 | ||
Subject: [PATCH] Fix PickupStatus getting reset | ||
|
||
|
||
diff --git a/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java b/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java | ||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 | ||
--- a/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java | ||
+++ b/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java | ||
@@ -0,0 +0,0 @@ public abstract class AbstractArrow extends Projectile { | ||
|
||
@Override | ||
public void setOwner(@Nullable Entity entity) { | ||
+ // Paper start - Fix PickupStatus getting reset | ||
+ this.setOwner(entity, true); | ||
+ } | ||
+ | ||
+ public void setOwner(@Nullable Entity entity, boolean resetPickup) { | ||
+ // Paper end - Fix PickupStatus getting reset | ||
super.setOwner(entity); | ||
+ if (!resetPickup) return; // Paper - Fix PickupStatus getting reset | ||
Entity entity1 = entity; | ||
byte b0 = 0; | ||
|
||
diff --git a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java | ||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 | ||
--- a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java | ||
+++ b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java | ||
@@ -0,0 +0,0 @@ public abstract class Projectile extends Entity implements TraceableEntity { | ||
public boolean deflect(ProjectileDeflection deflection, @Nullable Entity deflector, @Nullable Entity owner, boolean fromAttack) { | ||
if (!this.level().isClientSide) { | ||
deflection.deflect(this, deflector, this.random); | ||
- this.setOwner(owner); | ||
+ // Paper start - Fix PickupStatus getting reset | ||
+ if (this instanceof AbstractArrow arrow) { | ||
+ arrow.setOwner(owner, false); | ||
+ } else { | ||
+ this.setOwner(owner); | ||
+ } | ||
+ // Paper end - Fix PickupStatus getting reset | ||
this.onDeflection(deflector, fromAttack); | ||
} | ||
|
||
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftAbstractArrow.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftAbstractArrow.java | ||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 | ||
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftAbstractArrow.java | ||
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftAbstractArrow.java | ||
@@ -0,0 +0,0 @@ public class CraftAbstractArrow extends AbstractProjectile implements AbstractAr | ||
this.getHandle().setSoundEvent(org.bukkit.craftbukkit.CraftSound.bukkitToMinecraft(sound)); | ||
} | ||
// Paper end | ||
+ | ||
+ // Paper start - Fix PickupStatus getting reset - Copy of CraftProjectile#setShooter, calling setOwner(Entity,boolean) | ||
+ @Override | ||
+ public void setShooter(org.bukkit.projectiles.ProjectileSource shooter, boolean resetPickupStatus) { | ||
+ if (shooter instanceof CraftEntity craftEntity) { | ||
+ this.getHandle().setOwner(craftEntity.getHandle(), resetPickupStatus); | ||
+ } else { | ||
+ this.getHandle().setOwner(null, resetPickupStatus); | ||
+ } | ||
+ this.getHandle().projectileSource = shooter; | ||
+ } | ||
+ // Paper end - Fix PickupStatus getting reset | ||
} |