Skip to content

Commit b63fc3b

Browse files
authored
Add new permissions and register some existing ones (#1157)
1 parent d2e8d33 commit b63fc3b

4 files changed

Lines changed: 29 additions & 15 deletions

patches/api/0006-Default-permissions.patch

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,10 @@ index e1a4ddf2c07cdd242fa8054a0152522fe4039e85..8e481e3815f5645ee92f0d229e5ff25c
3131
}
3232
diff --git a/src/main/java/org/bukkit/util/permissions/PurpurPermissions.java b/src/main/java/org/bukkit/util/permissions/PurpurPermissions.java
3333
new file mode 100644
34-
index 0000000000000000000000000000000000000000..bed91e726faae389536c8725061f23f069ba6b21
34+
index 0000000000000000000000000000000000000000..baec4c87d7ea4d54934ca22fd1eb7b46dd69061b
3535
--- /dev/null
3636
+++ b/src/main/java/org/bukkit/util/permissions/PurpurPermissions.java
37-
@@ -0,0 +1,79 @@
37+
@@ -0,0 +1,87 @@
3838
+package org.bukkit.util.permissions;
3939
+
4040
+import org.bukkit.entity.Entity;
@@ -78,7 +78,15 @@ index 0000000000000000000000000000000000000000..bed91e726faae389536c8725061f23f0
7878
+ DefaultPermissions.registerPermission(PREFIX + "drop.spawners", "Allows the user to drop spawner cage when broken with diamond pickaxe with silk touch", PermissionDefault.FALSE, purpur);
7979
+ DefaultPermissions.registerPermission(PREFIX + "place.spawners", "Allows the user to place spawner cage in the world", PermissionDefault.FALSE, purpur);
8080
+
81-
+ DefaultPermissions.registerPermission(PREFIX + "anvil.color", "Allows the user to use color codes on anvils", PermissionDefault.FALSE, purpur);
81+
+ DefaultPermissions.registerPermission(PREFIX + "mending_shift_click", "Allows the user to use shift-right-click to mend items", PermissionDefault.FALSE, purpur);
82+
+ DefaultPermissions.registerPermission(PREFIX + "inventory_totem", "Uses a totem from anywhere in the user's inventory on death", PermissionDefault.FALSE, purpur);
83+
+
84+
+ Permission anvil = DefaultPermissions.registerPermission(PREFIX + "anvil", "Allows the user to use all anvil color and format abilities", PermissionDefault.FALSE, purpur);
85+
+ DefaultPermissions.registerPermission(PREFIX + "anvil.color", "Allows the user to use color codes in an anvil", PermissionDefault.FALSE, anvil);
86+
+ DefaultPermissions.registerPermission(PREFIX + "anvil.minimessage", "Allows the user to use minimessage tags in an anvil", PermissionDefault.FALSE, anvil);
87+
+ DefaultPermissions.registerPermission(PREFIX + "anvil.remove_italics", "Allows the user to remove italics in an anvil", PermissionDefault.FALSE, anvil);
88+
+ DefaultPermissions.registerPermission(PREFIX + "anvil.format", "Allows the user to use format codes in an anvil", PermissionDefault.FALSE, anvil);
89+
+ anvil.recalculatePermissibles();
8290
+
8391
+ Permission book = DefaultPermissions.registerPermission(PREFIX + "book", "Allows the user to use color codes on books", PermissionDefault.FALSE, purpur);
8492
+ DefaultPermissions.registerPermission(PREFIX + "book.color.edit", "Allows the user to use color codes on books when editing", PermissionDefault.FALSE, book);

patches/server/0084-Totems-work-in-inventory.patch

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,15 @@ Subject: [PATCH] Totems work in inventory
55

66

77
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
8-
index 500b702e2d2b6ba4df07d1fb3e85d632feece76c..7d76ccd2a73209565735a2b2efafe7fd60089e52 100644
8+
index 500b702e2d2b6ba4df07d1fb3e85d632feece76c..4eb8920a94304dd12ea94850deda96ff841e024a 100644
99
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
1010
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
11-
@@ -1546,6 +1546,19 @@ public abstract class LivingEntity extends Entity {
11+
@@ -1546,6 +1546,18 @@ public abstract class LivingEntity extends Entity {
1212
}
1313
}
1414

