From 1e3235782512e8224c5c1d62048226ee0e10517b Mon Sep 17 00:00:00 2001
From: TheMeinerLP
Date: Sun, 17 Mar 2024 19:59:34 +0100
Subject: [PATCH] Add permission check for spawn protection
---
...ermission-check-for-spawn-protection.patch | 41 +++++++++++++++++++
1 file changed, 41 insertions(+)
create mode 100644 patches/server/0002-Add-permission-check-for-spawn-protection.patch
diff --git a/patches/server/0002-Add-permission-check-for-spawn-protection.patch b/patches/server/0002-Add-permission-check-for-spawn-protection.patch
new file mode 100644
index 000000000..b7ccb9677
--- /dev/null
+++ b/patches/server/0002-Add-permission-check-for-spawn-protection.patch
@@ -0,0 +1,41 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: TheMeinerLP
+Date: Sun, 17 Mar 2024 19:59:28 +0100
+Subject: [PATCH] Add permission check for spawn protection
+
+
+diff --git a/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java b/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java
+index f2e30d8743a97c0541808dc5c03300c0d881b843..9c1b6e15c7f6b366a07c6cd774d045ea7a353955 100644
+--- a/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java
++++ b/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java
+@@ -183,6 +183,8 @@ public class GlobalConfiguration extends ConfigurationPart {
+ public boolean allowHeadlessPistons = false;
+ @Comment("This setting controls if grindstones should be able to output overstacked items (such as cursed books).")
+ public boolean allowGrindstoneOverstacking = false;
++ @Comment("This setting controls if players should be able to build with permission inside of the spawn protection")
++ public boolean allowOverrideOpBehaviorForSpawnProtection = false;
+ @Comment("This setting controls what compression format is used for region files.")
+ public CompressionFormat compressionFormat = CompressionFormat.ZLIB;
+
+diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
+index 68d268b6fff126e8645b6deec3fb549ea2286b77..738356816d1422119a7e9942b9d930888dcbbf92 100644
+--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
++++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
+@@ -19,6 +19,8 @@ import java.util.Locale;
+ import java.util.Optional;
+ import java.util.function.BooleanSupplier;
+ import javax.annotation.Nullable;
++
++import io.papermc.paper.configuration.GlobalConfiguration;
+ import net.minecraft.DefaultUncaughtExceptionHandler;
+ import net.minecraft.DefaultUncaughtExceptionHandlerWithName;
+ import net.minecraft.SharedConstants;
+@@ -575,6 +577,8 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
+ return false;
+ } else if (this.getPlayerList().isOp(player.getGameProfile())) {
+ return false;
++ } else if (GlobalConfiguration.get().unsupportedSettings.allowOverrideOpBehaviorForSpawnProtection && player.getBukkitEntity().hasPermission("bukkit.environment.spawnprotection.ignore")) { // OneLitePaper start - Add permission check for spawn protection
++ return false; // OneLitePaper end - Add permission check for spawn protection
+ } else if (this.getSpawnProtectionRadius() <= 0) {
+ return false;
+ } else {