# Developers API

## Events

HyperSkills

* SkillsLevelUPEvent
* SkillsXPGainEvent
* SkillsFortuneEvent

HyperEnchanting

* HyperEnchantEvent

HyperCrafting

* HyperCraftEvent

HyperCollections

* CollectionUnlockEvent
* CollectionXPGainEvent
* CollectionLevelUPEvent

HyperPets

* PetLevelUPEvent
* PetXPGainEvent
* PetSpawnEvent
* PetDeespawnEvent

HyperAlchemy

* HyperBrewEvent

HyperRunes

* RuneTableFuseEvent

HyperAnvil

* AnvilUseEvent

HyperRegions

* HyperBlockBreakEvent

## API

### HyperSkills

```java
package me.reb4ck.hyperskills.api;

import me.reb4ck.hyperskills.objects.Ability;
import me.reb4ck.hyperskills.objects.Perk;
import me.reb4ck.hyperskills.objects.SkillType;

import java.util.UUID;

public interface HyperSkillsAPI {

    /**
     * Method to get Player level for the specified skill
     *
     * @param skill SkillType
     * @param uuid UUID
     * @return return skill level
     */
    int getLevel(UUID uuid, SkillType skill);

    /**
     * Method to set Player level for a specific skill
     *
     * @param skill SkillType
     * @param uuid UUID
     * @param level int
     */
    void setLevel(UUID uuid, SkillType skill, int level);

    /**
     * Method to add Levels to a specific player skill
     *
     * @param skill SkillType
     * @param uuid UUID
     * @param level int
     * @return return skill level
     */
    void addLevel(UUID uuid, SkillType skill, int level);

    /**
     * Method to get Player XP for the specified skill
     * @param skill SkillType
     * @param uuid UUID
     * @return return skill xp
     */
    double getXP(UUID uuid, SkillType skill);

    /**
     * Method to set Player XP for the specified skill
     * @param skill SkillType
     * @param uuid UUID
     * @param xp double
     */
    void setXP(UUID uuid, SkillType skill, double xp);

    /**
     * Method to add XP specified player skill
     * @param skill SkillType
     * @param uuid UUID
     * @param xp double
     */
    void addXP(UUID uuid, SkillType skill, double xp);

    /**
     * Method to add more ability to the player
     * @param ability Ability
     * @param uuid UUID
     * @param quantity double
     */
    void addArmorAbility(UUID uuid, Ability ability, double quantity);

    /**
     * Method to set a remove quantity from an ability
     * @param ability Ability
     * @param uuid UUID
     * @param quantity double
     */
    void removeArmorAbility(UUID uuid, Ability ability, double quantity);

    /**
     * Method to add more perk to the player
     * @param perk Perk
     * @param uuid UUID
     * @param quantity double
     */
    void addArmorPerk(UUID uuid, Perk perk, double quantity);

    /**
     * Method to set a Perk quantity from an perk
     * @param perk Ability
     * @param uuid UUID
     * @param quantity double
     */
    void removeArmorPerk(UUID uuid, Perk perk, double quantity);

    /**
     * Method to add more ability to the player
     * @param ability Ability
     * @param uuid UUID
     * @param quantity double
     */
    void addAbility(UUID uuid, Ability ability, double quantity);

    /**
     * Method to set a specific quantity to an ability
     * @param ability Ability
     * @param uuid UUID
     * @param quantity double
     */
    void setAbility(UUID uuid, Ability ability, double quantity);

    /**
     * Method to set a remove quantity from an ability
     * @param ability Ability
     * @param uuid UUID
     * @param quantity double
     */
    void removeAbility(UUID uuid, Ability ability, double quantity);

    /**
     * Method to get Total Player Ability quantity
     * @param ability Ability
     * @param uuid UUID
     * @return return ability quantity
     */
    double getTotalAbility(UUID uuid, Ability ability);

    /**
     * Method to get Player Ability quantity
     * @param ability Ability
     * @param uuid UUID
     * @return return ability quantity
     */
    double getSimpleAbility(UUID uuid, Ability ability);

    /**
     * Method to add more ability to the player
     * @param perk Perk
     * @param uuid UUID
     * @param quantity double
     */
    void addPerk(UUID uuid, Perk perk, double quantity);

    /**
     * Method to set a specific quantity to a perk
     * @param perk Perk
     * @param uuid UUID
     * @param quantity double
     */
    void setPerk(UUID uuid, Perk perk, double quantity);

    /**
     * Method to a remove a specific quantity from a perk
     * @param perk Perk
     * @param uuid UUID
     * @param quantity double
     */
    void removePerk(UUID uuid, Perk perk, double quantity);

    /**
     * Method to get Total Player Perk quantity
     * @param perk Perk
     * @param uuid UUID
     * @return return perk quantity
     */
    double getTotalPerk(UUID uuid, Perk perk);
    
    /**
     * Method to get Simple Player Perk quantity
     * @param perk Perk
     * @param uuid UUID
     * @return return perk quantity
     */
    double getSimplePerk(UUID uuid, Perk perk);


}

```

