From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Aikar Date: Fri, 18 Mar 2016 15:12:22 -0400 Subject: [PATCH] Configurable Non Player Arrow Despawn Rate Can set a much shorter despawn rate for arrows that players can not pick up. diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java index 3ac2ac3db9b1c271b3c21930bb13716669ff64d3..3c78d3234054ce2dc46ef77decb6adb0cbd10620 100644 --- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java +++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java @@ -215,4 +215,19 @@ public class PaperWorldConfig { private void nonPlayerEntitiesOnScoreboards() { nonPlayerEntitiesOnScoreboards = getBoolean("allow-non-player-entities-on-scoreboards", false); } + + public int nonPlayerArrowDespawnRate = -1; + public int creativeArrowDespawnRate = -1; + private void nonPlayerArrowDespawnRate() { + nonPlayerArrowDespawnRate = getInt("non-player-arrow-despawn-rate", -1); + if (nonPlayerArrowDespawnRate == -1) { + nonPlayerArrowDespawnRate = spigotConfig.arrowDespawnRate; + } + creativeArrowDespawnRate = getInt("creative-arrow-despawn-rate", -1); + if (creativeArrowDespawnRate == -1) { + creativeArrowDespawnRate = spigotConfig.arrowDespawnRate; + } + log("Non Player Arrow Despawn Rate: " + nonPlayerArrowDespawnRate); + log("Creative Arrow Despawn Rate: " + creativeArrowDespawnRate); + } } diff --git a/src/main/java/net/minecraft/world/entity/projectile/EntityArrow.java b/src/main/java/net/minecraft/world/entity/projectile/EntityArrow.java index 04af85e0ccb7a98e0796afcdcce33f8595b1db8c..7868259a94766a6100d7b278c4296dde0a7f9397 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/EntityArrow.java +++ b/src/main/java/net/minecraft/world/entity/projectile/EntityArrow.java @@ -283,7 +283,7 @@ public abstract class EntityArrow extends IProjectile { protected void h() { ++this.despawnCounter; - if (this.despawnCounter >= ((this instanceof EntityThrownTrident) ? world.spigotConfig.tridentDespawnRate : world.spigotConfig.arrowDespawnRate)) { // Spigot + 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? this.die(); }