* Proper block entity checks; ignore invalid block entity data sent by Java server
* fix intelliJ warning about potentially null block state
* Use auto-generated block entity types instead of hardcoding them
* undo some diff
* Update BlockRegistryPopulator.java
* Access block entity type of state by getting the block first
* deprecate JavaBlockState#hasBlockEntity
* Simplify check
* Add type check in JavaBlockEntityDataTranslator, ensure deprecated setBlockEntity() method still sets piston behavior
* nullability annotations
* yeet duplicate check
* Skip lore creation if hide tooltips exists
* Fix not showing attributes for "Armor" category
* Minor refactor
---------
Co-authored-by: chris <github@onechris.mozmail.com>
The only recipes added should be the ones that are sent on Bedrock, so it appears in the recipe book. Every other recipe will be handled through our fallback system.
E.G. Blocks.PISTON_HEAD.defaultBlockState().withValue(FACING, Direction.SOUTH)
Some of the inspiration may be thanks to FerriteCore, at least with the shared property keys idea, so thank you to them.
* Remove ears and unoffical skin sources
* Remove supplyEars
* Cleanup and add SkinApplyEvent
* Add failed back to skin
* Accept suggestion on SkinGeometry
Co-authored-by: chris <github@onechris.mozmail.com>
* Add javadoc and update copyright
* Remove old config options
* Make SkinApplyEvent a ConnectionEvent
* Add warning about third-party config options
* Update warning message
* Add javadoc to event
* Fix javadoc
* Ajust for review and bump version to 2.2.4
* Get rid of array and preserve original skin data
* Add originalSkin method to event
* Handle NonNull in SessionSkinApplyEvent
* Revert default copyright change
---------
Co-authored-by: chris <github@onechris.mozmail.com>
Previously, for any new tag, we would have to add a field, add the line to load it, add the line to clear it, and make a method for that tag. Now, you just add an enum.
* 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