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

Minecraft 1.17: Update tracking issue #5785

Closed
9 tasks done
Proximyst opened this issue Jun 7, 2021 · 49 comments
Closed
9 tasks done

Minecraft 1.17: Update tracking issue #5785

Proximyst opened this issue Jun 7, 2021 · 49 comments
Labels
status: accepted Disputed bug is accepted as valid or Feature accepted as desired to be added. version: 1.17 Game version 1.17

Comments

@Proximyst
Copy link
Contributor

Proximyst commented Jun 7, 2021

Step -1 - Tracking the update process

This acts as a tracker for all issues and progress for the update to Minecraft 1.17.

Preliminarily, these are the points we will need to fulfill:

  • Spigot 1.17 release
  • Potentially update build scripts
  • Rebase API patches (over 300), resolving conflicts
  • Rebase Server patches (almost 800), resolving conflicts, preliminarily remove patches we believe are unnecessary
  • Fix compilation issues from previous steps
  • Finish remaining patches which were initially skipped
  • Fix server crash issues and other major issues discovered before test builds are released
  • Release regular test builds and resolve other critical issues
  • Once significant issues are fixed and no new significant issues come up for some amount of time (undecided), mark builds as stable and remove warnings about them being test builds

Any Paper team member may change the status of these, and more in-depth or important updates besides the milestones may be entered in the comments.

Spam comments such as asking for an ETA will be removed and you may be blocked from the organisation.


Like with any other Minecraft release, we get increasing volumes of questions on when Paper will be available. With that, we have a lot of work ahead of us -- all of which will be laid out in the following paragraphs. If you’d like to skip the reading and hop right into watching us do it live in the PaperMC voice channels, feel free to do so after the Spigot release.

Step 0 - Blocked on Spigot

Because Paper is a fork of Spigot, we have to wait until Spigot releases their 1.17 builds before any work on our end can start. Spigot has waited until the full major release for the previous two versions; therefore, the 1.17 Spigot release is our first milestone.

Step 1 - Preliminary work

Upon Spigot’s 1.17 release, we first need to ensure the build system will remain functional. Paper’s build system is prone to breakage at pretty much any major change from either Mojang or Spigot, and with this in mind, we will need to be thorough and analyze their changes (among which is likely the Java 16 bump).

Step 2 - Updating the API

Once we complete fixing the build system, our first task is to work on our 300+ API patches. In the best-case scenario, each patch applies automatically, however in the worst-case, we need to do a tonne of manual work. Most of the time, our various tools can deal with most of the changes and we are left to do the clean-up.

Step 3 - Updating the server

As soon as the API has been updated, we will work on the server itself by updating the nearly 800 patches we make to the server implementation. This follows the same process of updating the API, however with major changes of both Mojang and Spigot code during major updates in mind, our patches often require manual work in resolving issues. Additionally, during this process, we may find that some patches need to be dropped entirely because they are either unnecessary (such as bugs fixed upstream) or the code has changed enough to make the only viable option a careful rewrite later on. This is by far the most time-consuming step, and will likely take multiple days of ‘round-the-clock work by the PaperMC team and its lovely contributors.

Step 4 - Get it to compile

Once we finish updating the server, we then start to try to compile the server. This will always fail on the first try as some minor mistakes will occur in the previous steps.

Step 5 - Squash all the bugs

The final step is testing; most of the time the server will crash instantly due to behavioural changes in the server. This begins a cycle of testing, finding bugs, and fixing. Once all the immediately obvious bugs are fixed, we will likely open up a small server to have a few people help us test further to find more bugs. Once we get to the point where we feel we’ve tested our current progress enough, we will provide public test builds. These builds will still have bugs and we recommend you only run these on disposable test servers. If you do run these builds, be sure to report any issues you encounter, especially with plugins and game mechanics. They will often be fixed rather quickly. Once the rate of new issues slows down, it will be merged into the main branch and made our primary release such that everybody can download Paper 1.17 from our website. However, be warned, these are still very early builds and there will be dragons.

If any part of the Paper updating process sounds interesting to you, be sure to check in with us on our live-streams, in which several team members and contributors will stream themselves working on this project in turn. Join us, hang out with us, ask questions, and provide a little company for us on this often pretty monotonic and boring work.


Spam comments such as asking for an ETA will be removed and you may be blocked from the organisation.

@Proximyst Proximyst added status: accepted Disputed bug is accepted as valid or Feature accepted as desired to be added. version: 1.17 Game version 1.17 labels Jun 7, 2021
@PaperMC PaperMC locked and limited conversation to collaborators Jun 7, 2021
@Proximyst Proximyst pinned this issue Jun 7, 2021
@kashike kashike added this to Todo in Paper Development via automation Jun 8, 2021
@Proximyst
Copy link
Contributor Author

Proximyst commented Jun 8, 2021

Milestone: Minecraft 1.17 has been released. We are still awaiting the release of Spigot for Minecraft 1.17.

@Proximyst
Copy link
Contributor Author

