From 04159817eba2ca32443cc40fe7467aa80bb2e68d Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Sat, 11 Jan 2025 21:50:08 -0800 Subject: [PATCH] Fix default permission system --- .../0026-Fix-default-permission-system.patch | 77 ------------------- .../permissions/PermissibleBase.java.patch | 20 +++++ .../permissions/DefaultPermissions.java.patch | 53 ++++++++++++- 3 files changed, 69 insertions(+), 81 deletions(-) delete mode 100644 patches/api/0026-Fix-default-permission-system.patch create mode 100644 purpur-api/paper-patches/files/src/main/java/org/bukkit/permissions/PermissibleBase.java.patch diff --git a/patches/api/0026-Fix-default-permission-system.patch b/patches/api/0026-Fix-default-permission-system.patch deleted file mode 100644 index 83d8a54ee..000000000 --- a/patches/api/0026-Fix-default-permission-system.patch +++ /dev/null @@ -1,77 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: William Blake Galbreath -Date: Wed, 30 Jun 2021 17:44:27 -0500 -Subject: [PATCH] Fix default permission system - - -diff --git a/src/main/java/org/bukkit/permissions/PermissibleBase.java b/src/main/java/org/bukkit/permissions/PermissibleBase.java -index 75b77cc4fe189b4b6baa1af3663dc492e992a266..30b98d1645c571ba5c18e5cc93b0bec3f74b1d3b 100644 ---- a/src/main/java/org/bukkit/permissions/PermissibleBase.java -+++ b/src/main/java/org/bukkit/permissions/PermissibleBase.java -@@ -169,7 +169,7 @@ public class PermissibleBase implements Permissible { - - for (Permission perm : defaults) { - String name = perm.getName().toLowerCase(Locale.ROOT); -- permissions.put(name, new PermissionAttachmentInfo(parent, name, null, true)); -+ permissions.put(name, new PermissionAttachmentInfo(parent, name, null, perm.getDefault().getValue(isOp()))); // Purpur - Bukkit.getServer().getPluginManager().subscribeToPermission(name, parent); - calculateChildPermissions(perm.getChildren(), false, null); - } -@@ -197,7 +197,7 @@ public class PermissibleBase implements Permissible { - String name = entry.getKey(); - - Permission perm = Bukkit.getServer().getPluginManager().getPermission(name); -- boolean value = entry.getValue() ^ invert; -+ boolean value = (entry.getValue() == null && perm != null ? perm.getDefault().getValue(isOp()) : entry.getValue()) ^ invert; // Purpur - String lname = name.toLowerCase(Locale.ROOT); - - permissions.put(lname, new PermissionAttachmentInfo(parent, lname, attachment, value)); -diff --git a/src/main/java/org/bukkit/util/permissions/DefaultPermissions.java b/src/main/java/org/bukkit/util/permissions/DefaultPermissions.java -index 8e481e3815f5645ee92f0d229e5ff25c8fc9a6c2..10627d2a11251a8cb01bbc3f6242d66f3505a16e 100644 ---- a/src/main/java/org/bukkit/util/permissions/DefaultPermissions.java -+++ b/src/main/java/org/bukkit/util/permissions/DefaultPermissions.java -@@ -31,7 +31,7 @@ public final class DefaultPermissions { - - if (withLegacy) { - Permission legacy = new Permission(LEGACY_PREFIX + result.getName(), result.getDescription(), PermissionDefault.FALSE); -- legacy.getChildren().put(result.getName(), true); -+ legacy.getChildren().put(result.getName(), null); // Purpur - registerPermission(perm, false); - } - -@@ -40,7 +40,7 @@ public final class DefaultPermissions { - - @NotNull - public static Permission registerPermission(@NotNull Permission perm, @NotNull Permission parent) { -- parent.getChildren().put(perm.getName(), true); -+ parent.getChildren().put(perm.getName(), null); // Purpur - return registerPermission(perm); - } - -@@ -53,7 +53,7 @@ public final class DefaultPermissions { - @NotNull - public static Permission registerPermission(@NotNull String name, @Nullable String desc, @NotNull Permission parent) { - Permission perm = registerPermission(name, desc); -- parent.getChildren().put(perm.getName(), true); -+ parent.getChildren().put(perm.getName(), null); // Purpur - return perm; - } - -@@ -66,7 +66,7 @@ public final class DefaultPermissions { - @NotNull - public static Permission registerPermission(@NotNull String name, @Nullable String desc, @Nullable PermissionDefault def, @NotNull Permission parent) { - Permission perm = registerPermission(name, desc, def); -- parent.getChildren().put(perm.getName(), true); -+ parent.getChildren().put(perm.getName(), null); // Purpur - return perm; - } - -@@ -79,7 +79,7 @@ public final class DefaultPermissions { - @NotNull - public static Permission registerPermission(@NotNull String name, @Nullable String desc, @Nullable PermissionDefault def, @Nullable Map children, @NotNull Permission parent) { - Permission perm = registerPermission(name, desc, def, children); -- parent.getChildren().put(perm.getName(), true); -+ parent.getChildren().put(perm.getName(), null); // Purpur - return perm; - } - diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/permissions/PermissibleBase.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/permissions/PermissibleBase.java.patch new file mode 100644 index 000000000..e83156fc3 --- /dev/null +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/permissions/PermissibleBase.java.patch @@ -0,0 +1,20 @@ +--- a/src/main/java/org/bukkit/permissions/PermissibleBase.java ++++ b/src/main/java/org/bukkit/permissions/PermissibleBase.java +@@ -169,7 +_,7 @@ + + for (Permission perm : defaults) { + String name = perm.getName().toLowerCase(Locale.ROOT); +- permissions.put(name, new PermissionAttachmentInfo(parent, name, null, true)); ++ permissions.put(name, new PermissionAttachmentInfo(parent, name, null, perm.getDefault().getValue(isOp()))); // Purpur - Fix default permission system + Bukkit.getServer().getPluginManager().subscribeToPermission(name, parent); + calculateChildPermissions(perm.getChildren(), false, null); + } +@@ -197,7 +_,7 @@ + String name = entry.getKey(); + + Permission perm = Bukkit.getServer().getPluginManager().getPermission(name); +- boolean value = entry.getValue() ^ invert; ++ boolean value = (entry.getValue() == null && perm != null ? perm.getDefault().getValue(isOp()) : entry.getValue()) ^ invert; // Purpur - Fix default permission system + String lname = name.toLowerCase(Locale.ROOT); + + permissions.put(lname, new PermissionAttachmentInfo(parent, lname, attachment, value)); diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/util/permissions/DefaultPermissions.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/util/permissions/DefaultPermissions.java.patch index b77b5cad1..4cf992931 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/util/permissions/DefaultPermissions.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/util/permissions/DefaultPermissions.java.patch @@ -1,11 +1,56 @@ --- a/src/main/java/org/bukkit/util/permissions/DefaultPermissions.java +++ b/src/main/java/org/bukkit/util/permissions/DefaultPermissions.java -@@ -89,6 +_,8 @@ +@@ -31,7 +_,7 @@ + + if (withLegacy) { + Permission legacy = new Permission(LEGACY_PREFIX + result.getName(), result.getDescription(), PermissionDefault.FALSE); +- legacy.getChildren().put(result.getName(), true); ++ legacy.getChildren().put(result.getName(), null); // Purpur - Fix default permission system + registerPermission(perm, false); + } + +@@ -40,7 +_,7 @@ + + @NotNull + public static Permission registerPermission(@NotNull Permission perm, @NotNull Permission parent) { +- parent.getChildren().put(perm.getName(), true); ++ parent.getChildren().put(perm.getName(), null); // Purpur - Fix default permission system + return registerPermission(perm); + } + +@@ -53,7 +_,7 @@ + @NotNull + public static Permission registerPermission(@NotNull String name, @Nullable String desc, @NotNull Permission parent) { + Permission perm = registerPermission(name, desc); +- parent.getChildren().put(perm.getName(), true); ++ parent.getChildren().put(perm.getName(), null); // Purpur - Fix default permission system + return perm; + } + +@@ -66,7 +_,7 @@ + @NotNull + public static Permission registerPermission(@NotNull String name, @Nullable String desc, @Nullable PermissionDefault def, @NotNull Permission parent) { + Permission perm = registerPermission(name, desc, def); +- parent.getChildren().put(perm.getName(), true); ++ parent.getChildren().put(perm.getName(), null); // Purpur - Fix default permission system + return perm; + } + +@@ -79,7 +_,7 @@ + @NotNull + public static Permission registerPermission(@NotNull String name, @Nullable String desc, @Nullable PermissionDefault def, @Nullable Map children, @NotNull Permission parent) { + Permission perm = registerPermission(name, desc, def, children); +- parent.getChildren().put(perm.getName(), true); ++ parent.getChildren().put(perm.getName(), null); // Purpur - Fix default permission system + return perm; + } + +@@ -88,6 +_,8 @@ + CommandPermissions.registerPermissions(parent); BroadcastPermissions.registerPermissions(parent); - -+ org.purpurmc.purpur.util.permissions.PurpurPermissions.registerPermissions(); // Purpur - Default permissions + ++ org.purpurmc.purpur.util.permissions.PurpurPermissions.registerPermissions(); // Purpur - Default permissions + parent.recalculatePermissibles(); } - }