Warn on plugins accessing faraway chunks (#8208)
This commit is contained in:
@@ -3009,6 +3009,36 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||
+ return this.sum;
|
||||
+ }
|
||||
+}
|
||||
diff --git a/src/main/java/io/papermc/paper/util/StackWalkerUtil.java b/src/main/java/io/papermc/paper/util/StackWalkerUtil.java
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/io/papermc/paper/util/StackWalkerUtil.java
|
||||
@@ -0,0 +0,0 @@
|
||||
+package io.papermc.paper.util;
|
||||
+
|
||||
+import org.bukkit.plugin.java.JavaPlugin;
|
||||
+import org.bukkit.plugin.java.PluginClassLoader;
|
||||
+import org.jetbrains.annotations.Nullable;
|
||||
+
|
||||
+import java.util.Optional;
|
||||
+
|
||||
+public class StackWalkerUtil {
|
||||
+
|
||||
+ @Nullable
|
||||
+ public static JavaPlugin getFirstPluginCaller() {
|
||||
+ Optional<JavaPlugin> foundFrame = StackWalker.getInstance(StackWalker.Option.RETAIN_CLASS_REFERENCE)
|
||||
+ .walk(stream -> stream
|
||||
+ .filter(frame -> frame.getDeclaringClass().getClassLoader() instanceof PluginClassLoader)
|
||||
+ .map((frame) -> {
|
||||
+ PluginClassLoader classLoader = (PluginClassLoader) frame.getDeclaringClass().getClassLoader();
|
||||
+ return classLoader.getPlugin();
|
||||
+ })
|
||||
+ .findFirst());
|
||||
+
|
||||
+ return foundFrame.orElse(null);
|
||||
+ }
|
||||
+}
|
||||
diff --git a/src/main/java/io/papermc/paper/util/WorldUtil.java b/src/main/java/io/papermc/paper/util/WorldUtil.java
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000
|
||||
|
||||
Reference in New Issue
Block a user