{"id":111212,"date":"2026-06-06T15:58:00","date_gmt":"2026-06-06T12:58:00","guid":{"rendered":"https:\/\/vpesports.com\/minecraft\/mods\/niveriaapi\/"},"modified":"2026-06-06T15:58:00","modified_gmt":"2026-06-06T12:58:00","slug":"niveriaapi","status":"publish","type":"mod","link":"https:\/\/vpesports.com\/minecraft\/mods\/niveriaapi\/","title":{"rendered":"NiveriaAPI"},"content":{"rendered":"<p># NiveriaAPI<\/p>\n<p>![CodeFactor](https:\/\/www.codefactor.io\/repository\/github\/puppytransgirl\/niveriaapi) ![GitHub Release](https:\/\/github.com\/PuppyTransGirl\/NiveriaAPI\/releases\/latest)<\/p>\n<p>NiveriaAPI is a lightweight helper library for Paper plugins that speeds up development with reusable menus, localization, cooldowns, MongoDB persistence, and utilities. Always maintained for 1.21.4-1.21.11 Minecraft releases.<br \/>\n!!! This plugin only supports Paper servers or forks !!!<\/p>\n<p>## Table of Contents<br \/>\n&#8211; [Features](#features)<br \/>\n&#8211; [Installation](#installation)<br \/>\n&#8211; [Usage](#usage)<br \/>\n&#8211; [Getting started (examples)](#getting-started-examples)<br \/>\n&#8211; [Contributing](#contributing)<br \/>\n&#8211; [License](#license)<br \/>\n&#8211; [Acknowledgements](#acknowledgements)<\/p>\n<p>## Features<\/p>\n<p>### Menu System<br \/>\n&#8211; Component-based menu system<br \/>\n&#8211; Includes built-in components (Grid, Button, Icon, ProgressBar, Toggle, etc.), exhaustive list can be found here<br \/>\n&#8211; Easily customizable and extendable with your own components<br \/>\n&#8211; Supports pagination and dynamic content loading<br \/>\n&#8211; Examples can be found here<\/p>\n<p>### Language System<br \/>\n&#8211; Language system for easy localization<br \/>\n&#8211; Supports multiple languages<br \/>\n&#8211; Language files are stored in a simple YAML format for easy editing<br \/>\n&#8211; Can be based on the player locale or a defined one by you<br \/>\n&#8211; Features special tags to easily format messages (prefixes, colors)<\/p>\n<p>### Cooldown System<br \/>\n&#8211; Easily manage cooldowns for players<br \/>\n&#8211; Set cooldowns for specific actions or commands<br \/>\n&#8211; Check if a player is on cooldown and get remaining time<br \/>\n&#8211; Automatically handle cooldown expiration<br \/>\n&#8211; Can be persistent across server restarts<\/p>\n<p>### Database System<br \/>\n&#8211; Simple database abstraction layer<br \/>\n&#8211; Only supports MongoDB<br \/>\n&#8211; Make queries using a simple and intuitive API<br \/>\n&#8211; Supports asynchronous operations for better performance<\/p>\n<p>### Utilities<br \/>\n&#8211; Various utility classes and methods to simplify common tasks<br \/>\n&#8211; ItemBuilder, Pair, Task, NMSUtils, etc.<br \/>\n&#8211; All the utilities classes can be found here<\/p>\n<p>## Installation<br \/>\n1. Download the latest release of NiveriaAPI from the releases page.<br \/>\n2. Place the downloaded JAR file in your server&#8217;s `plugins` directory.<br \/>\n3. Restart your server to load the plugin.<\/p>\n<p>## Usage<br \/>\n**Maven**<br \/>\n&#8220;`xml<br \/>\n<repository><br \/>\n    <id>jitpack.io<\/id><br \/>\n    <url>https:\/\/www.jitpack.io<\/url><br \/>\n<\/repository><\/p>\n<p><dependency><br \/>\n    <groupId>com.github.PuppyTransGirl<\/groupId><br \/>\n    <artifactId>NiveriaAPI<\/artifactId><br \/>\n    <version>VERSION<\/version><br \/>\n    <scope>provided<\/scope><br \/>\n<\/dependency><br \/>\n&#8220;`<\/p>\n<p>**Gradle**<br \/>\n&#8220;`kotlin<br \/>\nrepositories {<br \/>\n    maven(&#8220;https:\/\/www.jitpack.io&#8221;)<br \/>\n}<\/p>\n<p>dependencies {<br \/>\n    compileOnly(&#8220;com.github.PuppyTransGirl:NiveriaAPI:VERSION&#8221;)<br \/>\n}<br \/>\n&#8220;`<br \/>\nReplace `VERSION` with the latest release version.<\/p>\n<p>### Plugin YML<br \/>\n**Bukkit plugin**<br \/>\n&#8220;`yaml<br \/>\ndepend: [NiveriaAPI]<br \/>\n&#8220;`<\/p>\n<p>**Paper plugin**<br \/>\n&#8220;`yaml<br \/>\ndependencies:<br \/>\n  server:<br \/>\n    NiveriaAPI:<br \/>\n      load: BEFORE<br \/>\n      required: true<br \/>\n&#8220;`<\/p>\n<p>## Getting started (examples)<br \/>\nMinimal snippets to get you started with NiveriaAPI features.<\/p>\n<details>\n<summary>Simple menu with button<\/summary>\n<p>&#8220;`java<br \/>\npublic class MenuTest extends Menu {<br \/>\n    public MenuTest(@NotNull Player player) {<br \/>\n        super(player);<br \/>\n    }<\/p>\n<p>    @Override<br \/>\n    protected @NotNull Component title() {<br \/>\n        return Component.text(&#8220;My menu :3&#8221;);<br \/>\n    }<\/p>\n<p>    @Override<br \/>\n    protected @NotNull MenuComponent root(@NotNull MenuContext context) {<br \/>\n        \/\/ Create a button that sends a message when clicked<br \/>\n        Button button = Button.create()<br \/>\n                .item(ItemBuilder.of(Material.DIAMOND_BLOCK)<br \/>\n                        .name(Component.text(&#8220;Click me !&#8221;, NamedTextColor.AQUA))<br \/>\n                        .build()<br \/>\n                )<br \/>\n                .onClick(event -> {<br \/>\n                    event.player().sendMessage(Component.text(&#8220;Button clicked !&#8221;, NamedTextColor.GREEN));<br \/>\n                })<br \/>\n                .build();<\/p>\n<p>        \/\/ Create a grid layout and add the button to it<br \/>\n        return Grid.create()<br \/>\n                .size(9, 3)<br \/>\n                .add(13, button)<br \/>\n                .build();<br \/>\n    }<br \/>\n}<br \/>\n&#8220;`<br \/>\n<\/details>\n<details>\n<summary>Language system example<\/summary>\n<p>&#8220;`java<br \/>\n\/\/ Load language files (usually done in your plugin&#8217;s onEnable method)<br \/>\nLang.load(yourPluginInstance);<\/p>\n<p>\/\/ Get a localized message as a Component or as a String<br \/>\nComponent message = Lang.get(&#8220;welcome_message&#8221;);<br \/>\nString stringMessage = Lang.getString(&#8220;welcome_message&#8221;);<\/p>\n<p>\/\/ Send a localized message to a player<br \/>\nPlayer player = &#8230;; \/\/ Get the player instance<br \/>\nLang.send(player, &#8220;welcome_message&#8221;);<br \/>\n&#8220;`<br \/>\n<\/details>\n<details>\n<summary>Cooldown system example<\/summary>\n<p>&#8220;`java<br \/>\nCooldownManager cooldownManager = NiveriaAPI.instance().cooldownManager();<\/p>\n<p>\/\/ Create cooldown keys<br \/>\nKey fireballKey = Key.key(&#8220;plugin_name&#8221;, &#8220;ability_fireball&#8221;);<br \/>\nKey teleportKey = Key.key(&#8220;plugin_name&#8221;, &#8220;ability_teleport&#8221;);<br \/>\nKey sprintKey = Key.key(&#8220;plugin_name&#8221;, &#8220;ability_sprint&#8221;);<\/p>\n<p>\/\/ Register a persistent cooldown (default behavior)<br \/>\ncooldownManager.setCooldown(player, fireballKey, Duration.ofSeconds(30));<\/p>\n<p>\/\/ Register another persistent cooldown (explicitly persistent)<br \/>\ncooldownManager.setCooldown(player, teleportKey, Duration.ofHours(1), true);<\/p>\n<p>\/\/ Register a non-persistent cooldown (in-memory only)<br \/>\ncooldownManager.setCooldown(player, sprintKey, Duration.ofSeconds(5), false);<\/p>\n<p>\/\/ Check if player is in cooldown<br \/>\nif(cooldownManager.inCooldown(player, fireballKey)){<br \/>\n    long remainingSeconds = cooldownManager.remainingTime(player, fireballKey).getSeconds();<br \/>\n    player.sendMessage(Component.text(&#8220;You must wait &#8221; + remainingSeconds + &#8221; seconds to use this ability again!&#8221;, NamedTextColor.RED));<br \/>\n    return;<br \/>\n}<br \/>\n&#8220;`<br \/>\n<\/details>\n<p>## Contributing<br \/>\nContributions are welcome !<br \/>\nPlease feel free to submit a pull request or open an issue for any bugs or feature requests :3<\/p>\n<p>## License<br \/>\nThis project is licensed under the GNU General Public License v3.0. See the [LICENSE]([LICENSE](https:\/\/github.com\/PuppyTransGirl\/NiveriaAPI\/blob\/master\/LICENSE)) file for details.<\/p>\n<p>## Acknowledgements<br \/>\n&#8211; Thanks to Nirbose for helping me to make the MockBukkit unit tests work with NiveriaAPI.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>An API I use for all the plugins I make for Niveria, my minecraft server :3<\/p>\n","protected":false},"featured_media":111213,"template":"","meta":{"_minecraft_slug":"niveriaapi","_minecraft_project_id":"ll0lc5oW","_minecraft_author":"PuppyTransGirl","_minecraft_license":"GPL-3.0-only","_minecraft_downloads":81,"_minecraft_follows":1,"_minecraft_client_side":"unsupported","_minecraft_server_side":"required","_minecraft_storage_type":"zip","_minecraft_archive_name":"niveriaapi.zip","_minecraft_size_bytes":1750066,"_minecraft_version_count":7,"_minecraft_updated_at":"2026-05-15T20:09:23.869810Z","_minecraft_date_created":"2026-01-22T06:47:53.593346Z","_minecraft_date_modified":"2026-02-21T22:31:16.986453Z","_minecraft_project_url":"https:\/\/modrinth.com\/mod\/niveriaapi","_minecraft_icon_attachment_id":111213,"_minecraft_imported_at":"2026-06-06T12:58:01+00:00","_minecraft_import_hash":"42222397492b6545328c31a656891ecb","_minecraft_versions":"","_minecraft_links":"","_minecraft_gallery":"","_minecraft_api_metadata":""},"mod_category":[125,873,127,128],"mod_loader":[131,132,133],"minecraft_version":[40,41,38,78,79,80,81,82],"class_list":["post-111212","mod","type-mod","status-publish","has-post-thumbnail","hentry","mod_category-folia","mod_category-library","mod_category-paper","mod_category-purpur","mod_loader-folia","mod_loader-paper","mod_loader-purpur","minecraft_version-1-21-10","minecraft_version-1-21-11","minecraft_version-1-21-4","minecraft_version-1-21-5","minecraft_version-1-21-6","minecraft_version-1-21-7","minecraft_version-1-21-8","minecraft_version-1-21-9"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>NiveriaAPI - Minecraft<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/vpesports.com\/minecraft\/mods\/niveriaapi\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"NiveriaAPI - Minecraft\" \/>\n<meta property=\"og:description\" content=\"An API I use for all the plugins I make for Niveria, my minecraft server :3\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vpesports.com\/minecraft\/mods\/niveriaapi\/\" \/>\n<meta property=\"og:site_name\" content=\"Minecraft\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/niveriaapi\\\/\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/niveriaapi\\\/\",\"name\":\"NiveriaAPI - Minecraft\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/niveriaapi\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/niveriaapi\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/niveriaapi-icon-08f2d887d627555694786ea739d5554fc1f9ba6e.png\",\"datePublished\":\"2026-06-06T12:58:00+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/niveriaapi\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/niveriaapi\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/niveriaapi\\\/#primaryimage\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/niveriaapi-icon-08f2d887d627555694786ea739d5554fc1f9ba6e.png\",\"contentUrl\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/niveriaapi-icon-08f2d887d627555694786ea739d5554fc1f9ba6e.png\",\"width\":512,\"height\":512},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/niveriaapi\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Mods\",\"item\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"NiveriaAPI\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/#website\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/\",\"name\":\"Minecraft\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"NiveriaAPI - Minecraft","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/vpesports.com\/minecraft\/mods\/niveriaapi\/","og_locale":"en_US","og_type":"article","og_title":"NiveriaAPI - Minecraft","og_description":"An API I use for all the plugins I make for Niveria, my minecraft server :3","og_url":"https:\/\/vpesports.com\/minecraft\/mods\/niveriaapi\/","og_site_name":"Minecraft","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/vpesports.com\/minecraft\/mods\/niveriaapi\/","url":"https:\/\/vpesports.com\/minecraft\/mods\/niveriaapi\/","name":"NiveriaAPI - Minecraft","isPartOf":{"@id":"https:\/\/vpesports.com\/minecraft\/#website"},"primaryImageOfPage":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/niveriaapi\/#primaryimage"},"image":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/niveriaapi\/#primaryimage"},"thumbnailUrl":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/niveriaapi-icon-08f2d887d627555694786ea739d5554fc1f9ba6e.png","datePublished":"2026-06-06T12:58:00+00:00","breadcrumb":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/niveriaapi\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vpesports.com\/minecraft\/mods\/niveriaapi\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/vpesports.com\/minecraft\/mods\/niveriaapi\/#primaryimage","url":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/niveriaapi-icon-08f2d887d627555694786ea739d5554fc1f9ba6e.png","contentUrl":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/niveriaapi-icon-08f2d887d627555694786ea739d5554fc1f9ba6e.png","width":512,"height":512},{"@type":"BreadcrumbList","@id":"https:\/\/vpesports.com\/minecraft\/mods\/niveriaapi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/vpesports.com\/minecraft\/"},{"@type":"ListItem","position":2,"name":"Mods","item":"https:\/\/vpesports.com\/minecraft\/mods\/"},{"@type":"ListItem","position":3,"name":"NiveriaAPI"}]},{"@type":"WebSite","@id":"https:\/\/vpesports.com\/minecraft\/#website","url":"https:\/\/vpesports.com\/minecraft\/","name":"Minecraft","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/vpesports.com\/minecraft\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}},"_links":{"self":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod\/111212","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod"}],"about":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/types\/mod"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/media\/111213"}],"wp:attachment":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/media?parent=111212"}],"wp:term":[{"taxonomy":"mod_category","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod_category?post=111212"},{"taxonomy":"mod_loader","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod_loader?post=111212"},{"taxonomy":"minecraft_version","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/minecraft_version?post=111212"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}