* 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
* 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)
This happens when the server version is below the current version and the block state changed. A better solution would be to use ViaVersion to translate the block state strings but this would require getting the server version and figuring out mappings from there.
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>