Search in sources :

Example 71 with Island

use of com.iridium.iridiumskyblock.database.Island in project IridiumSkyblock by Iridium-Development.

the class SpawnerSpawnListener method onCreatureSpawn.

@EventHandler(ignoreCancelled = true)
public void onCreatureSpawn(SpawnerSpawnEvent event) {
    Optional<Island> island = IridiumSkyblock.getInstance().getIslandManager().getIslandViaLocation(event.getLocation());
    if (island.isPresent()) {
        IslandBooster islandBooster = IridiumSkyblock.getInstance().getIslandManager().getIslandBooster(island.get(), "spawner");
        if (islandBooster.isActive()) {
            CreatureSpawner spawner = event.getSpawner();
            if (!cooldownProvider.isOnCooldown(spawner)) {
                cooldownProvider.applyCooldown(spawner);
                Bukkit.getScheduler().runTask(IridiumSkyblock.getInstance(), () -> {
                    spawner.setDelay(spawner.getDelay() / 2);
                    spawner.update();
                });
            }
        }
    }
}
Also used : IslandBooster(com.iridium.iridiumskyblock.database.IslandBooster) Island(com.iridium.iridiumskyblock.database.Island) CreatureSpawner(org.bukkit.block.CreatureSpawner) EventHandler(org.bukkit.event.EventHandler)

Example 72 with Island

use of com.iridium.iridiumskyblock.database.Island in project IridiumSkyblock by Iridium-Development.

the class VehicleDamageListener method onVehicleDamage.

@EventHandler
public void onVehicleDamage(VehicleDamageEvent event) {
    if (event.getAttacker() != null && event.getAttacker() instanceof Player) {
        Player attacker = (Player) event.getAttacker();
        Optional<Island> island = IridiumSkyblock.getInstance().getIslandManager().getIslandViaLocation(event.getVehicle().getLocation());
        if (island.isPresent()) {
            if (!IridiumSkyblock.getInstance().getIslandManager().getIslandPermission(island.get(), IridiumSkyblock.getInstance().getUserManager().getUser(attacker), PermissionType.DESTROY_VEHICLE)) {
                event.setCancelled(true);
                attacker.sendMessage(StringUtils.color(IridiumSkyblock.getInstance().getMessages().cannotDestroyVehicles.replace("%prefix%", IridiumSkyblock.getInstance().getConfiguration().prefix)));
            }
        }
    }
}
Also used : Player(org.bukkit.entity.Player) Island(com.iridium.iridiumskyblock.database.Island) EventHandler(org.bukkit.event.EventHandler)

Example 73 with Island

use of com.iridium.iridiumskyblock.database.Island in project IridiumSkyblock by Iridium-Development.

the class Placeholders method getIslandPlaceholders.

