I have some not-great news, tl;dr I am not sure when or if Magic is going to support 1.20.5
Development of this plugin has been slowed for a while now, basically reduced to maintenance and updates for new MC versions. I haven't had the time nor energy to do much else with it.
Unfortunately, 1.20.5 has several major internal changes, most particularly the treatment of NBT data, which has caused major issues for updating Magic. I've spent quite a few hours on it already but there's no real clean end or fix in sight.
So for now I am afraid I will have to say the plugin will not be updated.
This may change in the future, but I can't make any guarantees. If Magic does get updated, it will be via one of two methods:
I patch up all the uses of NBT and let the plugin hobble forward full of band-aids.
I re-work Magic internally to make a version that doesn't rely on MC internals, and only uses the Spigot API
Approach #2 is one I've considered doing and even started work on several times in the past. It would be an ideal solution for me since it would make the plugin future-proof, no longer requiring updates for each new version of Spigot/Minecraft.
However, it is a lot of work and would come with several trade-offs. Probably many systems would not make the cut, such as custom mob AI and schematic loading.
Additionally, it's very unlikely that such a plugin would be backwards-compatible with existing Magic items. I would make sure that configs work and are forward-compatible (minus missing systems like mob AI), but the plugin would be unable to read NBT data saved by previous versions of the plugin. Meaning any server that wanted to move to this new version would basically have to reset all Magic items.
I know none of this is good news, but I'm hoping you understand where I am at and that I just don't have time to dedicate to the now-monumental task of keeping this plugin updated.
It's been a joy working for and with many of you over the years, and I hope you all continue to thrive, with or without Magic.
- NathanWolf
Server Compatibility
Please make sure you download the correct version for your server:
Magic is a plugin that adds powerful magic wands, items, mobs and more to your server. With over 200 spells, a variety of wand templates, and complete customization, you can use Magic to craft a unique experience for your server.
The default experience is an "RPG lite" extension to survival. Other examples are included, such as a Harry Potter setup, Star Wars, GTA-Style guns and cars, elemental bending and more.
Magic is infinitely customizable, allowing you to script your own spells, actions, items, mobs and anything else you see done in the included example configurations.
Live Demo
If you'd like to try out Magic, please go to our development server:
This plugin uses bstats for metrics collection. The information sent to bstats.org is completely anonymous, publicly viewable, and includes the following metrics:
A unique identifier
The server's version of Java
Whether the server is in offline or online mode
The plugin's version
The server's version
The OS version/name and architecture
The core count for the CPU
The number of players online
The Metrics version
Opting out of this service can be done by editing plugins/Plugin Metrics/config.yml and changing opt-out to true, or by editing this plugin's config.yml and changing "metrics_level" to 0.
Yes, there are a couple that I can think of offhand:
Use command blocks and commands like "wandp @p[r=2] add blink" or "wandp @p[r=2] upgrade xp_max 1000". There is no way to charge money for this
Use any other plugin that can run commands, there are some that can charge money
You can also use commands like "wandp @p[r=2] combine random(40)" to emulate enchanating (that will add 40 levels to the wand). But again, hard to control if you can't charge for it.
Use magic items, sell with Traders or Essentials signs
A "magic item" is basically a wand that you can't use, but instead adds to other wands. There are a few examples in the default config. Then on an Essentials sign, you could put "wand: mana2" for instance to sell a mana upgrade.
There is no way to sell an upgrade item that is randomized. I think I could make it so you could do like "upgrade: random(40)" for a randomly-generated level 40 wand upgrade. If that'd be useful, let me know and I'll add it to Jira (or you can open a Ticket yourself, of course!)
Indeed :) I have an issue in Jira for an idea on how to fix this, but it won't happen anytime soon, probably. At this point there are a great variety of spells that essentially violate the laws of conservation of matter, and therefore any economy you may have that's based on blocks.
I'd love it if you'd share any ideas you have on this here:
RCKing57 Strikes the Magic plugin site yet again!
Since I have 2 friends who like to troll to annoy me and some others regularly, they just discovered this Magic plugin on my server.
You said that this plugin was supposed to be a vanilla add-on, but I'm not sure if you added the feature to duplicate blocks because you wanted it or because you didn't notice it:
Using "Hat" , you can put a Dia_block on your head and take it again, changing it into 9 diamond, while the original Diamond block still remains, making it possible to have unlimited diamonds (example). I don't think this is the only vanilla-breaking spell.
With those 2 friends I have now I'm sure I can test a lot of things though :D
Just wanted to note you about it, sorry if you already knew it making me have you read something you already knew.
RCKing57
Sure, I'll add that to Jira- or if you'd like to add it, feel free. You'd get email notifications when the issue is updated, and I also tend to give preference to issues reported by other people (I have a special list on the dashboard).
That said, no idea idea how hard this will be or when I'll get to it, I've never used Towny- but I generally like the idea of Magic being compatible with as many protection plugins as possible (I sure wish there was a Vault-like intermediate API for protection....)
Another request:
Since you have factions support (protection),
could you also add Towny Advanced support maybe?
Explosion spells like nuke are already protected (since it's a explosion),
but spells like Tunnel aren't protected, meaning you can destroy an enemy town.
Thank you once again
3.1 is of course well on it's way by now, but it's still exciting :)
EDIT: Since I mentioned 3.1, I wanted to note that it will be able to do some cool stuff. Rollback will work with spells like Fireball, Wither, Grenade, Blast, Collapse.
Basically I've been working on undoable explosions and falling blocks. I have a good number of cases covered, but some pesky ones (like Sandblast and other "naturally spawned" falling blocks) remain.
Hey I wanna to ask something. How do automata spells work? I have tried one by one (worm, hunter, defender, animate) but I see nothing moving. The redstone block and command block was created, and the message that tell the automata creature has spawned also displayed. But I didn't see any movement on the "creature". Or I had to do something to make the automata "alive"?
Edit:
Command block was initially set to false in my server-properties. Now the automatas work. xD Gonna try it all.
I do see now where you are going to. And sorry I know nothing about Java, so I can't help you at all about it yet.
But I can help you by giving some suggestions. Maybe we can go to what you tried to reach, using another way, even if we do not making any plugin integration through Java. Firstly, you should take a look at this plugin (yes, another plugin, I know it seemed weird for you that I naming another plugin after another plugin, but before you judge, you should considering it), VariableTriggers. That plugin almost can do anything if you know about coding (sadly that's my weakness, I'm not good at coding either xD. But at least I can produce some little things by some workaround and simplifying the system). Maybe you can make your quests using it without having some headache to do some API integration through Java. The process might not that profesional rather than working on Java, but if the result was the same, what's the matter?
For the wand-buying system (I mean, players buying from a shop), I have tested it using SignChestShop, I set a shop that selling wands. The wands that bought from the shop still working. Even though you have upgraded it, renamed it, or whatever you have done to the wands, its still working even if you put it in the shop.
And for the wand-selling system (I mean, players sell to the shop), I still have no idea how to working on it. Maybe you can simply deletes the wand that being sold by player. But the problem is how to determine the item is a wand or not? :S
It fits in perfectly with the overall goal of Magic, in-game interaction with no commands
It works really well in an RPG-style environment like my world, no hokey signs or chests
It was the first nice-looking plugin suggested to me :)
I'd maybe be up for integrating with more plugins eventually, but at this point dtlTraders is it. I'm almost considering releasing that half-working, since I just can't seem to get selling to work.
It's a huge pain, basically. These are complex items. You can't just set up a sign or trader to buy a "Villager wand" - because what does that mean? Does he only buy back exactly that wand as if it were freshly created? What if you've upgraded it, enchanted it, renamed it, modified it, etc....
dtlTraders has a lot of flexibility there, if I can get it working, which is another reason I chose it. I can set up "quests" involving crafting a specific wand, or obtaining and then selling a particular spell, that kind of thing. It has a really great flexible framework to support all of this in its API - however, it took a tremendous amount of work to support. Wands are complex items, much more complex than your average MC item. A normal item may have up to maybe 5 separate enchants on it- wands have dozens of different properties that could be set.
For example, take a look at what it took to properly integrate with dtlTraders:
It was a lot of work! And it's still not quite right. I'm not saying it'll take that much work for every shop/trader plugin I want to integrate with. Selling wands is actually pretty easy (I support Essentials sign shops, too)- but buying them back is a whole nother story.
And for these fancy inventory-based shops, they like to make copies of the wand which generally breaks them. All of this dtlTraders integration was required for Magic to even work at all while the plugin was there- otherwise, it'd destroy any wands you're holding just by interacting with a trader, much like this custom enchant plugin.
Unfortunately, and here's where I rant, Bukkit has taken a very hard stance on supporting custom item data, which is why everything destroys it. It's really a bummer. :(
Oh and if you dont mind, why did you choose dtlTraders over any other shop plugin? Because I have looked at dltTraders and it seemed have same features with other shop plugins (but I can be wrong, because I did not tried the plugin yet).
If you dont mind using another shop plugin, I suggest you to look at SignChestShop and FancyShop, both of them using inventory-based shop. And on top of that, SignChestShop have minimal configuration to take it to its full effectiveness, you almost don't need to setting anything. And you can set the items price easily using some chat commands.
@pwollan
Yes, there are a couple that I can think of offhand:
A "magic item" is basically a wand that you can't use, but instead adds to other wands. There are a few examples in the default config. Then on an Essentials sign, you could put "wand: mana2" for instance to sell a mana upgrade.
There is no way to sell an upgrade item that is randomized. I think I could make it so you could do like "upgrade: random(40)" for a randomly-generated level 40 wand upgrade. If that'd be useful, let me know and I'll add it to Jira (or you can open a Ticket yourself, of course!)
I have other plugins in my server causing the wands to break when I try to upgrade them, is there any other way to upgrade a wand?
Showing off some of the upcoming features of the revamped Rollback system in 3.1:
@RCKing57
Indeed :) I have an issue in Jira for an idea on how to fix this, but it won't happen anytime soon, probably. At this point there are a great variety of spells that essentially violate the laws of conservation of matter, and therefore any economy you may have that's based on blocks.
I'd love it if you'd share any ideas you have on this here:
http://jira.elmakers.com/browse/MAGIC-48
EDIT: I did make a specific fix to Hat, though. Magic hats now disappear when clicked. There are probably still ways around this, but it's a start.
Thanks!
RCKing57 Strikes the Magic plugin site yet again! Since I have 2 friends who like to troll to annoy me and some others regularly, they just discovered this Magic plugin on my server. You said that this plugin was supposed to be a vanilla add-on, but I'm not sure if you added the feature to duplicate blocks because you wanted it or because you didn't notice it: Using "Hat" , you can put a Dia_block on your head and take it again, changing it into 9 diamond, while the original Diamond block still remains, making it possible to have unlimited diamonds (example). I don't think this is the only vanilla-breaking spell. With those 2 friends I have now I'm sure I can test a lot of things though :D Just wanted to note you about it, sorry if you already knew it making me have you read something you already knew. RCKing57
@RCKing57
Hey, that's not a bad thing!
Glad I could help :)
Thank you :D (lol it looks like I'm a bot repeating "Thank You" everytime)
@RCKing57
Sure, I'll add that to Jira- or if you'd like to add it, feel free. You'd get email notifications when the issue is updated, and I also tend to give preference to issues reported by other people (I have a special list on the dashboard).
That said, no idea idea how hard this will be or when I'll get to it, I've never used Towny- but I generally like the idea of Magic being compatible with as many protection plugins as possible (I sure wish there was a Vault-like intermediate API for protection....)
Another request: Since you have factions support (protection), could you also add Towny Advanced support maybe? Explosion spells like nuke are already protected (since it's a explosion), but spells like Tunnel aren't protected, meaning you can destroy an enemy town. Thank you once again
@NathanWolf
Thank you :D Now I don't need to make a shop where you can buy Blaze rods and Nether stars everytime they want a wand.
Yay! 3.0 was finally accepted!
3.1 is of course well on it's way by now, but it's still exciting :)
EDIT: Since I mentioned 3.1, I wanted to note that it will be able to do some cool stuff. Rollback will work with spells like Fireball, Wither, Grenade, Blast, Collapse.
Basically I've been working on undoable explosions and falling blocks. I have a good number of cases covered, but some pesky ones (like Sandblast and other "naturally spawned" falling blocks) remain.
@RCKing57
Ah, yes, sorry, I guess I didn't have any docs on that - here ya go!
http://dev.bukkit.org/bukkit-plugins/magic/pages/plugin-integration/
Scroll down a bit to the Essentials section, or, spoiler alert, it's really easy:
"wand: wizard" on the sign where you'd normally put an item name.. that's it! :)
How can you make essentials signs sell Wands? I cant find it anywhere. Thank You
Very nice plugin!
@shadowofdoom100
I always forget that command blocks are completely disabled by default!
Well, have fun :) And, thanks for the congrats!
@NathanWolf
Congratulation for the release. :)
Hey I wanna to ask something. How do automata spells work? I have tried one by one (worm, hunter, defender, animate) but I see nothing moving. The redstone block and command block was created, and the message that tell the automata creature has spawned also displayed. But I didn't see any movement on the "creature". Or I had to do something to make the automata "alive"?
Edit: Command block was initially set to false in my server-properties. Now the automatas work. xD Gonna try it all.
I'm very excited to announce that I just submitted Magic 3.0 for official release!
It's hard to believe I've been working on this plugin for over 3 years!
But, it's true. :) I hope it's been worth the wait!
@NathanWolf
I do see now where you are going to. And sorry I know nothing about Java, so I can't help you at all about it yet.
But I can help you by giving some suggestions. Maybe we can go to what you tried to reach, using another way, even if we do not making any plugin integration through Java. Firstly, you should take a look at this plugin (yes, another plugin, I know it seemed weird for you that I naming another plugin after another plugin, but before you judge, you should considering it), VariableTriggers. That plugin almost can do anything if you know about coding (sadly that's my weakness, I'm not good at coding either xD. But at least I can produce some little things by some workaround and simplifying the system). Maybe you can make your quests using it without having some headache to do some API integration through Java. The process might not that profesional rather than working on Java, but if the result was the same, what's the matter?
For the wand-buying system (I mean, players buying from a shop), I have tested it using SignChestShop, I set a shop that selling wands. The wands that bought from the shop still working. Even though you have upgraded it, renamed it, or whatever you have done to the wands, its still working even if you put it in the shop.
And for the wand-selling system (I mean, players sell to the shop), I still have no idea how to working on it. Maybe you can simply deletes the wand that being sold by player. But the problem is how to determine the item is a wand or not? :S
@shadowofdoom100
I chose dtlTraders for a few reasons:
I'd maybe be up for integrating with more plugins eventually, but at this point dtlTraders is it. I'm almost considering releasing that half-working, since I just can't seem to get selling to work.
It's a huge pain, basically. These are complex items. You can't just set up a sign or trader to buy a "Villager wand" - because what does that mean? Does he only buy back exactly that wand as if it were freshly created? What if you've upgraded it, enchanted it, renamed it, modified it, etc....
dtlTraders has a lot of flexibility there, if I can get it working, which is another reason I chose it. I can set up "quests" involving crafting a specific wand, or obtaining and then selling a particular spell, that kind of thing. It has a really great flexible framework to support all of this in its API - however, it took a tremendous amount of work to support. Wands are complex items, much more complex than your average MC item. A normal item may have up to maybe 5 separate enchants on it- wands have dozens of different properties that could be set.
For example, take a look at what it took to properly integrate with dtlTraders:
https://github.com/elBukkit/MagicPlugin/tree/master/src/main/java/com/elmakers/mine/bukkit/traders
It was a lot of work! And it's still not quite right. I'm not saying it'll take that much work for every shop/trader plugin I want to integrate with. Selling wands is actually pretty easy (I support Essentials sign shops, too)- but buying them back is a whole nother story.
And for these fancy inventory-based shops, they like to make copies of the wand which generally breaks them. All of this dtlTraders integration was required for Magic to even work at all while the plugin was there- otherwise, it'd destroy any wands you're holding just by interacting with a trader, much like this custom enchant plugin.
Unfortunately, and here's where I rant, Bukkit has taken a very hard stance on supporting custom item data, which is why everything destroys it. It's really a bummer. :(
Oh and if you dont mind, why did you choose dtlTraders over any other shop plugin? Because I have looked at dltTraders and it seemed have same features with other shop plugins (but I can be wrong, because I did not tried the plugin yet).
If you dont mind using another shop plugin, I suggest you to look at SignChestShop and FancyShop, both of them using inventory-based shop. And on top of that, SignChestShop have minimal configuration to take it to its full effectiveness, you almost don't need to setting anything. And you can set the items price easily using some chat commands.
Edit: @NathanWolf
That will be cool. If it ended up to what we expected about, it will be solving the issue. :D