{"project_id":"geyser","project_name":"Geyser","version":"2.12.0","builds":[{"build":1255,"time":"2026-10-14T21:51:01.884Z","channel":"default","promoted":false,"changes":[{"commit":"e73fec84356144a7dd9cf62cc2aba0a5f1146263","summary":"Version bumps for Java 26.3","message":"Version bumps for Java 26.3"},{"commit":"9ff131ccfe2af5d7b98ea346b2789c115ecca6cf","summary":"Checkout new mappings, update generated classes","message":"Checkout new mappings, update generated classes"},{"commit":"ad878250aa9e783b900a375306b188017ac581dc","summary":"Update to latest MCPL, fix a bunch of build errors in core, translate new ClientboundSwingAnimationPacket","message":"Update to latest MCPL, fix a bunch of build errors in core, translate new ClientboundSwingAnimationPacket"},{"commit":"570a7ed6e4327fa6d04a7d5bab19580658d1757e","summary":"Some more fixes, write WildernessBoundConverter for older bedrock versions","message":"Some more fixes, write WildernessBoundConverter for older bedrock versions"},{"commit":"454e8945004100f98ad8ec91a5538fd1116f2d7e","summary":"Get gametests running","message":"Get gametests running"},{"commit":"d8b010248944d4343f4792001c473c82c370e38e","summary":"Write hashers and gametests for new data components","message":"Write hashers and gametests for new data components"},{"commit":"b84a32b1ea71a963ef78dbe8e91b779e662d6068","summary":"Update mappings (fix resolvable data components block_transformer and provides_pottery_pattern)","message":"Update mappings (fix resolvable data components block_transformer and provides_pottery_pattern)"},{"commit":"565582d2cc90f387841ea700df518d0836f7e4d4","summary":"Fix explorer maps, I think","message":"Fix explorer maps, I think"},{"commit":"77ddcd3afbd4621a5ae092118f3343c661c6177f","summary":"Add entity definitions for cushions and poplar boats, temporarily disable 2 gametests pending MCPL updates","message":"Add entity definitions for cushions and poplar boats, temporarily disable 2 gametests pending MCPL updates"},{"commit":"af604fd547e13344e2d8d5c27c0132add534e6e1","summary":"API fixes for minecraft:swing_animation component changes","message":"API fixes for minecraft:swing_animation component changes"},{"commit":"9b19c7302a02f8b70b4104ba13dc4a8fccb93fa0","summary":"Update to latest MCPL, re-enable disabled gametests","message":"Update to latest MCPL, re-enable disabled gametests"},{"commit":"8668641eb3fd13b642b17a27828c743d86e994f0","summary":"Implement cushion colour metadata","message":"Implement cushion colour metadata"},{"commit":"34eefae6b8292e405c5f77fc2fc31077884ce079","summary":"\"Fix\" lerping of move/positon sync packets, fix disconnect when accepting server teleport","message":"\"Fix\" lerping of move/positon sync packets, fix disconnect when accepting server teleport"},{"commit":"4f1d47e851c469426835d5021e65a58da60d8da4","summary":"Fix instrument hasher (new durability_damage key)","message":"Fix instrument hasher (new durability_damage key)"},{"commit":"c6e2afb005ba6af787b3cf199d92846b4570196d","summary":"Implement data driven pottery sherds (except for spigot world manager)","message":"Implement data driven pottery sherds (except for spigot world manager)"}],"downloads":{"bungeecord":{"name":"Geyser-BungeeCord.jar","sha256":"289423430c3e59fa9a1a8521e942f2aa457b51865a1feb69c13da198589422a2"},"fabric":{"name":"Geyser-Fabric.jar","sha256":"b1484c4ecbd601cc812cabf0f0e2de47b3fd0a8bb5c0ef1099b1051a1be75c9d"},"neoforge":{"name":"Geyser-NeoForge.jar","sha256":"f4a946f02327b34df749f769df932a6af72db080d74c05fc5520dce7e02896a5"},"spigot":{"name":"Geyser-Spigot.jar","sha256":"f9142654d707a8f386dcc3969de2074737d57e4e03f85e0fc64aafbf8f6c0411"},"standalone":{"name":"Geyser-Standalone.jar","sha256":"7c29fa84119dc3a4fefbfa5dd38a0d567a2202c4817e05c8264dc5743f8cfd8b"},"velocity":{"name":"Geyser-Velocity.jar","sha256":"bfaeb92ae7914a57ffb8898b51d8bb4ebfe25091e84f74aa5ec38dd6428249be"},"viaproxy":{"name":"Geyser-ViaProxy.jar","sha256":"b504e87f85ceea32911f7391d15fa708c8e68e0cf7007aafbfeb14b7085ae3b0"}}},{"build":1256,"time":"2026-10-14T22:26:30.658Z","channel":"default","promoted":false,"changes":[{"commit":"fc2170c97e088f910ba52e519ae3180e068af333","summary":"Disable modrinth publishing task for gametests","message":"Disable modrinth publishing task for gametests\n\n Also mention that TLS certificate paths don't need to be relative to Geyser's config folder"}],"downloads":{"bungeecord":{"name":"Geyser-BungeeCord.jar","sha256":"bc44a2fe28758182779c690acfff19cc2a9f45349dd6b73365cc899b2e62a6fb"},"fabric":{"name":"Geyser-Fabric.jar","sha256":"62ecfab2d3ee2e927b77e8632056c3c5ba3f85936fc614661019362960528d9f"},"neoforge":{"name":"Geyser-NeoForge.jar","sha256":"7bf8bff3a05316513cb5ae6d5f9a3b9549b6a4ffd30cb7667a7a3fce1521cb49"},"spigot":{"name":"Geyser-Spigot.jar","sha256":"c61720bbea714a704d9b76a2f1e9a7ac91271e48101ec745ccd668fda9514015"},"standalone":{"name":"Geyser-Standalone.jar","sha256":"e31619e6c0fdd0e4a06d547ff476fe6bed23d0e8e5cc56479846ec80bc2a5e77"},"velocity":{"name":"Geyser-Velocity.jar","sha256":"15b2bf8e025a46949a02bc3f6829667faa14938e8b6dbf09fc638ba1cfd3aae3"},"viaproxy":{"name":"Geyser-ViaProxy.jar","sha256":"a3d2949c2fe38e06e324be0267381fbb7ddb93cf120e70ed5cb126e49b62d62d"}}},{"build":1257,"time":"2026-10-15T13:51:37.060Z","channel":"default","promoted":false,"changes":[{"commit":"0a966f7439bb6638e78e75f9f73ab45671efdf74","summary":"Fix: players' skins not applying on 26.50/26.51 (#6725)","message":"Fix: players' skins not applying on 26.50/26.51 (#6725)\n\nsendSkinPacket sent a PlayerSkinPacket for players that are listed in the tab\nlist, which no longer applies a skin since 1.21.130 and is still broken as of\n26.51. Unlisted entities (NPCs, skulls) already work again because they go\nthrough the player list instead (5219c5a), so route listed players there too.\n\nResolves https://github.com/GeyserMC/Geyser/issues/6721\n\nCo-authored-by: Auri <auroranova8756@gmail.com>"}],"downloads":{"bungeecord":{"name":"Geyser-BungeeCord.jar","sha256":"54c5ad9d5b5b38ca51d533b3e68f30a5d7a229540269c86b76de954ebfb148f1"},"fabric":{"name":"Geyser-Fabric.jar","sha256":"ab1a1554e51477ee999dc0d9364151580dbccf20ca8f01e959a65a5cb3a05e82"},"neoforge":{"name":"Geyser-NeoForge.jar","sha256":"31acd23334887d84070285a165e890b8b475327f3fa90aca9bb750aafea05927"},"spigot":{"name":"Geyser-Spigot.jar","sha256":"1b8adf9174d52c4e15bb3474faff5091fbd802005bbbaa3251dcfed7930c9871"},"standalone":{"name":"Geyser-Standalone.jar","sha256":"b3334079c80c31ec3dd8f30a79d8051329ae53d944d0e8e81cc589772ae01e32"},"velocity":{"name":"Geyser-Velocity.jar","sha256":"baf0a66f824068520cddbeb999af7b295b4046d14fe13b5fb4f0b9cac3b34413"},"viaproxy":{"name":"Geyser-ViaProxy.jar","sha256":"8a444f09c6436884f5915239aba80abd4f3ed69af785bb9b97370c98168f3939"}}},{"build":1258,"time":"2026-10-15T14:02:54.562Z","channel":"default","promoted":false,"changes":[{"commit":"b7bdbd30b1cd7f4f11142904d38a604c0952d09a","summary":"Merge pull request #6776 from eclipseisoffline/waypoint-cache-cleanup","message":"Merge pull request #6776 from eclipseisoffline/waypoint-cache-cleanup\n\nRemove some unused code from WaypointCache"}],"downloads":{"bungeecord":{"name":"Geyser-BungeeCord.jar","sha256":"be59d18efeb2b48cacc2574a2ff1e2a0905b88f283e2bd10aff6fe17f97fe550"},"fabric":{"name":"Geyser-Fabric.jar","sha256":"8d4b1d3a60054de420af4dd6e289f9f08d2e76b5d77817596a772c2a8b7cff16"},"neoforge":{"name":"Geyser-NeoForge.jar","sha256":"76b983a6b827187ab19117fcabf02b312ca7f5fa4f5c6e604a35a65795c06d38"},"spigot":{"name":"Geyser-Spigot.jar","sha256":"585eb449dbdaef09691433f84d29a5c557c3a27effc40c6d50b245725dc91b41"},"standalone":{"name":"Geyser-Standalone.jar","sha256":"34e3dcd0799c4ab896142d8074b5daa5dcd3cca3d43f769d36a0b5f514ce0104"},"velocity":{"name":"Geyser-Velocity.jar","sha256":"39711a754914e326520446fb07e2d62bb8400719f23f95af1ccd8de24cecefa8"},"viaproxy":{"name":"Geyser-ViaProxy.jar","sha256":"95552e22406c4a3b8d6ca0bf122f36eea025b2735a15d3cb1128d673243399b5"}}},{"build":1259,"time":"2026-10-16T14:38:07.024Z","channel":"default","promoted":false,"changes":[{"commit":"0e94972f1cdf08f2a4f24974ff3e94f112d9d60a","summary":"Add Item#javaIdentifier for extensions (#6781)","message":"Add Item#javaIdentifier for extensions (#6781)"}],"downloads":{"bungeecord":{"name":"Geyser-BungeeCord.jar","sha256":"13fc2b567fbdaa381e8ffc34ebb1d7db1167d5646a1278d2269dae401a7e9f1b"},"fabric":{"name":"Geyser-Fabric.jar","sha256":"4a8b0629eadd528bc85a4a0f470c34a5ab336f3fe33ab1fbdca6132e32edb6e6"},"neoforge":{"name":"Geyser-NeoForge.jar","sha256":"1f9599a79d9c4b18f50a4063947fa1aff09a18d17614fe5bc50ad15b955af8b9"},"spigot":{"name":"Geyser-Spigot.jar","sha256":"79ec9a7e6aba1ff0d401c0c3f052297c9c339b3958bacb3537c5a725be60c172"},"standalone":{"name":"Geyser-Standalone.jar","sha256":"55383bf621a998dacff4f21f0f6b32ffa3219a9e8ca327d09648aaaf3d7ba0ab"},"velocity":{"name":"Geyser-Velocity.jar","sha256":"f8c7dc9f8463a20da2ad49a33acf265351235e1d222cc2cda1aef7c836ae2d33"},"viaproxy":{"name":"Geyser-ViaProxy.jar","sha256":"cf95c9dcedf1e13ed53ade6a8f60e801278a3f22d385b0f404d61492a9671e66"}}},{"build":1260,"time":"2026-10-16T20:52:13.723Z","channel":"default","promoted":false,"changes":[{"commit":"714ed8fa7557f39635f088a1463e53d00d2d6621","summary":"Add error log with link to blog post when NetherNet is disabled (#6787)","message":"Add error log with link to blog post when NetherNet is disabled (#6787)\n\n* Add error log with link to blog post when NetherNet is disabled\n\n* Remove mention of Bedrock version"}],"downloads":{"bungeecord":{"name":"Geyser-BungeeCord.jar","sha256":"372b6cf294590c200f5ad7914e9dcfa79822503e833160df3155ac60cc53e693"},"fabric":{"name":"Geyser-Fabric.jar","sha256":"4dd55f6a41821b74a7774374e5b9bff4f2a531eb4dd213fa30b7fdc5631faa47"},"neoforge":{"name":"Geyser-NeoForge.jar","sha256":"b00e389ee9e8b84cd642739bdd6989c7be8d6e50f1d33571e4cb47f4aa6d0344"},"spigot":{"name":"Geyser-Spigot.jar","sha256":"1e06ab910248f2df878649c99a76f020c88ba16cec993b776ed1c3c3abd5c68a"},"standalone":{"name":"Geyser-Standalone.jar","sha256":"4c0fed8d7cdb5eb8de9fcddbf416a4316be870a3af818d2492cbc4884a178fd0"},"velocity":{"name":"Geyser-Velocity.jar","sha256":"b6a2b1c30f6c745cbb124d3167b3218ff14db0f4536277e38c1055b7573d7af1"},"viaproxy":{"name":"Geyser-ViaProxy.jar","sha256":"44ea7367059bbd34161577f51bed05c77ebeabf54ec0d5567ff794379e7d9c67"}}},{"build":1261,"time":"2026-10-16T21:06:23.359Z","channel":"default","promoted":false,"changes":[{"commit":"534d13765b6e82bf58de921cd28ea1a1ec8f2015","summary":"fix: held items & gui icons not being dyeable outside of leather & wolf armor (#6778)","message":"fix: held items & gui icons not being dyeable outside of leather & wolf armor (#6778)\n\n* fix: held items & gui icons not being dyeable outside of leather & wolf armors\n\n* refactor: simplify to using `translateDyedColor` in `translateComponentsToBedrock`\n\n* fix: private not protected field\n\n* refactor: move horse & wolf armor to Item"}],"downloads":{"bungeecord":{"name":"Geyser-BungeeCord.jar","sha256":"07018ebd090af77bb65e1cbc5f5ebbfc3ebb6aef974125833a66347f90a0bbf7"},"fabric":{"name":"Geyser-Fabric.jar","sha256":"90510efafaeaef3e40852b8e1fc1ace1bc31a00032a997a27732c7dd6766ff69"},"neoforge":{"name":"Geyser-NeoForge.jar","sha256":"1b3ea345ebd47f400299be9d309bdfa87377cc433f9c0cb24291fb13b365f5e0"},"spigot":{"name":"Geyser-Spigot.jar","sha256":"5f9ef00d19005353fc02c063fc9c9e607b28346b77b2e87c4960725d35999310"},"standalone":{"name":"Geyser-Standalone.jar","sha256":"5e02476e22d87039f5c76c8a69cf04b25332270d6641d025f640d687b2651b1f"},"velocity":{"name":"Geyser-Velocity.jar","sha256":"0df862a86575c7026c86b3ae58b614e5ac8b388816e0f7eb42daf4e2d8c3f82b"},"viaproxy":{"name":"Geyser-ViaProxy.jar","sha256":"7a33387267d5eb5894e9e7f34e9fef992a8aba1bbaa5af5347162ad7d977b08e"}}},{"build":1262,"time":"2026-10-16T21:24:40.512Z","channel":"default","promoted":false,"changes":[{"commit":"f08128fc2d4aee2253f241a40af2fd95f693f85c","summary":"Fix: only freeze registries at the end of configuration phase, ensure registries without data are frozen (#6786)","message":"Fix: only freeze registries at the end of configuration phase, ensure registries without data are frozen (#6786)\n\n* Fix #6782: only freeze registries at the end of configuration phase, and ensure registries without data are frozen\n\n* Replace JavaRegistryReader.Context#session with JavaRegistryReader.Context#locale\n\n* Whoops\n\n* Split Java registry freezing and binding\n\n* Fix: externalTitle in dialog always present\n\n* Fix: allows accessing \"unbound\" entries unsafely"}],"downloads":{"bungeecord":{"name":"Geyser-BungeeCord.jar","sha256":"32bdf7e96c547a9138fbd4f44524cbe6a17e34f9862c23002fa1927bd3352378"},"fabric":{"name":"Geyser-Fabric.jar","sha256":"973653ed1e3a3e13ea0fd210fec7252dd53917f19f68806758a33761850adfe0"},"neoforge":{"name":"Geyser-NeoForge.jar","sha256":"a42eee20362d0c2582dab172c7c67ba33dff9d46e11585df950bb52c301a04db"},"spigot":{"name":"Geyser-Spigot.jar","sha256":"9f0efc83d1ece6f77552c573930431f08a760fa5c3eb02528c584fc291d44f92"},"standalone":{"name":"Geyser-Standalone.jar","sha256":"0a9accdc2beed90d08b9801b2f91cd131e49519bc316808ba369c1cb32a7a5e9"},"velocity":{"name":"Geyser-Velocity.jar","sha256":"8d331a362bc35dfbd3096b5bf7ef06e2af82ef8c7d939511f3478ebfe2f952bc"},"viaproxy":{"name":"Geyser-ViaProxy.jar","sha256":"48a45d91027809e51b59baa4ac0f04c4123c7123837bcec489151337e3461957"}}},{"build":1263,"time":"2026-10-17T09:35:17.178Z","channel":"default","promoted":false,"changes":[{"commit":"5685e10a2f8d3ac3f7cc7458b5cd3a58efa137f4","summary":"Fix: never try to access DIMENSION_TYPE registry outside of GAME state (#6790)","message":"Fix: never try to access DIMENSION_TYPE registry outside of GAME state (#6790)"}],"downloads":{"bungeecord":{"name":"Geyser-BungeeCord.jar","sha256":"607310bca05de7f404a36e3ec1f28462db2ea7a4ad41503b4841cbc98b119bae"},"fabric":{"name":"Geyser-Fabric.jar","sha256":"43f9b841fd1cd60a702c622bff8348cc4691cd17ab8f2a259a4c1fbee428eaa8"},"neoforge":{"name":"Geyser-NeoForge.jar","sha256":"6278689f5e64c599a0c52cc515c3bacdaf405a1ad6768033ea4b99dbda0c7f7f"},"spigot":{"name":"Geyser-Spigot.jar","sha256":"44b4f0d940fe8964a4adb6db6bc4e8374bc8c5736b087a65a24fa6ec2ceb6f68"},"standalone":{"name":"Geyser-Standalone.jar","sha256":"24da1b0badf752890507728583eeced657a6913ffd07461cf8f7a69eca756a54"},"velocity":{"name":"Geyser-Velocity.jar","sha256":"f04cb787529b731ed5a1ab4797ee49bb5192c9ccec5217bfed2f368723036043"},"viaproxy":{"name":"Geyser-ViaProxy.jar","sha256":"89371f000f65f309b9709c96aff582601493b64a43d58291cb05d5bf3b228bce"}}},{"build":1264,"time":"2026-10-17T15:26:30.905Z","channel":"default","promoted":false,"changes":[{"commit":"8d7e42503cf30dbdceb12555aa08ea09a16c7925","summary":"Fix: verify downstream is not null before checking its state (#6794)","message":"Fix: verify downstream is not null before checking its state (#6794)"}],"downloads":{"bungeecord":{"name":"Geyser-BungeeCord.jar","sha256":"d5d1fdbfadb2be00d190946c9c38a7fb0dadc2d953ccd1ab8df05ffed2a60eaf"},"fabric":{"name":"Geyser-Fabric.jar","sha256":"b7fec78d32013ed30b4dddf14aeb228af79d8b93ca652991ab3c8e0b240d1c54"},"neoforge":{"name":"Geyser-NeoForge.jar","sha256":"21b134817bcee6b3a56bba3e603f77cba9a05ef007bb53b41540c4900899b024"},"spigot":{"name":"Geyser-Spigot.jar","sha256":"7299353d42dd7587ed65341b0064f09a925eb910d04a18b2990cfb6ba979626c"},"standalone":{"name":"Geyser-Standalone.jar","sha256":"b4ecc3bec2206781013b58350955aedf63ca29e70637d476c92835a3214ff2fd"},"velocity":{"name":"Geyser-Velocity.jar","sha256":"8df29897490a4234bd636ccc1be9e867b1b87701b800d214b4dfdacd14e2d282"},"viaproxy":{"name":"Geyser-ViaProxy.jar","sha256":"5c14fdf6a9f2bc5a3dbcb58ee8aee7a26c68465b5f34359e104117ff1a1619f0"}}},{"build":1265,"time":"2026-10-18T11:02:15.849Z","channel":"default","promoted":false,"changes":[{"commit":"02dbfaccb8be68c47c176c96c24bdbddb472b375","summary":"Register a BlockState for every state of a non-vanilla block (#6789)","message":"Register a BlockState for every state of a non-vanilla block (#6789)"}],"downloads":{"bungeecord":{"name":"Geyser-BungeeCord.jar","sha256":"a9d4812db00b45fb4ccbdb553ac7de13f0acf97804cf3cdc506cdeba27265ec6"},"fabric":{"name":"Geyser-Fabric.jar","sha256":"594aa649e60132050137534d22fa42eec79219e97c46463c93a64ebd1d04791b"},"neoforge":{"name":"Geyser-NeoForge.jar","sha256":"c8e950369a951100ee5d5ae9dc3aa738483282e3ebacf4cc8cdf9076ac118d4c"},"spigot":{"name":"Geyser-Spigot.jar","sha256":"7b4054c4792f76b34ce88c43871555c5e9774898ff8d1c269e4f0b39c758eba2"},"standalone":{"name":"Geyser-Standalone.jar","sha256":"3e235b5112110665a53ed3b42c0b8d514021c50184c01380aa5b01d52ee1f636"},"velocity":{"name":"Geyser-Velocity.jar","sha256":"32f04b02378c5c71ca496a88b45b6c607774f99f8b0b9febeb0914c7e6b73ab7"},"viaproxy":{"name":"Geyser-ViaProxy.jar","sha256":"59047f77a66b28f6e5e2ecdd0e45e527a3fa96c8f5c5f3c33d507db2e8e8475e"}}},{"build":1266,"time":"2026-10-20T13:16:55.728Z","channel":"default","promoted":false,"changes":[{"commit":"b886193ee7bd86d661d5348b5abf8f60c9e8cae0","summary":"Locale-independent networked registry parsing (remove `JavaRegistryReader.Context#locale`) (#6806)","message":"Locale-independent networked registry parsing (remove `JavaRegistryReader.Context#locale`) (#6806)\n\n* Remove JavaRegistryReader.Context#locale\n\n* Update Javadoc\n\n* Update Javadoc pt 2\n\n* More session-independent code\n\n* Rename IMessageTranslator to TextTranslator, add Javadocs"},{"commit":"87c9c597b4f3ed6039a2394f5e47ef4692de71f7","summary":"Fix: use HeterogeneousNbtList util to properly parse sign text (#6783)","message":"Fix: use HeterogeneousNbtList util to properly parse sign text (#6783)"}],"downloads":{"bungeecord":{"name":"Geyser-BungeeCord.jar","sha256":"ab9bcae4a7bbbed0e7985f74d0e51316b51b51726d76a0310b452227040837dd"},"fabric":{"name":"Geyser-Fabric.jar","sha256":"3ebe90eb81b53bae0b415ca86c879a6fda6322dc85bc090db1298965cc1bad66"},"neoforge":{"name":"Geyser-NeoForge.jar","sha256":"4da6db8ba8a5d06158640780f9d4719e2aff56be6cbea7d11890257a2310d62c"},"spigot":{"name":"Geyser-Spigot.jar","sha256":"861ebb00626f0ea0d0444206078a84311d87c959ae1ecea5b798a6a9542e5813"},"standalone":{"name":"Geyser-Standalone.jar","sha256":"7ef39c11ca8c73b7fb5566b4d9c63c94316247e64b38c2cf25bffbf3e87916f5"},"velocity":{"name":"Geyser-Velocity.jar","sha256":"04091e330cc8623cd4eaccb430a4bb8913ee4b9c5d0a5260f67df536075eb4aa"},"viaproxy":{"name":"Geyser-ViaProxy.jar","sha256":"d3f5a1ddc370a20946546362afd7c240879479af3e6c46ec4d5cbf0426cb58e1"}}},{"build":1267,"time":"2026-10-20T15:08:56.724Z","channel":"default","promoted":false,"changes":[{"commit":"777434cf9c287d459552ee9e0556821eb088608d","summary":"Update NetherNet to network 2.0.0.CR6: STUN discovery, one advertise list, NetherNet join addresses (#6808)","message":"Update NetherNet to network 2.0.0.CR6: STUN discovery, one advertise list, NetherNet join addresses (#6808)\n\n* Find the public address for built-in signaling through STUN, set with -DgeyserStunServers\n\n* Bump network to 2.0.0.CR6, with the protocol and libdatachannel-java it needs\n\n* Ask Google's STUN server too, in case Cloudflare's is blocked\n\n* Set NetherNet's log level with nethernet-debug or -DgeyserNetherNetLogLevel, its own logs included, in every signaling mode\n\n* Log why built-in signaling could not start\n\n* Share one advertise-addresses list and stun-discovery switch between both signaling modes\n\n* Override stun-discovery with -DgeyserStunDiscovery\n\n* Read the join address with Protocol's JoinAddress\n\n* Write the NXS operator link to a file instead of the log\n\n* Bump network and libdatachannel-java, whose natives now load on Alpine, EL9 and macOS 11\n\n* Print what each signaling mode advertises with geyser nethernet advertised\n\n* Add what each signaling mode advertises to the dump\n\n* Say in the config that players reach the NetherNet UDP port directly, so it needs forwarding\n\n* Feature: Allow setting any Geyser config value from environment variables\n\nExample: `GEYSER_BEDROCK_PORT` etc\n\nGenerated by Claude Code (Opus, 5.5), manually reviewed and tested\n\n* Bump network, which names the player that could not connect over NetherNet, says when a proxy needs a login and runs on older Paper builds\n\n* Log why registering with the external signaling service failed, not just the exception's type\n\n---------\n\nCo-authored-by: onebeastchris <github@onechris.mozmail.com>"}],"downloads":{"bungeecord":{"name":"Geyser-BungeeCord.jar","sha256":"6323b1ed14af97ecf79757c02a00e7ed2b1f6aa75971122eb4d1b0988e0f59a2"},"fabric":{"name":"Geyser-Fabric.jar","sha256":"ed42dc22b457a670cf5c8a6b7cdb6580bd21ada9182ab4d5ea3f1cf1ac7bb856"},"neoforge":{"name":"Geyser-NeoForge.jar","sha256":"e42b40b9018741746650a3329cbec93d5e6becdc74abdf376847e49ffee419fc"},"spigot":{"name":"Geyser-Spigot.jar","sha256":"70e4653cd69c771dc456c20d7c909d3ce1542114981023c9e95ea3dc2edd3648"},"standalone":{"name":"Geyser-Standalone.jar","sha256":"51b25903e71d470eda13d8ebcfa8c95ef465483e563a88b00ba605081e87bdab"},"velocity":{"name":"Geyser-Velocity.jar","sha256":"5ae8fc19790f28d9e779882713602a645ff3f7ee3389ac355209473a9aa07798"},"viaproxy":{"name":"Geyser-ViaProxy.jar","sha256":"f9568bef157ed04b66f6f72e9feab1b3ea025807d5bc55e6d2a6dab237dd7434"}}},{"build":1268,"time":"2026-10-21T20:08:02.290Z","channel":"default","promoted":false,"changes":[{"commit":"d14f204635dceb37f2bfaf87cc3b733bc4f1e1eb","summary":"Add new GeyserIntegratedPack.mcpack (#6815)","message":"Add new GeyserIntegratedPack.mcpack (#6815)"}],"downloads":{"bungeecord":{"name":"Geyser-BungeeCord.jar","sha256":"27d0df56f7caa921c09b491f279f91e3958801f2c0c265dc81dec79aaa69d6db"},"fabric":{"name":"Geyser-Fabric.jar","sha256":"10463a27a9d293c9d3971e5248803f8d976692a0270c956016a46ec2c148df3d"},"neoforge":{"name":"Geyser-NeoForge.jar","sha256":"059f61f8f15b9edb58523e0fc45e14487d3f71eaac960aaaf25fa124b2899a62"},"spigot":{"name":"Geyser-Spigot.jar","sha256":"5c9dc02183588a249e42137f7429e7708928fd5c3bf107b1753f0e1a2f034404"},"standalone":{"name":"Geyser-Standalone.jar","sha256":"87c8d732c4772b813f65b245acdabf9852af3632854116a312a132568141a348"},"velocity":{"name":"Geyser-Velocity.jar","sha256":"b763b6f3ddf6edd7f86ff599c4660b02a4e318d2647b721d925c0a68d0f9c3ed"},"viaproxy":{"name":"Geyser-ViaProxy.jar","sha256":"b46030f34f9e9c4868674a02ba7f79b20da2c703116109b209761b2c18cd1227"}}},{"build":1269,"time":"2026-10-22T18:29:22.332Z","channel":"default","promoted":false,"changes":[{"commit":"2565dc1c285ee259772343bbd2c806bbba08eb68","summary":"Switch to pull_request trigger for non-preview PRs (#6816)","message":"Switch to pull_request trigger for non-preview PRs (#6816)"},{"commit":"14c1cc4159e5ea8e096bdf2abada8a004dcd6d23","summary":"Fix: Signaling on older paper versions (#6817)","message":"Fix: Signaling on older paper versions (#6817)\n\n* Shade netty-codec-http on Spigot so built-in signaling can start\n\nThe Spigot shadow jar excluded every io.netty module except haproxy, which\nstripped netty-codec-http and caused a NoClassDefFoundError for\nio/netty/handler/codec/http/HttpMessage when starting built-in signaling.\n\nClaude-Session: https://claude.ai/code/session_012rubsBery89Z2pziHbMejL\n\n* Fix built-in signaling on Paper 1.21.4\n\nAlso prints the full stack trace in debug mode if built-in signaling could not start.\n\n* Start the NXS provider's event loop without Netty 4.2-only classes\n\nPaper 1.20.5/1.20.6 bundle Netty 4.1.97, which has no MultiThreadIoEventLoopGroup, so external signaling\nfailed with a NoClassDefFoundError there.\n\n---------\n\nCo-authored-by: Camotoy <20743703+Camotoy@users.noreply.github.com>"}],"downloads":{"bungeecord":{"name":"Geyser-BungeeCord.jar","sha256":"ebcd0cd82bead1bf20ed9ef1ab5b252afd19a4b942bd409f5115b1296fe8bbf3"},"fabric":{"name":"Geyser-Fabric.jar","sha256":"08919ee37bf01af6023fe9fad55d0057ac784ab1af6f749bbf32639223b0c830"},"neoforge":{"name":"Geyser-NeoForge.jar","sha256":"61103bc9446ff7e1d9120c204e2956d22b919446a97bf1974e770c48b6e49524"},"spigot":{"name":"Geyser-Spigot.jar","sha256":"6537e1fb6ef1e115172653ca42c0f9c2e38d07ca2415142bb5e0fb9aeecd1e07"},"standalone":{"name":"Geyser-Standalone.jar","sha256":"9f12a792b680bddf4f15d7947118cc18b9fbefa8e36281c43a4e5eacc8e2461b"},"velocity":{"name":"Geyser-Velocity.jar","sha256":"c9a5efbedf8ba79da0c692c47bfdcc42a443bdb49c0b47236881306bd3db1d74"},"viaproxy":{"name":"Geyser-ViaProxy.jar","sha256":"8556785f8b4c003ae33ac685146163b64429bfef5805b0c23e02b6f6cac7554e"}}},{"build":1270,"time":"2026-10-23T22:49:56.407Z","channel":"default","promoted":false,"changes":[{"commit":"278805eb11ff7532b35657f1878a05fb598e6124","summary":"Automatically download integrated pack during build (#6819)","message":"Automatically download integrated pack during build (#6819)\n\n* Download GeyserIntegratedPack.mcpack during build if missing\n\n* Apply remaining changes\n\n* Fix integrated pack download review feedback\n\n---------\n\n* Delete core/src/main/resources/GeyserIntegratedPack.mcpack\n\n* Update download source URL to Geyser\n\n* Correct integrated pack downloads API URL\n\n* Use Geyser downloads API for integrated pack\n\n* Correct integrated pack downloads API endpoint\n\n---------\n\n* Add GeyserIntegratedPack.mcpack to .gitignore\n\n* Capitalize cannot\n\nCo-authored-by: rtm516 <rtm516@users.noreply.github.com>\n\n---------\n\nCo-authored-by: rtm516 <rtm516@users.noreply.github.com>"}],"downloads":{"bungeecord":{"name":"Geyser-BungeeCord.jar","sha256":"d31f65a5157b42ddb5d6c2f50c2727601e3dc02a8f734cec59570210398c58f2"},"fabric":{"name":"Geyser-Fabric.jar","sha256":"b26801472476cebc697563af8386baa268ab8a1207b1e5117b7983c7f37999ef"},"neoforge":{"name":"Geyser-NeoForge.jar","sha256":"b8efcec00e0f268e39be60461713d01186939ca0c70037541d45ba323cfb068b"},"spigot":{"name":"Geyser-Spigot.jar","sha256":"6acaff23e487c26603fbddd126a2c691253e616138c78b97a27fd8aae5e701ee"},"standalone":{"name":"Geyser-Standalone.jar","sha256":"ae06830c47719e29ad34fbfb4692597b60fe22460e4ccb6ba1ab113143102f04"},"velocity":{"name":"Geyser-Velocity.jar","sha256":"88b6d40e5c31f0f345d3081d1c3017be4a2bf17afb3ee3840319586b9c4bfc2d"},"viaproxy":{"name":"Geyser-ViaProxy.jar","sha256":"9c67744fc209d5678b254f5991557958ac19abd60ef84ae22c51a2df8190dc63"}}}]}