aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/server/0839-Refresh-ProjectileSource-for-projectiles.patch
diff options
context:
space:
mode:
authorJake Potrebic <[email protected]>2024-05-29 13:58:57 -0700
committerGitHub <[email protected]>2024-05-29 22:58:57 +0200
commita31dc90741ed9c121a13a3c124c9ebf5bafd0da7 (patch)
tree81963bd94fe7772ee08bd21710230de21b6b25da /patches/server/0839-Refresh-ProjectileSource-for-projectiles.patch
parented85aac53cfd93d29fa24e6071dbdddd0e49624b (diff)
downloadPaper-a31dc90741ed9c121a13a3c124c9ebf5bafd0da7.tar.gz
Paper-a31dc90741ed9c121a13a3c124c9ebf5bafd0da7.zip
Several fixes and new api for experience merging/stacking (#9242)
Diffstat (limited to 'patches/server/0839-Refresh-ProjectileSource-for-projectiles.patch')
-rw-r--r--patches/server/0839-Refresh-ProjectileSource-for-projectiles.patch85
1 files changed, 0 insertions, 85 deletions
diff --git a/patches/server/0839-Refresh-ProjectileSource-for-projectiles.patch b/patches/server/0839-Refresh-ProjectileSource-for-projectiles.patch
deleted file mode 100644
index 224c05a6f9..0000000000
--- a/patches/server/0839-Refresh-ProjectileSource-for-projectiles.patch
+++ /dev/null
@@ -1,85 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Jake Potrebic <[email protected]>
-Date: Tue, 30 May 2023 12:59:10 -0700
-Subject: [PATCH] Refresh ProjectileSource for projectiles
-
-Makes sure the value returned by Projectile#getShooter in
-the API matches the owner UUID specified in the entity nbt.
-Previously, after the entity reloaded, Projectile#getShooter
-would return null, while the entity still had an owner.
-
-Also fixes setting the shooter/owner to null actually
-clearing the owner.
-
-Co-authored-by: Warrior <[email protected]>
-
-diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
-index 1c370fd90427ea3ec9bcaece45775b1aa7ba9ee7..cd9ec9d94594fc03b293728e442e20894ad6465b 100644
---- a/src/main/java/net/minecraft/world/entity/Entity.java
-+++ b/src/main/java/net/minecraft/world/entity/Entity.java
-@@ -385,6 +385,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
- public boolean inWorld = false;
- public boolean generation;
- public int maxAirTicks = this.getDefaultMaxAirSupply(); // CraftBukkit - SPIGOT-6907: re-implement LivingEntity#setMaximumAir()
-+ @Nullable // Paper - Refresh ProjectileSource for projectiles
- public org.bukkit.projectiles.ProjectileSource projectileSource; // For projectiles only
- public boolean lastDamageCancelled; // SPIGOT-5339, SPIGOT-6252, SPIGOT-6777: Keep track if the event was canceled
- public boolean persistentInvisibility = false;
-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 4c6fbf19d6bb01e67c6141aea757fae434ee8233..74c596264d4da551437bd2a23e1c70022cfc73fc 100644
---- a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java
-+++ b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java
-@@ -51,14 +51,31 @@ public abstract class Projectile extends Entity implements TraceableEntity {
- this.ownerUUID = entity.getUUID();
- this.cachedOwner = entity;
- }
-- this.projectileSource = (entity != null && entity.getBukkitEntity() instanceof ProjectileSource) ? (ProjectileSource) entity.getBukkitEntity() : null; // CraftBukkit
--
-+ // Paper start - Refresh ProjectileSource for projectiles
-+ else {
-+ this.ownerUUID = null;
-+ this.cachedOwner = null;
-+ this.projectileSource = null;
-+ }
-+ // Paper end - Refresh ProjectileSource for projectiles
-+ this.refreshProjectileSource(false); // Paper
-+ }
-+ // Paper start - Refresh ProjectileSource for projectiles
-+ public void refreshProjectileSource(boolean fillCache) {
-+ if (fillCache) {
-+ this.getOwner();
-+ }
-+ if (this.cachedOwner != null && !this.cachedOwner.isRemoved() && this.projectileSource == null && this.cachedOwner.getBukkitEntity() instanceof ProjectileSource projSource) {
-+ this.projectileSource = projSource;
-+ }
- }
-+ // Paper end - Refresh ProjectileSource for projectiles
-
- @Nullable
- @Override
- public Entity getOwner() {
- if (this.cachedOwner != null && !this.cachedOwner.isRemoved()) {
-+ this.refreshProjectileSource(false); // Paper - Refresh ProjectileSource for projectiles
- return this.cachedOwner;
- } else {
- if (this.ownerUUID != null) {
-@@ -68,6 +85,7 @@ public abstract class Projectile extends Entity implements TraceableEntity {
- ServerLevel worldserver = (ServerLevel) world;
-
- this.cachedOwner = worldserver.getEntity(this.ownerUUID);
-+ this.refreshProjectileSource(false); // Paper - Refresh ProjectileSource for projectiles
- return this.cachedOwner;
- }
- }
-diff --git a/src/main/java/org/bukkit/craftbukkit/entity/AbstractProjectile.java b/src/main/java/org/bukkit/craftbukkit/entity/AbstractProjectile.java
-index de4fb2654c7895cfd83ad694455ee56cb708c2f2..591af9d0d2fdc9953415979fc97a4a00afd85885 100644
---- a/src/main/java/org/bukkit/craftbukkit/entity/AbstractProjectile.java
-+++ b/src/main/java/org/bukkit/craftbukkit/entity/AbstractProjectile.java
-@@ -60,6 +60,7 @@ public abstract class AbstractProjectile extends CraftEntity implements Projecti
-
- @Override
- public final org.bukkit.projectiles.ProjectileSource getShooter() {
-+ this.getHandle().refreshProjectileSource(true); // Paper - Refresh ProjectileSource for projectiles
- return this.getHandle().projectileSource;
- }
-