private static Map<String, Placeholder> getIslandPlaceholders(String startKey, IslandGetter islandGetter) {
    ImmutableMap.Builder<String, Placeholder> placeholderBuilder = ImmutableMap.<String, Placeholder>builder().put(startKey + "_name", player -> islandGetter.getIsland(player).map(Island::getName).orElse(placeholdersConfig.islandName)).put(startKey + "_owner", player -> islandGetter.getIsland(player).map(island -> island.getOwner().getName()).orElse(placeholdersConfig.islandOwner)).put(startKey + "_rank", player -> islandGetter.getIsland(player).map(island -> IridiumSkyblock.getInstance().getNumberFormatter().format(island.getRank())).orElse(placeholdersConfig.islandRank)).put(startKey + "_level", player -> islandGetter.getIsland(player).map(island -> IridiumSkyblock.getInstance().getNumberFormatter().format(island.getLevel())).orElse(placeholdersConfig.islandLevel)).put(startKey + "_value", player -> islandGetter.getIsland(player).map(Island::getFormattedValue).orElse(placeholdersConfig.islandValue)).put(startKey + "_extravalue", player -> islandGetter.getIsland(player).map(island -> IridiumSkyblock.getInstance().getNumberFormatter().format(island.getExtraValue())).orElse(placeholdersConfig.islandExtraValue)).put(startKey + "_visitable", player -> islandGetter.getIsland(player).map(island -> island.isVisitable() ? IridiumSkyblock.getInstance().getMessages().visitable : IridiumSkyblock.getInstance().getMessages().notVisitable).orElse(placeholdersConfig.islandValue)).put(startKey + "_members", player -> islandGetter.getIsland(player).map(island -> IridiumSkyblock.getInstance().getNumberFormatter().format(island.getMembers().size())).orElse(placeholdersConfig.islandMembers)).put(startKey + "_member_names", player -> islandGetter.getIsland(player).map(island -> island.getMembers().stream().map(User::getName).collect(Collectors.joining(", "))).orElse(placeholdersConfig.islandMemberNames)).put(startKey + "_visitors", player -> islandGetter.getIsland(player).map(island -> IridiumSkyblock.getInstance().getNumberFormatter().format(IridiumSkyblock.getInstance().getIslandManager().getPlayersOnIsland(island).stream().filter(user -> !island.equals(user.getIsland().orElse(null))).count())).orElse(placeholdersConfig.islandVisitors)).put(startKey + "_visitor_names", player -> islandGetter.getIsland(player).map(island -> IridiumSkyblock.getInstance().getIslandManager().getPlayersOnIsland(island).stream().filter(user -> !island.equals(user.getIsland().orElse(null))).map(User::getName).collect(Collectors.joining(", "))).orElse(placeholdersConfig.islandVisitorNames)).put(startKey + "_players", player -> islandGetter.getIsland(player).map(island -> IridiumSkyblock.getInstance().getNumberFormatter().format(IridiumSkyblock.getInstance().getIslandManager().getPlayersOnIsland(island).size())).orElse(placeholdersConfig.islandPlayers)).put(startKey + "_player_names", player -> islandGetter.getIsland(player).map(island -> IridiumSkyblock.getInstance().getIslandManager().getPlayersOnIsland(island).stream().map(User::getName).collect(Collectors.joining(", "))).orElse(placeholdersConfig.islandPlayerNames)).put(startKey + "_experience", player -> islandGetter.getIsland(player).map(Island::getFormattedExperience).orElse(placeholdersConfig.islandExperience)).put(startKey + "_experience_required", player -> islandGetter.getIsland(player).map(island -> IridiumSkyblock.getInstance().getNumberFormatter().format(island.getExperienceRequiredToLevelUp())).orElse(placeholdersConfig.islandExperienceRequired)).put(startKey + "_experience_remaining", player -> islandGetter.getIsland(player).map(island -> IridiumSkyblock.getInstance().getNumberFormatter().format(island.getExperienceRemainingToLevelUp())).orElse(placeholdersConfig.islandExperienceRemaining)).put(startKey + "_overworld_biome", player -> islandGetter.getIsland(player).map(island -> island.getCenter(IridiumSkyblock.getInstance().getIslandManager().getWorld()).getBlock()).map(Block::getBiome).map(biome -> WordUtils.capitalizeFully(biome.name().toLowerCase().replace("_", " "))).orElse(placeholdersConfig.islandBiome)).put(startKey + "_nether_biome", player -> islandGetter.getIsland(player).map(island -> island.getCenter(IridiumSkyblock.getInstance().getIslandManager().getNetherWorld()).getBlock()).map(Block::getBiome).map(biome -> WordUtils.capitalizeFully(biome.name().toLowerCase().replace("_", " "))).orElse(placeholdersConfig.islandBiome)).put(startKey + "_end_biome", player -> islandGetter.getIsland(player).map(island -> island.getCenter(IridiumSkyblock.getInstance().getIslandManager().getEndWorld()).getBlock()).map(Block::getBiome).map(biome -> WordUtils.capitalizeFully(biome.name().toLowerCase().replace("_", " "))).orElse(placeholdersConfig.islandBiome)).put(startKey + "_bank_experience", player -> islandGetter.getIsland(player).map(Island::getFormattedBankExperience).orElse(placeholdersConfig.islandBankExperience)).put(startKey + "_bank_crystals", player -> islandGetter.getIsland(player).map(Island::getFormattedCrystals).orElse(placeholdersConfig.islandBankCrystals)).put(startKey + "_bank_money", player -> islandGetter.getIsland(player).map(Island::getFormattedMoney).orElse(placeholdersConfig.islandBankMoney)).put(startKey + "_upgrade_blocklimit_level", player -> islandGetter.getIsland(player).map(island -> IridiumSkyblock.getInstance().getNumberFormatter().format(islandManager.getIslandUpgrade(island, "blocklimit").getLevel())).orElse(placeholdersConfig.islandUpgradeBlocklimitLevel)).put(startKey + "_upgrade_member_level", player -> islandGetter.getIsland(player).map(island -> IridiumSkyblock.getInstance().getNumberFormatter().format(islandManager.getIslandUpgrade(island, "member").getLevel())).orElse(placeholdersConfig.islandUpgradeMemberLevel)).put(startKey + "_upgrade_size_level", player -> islandGetter.getIsland(player).map(island -> IridiumSkyblock.getInstance().getNumberFormatter().format(islandManager.getIslandUpgrade(island, "size").getLevel())).orElse(placeholdersConfig.islandUpgradeSizeLevel)).put(startKey + "_upgrade_generator_level", player -> islandGetter.getIsland(player).map(island -> IridiumSkyblock.getInstance().getNumberFormatter().format(islandManager.getIslandUpgrade(island, "generator").getLevel())).orElse(placeholdersConfig.islandUpgradeGeneratorLevel)).put(startKey + "_upgrade_warp_level", player -> islandGetter.getIsland(player).map(island -> IridiumSkyblock.getInstance().getNumberFormatter().format(islandManager.getIslandUpgrade(island, "warp").getLevel())).orElse(placeholdersConfig.islandUpgradeWarpLevel)).put(startKey + "_upgrade_member_amount", player -> islandGetter.getIsland(player).map(island -> IridiumSkyblock.getInstance().getNumberFormatter().format(IridiumSkyblock.getInstance().getUpgrades().memberUpgrade.upgrades.get(islandManager.getIslandUpgrade(island, "member").getLevel()).amount)).orElse(placeholdersConfig.islandUpgradeMemberAmount)).put(startKey + "_upgrade_size_dimensions", player -> islandGetter.getIsland(player).map(island -> IridiumSkyblock.getInstance().getNumberFormatter().format(IridiumSkyblock.getInstance().getUpgrades().sizeUpgrade.upgrades.get(islandManager.getIslandUpgrade(island, "size").getLevel()).size)).orElse(placeholdersConfig.islandUpgradeSizeDimensions)).put(startKey + "_upgrade_warp_amount", player -> islandGetter.getIsland(player).map(island -> IridiumSkyblock.getInstance().getNumberFormatter().format(IridiumSkyblock.getInstance().getUpgrades().warpsUpgrade.upgrades.get(islandManager.getIslandUpgrade(island, "warp").getLevel()).amount)).orElse(placeholdersConfig.islandUpgradeWarpAmount));
    // Boosters
    for (String booster : IridiumSkyblock.getInstance().getBoosterList().keySet()) {
        placeholderBuilder.put(startKey + "_booster_" + booster + "_remaining_minutes", player -> islandGetter.getIsland(player).map(island -> {
            IslandBooster islandBooster = IridiumSkyblock.getInstance().getIslandManager().getIslandBooster(island, booster);
            long minutes = LocalDateTime.now().until(islandBooster.getTime(), ChronoUnit.MINUTES);
            return String.valueOf(Math.max(minutes, 0));
        }).orElse(placeholdersConfig.islandBoosterRemainingMinutes));
        placeholderBuilder.put(startKey + "_booster_" + booster + "_remaining_seconds", player -> islandGetter.getIsland(player).map(island -> {
            IslandBooster islandBooster = IridiumSkyblock.getInstance().getIslandManager().getIslandBooster(island, booster);
            long minutes = LocalDateTime.now().until(islandBooster.getTime(), ChronoUnit.MINUTES);
            long seconds = LocalDateTime.now().until(islandBooster.getTime(), ChronoUnit.SECONDS) - minutes * 60;
            return String.valueOf(Math.max(seconds, 0));
        }).orElse(placeholdersConfig.islandBoosterRemainingSeconds));
    }
    return placeholderBuilder.build();
}
Also used : ImmutableMap(com.google.common.collect.ImmutableMap) User(com.iridium.iridiumskyblock.database.User) LocalDateTime(java.time.LocalDateTime) Island(com.iridium.iridiumskyblock.database.Island) HashMap(java.util.HashMap) Player(org.bukkit.entity.Player) IslandBooster(com.iridium.iridiumskyblock.database.IslandBooster) Collectors(java.util.stream.Collectors) List(java.util.List) Block(org.bukkit.block.Block) ChronoUnit(java.time.temporal.ChronoUnit) Map(java.util.Map) Optional(java.util.Optional) IslandManager(com.iridium.iridiumskyblock.managers.IslandManager) IridiumSkyblock(com.iridium.iridiumskyblock.IridiumSkyblock) WordUtils(org.apache.commons.lang.WordUtils) IslandBooster(com.iridium.iridiumskyblock.database.IslandBooster) Block(org.bukkit.block.Block) Island(com.iridium.iridiumskyblock.database.Island) ImmutableMap(com.google.common.collect.ImmutableMap)

