* Start implementing Configurate config system
* More development
* Start migrating to Gson only
* Progress
* Update usage of WebUtils
* Most things now use Gson for JSON
* Allow tests to succeed by using new Gson version
* Use slightly cleaner version for Version deserializer
* Work around older Gson versions without record support
* GeyserCustomSkullConfiguration uses Configurate
* Fix regression in properties get
* New config used in core
* The configuration is gone. Long live the config.
* More changes and migrations away from Jackson
* Improve node ordering when updating configs
* typo
* Better check for ignoring non-configurate configs for considering comment moving
* Ensure metrics UUID is valid
* Initial advanced config
* Remove Jackson; finish config value placements
* Remove duplicate relocate declarations
* Let annotations work
* Renaming to PluginSpecific
* Use global bStats config where possible
* Fix test
* Re-introduce asterisk behavior in configs
* Remove GeyserPluginBootstrap as it's no longer necessary
* Remove old config.yml file
* Update Xbox achievement comment
* Apply suggestions from code review
Co-authored-by: chris <github@onechris.mozmail.com>
* No need to remove values anymore
* Fix: disable bstats relocation on platforms where it is not needed
* ensure it builds
* Update custom unavailable slot comment
Co-authored-by: chris <github@onechris.mozmail.com>
* Update cooldown image
* Logger message for direct-compression still being enabled
* oops
* More explicit RuntimeException message
Co-authored-by: Konicai <71294714+Konicai@users.noreply.github.com>
* Constant for 'system' locale
* Better config JSON encoding (something is broken with Cloudflare; we'll figure it out
* Fix broadcast port default
* Add this file too
* Update configurate branch
* fix build
* Fix: Allow using custom config file on Standalone, add relocation comment
* Move config loading to GeyserBootstrap interface
* Add and rename some config options, add section notes (#5390)
* Add and rename some config options, add section notes
* adjust message
* Update core/src/main/java/org/geysermc/geyser/command/defaults/ConnectionTestCommand.java
Co-authored-by: Eclipse <eclipse@eclipseisoffline.xyz>
* Update core/src/main/java/org/geysermc/geyser/configuration/GeyserConfig.java
Co-authored-by: Eclipse <eclipse@eclipseisoffline.xyz>
* Update ConfigLoader.java
* Update AdvancedConfig.java
* clarify that we're talking about the HAProxy protocol
* rename config option to use-haproxy-protocol
* remove ominous warning sign on xbox auth warning
* adjust wording
---------
Co-authored-by: Eclipse <eclipse@eclipseisoffline.xyz>
* Back to one config file
* Some minor touchups
* Configurate: Sectionification (#5904)
* Init: config sections
* Start on adding tests, move migrations over to ConfigMigrations class
* Get rid of auth section again, rename that one config option, fix mtu migration
* Move custom skulls config options to the bottom of the gameplay settings
* Add more tests
* Rename and migrate proxy-protocol-whitelisted-ips to haproxy-protocol-whitelisted-ips
* Add automatic downloading of the GeyserOptionalPack
* Revert "Add automatic downloading of the GeyserOptionalPack"
This reverts commit 65b96208fb.
* Add more invalid config tests
* Warn about emote-offhand-workaround removal
* Add automatic loading of the GeyserOptionalPack (feature/configurate) (#5964)
* Add automatic downloading of the GeyserOptionalPack
* Warn about including the OptionalPack from extensions when Geyser is already including it instead of throwing.
* Copy optional pack instead of downloading
---------
Co-authored-by: onebeastchris <github@onechris.mozmail.com>
* Remove unused variable
* Start warning users not running Java 21
* Update tests, temporarily remove NumericRanges test
* Remove duplicate advanced section from Geyser dump
* Address some "reviews"
* yeet md5 hash from geyser dump
* Add info about number of resource packs / amount of mappings into Geyser dump
* Re-enable invalid config loading test
* Fix: allow-custom-skulls migration
* Fix test
* Add "enable-emotes" configuration option
* Rename "emotes-enabled" to "show-emotes"
* Only enable integrated pack when optional pack isn't present
* Update integrated pack
* Exclude jackson annotations, remove leftover debug print
* Remove one-time config migration warnings as we don't have access to the logger at that stage
* Throw more detailed descriptive error when loading resource packs from the "packs" folder, add another legacy config test
* Fix NeoForge's fun module conflict
* Re-add warning about moved functionality, fix Geyser-ViaProxy
This reverts commit fbadfa574a.
* oops
* Move GeyserLegacyPingPassthrough to separate thread to avoid Standalone command locking issues
---------
Co-authored-by: Konicai <71294714+Konicai@users.noreply.github.com>
Co-authored-by: chris <github@onechris.mozmail.com>
Co-authored-by: Eclipse <eclipse@eclipseisoffline.xyz>
Co-authored-by: Aurora <auroranova8756@gmail.com>
* More proper workaround for direct connection using Netty 4.2
* Add check for outdated Velocity
* BungeeCord support for Netty 4.2
* Use pooled allocator
* Small cleanup: only one allocator system property check, pin comment to static commit
* Set allocator type on Standalone using netty system property
* Don't mess with allocator, both BungeeCord and Velocity set it globally
* Temporarily remove io_uring support
In order to support io_uring transport after the 4.2 update, we'd need to separately handle 4.1 and 4.2 event loop group creation
* Add compileOnly netty io_uring dependency for Geyser-BungeeCord
* Exclude old incubator io_uring dependency on geyser-standalone
---------
Co-authored-by: Camotoy <20743703+Camotoy@users.noreply.github.com>
* Inventory translators are now part of inventories, try fixing inventory reusing, use NetworkStackLatency hack
* Add debug, re-add force open hack
* don't log to info
* fix debug npe
* Don't set setPending when opening pending inventories, add more delay to re-opening rejected inventories
* Use inventory#getTranslator to hopefully avoid translator/inventory desync
* Minor cleanup
* Update core/src/main/java/org/geysermc/geyser/GeyserLogger.java
* Reuse inventories whenever possible, prevent bedrock inventory id conflicts
* Fix debug logging with arguments, don't attempt to re-use inventory that's currently closing
* Some documentation, include pending inventories in re-use check
* "bad html entity"
* add wayyyy more debugging to container reusing checks
* yeet java id check
* Fixes related to hacky plugins that spam open screen packets
* no clue how this slipped by
* Don't reuse real blocks, yeet Inventory#isDelayed
* Add run tasks and remove useless variables
The benefit of run tasks is that proxies like velocity can be prototyped on without using standalone or a GUI. Thus simplifying the prototyping/fixing process.
* Drop runwaterfall
* Fix: readme not being synched to modrinth
* use new build_number system env var
* also upload bungee/spigot/velocity
* change name
* undo debug mode, oops
* Try to properly check if so_reuseport is available
* io_uring "support"
* comment out io_uring, for now
* Make IO_uring opt-in via `-DGeyser.io_uring=true` flag
* dont include io_uring
* oops - bungee
editing on mobile is hard
* oops - spigot
* oops - velocity
* properly exclude all io_uring on all platforms except standalone
---------
Co-authored-by: Kas-tle <26531652+Kas-tle@users.noreply.github.com>
* Use JiJ inclusion for Fabric/NeoForge to prevent mod conflicts. Further: Don't publish shadow jars to maven.
* Shade and relocate dependencies that don't conform to SemVer on Fabric
* Shade/Relocate dependencies on Fabric to avoid version warnings
* Use relocate function from the build-logic plugin
* This makes `geyser reload` work the same across all platforms. For example, it ensures that we reload the config to the greatest extent possible (with the exception of compression/injection settings). Additionally, this clears up issues where Extensions were previously disabled during reloading - instead, the new Pre and Post reload events allow extensions to reload whatever necessary on their own.
* Fix: ListenerBoundEvent could set `INITIALIZED` to true, even if we did not initialize yet - move that to postStartup() instead.
* only assign INITIALIZED once, and only after the correct listenertype bound.
* Fix /geyser reload on Velocity
* No need to create/init a new injector on Velocity
* No need to warn about "abnormally long startup" on Bungee when we're reloading. And, as on velocity, no need to re-inject
* System property stuff
* Add geyserUdpPort/Address system properties as overrides for pluginUdpPort/Address
* Fix formatting for if-else statements
---------
Co-authored-by: Camotoy <20743703+Camotoy@users.noreply.github.com>
Geyser installations will now get notified when a new Bedrock release is out and Geyser must be updated. The system works similarly to ViaVersion where OPs get a notification of an update when they join. The permission node for players to see update notifications is `geyser.update` and the backing JSON that controls this can be found at https://github.com/GeyserMC/GeyserSite/blob/gh-pages/versions.json. There is also a config option to disable update checking.
This update also fixes modern Paper installations not being able to see colored text logged from Geyser in the console.