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