{"id":14969465,"url":"https://github.com/cryptomorin/xseries","last_synced_at":"2025-05-15T11:03:29.740Z","repository":{"id":37936062,"uuid":"192069838","full_name":"CryptoMorin/XSeries","owner":"CryptoMorin","description":"Library for cross-version Minecraft Bukkit support and various efficient API methods.","archived":false,"fork":false,"pushed_at":"2025-04-08T19:42:35.000Z","size":2060,"stargazers_count":442,"open_issues_count":5,"forks_count":134,"subscribers_count":11,"default_branch":"master","last_synced_at":"2025-04-15T02:13:04.106Z","etag":null,"topics":["algorithm","api","bukkit","efficiency","java","java-edition","library","maven","minecraft","minecraft-plugin","mojang-minecraft","packet","papermc","performance","plugin","reflection","spigot","xseries"],"latest_commit_sha":null,"homepage":"https://www.spigotmc.org/threads/378136/","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CryptoMorin.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-06-15T11:15:58.000Z","updated_at":"2025-04-09T12:57:02.000Z","dependencies_parsed_at":"2023-10-10T18:32:50.571Z","dependency_job_id":"3b03b153-6771-41a2-afc8-c52af065fed2","html_url":"https://github.com/CryptoMorin/XSeries","commit_stats":{"total_commits":385,"total_committers":48,"mean_commits":8.020833333333334,"dds":0.5038961038961038,"last_synced_commit":"95b0796f8af096e3b77ddc5bfe29dea28959d879"},"previous_names":[],"tags_count":32,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CryptoMorin%2FXSeries","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CryptoMorin%2FXSeries/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CryptoMorin%2FXSeries/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CryptoMorin%2FXSeries/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CryptoMorin","download_url":"https://codeload.github.com/CryptoMorin/XSeries/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248991558,"owners_count":21194894,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["algorithm","api","bukkit","efficiency","java","java-edition","library","maven","minecraft","minecraft-plugin","mojang-minecraft","packet","papermc","performance","plugin","reflection","spigot","xseries"],"created_at":"2024-09-24T13:41:54.217Z","updated_at":"2025-05-15T11:03:29.732Z","avatar_url":"https://github.com/CryptoMorin.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# XSeries\n\n[![Minecraft](https://img.shields.io/badge/Minecraft-1.21.5-dark_green.svg)](https://shields.io/)\n[![Java](https://img.shields.io/badge/Java-8-dark_green.svg)](https://shields.io/)\n[![Build Status](https://api.travis-ci.com/CryptoMorin/XSeries.svg?branch=master)](https://app.travis-ci.com/github/CryptoMorin/XSeries)\n![maven-central](https://img.shields.io/maven-central/v/com.github.cryptomorin/XSeries)\n[![CodeFactor](https://www.codefactor.io/repository/github/cryptomorin/xseries/badge)](https://www.codefactor.io/repository/github/cryptomorin/xseries)\n\nLibrary mainly designed to provide cross-version support for Minecraft Bukkit plugins,\nbut it also includes numerous extra methods to help developers design their plugins easier and efficiently.\nSome utilities are completely unrelated to cross-version support such as NoteBlockMusic.\n\n\u003e [!IMPORTANT]\n\u003e Don't forget to add `api-version: \"1.13\"` to your **plugin.yml**.\n\u003e This will not prevent your plugin from working even if the server is not using Minecraft v1.13\n\u003e This is only required if you want to use one of the XBase/XModule classes. \n\n\u003e [!CAUTION]\n\u003e Make sure to [shade](https://github.com/CryptoMorin/XSeries?tab=readme-ov-file#shading)\n\u003e the library to prevent conflicts with other plugins that also use XSeries.\n\nThis project aims to provide quality utilities with high performance using the latest, yet efficient techniques.\nAlthough support for old versions (like 1.8) will still remain for future updates, I highly encourage all developers\ndrop support for anything below 1.12\n\n### Links\n\nThis project was mainly posted in [SpigotMC](https://www.spigotmc.org/threads/378136/)\\\nMost of the updates and news will be announced there.\n\n### Getting Started\n\nWhen compiling your plugin you should be using the latest version that your plugin is going to support.\\\nWhich means, at least you have to use 1.13 (for cross-version support utilities only)\nYou can clone the project using: `git clone https://github.com/CryptoMorin/XSeries.git`\n\nAll the methods are explained in the JavaDocs. Please read them before using a method.\nIt's quite common to miss the whole purpose of cross-version support and the efficiency\nof the utility by using the wrong methods.\n\nYou can use some of these utilities individually or use the maven dependency.\nMost of the utilities are intended to be independent. However, some\nutilities such as [XParticle](core/src/main/java/com/cryptomorin/xseries/particles/XParticle.java) are intended to use\nanother class ([ParticleDisplay](core/src/main/java/com/cryptomorin/xseries/particles/ParticleDisplay.java)).\nAll XBase/XModule classes also depend on these base classes and also [XRegistry](core/src/main/java/com/cryptomorin/xseries/base).\n\n#### Maven ![maven-central](https://img.shields.io/maven-central/v/com.github.cryptomorin/XSeries)\n\n```xml\n\n\u003cdependency\u003e\n    \u003cgroupId\u003ecom.github.cryptomorin\u003c/groupId\u003e\n    \u003cartifactId\u003eXSeries\u003c/artifactId\u003e\n    \u003cversion\u003eversion\u003c/version\u003e\n\u003c/dependency\u003e\n\n\u003c!-- If you want to use XSkull and you use 'spigot-api' dependency you need the following: --\u003e\n\u003crepository\u003e\n    \u003cid\u003eminecraft-libraries\u003c/id\u003e\n    \u003cname\u003eMinecraft Libraries\u003c/name\u003e\n    \u003curl\u003ehttps://libraries.minecraft.net/\u003c/url\u003e\n\u003c/repository\u003e\n\u003cdependency\u003e\n\u003cgroupId\u003ecom.mojang\u003c/groupId\u003e\n    \u003cartifactId\u003eauthlib\u003c/artifactId\u003e\n    \u003cversion\u003e6.0.54\u003c/version\u003e\n    \u003cscope\u003eprovided\u003c/scope\u003e\n\u003c/dependency\u003e\n```\n\nGradle\n\n```kotlin\nrepositories {\n    mavenCentral()\n}\ndependencies {\n    implementation(\"com.github.cryptomorin:XSeries:version\")\n}\n```\n\nYou shouldn't worry if the reflection or other classes are going to use your memory with heavy useless static cache.\nAs long as you don't use them anywhere in your code, they won't initialize.\nThe memory usage of these utilities are extremely enhanced.\n\n# Shading\n\nDO NOT extract the JAR into your project if you're using maven. You have to shade the library,\notherwise your plugin or other plugins will break due to version mismatch.\nTo shade the library, add the following under your maven plugins:\n\n### [Apache Maven Shade Plugin](https://maven.apache.org/plugins/maven-shade-plugin/)\n\n```xml\n\n\u003cplugin\u003e\n    \u003cgroupId\u003eorg.apache.maven.plugins\u003c/groupId\u003e\n    \u003cartifactId\u003emaven-shade-plugin\u003c/artifactId\u003e\n    \u003cversion\u003e3.6.0\u003c/version\u003e\n    \u003cconfiguration\u003e\n        \u003crelocations\u003e\n            \u003crelocation\u003e\n                \u003cpattern\u003ecom.cryptomorin.xseries\u003c/pattern\u003e\n                \u003c!-- Be sure to change the package below --\u003e\n                \u003cshadedPattern\u003emy.plugin.utils\u003c/shadedPattern\u003e\n            \u003c/relocation\u003e\n        \u003c/relocations\u003e\n        \u003c!-- Here you can remove the classes you don't use. --\u003e\n        \u003c!-- These are some examples. --\u003e\n        \u003c!-- The \"unused\" package and SkullCacheListener are excluded by default. --\u003e\n        \u003c!-- Some utilities such a XItemStack depend on more than 3 other classes, so watch out. --\u003e\n        \u003cfilters\u003e\n            \u003cfilter\u003e\n                \u003cartifact\u003e*:*\u003c/artifact\u003e\n                \u003cexcludes\u003e\n                    \u003cexclude\u003ecom/cryptomorin/xseries/XBiome*\u003c/exclude\u003e\n                    \u003cexclude\u003ecom/cryptomorin/xseries/NMSExtras*\u003c/exclude\u003e\n                    \u003cexclude\u003ecom/cryptomorin/xseries/NoteBlockMusic*\u003c/exclude\u003e\n                    \u003cexclude\u003ecom/cryptomorin/xseries/SkullCacheListener*\u003c/exclude\u003e\n                \u003c/excludes\u003e\n            \u003c/filter\u003e\n        \u003c/filters\u003e\n    \u003c/configuration\u003e\n    \u003cexecutions\u003e\n        \u003cexecution\u003e\n            \u003cphase\u003epackage\u003c/phase\u003e\n            \u003cgoals\u003e\n                \u003cgoal\u003eshade\u003c/goal\u003e\n            \u003c/goals\u003e\n        \u003c/execution\u003e\n    \u003c/executions\u003e\n\u003c/plugin\u003e\n```\n\n### [Gradle Shadow plugin](https://gradleup.com/shadow/)\n\nGradle (Kotlin DSL)\n\n```kotlin\nplugins {\n    java\n    id(\"com.github.johnrengelman.shadow\") version (\"8.1.1\")\n}\n\ntasks {\n    shadowJar {\n        relocate(\"com.cryptomorin.xseries\", \"my.plugin.utils\")\n    }\n}\n```\n\nGradle (Groovy)\n\n```groovy\nplugins {\n    id 'com.github.johnrengelman.shadow' version '8.1.1'\n    id 'java'\n}\n\ntasks {\n    shadowJar {\n        relocate 'com.cryptomorin.xseries', 'my.plugin.utils'\n    }\n}\n```\n\n### Contributing\n\nThere's always room for improvement. If you know better ways of doing things,\nI really appreciate it if you can share it with me,\nbut please make sure you know what you're doing and tested the project on different versions.\nAny new ideas are welcome as long as they're useful; not just for you, but for everyone else.\\\nPlease refer to [contributing guidelines](CONTRIBUTING.md) for more info.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcryptomorin%2Fxseries","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcryptomorin%2Fxseries","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcryptomorin%2Fxseries/lists"}