Milestone: Spigot 1.17 has been released. We are now commencing work on Paper for 1.17.

@MiniDigger
Copy link
Member

MiniDigger commented Jun 11, 2021

todo: @MiniDigger | Martin log4j2 version needs bumping in pom.xml still, bom ✔️

@MiniDigger
Copy link
Member

headsup: due to build changes by spigot, the team has decided to revamp our build tools from the ground up. this does sound scary, but we have been working on this for a year already and are prepared, just need some finishing touches.

@kashike
Copy link
Member

kashike commented Jun 11, 2021

todo: Change maven packages to io.papermc base ✔️

@Proximyst
Copy link
Contributor Author

To do: update BungeeCord chat API to 1.17? Do we care?

@Proximyst
Copy link
Contributor Author

Proximyst commented Jun 11, 2021

To do: Move KeyedObject, ServerWorkerThread, MCUtil

@MiniDigger
Copy link
Member

MiniDigger commented Jun 11, 2021

todo: move patches into patches/api and patches/server ✔️

@kashike
Copy link
Member

kashike commented Jun 11, 2021

todo for @kashike: re-add packet fields in adventure #5844

@Proximyst
Copy link
Contributor Author

To do: Remove Aikar's cleaner compat util; we have the JDK 9+ classes without compromise now.

@Proximyst
Copy link
Contributor Author

To test: Ensure expired temp bans work correctly. cc @mrfloris

@MiniDigger
Copy link
Member

check that "Configurable mob spawner tick rate" was applied correctly

@MiniDigger
Copy link
Member

todo: figure out why "comment out useless overrides" in mcutil patch, blockpos class is suddenly needed now

@jpenilla
Copy link
Member

todo: sending resource packs now has a prompt Component, api should be updated eventually cc @Machine-Maker

@JRoy
Copy link
Member

JRoy commented Jun 12, 2021

todo: check custom player collisions patch to make sure it works (do we even want that anymore)

@MiniDigger
Copy link
Member

MiniDigger commented Jun 12, 2021

todo: check if title timings still accept -1 (string based action bar api) mini is dum dum

@MiniDigger
Copy link
Member

MiniDigger commented Jun 12, 2021

todo: explanation for build-data/mcdev-imports.txt:

# You can use this file to import files from vanilla into the project
# both fully qualified and a file based syntax are accepted here:
# net.minecraft.world.level.entity.LevelEntityGetterAdapter
# net/minecraft/world/level/entity/LevelEntityGetter.java

@MiniDigger
Copy link
Member

MiniDigger commented Jun 12, 2021

todo: check if we still want "Zs dum patch" (Add system property to disable book size limits) moved out

@aurorasmiles
Copy link
Contributor

aurorasmiles commented Jun 12, 2021

todo: check if we still need "fix dragon server crashes" - might be fixed in vanilla
no we don't

@electronicboy
Copy link
Member

electronicboy commented Jun 12, 2021

https://github.com/FabricMC/tiny-remapper/tree/remapbridges - "fixes" (Needs testing) what appears to be borking log4j in a spigot mapped jar

@aurorasmiles
Copy link
Contributor

aurorasmiles commented Jun 12, 2021

todo: check if we still need "fix exploit that allowed creating colored signs"

@electronicboy
Copy link
Member

work on kernel modules required for wingdings console support

@DenWav
Copy link
Member

DenWav commented Jun 12, 2021

todo: move project and package version info to Paper-Server module rather than in parent

@kashike kashike moved this from Todo to In progress in Paper Development Jun 12, 2021
@electronicboy
Copy link
Member

electronicboy commented Jun 12, 2021

port: #5793
PR'd

@DenWav
Copy link
Member

DenWav commented Jun 13, 2021

todo: check Improve death events patch

@DenWav
Copy link
Member

DenWav commented Jun 13, 2021

todo: check PiglinAi to PiglinAI conversion on Windows from forks issue

@DenWav
Copy link
Member

DenWav commented Jun 13, 2021

(minor) todo: check server size increase (20MB increase from 1.16.5)
This appears to have been fixed

@DenWav
Copy link
Member

DenWav commented Jun 13, 2021

todo: implement userdev paperweight plugin

@DenWav
Copy link
Member

DenWav commented Jun 13, 2021

todo: investigate index file issue with gradle daemon and clone<upstream> task in paperweight forks

If we figure out steps to reliably repro this then we can look into it. Until then, running ./gradlew --stop whenever this comes up fixes it.

@DenWav
Copy link
Member

DenWav commented Jun 13, 2021

todo: look into patch remap for forks

Added --skip-remapping-patches argument to remap patches task so forks can use it to skip remapping paper patches and just remap their own.

@kennytv
Copy link
Member

kennytv commented Jun 13, 2021

todo: see where 0100-Avoid-blocking-on-Network-Manager-creation went (and then apply diff in ServerConnectionListener in Optimize-Network-Manager-and-add-advanced-packet-sup.patch, see the old remapped patch)
edit: someone dropped the patch on accident, so it has to be readded + the other step mentioned

