Disable the vanilla advancement system - #212
primitive0 wants to merge 1 commit into
Conversation
Old code that used advancements was removed or rewritten without them.
dd0c743 to
bdc577b
Compare
|
I don't think I will be accepting this PR as it stands, it is too destructive to the sensor behavior that deeds are anchored too and it's not something that can retroactively be swapped to just deeds. This needs more discussion on discord. But for now I am considering this PR blocked. I think the better solution is for myself or someone else to dump all registered advancements(with a small mcfunction or otherwise) and sort them and disable the front-facing ones. Advancements that are visible in the tabs are the only ones that toast/announce anyway, so any internal advancements are silent/quiet by default which means this change could be entirely done via kubeJS at the cost of a little extra load time |
|
I am gonna close this PR then because it's too destructive. |
Changes
This PR disables Minecraft's vanilla advancement system. It does this by disabling advancement loading on the logical server. The server no longer synchronizes advancements to clients, tracks their progression, grants rewards and makes announcements in chat. This change causes clients to see the server as having no advancements.
Advancement tab content was replaced with a placeholder.
Old Cosmic Core code uses advancements to track player progression and store progression data. In particular, advancements are used to prevent the player from entering the Nether and Firmament dimensions. This behavior was changed to enable the advancement removal: now to enter the Nether you need to weave "Nether Permit" deed. Code responsible for the Firmament dimension gating was removed, because Cosmic Core currently does not include "Firmament Permit" deed.
Testing
This PR was tested manually on Cosmic Frontiers 0.8.0 Nightly 10. The changes were backported to 0.19.0 version of the Cosmic Core. Testing was done only in a single-player world.
I checked that it is no longer possible to get "Minecraft", "Stone Age", "Getting an Upgrade" advancements. Also, dimension-gating behavior was tested.
Potential issues
Completely disabling the advancement system might make some mod items unobtainable. In the Cosmic Frontiers 0.8.0 Nightly 10 I granted myself all advancements and I got 49 level and two items:

I do not think that these items are important for the modpack progression, so it should not be a real problem.
Mod compatibility
This change should be compatible with mods in the modpack. Minecraft itself does not gate any progress based on advancements. I checked mods in the modpack for compatibility both manually and using AI. AI found that older versions of the Occultism mod relied on advancements to gate some progression, but this is not the case in 1.223.0.
I did not check tech mods, though. In my experience, tech mods usually gate progression in other ways.
Alternatives considered
Disabling advancement toasts, announcements and removing all advancements from the client tab
A less disruptive change, but I think that it would do more harm than good. The problem is that if a mod uses advancements to gate progression, then the player won't be able to see their progression within that mod. This may lead to situation like this: I can't perform action X because I don't have advancement Y, but advancement Y requires other advancements whose requirements I cannot see. If this situation arises, I suggest manually changing the mod progression to use FTB Quests rather than vanilla advancements.
Leaving advancements enabled
This was discussed in the Discord. In short, the vanilla advancement system harms modpack's storytelling and immersion.
Open questions
AI disclosure: an agent was used to do research and to review the changes. All changes were made by a human.