XSeries is a set of utility classes to provide support for different functions to work on 1.8 to the latest version. This was originally a resource thread for XMaterial only, but I started working on new utilities. If the thread is missing any explanation for resources other than XMaterial, tell me. Note that most of the methods have a complete JavaDoc so most of the explanation is there. XSound Special Methods: playAscendingNote - playSoundRepeatedly - stopMusic - playSoundFromString I'm also working on a feature that you can write your own music script. I hope it'll be possible. A really special method is playMusic. You can make your own song snippets. This method allows you to play notes with a short script without needing to use any redstone or noteblocks! Please share your work if you made any. I might replace it with the current snippet in the testMusic method. XBlock This is used to support block state and data for materials. XMaterial only handles ItemStacks. All the methods in this class are special and unique. This requires XMaterial to work. XEnchantment These enchantments use an enum while the Bukkit one uses a class. There is also an Essentials version that uses classes ZEnchantment this class will not be updated. Special Methods: getBook XPotion These potion effects use an enum while the Bukkit one uses a class. Special Methods: buildItemWithEffects - throwPotion - addPotionEffectsFromString - parsePotionEffectFromString - isPotion XParticle Coming soon... This utility will mainly focus on providing easier ways to display particles in different shapes. A particle enum will not be added as only two particle name have changed. The code for most of these shapes will be collected from different places (since my Math isn't really good) and put into this utility and slightly modified. ActionBar & Titles So first off all why did I do this when there are already a lot of utilities out there? Most of them are missing optimization and some features. Note that you need to have ReflectionUtils class for this to work. XItemStack Serialize YAML ItemStacks without item versions and the ugly class types. A neat and cross-version utility to serialize and deserialize items. Supports almost all the metas. SkullUtils Get skull with texture from different methods. UUIDs, usernames, URLs and Base64. This might not work if you're using maven. You'll have to add Spigot JAR directly to your dependencies. XEntity Spawn entities from YAML. Supports all entities. Uses XItemStack, XMaterial and XPotion. Supports 1.9+ XBiome Cross-version compatibility for biome names. Also has a few methods to change the biome in a selected area. Special Methods: setBiome(Chunk) - setBiome(Location start, Location end) XMaterial This is the continued version of the previous XMaterial resource. Since the previous developer is currently busy, he agreed that I can continue this project from now on. You'll be able to support all the materials before/after the 1.13 update which completely removed the item data values. While it was a great idea, some developers still want to support older versions. To Those Bending Over Backwards to Support Outdated Versions... I just want to make one thing clear in this thread, please. So let me keep it short. While I agree with the post above, I just find it fun to do this. And some server owners are still using 1.12 And yes, even 1.8 is still used, but you're the developer. You're the one who make the changes happen. If they don't like the combat just tell them to use a plugin like OldCombatMechanics. If you're worried about the performance, this is wrong. 1.12 fixed a lot of bugs and exploits, and performance improvements. The insignificant lag that you're experiencing is because of the new features added. This is completely normal. Since I already coded this. Why not post it here? While this class supports all the versions, I encourage all the developers to use the Material Suggestion feature only and support 1.13 and above versions. So please, do not bring up the discussion about why we shouldn't support outdated versions here. Features: ID (Magic Value) and ItemStack data support. Matching materials names with newer and older names. Support for duplicated names. Support for changed material names in 1.13 and 1.14 (not many of them changed) Support for damageable items. Item and Material parser. Comparing XMaterial with an ItemStack. Material name cleanup for all the methods. A small version checker feature. Java 8 techniques for optimization. Suggestion System for completely newly added materials. (Not completed) This is not related to BlockState, BlockData or MaterialData. You cannot do anything that is related to block data with this. Adding support for every single block's data is craziness. There'll be an independent class released in the future called XBlock. Make sure to add "api-version: 1.13" to your plugin.yml ProtocolSupport Instead of using "1.13" for materials that are newly added in 1.13+ they're now replaced with the version they're added in. It can be checked with getVersionIfNew, getSuggestions and suggestOldMaterialIfNew. The format for suggested old materials should always be: TheLatestMaterialName(DataValueOfTheOldMaterial, AddedVersion/AcceptableOldMaterial, BestOldMaterialSuggestion, "OriginalOldName/Version") Read the list below to understand what I mean by those parameters. Yes like I said before, this material is "newly" added meaning in 1.13 or above. But OriginalOldName is referring to an old name in one of the "new versions" that are older than the latest version if available. Suggestion System Example of how it works: LIGHT_GRAY_GLAZED_TERRACOTTA(8, "1.12", "HARD_CLAY", "STAINED_CLAY", "LIGHT_GRAY_TERRACOTTA", "SILVER_GLAZED_TERRACOTTA/1.13"), DataValueOfTheOldMaterial: glazed terracotta already has split IDs but light gray normal terracotta data value is 8, so we'll use it only if in older versions. AddedVersion: This material was added in 1.12 AcceptableOldMaterial/BestOldMaterialSuggestion: When checking for materials, the names are checked from the last name to the first name. In here, the first name is HARD_CLAY which is a colorless TERRACOTTA with no data value. Second, we have STAINED_CLAY. That is a colored clay with 8 as the data value. Third is LIGHT_GRAY_TERRACOTTA which has split IDs. The last is SILVER_GLAZED_TERRACOTTA. Notice that there's a version added next to it "/1.13" it means this name is NOT a suggested name. It's just another name for the material but in 1.13. Which means the name was changed in 1.14 to LIGHT_GRAY_GLAZED_TERRACOTTA. FISH_BUCKET(0, "BUCKET", "WATER_BUCKET") Fish bucket is a water bucket with a fish in it. So it's better to have a water bucket instead of an empty bucket. GLAZED_TERRACOTTA(ID, "HARD_CLAY", "STAINED_CLAY", "TERRACOTTA") COLOR_DYE(ID, "ITEM", "INK_SACK") ITEM such as cactus and bone meal. Changed TURTLE_EGG from MONSTER_EGG to EGG STRUCTURE_VOID(0, "1.10", "BARRIER/1.9") Originally developers used barrier blocks for its purpose. If you want to write suggestions make sure to post it here! Version Check You might find this unrelated to XMaterial, but it's actually useful in some cases. Added MinecraftVersion enum. These are only the major versions in this case, others are unnecessary. Added isVersionOrHigher, valueOfVersion, getVersion, isSupported and isNewVersion that uses isVersionOrHigher(version) and now it's cached. XMaterial v1.0 Resource Spoiler: Older Versions v1.0 https://pastebin.com/fTZHc0Dm https://pastebin.com/pMnjRyV6 https://pastebin.com/HTweg0X1 https://pastebin.com/sVHmhbhC There are some other features added, but I just forgot to add them to this list. Happy coding. Please report any grammar or format problems. Also, feel free to make a pull request if you can improve the code. Even if it's premature optimization.