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 d52a522fe6d5c4375862691fa32450bc458ca38b..648aff395887d2f13846b1bbe59f4115206ad7cf 100644 --- a/src/main/java/io/papermc/paper/chunk/system/RegionizedPlayerChunkLoader.java +++ b/src/main/java/io/papermc/paper/chunk/system/RegionizedPlayerChunkLoader.java @@ -486,7 +486,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 5ccfc95f51a899b1cd3f34af5e5bb05d902016b8..9c20bd199454b6032a6a90676d12526168b8dd0b 100644 --- a/src/main/java/net/minecraft/server/level/ChunkHolder.java +++ b/src/main/java/net/minecraft/server/level/ChunkHolder.java @@ -133,7 +133,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 } }