* 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.
* Use multiple channels at startup, fix the occasional issue of all players getting disconnected.
* Standardized shutdown periods and refactored network handlers for improved consistency.
* tiny fix
* Let's use the system property
---------
Co-authored-by: chris <github@onechris.mozmail.com>
* Allow changing the broadcasted port using a system property. This may be needed if the port Geyser runs on & the port Bedrock players connect on do not match - e.g. due to port forwarding/different routing.
* initial stab at making the broadcast port an (unsafe) config option
* Automatically set broadcast port to be the bind port unless manually overridden
* Warn about broadcast port mismatch
* Use 0 instead of -1 as indicator to broadcast the port geyser is running on
* Add fetching MC versions and Console from the extensions API
* Address reviews, expose custom MinecraftVersion interface
* Rename of McVersion -> MinecraftVersionImpl; proper nonnull annotation
* fluent consoleCommandSource(), change MinecraftVersion#name() to versionString()
* Javadocs adjustments
* Create impl package and move `MinecraftVersionImpl` there
* api version bump
---------
Co-authored-by: onebeastchris <github@onechris.mozmail.com>
Revert to spectator_viewer instead of the native Bedrock spectator menu. While it looks uglier - e.g. it's showing health/hunger bars; it allows opening menus. It'll also be needed for entity spectating, since clicking on things isnt possible in bedrocks spectator mode
* Gracefully handle invalid stone cutter recipes
Further various little fixes:
- bump source version in AP to 17 to silence build log spam
- remove unneeded close() on auto-closable resource
* lookup players by uuid instead of name
* Fix: look up Players by UUID for permissions, dont throw if a player can't be found (e.g. disconnected)
* use api method
* bump cloudburst's netty-transport-raknet
* bump cloudburst protocol/codec/connection bump
bump netty due CVE-2022-41881
Changes in cloudburst libs:
- uses netty 4.1.101.Final
- bumps netty-transport-raknet which fixes https://github.com/CloudburstMC/Network/pull/36, an issue where some connection attempts did not work
* Add support for loading locale overwrites. Any lang files in this new folder will be appended to the main lang file when loaded.
* A locale will no longer attempt to be downloaded and loaded if it already is loaded. Previously a lang file was reloaded everytime a player joins.
* Switch some io bits to nio
* formatting fixes
* Update core/src/main/java/org/geysermc/geyser/text/MinecraftLocale.java
* Rename isLocalLoaded to isLocaleLoaded
* Rename overwrites to overrides
* Catch separate exceptions when parsing locale file. Similar to previous implementation
* Add //no-op to try/catch
* Apply suggestions to fix issues that might arise with the Norwegian locale
* Properly resolve override locale path for nb_no
* Yeet temporary fix - addresses @Camotoy's review
* Catch IOException properly
---------
Co-authored-by: onebeastchris <github@onechris.mozmail.com>
- Port out of bounds checking
- Proper encoding of ip's to check
- Don't assume "cache" response is nonnull; it is null when there's an error
- Send users the error message that we get when server is unreachable
* Catch unknownhostexception to avoid network errors when using legacy ping passthrough
* Catch UnknownHostException separately, log a warning but no stacktrace
* Fix collision problem,the wide for bedrock is 0.5 but for java is 0.5625 when only one side connect.
* Fixed an issue where the collision box was abnormal at the corner when two sides of the glass panel were connected.
* Merge similar methods, adjust code.
* More lenient judgment; reduce redundant code to avoid repeated calls.