diff --git a/ShopChest/src/main/java/de/epiceric/shopchest/config/Config.java b/ShopChest/src/main/java/de/epiceric/shopchest/config/Config.java index 5846c2f..eaf79c3 100644 --- a/ShopChest/src/main/java/de/epiceric/shopchest/config/Config.java +++ b/ShopChest/src/main/java/de/epiceric/shopchest/config/Config.java @@ -84,6 +84,15 @@ public class Config { /** Whether admin shops should be excluded of the shop limits **/ public boolean exclude_admin_shops; + /** Whether the shop items should be shown **/ + public boolean show_shop_items; + + /** + *

Whether shops should automatically be removed from the database if an error occurred while loading

+ * (e.g. when no chest is found at a shop's location) + */ + public boolean remove_shop_on_error; + /** The maximum distance between a player and a shop to see the hologram **/ public double maximal_distance; @@ -257,6 +266,8 @@ public class Config { hopper_protection = plugin.getConfig().getBoolean("hopper-protection"); explosion_protection = plugin.getConfig().getBoolean("explosion-protection"); exclude_admin_shops = plugin.getConfig().getBoolean("shop-limits.exclude-admin-shops"); + show_shop_items = plugin.getConfig().getBoolean("show-shop-items"); + remove_shop_on_error = plugin.getConfig().getBoolean("remove-shop-on-error"); maximal_distance = plugin.getConfig().getDouble("maximal-distance"); shop_creation_price_normal = plugin.getConfig().getDouble("shop-creation-price.normal"); shop_creation_price_admin = plugin.getConfig().getDouble("shop-creation-price.admin"); diff --git a/ShopChest/src/main/java/de/epiceric/shopchest/shop/Shop.java b/ShopChest/src/main/java/de/epiceric/shopchest/shop/Shop.java index 5728e35..f47b1a9 100644 --- a/ShopChest/src/main/java/de/epiceric/shopchest/shop/Shop.java +++ b/ShopChest/src/main/java/de/epiceric/shopchest/shop/Shop.java @@ -5,6 +5,7 @@ import de.epiceric.shopchest.config.Regex; import de.epiceric.shopchest.language.LanguageUtils; import de.epiceric.shopchest.language.LocalizedMessage; import de.epiceric.shopchest.nms.IHologram; +import de.epiceric.shopchest.utils.ShopUtils; import de.epiceric.shopchest.utils.Utils; import org.bukkit.Bukkit; import org.bukkit.Location; @@ -52,6 +53,9 @@ public class Shop { this.chest = (Chest) b.getState(); } else { try { + if (plugin.getShopChestConfig().remove_shop_on_error) + ShopUtils.removeShop(this, true); + throw new Exception("No Chest found at specified Location: " + b.getX() + "; " + b.getY() + "; " + b.getZ()); } catch (Exception ex) { ex.printStackTrace(); @@ -99,24 +103,26 @@ public class Shop { * Call this after {@link #createHologram()}, because it depends on the hologram's location */ private void createItem() { - Item item; - Location itemLocation; - ItemStack itemStack; - ItemMeta itemMeta = product.getItemMeta(); - itemMeta.setDisplayName(UUID.randomUUID().toString()); + if (plugin.getShopChestConfig().show_shop_items) { + Item item; + Location itemLocation; + ItemStack itemStack; + ItemMeta itemMeta = product.getItemMeta(); + itemMeta.setDisplayName(UUID.randomUUID().toString()); - itemLocation = new Location(location.getWorld(), hologram.getLocation().getX(), location.getY() + 1, hologram.getLocation().getZ()); - itemStack = new ItemStack(product); - itemStack.setAmount(1); - itemStack.setItemMeta(itemMeta); + itemLocation = new Location(location.getWorld(), hologram.getLocation().getX(), location.getY() + 1, hologram.getLocation().getZ()); + itemStack = new ItemStack(product); + itemStack.setAmount(1); + itemStack.setItemMeta(itemMeta); - item = location.getWorld().dropItem(itemLocation, itemStack); - item.setVelocity(new Vector(0, 0, 0)); - item.setMetadata("shopItem", new FixedMetadataValue(plugin, true)); - item.setCustomNameVisible(false); - item.setPickupDelay(Integer.MAX_VALUE); + item = location.getWorld().dropItem(itemLocation, itemStack); + item.setVelocity(new Vector(0, 0, 0)); + item.setMetadata("shopItem", new FixedMetadataValue(plugin, true)); + item.setCustomNameVisible(false); + item.setPickupDelay(Integer.MAX_VALUE); - this.item = item; + this.item = item; + } } /** @@ -259,7 +265,7 @@ public class Shop { } /** - * @return IHologram of the shop + * @return Hologram of the shop */ public IHologram getHologram() { return hologram; diff --git a/ShopChest/src/main/resources/config.yml b/ShopChest/src/main/resources/config.yml index da3f9d3..b0c1c8c 100644 --- a/ShopChest/src/main/resources/config.yml +++ b/ShopChest/src/main/resources/config.yml @@ -11,6 +11,14 @@ main-command-name: "shop" # The value must equal to the name of one of a file in the 'lang' folder (without the '.lang' extension) language-file: "en_US" +# Set whether the floating shop items on top of the chest should be shown +show-shop-items: true + +# Set whether shops should automatically be removed from the database if an error occurred while loading +# e.g. when no chest is found at a shop's location +# This might be useful if you're removing shop chests with WorldEdit, resetting plots, or similar +remove-shop-on-error: false + # Set the maximal distance to the shop where the player can see the hologram. # Value MUST be a number (e.g. 1, 1.5, 2.75, ...) maximal-distance: 1.75