EnderTurret / PatchedMod

A Minecraft mod that adds the ability for data/resource packs and mods to patch JSON files, allowing them to avoid the incompatibility of replacing files wholesale.
GNU Lesser General Public License v2.1
2 stars 0 forks source link

Port the changes to 1.20.1 #19

Closed SettingDust closed 1 month ago

SettingDust commented 1 month ago

I'm going to port that. Will you accept a PR that re-group the Gradle to make the Patched working on 1.20.1-1.21 in one jar? For instance https://modrinth.com/mod/preloading-tricks/versions

How about kotlin gradle script instead of Groovy?

EnderTurret commented 1 month ago

What's funny is that I already began backporting the changes a few days ago (albeit locally), so this offer is a bit late. Thanks for offering though.

I've gone ahead and pushed the changes I have right now so that the 1.20.1 branch is less of a ghost town. The backport isn't complete yet (it's missing the dynamic patching and new metadata stuff) but I plan to have that done this week. Actually starting the backport was the main reason it's taken about four months, since my setup is somewhat unusual and I really didn't want to switch branches and manually re-import the four projects just to do it again afterward. It also didn't help that my college classes started again and a hurricane showed up just to remove working power and water for two weeks.

As for the other parts of the offer, I'd rather not have a multiversion setup since a lot has changed in both the mixins involved and also the loaders (really only Forge → NeoForge). I also intend to drop 1.20.1 once 1.21.1 becomes the prevailing version since I don't want to maintain three versions at once (since I'm going to have to port to 1.21.2 in a week or two).

I would also like to keep the buildscript in Groovy since I don't know Kotlin and Groovy is what most of the Minecraft-related Gradle plugins have their documentation in. I also have some tooling reworks planned like swapping out NG for MDG and trying to yet again swap out VanillaGradle for literally anything else (probably also MDG), so rewriting the buildscript(s) in Kotlin would make this more difficult.

SettingDust commented 1 month ago

As for the other parts of the offer, I'd rather not have a multiversion setup since a lot has changed in both the mixins involved and also the loaders (really only Forge → NeoForge). I also intend to drop 1.20.1 once 1.21.1 becomes the prevailing version since I don't want to maintain three versions at once (since I'm going to have to port to 1.21.2 in a week or two).

It's need months before 1.21+ become the prevailing version, https://cflookup.com/MinecraftModStats. I think maintain 2 versions, 1.20.1 + latest is enough. Since you are maintaining the multiversions. A multiversions prject that abstract the common part is good for maintain

MDG instead of VG is a good choice :)

EnderTurret commented 1 month ago

It's need months before 1.21+ become the prevailing version, https://cflookup.com/MinecraftModStats.

I don't think it'll take that much longer for 1.21.1 to be perfectly usable with the 'standard' selection of mods available -- I think most new development is happening on 1.21.1 anyway.

I think maintain 2 versions, 1.20.1 + latest is enough.

In practice this would end up being 1.20.1, 1.21.1, and 1.21.x, since modders will likely avoid the breaking changes of >1.21.1, preferring to keep their development on 1.21.1 until 1.22 comes out (since this has happened on 1.19.x and 1.20.x). On Fabric this might be a different story; I know there's a lot of people who like being on the bleeding edge. (Also, those stats are somewhat misleading since they're counting all 1.20 versions, not just 1.20.1.)

Since you are maintaining the multiversions. A multiversions prject that abstract the common part is good for maintain

Regardless, I don't think multiversion would help me here. Not only would it involve learning a new setup, but it'd also entail an egregious number of hacks since Minecraft and mod loaders alike have changed a lot between 1.20.1 and 1.21.1. For common, you've got the weird zip pack changes, KnownPacks, etc. For forge, there's the move to NeoForge, runtime Mojmaps, the removal of DelegatingPackResources, etc. For quilt, there's the almost complete removal of QSL, which is why I've been unable to make a release for that. Finally, fabric has the removal of GroupResourcePack. All of these contribute to multiversion being kind of a pain, and while many of these could be worked around, some of them can't without self-transforming the code or having eight copies of everything floating around like some Architectury mods.

Besides, Patched doesn't require constant maintainance; it's designed to avoid it, both by having a dedicated library and having some Mojang-rewrote-resources-again protection. It also doesn't receive new features very often.

SettingDust commented 1 month ago

Besides, Patched doesn't require constant maintainance; it's designed to avoid it, both by having a dedicated library and having some Mojang-rewrote-resources-again protection. It also doesn't receive new features very often.

Fine