spigot/CraftBukkit-Patches/0071-Limit-TNT-Detonations-per-tick.patch
md_5 ed9ba9a42d
Drop no longer required patch ignoring -o option
Ideally all misleading documentation has been removed in the last ~10 years and users should no longer be adding unknown startup flags.
2023-12-26 09:18:47 +11:00

55 lines
2.5 KiB
Diff

From 6122ba7d6a8e0368856b5f248502f6695380fbee Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Wed, 20 Aug 2014 18:12:32 -0400
Subject: [PATCH] Limit TNT Detonations per tick
This gives a per-world control on how much TNT will be processed per-tick,
preventing a massive TNT detonation from lagging out the server.
diff --git a/src/main/java/net/minecraft/world/entity/item/EntityTNTPrimed.java b/src/main/java/net/minecraft/world/entity/item/EntityTNTPrimed.java
index 62ca85f3c1..5ea5333bf5 100644
--- a/src/main/java/net/minecraft/world/entity/item/EntityTNTPrimed.java
+++ b/src/main/java/net/minecraft/world/entity/item/EntityTNTPrimed.java
@@ -72,6 +72,7 @@ public class EntityTNTPrimed extends Entity implements TraceableEntity {
@Override
public void tick() {
+ if (this.level().spigotConfig.maxTntTicksPerTick > 0 && ++this.level().spigotConfig.currentPrimedTnt > this.level().spigotConfig.maxTntTicksPerTick) { return; } // Spigot
if (!this.isNoGravity()) {
this.setDeltaMovement(this.getDeltaMovement().add(0.0D, -0.04D, 0.0D));
}
diff --git a/src/main/java/net/minecraft/world/level/World.java b/src/main/java/net/minecraft/world/level/World.java
index a23fdd7025..879422b168 100644
--- a/src/main/java/net/minecraft/world/level/World.java
+++ b/src/main/java/net/minecraft/world/level/World.java
@@ -663,6 +663,7 @@ public abstract class World implements GeneratorAccess, AutoCloseable {
timings.tileEntityTick.stopTiming(); // Spigot
this.tickingBlockEntities = false;
gameprofilerfiller.pop();
+ spigotConfig.currentPrimedTnt = 0; // Spigot
}
public <T extends Entity> void guardEntityTick(Consumer<T> consumer, T t0) {
diff --git a/src/main/java/org/spigotmc/SpigotWorldConfig.java b/src/main/java/org/spigotmc/SpigotWorldConfig.java
index 1b5d1e2837..8411f9e573 100644
--- a/src/main/java/org/spigotmc/SpigotWorldConfig.java
+++ b/src/main/java/org/spigotmc/SpigotWorldConfig.java
@@ -356,4 +356,15 @@ public class SpigotWorldConfig
sprintMultiplier = (float) getDouble( "hunger.sprint-multiplier", 0.1 );
otherMultiplier = (float) getDouble( "hunger.other-multiplier", 0.0 );
}
+
+ public int currentPrimedTnt = 0;
+ public int maxTntTicksPerTick;
+ private void maxTntPerTick() {
+ if ( SpigotConfig.version < 7 )
+ {
+ set( "max-tnt-per-tick", 100 );
+ }
+ maxTntTicksPerTick = getInt( "max-tnt-per-tick", 100 );
+ log( "Max TNT Explosions: " + maxTntTicksPerTick );
+ }
}
--
2.43.0