diff --git a/docs/source/configuration.rst b/docs/source/configuration.rst index 7009e2f77..0d2e2590f 100644 --- a/docs/source/configuration.rst +++ b/docs/source/configuration.rst @@ -123,6 +123,18 @@ blocks * six-rows - **default**: false - **description**: Ender chests should have 6 rows of inventory space + * use-permissions-for-rows + - **default**: false + - **description**: Use permission nodes to determine the number of rows. `six-rows` MUST be enabled for this to work. + +.. note:: + Enderchest row permissions: + purpur.enderchest.rows.six + purpur.enderchest.rows.five + purpur.enderchest.rows.four + purpur.enderchest.rows.three + purpur.enderchest.rows.two + purpur.enderchest.rows.one * slime * not-movable-by-piston diff --git a/docs/source/permissions.rst b/docs/source/permissions.rst index 865d6a60c..2faf1dbfd 100644 --- a/docs/source/permissions.rst +++ b/docs/source/permissions.rst @@ -61,3 +61,24 @@ need to be granted the permissions you want them to have using a permissions plu * **purpur.sign.magic** - **description**: Allows players to use the magic/obfuscated style code on signs + +* **purpur.enderchest.rows.six** + - **description**: Allows players to have 6 rows in their enderchest + +* **purpur.enderchest.rows.five** + - **description**: Allows players to have 5 rows in their enderchest + +* **purpur.enderchest.rows.four** + - **description**: Allows players to have 4 rows in their enderchest + +* **purpur.enderchest.rows.three** + - **description**: Allows players to have 3 rows in their enderchest + +* **purpur.enderchest.rows.two** + - **description**: Allows players to have 2 rows in their enderchest + +* **purpur.enderchest.rows.one** + - **description**: Allows players to have 1 row in their enderchest + +.. note:: + Enderchest row permissions require `settings.blocks.ender_chest.six-rows` to be enabled! \ No newline at end of file diff --git a/patches/server/0072-Barrels-have-6-rows.patch b/patches/server/0072-Barrels-have-6-rows.patch index 790ab6a20..58f0b1d11 100644 --- a/patches/server/0072-Barrels-have-6-rows.patch +++ b/patches/server/0072-Barrels-have-6-rows.patch @@ -1,29 +1,16 @@ -From 4b3279b5da65dcffdfdf536636d412ec489c0229 Mon Sep 17 00:00:00 2001 +From ff4d461e5c4cee9dcfb4b299319be75fb7861d22 Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Thu, 23 May 2019 21:50:37 -0500 Subject: [PATCH] Barrels have 6 rows --- - src/main/java/net/minecraft/server/ContainerChest.java | 1 + src/main/java/net/minecraft/server/TileEntityBarrel.java | 5 +++-- src/main/java/net/pl3x/purpur/PurpurConfig.java | 9 +++++++++ .../org/bukkit/craftbukkit/inventory/CraftContainer.java | 5 ++++- - 4 files changed, 17 insertions(+), 3 deletions(-) + 3 files changed, 16 insertions(+), 3 deletions(-) -diff --git a/src/main/java/net/minecraft/server/ContainerChest.java b/src/main/java/net/minecraft/server/ContainerChest.java -index 0ee6524b89..7d8567b4b8 100644 ---- a/src/main/java/net/minecraft/server/ContainerChest.java -+++ b/src/main/java/net/minecraft/server/ContainerChest.java -@@ -65,6 +65,7 @@ public class ContainerChest extends Container { - return new ContainerChest(Containers.GENERIC_9X3, i, playerinventory, iinventory, 3); - } - -+ public static ContainerChest createSixRows(int i, PlayerInventory playerinventory, IInventory iinventory) { return b(i, playerinventory, iinventory); } // Purpur - OBFHELPER - public static ContainerChest b(int i, PlayerInventory playerinventory, IInventory iinventory) { - return new ContainerChest(Containers.GENERIC_9X6, i, playerinventory, iinventory, 6); - } diff --git a/src/main/java/net/minecraft/server/TileEntityBarrel.java b/src/main/java/net/minecraft/server/TileEntityBarrel.java -index 1e27abbea0..d1a3aae91f 100644 +index 1e27abbea0..ca3b6c9aae 100644 --- a/src/main/java/net/minecraft/server/TileEntityBarrel.java +++ b/src/main/java/net/minecraft/server/TileEntityBarrel.java @@ -54,7 +54,7 @@ public class TileEntityBarrel extends TileEntityLootable { @@ -48,7 +35,7 @@ index 1e27abbea0..d1a3aae91f 100644 @Override protected Container createContainer(int i, PlayerInventory playerinventory) { -+ if (net.pl3x.purpur.PurpurConfig.barrelSixRows) return ContainerChest.createSixRows(i, playerinventory, this); // Purpur ++ if (net.pl3x.purpur.PurpurConfig.barrelSixRows) return new ContainerChest(Containers.GENERIC_9X6, i, playerinventory, this, 6); // Purpur return ContainerChest.a(i, playerinventory, this); } diff --git a/patches/server/0073-Ender-chests-have-6-rows.patch b/patches/server/0073-Enderchest-6-rows-plus-permissions.patch similarity index 51% rename from patches/server/0073-Ender-chests-have-6-rows.patch rename to patches/server/0073-Enderchest-6-rows-plus-permissions.patch index 192dc364c..2ec518a32 100644 --- a/patches/server/0073-Ender-chests-have-6-rows.patch +++ b/patches/server/0073-Enderchest-6-rows-plus-permissions.patch @@ -1,25 +1,46 @@ -From 1f34762239549dcb0e48482dbdf48779c3ecec25 Mon Sep 17 00:00:00 2001 +From a21bd2c3bf71b5aace63a15e2ebddf6f72878475 Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Sun, 23 Jun 2019 17:01:26 -0500 -Subject: [PATCH] Ender chests have 6 rows +Subject: [PATCH] Enderchest 6 rows (plus permissions) --- - src/main/java/net/minecraft/server/BlockEnderChest.java | 1 + - src/main/java/net/minecraft/server/InventoryEnderChest.java | 2 +- - src/main/java/net/pl3x/purpur/PurpurConfig.java | 6 ++++++ - .../org/bukkit/craftbukkit/inventory/CraftContainer.java | 3 ++- - .../org/bukkit/craftbukkit/inventory/CraftInventory.java | 2 +- - 5 files changed, 11 insertions(+), 3 deletions(-) + .../net/minecraft/server/BlockEnderChest.java | 21 +++++++++++++++++++ + .../minecraft/server/InventoryEnderChest.java | 2 +- + .../java/net/pl3x/purpur/PurpurConfig.java | 8 +++++++ + .../craftbukkit/inventory/CraftContainer.java | 3 ++- + .../craftbukkit/inventory/CraftInventory.java | 2 +- + .../permissions/CraftDefaultPermissions.java | 8 +++++++ + 6 files changed, 41 insertions(+), 3 deletions(-) diff --git a/src/main/java/net/minecraft/server/BlockEnderChest.java b/src/main/java/net/minecraft/server/BlockEnderChest.java -index 0a892a5f1a..0aede130bd 100644 +index 0a892a5f1a..e7ef571dc5 100644 --- a/src/main/java/net/minecraft/server/BlockEnderChest.java +++ b/src/main/java/net/minecraft/server/BlockEnderChest.java -@@ -48,6 +48,7 @@ public class BlockEnderChest extends BlockChestAbstract im +@@ -48,6 +48,27 @@ public class BlockEnderChest extends BlockChestAbstract im inventoryenderchest.a(tileentityenderchest); entityhuman.openContainer(new TileInventory((i, playerinventory, entityhuman1) -> { -+ if (net.pl3x.purpur.PurpurConfig.enderChestSixRows) return ContainerChest.b(i, playerinventory, inventoryenderchest); // Purpur ++ // Purpur start ++ if (net.pl3x.purpur.PurpurConfig.enderChestSixRows) { ++ if (net.pl3x.purpur.PurpurConfig.enderChestPermissionRows) { ++ org.bukkit.craftbukkit.entity.CraftHumanEntity player = entityhuman.getBukkitEntity(); ++ if (player.hasPermission("purpur.enderchest.rows.six")) { ++ return new ContainerChest(Containers.GENERIC_9X6, i, playerinventory, inventoryenderchest, 6); ++ } else if (player.hasPermission("purpur.enderchest.rows.five")) { ++ return new ContainerChest(Containers.GENERIC_9X5, i, playerinventory, inventoryenderchest, 5); ++ } else if (player.hasPermission("purpur.enderchest.rows.four")) { ++ return new ContainerChest(Containers.GENERIC_9X4, i, playerinventory, inventoryenderchest, 4); ++ } else if (player.hasPermission("purpur.enderchest.rows.three")) { ++ return new ContainerChest(Containers.GENERIC_9X3, i, playerinventory, inventoryenderchest, 3); ++ } else if (player.hasPermission("purpur.enderchest.rows.two")) { ++ return new ContainerChest(Containers.GENERIC_9X2, i, playerinventory, inventoryenderchest, 2); ++ } else if (player.hasPermission("purpur.enderchest.rows.one")) { ++ return new ContainerChest(Containers.GENERIC_9X1, i, playerinventory, inventoryenderchest, 1); ++ } ++ } ++ return new ContainerChest(Containers.GENERIC_9X6, i, playerinventory, inventoryenderchest, 6); ++ } ++ // Purpur end return ContainerChest.a(i, playerinventory, inventoryenderchest); }, BlockEnderChest.e)); entityhuman.a(StatisticList.OPEN_ENDERCHEST); @@ -37,14 +58,15 @@ index fd31b9a6dc..903c02e9ef 100644 // CraftBukkit end } diff --git a/src/main/java/net/pl3x/purpur/PurpurConfig.java b/src/main/java/net/pl3x/purpur/PurpurConfig.java -index 871f2a031a..e78f73f8a2 100644 +index 871f2a031a..9f6b4dc9a5 100644 --- a/src/main/java/net/pl3x/purpur/PurpurConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurConfig.java -@@ -162,14 +162,20 @@ public class PurpurConfig { +@@ -162,14 +162,22 @@ public class PurpurConfig { public static boolean barrelSixRows = false; public static boolean slimeBlocksNotPushable = false; + public static boolean enderChestSixRows = false; ++ public static boolean enderChestPermissionRows = false; private static void blockSettings() { if (version < 3) { boolean oldValue = getBoolean("settings.barrel.packed-barrels", true); @@ -58,6 +80,7 @@ index 871f2a031a..e78f73f8a2 100644 InventoryType.BARREL.setDefaultSize(barrelSixRows ? 54 : 27); + enderChestSixRows = getBoolean("settings.blocks.ender_chest.six-rows", enderChestSixRows); + InventoryType.ENDER_CHEST.setDefaultSize(enderChestSixRows ? 54 : 27); ++ enderChestPermissionRows = getBoolean("settings.blocks.ender_chest.use-permissions-for-rows", enderChestPermissionRows); slimeBlocksNotPushable = getBoolean("settings.blocks.slime.not-movable-by-piston", slimeBlocksNotPushable); } @@ -95,6 +118,25 @@ index 026a0c3995..d2c06cff2c 100644 throw new IllegalArgumentException("Invalid inventory size; expected " + getSize() + " or less"); } +diff --git a/src/main/java/org/bukkit/craftbukkit/util/permissions/CraftDefaultPermissions.java b/src/main/java/org/bukkit/craftbukkit/util/permissions/CraftDefaultPermissions.java +index d936b9284e..d7b1b56d94 100644 +--- a/src/main/java/org/bukkit/craftbukkit/util/permissions/CraftDefaultPermissions.java ++++ b/src/main/java/org/bukkit/craftbukkit/util/permissions/CraftDefaultPermissions.java +@@ -17,6 +17,14 @@ public final class CraftDefaultPermissions { + DefaultPermissions.registerPermission(ROOT + ".debugstick", "Gives the user the ability to use the debug stick in creative", org.bukkit.permissions.PermissionDefault.OP, parent); + DefaultPermissions.registerPermission(ROOT + ".debugstick.always", "Gives the user the ability to use the debug stick in all game modes", org.bukkit.permissions.PermissionDefault.FALSE, parent); + // Spigot end ++ // Purpur start ++ DefaultPermissions.registerPermission("purpur.enderchest.rows.six", "Gives the user six rows of enderchest space", org.bukkit.permissions.PermissionDefault.FALSE); ++ DefaultPermissions.registerPermission("purpur.enderchest.rows.five", "Gives the user five rows of enderchest space", org.bukkit.permissions.PermissionDefault.FALSE); ++ DefaultPermissions.registerPermission("purpur.enderchest.rows.four", "Gives the user four rows of enderchest space", org.bukkit.permissions.PermissionDefault.FALSE); ++ DefaultPermissions.registerPermission("purpur.enderchest.rows.three", "Gives the user three rows of enderchest space", org.bukkit.permissions.PermissionDefault.FALSE); ++ DefaultPermissions.registerPermission("purpur.enderchest.rows.two", "Gives the user two rows of enderchest space", org.bukkit.permissions.PermissionDefault.FALSE); ++ DefaultPermissions.registerPermission("purpur.enderchest.rows.one", "Gives the user one row of enderchest space", org.bukkit.permissions.PermissionDefault.FALSE); ++ // Purpur end + parent.recalculatePermissibles(); + } + } -- 2.24.0 diff --git a/patches/server/0075-Don-t-recalculate-permissions-for-players-on-world-c.patch b/patches/server/0075-Don-t-recalculate-permissions-for-players-on-world-c.patch index 004c0a138..e2492f5ad 100644 --- a/patches/server/0075-Don-t-recalculate-permissions-for-players-on-world-c.patch +++ b/patches/server/0075-Don-t-recalculate-permissions-for-players-on-world-c.patch @@ -1,4 +1,4 @@ -From 83e17c570af947f1857922038e4a45f7babbc4d4 Mon Sep 17 00:00:00 2001 +From 33531668ff2757d7b7ca00d8c887f15bbc6e677d Mon Sep 17 00:00:00 2001 From: Tom Date: Fri, 12 Jul 2019 07:59:35 -0500 Subject: [PATCH] Don't recalculate permissions for players on world change @@ -51,10 +51,10 @@ index 253ee52eb5..cf8f24b31c 100644 public boolean isWhitelisted(GameProfile gameprofile) { return isWhitelisted(gameprofile, null); diff --git a/src/main/java/net/pl3x/purpur/PurpurConfig.java b/src/main/java/net/pl3x/purpur/PurpurConfig.java -index e78f73f8a2..384afe2e64 100644 +index 9f6b4dc9a5..a8276ab477 100644 --- a/src/main/java/net/pl3x/purpur/PurpurConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurConfig.java -@@ -179,6 +179,11 @@ public class PurpurConfig { +@@ -181,6 +181,11 @@ public class PurpurConfig { slimeBlocksNotPushable = getBoolean("settings.blocks.slime.not-movable-by-piston", slimeBlocksNotPushable); } diff --git a/patches/server/0109-Configurable-server-mod-name.patch b/patches/server/0109-Configurable-server-mod-name.patch index 6f97a4213..79b5a40b7 100644 --- a/patches/server/0109-Configurable-server-mod-name.patch +++ b/patches/server/0109-Configurable-server-mod-name.patch @@ -1,4 +1,4 @@ -From 5193f535a226b90d020395aeb5f3524f6593a81b Mon Sep 17 00:00:00 2001 +From 36123f6107c61f9450af7b8ec14e6f0b7ef34eca Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Sat, 21 Mar 2020 11:47:39 -0500 Subject: [PATCH] Configurable server mod name @@ -22,10 +22,10 @@ index 5d28185248..c5319ff0f5 100644 public CrashReport b(CrashReport crashreport) { diff --git a/src/main/java/net/pl3x/purpur/PurpurConfig.java b/src/main/java/net/pl3x/purpur/PurpurConfig.java -index 3eaecc6393..312a503a98 100644 +index 4c6d401b09..0948d67260 100644 --- a/src/main/java/net/pl3x/purpur/PurpurConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurConfig.java -@@ -189,6 +189,11 @@ public class PurpurConfig { +@@ -191,6 +191,11 @@ public class PurpurConfig { recalculatePermsOnWorldChange = getBoolean("settings.recalculate-perms-on-world-change", recalculatePermsOnWorldChange); }