From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Wed, 8 Jul 2020 11:24:30 -0500 Subject: [PATCH] Fix arrows never despawning MC-125757 This forces the despawn counter to start ticking regardless of state after the arrow has been alive for 200 ticks (10 seconds) instead of getting stuck in a never despawn state (bubble columns, etc). diff --git a/src/main/java/net/minecraft/server/EntityArrow.java b/src/main/java/net/minecraft/server/EntityArrow.java index 890f5436b6e4e29759d26dbe6d0759cfa6a956df..b0218959a0e553b034745802765e0f93b62b32fb 100644 --- a/src/main/java/net/minecraft/server/EntityArrow.java +++ b/src/main/java/net/minecraft/server/EntityArrow.java @@ -133,6 +133,7 @@ public abstract class EntityArrow extends IProjectile { ++this.c; } else { + if (ticksLived > 200) this.tickDespawnCounter(); // Paper - tick despawnCounter regardless after 10 seconds this.c = 0; Vec3D vec3d2 = this.getPositionVector(); @@ -254,6 +255,7 @@ public abstract class EntityArrow extends IProjectile { } + protected final void tickDespawnCounter() { this.h(); } // Paper - OBFHELPER protected void h() { ++this.despawnCounter; if (this.despawnCounter >= (fromPlayer == PickupStatus.CREATIVE_ONLY ? world.paperConfig.creativeArrowDespawnRate : (fromPlayer == PickupStatus.DISALLOWED ? world.paperConfig.nonPlayerArrowDespawnRate : ((this instanceof EntityThrownTrident) ? world.spigotConfig.tridentDespawnRate : world.spigotConfig.arrowDespawnRate)))) { // Spigot // Paper - TODO: Extract this to init?