Example 74 with Island

use of com.iridium.iridiumskyblock.database.Island in project IridiumSkyblock by Iridium-Development.

the class ShopManager method buy.

/**
 * Buys an item for the Player in the shop.
 * He might not have enough money to do so.
 *
 * @param player   The player which wants to buy the item
 * @param shopItem The item which is requested
 * @param amount   The amount of the item which is requested
 */
public void buy(Player player, ShopItem shopItem, int amount) {
    BuyCost buyCost = shopItem.buyCost;
    double vaultCost = calculateCost(amount, shopItem.defaultAmount, buyCost.vault);
    int crystalCost = (int) calculateCost(amount, shopItem.defaultAmount, buyCost.crystals);
    final Optional<Island> island = IridiumSkyblockAPI.getInstance().getUser(player).getIsland();
    if (!island.isPresent()) {
        player.sendMessage(StringUtils.color(IridiumSkyblock.getInstance().getMessages().noIsland.replace("%prefix%", IridiumSkyblock.getInstance().getConfiguration().prefix)));
        return;
    }
    boolean canPurchase = PlayerUtils.canPurchase(player, island.get(), crystalCost, vaultCost);
    if (!canPurchase) {
        player.sendMessage(StringUtils.color(IridiumSkyblock.getInstance().getMessages().cannotAfford.replace("%prefix%", IridiumSkyblock.getInstance().getConfiguration().prefix)));
        IridiumSkyblock.getInstance().getShop().failSound.play(player);
        return;
    }
    ShopPurchaseEvent shopPurchaseEvent = new ShopPurchaseEvent(player, shopItem, amount);
    Bukkit.getPluginManager().callEvent(shopPurchaseEvent);
    if (shopPurchaseEvent.isCancelled())
        return;
    if (shopItem.command == null) {
        // Add item to the player Inventory
        if (!IridiumSkyblock.getInstance().getShop().dropItemWhenFull && !InventoryUtils.hasEmptySlot(player.getInventory())) {
            player.sendMessage(StringUtils.color(IridiumSkyblock.getInstance().getMessages().inventoryFull.replace("%prefix%", IridiumSkyblock.getInstance().getConfiguration().prefix)));
            return;
        }
        ItemStack itemStack = shopItem.type.parseItem();
        itemStack.setAmount(amount);
        if (shopItem.displayName != null && !shopItem.displayName.isEmpty()) {
            ItemMeta itemMeta = itemStack.getItemMeta();
            itemMeta.setDisplayName(StringUtils.color(shopItem.displayName));
            itemStack.setItemMeta(itemMeta);
        }
        for (ItemStack dropItem : player.getInventory().addItem(itemStack).values()) {
            player.getWorld().dropItem(player.getEyeLocation(), dropItem);
        }
    } else {
        // Run the command
        String command = shopItem.command.replace("%player%", player.getName()).replace("%amount%", String.valueOf(amount));
        Bukkit.dispatchCommand(Bukkit.getConsoleSender(), command);
    }
    // Only run the withdrawing function when the user can buy it.
    PlayerUtils.pay(player, island.get(), crystalCost, vaultCost);
    IridiumSkyblock.getInstance().getShop().successSound.play(player);
    player.sendMessage(StringUtils.color(IridiumSkyblock.getInstance().getMessages().successfullyBought.replace("%prefix%", IridiumSkyblock.getInstance().getConfiguration().prefix).replace("%amount%", String.valueOf(amount)).replace("%item%", StringUtils.color(shopItem.name)).replace("%vault_cost%", String.valueOf(vaultCost)).replace("%crystal_cost%", String.valueOf(crystalCost))));
}
Also used : BuyCost(com.iridium.iridiumskyblock.shop.ShopItem.BuyCost) ShopPurchaseEvent(com.iridium.iridiumskyblock.api.ShopPurchaseEvent) ItemStack(org.bukkit.inventory.ItemStack) Island(com.iridium.iridiumskyblock.database.Island) ItemMeta(org.bukkit.inventory.meta.ItemMeta)

