* 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>
The following caveats apply because selectively removing or modifying the score numbers on Bedrock cannot be done without removing all of them:
* "blank" and "styled" number formats are ignored for "list" and "sidebar" display slots
* The "fixed" number format is appended to the end of the "list" and "sidebar" entry names instead of replacing the score number
* The "below_name" slot has no limitations and displays identically to Java
* Reset metadata and attributes if needed when respawning
* Minor edits
* Reset attributes in JavaLoginTranslator
* Fix client bug when updating absorption and health in the same tick
* ported camotoy's attempt of implementing structure blocks, removal of a few TODO's
* no more parsing of java structure templates
* Don't attempt to re-request structure size
* ensure we can load structures in even if we know the size
* init: send correct structure size/offset/rotation to java, not fully working yet
* restore offsets so we are sending correct values to the java server regarding where we want the structure to be placed
* something something mirror
* attempt at proper offsets for mirroring AND rotations. this was not fun at all
* rotation, mirror, offsetting all seem to work
* undo import changes
* fix NPE
* Proper handling of empty structures, ensure that we can clear the structure block outline when a zero vector was sent for structure size
* oops
* Update core/src/main/java/org/geysermc/geyser/session/cache/StructureBlockCache.java
Co-authored-by: rtm516 <rtm516@users.noreply.github.com>
* Update core/src/main/java/org/geysermc/geyser/translator/level/block/entity/StructureBlockBlockEntityTranslator.java
Co-authored-by: rtm516 <rtm516@users.noreply.github.com>
* Update core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockStructureBlockUpdateTranslator.java
Co-authored-by: rtm516 <rtm516@users.noreply.github.com>
* Update core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockStructureTemplateDataRequestTranslator.java
Co-authored-by: rtm516 <rtm516@users.noreply.github.com>
* consolidate java structure sending into one method
* fix merge conflict
---------
Co-authored-by: rtm516 <rtm516@users.noreply.github.com>
* Fix (or workaround) armor items with custom armor trims having no texture on bedrock
* Fix armor items with custom trims causing issues on entity models by removing the Trim tag entirely
* Refer to minecraft namespace inline for consistency
* Add ConnectionRequestEvent and implement it
* Add debug message and use InetSocketAddress instead of string
* Provide both proxy and real client ip
And add some minor javadocs
* Make ProxyIp nullable
* Apply changes from pr
Co-authored-by: rtm516 <rtm516@users.noreply.github.com>
* Apply changes from pr
Co-authored-by: rtm516 <rtm516@users.noreply.github.com>
* Apply changes from pr
Co-authored-by: rtm516 <rtm516@users.noreply.github.com>
* Bump API version
* Dont JiJ common on mod platforms
---------
Co-authored-by: rtm516 <rtm516@users.noreply.github.com>
Co-authored-by: Kas-tle <26531652+Kas-tle@users.noreply.github.com>
* Allow adding custom items to the creative inventory in order for recipes outputting said custom items to work
* yeet includeInCreativeInventory as it would break existing nonvanilla extensions - and is pretty pointless anyways
* rename mappings to `creative_group` and `creative_category`
* delete outdated comment
* Fix lecterns on 1.20.60, start on virtual lecterns
* Fix: virtual books & actual books opening twice, resolve other issues, remove debug
* undo some unnecessary diff
* Don't try to send virtual books to pre 1.20.60 clients
* address review by camotoy
* Initial work on Forge platform
* Rework modded platforms to use a common module
* Add support for integrated worlds on modded platforms
* Fix classload errors and move mixins to shared module
* Fix Fabric mixins and check min height in mod world manager
* Add Forge command support
* Add back modrinth publishing
* Don't apply application plugin to shared mod sources
* Fix docs
* Delete unused class
* Clean up repositories
* - Update to 1.20.2
- set custom refmap name
- fixed console commands crashing the server (hasPermission now accepts CommandSourceStack instead of Player)
- Forge wants fastutil relocated, so be it
Current issues:
- ClassNotFound exceptions with classes that are clearly present
* - Fix ClassNotFound errors on Forge due to weird Classloader
- Dont relocate gson
* merge upstream
* oh no
* Bump lombok, architectury-loom
* init: neoforge 1.20.4 support
* NeoForge builds
Signed-off-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>
* Archive neoforge artifacts
* transformForge -> transformNeoForge
* Neoforge boots!
* Fix mixins on neoforge
* Update build/pr file names
* Update mods.toml to new neoforge standard
* Fix refmap naming
* more fixes
- no need to include gson
- cleanup nullable/nonnull annotations
- add more info to geyser dumps on neoforge
* yeet platform executor
* yet another temp branch to figure out the runServer task
* yeet transitive dependency, that cant be right
* Attempt at getting the runServer task to work, part two
* Revert the changes for the runServer task, try and shut down the injector
* Remove spigot weird bug workaround, shut down properly
Also add a compileOnly dependency for the mod module to get rid of spammy false warnings
* Update to latest restart changes
- fix duplicate nodes crashing neoforge
- connector -> geyser in GeyserModCommandExecutor
- create command manager early to fix issues with permission gather event
* Consistent NeoForge spelling, move some dependencies to the version toml
* Add lombok to version catalogue
* Add plugins to version catalogue
* revert move to buildSrc
* Create `assets/geyser/icon.png` to reference icon from a single file on standalone/neoforge/fabric
* add fabric permissions api to libs.versions.toml
---------
Signed-off-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>
Co-authored-by: onebeastchris <github@onechris.mozmail.com>
Co-authored-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>
* Implemented ViaProxy bootstrap
* Applied requested changes to code
* Override indra settings to Java 17
* Removed explicit java source/target version
* Added ViaProxy artifact to build.yml
* Added ViaProxy artifact to pullrequest.yml
* Updated ViaProxy API usage
* Implemented floodgate support for ViaProxy
* Depend on stable ViaProxy release
* Initialize command manager and ping passthrough before Geyser#start
* Revert "Initialize command manager and ping passthrough before Geyser#start"
This reverts commit 39356071c4.
* Some ping passthrough improvements
* Merged code properly
* Updated ViaProxy API usage
* Implemented better command handling
* Updated ViaProxy and Geyser API usage
* Combine bootstrap and plugin into one class
* Minor code improvements
* Call Geyser shutdown on plugin disable
* Only call disable if Geyser was enabled once
* Don't send two shutdown done messages
* Use setter for enabled boolean
* 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
* 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.