elBukkit / MagicPlugin

A Bukkit plugin for spells, wands and other magic
http://mine.elmakers.com
MIT License
232 stars 152 forks source link

[Question] Compatibility with upcoming 1.20.5/1.21 technical features & changes #1344

Open NightScythe1 opened 2 months ago

NightScythe1 commented 2 months ago

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!

NathanWolf commented 2 months ago

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.

NightScythe1 commented 2 months ago

Thanks so much for the speedy response! Here's hoping things will be smooth sailing once Spigot begins to update :)

NathanWolf commented 2 months ago

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.

NightScythe1 commented 2 months ago

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?

NathanWolf commented 2 months ago

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:

NightScythe1 commented 2 months ago

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!