mirror of
https://github.com/Flowsqy/ShopChest.git
synced 2024-11-30 01:43:22 +01:00
Fix "chest blocked" error with cave/void air
This commit is contained in:
parent
77a837fc05
commit
8ef1fb391f
@ -17,6 +17,7 @@ import de.epiceric.shopchest.nms.Hologram;
|
|||||||
import de.epiceric.shopchest.shop.Shop;
|
import de.epiceric.shopchest.shop.Shop;
|
||||||
import de.epiceric.shopchest.shop.Shop.ShopType;
|
import de.epiceric.shopchest.shop.Shop.ShopType;
|
||||||
import de.epiceric.shopchest.utils.Callback;
|
import de.epiceric.shopchest.utils.Callback;
|
||||||
|
import de.epiceric.shopchest.utils.ItemUtils;
|
||||||
import de.epiceric.shopchest.utils.Permissions;
|
import de.epiceric.shopchest.utils.Permissions;
|
||||||
import de.epiceric.shopchest.utils.ShopUtils;
|
import de.epiceric.shopchest.utils.ShopUtils;
|
||||||
import de.epiceric.shopchest.utils.Utils;
|
import de.epiceric.shopchest.utils.Utils;
|
||||||
@ -274,7 +275,7 @@ public class ChestProtectListener implements Listener {
|
|||||||
|
|
||||||
if (externalPluginsAllowed || p.hasPermission(Permissions.EXTEND_PROTECTED)) {
|
if (externalPluginsAllowed || p.hasPermission(Permissions.EXTEND_PROTECTED)) {
|
||||||
if (shop.getVendor().getUniqueId().equals(p.getUniqueId()) || p.hasPermission(Permissions.EXTEND_OTHER)) {
|
if (shop.getVendor().getUniqueId().equals(p.getUniqueId()) || p.hasPermission(Permissions.EXTEND_OTHER)) {
|
||||||
if (b.getRelative(BlockFace.UP).getType() == Material.AIR) {
|
if (ItemUtils.isAir(b.getRelative(BlockFace.UP).getType())) {
|
||||||
final Shop newShop = new Shop(shop.getID(), plugin, shop.getVendor(), shop.getProduct(), shop.getLocation(), shop.getBuyPrice(), shop.getSellPrice(), shop.getShopType());
|
final Shop newShop = new Shop(shop.getID(), plugin, shop.getVendor(), shop.getProduct(), shop.getLocation(), shop.getBuyPrice(), shop.getSellPrice(), shop.getShopType());
|
||||||
|
|
||||||
shopUtils.removeShop(shop, true, new Callback<Void>(plugin) {
|
shopUtils.removeShop(shop, true, new Callback<Void>(plugin) {
|
||||||
|
@ -28,6 +28,7 @@ import de.epiceric.shopchest.shop.ShopProduct;
|
|||||||
import de.epiceric.shopchest.shop.Shop.ShopType;
|
import de.epiceric.shopchest.shop.Shop.ShopType;
|
||||||
import de.epiceric.shopchest.sql.Database;
|
import de.epiceric.shopchest.sql.Database;
|
||||||
import de.epiceric.shopchest.utils.ClickType;
|
import de.epiceric.shopchest.utils.ClickType;
|
||||||
|
import de.epiceric.shopchest.utils.ItemUtils;
|
||||||
import de.epiceric.shopchest.utils.Permissions;
|
import de.epiceric.shopchest.utils.Permissions;
|
||||||
import de.epiceric.shopchest.utils.ShopUtils;
|
import de.epiceric.shopchest.utils.ShopUtils;
|
||||||
import de.epiceric.shopchest.utils.Utils;
|
import de.epiceric.shopchest.utils.Utils;
|
||||||
@ -308,7 +309,7 @@ public class ShopInteractListener implements Listener {
|
|||||||
|
|
||||||
e.setCancelled(true);
|
e.setCancelled(true);
|
||||||
|
|
||||||
if (b.getRelative(BlockFace.UP).getType() == Material.AIR) {
|
if (ItemUtils.isAir(b.getRelative(BlockFace.UP).getType())) {
|
||||||
ClickType clickType = ClickType.getPlayerClickType(p);
|
ClickType clickType = ClickType.getPlayerClickType(p);
|
||||||
ShopProduct product = clickType.getProduct();
|
ShopProduct product = clickType.getProduct();
|
||||||
double buyPrice = clickType.getBuyPrice();
|
double buyPrice = clickType.getBuyPrice();
|
||||||
|
@ -117,7 +117,7 @@ public class Shop {
|
|||||||
plugin.debug("Failed to create shop (#" + id + ")");
|
plugin.debug("Failed to create shop (#" + id + ")");
|
||||||
plugin.debug(ex);
|
plugin.debug(ex);
|
||||||
return false;
|
return false;
|
||||||
} else if ((b.getRelative(BlockFace.UP).getType() != Material.AIR) && Config.showShopItems) {
|
} else if ((!ItemUtils.isAir(b.getRelative(BlockFace.UP).getType())) && Config.showShopItems) {
|
||||||
NotEnoughSpaceException ex = new NotEnoughSpaceException(String.format("No space above chest in world '%s' at location: %d; %d; %d",
|
NotEnoughSpaceException ex = new NotEnoughSpaceException(String.format("No space above chest in world '%s' at location: %d; %d; %d",
|
||||||
b.getWorld().getName(), b.getX(), b.getY(), b.getZ()));
|
b.getWorld().getName(), b.getX(), b.getY(), b.getZ()));
|
||||||
plugin.getShopUtils().removeShop(this, Config.removeShopOnError);
|
plugin.getShopUtils().removeShop(this, Config.removeShopOnError);
|
||||||
|
@ -8,6 +8,7 @@ import org.bukkit.inventory.meta.PotionMeta;
|
|||||||
import org.bukkit.potion.Potion;
|
import org.bukkit.potion.Potion;
|
||||||
import org.bukkit.potion.PotionType;
|
import org.bukkit.potion.PotionType;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
public class ItemUtils {
|
public class ItemUtils {
|
||||||
@ -49,6 +50,10 @@ public class ItemUtils {
|
|||||||
return itemStack.getType().name().endsWith("BANNER_PATTERN");
|
return itemStack.getType().name().endsWith("BANNER_PATTERN");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static boolean isAir(Material type) {
|
||||||
|
return Arrays.asList("AIR", "CAVE_AIR", "VOID_AIR").contains(type.name());
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the {@link ItemStack} from a String
|
* Get the {@link ItemStack} from a String
|
||||||
* @param item Serialized ItemStack e.g. {@code "STONE"} or {@code "STONE:1"}
|
* @param item Serialized ItemStack e.g. {@code "STONE"} or {@code "STONE:1"}
|
||||||
|
Loading…
Reference in New Issue
Block a user