From 11c49468d6233aac8504346921dbefed0c90454a Mon Sep 17 00:00:00 2001 From: NicholasJBond Date: Sat, 25 Nov 2023 19:39:49 +1000 Subject: [PATCH 1/2] resolves #2212 Adds the permission: essentials.sell.item.. For example, a player needs essentials.sell.item.redstone in order to sell redstone using /sell or a sell sign. Set permission to essentials.sell.item.* to allow all types or items to be sold. --- .../com/earth2me/essentials/commands/Commandsell.java | 9 +++++++++ .../java/com/earth2me/essentials/signs/SignSell.java | 5 +++++ 2 files changed, 14 insertions(+) diff --git a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandsell.java b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandsell.java index 98b19c04a5a..dcc0db714a3 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandsell.java +++ b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandsell.java @@ -54,6 +54,15 @@ public void run(final Server server, final User user, final String commandLabel, } } try { + if (!user.isAuthorized("essentials.sell.item."+stack.getType().toString())){ + if (isBulk) { + notSold.add(stack); + continue; + } + user.sendMessage(ChatColor.translateAlternateColorCodes('&', "&cError: &4You do not have sufficient permissions to sell " + stack.getType())); + return; + } + if (stack.getAmount() > 0) { totalWorth = totalWorth.add(sellItem(user, stack, args, isBulk)); stack = stack.clone(); diff --git a/Essentials/src/main/java/com/earth2me/essentials/signs/SignSell.java b/Essentials/src/main/java/com/earth2me/essentials/signs/SignSell.java index 1e1079f2588..b319f8a4558 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/signs/SignSell.java +++ b/Essentials/src/main/java/com/earth2me/essentials/signs/SignSell.java @@ -6,6 +6,7 @@ import com.earth2me.essentials.User; import net.ess3.api.IEssentials; import net.ess3.api.MaxMoneyException; +import org.bukkit.ChatColor; import org.bukkit.inventory.ItemStack; import java.math.BigDecimal; @@ -26,6 +27,10 @@ protected boolean onSignCreate(final ISign sign, final User player, final String protected boolean onSignInteract(final ISign sign, final User player, final String username, final IEssentials ess) throws SignException, ChargeException, MaxMoneyException { Trade charge = getTrade(sign, 1, 2, player, ess); Trade money = getTrade(sign, 3, ess); + if (!player.isAuthorized("essentials.sell.item."+ charge.getItemStack().getType())){ + player.sendMessage(ChatColor.translateAlternateColorCodes('&', "&cError: &4You do not have sufficient permissions to sell " + charge.getItemStack().getType())); + return false; + } // Check if the player is trying to sell in bulk. if (ess.getSettings().isAllowBulkBuySell() && player.getBase().isSneaking()) { From f3e371a8e592144fd2af403fded627e9836e9b97 Mon Sep 17 00:00:00 2001 From: NicholasJBond Date: Sat, 25 Nov 2023 20:27:51 +1000 Subject: [PATCH 2/2] Extended permissions to buy and free. Changed permissions to essentials.item.. --- .../java/com/earth2me/essentials/commands/Commandsell.java | 2 +- .../src/main/java/com/earth2me/essentials/signs/SignBuy.java | 5 +++++ .../main/java/com/earth2me/essentials/signs/SignFree.java | 5 +++++ .../main/java/com/earth2me/essentials/signs/SignSell.java | 2 +- 4 files changed, 12 insertions(+), 2 deletions(-) diff --git a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandsell.java b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandsell.java index dcc0db714a3..e175a1a0e72 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandsell.java +++ b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandsell.java @@ -54,7 +54,7 @@ public void run(final Server server, final User user, final String commandLabel, } } try { - if (!user.isAuthorized("essentials.sell.item."+stack.getType().toString())){ + if (!user.isAuthorized("essentials.item.sell."+stack.getType().toString())){ if (isBulk) { notSold.add(stack); continue; diff --git a/Essentials/src/main/java/com/earth2me/essentials/signs/SignBuy.java b/Essentials/src/main/java/com/earth2me/essentials/signs/SignBuy.java index 76ca2045b34..7843dc218d2 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/signs/SignBuy.java +++ b/Essentials/src/main/java/com/earth2me/essentials/signs/SignBuy.java @@ -5,6 +5,7 @@ import com.earth2me.essentials.User; import net.ess3.api.IEssentials; import net.ess3.api.MaxMoneyException; +import org.bukkit.ChatColor; import org.bukkit.inventory.ItemStack; import java.math.BigDecimal; @@ -26,6 +27,10 @@ protected boolean onSignInteract(final ISign sign, final User player, final Stri Trade items = getTrade(sign, 1, 2, player, ess); Trade charge = getTrade(sign, 3, ess); + if (!player.isAuthorized("essentials.item.buy"+ items.getItemStack().getType())){ + player.sendMessage(ChatColor.translateAlternateColorCodes('&', "&cError: &4You do not have sufficient permissions to buy " + items.getItemStack().getType())); + return false; + } // Check if the player is trying to buy in bulk. if (ess.getSettings().isAllowBulkBuySell() && player.getBase().isSneaking()) { final ItemStack heldItem = player.getItemInHand(); diff --git a/Essentials/src/main/java/com/earth2me/essentials/signs/SignFree.java b/Essentials/src/main/java/com/earth2me/essentials/signs/SignFree.java index 0e455c21899..7ec7d70f3ba 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/signs/SignFree.java +++ b/Essentials/src/main/java/com/earth2me/essentials/signs/SignFree.java @@ -3,6 +3,7 @@ import com.earth2me.essentials.Trade; import com.earth2me.essentials.User; import net.ess3.api.IEssentials; +import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; @@ -33,6 +34,10 @@ protected boolean onSignInteract(final ISign sign, final User player, final Stri ItemStack itemStack = getItemStack(sign.getLine(1), 1, ess); itemStack = getItemMeta(player.getSource(), itemStack, sign.getLine(2), ess); final ItemStack item = getItemMeta(player.getSource(), itemStack, sign.getLine(3), ess); + if (!player.isAuthorized("essentials.item.free."+ item.getType())){ + player.sendMessage(ChatColor.translateAlternateColorCodes('&', "&cError: &4You do not have sufficient permissions to get " + item.getType())); + return false; + } if (item.getType() == Material.AIR) { throw new SignException(tl("cantSpawnItem", "Air")); diff --git a/Essentials/src/main/java/com/earth2me/essentials/signs/SignSell.java b/Essentials/src/main/java/com/earth2me/essentials/signs/SignSell.java index b319f8a4558..e66f57b55e7 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/signs/SignSell.java +++ b/Essentials/src/main/java/com/earth2me/essentials/signs/SignSell.java @@ -27,7 +27,7 @@ protected boolean onSignCreate(final ISign sign, final User player, final String protected boolean onSignInteract(final ISign sign, final User player, final String username, final IEssentials ess) throws SignException, ChargeException, MaxMoneyException { Trade charge = getTrade(sign, 1, 2, player, ess); Trade money = getTrade(sign, 3, ess); - if (!player.isAuthorized("essentials.sell.item."+ charge.getItemStack().getType())){ + if (!player.isAuthorized("essentials.item.sell."+ charge.getItemStack().getType())){ player.sendMessage(ChatColor.translateAlternateColorCodes('&', "&cError: &4You do not have sufficient permissions to sell " + charge.getItemStack().getType())); return false; }