mchorse / metamorph

Morphing mod for Minecraft 1.12.2
Other
72 stars 42 forks source link

Mod does not delete excess! #314

Open LuciferWPF910 opened 4 months ago

LuciferWPF910 commented 4 months ago

Hello, I am a mod developer, modpack & server developer. I've been using metamorph and I've already fixed a number of issues I've experienced using. Including this one, however, it is essential that this is fixed for others who cannot so easily do that.

Morphs are being saved as a ForgeCap but nothing is clearing them. This is essential if you a repeatedly caching tons of mobs. I personally use the leave event to wipe them, without wiping them very quickly they can rack up millions of entries in this NBT. At this point- it will prevent the player from joining a server/world. that entry is so large that the packet will be too large and their .dat will be inflated.

mchorse commented 4 months ago

Hello!

I’ve been aware of this issue for a long time, but I wasn’t maintaining my 1.12.2 mods for ~3 years.

If you have the fix, the Pull Request with a fix is very welcomed, however, neither @Chryfi, current maintainer, nor I are willing to work on a fix since that’s out of the scope. Even though Metamorph, in the beginning, was a replacement for Morph mod in 1.12.2, as time went by, its scope shifted to complement my other mods with morph system allowing all mods to share a system of appearances, which could be used for actors, NPCs, gun projectiles, HUD, GUI, etc. I know this scope sucks for players, but it is what it is.

Also, if you are going to submit a PR, keep in mind that the window for it is not infinite. Chryfi, after being done with bug fixes, plans to stop maintaining my 1.12.2 mods in favor of working on his new Machinima mod for newer versions of Forge.

LuciferWPF910 commented 4 months ago

My solution is external to the source code for your mod, my own plug-in simply purges the wasteful nbt on join and leave which solves the issue. I did it this way because it was the quickest solution for the uptime of my server and thus my code is incompatible. However I hope that the logic of the solution is used -considering you just need to use two global events then make it clear the forgecaps within the clients nbt.

if not I hope that these comments here may at least illuminate the solution to those capable of solving it for themselves.