Magic
Server Compatibility
Please make sure you download the correct version for your server:
-
1.9.3 and up => Latest Build
-
1.8.8: => Magic-5.5.6
-
1.8.3: => Magic-5.3.3
-
1.7.x => Magic-CB1.x
-
Earlier: => Check Compatibility in Files Section
Need Help? First Try:
-
Check the FAQ
-
Read the rest of the wiki
-
Check the reference manual for configuration options
-
Check the config info page for spell, wand and other info
-
Find examples in the builtin configs
-
Check your logs for errors
If you can't find what you're looking for, come join us on Discord for help or ideas!
Found a bug? Have a Feature Request?
- Use our issue tracker
Overview
Live Demo
Tutorial Videos
More Information
Please see the Magic home page on github for up-to-date information!
Metrics Collection
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.
Changelog
Full changelog can be viewed on github
@NathanWolf
Spawn and Recall work fine, but maybe there's something I'm not getting about Blink and Tesseract, as I got Tesseract to work once accidentally and then never again.
@Koba_Kaibutsu
Which ones in particular?
Spawn and recall are the same spell, and then blink, ascend and descend are a different one.
Which are you trying to use?
Having a hard time getting teleportation-category spells to work. Any advice?
@xs0lidus
That puts wands in chests as they spawn in the world- like in dungeons and such.
I was thinking of turning it off by default, but that creates the problem of trying to start a new server with the plugin, the world will generate before you get a chance to turn it on... ?
EDIT: You could also look at its configuration, in magic.yml- if you want to keep the functionality, just remove the "fire" wand from the list (and any others you don't want) and I think it should be OK.
@NathanWolf
I am using all default configs. Will turn off chest populating, what does it do btw?
@xs0lidus
Hrm- do you have a custom config? It looks like it's trying to add a non-existant wand to a chest. I'll see if I can fix that, and add better logging.
In the meantime, you can turn off the chest block populator in the config if it's a problem.
Glad that helps!
EDIT: Yeah, I think I found it, and it's my bad- there is a random chance of a "fire" wand being added to a chest, but I renamed that wand to "firebending". I'll put some protection in for this in the next version.
@NathanWolf
Perfect. This does everything I want it to do now. Here's a bug.. unsure what exactly causes it, I just know that I can TP to a different world and get kicked shortly after.
Image of console error: http://gfxf.net/images/2014/01/10/error.jpg
@xs0lidus
Yes, that should be true!
I think that would do it- you have to have 2.8.2 though.
You could also give out the "Magic.wand.fill" and not "Magic.wand.add".
This command (/wand fill) just fills your wand up with every spell you have permission for.
EDIT: I'm not sure this is what you want, but I thought I'd mention it anyway.
@NathanWolf
So if I'm understanding correctly, a player with:
magic.cast.boon
- Magic.wand.add.spell.boon
can use boon spell if picked up, but can't add it to a wand.
@Mre30
I'll be looking for a good Levelling/progression type of plugin! I always wanted to make my own, but at this point I'll bet there are some great ones out there I'd like to integrate with instead.
If they can run commands, you can use the new "wandp" system to control wand progression without permissions. This is more like levelling up their wand then levelling up the player, though, so maybe that wouldn't work out well.
I know a lot of people use permissions to control what spells players can cast, but personally I try to stay away from that.. if some noob stumbles across a super powerful wand, I say let them use it :D
@NathanWolf
I agree with all that! But don't hold your breath for the api addon lol.
For sure, GlobalMarket will and does work. But its only good for player2player sales.
I am actually trying to find a workaround... I normally do lol. I'll ask the dev from DTL what he thinks. He's a super nice guy.
I do have one option... you could enable some sort of exp system. As they level up, the more spells they can learn and the more types of wand the can sell. That would be a great option for p2p sales with GlobalMarket. While still having all the spells under each perm, maybe leave each level spell reward up to server owners.
Like, LvL 10 you get these 2 defined spells from a config.
I don't know, just throwing some ideas at you...
**EDIT!
Wait.. there is already a plugin for that lol. I'll look for it. Its a level up type plugin. At each level, you can add whatever perm you fell like and rewards lol
@Mre30
Wow, thanks for the great info and for testing that out!
I will have to think about how to do this. Unfortunately I don't have a fix for the creative inventory, and you are very correct that it's the same root problem.
I use custom NBT tag data to store information about a wand. This, in most cases, ensures that a wand never loses its spells or abilities- they stay with the item no matter what.
Except when they don't. Unfortunately, the "when they don't" seems to be mostly due to Bukkit not wanting me to use custom NBT tags. Whenever Bukkit internally makes a copy of the item stack, it strips all non-standard data from it.
This happens in a few places I can catch. This is why inventory interaction in and with a wand is sometimes wonky- if it feels like you moved a "magic" item and it glitched out, that was likely the plugin preventing an item copy that would've wiped the item's data. It's hacky, and unfortunate, but it works- the Bukkit DragItemEvent (which, thankfully, only occasionally fires) would otherwise destroy the item.
The same thing happens with the creative inventory- but from what I can tell, I have no way to detect that. There are no inventory open/close events for the creative inventory (it seems, in my testing). I have to imagine the client sends something, though, since otherwise the wand data wouldn't get wiped. I really want to find a fix for this in particular- I have to frequently go into creative because I love using Command blocks, but every time I do I always forget, open the creative inventory by accident, and wipe all my wands :\
Anyway... In my opinion, the real fix for this would be Bukkit providing a real, supported tag API for custom item metadata that was persistent, and preferably used NBT (since that is what it is for, item metadata) in a safe way.
Failing that, I'm going to keep looking for possible work-arounds, and in which case I may be able to fix the situation with DTLTraders and other plugins that want to make and give out copies of my wands. I would assume they also fail with other plugins that use custom NBT data for enchanted items- I know I'm not the only one...
I'll get the server files uploaded and show you the shop plugin i found to work.
Should not take to long... my main world isn't that very big.
Only glitch with DTLTraders is.... wand loses its data. BUT! It can be fixed.
While having a wand in your hotbar, open your inventory while in creative and close it. You'll notice that the wand loses its data.
If you fixed that, then it should work fine with DTLTraders. As he made DTLTraders to work with ANY item, no matter HOW custom it is. (with alot of testing and reporting on my part lol) But, it works flawlessly with GlobalMarket. But that is only good for player2player sales. For server2player, we would need the inventory glitch fixed. Then it should work with most gui type shops. And for those that want to use signs (chestshop), thell them to get with the new age of minecraft. Signs are waaaay outdated with all these new plugins coming out. Not to mention you can now make your own images, upload them to your webserver, and have them posted on maps in item frames. Much like you did on yours... you should see mine xD
Heck, you can even make custom inventories that give info of the server when you right click an npc! (chestcommands + Denizen + scripts)
@xs0lidus
EDIT: This was added in 2.8.2 as:
Magic.wand.add.spell.<spellname>
I also added Magic.wand.wand.<wand name> while I was add it. Yes, there are two "wand" nodes in there, it's kind of weird. This controls which wands they can get if you've given them /wand access.
There are separate pnodes for all the "wandp" commands, which let players do all the same things, but to the wand another player is holding. They can also use "/pwand <player> <wand>" to give players wands. These work in command blocks too :D
Here is a sample config - I'll be adding more configs for different variations to that file over time, but here is the sample I have now:
I also added a pnode for Magic.wand.add.material, which controls whether or not they can add new materials (any material) to their wand, if they have access to /wand and /wand add.
@NathanWolf
I didn't even consider that. Perhaps another set of permissions then?
magic.cast.<spellname>
magic.add.<spellname>
Allowing certain groups to use them if picked up, but not create them with /wand add
Though I guess the permissions approach could prevent some sort of class warfare as people kill off VIPs to take their wands... But now I'm just rambling.
@xs0lidus
Ah, ok! Well for what it's worth, I do all I can to avoid giving players access to any commands. The new wandp command gives you a lot of flexibility in automating or letting ops create and give out wands. You can also set them up in Essentials shops.
Anyway, not a big deal- though I realize from my last example, I should stress that giving players access to /cast is not a good idea :)
@NathanWolf
That helps greatly, thanks a lot. They were using /wand and /wand add btw.
@xs0lidus
Update: perhaps the problem is that spells have default true permissions? You'll need to do
- -Magic.cast.*
in the default group, I think.
I tried this out with Essentials GM, and it seems to work fine for one spell at a time, at least. I added this to my default group:
- Magic.commands.cast
- -Magic.cast.kaboom
And I could use /cast and wands, I could cast any spell except kaboom.
If the player doesn't have permission for a spell, it should be as if it doesn't exist at all to them. it won't show up in /spells, if they obtain a wand that knows the spell, it won't even select it or name it, etc.
I hope this helps!
@xs0lidus
Hrm - I haven't used zPermissions, and I don't regularly test with per-spell permissions but I know there are at least some servers that have this working.
I'll make sure it works with Essentials GroupManager - if it does, I could try testing zPermissions.
Are the rest of the plugin's permissions working at all? Can you control the /cast and /wand commands for instance? Are they using wands to cast, or /cast?