Skip to content

πŸ’œ LiteSkullAPI - Fast and extensive skull library for Bukkit/Spigot/Paper plugins.

License

Notifications You must be signed in to change notification settings

Rollczi/LiteSkullAPI

Folders and files

NameName
Last commit message
Last commit date
Oct 28, 2024
Dec 16, 2024
Jan 24, 2025
Aug 17, 2022
Aug 17, 2022
Mar 9, 2022
Jun 24, 2024
Jan 22, 2025
Dec 20, 2024
Oct 28, 2024
Oct 28, 2024
Aug 17, 2022

Repository files navigation

πŸ’œ LiteSkullAPI

Fast and extensive skull library for Bukkit/Spigot/Paper plugins.

Helpful links:

mineCodes Repository (Maven or Gradle) ❀️

<repository>
  <id>minecodes-repository</id>
  <url>https://repository.minecodes.pl/releases</url>
</repository>
maven { url "https://repository.minecodes.pl/releases" }

Dependencies (Maven or Gradle)

Framework Core

<dependency>
    <groupId>dev.rollczi</groupId>
    <artifactId>liteskullapi</artifactId>
    <version>1.3.0</version>
</dependency>
implementation 'dev.rollczi:liteskullapi:1.3.0'

How use LiteSkullAPI?

public final class ExamplePlugin extends JavaPlugin {
    private SkullAPI skullAPI;

    @Override
    public void onEnable() {
        this.skullAPI = LiteSkullFactory.builder()
                .cacheExpireAfterWrite(Duration.ofMinutes(45L))
                .bukkitScheduler(this)
                .build();
    }
}

Accept synchronous with Minecraft Server

Lambda will be run in the server sync task (see .bukkitScheduler() or .scheduler())

// you can use this item when skull will be found (synchronous)
skullAPI.acceptSyncSkull("Rollczi", itemStack -> {
    player.getInventory().addItem(itemStack);
});

skullAPI.acceptSyncSkullData("Rollczi", skullData -> {
    String value = skullData.getValue();
    String signature = skullData.getSignature();
});

Accept asynchronous

// you can use this item when skull will be found (asynchronous)
skullAPI.acceptAsyncSkull("Rollczi", itemStack -> {
    itemStack
    // some code
});
skullAPI.acceptAsyncSkullData("Rollczi", skullData -> {
    String value = skullData.getValue(); // texture value
    String signature = skullData.getSignature(); // texture signature
});

CompletableFuture

// you can get completable future with skull item
CompletableFuture<ItemStack> completableFuture = skullAPI.getSkull("Rollczi");
completableFuture.thenAcceptAsync(itemStack -> {
    itemStack
    // some code
});

// you can get completable future with skull data
CompletableFuture<SkullData> completableFuture = skullAPI.getSkullData("Rollczi");
completableFuture.thenAcceptAsync(skullData -> {
    String value = skullData.getValue(); // texture value
    String signature = skullData.getSignature(); // texture signature
});

Await for skull (⚠️ Blocking)

ItemStack itemStack = skullAPI.awaitForSkull("Rollczi", 10, TimeUnit.SECONDS);
SkullData skullData = skullAPI.awaitForSkullData("Rollczi", 10, TimeUnit.SECONDS);