Sueta

HologramLib / API | Paginated Leaderboards & Custom Hologram

1.8.3

Packet-based text display library / api with animations, leaderboards, emojis, and more!

·Plugin


ᴛʜɪs ɪs ᴀ ʟɪʙʀᴀʀʏ.
There are no pre-made commands. It's a library for your own plugins.
FOLIA ✅ PAPER ✅ PURPUR ✅ 1.19.4 - 1.21.5 ✅

FEATURES

  • Text, Block & Item Holograms
  • Text animations with MiniMessage & ItemsAdder emoji support
  • Packet-based implementation for optimal performance
  • Per-player hologram visibility
  • Automated leaderboard generation
  • Advanced customization options
  • Entity attachment support
DISCLAIMER

This api only works on 1.19.4+
The holograms do not work for Bedrock players
There can be some issues when using spigot on older versions (Preferably use Paper or a fork of it)
Its just a Java API. This plugin does not work standalone.

SETUP

  • Download the plugin .jar
  • Download Packet Events
  • Upload the .jar files onto your server (yourserver/plugins folder)
  • Add the plugin as a dependency to your plugin and use it

PROJECT SETUP
View documentation on GitHub

Steps

Gradle

repositories {
  maven { url 'https://jitpack.io' }
}

dependencies {
  compileOnly 'com.github.HologramLib:HologramLib:1.8.3.2'
}

Maven

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

<dependency>
  <groupId>com.github.HologramLib</groupId>
  <artifactId>HologramLib</artifactId>
  <version>1.8.3.2</version>
  <scope>provided</scope>
</dependency>

You need to add this line to your plugin.yml:

depend:
  - HologramLib

CODE EXAMPLES

Getting the instance

private HologramManager hologramManager;

@Override
public void onLoad() {
   HologramLib.onLoad(this); /*Only needed if you shade HologramLib*/
}

@Override
public void onEnable() {
   HologramLib.getManager().ifPresentOrElse(
       manager -> hologramManager = manager,
       () -> getLogger().severe("Failed to initialize HologramLib manager.")
   );
}

Text Hologram

TextHologram hologram = new TextHologram("unique_id")
   .setMiniMessageText("<aqua>Hello world!")
   .setSeeThroughBlocks(false)
   .setBillboard(Display.Billboard.VERTICAL)
   .setShadow(true)
   .setScale(1.5F, 1.5F, 1.5F)
   .setTextOpacity((byte) 200)
   .setBackgroundColor(Color.fromARGB(60, 255, 236, 222).asARGB())
   .setAlignment(TextDisplay.TextAlignment.CENTER)
   .setViewRange(1.0)
   .setMaxLineWidth(200);

Spawing a hologram

hologramManager.spawn(hologram, <location>);
hologramManager.remove(hologram);

Leaderboard creation

Leaderboard Code
Map<UUID, LeaderboardHologram.PlayerScore> scores = new HashMap<>();

LeaderboardHologram.LeaderboardOptions pvpOptions = LeaderboardHologram.LeaderboardOptions.builder()
        .title("PvP Champions")
        .suffix("Kills")
        .showEmptyPlaces(false)
        .maxDisplayEntries(10)
        .sortOrder(LeaderboardHologram.SortOrder.DESCENDING)
        .headMode(LeaderboardHologram.HeadMode.RESOURCEPACK)
        .leaderboardType(LeaderboardHologram.LeaderboardType.ALL_PLAYER_HEADS)
        .build();

LeaderboardHologram pvpLeaderboard = new LeaderboardHologram(pvpOptions, "pvp_lb");
pvpLeaderboard.setAllScores(scores);

/* You can combine the leaderboard with others in a paginated leaderboard
but you can also just spawn the pvpLeaderboard for example
directly using hologramManager.spawn(pvpLeaderboard, location)
*/
PagedLeaderboard pagedLeaderboard = new PagedLeaderboard("paged_holo")
        .addPage(pvpLeaderboard)
        .addPage(<... another page>)
        .setArrowBackgrounds(pvpLeaderboard.getBackgroundHologram().getBackgroundColor())
        .setLeftArrowText("<red><<")
        .setRightArrowText("<red>>>")
        .setArrowOffset(3.5)
        .setClickSounds(Sound.BLOCK_AMETHYST_CLUSTER_FALL, Sound.BLOCK_AMETHYST_CLUSTER_FALL)
        .addPage(economyLeaderboard)
        .rotate(0);
hologramManager.spawn(pagedLeaderboard, location);

You can find more information on the wiki page
And here https://maximjsx.com/projects/hologramlib

Problems with the library?
Before you write a bad review ask for support on the discord server or open an issue on github




Do not use the review section below for suggestions/feature requests or support.

Similar projects

Plugin →