Added Blacklist and "In Stock" in Shop Info Message

This commit is contained in:
Eric 2015-09-16 16:45:05 +02:00
parent 66750cd570
commit 7828e81ea6
5 changed files with 56 additions and 11 deletions

View File

@ -55,6 +55,13 @@ minimum-prices: []
# "STONE:1": 0.5 # "STONE:1": 0.5
# "DIAMOND_SWORD": 100 # "DIAMOND_SWORD": 100
# Set the items of which a player can't create a shop.
# To add an item DELETE THE '[]' after 'blacklist:' and follow format below.
# Important: You must have exactly 2 spaces between the text and edge.
# You can find the item names in the 'item_names.txt' file.
blacklist: []
# - "STONE:1"
# - "DIAMOND_BLOCK"
# Priority: default < group < player # Priority: default < group < player
shop-limits: shop-limits:
@ -95,26 +102,30 @@ messages:
shop-info: shop-info:
# Set the message the player gets in the first row after entering '/shop info'. # Set the vendor message the player gets after entering '/shop info'.
# Usable regex: %VENDOR% # Usable regex: %VENDOR%
vendor: "&6Vendor: %VENDOR%" vendor: "&6Vendor: %VENDOR%"
# Set the message the player gets in the second row after entering '/shop info'. # Set the product message the player gets after entering '/shop info'.
# Usable regex: %AMOUNT%, %ITEMNAME% # Usable regex: %AMOUNT%, %ITEMNAME%
product: "&6Product: %AMOUNT% x %ITEMNAME%" product: "&6Product: %AMOUNT% x %ITEMNAME%"
# Set the message the player gets in the third row after entering '/shop info' if the item is enchanted # Set the in-stock message the player after entering '/shop info'.
# Usable regex: %AMOUNT%
stock: "&6In Stock: %AMOUNT%"
# Set the enchantments message the player gets after entering '/shop info' if the item is enchanted
# Usable regex: %ENCHANTMENT% # Usable regex: %ENCHANTMENT%
enchantments: "&6Enchantments: %ENCHANTMENT%" enchantments: "&6Enchantments: %ENCHANTMENT%"
# Set the message the player gets in the third/fourth row after entering '/shop info'. # Set the price message the player gets after entering '/shop info'.
# Usable regex: %BUY-PRICE%, %SELL-PRICE%, %CURRENCY-SYMBOL% # Usable regex: %BUY-PRICE%, %SELL-PRICE%, %CURRENCY-SYMBOL%
price: "&6Price: Buy: %BUY-PRICE%%CURRENCY-SYMBOL%, Sell: %SELL-PRICE%%CURRENCY-SYMBOL%" price: "&6Price: Buy: %BUY-PRICE%%CURRENCY-SYMBOL%, Sell: %SELL-PRICE%%CURRENCY-SYMBOL%"
# If the sell price or buy price is disabled, this message will be displayed instead of the price and the currency symbol in the message above. # If the sell price or buy price is disabled, this message will be displayed instead of the price and the currency symbol in the message above.
disabled: "&7Disabled&6" disabled: "&7Disabled&6"
# Set the message the player gets in the fourth/fifth row after entering '/shop info'... # Set the infinite message the player gets after entering '/shop info' ...
# ... when the shop is infinite. # ... when the shop is infinite.
is-infinite: "&6Type: Infinite" is-infinite: "&6Type: Infinite"
@ -216,6 +227,9 @@ messages:
# Usable regex: %LIMIT%, %AMOUNT% (Amount of shops) # Usable regex: %LIMIT%, %AMOUNT% (Amount of shops)
occupied-shop-slots: "&6You have &c%AMOUNT%/%LIMIT% &6shop slot/s occupied." occupied-shop-slots: "&6You have &c%AMOUNT%/%LIMIT% &6shop slot/s occupied."
# Set the message when the player tries to create a shop with an item which is listed in the blacklist.
cannot-sell-item: "&cYou cannot create a shop with this item."
update: update:
# Set the message when an update is available. # Set the message when an update is available.

View File

@ -2,7 +2,7 @@
name: ShopChest name: ShopChest
main: de.epiceric.shopchest.ShopChest main: de.epiceric.shopchest.ShopChest
version: 1.5.7 version: 1.6.0-DEVELOPER
author: EpicEric author: EpicEric
website: https://www.spigotmc.org/resources/shopchest.11431/ website: https://www.spigotmc.org/resources/shopchest.11431/
depend: [Vault] depend: [Vault]

View File

