43 lines
2.5 KiB
Diff
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
|
|
}
|
|
}
|
|
|