@kennytv
Copy link
Member

kennytv commented Jun 13, 2021

todo: when 0243-Add-Debug-Entities-option-to-debug-dupe-uuid-issues is re-added, move the added tracker field out of this patch: d421401#diff-47a662ae0531e46ecbf99f48d6042284fe1e79fc8927baa883012f312979afde

@aurorasmiles
Copy link
Contributor

aurorasmiles commented Jun 13, 2021

todo: look at

@MiniDigger
Copy link
Member

todo: check if fix-stuck-in-sneak-when-changing-worlds is still needed (mojira issue is closed)

@zachbr
Copy link
Contributor

zachbr commented Jun 13, 2021

todo: check if we still want "Zs dum patch" (Add system property to disable book size limits)

You probably don't. It was from a different time before books were as jank as they are now. As time has gone on they've only proven to be worse and worse.

@electronicboy
Copy link
Member

electronicboy commented Jun 13, 2021

Bees-get-gravity-in-void.-Fixes-MC-167279.patch - needs min height change

@JRoy
Copy link
Member

JRoy commented Jun 14, 2021

Don't mark null chunk sections for block updates needs to be checked, entire system around it has changed. May not even be needed

@MiniDigger
Copy link
Member

allow delegration to vanilla chunk gen is most certainly broke (like always)

@MiniDigger
Copy link
Member

MiniDigger commented Jun 14, 2021

deploy paperclip to paper repo (via action, @DenWav), then change repo in build.gradle.kts

@aurorasmiles
Copy link
Contributor

Milestone: We rebased all patches that we did not temporarily remove. The next step is now to re-add those removed patches. Those patches were initially skipped because they require a bit more in-depth examination. Some patches were removed because they are no longer necessary, those will not be added back.

@kennytv
Copy link
Member

kennytv commented Jun 15, 2021

todo: looked fine on brief testing of the 2 modes and disabled, but check if something has been missed in https://github.com/PaperMC/Paper/blob/eab6d9f53323bad608c7597ce9152a18f2e6ff15/patches/server/0364-Anti-Xray.patch just to be sure (probably didn't account for negative min y height?) it works with custom world height now, but still need to make it able to obfuscate blocks below y=0

@kennytv
Copy link
Member

kennytv commented Jun 15, 2021

note on 0438-Workaround-for-Client-Lag-Spikes-MC-162253: The ceilingLightMask method is too cursed to figure out what exactly is supposed to be met there, but this is updated to likely match the previous behavior: https://paste.gg/p/KennyTV/fb71550e4c0e4909b487b74efeb3d09f
I didn't obverse any difference in lag or no lag (and am not 100% sure it's correct), so I didn't pull it.

@electronicboy
Copy link
Member

TODO: incremental chunk saving does not seem to care about entities

@DenWav
Copy link
Member

DenWav commented Jun 16, 2021

FOR DEVELOPMENT TESTING ONLY

Current test build:

This is NOT a statement of when Paper 1.17 will be released. This jar is ALPHA SOFTWARE. DO NOT USE THIS FOR YOUR SERVER.

This is useful for those who want to help us test before we release actual test builds. This is useful for plugin developers who want to test compatibility.

DO NOT USE THIS FOR YOUR SERVER UNDER ANY CIRCUMSTANCES.

@kennytv
Copy link
Member

kennytv commented Jun 16, 2021

Fix this aaa already reported with the first test build above

@DenWav
Copy link
Member

DenWav commented Jun 18, 2021

FOR DEVELOPMENT TESTING ONLY

Experimental build 3:

This is NOT a statement of when Paper 1.17 will be released. This jar is ALPHA SOFTWARE. DO NOT USE THIS FOR YOUR SERVER.

This is useful for those who want to help us test before we release actual test builds. This is useful for plugin developers who want to test compatibility.

DO NOT USE THIS FOR YOUR SERVER UNDER ANY CIRCUMSTANCES.

@electronicboy
Copy link
Member

TODO: Investigate if aikars "catch all" dupe patch is still entirely needed

There are likely still parts of that patch which are relevant, but, in 1.17, mojang added a removal cause to entities which marks dead entities in a manner that they should not process death drops, etc, when removed for specific causes; This patch has caused one or two issues but has generally saved our asses before many various dupes have been found, however, at least the entity aspects, may actually be no longer needed

@DenWav
Copy link
Member

DenWav commented Jul 7, 2021

1.17.1 is released and we consider it stable. All issues related to 1.17 will be handled as a standard Paper issue now, rather than targeting a 1.17 release.

@DenWav DenWav closed this as completed Jul 7, 2021
Paper Development automation moved this from In progress to Done Jul 7, 2021
@Machine-Maker Machine-Maker unpinned this issue Jul 7, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
status: accepted Disputed bug is accepted as valid or Feature accepted as desired to be added. version: 1.17 Game version 1.17
Projects
Version 1.17
Awaiting triage
Development

No branches or pull requests

10 participants