{"id":14666,"date":"2026-05-31T21:05:19","date_gmt":"2026-05-31T18:05:19","guid":{"rendered":"https:\/\/vpesports.com\/minecraft\/mods\/anhylibapi\/"},"modified":"2026-05-31T21:05:19","modified_gmt":"2026-05-31T18:05:19","slug":"anhylibapi","status":"publish","type":"mod","link":"https:\/\/vpesports.com\/minecraft\/mods\/anhylibapi\/","title":{"rendered":"AnhyLibAPI"},"content":{"rendered":"<p># AnhyLibAPI: For Minecraft Plugins<\/p>\n<p>**AnhyLibAPI**\u00a0is a library designed for integration into Minecraft plugins, developed to enhance their capabilities on servers running on Spigot, Paper, Purpur, and other Spigot forks<\/p>\n<p>**ProtocolLib** plugin version 5.0.0 or higher is required for operation.<\/p>\n<p>**AnhyLibAPI** must be loaded on the server as a plugin. It&#8217;s crucial to understand that **AnhyLibAPI**, in its role as a plugin, does not monitor any events, have timers, or interact with the world or players, ensuring no additional load on the server&#8217;s operation and performance. The primary purpose of **AnhyLibAPI** is to provide its API to other plugins, serving as a robust foundation for extending their functionality. This design ensures that **AnhyLibAPI** enhances plugin capabilities without compromising server efficiency.<\/p>\n<p>### Key Features:<\/p>\n<p>*   **Multilingual Support**: Easy integration of language packs for plugins.<br \/>\n*   **NBT Tags Handling**: Advanced management of NBT tags for flexible data interaction.<br \/>\n*   **Player Persistent Data**: Efficient use of persistent data for players.<br \/>\n*   **Customizing Messages**: Individual customization of message delivery to players.<br \/>\n*   **Logging**: Unique methods for event logging.<\/p>\n<p>### Key Features of AnhyLibAPI<\/p>\n<p>#### 1. Multilingual Support<br \/>\nAnhyLibAPI implements a unified standard for multilingual support by checking &#8220;Player Persistent Data&#8221; for the player&#8217;s selected language. If a selected language is not found, the player&#8217;s Minecraft client language is used by default. Additionally, it supports the inclusion of a list of preferred languages, enhancing flexibility in localization.<\/p>\n<p>#### 2. NBT Tags Handling<br \/>\nAnhyLibAPI simplifies the addition, modification, and deletion of NBT tags in items, enabling developers to effortlessly manage key item data within the game.<\/p>\n<p>#### 3. Player Persistent Data<br \/>\nThis feature allows for the storage, retrieval, and modification of players&#8217; personal data, such as settings, statuses, and achievements, providing deep personalization and preservation of individual player details.<\/p>\n<p>#### 4. Customizing Messages and Logging<br \/>\nThese functionalities offer message customization and color-coded logging for various message types. They enhance communication between plugins and players and facilitate more effective tracking and analysis of events within plugins.<\/p>\n<p>### Documentation:<\/p>\n<p>JavaDoc for AnhyLibAPI are available at the following link:\u00a0AnhyLibAPI Documentation.<\/p>\n<p>### Integration with Gradle and Maven:<\/p>\n<p>#### Gradle:<\/p>\n<p>&#8220;`groovy<br \/>\ndependencyResolutionManagement {<br \/>\n    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)<br \/>\n    repositories {<br \/>\n        mavenCentral()<br \/>\n        maven { url &#8216;https:\/\/jitpack.io&#8217; }<br \/>\n    }<br \/>\n}<br \/>\n&#8220;`<br \/>\n&#8220;`groovy<br \/>\ndependencies {<br \/>\n    implementation &#8216;com.github.AnhyDev:AnhyLibAPI:v1.4.0&#8217;<br \/>\n}<br \/>\n&#8220;`<\/p>\n<p>#### Maven:<\/p>\n<p>&#8220;`xml<br \/>\n<repositories><br \/>\n    <repository><br \/>\n        <id>jitpack.io<\/id><br \/>\n        <url>https:\/\/jitpack.io<\/url><br \/>\n    <\/repository><br \/>\n<\/repositories><br \/>\n&#8220;`<br \/>\n&#8220;`xml<br \/>\n<dependency><br \/>\n    <groupId>com.github.AnhyDev<\/groupId><br \/>\n    <artifactId>AnhyLibAPI<\/artifactId><br \/>\n    <version>v1.4.0<\/version><br \/>\n<\/dependency><br \/>\n&#8220;`<\/p>\n<p>### Plugin Writing Examples:<\/p>\n<p>For a comprehensive, ready-to-use plugin example that implements AnhyLibAPI, visit the following link:\u00a0AnhyLibAPI Plugin Examples. This example is more than just sample code; it is a fully functional plugin featuring multilingual support, configurable settings, and player commands. Developers can use this plugin as a foundation, renaming and repackaging as needed, while also adding their own code to extend its functionality. It serves as an excellent starting point for understanding and applying AnhyLibAPI in a practical, real-world plugin project.<\/p>\n<p>#### See below for some examples from this code:<\/p>\n<p>&#8220;`java<br \/>\npackage ink.anh.example;<\/p>\n<p>import java.io.File;<br \/>\nimport java.io.IOException;<br \/>\nimport org.bukkit.Bukkit;<br \/>\nimport org.bukkit.configuration.file.YamlConfiguration;<br \/>\nimport org.bukkit.plugin.Plugin;<\/p>\n<p>import ink.anh.api.LibraryManager;<br \/>\nimport ink.anh.api.lingo.Translator;<br \/>\nimport ink.anh.api.lingo.lang.LanguageManager;<br \/>\nimport ink.anh.api.messages.Logger;<br \/>\nimport net.kyori.adventure.platform.bukkit.BukkitAudiences;<br \/>\nimport net.md_5.bungee.api.ChatColor;<\/p>\n<p>public class GlobalManager extends LibraryManager {<\/p>\n<p>    private static GlobalManager instance;<br \/>\n\tprivate ExampleLangPlugin plugin;<\/p>\n<p>\tprivate LanguageManager langManager;<br \/>\n    private String pluginName;<br \/>\n    private String defaultLang;<br \/>\n    private static BukkitAudiences bukkitAudiences;<br \/>\n    private boolean debug;<\/p>\n<p>\tprivate GlobalManager(ExampleLangPlugin plugin) {<br \/>\n\t\tsuper(plugin);<br \/>\n\t\tthis.plugin = plugin;<br \/>\n\t\tthis.saveDefaultConfig();<br \/>\n\t\tthis.loadFields(plugin);<br \/>\n\t}<\/p>\n<p>    public static synchronized GlobalManager getManager(ExampleLangPlugin plugin) {<br \/>\n        if (instance == null) {<br \/>\n            instance = new GlobalManager(plugin);<br \/>\n        }<br \/>\n        return instance;<br \/>\n    }<\/p>\n<p>\t@Override<br \/>\n\tpublic Plugin getPlugin() {<br \/>\n\t\treturn plugin;<br \/>\n\t}<\/p>\n<p>\t@Override<br \/>\n\tpublic String getPluginName() {<br \/>\n\t\treturn pluginName;<br \/>\n\t}<\/p>\n<p>\t@Override<br \/>\n\tpublic BukkitAudiences getBukkitAudiences() {<br \/>\n\t\treturn bukkitAudiences;<br \/>\n\t}<\/p>\n<p>\t@Override<br \/>\n\tpublic LanguageManager getLanguageManager() {<br \/>\n\t\treturn this.langManager;<br \/>\n\t}<\/p>\n<p>\t@Override<br \/>\n\tpublic String getDefaultLang() {<br \/>\n\t\treturn defaultLang;<br \/>\n\t}<\/p>\n<p>\t@Override<br \/>\n\tpublic boolean isDebug() {<br \/>\n\t\treturn debug;<br \/>\n\t}<\/p>\n<p>    private void loadFields(ExampleLangPlugin plugin) {<br \/>\n        bukkitAudiences = BukkitAudiences.create(plugin);<br \/>\n        defaultLang = plugin.getConfig().getString(&#8220;language&#8221;, &#8220;en&#8221;);<br \/>\n        pluginName = ChatColor.translateAlternateColorCodes(&#8216;&#038;&#8217;,plugin.getConfig().getString(&#8220;plugin_name&#8221;, &#8220;ExampleLangPlugin&#8221;));<br \/>\n        debug = plugin.getConfig().getBoolean(&#8220;debug&#8221;, false);<br \/>\n        setLanguageManager();<br \/>\n    }<\/p>\n<p>    private void saveDefaultConfig() {<br \/>\n    \tFile configFile = new File(plugin.getDataFolder(), &#8220;config.yml&#8221;);<br \/>\n        if (!configFile.exists()) {<br \/>\n            YamlConfiguration defaultConfig = new YamlConfiguration();<br \/>\n            defaultConfig.set(&#8220;plugin_name&#8221;, &#8220;ExampleLangPlugin&#8221;);<br \/>\n            defaultConfig.set(&#8220;language&#8221;, &#8220;en&#8221;);<br \/>\n            defaultConfig.set(&#8220;debug&#8221;, false);<br \/>\n            try {<br \/>\n                defaultConfig.save(configFile);<br \/>\n                Logger.warn(plugin, &#8220;Default configuration created. &#8220;);<br \/>\n            } catch (IOException e) {<br \/>\n                e.printStackTrace();<br \/>\n            }<br \/>\n        }<br \/>\n    }<\/p>\n<p>    private void setLanguageManager() {<br \/>\n        if (this.langManager == null) {<br \/>\n            this.langManager = LangMessage.getInstance(this);;<br \/>\n        } else {<br \/>\n        \tthis.langManager.reloadLanguages();<br \/>\n        }<br \/>\n    }<\/p>\n<p>\tpublic boolean reload() {<br \/>\n\t\tBukkit.getScheduler().runTaskAsynchronously(plugin, () -> {<br \/>\n\t        try {<br \/>\n\t        \tsaveDefaultConfig();<br \/>\n\t            plugin.reloadConfig();<br \/>\n\t            loadFields(plugin);<br \/>\n\t            Logger.info(plugin, Translator.translateKyeWorld(instance, &#8220;configuration_reloaded&#8221; , new String[] {defaultLang}));<br \/>\n\t        } catch (Exception e) {<br \/>\n\t            e.printStackTrace();<br \/>\n\t            Logger.error(plugin, Translator.translateKyeWorld(instance, &#8220;err_reloading_configuration &#8220;, new String[] {defaultLang}));<br \/>\n\t        }<br \/>\n\t\t});<br \/>\n        return true;<br \/>\n    }<br \/>\n}<br \/>\n&#8220;`<\/p>\n<p>&#8220;`java<br \/>\npackage ink.anh.example;<\/p>\n<p>import ink.anh.api.lingo.lang.LanguageManager;<\/p>\n<p>public class LangMessage extends LanguageManager {<\/p>\n<p>    private static LangMessage instance = null;<br \/>\n    private static final Object LOCK = new Object();<\/p>\n<p>    private LangMessage(GlobalManager manager) {<br \/>\n        super(manager, &#8220;lang&#8221;);<br \/>\n    }<\/p>\n<p>    public static LangMessage getInstance(GlobalManager manager) {<br \/>\n        if (instance == null) {<br \/>\n            synchronized (LOCK) {<br \/>\n                if (instance == null) {<br \/>\n                    instance = new LangMessage(manager);<br \/>\n                }<br \/>\n            }<br \/>\n        }<br \/>\n        return instance;<br \/>\n    }<br \/>\n}<br \/>\n&#8220;`<\/p>\n","protected":false},"excerpt":{"rendered":"<p>AnhyLibAPI is a library designed for integration into Minecraft plugins, developed to enhance their capabilities on servers running on Spigot, Paper, Purpur, and other Spigot forks<\/p>\n","protected":false},"featured_media":14667,"template":"","meta":{"_minecraft_slug":"anhylibapi","_minecraft_project_id":"G8RcsxW2","_minecraft_author":"AnhyDev","_minecraft_license":"MIT","_minecraft_downloads":786,"_minecraft_follows":3,"_minecraft_client_side":"unsupported","_minecraft_server_side":"required","_minecraft_storage_type":"zip","_minecraft_archive_name":"anhylibapi.zip","_minecraft_size_bytes":5112610,"_minecraft_version_count":5,"_minecraft_updated_at":"2026-05-16T09:17:08.854774Z","_minecraft_date_created":"2023-12-21T16:59:01.268037Z","_minecraft_date_modified":"2024-08-02T18:11:48.175435Z","_minecraft_project_url":"https:\/\/modrinth.com\/mod\/anhylibapi","_minecraft_icon_attachment_id":14667,"_minecraft_imported_at":"2026-05-31T18:05:22+00:00","_minecraft_import_hash":"2177d17e2f8abe8cb0a15d756e14e400","_minecraft_versions":"","_minecraft_links":"","_minecraft_gallery":"","_minecraft_api_metadata":""},"mod_category":[124,873,127,128,867,129,92],"mod_loader":[130,132,133,134],"minecraft_version":[49,50,51,52,53,54,55,56,57,58,59,36,60,93,94,101,102,62],"class_list":["post-14666","mod","type-mod","status-publish","has-post-thumbnail","hentry","mod_category-bukkit","mod_category-library","mod_category-paper","mod_category-purpur","mod_category-social","mod_category-spigot","mod_category-utility","mod_loader-bukkit","mod_loader-paper","mod_loader-purpur","mod_loader-spigot","minecraft_version-1-17","minecraft_version-1-17-1","minecraft_version-1-18","minecraft_version-1-18-1","minecraft_version-1-18-2","minecraft_version-1-19","minecraft_version-1-19-1","minecraft_version-1-19-2","minecraft_version-1-19-3","minecraft_version-1-19-4","minecraft_version-1-20","minecraft_version-1-20-1","minecraft_version-1-20-2","minecraft_version-1-20-3","minecraft_version-1-20-4","minecraft_version-1-20-5","minecraft_version-1-20-6","minecraft_version-1-21"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>AnhyLibAPI - 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\/anhylibapi\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"AnhyLibAPI - Minecraft\" \/>\n<meta property=\"og:description\" content=\"AnhyLibAPI is a library designed for integration into Minecraft plugins, developed to enhance their capabilities on servers running on Spigot, Paper, Purpur, and other Spigot forks\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vpesports.com\/minecraft\/mods\/anhylibapi\/\" \/>\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=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/anhylibapi\\\/\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/anhylibapi\\\/\",\"name\":\"AnhyLibAPI - Minecraft\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/anhylibapi\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/anhylibapi\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/anhylibapi-icon-7053a649aba4f6f6a6029d35e40a0151ca59bd64_96.webp\",\"datePublished\":\"2026-05-31T18:05:19+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/anhylibapi\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/anhylibapi\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/anhylibapi\\\/#primaryimage\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/anhylibapi-icon-7053a649aba4f6f6a6029d35e40a0151ca59bd64_96.webp\",\"contentUrl\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/anhylibapi-icon-7053a649aba4f6f6a6029d35e40a0151ca59bd64_96.webp\",\"width\":96,\"height\":96},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/anhylibapi\\\/#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\":\"AnhyLibAPI\"}]},{\"@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":"AnhyLibAPI - 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\/anhylibapi\/","og_locale":"en_US","og_type":"article","og_title":"AnhyLibAPI - Minecraft","og_description":"AnhyLibAPI is a library designed for integration into Minecraft plugins, developed to enhance their capabilities on servers running on Spigot, Paper, Purpur, and other Spigot forks","og_url":"https:\/\/vpesports.com\/minecraft\/mods\/anhylibapi\/","og_site_name":"Minecraft","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/vpesports.com\/minecraft\/mods\/anhylibapi\/","url":"https:\/\/vpesports.com\/minecraft\/mods\/anhylibapi\/","name":"AnhyLibAPI - Minecraft","isPartOf":{"@id":"https:\/\/vpesports.com\/minecraft\/#website"},"primaryImageOfPage":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/anhylibapi\/#primaryimage"},"image":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/anhylibapi\/#primaryimage"},"thumbnailUrl":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/05\/anhylibapi-icon-7053a649aba4f6f6a6029d35e40a0151ca59bd64_96.webp","datePublished":"2026-05-31T18:05:19+00:00","breadcrumb":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/anhylibapi\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vpesports.com\/minecraft\/mods\/anhylibapi\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/vpesports.com\/minecraft\/mods\/anhylibapi\/#primaryimage","url":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/05\/anhylibapi-icon-7053a649aba4f6f6a6029d35e40a0151ca59bd64_96.webp","contentUrl":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/05\/anhylibapi-icon-7053a649aba4f6f6a6029d35e40a0151ca59bd64_96.webp","width":96,"height":96},{"@type":"BreadcrumbList","@id":"https:\/\/vpesports.com\/minecraft\/mods\/anhylibapi\/#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":"AnhyLibAPI"}]},{"@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\/14666","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\/14667"}],"wp:attachment":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/media?parent=14666"}],"wp:term":[{"taxonomy":"mod_category","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod_category?post=14666"},{"taxonomy":"mod_loader","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod_loader?post=14666"},{"taxonomy":"minecraft_version","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/minecraft_version?post=14666"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}