@ -37,8 +37,7 @@ public class Commands extends BukkitCommand {
this.plugin = plugin; this.plugin = plugin;
} }
public static void registerCommand(Command command, ShopChest plugin) public static void registerCommand(Command command, ShopChest plugin) throws ReflectiveOperationException {
throws ReflectiveOperationException {
Method commandMap = plugin.getServer().getClass().getMethod("getCommandMap"); Method commandMap = plugin.getServer().getClass().getMethod("getCommandMap");
Object cmdmap = commandMap.invoke(plugin.getServer()); Object cmdmap = commandMap.invoke(plugin.getServer());
Method register = cmdmap.getClass().getMethod("register", String.class,Command.class); Method register = cmdmap.getClass().getMethod("register", String.class,Command.class);
@ -238,6 +237,22 @@ public class Commands extends BukkitCommand {
return; return;
} }
for (String item : Config.blacklist()) {
ItemStack itemStack;
if (item.contains(":")) {
itemStack = new ItemStack(Material.getMaterial(item.split(":")[0]), 1, Short.parseShort(item.split(":")[1]));
} else {
itemStack = new ItemStack(Material.getMaterial(item), 1);
}
if (itemStack.getType().equals(p.getItemInHand().getType()) && itemStack.getDurability() == p.getItemInHand().getDurability()) {
p.sendMessage(Config.cannot_sell_item());
return;
}
}
for (String key : Config.minimum_prices()) { for (String key : Config.minimum_prices()) {
ItemStack itemStack; ItemStack itemStack;
@ -249,7 +264,7 @@ public class Commands extends BukkitCommand {
itemStack = new ItemStack(Material.getMaterial(key), 1); itemStack = new ItemStack(Material.getMaterial(key), 1);
} }
if (itemStack.getType().equals(p.getItemInHand().getType())) { if (itemStack.getType().equals(p.getItemInHand().getType()) && itemStack.getDurability() == p.getItemInHand().getDurability()) {
if (buyEnabled) { if (buyEnabled) {
if ((buyPrice <= amount * price) && (buyPrice > 0)) { if ((buyPrice <= amount * price) && (buyPrice > 0)) {
p.sendMessage(Config.buyPrice_too_low(amount * price)); p.sendMessage(Config.buyPrice_too_low(amount * price));

View File

@ -1,6 +1,8 @@
package de.epiceric.shopchest.config; package de.epiceric.shopchest.config;
import java.util.ArrayList;
import java.util.HashSet; import java.util.HashSet;
import java.util.List;
import java.util.Set; import java.util.Set;
import de.epiceric.shopchest.ShopChest; import de.epiceric.shopchest.ShopChest;
@ -13,6 +15,8 @@ public class Config {
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_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 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 List<String> blacklist() {return (plugin.getConfig().getStringList("blacklist") == null) ? new ArrayList<String>() : plugin.getConfig().getStringList("blacklist");};
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 int default_limit() {return plugin.getConfig().getInt("shop-limits.default");}
@ -61,6 +65,7 @@ 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 cannot_sell_item() {return plugin.getConfig().getString("messages.cannot-sell-item").replaceAll("(&([a-f0-9k-or]))", "\u00A7$2");}
public static String limit_reached(int limit) { 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"); return plugin.getConfig().getString("messages.shop-limit-reached").replace(Regex.limit, String.valueOf(limit)).replaceAll("(&([a-f0-9k-or]))", "\u00A7$2");
@ -149,4 +154,8 @@ public class Config {
public static String occupied_shop_slots(int limit, int amount) { 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"); 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");
} }
public static String shopInfo_stock(int amount) {
return plugin.getConfig().getString("messages.shop-info.stock").replace(Regex.amount, String.valueOf(amount)).replaceAll("(&([a-f0-9k-or]))", "\u00A7$2");
}
} }

View File

@ -16,6 +16,7 @@ import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.player.PlayerMoveEvent; import org.bukkit.event.player.PlayerMoveEvent;
import org.bukkit.inventory.Inventory; import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.InventoryHolder;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.EnchantmentStorageMeta; import org.bukkit.inventory.meta.EnchantmentStorageMeta;
import org.yi.acru.bukkit.Lockette.Lockette; import org.yi.acru.bukkit.Lockette.Lockette;
@ -257,11 +258,16 @@ public class InteractShop implements Listener{
private void info(Player executor, Shop shop) { private void info(Player executor, Shop shop) {
Chest c = (Chest) shop.getLocation().getBlock().getState();
int amount = Utils.getAmount(c.getInventory(), shop.getProduct().getType(), shop.getProduct().getDurability(), shop.getProduct().getItemMeta());
String vendor = Config.shopInfo_vendor(shop.getVendor().getName()); String vendor = Config.shopInfo_vendor(shop.getVendor().getName());
String product = Config.shopInfo_product(shop.getProduct().getAmount(), ItemNames.lookup(shop.getProduct())); String product = Config.shopInfo_product(shop.getProduct().getAmount(), ItemNames.lookup(shop.getProduct()));
String enchantmentString = ""; String enchantmentString = "";
String price = Config.shopInfo_price(shop.getBuyPrice(), shop.getSellPrice()); String price = Config.shopInfo_price(shop.getBuyPrice(), shop.getSellPrice());
String infinite = (shop.isInfinite() ? Config.shopInfo_isInfinite() : Config.shopInfo_isNormal()); String infinite = (shop.isInfinite() ? Config.shopInfo_isInfinite() : Config.shopInfo_isNormal());
String stock = Config.shopInfo_stock(amount);
Map<Enchantment, Integer> enchantmentMap; Map<Enchantment, Integer> enchantmentMap;
@ -289,6 +295,7 @@ public class InteractShop implements Listener{
executor.sendMessage(" "); executor.sendMessage(" ");
executor.sendMessage(vendor); executor.sendMessage(vendor);
executor.sendMessage(product); executor.sendMessage(product);
executor.sendMessage(stock);
if (enchantmentString.length() > 0) executor.sendMessage(Config.shopInfo_enchantment(enchantmentString)); if (enchantmentString.length() > 0) executor.sendMessage(Config.shopInfo_enchantment(enchantmentString));
executor.sendMessage(price); executor.sendMessage(price);
executor.sendMessage(infinite); executor.sendMessage(infinite);