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 } }