* 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>
* 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.
* 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.
This will allow Geyser-Fabric to work without resource loading issues. This commit also ensures try-with-resources is used anywhere a resource is accessed.
* only tabcomplete for commands the sender has permission for
* set permission defaults for spigot
* Make velocity autocomplete on arg length 0 and 1
* fix advancements perm in spigot plugin.yml and add settings perm
(whoops)
* don't show bedrock commands to java players
* modify spigot perm defaults
* censor help menu, abstract tab complete code
* Bedrock players don't get cmd argument suggestions
* update spigot plugin.yml
Mostly checked with IntelliJ, but manually performed. The only issue I possibly anticipate is item name/lore issues, but the new method should be technically better.
With this commit, debug messages in Netty and Protocol will now show if debug mode is enabled in the Geyser standalone config.
There is also some small tuning to the PacketTranslatorRegistry for cleanliness and maybe some minor performance.
* Send message to Java if command is Bedrock-only
If a Java player attempts to use a Bedrock-only command, such as `geyser statistics`, they will get an error message stating that this command is only for Bedrock players.
This commit also cleans up Velocity Adventure dependency usage. Issues were caused because of the way relocation works and because Velocity also uses Adventure.
* Only look for a session if we have to
* Update languages submodule
Leave the window open so the user understands there is an error.
This also changes the exit code to 1 when exiting without a GUI since we have an error.
* Add more interactive tags (mobile buttons)
This expands our support for showing the interactive tags on touchscreen and console setups. This is not complete - specifically, the food compatibility of creatures needs to be expanded upon (I will work on this later and does not stop this PR from being mergable). This also includes:
- Creepers who are ignited with flint and steel now show up properly
- Zombie villagers now shake properly when converting and show their region outfits
* Add more food choices and add more panda entity metadata
* Re-add eating flag
* Remove debug line
* Refactor dimension usage, finish interactive tag usage, bees
* Print statements... ._.
* Don't make eating item packet data a non-constant
* Move BAMBOO to ItemRegistry
* Add missing break
* Make changes
* Minor final changes
- Added `GeyserCommand.isExecutableOnConsole()`. If this is set to false, the command will not appear as an option in the GUI.
- Added `GeyserCommand.getSubCommands()`. If not empty, the subcommand options will now appear in the GUI.
* Added a way to check if debug logging is enabled
* Improved scoreboard performance
* Include Teams in pps and return pending pps instead when higher then pps
Some servers have a huge amount of score packets when the player logs in, but before this commit, only after the first high pps (packets per second) the ScoreboardUpdater will be used (after pending packets per second have been moved to packets per second). But this commit fixes that the ScoreboardUpdater can be used on the second that the pps is getting high.
* Fixed team pre + suffix "null" issue and added threshold config option
Fixed team pre + suffix "null" issue.
When the prefix and/or suffix of a Team is null, "null" will be returned instead of null (Due to the way that MCProtocolLib is made and designed). This is fixed by simply checking if the prefix and/or suffix equal "null" and if that is the case, replace it with "".
Added threshold option.
Gave the person who is running Geyser an option to specify the first Scoreboard packets per second threshold to further improve performance by lowering the setting or decrease performance by relaxing the setting a bit. The value can't be higher then 250 (the second threshold), because it'll always choose the lowest threshold.
* Forgot to bump config version
* Small changes
* Reverted version bump, changed Sponge config, changed FloodgateKeyLoader
Reverted version bump
Camotoy said that you only need to bump the config version if the change is breaking, the config version bump has been reverted.
Changed Sponge config
The Sponge config has been modified to look like the other platform configurations.
Changed FloodgateKeyLoader
* Changed default-locale and (remote) address as requested by Camotoy
* Reduce bandwidth and a few final tweaks
* Made the scoreboard-packet-threshold a bit higher due to improvements
* Added config option to standalone Geyser
* Cleanup
* Added --gui, --nogui options
* Made new options read default config.yml from correct place internally
* Changed to locale strings rather than hardcoded English
* Using separate options texts
* Changed '-c' to be string parameter so it isn't translated