### HyperCollections

```java
package me.reb4ck.hypercollections.api;

import org.bukkit.OfflinePlayer;

public interface HyperCollectionsAPI {

    /**
     * Method to get Player level for the specified collection
     *
     * @param key String
     * @param player OfflinePlayer
     * @return return collection level
     */
    int getLevel(OfflinePlayer player, String key);

    /**
     * Method to get Player XP for the specified collection
     * @param key String
     * @param player OfflinePlayer
     * @return return collection xp
     */
    double getXP(OfflinePlayer player, String key);

    /**
     * Method to set Player level for the specified collection
     *
     * @param key String
     * @param player OfflinePlayer
     * @param quantity int
     */
    void setLevel(OfflinePlayer player, String key, int quantity);

    /**
     * Method to set Player XP for the specified collection
     * @param key String
     * @param player OfflinePlayer
     * @param quantity double
     */
    void setXP(OfflinePlayer player, String key, double quantity);

    /**
     * Method to add Levels to specified player collection
     *
     * @param key String
     * @param player OfflinePlayer
     * @param quantity int
     * @return return skill level
     */
    void addLevel(OfflinePlayer player, String key, int quantity);

    /**
     * Method to add XP to specified player collection
     * @param key String
     * @param player OfflinePlayer
     * @param quantity double
     */
    void addXP(OfflinePlayer player, String key, double quantity);
}
```

### HyperEnchantments

```java
package me.reb4ck.hyperenchants.api;

import me.reb4ck.hyperenchants.managers.HyperEnchant;
import org.bukkit.inventory.ItemStack;

import java.util.HashMap;
import java.util.List;

public interface HyperEnchantsAPI {

    /**
     * Method to get a Enchanted Item
     *
     * @param itemStack ItemStack
     * @param hyperEnchant HyperEnchant
     * @param level int
     * @return return enchanted item
     */
    ItemStack enchantItem(ItemStack itemStack, HyperEnchant hyperEnchant, int level);

    /**
     * Method to get HyperEnchant instance from its enchantmentID
     *
     * @param enchantmentID String
     * @return return hyperenchant instance
     */
    HyperEnchant getEnchantmentInstance(String enchantmentID);

    /**
     * Method to check compatibility between an item and enchantment
     *
     * @param itemStack ItemStack
     * @param hyperEnchant HyperEnchant
     * @return return if enchant is compatible
     */
    boolean itemCanBeEnchanted(ItemStack itemStack, HyperEnchant hyperEnchant);

    /**
     * Method to check if item is enchanted with a specific level
     *
     * @param itemStack ItemStack
     * @param hyperEnchant HyperEnchant
     * @param level int
     * @return return if item is enchanted
     */
    boolean itemIsEnchanted(ItemStack itemStack, HyperEnchant hyperEnchant, int level);

    /**
     * Method to get all Enchantments availables for an item
     *
     * @param itemStack ItemStack
     * @return return item available enchantments
     */
    List<HyperEnchant> getAvailableEnchantments(ItemStack itemStack);


    /**
     * Method to get all Enchantments for an item
     *
     * @param itemStack ItemStack
     * @return return item enchantments
     */
    HashMap<HyperEnchant, Integer> getItemEnchantments(ItemStack itemStack);

    /**
     * Method to get all Enchantments instances of plugin
     *
     * @return return item enchantments
     */
    List<HyperEnchant> getAllEnchantments();

    /**
     * Method to get all Enchantments id of plugin
     *
     * @return return item enchantments
     */
    List<String> getAllEnchantmentsID();

}

```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://reb4ck.gitbook.io/ultimate-core/developers-api.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
