mirror of
https://github.com/ChestShop-authors/ChestShop-3.git
synced 2024-11-25 19:45:36 +01:00
#539 Implemented permissions for bypassing min/max sell/buy prices
This commit is contained in:
parent
09170f6d51
commit
8a26b15ea9
@ -6,11 +6,13 @@ import com.Acrobot.ChestShop.Configuration.Messages;
|
|||||||
import com.Acrobot.ChestShop.Events.ChestShopReloadEvent;
|
import com.Acrobot.ChestShop.Events.ChestShopReloadEvent;
|
||||||
import com.Acrobot.ChestShop.Events.ItemParseEvent;
|
import com.Acrobot.ChestShop.Events.ItemParseEvent;
|
||||||
import com.Acrobot.ChestShop.Events.PreShopCreationEvent;
|
import com.Acrobot.ChestShop.Events.PreShopCreationEvent;
|
||||||
|
import com.Acrobot.ChestShop.Permission;
|
||||||
import com.Acrobot.ChestShop.Signs.ChestShopSign;
|
import com.Acrobot.ChestShop.Signs.ChestShopSign;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.configuration.ConfigurationSection;
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
import org.bukkit.configuration.file.YamlConfiguration;
|
import org.bukkit.configuration.file.YamlConfiguration;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
@ -21,10 +23,8 @@ import java.math.BigDecimal;
|
|||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import static com.Acrobot.ChestShop.Events.PreShopCreationEvent.CreationOutcome.BUY_PRICE_ABOVE_MAX;
|
import static com.Acrobot.ChestShop.Events.PreShopCreationEvent.CreationOutcome.*;
|
||||||
import static com.Acrobot.ChestShop.Events.PreShopCreationEvent.CreationOutcome.BUY_PRICE_BELOW_MIN;
|
import static com.Acrobot.ChestShop.Permission.*;
|
||||||
import static com.Acrobot.ChestShop.Events.PreShopCreationEvent.CreationOutcome.SELL_PRICE_ABOVE_MAX;
|
|
||||||
import static com.Acrobot.ChestShop.Events.PreShopCreationEvent.CreationOutcome.SELL_PRICE_BELOW_MIN;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Acrobot
|
* @author Acrobot
|
||||||
@ -106,6 +106,7 @@ public class PriceRestrictionModule implements Listener {
|
|||||||
ItemParseEvent parseEvent = new ItemParseEvent(ChestShopSign.getItem(event.getSignLines()));
|
ItemParseEvent parseEvent = new ItemParseEvent(ChestShopSign.getItem(event.getSignLines()));
|
||||||
Bukkit.getPluginManager().callEvent(parseEvent);
|
Bukkit.getPluginManager().callEvent(parseEvent);
|
||||||
ItemStack material = parseEvent.getItem();
|
ItemStack material = parseEvent.getItem();
|
||||||
|
Player player = event.getPlayer();
|
||||||
|
|
||||||
if (material == null) {
|
if (material == null) {
|
||||||
return;
|
return;
|
||||||
@ -124,15 +125,17 @@ public class PriceRestrictionModule implements Listener {
|
|||||||
BigDecimal buyPrice = PriceUtil.getExactBuyPrice(priceLine);
|
BigDecimal buyPrice = PriceUtil.getExactBuyPrice(priceLine);
|
||||||
|
|
||||||
BigDecimal minBuyPrice = BigDecimal.valueOf(configuration.getDouble("min.buy_price." + itemType) * amount);
|
BigDecimal minBuyPrice = BigDecimal.valueOf(configuration.getDouble("min.buy_price." + itemType) * amount);
|
||||||
if (isValid("min.buy_price." + itemType) && buyPrice.compareTo(minBuyPrice) < 0) {
|
if (isValid("min.buy_price." + itemType) && buyPrice.compareTo(minBuyPrice) < 0
|
||||||
|
&& !Permission.has(player, NOLIMIT_MIN_BUY) && !Permission.has(player, NOLIMIT_MIN_BUY_ID + itemType)) {
|
||||||
event.setOutcome(BUY_PRICE_BELOW_MIN);
|
event.setOutcome(BUY_PRICE_BELOW_MIN);
|
||||||
Messages.BUY_PRICE_BELOW_MIN.sendWithPrefix(event.getPlayer(), "price", buyPrice.toPlainString(), "minprice", minBuyPrice.toPlainString());
|
Messages.BUY_PRICE_BELOW_MIN.sendWithPrefix(player, "price", buyPrice.toPlainString(), "minprice", minBuyPrice.toPlainString());
|
||||||
}
|
}
|
||||||
|
|
||||||
BigDecimal maxBuyPrice = BigDecimal.valueOf(configuration.getDouble("max.buy_price." + itemType) * amount);
|
BigDecimal maxBuyPrice = BigDecimal.valueOf(configuration.getDouble("max.buy_price." + itemType) * amount);
|
||||||
if (isValid("max.buy_price." + itemType) && buyPrice.compareTo(maxBuyPrice) > 0) {
|
if (isValid("max.buy_price." + itemType) && buyPrice.compareTo(maxBuyPrice) > 0
|
||||||
|
&& !Permission.has(player, NOLIMIT_MAX_BUY) && !Permission.has(player, NOLIMIT_MAX_BUY_ID + itemType)) {
|
||||||
event.setOutcome(BUY_PRICE_ABOVE_MAX);
|
event.setOutcome(BUY_PRICE_ABOVE_MAX);
|
||||||
Messages.BUY_PRICE_ABOVE_MAX.sendWithPrefix(event.getPlayer(), "price", buyPrice.toPlainString(), "maxprice", maxBuyPrice.toPlainString());
|
Messages.BUY_PRICE_ABOVE_MAX.sendWithPrefix(player, "price", buyPrice.toPlainString(), "maxprice", maxBuyPrice.toPlainString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -140,15 +143,17 @@ public class PriceRestrictionModule implements Listener {
|
|||||||
BigDecimal sellPrice = PriceUtil.getExactSellPrice(priceLine);
|
BigDecimal sellPrice = PriceUtil.getExactSellPrice(priceLine);
|
||||||
|
|
||||||
BigDecimal minSellPrice = BigDecimal.valueOf(configuration.getDouble("min.sell_price." + itemType) * amount);
|
BigDecimal minSellPrice = BigDecimal.valueOf(configuration.getDouble("min.sell_price." + itemType) * amount);
|
||||||
if (isValid("min.sell_price." + itemType) && sellPrice.compareTo(minSellPrice) < 0) {
|
if (isValid("min.sell_price." + itemType) && sellPrice.compareTo(minSellPrice) < 0
|
||||||
|
&& !Permission.has(player, NOLIMIT_MIN_SELL) && !Permission.has(player, NOLIMIT_MIN_SELL_ID + itemType)) {
|
||||||
event.setOutcome(SELL_PRICE_BELOW_MIN);
|
event.setOutcome(SELL_PRICE_BELOW_MIN);
|
||||||
Messages.SELL_PRICE_BELOW_MIN.sendWithPrefix(event.getPlayer(), "price", sellPrice.toPlainString(), "minprice", minSellPrice.toPlainString());
|
Messages.SELL_PRICE_BELOW_MIN.sendWithPrefix(player, "price", sellPrice.toPlainString(), "minprice", minSellPrice.toPlainString());
|
||||||
}
|
}
|
||||||
|
|
||||||
BigDecimal maxSellPrice = BigDecimal.valueOf(configuration.getDouble("max.sell_price." + itemType) * amount);
|
BigDecimal maxSellPrice = BigDecimal.valueOf(configuration.getDouble("max.sell_price." + itemType) * amount);
|
||||||
if (isValid("max.sell_price." + itemType) && sellPrice.compareTo(maxSellPrice) > 0) {
|
if (isValid("max.sell_price." + itemType) && sellPrice.compareTo(maxSellPrice) > 0
|
||||||
|
&& !Permission.has(player, NOLIMIT_MAX_SELL) && !Permission.has(player, NOLIMIT_MAX_SELL_ID + itemType)) {
|
||||||
event.setOutcome(SELL_PRICE_ABOVE_MAX);
|
event.setOutcome(SELL_PRICE_ABOVE_MAX);
|
||||||
Messages.SELL_PRICE_ABOVE_MAX.sendWithPrefix(event.getPlayer(), "price", sellPrice.toPlainString(), "maxprice", maxSellPrice.toPlainString());
|
Messages.SELL_PRICE_ABOVE_MAX.sendWithPrefix(player, "price", sellPrice.toPlainString(), "maxprice", maxSellPrice.toPlainString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,7 +5,6 @@ import org.bukkit.command.CommandSender;
|
|||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
import java.util.Optional;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Acrobot
|
* @author Acrobot
|
||||||
@ -43,7 +42,19 @@ public enum Permission {
|
|||||||
NOTIFY_TOGGLE("ChestShop.toggle"),
|
NOTIFY_TOGGLE("ChestShop.toggle"),
|
||||||
ACCESS_TOGGLE("ChestShop.accesstoggle"),
|
ACCESS_TOGGLE("ChestShop.accesstoggle"),
|
||||||
ITEMINFO("ChestShop.iteminfo"),
|
ITEMINFO("ChestShop.iteminfo"),
|
||||||
SHOPINFO("ChestShop.shopinfo");
|
SHOPINFO("ChestShop.shopinfo"),
|
||||||
|
|
||||||
|
NOLIMIT_MIN_BUY("ChestShop.nolimit.buy.min"),
|
||||||
|
NOLIMIT_MIN_BUY_ID("ChestShop.nolimit.buy.min."),
|
||||||
|
|
||||||
|
NOLIMIT_MAX_BUY("ChestShop.nolimit.buy.max"),
|
||||||
|
NOLIMIT_MAX_BUY_ID("ChestShop.nolimit.buy.max."),
|
||||||
|
|
||||||
|
NOLIMIT_MIN_SELL("ChestShop.nolimit.sell.min"),
|
||||||
|
NOLIMIT_MIN_SELL_ID("ChestShop.nolimit.sell.min."),
|
||||||
|
|
||||||
|
NOLIMIT_MAX_SELL("ChestShop.nolimit.sell.max"),
|
||||||
|
NOLIMIT_MAX_SELL_ID("ChestShop.nolimit.sell.max.");
|
||||||
|
|
||||||
private final String permission;
|
private final String permission;
|
||||||
|
|
||||||
|
@ -123,6 +123,22 @@ permissions:
|
|||||||
description: Gives you the power to do access shops for all names.
|
description: Gives you the power to do access shops for all names.
|
||||||
ChestShop.othername.access.(some name):
|
ChestShop.othername.access.(some name):
|
||||||
description: Gives you the power to do access shops for (some name), for example your town.
|
description: Gives you the power to do access shops for (some name), for example your town.
|
||||||
|
ChestShop.nolimit.buy.min:
|
||||||
|
description: Allows user to bypass the minimal buy price for all items
|
||||||
|
ChestShop.nolimit.buy.min.(itemType):
|
||||||
|
description: Allows user to bypass the minimal buy price for itemType
|
||||||
|
ChestShop.nolimit.buy.max:
|
||||||
|
description: Allows user to bypass the maximal buy price for all items
|
||||||
|
ChestShop.nolimit.buy.max.(itemType):
|
||||||
|
description: Allows user to bypass the maximal buy price for itemType
|
||||||
|
ChestShop.nolimit.sell.min:
|
||||||
|
description: Allows user to bypass the minimal sell price for all items
|
||||||
|
ChestShop.nolimit.sell.min.(itemType):
|
||||||
|
description: Allows user to bypass the minimal sell price for itemType
|
||||||
|
ChestShop.nolimit.sell.max:
|
||||||
|
description: Allows user to bypass the maximal sell price for all items
|
||||||
|
ChestShop.nolimit.sell.max.(itemType):
|
||||||
|
description: Allows user to bypass the maximal sell price for itemType
|
||||||
ChestShop.shop.create.food:
|
ChestShop.shop.create.food:
|
||||||
description: Allows to create a shop that sells food
|
description: Allows to create a shop that sells food
|
||||||
children:
|
children:
|
||||||
|
Loading…
Reference in New Issue
Block a user