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

[Experimental Build] Merge tuinity #6413

Merged
merged 52 commits into from Aug 31, 2021

Conversation

Spottedleaf
Copy link
Member

@Spottedleaf Spottedleaf commented Aug 17, 2021

This is an experimental build. This means you should be careful when using it, as it contains changes that are potentially dangerous. Only play around with it if you are OK with the risks.

This PR contains all of Tuinity's patches. Very notable ones are:

  • Highly optimised collisions
  • Optimised entity lookups by bounding box (Mojang made regressions in 1.17, this brings it back to 1.16)
  • Starlight https://github.com/PaperMC/Starlight
  • Rewritten dataconverter system https://github.com/PaperMC/DataConverter
  • Random block ticking optimisation (wrongly dropped from Paper 1.17)
  • Chunk ticking optimisations
  • Anything else I've forgotten in the 60 or so patches

If you are a previous Tuinity user, your config will not migrate. You must do it yourself. The config options have simply been moved into paper.yml, so it will be an easy migration.

Please report any issues you have with this build to this thread only.

This is the paperclip jar with these changes:
https://cdn.discordapp.com/attachments/876902758366736457/882145779735728138/Paper-1.17.1-R0.1-SNAPSHOT.jar
I will update it when needed, and write a reply when it's updated.

Copy link
Contributor

@Proximyst Proximyst left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Small comments before my phone started slugging hard while viewing this lol

patches/api/0329-Per-player-viewdistances.patch Outdated Show resolved Hide resolved
patches/server/0747-MC-Dev-fixes.patch Outdated Show resolved Hide resolved
patches/server/0747-MC-Dev-fixes.patch Outdated Show resolved Hide resolved
patches/server/0748-Util-patch.patch Outdated Show resolved Hide resolved
@PaperMC PaperMC deleted a comment from robert-beckley Aug 17, 2021
@PaperMC PaperMC deleted a comment from lordsherman Aug 17, 2021
@Spottedleaf
Copy link
Member Author

for those of you commenting on the patches, proper organization will occur later

@kennytv
Copy link
Member

kennytv commented Aug 17, 2021

He's going to handle merging patches later

@PaperMC PaperMC locked and limited conversation to collaborators Aug 17, 2021
Copy link
Member

@NoahvdAa NoahvdAa left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I scrolled through this very quickly and here are a few things I've noticed:

patches/api/0329-Per-player-viewdistances.patch Outdated Show resolved Hide resolved
patches/api/0329-Per-player-viewdistances.patch Outdated Show resolved Hide resolved
patches/api/0329-Per-player-viewdistances.patch Outdated Show resolved Hide resolved
patches/server/0747-MC-Dev-fixes.patch Outdated Show resolved Hide resolved
patches/server/0749-Fix-incorrect-isRealPlayer-init.patch Outdated Show resolved Hide resolved
patches/server/0785-Lag-compensate-block-breaking.patch Outdated Show resolved Hide resolved
patches/server/0785-Lag-compensate-block-breaking.patch Outdated Show resolved Hide resolved
Copy link
Member

@kennytv kennytv left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Don't forget to run ./gradlew wrapper --gradle-version=7.2

Copy link
Contributor

@Proximyst Proximyst left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Got around halfway down the page, will do the rest later today. Looking good so far :)
It goes without saying that both I and the rest of the community appreciates your work.

I'm not entirely sure around Paperweight's abilities with forks, but I assume there were no access transformers for you with that in Tuinity?

patches/api/0329-Per-player-viewdistances.patch Outdated Show resolved Hide resolved
patches/server/0748-Util-patch.patch Outdated Show resolved Hide resolved
patches/server/0748-Util-patch.patch Outdated Show resolved Hide resolved
patches/server/0748-Util-patch.patch Outdated Show resolved Hide resolved
patches/server/0748-Util-patch.patch Outdated Show resolved Hide resolved
patches/server/0754-Rewrite-the-light-engine.patch Outdated Show resolved Hide resolved
patches/server/0754-Rewrite-the-light-engine.patch Outdated Show resolved Hide resolved
patches/server/0754-Rewrite-the-light-engine.patch Outdated Show resolved Hide resolved
patches/server/0754-Rewrite-the-light-engine.patch Outdated Show resolved Hide resolved
patches/server/0754-Rewrite-the-light-engine.patch Outdated Show resolved Hide resolved
@Spottedleaf
Copy link
Member Author

I have updated the jar to include a fix for usercache erroring out while saving

might fix merge conflicts
Neither the converters of pre 1.13 nor DFU handled these cases,
as by the time they were written the game at the time didn't
consider these ids valid - they would be air. Because of this,
some worlds have logspam since only DataConverter (not DFU or
legacy converters) will warn when an invalid id has been
seen.

While quite a few do need to now be considered as air, quite a lot
do not. So it makes sense to add conversion for these items, instead
of simply suppressing or ignoring the logs. I've now added id -> string conversion
for all block ids that could be used as items that existed in the game
before 1.7.10 (I have no interest in tracking down the
exact version block ids stopped working) that were on
https://minecraft-ids.grahamedgecombe.com/

Items that did not directly convert to new items will
be instead converted to air: stems, wheat crops, piston head,
tripwire wire block
The DFU code was checking if the number existed, not if it
didn't exist. I misread the original code.
Also place it under `chunk-loading`
@Spottedleaf
Copy link
Member Author

I've updated the jar to have higher limits for chunk loading by default, as well as reductions in worldgen thread allocation for lower cpu counts

@Spottedleaf
Copy link
Member Author

I've uploaded another jar that will disable the max chunk send limit by default.

@Spottedleaf
Copy link
Member Author

I've done the final adjustment to config to bring it back to tuinity default levels for the player chunk loader scheduler. It seems to be the balance between minimizing slow chunk loading complaints and ensuring the server doesn't send too many chunks to overload networking.

This is ready for review now.

Copy link
Member

@electronicboy electronicboy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've looked over this a few times, and bar there being too much to go line by line nit-picking, the patches here seem good overall, the work in here has already heavily been battle-tested so I personally have no reasons to hold this up, so, giving my approval

probably some random bits and bats like ATs which could be cleaned up but given the scope here that sounds like busy-work that can be done over time/as needed

@Proximyst Proximyst self-requested a review August 31, 2021 08:20
While a low limit fixes ping issues for some people, most people
do not suffer from this issue and thus should not suffer from
an extremely slow load-in rate.
Autosquash the fixups
Missed this one
The prioritisation must be kept from it, so that part
has been rebased into the priority patch.
Part 2 will deal with rebasing all of the patches _after_
The class is immutable. set should not be exposed
@Spottedleaf Spottedleaf merged commit 7d10cde into PaperMC:master Aug 31, 2021
@electronicboy
Copy link
Member

reverting until a doc PR is created

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet