Skip to content

Getting the API

Setup

Maven Dependency

Add CuriosPaper as a compile-time dependency:

<repository>
    <id>jitpack.io</id>
    <url>https://jitpack.io</url>
</repository>

<dependency>
    <groupId>com.github.Brothergaming52</groupId>
    <artifactId>CuriosPaper</artifactId>
    <version>1.2.0</version>
    <scope>provided</scope>
</dependency>

plugin.yml

name: MyPlugin
version: 1.0.0
main: com.example.MyPlugin
depend: [CuriosPaper]

Accessing the API Instance

import org.bg52.curiospaper.CuriosPaper;
import org.bg52.curiospaper.api.CuriosPaperAPI;

public class MyPlugin extends JavaPlugin {

    private CuriosPaperAPI curiosAPI;

    @Override
    public void onEnable() {
        // Check if CuriosPaper is installed
        if (getServer().getPluginManager().getPlugin("CuriosPaper") == null) {
            getLogger().severe("CuriosPaper is not installed! Disabling...");
            getServer().getPluginManager().disablePlugin(this);
            return;
        }

        // Get the API instance
        CuriosPaper curiosPaper = CuriosPaper.getInstance();
        curiosAPI = curiosPaper.getCuriosPaperAPI();

        getLogger().info("CuriosPaper API loaded successfully!");
    }

    // Expose the API for your other classes
    public CuriosPaperAPI getCuriosAPI() {
        return curiosAPI;
    }
}

Soft Dependency Pattern

If CuriosPaper is optional for your plugin:

public class MyPlugin extends JavaPlugin {

    private CuriosPaperAPI curiosAPI = null;
    private boolean curiosEnabled = false;

    @Override
    public void onEnable() {
        // Try to hook into CuriosPaper
        if (getServer().getPluginManager().getPlugin("CuriosPaper") != null) {
            try {
                curiosAPI = CuriosPaper.getInstance().getCuriosPaperAPI();
                curiosEnabled = true;
                getLogger().info("CuriosPaper integration enabled!");
            } catch (Exception e) {
                getLogger().warning("Failed to hook into CuriosPaper: " + e.getMessage());
            }
        } else {
            getLogger().info("CuriosPaper not found, accessory features disabled.");
        }
    }

    public boolean isCuriosEnabled() {
        return curiosEnabled;
    }

    public CuriosPaperAPI getCuriosAPI() {
        return curiosAPI;
    }

    // Example: safely check accessories
    public boolean playerHasRing(Player player) {
        if (!curiosEnabled) return false;
        return curiosAPI.hasEquippedItems(player, "ring");
    }
}

Full API Method Reference

Slot Methods

Method Return Description
getAllSlotTypes() List<String> Get all registered slot type keys
isValidSlotType(String) boolean Check if a slot type exists
getSlotAmount(String) int Get the number of slots for a type
registerSlot(...) boolean Register a new slot type at runtime
unregisterSlot(String) boolean Remove a slot type

Item Methods

Method Return Description
isValidAccessory(ItemStack) boolean Check if an item is tagged as an accessory
isValidAccessory(ItemStack, String) boolean Check if tagged for a specific slot
getAccessorySlotType(ItemStack) String Get the slot type an item is tagged for
getSlotTypeKey(ItemStack) String Get the slot type key from PDC
tagAccessoryItem(ItemStack, String) ItemStack Tag an item for a slot type
getItemData(String) ItemData Get custom item data by ID
createItem(String) ItemData Create a new custom item
createItem(Plugin, String) ItemData Create item with plugin ownership
saveItemData(String) boolean Save item data to disk
deleteItem(String) boolean Delete a custom item

Player Data Methods

Method Return Description
getEquippedItems(Player, String) List<ItemStack> Get equipped items for a slot
getEquippedItems(UUID, String) List<ItemStack> Get equipped items by UUID
setEquippedItems(Player, String, List) void Set items in a slot
setEquippedItems(UUID, String, List) void Set items by UUID
clearEquippedItems(UUID, String) void Clear all items from a slot
hasEquippedItems(Player, String) boolean Check if any items equipped
countEquippedItems(Player, String) int Count non-empty slots

Registration Methods

Method Return Description
registerItemRecipe(String, RecipeData) boolean Register a recipe
registerItemLootTable(String, LootTableData) boolean Register a loot table
registerItemMobDrop(String, MobDropData) boolean Register a mob drop
registerItemVillagerTrade(String, VillagerTradeData) boolean Register a trade
registerResourcePackAssets(Plugin, File) void Register RP assets