package de.epiceric.shopchest.external.listeners; import java.util.Set; import com.wasteofplastic.askyblock.ASkyBlockAPI; import com.wasteofplastic.askyblock.Island; import org.bukkit.Location; import org.bukkit.entity.Player; import org.bukkit.event.Cancellable; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import de.epiceric.shopchest.ShopChest; import de.epiceric.shopchest.config.Config; import de.epiceric.shopchest.event.ShopCreateEvent; import de.epiceric.shopchest.event.ShopExtendEvent; import de.epiceric.shopchest.utils.Utils; public class ASkyBlockListener implements Listener { private final ShopChest plugin; public ASkyBlockListener(ShopChest plugin) { this.plugin = plugin; } @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) public void onCreateShop(ShopCreateEvent e) { if (!Config.enableASkyblockIntegration) return; Set<Location> chestLocations = Utils.getChestLocations(e.getShop()); for (Location loc : chestLocations) { if (handleForLocation(e.getPlayer(), loc, e)) return; } } @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) public void onExtendShop(ShopExtendEvent e) { if (!Config.enableASkyblockIntegration) return; handleForLocation(e.getPlayer(), e.getNewChestLocation(), e); } private boolean handleForLocation(Player player, Location loc, Cancellable e) { Island island = ASkyBlockAPI.getInstance().getIslandAt(loc); if (island == null) return false; if (!player.getUniqueId().equals(island.getOwner()) && !island.getMembers().contains(player.getUniqueId())) { e.setCancelled(true); plugin.debug("Cancel Reason: ASkyBlock"); return true; } return false; } }