1515
+ // Purpur start
16-
+ if (level.purpurConfig.totemOfUndyingWorksInInventory && this instanceof ServerPlayer && (itemstack == null || itemstack.getItem() != Items.TOTEM_OF_UNDYING)) {
17-
+ ServerPlayer player = (ServerPlayer) this;
16+
+ if (level.purpurConfig.totemOfUndyingWorksInInventory && this instanceof ServerPlayer player && (itemstack == null || itemstack.getItem() != Items.TOTEM_OF_UNDYING) && player.getBukkitEntity().hasPermission("purpur.inventory_totem")) {
1817
+ for (ItemStack item : player.getInventory().items) {
1918
+ if (item.getItem() == Items.TOTEM_OF_UNDYING) {
2019
+ itemstack1 = item;

patches/server/0088-Allow-anvil-colors.patch

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,24 +5,31 @@ Subject: [PATCH] Allow anvil colors
55

66

77
diff --git a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java
8-
index 0363d2263b2d6bd6166fa21d7849297e95eddd77..4b706a22859c5be41abeb6255680e1f085f050a2 100644
8+
index 0363d2263b2d6bd6166fa21d7849297e95eddd77..3dbef489a0bf27fbef95de599970141f4aa783f3 100644
99
--- a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java
1010
+++ b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java
11-
@@ -280,6 +280,19 @@ public class AnvilMenu extends ItemCombinerMenu {
11+
@@ -280,6 +280,26 @@ public class AnvilMenu extends ItemCombinerMenu {
1212
} else if (!this.itemName.equals(itemstack.getHoverName().getString())) {
1313
b1 = 1;
1414
i += b1;
1515
+ // Purpur start
16-
+ if (player != null && player.level.purpurConfig.anvilAllowColors && player.getBukkitEntity().hasPermission("purpur.anvil.color")) {
16+
+ if (player != null && player.level.purpurConfig.anvilAllowColors) {
17+
+ org.bukkit.craftbukkit.entity.CraftHumanEntity bukkitPlayer = player.getBukkitEntity();
1718
+ final net.kyori.adventure.text.Component renameTextComponent;
18-
+ if (player.level.purpurConfig.anvilColorsUseMiniMessage && player.getBukkitEntity().hasPermission("purpur.anvil.minimessage")) {
19+
+ if (player.level.purpurConfig.anvilColorsUseMiniMessage && bukkitPlayer.hasPermission("purpur.anvil.minimessage")) {
1920
+ renameTextComponent = net.kyori.adventure.text.minimessage.MiniMessage.miniMessage().deserialize(itemName);
21+
+ itemstack1.setHoverName(io.papermc.paper.adventure.PaperAdventure.asVanilla(renameTextComponent));
2022
+ } else if (itemName.startsWith("&r") && player.getBukkitEntity().hasPermission("purpur.anvil.remove_italics")) {
2123
+ renameTextComponent = net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacyAmpersand().deserialize(itemName.substring(2)).decoration(net.kyori.adventure.text.format.TextDecoration.ITALIC, false);
22-
+ } else {
24+
+ itemstack1.setHoverName(io.papermc.paper.adventure.PaperAdventure.asVanilla(renameTextComponent));
25+
+ } else if (bukkitPlayer.hasPermission("purpur.anvil.color")) {
2326
+ renameTextComponent = net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacyAmpersand().deserialize(itemName);
27+
+ itemstack1.setHoverName(io.papermc.paper.adventure.PaperAdventure.asVanilla(renameTextComponent));
28+
+ } else if (player.getBukkitEntity().hasPermission("purpur.anvil.format")){
29+
+ itemName = itemName.replaceAll("(?i)&([l-or])", "\u00a7$1");
30+
+ renameTextComponent = net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().deserialize(itemName);
31+
+ itemstack1.setHoverName(io.papermc.paper.adventure.PaperAdventure.asVanilla(renameTextComponent));
2432
+ }
25-
+ itemstack1.setHoverName(io.papermc.paper.adventure.PaperAdventure.asVanilla(renameTextComponent));
2633
+ } else
2734
+ // Purpur end
2835
itemstack1.setHoverName(Component.literal(this.itemName));

patches/server/0227-Shift-right-click-to-use-exp-for-mending.patch

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ Subject: [PATCH] Shift right click to use exp for mending
55

66

77
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
8-
index 9f8995c559b500415ec8d214f7c164707046f6ac..194e9e341b9d1a966d0d78af19120422d7b7eb0a 100644
8+
index 9f8995c559b500415ec8d214f7c164707046f6ac..4816b5bd54ae6e080af4c19df43d57e852e76146 100644
99
--- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
1010
+++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java
1111
@@ -509,6 +509,7 @@ public class ServerPlayerGameMode {
@@ -23,7 +23,7 @@ index 9f8995c559b500415ec8d214f7c164707046f6ac..194e9e341b9d1a966d0d78af19120422
2323
+
2424
+ // Purpur start
2525
+ public boolean shiftClickMended(ItemStack itemstack) {
26-
+ if (this.player.level.purpurConfig.shiftRightClickRepairsMendingPoints > 0 && this.player.isShiftKeyDown()) {
26+
+ if (this.player.level.purpurConfig.shiftRightClickRepairsMendingPoints > 0 && this.player.isShiftKeyDown() && this.player.getBukkitEntity().hasPermission("purpur.mending_shift_click")) {
2727
+ int points = Math.min(this.player.totalExperience, this.player.level.purpurConfig.shiftRightClickRepairsMendingPoints);
2828
+ if (points > 0 && itemstack.isDamaged() && net.minecraft.world.item.enchantment.EnchantmentHelper.getItemEnchantmentLevel(net.minecraft.world.item.enchantment.Enchantments.MENDING, itemstack) > 0) {
2929
+ this.player.giveExperiencePoints(-points);

0 commit comments

Comments
 (0)