mirror of
https://github.com/amalthea-mc/ShopChest.git
synced 2024-11-22 02:12:25 +00:00
Added Group- and Player limits for Shops
This commit is contained in:
parent
fa9f3e59fc
commit
477b6a4701
39
config.yml
39
config.yml
@ -49,13 +49,36 @@ buy-greater-or-equal-sell: true
|
|||||||
|
|
||||||
# Set the minimum prices for each individual Item. Not per Stack, per single Item!
|
# Set the minimum prices for each individual Item. Not per Stack, per single Item!
|
||||||
# To add an item DELETE THE '[]' after 'minimum-prices:' and follow the format below.
|
# To add an item DELETE THE '[]' after 'minimum-prices:' and follow the format below.
|
||||||
# Important: You must have exactly 2 spaces between the text and the edge (Just like the other properties)
|
# Important: You must have exactly 2 spaces between the text and the edge.
|
||||||
# You can find the item names in the 'item_names.txt' file.
|
# You can find the item names in the 'item_names.txt' file.
|
||||||
minimum-prices: []
|
minimum-prices: []
|
||||||
# "STONE:1": 0.5
|
# "STONE:1": 0.5
|
||||||
# "DIAMOND_SWORD": 100
|
# "DIAMOND_SWORD": 100
|
||||||
|
|
||||||
|
|
||||||
|
# Priority: default < group < player
|
||||||
|
shop-limits:
|
||||||
|
|
||||||
|
# Set the amount of shops anyone who's not listed in the sections below can have.
|
||||||
|
# If you don't want the players to have a limit, set the value to -1.
|
||||||
|
default: 5
|
||||||
|
|
||||||
|
# Set the amount of shops a player in a specific permission group can have.
|
||||||
|
# If you don't want the group to have a limit, set the value to -1.
|
||||||
|
# To add an item DELETE THE '[]' after 'group:' and follow the format below.
|
||||||
|
# Important: You must have exactly 4 spaces between the text and the edge.
|
||||||
|
group: []
|
||||||
|
# "VIP": 10
|
||||||
|
|
||||||
|
# Set the amount of shops a specific player can have.
|
||||||
|
# You can add a player by its name or by its UUID, but please do NOT provide the name and the UUID.
|
||||||
|
# If you don't want the player to have a limit, set the value to -1.
|
||||||
|
# To add an item DELETE THE '[]' after 'player:' and follow the format below.
|
||||||
|
# Important: You must have exactly 4 spaces between the text and the edge.
|
||||||
|
player: []
|
||||||
|
# "EpicEric": 50
|
||||||
|
# "898afbbe-6566-4a0f-b0ac-145868b3cb12": 50
|
||||||
|
|
||||||
messages:
|
messages:
|
||||||
|
|
||||||
# Set the message when a shop is created at the clicked chest.
|
# Set the message when a shop is created at the clicked chest.
|
||||||
@ -173,6 +196,14 @@ messages:
|
|||||||
# Set the message when reloading is done.
|
# Set the message when reloading is done.
|
||||||
# Usable regex: %AMOUNT% (Amount of shops)
|
# Usable regex: %AMOUNT% (Amount of shops)
|
||||||
reloaded-shops: "&aSuccessfully reloaded %AMOUNT% shop/s."
|
reloaded-shops: "&aSuccessfully reloaded %AMOUNT% shop/s."
|
||||||
|
|
||||||
|
# Set the message when the players' shop limit is reached.
|
||||||
|
# Usable regex: %LIMIT%
|
||||||
|
shop-limit-reached: "&cYou reached your limit of &6%LIMIT% &cshop/s."
|
||||||
|
|
||||||
|
# Set the message that shows the player how many shop slots of his shop limit he has occupied.
|
||||||
|
# Usable regex: %LIMIT%, %AMOUNT% (Amount of shops)
|
||||||
|
occupied-shop-slots: "&6You have &c%AMOUNT%/%LIMIT% &6shop slot/s occupied."
|
||||||
|
|
||||||
update:
|
update:
|
||||||
|
|
||||||
@ -230,6 +261,9 @@ messages:
|
|||||||
# Set the message when a not permitted player tries to check for updates.
|
# Set the message when a not permitted player tries to check for updates.
|
||||||
update: "&cYou don't have permission to check for updates."
|
update: "&cYou don't have permission to check for updates."
|
||||||
|
|
||||||
|
# Set the message when a not permitted player tries to view the shop limits.
|
||||||
|
limits: "&cYou don't have permission to view the shop limits."
|
||||||
|
|
||||||
command-description:
|
command-description:
|
||||||
|
|
||||||
# Set the command description message for '/<main-command> create' when you type '/<main-command>'.
|
# Set the command description message for '/<main-command> create' when you type '/<main-command>'.
|
||||||
@ -247,4 +281,7 @@ messages:
|
|||||||
# Set the command description message for '/<main-command> update' when you type '/<main-command>'.
|
# Set the command description message for '/<main-command> update' when you type '/<main-command>'.
|
||||||
update: "Check for Updates."
|
update: "Check for Updates."
|
||||||
|
|
||||||
|
# Set the command description message for '/<main-command> limits' when you type '/<main-command>'.
|
||||||
|
limits: "View shop limits."
|
||||||
|
|
||||||
# End of file.
|
# End of file.
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
name: ShopChest
|
name: ShopChest
|
||||||
main: de.epiceric.shopchest.ShopChest
|
main: de.epiceric.shopchest.ShopChest
|
||||||
version: 1.4.11.1
|
version: 1.5.0
|
||||||
author: EpicEric
|
author: EpicEric
|
||||||
website: https://www.spigotmc.org/resources/shopchest.11431/
|
website: https://www.spigotmc.org/resources/shopchest.11431/
|
||||||
depend: [Vault]
|
depend: [Vault]
|
||||||
@ -20,6 +20,7 @@ permissions:
|
|||||||
shopchest.notification.update: true
|
shopchest.notification.update: true
|
||||||
shopchest.reload: true
|
shopchest.reload: true
|
||||||
shopchest.update: true
|
shopchest.update: true
|
||||||
|
shopchest.limits: true
|
||||||
shopchest.create:
|
shopchest.create:
|
||||||
description: Allows you to create a shop.
|
description: Allows you to create a shop.
|
||||||
default: true
|
default: true
|
||||||
@ -53,4 +54,7 @@ permissions:
|
|||||||
default: op
|
default: op
|
||||||
shopchest.update:
|
shopchest.update:
|
||||||
description: Allows you to check for updates.
|
description: Allows you to check for updates.
|
||||||
default: op
|
default: op
|
||||||
|
shopchest.limits:
|
||||||
|
description: Allows you to view shop limits.
|
||||||
|
default: true
|
@ -1,10 +1,13 @@
|
|||||||
package de.epiceric.shopchest;
|
package de.epiceric.shopchest;
|
||||||
|
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.OfflinePlayer;
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.command.defaults.BukkitCommand;
|
import org.bukkit.command.defaults.BukkitCommand;
|
||||||
@ -13,13 +16,17 @@ import org.bukkit.entity.Player;
|
|||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
import de.epiceric.shopchest.config.Config;
|
import de.epiceric.shopchest.config.Config;
|
||||||
import de.epiceric.shopchest.utils.ClickType;
|
|
||||||
import de.epiceric.shopchest.interfaces.JsonBuilder;
|
import de.epiceric.shopchest.interfaces.JsonBuilder;
|
||||||
import de.epiceric.shopchest.utils.ClickType.EnumClickType;
|
|
||||||
import de.epiceric.shopchest.interfaces.JsonBuilder.ClickAction;
|
import de.epiceric.shopchest.interfaces.JsonBuilder.ClickAction;
|
||||||
import de.epiceric.shopchest.interfaces.JsonBuilder.HoverAction;
|
import de.epiceric.shopchest.interfaces.JsonBuilder.HoverAction;
|
||||||
import de.epiceric.shopchest.interfaces.Utils;
|
import de.epiceric.shopchest.interfaces.Utils;
|
||||||
import de.epiceric.shopchest.interfaces.jsonbuilder.*;
|
import de.epiceric.shopchest.interfaces.jsonbuilder.JsonBuilder_R1;
|
||||||
|
import de.epiceric.shopchest.interfaces.jsonbuilder.JsonBuilder_R2;
|
||||||
|
import de.epiceric.shopchest.interfaces.jsonbuilder.JsonBuilder_R3;
|
||||||
|
import de.epiceric.shopchest.shop.Shop;
|
||||||
|
import de.epiceric.shopchest.utils.ClickType;
|
||||||
|
import de.epiceric.shopchest.utils.ClickType.EnumClickType;
|
||||||
|
import de.epiceric.shopchest.utils.ShopUtils;
|
||||||
import de.epiceric.shopchest.utils.UpdateChecker;
|
import de.epiceric.shopchest.utils.UpdateChecker;
|
||||||
import net.md_5.bungee.api.ChatColor;
|
import net.md_5.bungee.api.ChatColor;
|
||||||
import net.milkbowl.vault.permission.Permission;
|
import net.milkbowl.vault.permission.Permission;
|
||||||
@ -63,7 +70,7 @@ public class Commands extends BukkitCommand {
|
|||||||
if (perm.has(p, "shopchest.create")) {
|
if (perm.has(p, "shopchest.create")) {
|
||||||
|
|
||||||
if (args.length == 4) {
|
if (args.length == 4) {
|
||||||
|
|
||||||
create(args, false, p);
|
create(args, false, p);
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
@ -140,6 +147,18 @@ public class Commands extends BukkitCommand {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} else if (args[0].equalsIgnoreCase("limits")) {
|
||||||
|
|
||||||
|
if (perm.has(p, "shopchest.limits")) {
|
||||||
|
p.sendMessage(Config.occupied_shop_slots(ShopUtils.getShopLimit(p), ShopUtils.getShopAmount(p)));
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
p.sendMessage(Config.noPermission_limits());
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
sendBasicHelpMessage(p);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@ -195,6 +214,14 @@ public class Commands extends BukkitCommand {
|
|||||||
int amount;
|
int amount;
|
||||||
double buyPrice, sellPrice;
|
double buyPrice, sellPrice;
|
||||||
|
|
||||||
|
int limit = ShopUtils.getShopLimit(p);
|
||||||
|
|
||||||
|
if (limit != -1) {
|
||||||
|
if (ShopUtils.getShopAmount(p) >= limit) {
|
||||||
|
p.sendMessage(Config.limit_reached(limit));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
amount = Integer.parseInt(args[1]);
|
amount = Integer.parseInt(args[1]);
|
||||||
@ -286,7 +313,8 @@ public class Commands extends BukkitCommand {
|
|||||||
player.sendMessage(ChatColor.GREEN + "/" + Config.main_command_name() + " remove - " + Config.cmdDesc_remove());
|
player.sendMessage(ChatColor.GREEN + "/" + Config.main_command_name() + " remove - " + Config.cmdDesc_remove());
|
||||||
player.sendMessage(ChatColor.GREEN + "/" + Config.main_command_name() + " info - " + Config.cmdDesc_info());
|
player.sendMessage(ChatColor.GREEN + "/" + Config.main_command_name() + " info - " + Config.cmdDesc_info());
|
||||||
player.sendMessage(ChatColor.GREEN + "/" + Config.main_command_name() + " reload - " + Config.cmdDesc_reload());
|
player.sendMessage(ChatColor.GREEN + "/" + Config.main_command_name() + " reload - " + Config.cmdDesc_reload());
|
||||||
player.sendMessage(ChatColor.GREEN + "/" + Config.main_command_name() + " update - " + Config.cmdDesc_update());
|
player.sendMessage(ChatColor.GREEN + "/" + Config.main_command_name() + " update - " + Config.cmdDesc_update());
|
||||||
|
player.sendMessage(ChatColor.GREEN + "/" + Config.main_command_name() + " limits - " + Config.cmdDesc_limits());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -182,7 +182,7 @@ public class ShopChest extends JavaPlugin{
|
|||||||
if (!itemNamesFile.exists())
|
if (!itemNamesFile.exists())
|
||||||
try {itemNamesFile.createNewFile();} catch (IOException e) {e.printStackTrace();}
|
try {itemNamesFile.createNewFile();} catch (IOException e) {e.printStackTrace();}
|
||||||
|
|
||||||
copy(getResource("item_names"), itemNamesFile);
|
copy(getResource("item_names.txt"), itemNamesFile);
|
||||||
|
|
||||||
shopChests = YamlConfiguration.loadConfiguration(shopChestsFile);
|
shopChests = YamlConfiguration.loadConfiguration(shopChestsFile);
|
||||||
|
|
||||||
|
@ -10,8 +10,12 @@ public class Config {
|
|||||||
private static ShopChest plugin = ShopChest.getInstance();
|
private static ShopChest plugin = ShopChest.getInstance();
|
||||||
|
|
||||||
public static Set<String> minimum_prices() {return (plugin.getConfig().getConfigurationSection("minimum-prices") == null) ? new HashSet<String>() : plugin.getConfig().getConfigurationSection("minimum-prices").getKeys(true);}
|
public static Set<String> minimum_prices() {return (plugin.getConfig().getConfigurationSection("minimum-prices") == null) ? new HashSet<String>() : plugin.getConfig().getConfigurationSection("minimum-prices").getKeys(true);}
|
||||||
|
public static Set<String> shopLimits_group() {return (plugin.getConfig().getConfigurationSection("shop-limits.group") == null) ? new HashSet<String>() : plugin.getConfig().getConfigurationSection("shop-limits.group").getKeys(true);}
|
||||||
|
public static Set<String> shopLimits_player() {return (plugin.getConfig().getConfigurationSection("shop-limits.player") == null) ? new HashSet<String>() : plugin.getConfig().getConfigurationSection("shop-limits.player").getKeys(true);}
|
||||||
|
|
||||||
public static boolean buy_greater_or_equal_sell() {return plugin.getConfig().getBoolean("buy-greater-or-equal-sell");}
|
public static boolean buy_greater_or_equal_sell() {return plugin.getConfig().getBoolean("buy-greater-or-equal-sell");}
|
||||||
public static double maximal_distance() {return plugin.getConfig().getDouble("maximal-distance");}
|
public static double maximal_distance() {return plugin.getConfig().getDouble("maximal-distance");}
|
||||||
|
public static int default_limit() {return plugin.getConfig().getInt("shop-limits.default");}
|
||||||
|
|
||||||
public static String main_command_name() { return plugin.getConfig().getString("main-command-name");}
|
public static String main_command_name() { return plugin.getConfig().getString("main-command-name");}
|
||||||
public static String currency_symbol() { return plugin.getConfig().getString("currency-symbol").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2");}
|
public static String currency_symbol() { return plugin.getConfig().getString("currency-symbol").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2");}
|
||||||
@ -36,6 +40,7 @@ public class Config {
|
|||||||
public static String cmdDesc_info() { return plugin.getConfig().getString("messages.command-description.info").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2");}
|
public static String cmdDesc_info() { return plugin.getConfig().getString("messages.command-description.info").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2");}
|
||||||
public static String cmdDesc_reload() { return plugin.getConfig().getString("messages.command-description.reload").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2");}
|
public static String cmdDesc_reload() { return plugin.getConfig().getString("messages.command-description.reload").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2");}
|
||||||
public static String cmdDesc_update() { return plugin.getConfig().getString("messages.command-description.update").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2");}
|
public static String cmdDesc_update() { return plugin.getConfig().getString("messages.command-description.update").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2");}
|
||||||
|
public static String cmdDesc_limits() { return plugin.getConfig().getString("messages.command-description.limits").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2");}
|
||||||
public static String shopInfo_isInfinite() { return plugin.getConfig().getString("messages.shop-info.is-infinite").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2");};
|
public static String shopInfo_isInfinite() { return plugin.getConfig().getString("messages.shop-info.is-infinite").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2");};
|
||||||
public static String shopInfo_isNormal() { return plugin.getConfig().getString("messages.shop-info.is-not-infinite").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2");};
|
public static String shopInfo_isNormal() { return plugin.getConfig().getString("messages.shop-info.is-not-infinite").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2");};
|
||||||
public static String noPermission_create() { return plugin.getConfig().getString("messages.no-permission.create").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2");}
|
public static String noPermission_create() { return plugin.getConfig().getString("messages.no-permission.create").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2");}
|
||||||
@ -46,6 +51,7 @@ public class Config {
|
|||||||
public static String noPermission_sell() { return plugin.getConfig().getString("messages.no-permission.sell").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2");}
|
public static String noPermission_sell() { return plugin.getConfig().getString("messages.no-permission.sell").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2");}
|
||||||
public static String noPermission_reload() { return plugin.getConfig().getString("messages.no-permission.reload").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2");}
|
public static String noPermission_reload() { return plugin.getConfig().getString("messages.no-permission.reload").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2");}
|
||||||
public static String noPermission_update() { return plugin.getConfig().getString("messages.no-permission.update").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2");}
|
public static String noPermission_update() { return plugin.getConfig().getString("messages.no-permission.update").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2");}
|
||||||
|
public static String noPermission_limits() { return plugin.getConfig().getString("messages.no-permission.limits").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2");}
|
||||||
public static String cannot_break_shop() { return plugin.getConfig().getString("messages.cannot-break-shop").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2");}
|
public static String cannot_break_shop() { return plugin.getConfig().getString("messages.cannot-break-shop").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2");}
|
||||||
public static String cannot_sell_broken_item() { return plugin.getConfig().getString("messages.cannot-sell-broken-item").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2");}
|
public static String cannot_sell_broken_item() { return plugin.getConfig().getString("messages.cannot-sell-broken-item").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2");}
|
||||||
public static String disabled() {return plugin.getConfig().getString("messages.shop-info.disabled").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2");}
|
public static String disabled() {return plugin.getConfig().getString("messages.shop-info.disabled").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2");}
|
||||||
@ -55,6 +61,10 @@ public class Config {
|
|||||||
public static String checking_update() {return plugin.getConfig().getString("messages.update.checking").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2");}
|
public static String checking_update() {return plugin.getConfig().getString("messages.update.checking").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2");}
|
||||||
public static String no_new_update() {return plugin.getConfig().getString("messages.update.no-update").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2");}
|
public static String no_new_update() {return plugin.getConfig().getString("messages.update.no-update").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2");}
|
||||||
public static String click_to_download() {return plugin.getConfig().getString("messages.update.click-to-download").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2");}
|
public static String click_to_download() {return plugin.getConfig().getString("messages.update.click-to-download").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2");}
|
||||||
|
|
||||||
|
public static String limit_reached(int limit) {
|
||||||
|
return plugin.getConfig().getString("messages.shop-limit-reached").replace(Regex.limit, String.valueOf(limit)).replaceAll("(&([a-f0-9k-or]))", "\u00A7$2");
|
||||||
|
}
|
||||||
|
|
||||||
public static String reloaded_shops(int amount) {
|
public static String reloaded_shops(int amount) {
|
||||||
return plugin.getConfig().getString("messages.reloaded-shops").replace(Regex.amount, String.valueOf(amount)).replaceAll("(&([a-f0-9k-or]))", "\u00A7$2");
|
return plugin.getConfig().getString("messages.reloaded-shops").replace(Regex.amount, String.valueOf(amount)).replaceAll("(&([a-f0-9k-or]))", "\u00A7$2");
|
||||||
@ -123,4 +133,8 @@ public class Config {
|
|||||||
public static String sell_success(int amount, String itemName, double sellPrice, String vendor) {
|
public static String sell_success(int amount, String itemName, double sellPrice, String vendor) {
|
||||||
return plugin.getConfig().getString("messages.sell-success").replace(Regex.currencySymbol, currency_symbol()).replace(Regex.amount, String.valueOf(amount)).replace(Regex.itemName, itemName).replace(Regex.sellPrice, String.valueOf(sellPrice)).replace(Regex.vendor, vendor).replaceAll("(&([a-f0-9k-or]))", "\u00A7$2");
|
return plugin.getConfig().getString("messages.sell-success").replace(Regex.currencySymbol, currency_symbol()).replace(Regex.amount, String.valueOf(amount)).replace(Regex.itemName, itemName).replace(Regex.sellPrice, String.valueOf(sellPrice)).replace(Regex.vendor, vendor).replaceAll("(&([a-f0-9k-or]))", "\u00A7$2");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static String occupied_shop_slots(int limit, int amount) {
|
||||||
|
return plugin.getConfig().getString("messages.occupied-shop-slots").replace(Regex.limit, String.valueOf(limit)).replace(Regex.amount, String.valueOf(amount)).replaceAll("(&([a-f0-9k-or]))", "\u00A7$2");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -13,5 +13,6 @@ public class Regex {
|
|||||||
public static String version = "%VERSION%";
|
public static String version = "%VERSION%";
|
||||||
public static String buyPrice = "%BUY-PRICE%";
|
public static String buyPrice = "%BUY-PRICE%";
|
||||||
public static String sellPrice = "%SELL-PRICE%";
|
public static String sellPrice = "%SELL-PRICE%";
|
||||||
|
public static String limit = "%LIMIT%";
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -29,4 +29,8 @@ public abstract class Utils {
|
|||||||
return packageName.substring(packageName.lastIndexOf('.') + 1);
|
return packageName.substring(packageName.lastIndexOf('.') + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static boolean isUUID(String string) {
|
||||||
|
return string.matches("[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[34][0-9a-fA-F]{3}-[89ab][0-9a-fA-F]{3}-[0-9a-fA-F]{12}");
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -2,15 +2,22 @@ package de.epiceric.shopchest.utils;
|
|||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.OfflinePlayer;
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.block.Chest;
|
import org.bukkit.block.Chest;
|
||||||
import org.bukkit.block.DoubleChest;
|
import org.bukkit.block.DoubleChest;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.inventory.InventoryHolder;
|
import org.bukkit.inventory.InventoryHolder;
|
||||||
|
|
||||||
|
import de.epiceric.shopchest.ShopChest;
|
||||||
|
import de.epiceric.shopchest.config.Config;
|
||||||
|
import de.epiceric.shopchest.interfaces.Utils;
|
||||||
import de.epiceric.shopchest.shop.Shop;
|
import de.epiceric.shopchest.shop.Shop;
|
||||||
|
|
||||||
public class ShopUtils {
|
public class ShopUtils {
|
||||||
@ -104,4 +111,70 @@ public class ShopUtils {
|
|||||||
return w.getName() + "_" + String.valueOf(x) + "_" + String.valueOf(y) + "_" + String.valueOf(z);
|
return w.getName() + "_" + String.valueOf(x) + "_" + String.valueOf(y) + "_" + String.valueOf(z);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static int getShopLimit(Player p) {
|
||||||
|
int limit = Config.default_limit();
|
||||||
|
|
||||||
|
if (ShopChest.perm.hasGroupSupport()) {
|
||||||
|
List<String> groups = new ArrayList<String>();
|
||||||
|
|
||||||
|
for (String key : Config.shopLimits_group()) {
|
||||||
|
for (int i = 0; i < ShopChest.perm.getGroups().length; i++) {
|
||||||
|
if (ShopChest.perm.getGroups()[i].equals(key)) {
|
||||||
|
if (ShopChest.perm.playerInGroup(p, key)) {
|
||||||
|
groups.add(key);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (groups.size() != 0) {
|
||||||
|
List<Integer> limits = new ArrayList<>();
|
||||||
|
for (String group : groups) {
|
||||||
|
int gLimit = ShopChest.getInstance().getConfig().getInt("shop-limits.group." + group);
|
||||||
|
limits.add(gLimit);
|
||||||
|
}
|
||||||
|
|
||||||
|
int highestLimit = 0;
|
||||||
|
for (int l : limits) {
|
||||||
|
if (l > highestLimit) {
|
||||||
|
highestLimit = l;
|
||||||
|
} else if (l == -1) {
|
||||||
|
highestLimit = -1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
limit = highestLimit;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
for (String key : Config.shopLimits_player()) {
|
||||||
|
int pLimit = ShopChest.getInstance().getConfig().getInt("shop-limits.player." + key);
|
||||||
|
if (Utils.isUUID(key)) {
|
||||||
|
if (p.getUniqueId().equals(UUID.fromString(key))) {
|
||||||
|
limit = pLimit;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (p.getName().equals(key)) {
|
||||||
|
limit = pLimit;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return limit;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int getShopAmount(OfflinePlayer p) {
|
||||||
|
int shopCount = 0;
|
||||||
|
|
||||||
|
for (Shop shop : ShopUtils.getShops()) {
|
||||||
|
if (shop.getVendor().equals(p)) shopCount++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return shopCount;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user