0ca1096f45
* Fix Skin Caching Changes: * Instead of caching a skin based upon the player we cached it based upon the textureURL. This means multiple players with the same skin will benefit from the cache and more importantly will mean a player changing their skin will not get a false cache hit. * This should fix all issues with SkinRestorer and will now correctly show the skin both to the player themselves and to other players Closes #518 * Remove duplicated code * Minimize playerlist updates Changes: * All async skin stuff will now just update skins and not be involved with sending the session to the player. This eliminates issues where the player list changes whilst an async task is occuring plus it means no invisible players while retrieving skin. * Fix bug when retrieving cached skin * When sending PlayerList packets ensure the skins have appropriate skinIds so the Bedrock client will cache hit/miss as needed * Make sure to add and remove player when setting skin if they do not belong on the playerlist * Make use of AuthData UUID when removing the player * Revert removal of checking if entity is valid when initialized This section is supposed to send all spawned entities in the java world to a player only after they've initialized. By removing this check it would also be sending entities that exist but are not spawned. * Optimizations Changes: * Check for duplicate requests based on textureURL instead of player ID * Don't use the PlayerSkinPacket. It duplicates the data sent in the PlayerListPacket and without it the players still get skin updates. * Support caching of skins to disk based on configuration variable If a skin is downloaded it will be saved to `cache/skins` using a base64 encoded filename of the textureUrl, if allowed by setting a non 0 value for the configuration variable `cache-skins` When reading a skin we try load it from a cache file first before trying to download it. We don't yet expire them but do update their last modification so we know which ones have been accessed. * Update `config.yml` with cache-skins directive, defaulting to disabled * Merge Fixes * Cache all images instead of just skins Changes: * Move the image caching from skins to where images may get downloaded so this also covers capes and anything else that uses the same method of image retrieval * Updated config value from `cache-skins` to `cache-images` * Updated cache location from `cache/skins` to `cache/images` * Images are stored in png format with a uuid. This may make debugging easier as they can be directly opened. * Implement cached image expiry If `cache-images` is set to a value greater than 0 then a scheduled task will occur once a day that will remove images with a modification date older than the value in days. * Force skin changes as trusted * Resolve PR queries * Fix signed int causing issues calculating expiry time for images * Reset Defaults to 0 and implement Google Timed Eviction cache for Images * Add memory cache for Capes Co-authored-by: Brendan Grieve <brendan.grieve@zepli.com.au> Co-authored-by: bundabrg <bundabrg@grieve.com.au> |
||
---|---|---|
.github | ||
.idea/copyright | ||
bootstrap | ||
common | ||
connector | ||
screenshots | ||
.gitignore | ||
.gitmodules | ||
CONTRIBUTING.md | ||
Jenkinsfile | ||
LICENSE | ||
licenseheader.txt | ||
pom.xml | ||
README.md |
Geyser is a bridge between Minecraft: Bedrock Edition and Minecraft: Java Edition, closing the gap from those wanting to play true cross-platform.
Geyser is an open collaboration project by CubeCraft Games.
What is Geyser?
Geyser is a proxy, bridging the gap between Minecraft: Bedrock Edition and Minecraft: Java Edition servers. The ultimate goal of this project is to allow Minecraft: Bedrock Edition users to join Minecraft: Java Edition servers as seamlessly as possible. Please note, this project is still a work in progress and should not be used on production. Expect bugs!
Special thanks to the DragonProxy project for being a trailblazer in protocol translation and for all the team members who have now joined us here!
Currently supporting Minecraft Bedrock v1.16.0/1 and Minecraft Java v1.16.1.
Setting Up
Take a look here for how to set up Geyser.
Links:
- Website: https://geysermc.org
- Docs: https://github.com/GeyserMC/Geyser/wiki
- Download: http://ci.geysermc.org
- Discord: http://discord.geysermc.org/
Donate: https://patreon.com/GeyserMCCurrently disabled.- Test Server: test.geysermc.org port 25565 for Java and 19132 for Bedrock
What's Left to be Added/Fixed
- The Following Inventories
- Enchantment Table
- Beacon
- Cartography Table
- Stonecutter
- Some Entity Flags
Compiling
- Clone the repo to your computer
- Install Maven
- Navigate to the Geyser root directory and run
git submodule update --init --recursive
. This downloads all the needed submodules for Geyser and is a crucial step in this process. - Run
mvn clean install
and locate to thetarget
folder.
Contributing
Any contributions are appreciated. Please feel free to reach out to us on Discord if you're interested in helping out with Geyser.