Minor changes to projectile despawn rate patch

This commit is contained in:
William Blake Galbreath
2020-09-20 10:03:13 -05:00
parent 9d49a318f7
commit 3424c40e3f

View File

@@ -6,7 +6,7 @@ Subject: [PATCH] Despawn rate config options per projectile type
Default values of -1 respect vanilla behaviour. Default values of -1 respect vanilla behaviour.
diff --git a/src/main/java/net/minecraft/server/EntityArrow.java b/src/main/java/net/minecraft/server/EntityArrow.java diff --git a/src/main/java/net/minecraft/server/EntityArrow.java b/src/main/java/net/minecraft/server/EntityArrow.java
index b0218959a0..1587a5aa77 100644 index b0218959a..cecaa6e70 100644
--- a/src/main/java/net/minecraft/server/EntityArrow.java --- a/src/main/java/net/minecraft/server/EntityArrow.java
+++ b/src/main/java/net/minecraft/server/EntityArrow.java +++ b/src/main/java/net/minecraft/server/EntityArrow.java
@@ -23,7 +23,7 @@ public abstract class EntityArrow extends IProjectile { @@ -23,7 +23,7 @@ public abstract class EntityArrow extends IProjectile {
@@ -18,8 +18,37 @@ index b0218959a0..1587a5aa77 100644
private double damage; private double damage;
public int knockbackStrength; public int knockbackStrength;
private SoundEffect ak; private SoundEffect ak;
@@ -255,13 +255,23 @@ 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?
- this.die();
+ // Purpur start
+ protected int getPurpurDespawnRate() {
+ if (fromPlayer == PickupStatus.CREATIVE_ONLY) {
+ return world.paperConfig.creativeArrowDespawnRate;
+ }
+ if (fromPlayer == PickupStatus.DISALLOWED) {
+ return world.paperConfig.nonPlayerArrowDespawnRate;
+ }
+ if (this instanceof EntityThrownTrident) {
+ return world.spigotConfig.tridentDespawnRate;
}
+ return world.spigotConfig.arrowDespawnRate;
+ }
+ // Purpur end
+ protected void h() {
+ tickDespawnCounter(); // Purpur
}
private void A() {
diff --git a/src/main/java/net/minecraft/server/EntityDragonFireball.java b/src/main/java/net/minecraft/server/EntityDragonFireball.java diff --git a/src/main/java/net/minecraft/server/EntityDragonFireball.java b/src/main/java/net/minecraft/server/EntityDragonFireball.java
index 27032abad4..9d2d5be5ee 100644 index 27032abad..9d2d5be5e 100644
--- a/src/main/java/net/minecraft/server/EntityDragonFireball.java --- a/src/main/java/net/minecraft/server/EntityDragonFireball.java
+++ b/src/main/java/net/minecraft/server/EntityDragonFireball.java +++ b/src/main/java/net/minecraft/server/EntityDragonFireball.java
@@ -75,4 +75,11 @@ public class EntityDragonFireball extends EntityFireball { @@ -75,4 +75,11 @@ public class EntityDragonFireball extends EntityFireball {
@@ -35,7 +64,7 @@ index 27032abad4..9d2d5be5ee 100644
+ // Purpur end + // Purpur end
} }
diff --git a/src/main/java/net/minecraft/server/EntityEgg.java b/src/main/java/net/minecraft/server/EntityEgg.java diff --git a/src/main/java/net/minecraft/server/EntityEgg.java b/src/main/java/net/minecraft/server/EntityEgg.java
index edce89169b..4951abdfa1 100644 index edce89169..4951abdfa 100644
--- a/src/main/java/net/minecraft/server/EntityEgg.java --- a/src/main/java/net/minecraft/server/EntityEgg.java
+++ b/src/main/java/net/minecraft/server/EntityEgg.java +++ b/src/main/java/net/minecraft/server/EntityEgg.java
@@ -87,4 +87,11 @@ public class EntityEgg extends EntityProjectileThrowable { @@ -87,4 +87,11 @@ public class EntityEgg extends EntityProjectileThrowable {
@@ -51,7 +80,7 @@ index edce89169b..4951abdfa1 100644
+ // Purpur end + // Purpur end
} }
diff --git a/src/main/java/net/minecraft/server/EntityEnderPearl.java b/src/main/java/net/minecraft/server/EntityEnderPearl.java diff --git a/src/main/java/net/minecraft/server/EntityEnderPearl.java b/src/main/java/net/minecraft/server/EntityEnderPearl.java
index 63b4a449b5..e8650c1bfa 100644 index 63b4a449b..e8650c1bf 100644
--- a/src/main/java/net/minecraft/server/EntityEnderPearl.java --- a/src/main/java/net/minecraft/server/EntityEnderPearl.java
+++ b/src/main/java/net/minecraft/server/EntityEnderPearl.java +++ b/src/main/java/net/minecraft/server/EntityEnderPearl.java
@@ -106,4 +106,11 @@ public class EntityEnderPearl extends EntityProjectileThrowable { @@ -106,4 +106,11 @@ public class EntityEnderPearl extends EntityProjectileThrowable {
@@ -67,7 +96,7 @@ index 63b4a449b5..e8650c1bfa 100644
+ // Purpur end + // Purpur end
} }
diff --git a/src/main/java/net/minecraft/server/EntityFireworks.java b/src/main/java/net/minecraft/server/EntityFireworks.java diff --git a/src/main/java/net/minecraft/server/EntityFireworks.java b/src/main/java/net/minecraft/server/EntityFireworks.java
index 36729e4783..7fb57607e2 100644 index 36729e478..a9418cbe3 100644
--- a/src/main/java/net/minecraft/server/EntityFireworks.java --- a/src/main/java/net/minecraft/server/EntityFireworks.java
+++ b/src/main/java/net/minecraft/server/EntityFireworks.java +++ b/src/main/java/net/minecraft/server/EntityFireworks.java
@@ -296,4 +296,11 @@ public class EntityFireworks extends IProjectile { @@ -296,4 +296,11 @@ public class EntityFireworks extends IProjectile {
@@ -78,12 +107,12 @@ index 36729e4783..7fb57607e2 100644
+ // Purpur start + // Purpur start
+ @Override + @Override
+ protected int getPurpurDespawnRate() { + protected int getPurpurDespawnRate() {
+ return this.world.purpurConfig.fireworksDespawnRate; + return this.world.purpurConfig.fireworkDespawnRate;
+ } + }
+ // Purpur end + // Purpur end
} }
diff --git a/src/main/java/net/minecraft/server/EntityFishingHook.java b/src/main/java/net/minecraft/server/EntityFishingHook.java diff --git a/src/main/java/net/minecraft/server/EntityFishingHook.java b/src/main/java/net/minecraft/server/EntityFishingHook.java
index b6cace72ab..2484290238 100644 index b6cace72a..248429023 100644
--- a/src/main/java/net/minecraft/server/EntityFishingHook.java --- a/src/main/java/net/minecraft/server/EntityFishingHook.java
+++ b/src/main/java/net/minecraft/server/EntityFishingHook.java +++ b/src/main/java/net/minecraft/server/EntityFishingHook.java
@@ -554,4 +554,11 @@ public class EntityFishingHook extends IProjectile { @@ -554,4 +554,11 @@ public class EntityFishingHook extends IProjectile {
@@ -99,7 +128,7 @@ index b6cace72ab..2484290238 100644
+ // Purpur end + // Purpur end
} }
diff --git a/src/main/java/net/minecraft/server/EntityLargeFireball.java b/src/main/java/net/minecraft/server/EntityLargeFireball.java diff --git a/src/main/java/net/minecraft/server/EntityLargeFireball.java b/src/main/java/net/minecraft/server/EntityLargeFireball.java
index b4b0dfbc70..d12de20cf4 100644 index b4b0dfbc7..d12de20cf 100644
--- a/src/main/java/net/minecraft/server/EntityLargeFireball.java --- a/src/main/java/net/minecraft/server/EntityLargeFireball.java
+++ b/src/main/java/net/minecraft/server/EntityLargeFireball.java +++ b/src/main/java/net/minecraft/server/EntityLargeFireball.java
@@ -66,4 +66,11 @@ public class EntityLargeFireball extends EntityFireballFireball { @@ -66,4 +66,11 @@ public class EntityLargeFireball extends EntityFireballFireball {
@@ -115,7 +144,7 @@ index b4b0dfbc70..d12de20cf4 100644
+ // Purpur end + // Purpur end
} }
diff --git a/src/main/java/net/minecraft/server/EntityPotion.java b/src/main/java/net/minecraft/server/EntityPotion.java diff --git a/src/main/java/net/minecraft/server/EntityPotion.java b/src/main/java/net/minecraft/server/EntityPotion.java
index c7416602c1..b189e2d8e9 100644 index c7416602c..b189e2d8e 100644
--- a/src/main/java/net/minecraft/server/EntityPotion.java --- a/src/main/java/net/minecraft/server/EntityPotion.java
+++ b/src/main/java/net/minecraft/server/EntityPotion.java +++ b/src/main/java/net/minecraft/server/EntityPotion.java
@@ -240,4 +240,11 @@ public class EntityPotion extends EntityProjectileThrowable { @@ -240,4 +240,11 @@ public class EntityPotion extends EntityProjectileThrowable {
@@ -131,7 +160,7 @@ index c7416602c1..b189e2d8e9 100644
+ // Purpur end + // Purpur end
} }
diff --git a/src/main/java/net/minecraft/server/EntityShulkerBullet.java b/src/main/java/net/minecraft/server/EntityShulkerBullet.java diff --git a/src/main/java/net/minecraft/server/EntityShulkerBullet.java b/src/main/java/net/minecraft/server/EntityShulkerBullet.java
index 226b346436..b482dce83b 100644 index 226b34643..b482dce83 100644
--- a/src/main/java/net/minecraft/server/EntityShulkerBullet.java --- a/src/main/java/net/minecraft/server/EntityShulkerBullet.java
+++ b/src/main/java/net/minecraft/server/EntityShulkerBullet.java +++ b/src/main/java/net/minecraft/server/EntityShulkerBullet.java
@@ -313,4 +313,11 @@ public class EntityShulkerBullet extends IProjectile { @@ -313,4 +313,11 @@ public class EntityShulkerBullet extends IProjectile {
@@ -147,7 +176,7 @@ index 226b346436..b482dce83b 100644
+ // Purpur end + // Purpur end
} }
diff --git a/src/main/java/net/minecraft/server/EntitySmallFireball.java b/src/main/java/net/minecraft/server/EntitySmallFireball.java diff --git a/src/main/java/net/minecraft/server/EntitySmallFireball.java b/src/main/java/net/minecraft/server/EntitySmallFireball.java
index 92efb29534..f884e4cf7a 100644 index 92efb2953..f884e4cf7 100644
--- a/src/main/java/net/minecraft/server/EntitySmallFireball.java --- a/src/main/java/net/minecraft/server/EntitySmallFireball.java
+++ b/src/main/java/net/minecraft/server/EntitySmallFireball.java +++ b/src/main/java/net/minecraft/server/EntitySmallFireball.java
@@ -88,4 +88,11 @@ public class EntitySmallFireball extends EntityFireballFireball { @@ -88,4 +88,11 @@ public class EntitySmallFireball extends EntityFireballFireball {
@@ -160,26 +189,10 @@ index 92efb29534..f884e4cf7a 100644
+ protected int getPurpurDespawnRate() { + protected int getPurpurDespawnRate() {
+ return this.world.purpurConfig.smallFireballDespawnRate; + return this.world.purpurConfig.smallFireballDespawnRate;
+ } + }
+ // Purpur end
}
diff --git a/src/main/java/net/minecraft/server/EntitySnowball.java b/src/main/java/net/minecraft/server/EntitySnowball.java
index e44249f59b..592846759f 100644
--- a/src/main/java/net/minecraft/server/EntitySnowball.java
+++ b/src/main/java/net/minecraft/server/EntitySnowball.java
@@ -37,4 +37,11 @@ public class EntitySnowball extends EntityProjectileThrowable {
}
}
+
+ // Purpur start
+ @Override
+ protected int getPurpurDespawnRate() {
+ return this.world.purpurConfig.snowballDespawnRate;
+ }
+ // Purpur end + // Purpur end
} }
diff --git a/src/main/java/net/minecraft/server/EntityThrownExpBottle.java b/src/main/java/net/minecraft/server/EntityThrownExpBottle.java diff --git a/src/main/java/net/minecraft/server/EntityThrownExpBottle.java b/src/main/java/net/minecraft/server/EntityThrownExpBottle.java
index 2d3ca8c424..1d32518bd7 100644 index 2d3ca8c42..1d32518bd 100644
--- a/src/main/java/net/minecraft/server/EntityThrownExpBottle.java --- a/src/main/java/net/minecraft/server/EntityThrownExpBottle.java
+++ b/src/main/java/net/minecraft/server/EntityThrownExpBottle.java +++ b/src/main/java/net/minecraft/server/EntityThrownExpBottle.java
@@ -51,4 +51,11 @@ public class EntityThrownExpBottle extends EntityProjectileThrowable { @@ -51,4 +51,11 @@ public class EntityThrownExpBottle extends EntityProjectileThrowable {
@@ -195,7 +208,7 @@ index 2d3ca8c424..1d32518bd7 100644
+ // Purpur end + // Purpur end
} }
diff --git a/src/main/java/net/minecraft/server/EntityWitherSkull.java b/src/main/java/net/minecraft/server/EntityWitherSkull.java diff --git a/src/main/java/net/minecraft/server/EntityWitherSkull.java b/src/main/java/net/minecraft/server/EntityWitherSkull.java
index 2c02e114cc..4a97a7517d 100644 index 2c02e114c..4a97a7517 100644
--- a/src/main/java/net/minecraft/server/EntityWitherSkull.java --- a/src/main/java/net/minecraft/server/EntityWitherSkull.java
+++ b/src/main/java/net/minecraft/server/EntityWitherSkull.java +++ b/src/main/java/net/minecraft/server/EntityWitherSkull.java
@@ -116,4 +116,11 @@ public class EntityWitherSkull extends EntityFireball { @@ -116,4 +116,11 @@ public class EntityWitherSkull extends EntityFireball {
@@ -211,7 +224,7 @@ index 2c02e114cc..4a97a7517d 100644
+ // Purpur end + // Purpur end
} }
diff --git a/src/main/java/net/minecraft/server/IProjectile.java b/src/main/java/net/minecraft/server/IProjectile.java diff --git a/src/main/java/net/minecraft/server/IProjectile.java b/src/main/java/net/minecraft/server/IProjectile.java
index 9a17eb6066..ab0809992c 100644 index 9a17eb606..f0b898289 100644
--- a/src/main/java/net/minecraft/server/IProjectile.java --- a/src/main/java/net/minecraft/server/IProjectile.java
+++ b/src/main/java/net/minecraft/server/IProjectile.java +++ b/src/main/java/net/minecraft/server/IProjectile.java
@@ -13,6 +13,7 @@ public abstract class IProjectile extends Entity { @@ -13,6 +13,7 @@ public abstract class IProjectile extends Entity {
@@ -222,41 +235,42 @@ index 9a17eb6066..ab0809992c 100644
IProjectile(EntityTypes<? extends IProjectile> entitytypes, World world) { IProjectile(EntityTypes<? extends IProjectile> entitytypes, World world) {
super(entitytypes, world); super(entitytypes, world);
@@ -79,8 +80,29 @@ public abstract class IProjectile extends Entity { @@ -23,6 +24,17 @@ public abstract class IProjectile extends Entity {
} public boolean canSaveToDisk() {
return world != null && world.purpurConfig.saveProjectilesToDisk;
super.tick(); }
+ +
+ // Purpur start + protected final void tickDespawnCounter() {
+ if (!(this instanceof EntityArrow)) {
+ if (ticksLived > 200) this.tickDespawnCounter(); // Paper - tick despawnCounter regardless after 10 seconds
+ }
+ // Purpur end
+ }
+
+ // Purpur start
+ protected void tickDespawnCounter() { // Purpur - modified from EntityArrow
+ if (this.getPurpurDespawnRate() != -1) { + if (this.getPurpurDespawnRate() != -1) {
+ ++this.despawnCounter; + ++this.despawnCounter;
+ if (this.despawnCounter >= this.getPurpurDespawnRate()) { + if (this.despawnCounter >= this.getPurpurDespawnRate()) {
+ this.die(); + this.die();
+ } + }
+ } + }
+ }
+
+ protected abstract int getPurpurDespawnRate();
// Purpur end
public void setShooter(@Nullable Entity entity) {
@@ -79,6 +91,12 @@ public abstract class IProjectile extends Entity {
}
super.tick();
+
+ // Purpur start
+ if (!(this instanceof EntityArrow)) { // EntityArrow handles its own despawn counter
+ this.tickDespawnCounter();
+ }
+ // Purpur end
} }
+ protected int getPurpurDespawnRate() {
+ return -1;
+ }
+ // Purpur end
+
public boolean checkIfLeftOwner() { return this.h(); } // Purpur - OBFHELPER public boolean checkIfLeftOwner() { return this.h(); } // Purpur - OBFHELPER
private boolean h() {
Entity entity = this.getShooter();
diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
index 423593ae66..bd58350796 100644 index 423593ae6..e077fcfe1 100644
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
@@ -145,6 +145,33 @@ public class PurpurWorldConfig { @@ -145,6 +145,31 @@ public class PurpurWorldConfig {
idleTimeoutUpdateTabList = getBoolean("gameplay-mechanics.player.idle-timeout.update-tab-list", idleTimeoutUpdateTabList); idleTimeoutUpdateTabList = getBoolean("gameplay-mechanics.player.idle-timeout.update-tab-list", idleTimeoutUpdateTabList);
} }
@@ -266,11 +280,10 @@ index 423593ae66..bd58350796 100644
+ public int smallFireballDespawnRate = -1; + public int smallFireballDespawnRate = -1;
+ public int eggDespawnRate = -1; + public int eggDespawnRate = -1;
+ public int enderPearlDespawnRate = -1; + public int enderPearlDespawnRate = -1;
+ public int fireworksDespawnRate = -1; + public int fireworkDespawnRate = -1;
+ public int fishingHookDespawnRate = -1; + public int fishingHookDespawnRate = -1;
+ public int potionDespawnRate = -1; + public int potionDespawnRate = -1;
+ public int shulkerBulletDespawnRate = -1; + public int shulkerBulletDespawnRate = -1;
+ public int snowballDespawnRate = -1;
+ public int expBottleDespawnRate = -1; + public int expBottleDespawnRate = -1;
+ private void projectileDespawnRateSettings() { + private void projectileDespawnRateSettings() {
+ witherSkullDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.wither_skull", witherSkullDespawnRate); + witherSkullDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.wither_skull", witherSkullDespawnRate);
@@ -279,11 +292,10 @@ index 423593ae66..bd58350796 100644
+ smallFireballDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.small_fireball", smallFireballDespawnRate); + smallFireballDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.small_fireball", smallFireballDespawnRate);
+ eggDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.egg", eggDespawnRate); + eggDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.egg", eggDespawnRate);
+ enderPearlDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.ender_pearl", enderPearlDespawnRate); + enderPearlDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.ender_pearl", enderPearlDespawnRate);
+ fireworksDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.fireworks_rocket", fireworksDespawnRate); + fireworkDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.firework_rocket", fireworkDespawnRate);
+ fishingHookDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.fishing_bobber", fishingHookDespawnRate); + fishingHookDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.fishing_bobber", fishingHookDespawnRate);
+ potionDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.potion", potionDespawnRate); + potionDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.potion", potionDespawnRate);
+ shulkerBulletDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.shulker_bullet", shulkerBulletDespawnRate); + shulkerBulletDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.shulker_bullet", shulkerBulletDespawnRate);
+ snowballDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.snowball", snowballDespawnRate);
+ expBottleDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.experience_bottle", expBottleDespawnRate); + expBottleDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.experience_bottle", expBottleDespawnRate);
+ } + }
+ +