Search in sources :

Example 1 with IslandCreateEvent

use of com.iridium.iridiumskyblock.api.IslandCreateEvent in project IridiumSkyblock by Iridium-Development.

the class CreateCommand method createIsland.

/**
 * Creates an island for a specific Player and then teleports them to the island home.
 *
 * @param player          The owner of the island
 * @param name            The name of  the island
 * @param schematicConfig The schematic of the island
 * @return True if the island has been created successfully
 */
private boolean createIsland(Player player, String name, Schematics.SchematicConfig schematicConfig) {
    User user = IridiumSkyblock.getInstance().getUserManager().getUser(player);
    if (user.getIsland().isPresent()) {
        player.sendMessage(StringUtils.color(IridiumSkyblock.getInstance().getMessages().alreadyHaveIsland.replace("%prefix%", IridiumSkyblock.getInstance().getConfiguration().prefix)));
        return false;
    }
    if (name != null && IridiumSkyblock.getInstance().getIslandManager().getIslandByName(name).isPresent()) {
        player.sendMessage(StringUtils.color(IridiumSkyblock.getInstance().getMessages().islandWithNameAlreadyExists.replace("%prefix%", IridiumSkyblock.getInstance().getConfiguration().prefix)));
        return false;
    }
    IslandCreateEvent islandCreateEvent = new IslandCreateEvent(user, name, schematicConfig);
    Bukkit.getPluginManager().callEvent(islandCreateEvent);
    if (islandCreateEvent.isCancelled())
        return false;
    player.sendMessage(StringUtils.color(IridiumSkyblock.getInstance().getMessages().creatingIsland.replace("%prefix%", IridiumSkyblock.getInstance().getConfiguration().prefix)));
    IridiumSkyblock.getInstance().getIslandManager().createIsland(player, islandCreateEvent.getIslandName(), islandCreateEvent.getSchematicConfig()).thenAccept(island -> Bukkit.getScheduler().runTask(IridiumSkyblock.getInstance(), () -> {
        IridiumSkyblock.getInstance().getIslandManager().teleportHome(player, island, 0);
        IridiumSkyblock.getInstance().getNms().sendTitle(player, IridiumSkyblock.getInstance().getConfiguration().islandCreateTitle, IridiumSkyblock.getInstance().getConfiguration().islandCreateSubTitle, 20, 40, 20);
    }));
    return true;
}
Also used : User(com.iridium.iridiumskyblock.database.User) IslandCreateEvent(com.iridium.iridiumskyblock.api.IslandCreateEvent)

Aggregations

IslandCreateEvent (com.iridium.iridiumskyblock.api.IslandCreateEvent)1 User (com.iridium.iridiumskyblock.database.User)1