mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-17 16:37:43 +01:00
Fix bee count payload lag/crash exploit and make it configurable. (#1491)
Co-authored-by: Dexuby <PxLz@web.de>
This commit is contained in:
@@ -17,23 +17,39 @@ index 4a0e56f4fb6903ea5f4974052d9d55447a6254ea..cd2394263cc14d99861f98c77f016e54
|
||||
this.hasLoggedStop = true; // Paper - Debugging
|
||||
if (isDebugging()) io.papermc.paper.util.TraceUtil.dumpTraceForThread("Server stopped"); // Paper - Debugging
|
||||
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
||||
index 20bf50f07f50409d0d1f394d7c3acde9a00ff98d..655b49f74139d960b81985e3c2eae23004f1e7e4 100644
|
||||
index 0d70fe71651c8f9d75a604ed2d5c480b41df1dd6..38de0e9b83ecac489ca676725274d14fcb60dd5c 100644
|
||||
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
||||
@@ -376,6 +376,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
|
||||
|
||||
if (gg.pufferfish.pufferfish.PufferfishConfig.enableAsyncMobSpawning) mobSpawnExecutor.start(); // Pufferfish
|
||||
org.purpurmc.purpur.task.BossBarTask.startAll(); // Purpur
|
||||
+ org.purpurmc.purpur.task.BeehiveTask.instance().register(); // Purpur
|
||||
+ if (org.purpurmc.purpur.PurpurConfig.beeCountPayload) org.purpurmc.purpur.task.BeehiveTask.instance().register(); // Purpur
|
||||
return true;
|
||||
}
|
||||
}
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
index ffff69021335ca52d10a07bb3b3f272eea6ebcb5..0e28cf20a870f3f3662bd1d8f7a4f2cbf13c48bf 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
@@ -434,6 +434,11 @@ public class PurpurConfig {
|
||||
allowWaterPlacementInTheEnd = getBoolean("settings.allow-water-placement-in-the-end", allowWaterPlacementInTheEnd);
|
||||
}
|
||||
|
||||
+ public static boolean beeCountPayload = false;
|
||||
+ private static void beeCountPayload() {
|
||||
+ beeCountPayload = getBoolean("settings.bee-count-payload", beeCountPayload);
|
||||
+ }
|
||||
+
|
||||
public static boolean loggerSuppressInitLegacyMaterialError = false;
|
||||
public static boolean loggerSuppressIgnoredAdvancementWarnings = false;
|
||||
public static boolean loggerSuppressUnrecognizedRecipeErrors = false;
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/task/BeehiveTask.java b/src/main/java/org/purpurmc/purpur/task/BeehiveTask.java
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..8a5faed6c1ac6850b87405e774e4393877d61c92
|
||||
index 0000000000000000000000000000000000000000..15e760d5c0465b24969df3e25bf8409faab8b62e
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/org/purpurmc/purpur/task/BeehiveTask.java
|
||||
@@ -0,0 +1,92 @@
|
||||
@@ -0,0 +1,96 @@
|
||||
+package org.purpurmc.purpur.task;
|
||||
+
|
||||
+import com.google.common.io.ByteArrayDataInput;
|
||||
@@ -92,6 +108,10 @@ index 0000000000000000000000000000000000000000..8a5faed6c1ac6850b87405e774e43938
|
||||
+
|
||||
+ ServerPlayer serverPlayer = ((CraftPlayer) player).getHandle();
|
||||
+
|
||||
+ // targeted block info max range specified in client at net.minecraft.client.gui.hud.DebugHud#render
|
||||
+ if (!pos.getCenter().closerThan(serverPlayer.position(), 20)) return; // Targeted Block info max range is 20
|
||||
+ if (serverPlayer.level().getChunkIfLoaded(pos) == null) return;
|
||||
+
|
||||
+ BlockEntity blockEntity = serverPlayer.level().getBlockEntity(pos);
|
||||
+ if (!(blockEntity instanceof BeehiveBlockEntity beehive)) {
|
||||
+ return;
|
||||
|
||||
@@ -69,10 +69,10 @@ index e83ea53da012f3dcaa1f53bf6082a17a69e6ee13..cf68dca4096556b0c2594c76fcf11341
|
||||
}
|
||||
}
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
index ffff69021335ca52d10a07bb3b3f272eea6ebcb5..590286e593fec706a3f16f0080b35aa0637ca06d 100644
|
||||
index 0e28cf20a870f3f3662bd1d8f7a4f2cbf13c48bf..ce3ab604e6ed6669f38abf83d40b500148277b9d 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
@@ -461,4 +461,75 @@ public class PurpurConfig {
|
||||
@@ -466,4 +466,75 @@ public class PurpurConfig {
|
||||
String setPattern = getString("settings.username-valid-characters", defaultPattern);
|
||||
usernameValidCharactersPattern = java.util.regex.Pattern.compile(setPattern == null || setPattern.isBlank() ? defaultPattern : setPattern);
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@ Subject: [PATCH] Max joins per second
|
||||
When this option is set to true the `max-joins-per-tick` setting in paper.yml will be used per second instead of per tick
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/network/Connection.java b/src/main/java/net/minecraft/network/Connection.java
|
||||
index e18406b4172499b0cb116a45cd5a968ae3e3fdce..57d0fbca001da7cace3eeb69526e28e8a2ef5ac5 100644
|
||||
index 4716f8bd8a64d4f20f0d5957c1e7fabf63020f43..b41cab778f446434b788946ea9d3e02c152e570e 100644
|
||||
--- a/src/main/java/net/minecraft/network/Connection.java
|
||||
+++ b/src/main/java/net/minecraft/network/Connection.java
|
||||
@@ -569,11 +569,20 @@ public class Connection extends SimpleChannelInboundHandler<Packet<?>> {
|
||||
@@ -31,10 +31,10 @@ index e18406b4172499b0cb116a45cd5a968ae3e3fdce..57d0fbca001da7cace3eeb69526e28e8
|
||||
}
|
||||
// Paper end - Buffer joins to world
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
index 590286e593fec706a3f16f0080b35aa0637ca06d..f17b160b304b1adbde80690ae482986309f3befe 100644
|
||||
index ce3ab604e6ed6669f38abf83d40b500148277b9d..a05da9ff158c6e7d55abb23e4b28f3703e9e5b3d 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
@@ -451,8 +451,10 @@ public class PurpurConfig {
|
||||
@@ -456,8 +456,10 @@ public class PurpurConfig {
|
||||
}
|
||||
|
||||
public static boolean useUPnP = false;
|
||||
|
||||
@@ -18,10 +18,10 @@ index 5e17a72dbe105a1a0221d857b6da39a855127aab..7dec861f49e7db0ac7cf4f4942881f23
|
||||
|
||||
voxelshape1 = (VoxelShape) iterator.next();
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
index 3a49455509a26063a62e39fb3d3ad81e80bced54..40922e69274de6bc3da6f74b0216a816a1fb7722 100644
|
||||
index 9bc5cc4944dcd3918b2a90bde9dd8fdd795ae3b2..b55a4366f69a1f259d5d7aed01764aec14a1dbb2 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
@@ -456,9 +456,11 @@ public class PurpurConfig {
|
||||
@@ -461,9 +461,11 @@ public class PurpurConfig {
|
||||
|
||||
public static boolean useUPnP = false;
|
||||
public static boolean maxJoinsPerSecond = false;
|
||||
|
||||
@@ -214,7 +214,7 @@ index 0088180c3574ace7eb4170c385d2ca9fc098d6f3..b1d2464fc151d4c636c3c2dc4e7b9446
|
||||
this.profiler.popPush("send chunks");
|
||||
iterator = this.playerList.getPlayers().iterator();
|
||||
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
||||
index 952b312c35b1c0d015e9d08646ee42d91f8bf1e3..957473abe92bdcdfe46c936f5331fc3e480eb156 100644
|
||||
index 38de0e9b83ecac489ca676725274d14fcb60dd5c..6a9bd431e9c2e1fc1e51d394eaccba864bbeac89 100644
|
||||
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
||||
@@ -523,7 +523,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
|
||||
|
||||
@@ -65,10 +65,10 @@ index 4cb24be39cdb223cfeb34c102bdc707f3850033b..b7803d6753d28f174b8a6e5b31eccfa4
|
||||
boolean flag1 = packet.getSlotNum() >= 1 && packet.getSlotNum() <= 45;
|
||||
boolean flag2 = itemstack.isEmpty() || itemstack.getDamageValue() >= 0 && itemstack.getCount() <= 64 && !itemstack.isEmpty();
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
index 128eab7246bf263e302cbeb5e4c359a41dd2cd3f..be7b302257447d5593efe9b512d036b293f340b5 100644
|
||||
index 5313ba91ffc625b27d5bb99395f0e719829f6bda..5329ad6493950a561bd46045e35a9bd70ac4405f 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
@@ -563,4 +563,9 @@ public class PurpurConfig {
|
||||
@@ -568,4 +568,9 @@ public class PurpurConfig {
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@ Subject: [PATCH] Add an option to fix MC-3304 (projectile looting)
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java b/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java
|
||||
index 00ec6661f07d9b8dc3744c4d2d128643f680c8d8..56c150d037964e82d9aa3fac2008dc1e14cced8c 100644
|
||||
index 2d1bff45830b489caba33552cafa2ae795d6def6..fd1d6c4c3f78b610282318e98ba3742f8bf6e20e 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java
|
||||
@@ -74,6 +74,7 @@ public abstract class AbstractArrow extends Projectile {
|
||||
@@ -48,7 +48,7 @@ index 220513d3fd5645322886522ea4f6b8c55d043b3c..d45a2f49c82d00801578c34e5f5277fc
|
||||
org.bukkit.event.entity.EntityShootBowEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callEntityShootBowEvent(entityhuman, stack, itemstack1, entityarrow, entityhuman.getUsedItemHand(), f, !flag1);
|
||||
if (event.isCancelled()) {
|
||||
diff --git a/src/main/java/net/minecraft/world/item/CrossbowItem.java b/src/main/java/net/minecraft/world/item/CrossbowItem.java
|
||||
index b112845e94d354bbadff67673ea0b4939672bd3e..62f291abef664d8bccd682db9de8d0ae6fe2b9bd 100644
|
||||
index 05d3a7c077df1b92819655790230cd22028f6893..211d8e59a9b3460b346e5f8cf581df70b05d1b8f 100644
|
||||
--- a/src/main/java/net/minecraft/world/item/CrossbowItem.java
|
||||
+++ b/src/main/java/net/minecraft/world/item/CrossbowItem.java
|
||||
@@ -291,6 +291,14 @@ public class CrossbowItem extends ProjectileWeaponItem implements Vanishable {
|
||||
@@ -104,10 +104,10 @@ index 3fb1e558c3510243c94981211f9a0e5e0ef1895b..e5177e5ffcac360f935f2139db4554c6
|
||||
if (context.hasParam(LootContextParams.LOOTING_MOD)) {
|
||||
i = context.getParamOrNull(LootContextParams.LOOTING_MOD);
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
index be7b302257447d5593efe9b512d036b293f340b5..2d7b942a0067b8d5eb156d7ee9ec2e5914cbe181 100644
|
||||
index 5329ad6493950a561bd46045e35a9bd70ac4405f..88763ca8cc31bda23f8f31d2bc990fb4a85c9955 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
@@ -568,4 +568,9 @@ public class PurpurConfig {
|
||||
@@ -573,4 +573,9 @@ public class PurpurConfig {
|
||||
private static void fixNetworkSerializedCreativeItems() {
|
||||
fixNetworkSerializedItemsInCreative = getBoolean("settings.fix-network-serialized-items-in-creative", fixNetworkSerializedItemsInCreative);
|
||||
}
|
||||
|
||||
@@ -18,10 +18,10 @@ index 63c4d52c348d9297a24abb17e105b2f4c7758740..d38d8fc7ef22fb68e867cc29dab1171c
|
||||
protected final SoundType soundType;
|
||||
protected final float friction;
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
index 2d7b942a0067b8d5eb156d7ee9ec2e5914cbe181..3c163e2b512294f93255f25ccdc7917ded14ca4a 100644
|
||||
index 88763ca8cc31bda23f8f31d2bc990fb4a85c9955..b13635ec623c80b1c32f2a6c11680dae899e8ec7 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
@@ -573,4 +573,19 @@ public class PurpurConfig {
|
||||
@@ -578,4 +578,19 @@ public class PurpurConfig {
|
||||
private static void fixProjectileLootingTransfer() {
|
||||
fixProjectileLootingTransfer = getBoolean("settings.fix-projectile-looting-transfer", fixProjectileLootingTransfer);
|
||||
}
|
||||
|
||||
@@ -54,10 +54,10 @@ index ef364aa171a48482a45bc18cfe730ec20c3f7be6..74971d90506aa253d5ee821b5390fb25
|
||||
}
|
||||
}
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
index 3c163e2b512294f93255f25ccdc7917ded14ca4a..f743f97c622f1672374cc446331435edb1ce1ed9 100644
|
||||
index b13635ec623c80b1c32f2a6c11680dae899e8ec7..bc001cac7d478baf5118ec746de8d2d2eba2ba5c 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
@@ -588,4 +588,50 @@ public class PurpurConfig {
|
||||
@@ -593,4 +593,50 @@ public class PurpurConfig {
|
||||
block.explosionResistance = blastResistance.floatValue();
|
||||
});
|
||||
}
|
||||
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Add log suppression for LibraryLoader
|
||||
|
||||
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
index f743f97c622f1672374cc446331435edb1ce1ed9..24db1eb4d9b1677287bbe157320575fee926577a 100644
|
||||
index bc001cac7d478baf5118ec746de8d2d2eba2ba5c..5343628ea71c14fba785a0b36ef4abd05b6f63c3 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
@@ -465,11 +465,14 @@ public class PurpurConfig {
|
||||
@@ -470,11 +470,14 @@ public class PurpurConfig {
|
||||
public static boolean loggerSuppressIgnoredAdvancementWarnings = false;
|
||||
public static boolean loggerSuppressUnrecognizedRecipeErrors = false;
|
||||
public static boolean loggerSuppressSetBlockFarChunk = false;
|
||||
|
||||
@@ -36,10 +36,10 @@ index f0703302e7dbbda88de8c648d20d87c55ed9b1e0..a913ebabaa5f443afa987b972355a8f8
|
||||
}
|
||||
}
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
index 24db1eb4d9b1677287bbe157320575fee926577a..3eba2f3df5723d068ff62c78243e39b8f4e3f853 100644
|
||||
index 5343628ea71c14fba785a0b36ef4abd05b6f63c3..cd2c365bcaca0720dc543188a23ff585192cb76e 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
@@ -577,6 +577,16 @@ public class PurpurConfig {
|
||||
@@ -582,6 +582,16 @@ public class PurpurConfig {
|
||||
fixProjectileLootingTransfer = getBoolean("settings.fix-projectile-looting-transfer", fixProjectileLootingTransfer);
|
||||
}
|
||||
|
||||
|
||||
@@ -31,10 +31,10 @@ index 6736093629bf92a888b0c971f3cf0a4e725cddec..ba4466c49a7c1713007140efdc2eb805
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
index 3eba2f3df5723d068ff62c78243e39b8f4e3f853..e9fc2b4661f5275b93db5d3fdf25a8bdc3b38920 100644
|
||||
index cd2c365bcaca0720dc543188a23ff585192cb76e..776d397fc31db121fa933a2ae2b4f1589fc10247 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
@@ -647,4 +647,9 @@ public class PurpurConfig {
|
||||
@@ -652,4 +652,9 @@ public class PurpurConfig {
|
||||
block.fallDistanceMultiplier = fallDistanceMultiplier.floatValue();
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user