54 lines
2.4 KiB
Diff
54 lines
2.4 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: MrHua269 <novau233@163.com>
|
|
Date: Wed, 7 Feb 2024 06:30:03 +0000
|
|
Subject: [PATCH] Try fixing folia spector teleportation
|
|
|
|
|
|
diff --git a/src/main/java/me/earthme/luminol/config/modules/fixes/FoliaSpectorTeleportationFixConfig.java b/src/main/java/me/earthme/luminol/config/modules/fixes/FoliaSpectorTeleportationFixConfig.java
|
|
new file mode 100644
|
|
index 0000000000000000000000000000000000000000..01f8c6ff3662569be5a4ff998bcd4fbbcb555105
|
|
--- /dev/null
|
|
+++ b/src/main/java/me/earthme/luminol/config/modules/fixes/FoliaSpectorTeleportationFixConfig.java
|
|
@@ -0,0 +1,25 @@
|
|
+package me.earthme.luminol.config.modules.fixes;
|
|
+
|
|
+import me.earthme.luminol.config.ConfigInfo;
|
|
+import me.earthme.luminol.config.EnumConfigCategory;
|
|
+import me.earthme.luminol.config.IConfigModule;
|
|
+
|
|
+public class FoliaSpectorTeleportationFixConfig implements IConfigModule {
|
|
+ @ConfigInfo(baseName = "enabled", comments =
|
|
+ """
|
|
+ The teleportation of spector players would call absMoveTo directly.\s
|
|
+ And when the camera teleported to another region,this would call absMoveTo\s
|
|
+ to let the spector player move to another region without any checks, which \s
|
|
+ would trigger the async catcher and crash the server""")
|
|
+ public static boolean fixSpectorTeleportFolia = false;
|
|
+
|
|
+ @Override
|
|
+ public EnumConfigCategory getCategory() {
|
|
+ return EnumConfigCategory.FIXES;
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public String getBaseName() {
|
|
+ return "folia.fix_spector_teleportation";
|
|
+ }
|
|
+}
|
|
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
|
index 4e500aea07278535467ab6a9eba5b4269e1bd6ac..25978b9c25096f252acd60a0924bac400d6026e7 100644
|
|
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
|
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
|
@@ -843,6 +843,11 @@ public class ServerPlayer extends Player {
|
|
}
|
|
|
|
Entity entity = this.getCamera();
|
|
+ //Luminol start - Fix folia spector teleportation
|
|
+ if (!io.papermc.paper.util.TickThread.isTickThreadFor(entity) && me.earthme.luminol.config.modules.fixes.FoliaSpectorTeleportationFixConfig.fixSpectorTeleportFolia){
|
|
+ this.setCamera(this);
|
|
+ }
|
|
+ //Luminol end
|
|
|
|
if (entity != this) {
|
|
if (entity.isAlive()) {
|