mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-19 01:17:42 +01:00
Minor changes to projectile despawn rate patch
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/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
|
||||
+++ b/src/main/java/net/minecraft/server/EntityArrow.java
|
||||
@@ -23,7 +23,7 @@ public abstract class EntityArrow extends IProjectile {
|
||||
@@ -18,8 +18,37 @@ index b0218959a0..1587a5aa77 100644
|
||||
private double damage;
|
||||
public int knockbackStrength;
|
||||
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
|
||||
index 27032abad4..9d2d5be5ee 100644
|
||||
index 27032abad..9d2d5be5e 100644
|
||||
--- a/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 {
|
||||
@@ -35,7 +64,7 @@ index 27032abad4..9d2d5be5ee 100644
|
||||
+ // Purpur end
|
||||
}
|
||||
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
|
||||
+++ b/src/main/java/net/minecraft/server/EntityEgg.java
|
||||
@@ -87,4 +87,11 @@ public class EntityEgg extends EntityProjectileThrowable {
|
||||
@@ -51,7 +80,7 @@ index edce89169b..4951abdfa1 100644
|
||||
+ // Purpur end
|
||||
}
|
||||
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
|
||||
+++ b/src/main/java/net/minecraft/server/EntityEnderPearl.java
|
||||
@@ -106,4 +106,11 @@ public class EntityEnderPearl extends EntityProjectileThrowable {
|
||||
@@ -67,7 +96,7 @@ index 63b4a449b5..e8650c1bfa 100644
|
||||
+ // Purpur end
|
||||
}
|
||||
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
|
||||
+++ b/src/main/java/net/minecraft/server/EntityFireworks.java
|
||||
@@ -296,4 +296,11 @@ public class EntityFireworks extends IProjectile {
|
||||
@@ -78,12 +107,12 @@ index 36729e4783..7fb57607e2 100644
|
||||
+ // Purpur start
|
||||
+ @Override
|
||||
+ protected int getPurpurDespawnRate() {
|
||||
+ return this.world.purpurConfig.fireworksDespawnRate;
|
||||
+ return this.world.purpurConfig.fireworkDespawnRate;
|
||||
+ }
|
||||
+ // Purpur end
|
||||
}
|
||||
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
|
||||
+++ b/src/main/java/net/minecraft/server/EntityFishingHook.java
|
||||
@@ -554,4 +554,11 @@ public class EntityFishingHook extends IProjectile {
|
||||
@@ -99,7 +128,7 @@ index b6cace72ab..2484290238 100644
|
||||
+ // Purpur end
|
||||
}
|
||||
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
|
||||
+++ b/src/main/java/net/minecraft/server/EntityLargeFireball.java
|
||||
@@ -66,4 +66,11 @@ public class EntityLargeFireball extends EntityFireballFireball {
|
||||
@@ -115,7 +144,7 @@ index b4b0dfbc70..d12de20cf4 100644
|
||||
+ // Purpur end
|
||||
}
|
||||
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
|
||||
+++ b/src/main/java/net/minecraft/server/EntityPotion.java
|
||||
@@ -240,4 +240,11 @@ public class EntityPotion extends EntityProjectileThrowable {
|
||||
@@ -131,7 +160,7 @@ index c7416602c1..b189e2d8e9 100644
|
||||
+ // Purpur end
|
||||
}
|
||||
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
|
||||
+++ b/src/main/java/net/minecraft/server/EntityShulkerBullet.java
|
||||
@@ -313,4 +313,11 @@ public class EntityShulkerBullet extends IProjectile {
|
||||
@@ -147,7 +176,7 @@ index 226b346436..b482dce83b 100644
|
||||
+ // Purpur end
|
||||
}
|
||||
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
|
||||
+++ b/src/main/java/net/minecraft/server/EntitySmallFireball.java
|
||||
@@ -88,4 +88,11 @@ public class EntitySmallFireball extends EntityFireballFireball {
|
||||
@@ -160,26 +189,10 @@ index 92efb29534..f884e4cf7a 100644
|
||||
+ protected int getPurpurDespawnRate() {
|
||||
+ 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
|
||||
}
|
||||
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
|
||||
+++ b/src/main/java/net/minecraft/server/EntityThrownExpBottle.java
|
||||
@@ -51,4 +51,11 @@ public class EntityThrownExpBottle extends EntityProjectileThrowable {
|
||||
@@ -195,7 +208,7 @@ index 2d3ca8c424..1d32518bd7 100644
|
||||
+ // Purpur end
|
||||
}
|
||||
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
|
||||
+++ b/src/main/java/net/minecraft/server/EntityWitherSkull.java
|
||||
@@ -116,4 +116,11 @@ public class EntityWitherSkull extends EntityFireball {
|
||||
@@ -211,7 +224,7 @@ index 2c02e114cc..4a97a7517d 100644
|
||||
+ // Purpur end
|
||||
}
|
||||
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
|
||||
+++ b/src/main/java/net/minecraft/server/IProjectile.java
|
||||
@@ -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) {
|
||||
super(entitytypes, world);
|
||||
@@ -79,8 +80,29 @@ public abstract class IProjectile extends Entity {
|
||||
}
|
||||
|
||||
super.tick();
|
||||
@@ -23,6 +24,17 @@ public abstract class IProjectile extends Entity {
|
||||
public boolean canSaveToDisk() {
|
||||
return world != null && world.purpurConfig.saveProjectilesToDisk;
|
||||
}
|
||||
+
|
||||
+ // Purpur start
|
||||
+ 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
|
||||
+ protected final void tickDespawnCounter() {
|
||||
+ if (this.getPurpurDespawnRate() != -1) {
|
||||
+ ++this.despawnCounter;
|
||||
+ if (this.despawnCounter >= this.getPurpurDespawnRate()) {
|
||||
+ 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
|
||||
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
|
||||
index 423593ae66..bd58350796 100644
|
||||
index 423593ae6..e077fcfe1 100644
|
||||
--- a/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);
|
||||
}
|
||||
|
||||
@@ -266,11 +280,10 @@ index 423593ae66..bd58350796 100644
|
||||
+ public int smallFireballDespawnRate = -1;
|
||||
+ public int eggDespawnRate = -1;
|
||||
+ public int enderPearlDespawnRate = -1;
|
||||
+ public int fireworksDespawnRate = -1;
|
||||
+ public int fireworkDespawnRate = -1;
|
||||
+ public int fishingHookDespawnRate = -1;
|
||||
+ public int potionDespawnRate = -1;
|
||||
+ public int shulkerBulletDespawnRate = -1;
|
||||
+ public int snowballDespawnRate = -1;
|
||||
+ public int expBottleDespawnRate = -1;
|
||||
+ private void projectileDespawnRateSettings() {
|
||||
+ 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);
|
||||
+ eggDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.egg", eggDespawnRate);
|
||||
+ 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);
|
||||
+ potionDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.potion", potionDespawnRate);
|
||||
+ 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);
|
||||
+ }
|
||||
+
|
||||
|
||||
Reference in New Issue
Block a user