{"id":14969655,"url":"https://github.com/eldoriarpg/jackson-bukkit","last_synced_at":"2025-10-24T07:30:16.074Z","repository":{"id":146320555,"uuid":"615003044","full_name":"eldoriarpg/jackson-bukkit","owner":"eldoriarpg","description":"Bukkit serialization done the right way powered by Jackson.","archived":false,"fork":false,"pushed_at":"2024-09-25T16:06:51.000Z","size":831,"stargazers_count":20,"open_issues_count":3,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-09-26T14:24:15.447Z","etag":null,"topics":["bukkit","bukkit-api","jackson","jackson-databind","jackson-module","papermc","spigot","spigotmc"],"latest_commit_sha":null,"homepage":"https://eldoriarpg.github.io/jackson-bukkit/","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/eldoriarpg.png","metadata":{"files":{"readme":"Readme.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE.md","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},"funding":{"github":"RainbowDashLabs","patreon":"eldoriaplugins","open_collective":null,"ko_fi":"eldoriaplugins","tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":["https://paypal.me/hadde"]}},"created_at":"2023-03-16T18:50:02.000Z","updated_at":"2024-08-18T12:36:59.000Z","dependencies_parsed_at":"2023-09-29T03:23:09.327Z","dependency_job_id":"bec536b4-bcdd-4063-b004-410392f07750","html_url":"https://github.com/eldoriarpg/jackson-bukkit","commit_stats":{"total_commits":64,"total_committers":5,"mean_commits":12.8,"dds":0.6875,"last_synced_commit":"c231d55b1c3883462a2d954f893a2aa838563971"},"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eldoriarpg%2Fjackson-bukkit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eldoriarpg%2Fjackson-bukkit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eldoriarpg%2Fjackson-bukkit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eldoriarpg%2Fjackson-bukkit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eldoriarpg","download_url":"https://codeload.github.com/eldoriarpg/jackson-bukkit/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":219866292,"owners_count":16555826,"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":["bukkit","bukkit-api","jackson","jackson-databind","jackson-module","papermc","spigot","spigotmc"],"created_at":"2024-09-24T13:42:10.668Z","updated_at":"2025-10-24T07:30:15.268Z","avatar_url":"https://github.com/eldoriarpg.png","language":"Java","funding_links":["https://github.com/sponsors/RainbowDashLabs","https://patreon.com/eldoriaplugins","https://ko-fi.com/eldoriaplugins","https://paypal.me/hadde"],"categories":[],"sub_categories":[],"readme":"![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/eldoriarpg/jackson-bukkit/verify.yml?branch=main\u0026style=flat-square\u0026label=Building)\n![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/eldoriarpg/jackson-bukkit/publish_to_nexus.yml?branch=main\u0026style=flat-square\u0026label=Publishing) \n\n![Maven Central](https://img.shields.io/maven-central/v/de.eldoria.jacksonbukkit/jackson-bukkit)\n\n![Times wasted](https://wakatime.com/badge/github/eldoriarpg/jackson-bukkit.svg?style=flat-square)\n![Last Commit](https://img.shields.io/github/last-commit/eldoriarpg/jackson-bukkit?style=flat-square)\n[![Discord](https://img.shields.io/discord/718502316940066927?label=Discord\u0026logo=Discord\u0026style=flat-square)](https://discord.com/invite/rfRuUge)\n![](https://img.shields.io/github/languages/top/eldoriarpg/jackson-bukkit?style=flat-square)\n\n![Branches](.github/badges/branches.svg)\n![Jacoco](.github/badges/jacoco.svg)\n\n### [Javadocs](https://eldoriarpg.github.io/jackson-bukkit/)\n\nThis is a module supporting serialization of common bukkit objects and some more on Spigot and Paper servers.\nThe library should always support every version between 1.13 and the latest minecraft version. \nWe do not use any NMS, therefore it should not be required to update this library often.\nIt might work on earlier versions as well, but we do not check for this.\nThe library takes format changes into account between versions. \nIt is therefore safe to read old data on a newer version.\nReading new data on an older version is not explicitly supported.\n\nWe provide two modules for Bukkit/Spigot and one for Paper.\nTo use the full feature set we recommend Paper.\nMake sure to use the Paper module when your plugin is running on paper.\nSwitching from Spigot to Paper will always work, but going back might cause errors.\n\n### Known and implemented changes\n\nThose are the format changes we support when updating to a newer version.\nThe deserializer detect the current used format automatically and will parse it into the requested type.\nWhen serializing the data the currently used serializer will be used. \n\n#### General\n\n- In 1.18 the type of PotionEffect changed from a numeric integer to a namespaced key.\n\n#### Paper\n\n- In 1.16 Paper added the `serializeAsBytes` method to item stacks. This method will be used by default when available.\n- In 1.16 Paper added Adventure. If you haven't shaded it yet, you are now able to serialize Components as Objects.\n- In 1.18.2 Paper included MiniMessages. If you haven't shaded it yet, Components will be serialized using MiniMessages from here on.\n- In 1.19 Paper added an alpha value to `Color`. The value will be automatically added.\n\n## Dependency\n\n**Gradle**\n\n```kts\ndependencies {\n    // Spigot server\n    implementation(\"de.eldoria.jacksonbukkit\", \"bukkit\", \"version\")\n    // Paper server\n    implementation(\"de.eldoria.jacksonbukkit\", \"paper\", \"version\")\n}\n```\n\n**Maven**\n\n\u003c!-- @formatter:off --\u003e\n\n```xml\n\u003cdependencies\u003e\n    \u003c!-- Spigot Server --\u003e\n    \u003cdependency\u003e\n        \u003cgroupId\u003ede.eldoria.jacksonbukkit\u003c/groupId\u003e\n        \u003cartifactId\u003espigot\u003c/artifactId\u003e\n        \u003cversion\u003eversion\u003c/version\u003e\n    \u003c/dependency\u003e\n\n    \u003c!-- Paper Server--\u003e\n    \u003cdependency\u003e\n        \u003cgroupId\u003ede.eldoria.jacksonbukkit\u003c/groupId\u003e\n        \u003cartifactId\u003epaper\u003c/artifactId\u003e\n        \u003cversion\u003eversion\u003c/version\u003e\n    \u003c/dependency\u003e\n\u003c/dependencies\u003e\n```\n\n\u003c!-- @formatter:on --\u003e\n\n## Module Creation\n\nYou can either create the `JacksonBukkit` and `JacksonPaper` module directly or use the builder for easy modification.\nUsage of the builder is recommended.\nBuilder for spigot and paper can both be accessed via the corresponding class.\n\n### Creating a Spigot/Bukkit Module\n\n```java\nObjectMapper JSON = JsonMapper.builder()\n    .addModule(JacksonBukkit.builder().build())\n    .build();\n```\n\n### Creating a Paper Module\n\n```java\nObjectMapper JSON = JsonMapper.builder()\n    .addModule(JacksonPaper.builder().build())\n    .build();\n```\n\nOf course, you can use TOML or YAML or whatever else jackson supports as well\n\n### Difference between Paper and Bukkit module\n\nThe paper module tries to support all features available by paper.\nThe deserializer will automatically detect the current format when a legacy format is used and convert it into the new format when saved.\nTherefore, a config created on 1.15 will contain the legacy map and once teh server is running on 1.16 the byte array will be used instead.\n\nPaper serializes `ItemStack`s to a Base64 encoded byte array instead of using spigots serialization.\nThis will only work on paper servers on 1.16 or newer and not on spigot servers.\nThe builder allows to use spigots serialization on paper servers as well, but this is not recommended.\n\nWhen creating a [paper plugin](https://docs.papermc.io/paper/reference/paper-plugins) the `JacksonBukkit` module is no longer able to serialize `ItemStacks`.\nYou need to use `JacksonPaper` in that case and make sure that you are not using legacy serialization.\n\n| Class     | Paper                                                                   | Spigot         |\n|-----------|-------------------------------------------------------------------------|----------------|\n| Color     | RGB or HEX RGB \u003c 1.19 \u003c= RGBA or HEX RGBA                               | RGB or HEX RGB |\n| ItemStack | legacy Map \u003c 1.16 \u003c= NBT byte array                                     | Legacy Map     |\n| Component | MiniMessage String when MiniMessages is present. Otherwise Json Object. | Nope c:        |\n\n### More customization\n\nThere are some more customizations\n\n#### Color\n\nColors will be read and written to an object containing a value for red, green, blue and alpha (Paper only) by default.\nBy calling `ModuleBuilder#colorAsHex()` you can enable hex codes.\nThis will attempt to read each color as a HEX string with RGBA (Paper) or RGB (Spigot) format.\nIt will also write colors as RGBA (Paper) or RGB (Spigot).\n\n**Warning:** As of now you can use either way, but not both at the same time. Mixing up format will cause errors.\n\n## Supported Classes\n\nWe support all classes implementing `ConfigurationSerializable`. To be precise we support the following classes:\n\n- Vector\n- BlockVector\n- Color (Can be serialized as object or as hex string)\n- ItemStack (Serialized as map for `Bukkit/Spigot`. Serialized as Base64 encoded bytes for `Paper`, when possible)\n- PotionEffect\n- FireworkEffect\n- Pattern\n- BoundingBox\n- AttributeModifier\n- Location\n\n**Additional Support for:**\n\n- NamespacedKey\n- OfflinePlayer\n- Components (Paper only as MiniMessage string)\n- ShapedRecipe\n- ShapelessRecipe\n- Enchantment\n- PotionEffectType\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feldoriarpg%2Fjackson-bukkit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feldoriarpg%2Fjackson-bukkit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feldoriarpg%2Fjackson-bukkit/lists"}