Example 75 with Island

use of com.iridium.iridiumskyblock.database.Island in project IridiumSkyblock by Iridium-Development.

the class ShopManager method giveReward.

/**
 * Called when a player successfully sells an item in the shop.
 * Gives all rewards for that item to him.
 *
 * @param player The player who sold the item
 * @param item   The item that has been sold
 * @param amount The amount of that item
 */
public void giveReward(Player player, ShopItem item, int amount) {
    double vaultReward = calculateCost(amount, item.defaultAmount, item.sellReward.vault);
    int crystalReward = (int) calculateCost(amount, item.defaultAmount, item.sellReward.crystals);
    Island island = IridiumSkyblockAPI.getInstance().getUser(player).getIsland().get();
    IslandBank moneyIslandBank = IridiumSkyblock.getInstance().getIslandManager().getIslandBank(island, IridiumSkyblock.getInstance().getBankItems().moneyBankItem);
    IslandBank crystalIslandBank = IridiumSkyblock.getInstance().getIslandManager().getIslandBank(island, IridiumSkyblock.getInstance().getBankItems().crystalsBankItem);
    moneyIslandBank.setNumber(moneyIslandBank.getNumber() + vaultReward);
    crystalIslandBank.setNumber(crystalIslandBank.getNumber() + crystalReward);
    player.sendMessage(StringUtils.color(IridiumSkyblock.getInstance().getMessages().successfullySold.replace("%prefix%", IridiumSkyblock.getInstance().getConfiguration().prefix).replace("%amount%", String.valueOf(amount)).replace("%item%", StringUtils.color(item.name)).replace("%vault_reward%", String.valueOf(vaultReward)).replace("%crystal_reward%", String.valueOf(crystalReward))));
}
Also used : IslandBank(com.iridium.iridiumskyblock.database.IslandBank) Island(com.iridium.iridiumskyblock.database.Island)

Aggregations

Island (com.iridium.iridiumskyblock.database.Island)92 User (com.iridium.iridiumskyblock.database.User)76 Player (org.bukkit.entity.Player)60 EventHandler (org.bukkit.event.EventHandler)18 List (java.util.List)16 IridiumSkyblock (com.iridium.iridiumskyblock.IridiumSkyblock)15 OfflinePlayer (org.bukkit.OfflinePlayer)15 Collectors (java.util.stream.Collectors)14 IslandLog (com.iridium.iridiumskyblock.database.IslandLog)12 Optional (java.util.Optional)11 StringUtils (com.iridium.iridiumcore.utils.StringUtils)10 IslandBank (com.iridium.iridiumskyblock.database.IslandBank)10 Duration (java.time.Duration)10 Collections (java.util.Collections)9 CommandSender (org.bukkit.command.CommandSender)9 XMaterial (com.iridium.iridiumcore.dependencies.xseries.XMaterial)7 PlaceholderBuilder (com.iridium.iridiumskyblock.PlaceholderBuilder)6 BankItem (com.iridium.iridiumskyblock.bank.BankItem)6 IslandBooster (com.iridium.iridiumskyblock.database.IslandBooster)6 Bukkit (org.bukkit.Bukkit)6