spigot/CraftBukkit-Patches/0092-Limit-TNT-Detonations-per-tick.patch

56 lines
2.3 KiB
Diff
Raw Normal View History

2019-05-14 10:00:00 +10:00
From 5c8fcbcd28970f06ee7da4c7726460749fb67673 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/server/EntityTNTPrimed.java b/src/main/java/net/minecraft/server/EntityTNTPrimed.java
2019-04-25 12:00:00 +10:00
index 84e3f7155..ba86a0734 100644
--- a/src/main/java/net/minecraft/server/EntityTNTPrimed.java
+++ b/src/main/java/net/minecraft/server/EntityTNTPrimed.java
2017-05-14 12:00:00 +10:00
@@ -48,6 +48,7 @@ public class EntityTNTPrimed extends Entity {
2019-04-23 12:00:00 +10:00
@Override
2018-07-15 10:00:00 +10:00
public void tick() {
+ if (world.spigotConfig.currentPrimedTnt++ > world.spigotConfig.maxTntTicksPerTick) { return; } // Spigot
this.lastX = this.locX;
this.lastY = this.locY;
this.lastZ = this.locZ;
2019-04-23 12:00:00 +10:00
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
2019-05-14 10:00:00 +10:00
index bc70732ca..5d5844377 100644
2019-04-23 12:00:00 +10:00
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
2019-05-14 10:00:00 +10:00
@@ -723,6 +723,7 @@ public abstract class World implements IIBlockAccess, GeneratorAccess, AutoClose
2019-04-23 12:00:00 +10:00
timings.tileEntityPending.stopTiming(); // Spigot
gameprofilerfiller.exit();
+ spigotConfig.currentPrimedTnt = 0; // Spigot
}
2019-04-23 12:00:00 +10:00
public void a(Consumer<Entity> consumer, Entity entity) {
diff --git a/src/main/java/org/spigotmc/SpigotWorldConfig.java b/src/main/java/org/spigotmc/SpigotWorldConfig.java
index 3f275e2cc..48700dc67 100644
--- a/src/main/java/org/spigotmc/SpigotWorldConfig.java
+++ b/src/main/java/org/spigotmc/SpigotWorldConfig.java
@@ -297,4 +297,15 @@ public class SpigotWorldConfig
2016-11-26 11:51:14 +11:00
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() {
2014-08-24 14:25:58 +10:00
+ if ( SpigotConfig.version < 7 )
+ {
+ set( "max-tnt-per-tick", 100 );
+ }
+ maxTntTicksPerTick = getInt( "max-tnt-per-tick", 100 );
+ log( "Max TNT Explosions: " + maxTntTicksPerTick );
+ }
}
--
2019-04-23 09:33:25 +10:00
2.20.1