SparklyPower / SparklyPaper

✨ "Ooooh, sparkly paper!" - SparklyPower's Paper fork, making large servers snappier with high-performance optimizations and improvements!
https://sparklypower.net/
105 stars 13 forks source link

[Feature]Implement Purpur and fork patches #8

Closed HaHaWTH closed 9 months ago

HaHaWTH commented 9 months ago

Sparklypaper is amazing, if some patches of other forks can be implemented on sparklypaper, it will be more perfect. Suggestions:

  1. Some purpur patches for removed Vanilla features (PurpurMC/Purpur)
  2. Pufferfish patches (pufferfish-gg/Pufferfish)
  3. patches from Lithium mod which optimizes minecraft (DivineMC/DivineMC)
  4. [Not Stable]Some patches from C2ME mod that speeds up the chunk loading (Dreeam-qwq/Mirai)
  5. .Linear world format, decreases file size by 50% (xymb-endcrystalme/LinearPaper) Hope sparklypaper get better!❤
MrPowerGamerBR commented 9 months ago

As mentioned in the README, I'm only implementing stuff that I need for my server (SparklyPower). The fork is public, sure, but I don't want to maintain a huge fork with features that I don't need, which makes updating my own server hard.

I only add patches from other performance forks (Pufferfish, DivineMC, Mirai, etc) if I know they are fixing a performance bottleneck that I have (or something that someone else can prove is a performance bottleneck) in my server. In fact, I have already combed thru Pufferfish's patches before and I have seen that SOME of their patches are half implemented, or affect server performance, so I won't copy all Pufferfish patches for SparklyPaper: https://github.com/SparklyPower/SparklyPaper/blob/ver/1.20.2/docs/BORKED_PATCHES.md

That doesn't mean that all Pufferfish's patches are bad, I have already borrowed some of their patches, like this one, but that's because I have already profiled my own server and seen that this does fix a performance painpoint: https://github.com/SparklyPower/SparklyPaper/blob/ver/1.20.2/patches/server/0003-Optimize-entity-coordinate-key.patch

Another thing that I don't like is that a lot of these performance patches from other forks do not add any kind of explanation about why they did it that way, what does it impact, how much mspt the code was using before the optimization... so on and so forth, so it is a blind guess about what the patch is actually optimizing and if it does improve performance at all. (Compare that to SparklyPaper's patches, where I do try to add an explanation for each patch in the patch itself and in the project's README)

I don't need the things that Purpur adds, so it would be new stuff to maintain that I don't need for SparklyPower.

What I recommend doing is that, if you have something that you really need from other forks, the best way to do it is to fork SparklyPaper and add your own patches on top of it.

HaHaWTH commented 9 months ago

OK, I see. Thanks a lot❤