* Translate client-computed recipes
A handful of recipes are complex enough on Java Edition that the client simply calculates them after getting an assurance that they are valid recipes. This PR stores those recipes in a Bedrock-compatible format in mappings, then generates the CraftingData information on startup to send to the Bedrock client when called. This fixes firework rocket and star crafting, and fixes leather armor and shulker box dyeing.
The recipe information for everything except leather armor was taken right from the Bedrock server. The leather armor had to be created separately (see https://github.com/DoctorMacc/LeatherDyeingCreation). There will be a slight visual difference in the crafting result preview if the armor is not perfectly dyed to one of the sixteen colors, but this is a visual issue that will persist unless we calculate every single possbile combination.
* Revert other changes
* Register shulker box recipes properly
* Add break
* Update mappings
* Add shulker box item tooltip translating
This commit adds support for previewing the items inside of a shulker box. This does not do a full translation, and only does enough to translate the item information to the client, so as to prevent any accidental item modifying/removing on creative mode.
* Swap values
This fixes rare (?) instances where dimension switching doesn't finish loading on the client. Ideally a proper fix would send the finishing packets in the correct order but I didn't get far in this regard.
Fixes#1154 and #1072.
Other miscellaeous chunk-related fixes have also been included here.
* Fix dyed signs in Bedrock Edition
Add visual support (in Bedrock Edition) for signs colored with dye (in Java Edition)
* Javadoc for getBedrockSignColor(string)
* Simplified getBedrockSignColor(string)
Until 1.16, enchantment tables were impossible to implement properly in Geyser. When a user selects an enchantment in Bedrock, the client creates the book on its end and assumes the server is OK with it. Java requires a button to be pressed to select the enchantment. With 1.16, server authoritative inventories remove that on Bedrock. However, until our inventory rewrite is finished we are still stuck without enchantment table support. This commit serves as an alternative as we wait.
Enchantment table GUI support is still impossible since we are using the pre-1.16 inventory system. To solve this, this commit replaces the enchantment table GUI with a hopper GUI. The first slot serves as the spot you place the weapon. The second slot acts as the lapis slot - Geyser prevents any item from going in there that is not lapis. The final three slots act as the buttons; an enchanted book acts as each button, with the ability to show the translated text of each enchantment.
https://cdn.discordapp.com/attachments/613194828359925800/746164042359504927/unknown.png
* Auto-configure more if setting is enabled
- Geyser dumps now show if the config was automatic
- Floodgate is now automatically detected if the address is also automatically found
- If the plugin versions' servers have the listening address set to something different, set our remote address to that
* Fix Sponge config
* Remove redundant Getter
* Translate RAIN_STRENGTH to Bedrock client
Previously Geyser ignored RAIN_STRENGTH and instead relied on START_RAIN and STOP_RAIN only. This is unreliable on a vanilla server as these values are swapped around. This commit also implements thunder strength which was untranslated.
* Update rain code in JavaRespawnTranslator
The client should disallow players to join servers if they're not logged in, however this just adds a second layer of security in the event that it's somehow bypassed.
* Return permanent skins (alex/steve) when queried instead of returning an empty skin due to invalid lookup
* Fix Alex/Steve being shown incorrectly due to java signed integers
Co-authored-by: bundabrg <bundabrg@grieve.com.au>
* Port code from #486
Co-authored-by: Luke <32024335+lukeeey@users.noreply.github.com>
* Fix and clean code and add default gamemode changing
* Clean copyright
* Remove direct modification of server, clean up code and add player list xuid fetching.
* Move to custom settings menu
* Move sendAdventureSettings to GeyserSession
* Add javadoc comments
* Add translation support
* Remove updated copyright
* Clean up
* Clarify some javadoc comments
* Remove obsolete code
* Update languages submodule
* Fix javadoc comments
* Fix compile
Co-authored-by: Luke <32024335+lukeeey@users.noreply.github.com>
Co-authored-by: Redned <redned235@gmail.com>