Skip to content
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

Support BE emotes with Geyser #60

Closed
KosmX opened this issue Apr 27, 2021 · 13 comments · Fixed by #153
Closed

Support BE emotes with Geyser #60

KosmX opened this issue Apr 27, 2021 · 13 comments · Fixed by #153
Assignees
Labels
compatibility compatibility with other mods enhancement New feature or request help wanted Extra attention is needed

Comments

@KosmX
Copy link
Owner

KosmX commented Apr 27, 2021

Feature to see Bedrock emotes with Geyser and vice-versa.
There are multiple issues with this idea, but not impossible.

@KosmX KosmX added enhancement New feature or request help wanted Extra attention is needed compatibility compatibility with other mods labels Apr 27, 2021
@KosmX
Copy link
Owner Author

KosmX commented Apr 27, 2021

issues with this:

Geyser doesn't send the BE data to the Java server and can't receive it from the Java server

Geyser is a proxy between the Bedrock client (BE) and Java server.
And it doesn't send anything about the emotes to the Java server. Emotecraft is a Server-side mod/plugin, it can't access the BE communication. It doesn't even know who is a Geyser or Java player.
Geyser itself has to be modified to let the java server know about emote plays in a plugin channel like geysermc:emote

BE has a different emote streaming format

As soon as Geyser tries to send the raw BE emote to the server, Emotecraft can listen to this channel.
Emotecraft does send the emote data itself (wiki page needed), allowing custom emotes to be played.
BE only sends an emote identifier XUID (similar to Java UUID)
Fortunately, BE emote ids are static, always the same for the same emote.
To make Emotecraft see BE emotes, it has to have a dictionary, to convert from BE ids to Emotecraft emotes.
And if an Emotecraft emote perfectly matches with an entry in the dictionary, send that id to Geyser->BE.

BE emotes have to be converted/replicated in Emotecraft format.

Unfortunately, BE encrypts all of its emotes, making it impossible to load these in Emotecraft.
Someone has to recreate every BE emotes with Emotecraft tools.
If I were able to decode these emotes, I would be able to load and convert these to Emotecraft format.

Limitations.

Even if I can modify JE's code however I want, I can't modify or even see BE's code.
BE doesn't support custom emote play, it can only see its own built-in emotes, while Emotecraft users can create any custom emotes.
(However, it can emulate that a paid emote was played)
JE Emotecraft is fully customizable, it doesn't have these limitations.

@KosmX KosmX pinned this issue Apr 27, 2021
@KosmX KosmX unpinned this issue Apr 27, 2021
@KosmX
Copy link
Owner Author

KosmX commented May 15, 2021

https://bundabrg.github.io/Geyser/extensions/
Geyser does support extensions. I don't have to edit its code

@KosmX KosmX removed the help wanted Extra attention is needed label May 15, 2021
@KosmX
Copy link
Owner Author

KosmX commented May 15, 2021

Working on a plugin to solve the geyser-side issue
kosmx/geyser-emote-extension

@KosmX KosmX self-assigned this Sep 6, 2021
@KosmX KosmX reopened this Sep 11, 2021
@KosmX
Copy link
Owner Author

KosmX commented Sep 11, 2021

Keep it open until Geyser merge/add the emote channel feature

@KosmX
Copy link
Owner Author

KosmX commented Sep 11, 2021

GeyserMC/Geyser#2517

@KosmX KosmX pinned this issue Dec 3, 2021
@KosmX
Copy link
Owner Author

KosmX commented Aug 26, 2022

Recently I asked Geyser developers to implement a packet API, so I can solve this from a Geyser extension.

@KosmX
Copy link
Owner Author

KosmX commented Oct 25, 2022

GeyserMC/Geyser#3365

@AKASGaming
Copy link

Did this get any further?

@KosmX
Copy link
Owner Author

KosmX commented Dec 17, 2022

They (Geyser) promised me an API, but I haven't seen anything done.

@AKASGaming
Copy link

In the GeyserMC Discord server:
https://discord.com/channels/613163671870242838/613170125696270357/1058045365812723812

@KosmX KosmX added the help wanted Extra attention is needed label Dec 30, 2022
@KosmX
Copy link
Owner Author

KosmX commented Feb 13, 2023

GeyserMC/Geyser@c60a4d0
We have an implementation in GeyserMC! 🎉

@KosmX
Copy link
Owner Author

KosmX commented Feb 14, 2023

Last PR and it can finally work in production
GeyserMC/Geyser#3554

@KosmX
Copy link
Owner Author

KosmX commented Feb 15, 2023

With the latest build GeyserMC/Geyser@ee754c5 Geyser does support emote events!

This issue can be finally closed.

@KosmX KosmX closed this as completed Feb 15, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
compatibility compatibility with other mods enhancement New feature or request help wanted Extra attention is needed
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants