Skip to content

Commit

Permalink
do not allow shulker boxes in shulker boxes
Browse files Browse the repository at this point in the history
  • Loading branch information
Brokkonaut committed Sep 8, 2019
1 parent 3433874 commit 26ca0f1
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 17 deletions.
48 changes: 31 additions & 17 deletions src/main/java/com/Acrobot/Breeze/Utils/BlockUtil.java
Expand Up @@ -18,6 +18,7 @@
public class BlockUtil {

private static EnumSet<Material> SIGNS = EnumSet.noneOf(Material.class);
private static EnumSet<Material> SHULKER_BOXES = EnumSet.noneOf(Material.class);
private static EnumSet<Material> CONTAINERS = EnumSet.noneOf(Material.class);
static {
SIGNS.add(Material.ACACIA_SIGN);
Expand All @@ -33,26 +34,28 @@ public class BlockUtil {
SIGNS.add(Material.SPRUCE_SIGN);
SIGNS.add(Material.SPRUCE_WALL_SIGN);

SHULKER_BOXES.add(Material.SHULKER_BOX);
SHULKER_BOXES.add(Material.BLACK_SHULKER_BOX);
SHULKER_BOXES.add(Material.BLUE_SHULKER_BOX);
SHULKER_BOXES.add(Material.BROWN_SHULKER_BOX);
SHULKER_BOXES.add(Material.CYAN_SHULKER_BOX);
SHULKER_BOXES.add(Material.GRAY_SHULKER_BOX);
SHULKER_BOXES.add(Material.GREEN_SHULKER_BOX);
SHULKER_BOXES.add(Material.LIGHT_BLUE_SHULKER_BOX);
SHULKER_BOXES.add(Material.LIGHT_GRAY_SHULKER_BOX);
SHULKER_BOXES.add(Material.LIME_SHULKER_BOX);
SHULKER_BOXES.add(Material.MAGENTA_SHULKER_BOX);
SHULKER_BOXES.add(Material.ORANGE_SHULKER_BOX);
SHULKER_BOXES.add(Material.PINK_SHULKER_BOX);
SHULKER_BOXES.add(Material.PURPLE_SHULKER_BOX);
SHULKER_BOXES.add(Material.RED_SHULKER_BOX);
SHULKER_BOXES.add(Material.WHITE_SHULKER_BOX);
SHULKER_BOXES.add(Material.YELLOW_SHULKER_BOX);

CONTAINERS.add(Material.CHEST);
CONTAINERS.add(Material.TRAPPED_CHEST);
CONTAINERS.add(Material.BARREL);
CONTAINERS.add(Material.SHULKER_BOX);
CONTAINERS.add(Material.BLACK_SHULKER_BOX);
CONTAINERS.add(Material.BLUE_SHULKER_BOX);
CONTAINERS.add(Material.BROWN_SHULKER_BOX);
CONTAINERS.add(Material.CYAN_SHULKER_BOX);
CONTAINERS.add(Material.GRAY_SHULKER_BOX);
CONTAINERS.add(Material.GREEN_SHULKER_BOX);
CONTAINERS.add(Material.LIGHT_BLUE_SHULKER_BOX);
CONTAINERS.add(Material.LIGHT_GRAY_SHULKER_BOX);
CONTAINERS.add(Material.LIME_SHULKER_BOX);
CONTAINERS.add(Material.MAGENTA_SHULKER_BOX);
CONTAINERS.add(Material.ORANGE_SHULKER_BOX);
CONTAINERS.add(Material.PINK_SHULKER_BOX);
CONTAINERS.add(Material.PURPLE_SHULKER_BOX);
CONTAINERS.add(Material.RED_SHULKER_BOX);
CONTAINERS.add(Material.WHITE_SHULKER_BOX);
CONTAINERS.add(Material.YELLOW_SHULKER_BOX);
CONTAINERS.addAll(SHULKER_BOXES);
}

/**
Expand Down Expand Up @@ -88,6 +91,17 @@ public static boolean isChest(Block block) {
return block != null && CONTAINERS.contains(block.getType());
}

/**
* Checks if the material is a shulker box
*
* @param type
* Material to check
* @return Is this material a shulker box?
*/
public static boolean isShulkerBox(Material type) {
return SHULKER_BOXES.contains(type);
}

/**
* Gets the block to which the sign is attached
*
Expand Down
Expand Up @@ -35,6 +35,7 @@
import org.bukkit.OfflinePlayer;
import org.bukkit.block.Block;
import org.bukkit.block.Container;
import org.bukkit.block.ShulkerBox;
import org.bukkit.block.Sign;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
Expand Down Expand Up @@ -138,6 +139,12 @@ private static void showShopInfo(Player player, Sign sign) {
if (!ChestShopSign.isAdminShop(sign)) {
Container chest = uBlock.findConnectedChest(sign);
if (chest != null) {
// do not allow shulker boxes inside of shulker boxes
if (chest instanceof ShulkerBox && BlockUtil.isShulkerBox(item.getType())) {
player.sendMessage(Messages.prefix(Messages.INVALID_SHOP_DETECTED));
return;
}

player.sendMessage(Messages.prefix(Messages.SHOP_INFO));
String prices = sign.getLine(PRICE_LINE);
Inventory inventory = chest.getInventory();
Expand Down Expand Up @@ -181,6 +188,11 @@ private static PreTransactionEvent preparePreTransactionEvent(Sign sign, Player
player.sendMessage(Messages.prefix(Messages.INVALID_SHOP_DETECTED));
return null;
}
// do not allow shulker boxes inside of shulker boxes
if (!ChestShopSign.isAdminShop(sign) && chest instanceof ShulkerBox && BlockUtil.isShulkerBox(item.getType())) {
player.sendMessage(Messages.prefix(Messages.INVALID_SHOP_DETECTED));
return null;
}

int amount = Integer.parseInt(quantity);

Expand Down

0 comments on commit 26ca0f1

Please sign in to comment.