mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-17 08:27:43 +01:00
Tick projectile despawn logic (Fixes #978)
This commit is contained in:
@@ -6,7 +6,7 @@ Subject: [PATCH] Despawn rate config options per projectile type
|
||||
Default values of -1 respect vanilla behaviour.
|
||||
|
||||
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 53d0024daf6963ac4dab575666b0d6a74a39a958..2772351085add7d25c39bd9e5537fe354d07e9e1 100644
|
||||
index 53d0024daf6963ac4dab575666b0d6a74a39a958..c5cbcf8d6b26bbb7712d3a72f8313f600dfc7c11 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java
|
||||
@@ -62,7 +62,7 @@ public abstract class AbstractArrow extends Projectile {
|
||||
@@ -18,7 +18,7 @@ index 53d0024daf6963ac4dab575666b0d6a74a39a958..2772351085add7d25c39bd9e5537fe35
|
||||
private double baseDamage;
|
||||
public int knockback;
|
||||
private SoundEvent soundEvent;
|
||||
@@ -333,12 +333,23 @@ public abstract class AbstractArrow extends Projectile {
|
||||
@@ -333,12 +333,28 @@ public abstract class AbstractArrow extends Projectile {
|
||||
|
||||
}
|
||||
|
||||
@@ -33,14 +33,19 @@ index 53d0024daf6963ac4dab575666b0d6a74a39a958..2772351085add7d25c39bd9e5537fe35
|
||||
+ }
|
||||
+ if (pickup == Pickup.DISALLOWED) {
|
||||
+ return level.paperConfig.nonPlayerArrowDespawnRate;
|
||||
+ }
|
||||
}
|
||||
+ if (this instanceof ThrownTrident) {
|
||||
+ return level.spigotConfig.tridentDespawnRate;
|
||||
}
|
||||
+ }
|
||||
+ return level.spigotConfig.arrowDespawnRate;
|
||||
+ }
|
||||
+ // Purpur end
|
||||
|
||||
+ // Arrow despawn ticking is handled differently
|
||||
+ protected boolean shouldAlwaysTickDespawn() {
|
||||
+ return false;
|
||||
+ };
|
||||
+ // Purpur end
|
||||
+
|
||||
+ protected void tickDespawn() {
|
||||
+ tickDespawnCounter(); // Purpur
|
||||
}
|
||||
@@ -127,7 +132,7 @@ index 1a945a32c3d3705a318ebca72a365931a8c001b7..c7fdcfae1ba823046fdfe78aa97b4a7a
|
||||
+ // Purpur end
|
||||
}
|
||||
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 0c7d31c7ffd603e54fb19010331ad220c7b15627..73d18318afff5eac5966ddaeadf014524d06ec66 100644
|
||||
index 0c7d31c7ffd603e54fb19010331ad220c7b15627..878757f6b5034ed54198102cf8d48ace580f856f 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java
|
||||
@@ -33,6 +33,7 @@ public abstract class Projectile extends Entity {
|
||||
@@ -138,7 +143,7 @@ index 0c7d31c7ffd603e54fb19010331ad220c7b15627..73d18318afff5eac5966ddaeadf01452
|
||||
|
||||
// CraftBukkit start
|
||||
protected boolean hitCancelled = false;
|
||||
@@ -72,6 +73,19 @@ public abstract class Projectile extends Entity {
|
||||
@@ -72,6 +73,23 @@ public abstract class Projectile extends Entity {
|
||||
}
|
||||
// Pufferfish start
|
||||
|
||||
@@ -153,11 +158,24 @@ index 0c7d31c7ffd603e54fb19010331ad220c7b15627..73d18318afff5eac5966ddaeadf01452
|
||||
+ }
|
||||
+
|
||||
+ protected abstract int getPurpurDespawnRate();
|
||||
+
|
||||
+ protected boolean shouldAlwaysTickDespawn() {
|
||||
+ return true;
|
||||
+ };
|
||||
+ // Purpur end
|
||||
+
|
||||
public void setOwner(@Nullable Entity entity) {
|
||||
if (entity != null) {
|
||||
this.ownerUUID = entity.getUUID();
|
||||
@@ -148,6 +166,8 @@ public abstract class Projectile extends Entity {
|
||||
this.leftOwner = this.checkLeftOwner();
|
||||
}
|
||||
|
||||
+ if (this.shouldAlwaysTickDespawn()) tickDespawnCounter(); // Purpur
|
||||
+
|
||||
super.tick();
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/projectile/ShulkerBullet.java b/src/main/java/net/minecraft/world/entity/projectile/ShulkerBullet.java
|
||||
index a4591e4dc1a277a2fd0a323f3b54a107fd6598c8..ca0133bcb82df8112b63c7aef3670a8970676ef9 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/projectile/ShulkerBullet.java
|
||||
|
||||
@@ -7,7 +7,7 @@ This prevents keeping arrows alive indefinitely (such as when the block
|
||||
the arrow is stuck in gets removed, like a piston head going up/down)
|
||||
|
||||
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 2772351085add7d25c39bd9e5537fe354d07e9e1..59e434c31d1929bdc1d5242ef1f117d998ca46ec 100644
|
||||
index c5cbcf8d6b26bbb7712d3a72f8313f600dfc7c11..50b531cdaa26af8e06007552fc18cabddbd5f0de 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java
|
||||
@@ -321,7 +321,7 @@ public abstract class AbstractArrow extends Projectile {
|
||||
@@ -15,7 +15,7 @@ index 2772351085add7d25c39bd9e5537fe354d07e9e1..59e434c31d1929bdc1d5242ef1f117d9
|
||||
|
||||
this.setDeltaMovement(vec3d.multiply((double) (this.random.nextFloat() * 0.2F), (double) (this.random.nextFloat() * 0.2F), (double) (this.random.nextFloat() * 0.2F)));
|
||||
- this.life = 0;
|
||||
+ // this.life = 0; // PUrpur - do not reset despawn counter
|
||||
+ // this.life = 0; // Purpur - do not reset despawn counter
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -290,10 +290,10 @@ index e69213b43c8aa5a7c04add7a87482d531fbf52d2..f51ea103238b4a50439f5162a248cd9a
|
||||
// CraftBukkit start - fire ExplosionPrimeEvent
|
||||
ExplosionPrimeEvent event = new ExplosionPrimeEvent((org.bukkit.entity.Explosive) this.getBukkitEntity());
|
||||
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 73d18318afff5eac5966ddaeadf014524d06ec66..90f6a355e345f409ad7702ddc2b6c81ef4e7b933 100644
|
||||
index 878757f6b5034ed54198102cf8d48ace580f856f..17a9ac588490232e8883d5df1619e1290e260a9b 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java
|
||||
@@ -320,6 +320,6 @@ public abstract class Projectile extends Entity {
|
||||
@@ -326,6 +326,6 @@ public abstract class Projectile extends Entity {
|
||||
public boolean mayInteract(Level world, BlockPos pos) {
|
||||
Entity entity = this.getOwner();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user