-
-
Notifications
You must be signed in to change notification settings - Fork 83
Figura Server side (or FSB) #239
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
* Modified root gradle project and `gradle.properties` in order to apply mappings and include minecraft only in projects that are modded. * Started writing server side of Figura, added bunch of packet classes. * Added interface for platform independent FriendlyByteBuf, so all the needed functions can be also used in Bukkit plugin * Added platform independent Identifier record, which is basically ResourceLocation, but both for Bukkit and Fabric/Forge. * Started writing AvatarManager for server side, gonna rewrite a lot tho. * Added a little Events system to make figura server side extendable but also secure enough. There are several types of events: Regular ones, cancellable, and returnable. Returnable events can be used for custom avatar/metadata/usedata loading implementation, for example from DB (by default everything including avatars, avatar metadata, and userdata, will be stored in a folder) From now i am going to take a big break from working on this, don't want to tell why but if short then i've got through something not good and just need some time. I will get back to working on this project as soon as i can.
Rewritten most of avatar manager to make it look better and use less memory. Added `copyBytes` method to Utils, using this to copy hash arrays in order to prevent them from being changed externally from events and such (i forgor how java works so i've almost let that happen 💀)
Would it be possible to use Minecraft's existing chat signing key to sign avatars? This could be used to avoid needing to share the key manually, while also preventing other players (or the server, if it has the key) replacing avatars. |
Key won't be shared at all. It will be only used to check ownership of host avatars, and will be accessible only from host client. Sharing it means allowing a server to just replace your avatar without your permission. Also I suggest to just go to thread on discord cuz we are basically discussing everything FSB related in there. About using this chat signature thing - I don't even know how it works internally. |
I have been really burned out lately so i couldnt really add a lot, sorry :catplush:
Have been in code mood so decided to use this to work on FSB a bit.
Made it at first return offline user, and only auth them when needed in handshake handler
I am really sorry but i dont remember what exactly i changed here, i am very tired.
what if someone (like me) doesn't sign chat messages using something like no chat reports |
* Started writing avatar uploading handling, will finish it later. * Added Hash class, that represents an unchangeable (kinda, reflection says hi) hash. It's actual data can be got with Hash.get(), that will ***copy*** contained hash and put it into 32-byte long byte array. * Started making all classes use Hash instead of `byte[]`
I am officially saying, that this is a huge W
It actually works
…l it) (surprisingly it worked both on server and client wow)
…y hope it actually works)
…aking a lot of stuff)" This reverts commit b620ac3.
the time has come |
"it's time to go to heaven my child" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
chonker PR, thanks Kate!
Main goal of this PR is make Figura even more extendable, make it so main backend is not dying from a flood of a new Figura users, and also make it easier for server to communicate with avatars.
What exactly this PR is going to add:
Changes so far:
gradle.properties
in order to apply mappings and include minecraft only in projects that are modded.for custom avatar/metadata/usedata loading implementation, for example from DB (by default everything including avatars, avatar metadata, and userdata, will be stored in a folder)
For now I'm gonna take a break from working on this project, so i am just making it a pull request to make it possible for maintainers to also make changes if they wish.