Files
KaiijuMC/patches/server/0019-Kick-player-instead-of-crashing.patch
2023-09-23 15:30:00 +02:00

43 lines
2.5 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: "Sofiane H. Djerbi" <46628754+kugge@users.noreply.github.com>
Date: Sun, 14 May 2023 18:50:57 +0300
Subject: [PATCH] Kick player instead of crashing
diff --git a/src/main/java/io/papermc/paper/chunk/system/RegionizedPlayerChunkLoader.java b/src/main/java/io/papermc/paper/chunk/system/RegionizedPlayerChunkLoader.java
index c5df121d6194a97b20dc390698991b9c72dba538..9990fccc741a139c57528f70157ae63dbe3fd8e8 100644
--- a/src/main/java/io/papermc/paper/chunk/system/RegionizedPlayerChunkLoader.java
+++ b/src/main/java/io/papermc/paper/chunk/system/RegionizedPlayerChunkLoader.java
@@ -485,7 +485,12 @@ public class RegionizedPlayerChunkLoader {
new ChunkPos(chunkX, chunkZ), new MutableObject<>(), false, true); // unloaded, loaded
return;
}
- throw new IllegalStateException();
+ // Kaiiju - Kick player instead of crashing
+ String errorMsg = "Already sent chunk [" + chunkX + ", " + chunkZ + "] in world " + this.world;
+ this.player.getBukkitEntity().kickPlayer(errorMsg);
+ org.bukkit.Bukkit.getLogger().severe(errorMsg);
+ // throw new IllegalStateException();
+ // Kaiiju end
}
private void sendUnloadChunk(final int chunkX, final int chunkZ) {
diff --git a/src/main/java/net/minecraft/server/level/ChunkHolder.java b/src/main/java/net/minecraft/server/level/ChunkHolder.java
index 18f438eec03cabc1614ab807081cff6b18fb09a8..df3869d7aee9c1c880319251b40879c8802c72b4 100644
--- a/src/main/java/net/minecraft/server/level/ChunkHolder.java
+++ b/src/main/java/net/minecraft/server/level/ChunkHolder.java
@@ -129,7 +129,12 @@ public class ChunkHolder {
public void addPlayer(ServerPlayer player) {
if (!this.playersSentChunkTo.add(player)) {
- throw new IllegalStateException("Already sent chunk " + this.pos + " in world '" + this.chunkMap.level.getWorld().getName() + "' to player " + player);
+ // Kaiiju start - Kick player instead of crashing
+ String errorMsg = "Already sent chunk " + this.pos + " in world " + this.chunkMap.level.getWorld().getName();
+ player.getBukkitEntity().kickPlayer(errorMsg);
+ org.bukkit.Bukkit.getLogger().severe(errorMsg);
+ //throw new IllegalStateException("Already sent chunk " + this.pos + " in world '" + this.chunkMap.level.getWorld().getName() + "' to player " + player);
+ // Kaiiju end
}
}