libraryaddict / LibsDisguises

Minecraft disguise plugin
https://www.spigotmc.org/resources/libs-disguises.32453/
Other
262 stars 129 forks source link

Packetevents adapter #752

Closed fantahund closed 5 months ago

fantahund commented 6 months ago

Hey Hey, ProtocolLib is unfortunately no longer very active and the updates take longer and longer and unfortunately often no longer work satisfactorily. We have found an alternative for us and wanted to ask if there is a possibility to use ProtocolLib or packetevents. In other words, an adapter for PacketEvents.

PacketEvents also works with the new Paper Build method which uses the internal Mojang mappings and no longer the Spigot mappings.

Here you can get to Packetevents: https://github.com/retrooper/packetevents

libraryaddict commented 6 months ago

That does looks interesting, similar workflow to ProtocolLib too. Initial work for 1.20.4 had teething issues, even after I hacked together a solution to get things workingish it felt like a bad implementation as there's more code bloat added than the problem deserved.

Much as I like ProtocolLib, it's not actively maintained as you said. So this does sound interesting. I'll be taking more of a poke at it tomorrow, though it looks like I'll be making the switch 👍

fantahund commented 6 months ago

Have you had a look and can you tell us whether you're going to install it? ^^

libraryaddict commented 6 months ago

Sorry I was posting the updates on discord. Basically still implementing it, I may be able to compile it tomorrow, though I will note that I said compile, not run. ProtocolLib is ingrained in a lot of the plugin and there's a lot of conversions and handling, it's not just a renaming of methods and classes. I fully expect that even after compiling it will take at least days just to go through basic testing. And I'll probably miss stuff.

Initial builds will probably be by hand even when it is no longer so bad, it's a breaking change. I'd rather not break thousands of servers.

fantahund commented 6 months ago

Very good. We will definitely test it as soon as it can be compiled. ^^

libraryaddict commented 6 months ago

Current status is that the plugin now loads, this is the conversion to packet events from ProtocolLib

I didn't dare test it today, it would definitely break. It also has a bunch of helpful utilities disabled which needs to be resolved.

And even when it does load and disguise properly, it would need all aspects I can test, tested. Then backwards compatibility tested to make sure I limit the breaking. Then it would need new wrapper functionality for changed parameters and and cleanup of changed code.

Do be aware that there is no chance that I'll be committing any code to the repo until it's completely finished.

I'm also thinking of making early builds be premium only, but still thinking on how to integrate that.

libraryaddict commented 6 months ago

It took a bit but currently the plugin does load and everything is "smooth" for a basic test of self disguise, and disguise other entities as a cow.

It needs to have some stuff updated for other versions of MC, and tested, and disguises are not parsed properly on initial disguise. Which probably means a crash in older versions of MC with invalid data being sent.

But it mostly works! Which is good.

image

libraryaddict commented 6 months ago

Oh and I need to look into the 4 second startup times.

libraryaddict commented 5 months ago

Closing in favor of #755