Commit graph

13 commits

Author SHA1 Message Date
Camotoy
5b76a85895
Non-full-chunk support (#574)
This commit adds non-full chunk support if chunk caching is enabled.
2020-09-03 19:00:36 -04:00
bundabrg
0ca1096f45
Fix Skin Caching and Fix Skin Restorer (#680)
* 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>
2020-08-07 12:33:21 -04:00
Heath123
d316d3a5a8
Add .vscode to .gitignore (#1033)
* Add .vscode to .gitignore

* Use Toptal gitignore generator

rtm516 said this would be cleaner, which makes sense

* Use gitignore.io links

* Uncomment #.project
2020-07-27 11:30:24 +01:00
James Harrison
5b3e7c965f
Chat/Skin fixes (#480)
* Made MessageUtils mimic java chat behavior
Send ClientSettingsPacket when player joins a server

* Fix comments
Set use client locale instead of hard coding

* Moved chat reset to fix some broken formatting

* Revert MessageUtil as rtm516 has implemented a better fix
2020-05-04 21:32:37 -05:00
Camotoy
369f1cf127
Add .gitignore for locales folder 2020-04-09 16:13:03 -04:00
Tim203
7d645fbf16 First Flootgate commit 2019-11-30 13:34:45 +01:00
AJ Ferguson
4b0d777128 Fix crash after first disconnect 2019-10-01 15:36:33 -08:00
EOT3000
da0c59446f Try fixing block break (didn't work). Also add more metrics 2019-09-30 12:44:25 -04:00
SupremeMortal
ed7213d7c7
Remove IntelliJ files @EOT3000 added... and more chunk changes. 2019-09-13 10:39:38 +01:00
SupremeMortal
3cc32d0eec
Add gitignore 2019-09-12 18:35:57 +01:00
EOT3000
d22861d61b remap fixes 2019-08-07 19:08:48 -04:00
Blue Kelp
e85e16ecfe move boilerplate event stuff
- logging performed in single method of base class
2019-08-01 18:38:21 -07:00
RednedEpic
6c881cd9f0 It's a start! 2019-07-08 12:55:14 -05:00