diff --git a/paper-server/patches/sources/net/minecraft/world/entity/projectile/arrow/AbstractArrow.java.patch b/paper-server/patches/sources/net/minecraft/world/entity/projectile/arrow/AbstractArrow.java.patch index cee3560183ff..7eabefe87da8 100644 --- a/paper-server/patches/sources/net/minecraft/world/entity/projectile/arrow/AbstractArrow.java.patch +++ b/paper-server/patches/sources/net/minecraft/world/entity/projectile/arrow/AbstractArrow.java.patch @@ -26,11 +26,14 @@ } public void setSoundEvent(SoundEvent soundEvent) { -@@ -207,6 +_,7 @@ +@@ -207,6 +_,10 @@ this.setSharedFlagOnFire(this.getRemainingFireTicks() > 0); } } else { -+ if (this.tickCount > 200) this.tickDespawn(); // Paper - tick life regardless after 10 seconds ++ // Paper start - tick life regardless after X seconds ++ final io.papermc.paper.configuration.type.number.IntOr.Disabled maxArrowDespawnInvulnerability = this.level().paperConfig().entities.spawning.maxArrowDespawnInvulnerability; ++ if (maxArrowDespawnInvulnerability.enabled() && this.tickCount > maxArrowDespawnInvulnerability.intValue()) this.tickDespawn(); ++ // Paper end - tick life regardless after X seconds this.inGroundTime = 0; Vec3 vec31 = this.position(); if (this.isInWater()) { diff --git a/paper-server/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java b/paper-server/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java index 237abcf06ebf..d34e627f8b67 100644 --- a/paper-server/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java +++ b/paper-server/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java @@ -171,6 +171,7 @@ public class Sniffer extends ConfigurationPart { public class Spawning extends ConfigurationPart { public ArrowDespawnRate nonPlayerArrowDespawnRate = ArrowDespawnRate.def(WorldConfiguration.this.spigotConfig); public ArrowDespawnRate creativeArrowDespawnRate = ArrowDespawnRate.def(WorldConfiguration.this.spigotConfig); + public IntOr.Disabled maxArrowDespawnInvulnerability = new IntOr.Disabled(OptionalInt.of(200)); public boolean filterBadTileEntityNbtFromFallingBlocks = true; public List filteredEntityTagNbtPaths = NbtPathSerializer.fromString(List.of("Pos", "Motion", "sleeping_pos")); public boolean disableMobSpawnerSpawnEggTransformation = false;