[Question] Compatibility with upcoming 1.20.5/1.21 technical features & changes
NightScythe1 opened this issue ยท 6 comments
Hello! Just wanted to query about how Magic is likely to play with the various upcoming technical changes due to arrive in the next few Minecraft updates. It seems that many existing functions for Datapacks, Resourcepacks, and other base game features are being completely overhauled/changed. For example, there are changes to item & entity tags, enchantments, attributes, entity data, and much more far beyond my own scope of understanding. Myself and some others on Discord just wanted to check & see if any of these changes are likely to interfere with Magic when it updates to these versions, perhaps causing any delays or incompatibilities when updating? Of course, it may be too difficult to say whether these will cause an issue ahead of their release (and ahead of any Spigot/Paper builds) but I just thought I'd ask anyway just in case, no worries if it's too early to say. Thanks!
My hope is always that Spigot is able to abstract away such changes, leaving only the sensitive parts of the plugin that don't rely on the Spigot API.
There's not a whole lot of that anymore, though. I'd like to reduce it as much as I can, so probably if anything comes up that's the direction I will go in.
I had planned (and started developing on) a new version of Magic that would be API-only, but I'm not sure I'll ever really finish it. It's also almost impossible to do while maintaining backwards compatibility since I rely on NBT tags outside of the way Spigot item metadata works.
Anyway, that all said, it is probably too early to say and I'll never really know until the update drops, and then only after the Spigot API updates.
Thanks so much for the speedy response! Here's hoping things will be smooth sailing once Spigot begins to update :)
Looking at 1.20.5 today, and there indeed are some pretty complex changes.
Lots of big changes to Mob AI and pathfinding which look messy.
Also changes to things that never get touched, like item NBT tags which are of course crucial to the plugin.
So this may take me a while. It may also accelerate my desire for an API-only (or close to it) version of Magic.
Ah, that's unfortunate... Though I suppose it's to be expected, given how much has changed in this update in relation to item NBT which of course Magic relies heavily on. (Though I will say it's strange that such massive changes came in a relatively minor version, rather than 1.21+.)
No worries about any delays in updating though, this clearly seems like a monumental task and as always your work is greatly appreciated! :)
I would also love to hear about the mechanisms/major differences of this potential API-only version of Magic- e.g. would this be functionally similar/different to how Magic works at the moment? Potentially be more future-proof?
The main idea would be to future-proof it, yeah.
Ideally I'd like to get to a point where the plugin generally doesn't need to update anymore when new Minecraft versions come out. Other than updating and fixing major bugs I don't really do much here anymore. So the ultimate goal would be to put the plugin into an indefinite "maintenance mode" sort of lifecycle and probably not update much anymore.
I know that's maybe not great to hear, but the truth is I just don't have time (and to a degree, interest) in the amount of work it takes to manage the plugin anymore. So having a future-proof base would take the pressure off and allow me to spend what time I do spend here on important (or maybe even fun) changes instead of the mundanity of slogging through these updates.
There are a few major obstacles to this mythical API-only plugin though:
- Compatibility with existing magic items. Spigot now has a way to store data on items, I could switch to this but there would be no way to read data off of existing items. So without some migration step, which would require an add-on or other plugin that would require updating, anyone moving to Magic 11 would basically have to do a server reset. I want to avoid that at all costs but can't really think of a good way. Some of these NBT changes may force my hand, we will see.
- Some deeper system, particularly mob AI, have no API equivalents. Without investing the time in creating and submitting a mob API (for instance), getting it approved and integrated into Spigot- it would be impossible to keep these features in an API-only Magic. I am considering throwing in the towel on mob AI since MythicMobs is so prevalent, but again we will see.
- Backwards compatibility. I'd probably just drop it. If/when Magic 11 ever happens it would likely only be compatible with the current Minecraft version (e.g. 1.21) and forward.
That's totally understandable, the sheer scope and capabilities of Magic are pretty monumental, so I can only imagine that constant maintenance to keep it all in working order with every new update must get exhausting, and I can 100% empathize with wanting to spend your time on more interesting things/occasional fun updates rather than constant version upgrades. In that case, an API-only version of Magic would be pretty phenomenal (if possible) to save the hassle & burnout from maintenance updates, as well as ensuring server-owners can update quickly. Speaking for myself here, I would be more than happy to migrate to this version & rebuild my servers and configs from the ground up in order to use it going forward. However, I can definitely see it being a struggle for others who rely on backwards compatibility, which Magic has always gone above and beyond to ensure compatibility with. Though it does get to a point where it becomes too much work to be worth maintaining, so if Magic 11 was only compatible with a certain version onwards, I expect many would understand.
I may not be very experienced in plugins or coding, but if you do ever decide to go forward with the API-only version, I'd be more than happy to help out rebuilding some of the base configs or doing any resourcepack work/maintenance if needed!