MagicSpells
Note: MagicSpells is being maintained on this GitHub fork and you can find help at the official Discord.
Info
MagicSpells is a Minecraft Bukkit plugin that creates magic spells your players can use. Its main purpose is to give your players access to certain abilities that you might not want to give them unlimited access to. However, instead of just giving them access to boring commands, they instead get more interesting spells. Each spell can be configured in many ways:
- Reagent costs (the cost of using the spell, including items, mana, health, hunger, experience, and item durability)
- Cooldowns (the amount of time a player must wait between uses)
- Durations (how long certain effects last)
- Ranges (how far away spells can be used from their target)
- Many more options, depending on the spell
Spells can be cast by using the /cast command, swinging a configurable wand item, or both. It's also possible to have them triggered from other actions the player may take. It's all customizable.
Usage
Before a player can cast a spell, they must already know it. There are several ways a player can learn a spell:
- Taught with the teach spell
- Learned from a spellbook
- Learned from a tome
- Gained from a grant permission
- Purchased from a shop
- Being a server op (they know all spells) For example, a server op can teach Bob the blink spell by typing: ''/cast teach bob blink''.
Once a spell is learned, it can be cast either by using the ''/cast'' command or by using a wand item. Now that Bob knows the blink spell, he can either cast it by command, by typing ''/cast blink'', or he can cast it with a wand item. To select the spell, he holds the wand in his hand and right clicks. Right clicking will cycle through any spells assigned to the item he is holding. When he has the one he wants, he left clicks to cast.
If Bob does not have the required reagents for the spell, or if he has cast it recently and it is still on cooldown, he will not be able to cast the spell and will instead receive an error message.
If mana is enabled, a player can use the ''/mana'' command to see how much mana they currently have. Mana can also be configured so it is displayed on the experience bar.
Useful Links
Videos
-
View User Profile
-
Send Message
Posted Sep 19, 2013@DiscipleGeek
Use it with craftbook! Then you can! :D
I am doing it for my server :) Together with other ways of aquiring magic.
-
View User Profile
-
Send Message
Posted Sep 19, 2013I am about to implement this on my server and my players are really excited for it. However, I am looking for a more Role Play way for them to learn the spells.
I'd really love to be able to have them craft the spell/scrolls...
I guess alternatively, since we have magic shops, if there would be a way to require multiple different items to "create" the book/scroll. What I'm seeing now in the config for magic shops is that they have different currencies you can buy them in, but only one type is required.
-
View User Profile
-
Send Message
Posted Sep 18, 2013@roguetrooper593
On that line the error is pointing out, you're missing a space after the colon.
-
View User Profile
-
Send Message
Posted Sep 18, 2013My player and I cannot cast or see what spells we know. here is the error report. Would you know why?
org.bukkit.configuration.InvalidConfigurationException while scanning a simple key
in "<string>", line 457, column 5:
cooldown:10
^
could not found expected ':'
in "<string>", line 458, column 5:
range: 15
^
at org.bukkit.configuration.file.YamlConfiguration.loadFromString(YamlConfiguration.java:55)
at org.bukkit.configuration.file.FileConfiguration.load(FileConfiguration.java:138)
at org.bukkit.configuration.file.FileConfiguration.load(FileConfiguration.java:105)
at com.nisovin.magicspells.util.MagicConfig.<init>(MagicConfig.java:91)
at com.nisovin.magicspells.MagicSpells.load(MagicSpells.java:163)
at com.nisovin.magicspells.CastCommand.onCommand(CastCommand.java:65)
at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44)
at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:192)
at org.bukkit.craftbukkit.v1_6_R2.CraftServer.dispatchCommand(CraftServer.java:523)
at net.minecraft.server.v1_6_R2.PlayerConnection.handleCommand(PlayerConnection.java:954)
at net.minecraft.server.v1_6_R2.PlayerConnection.chat(PlayerConnection.java:872)
at net.minecraft.server.v1_6_R2.PlayerConnection.a(PlayerConnection.java:829)
at net.minecraft.server.v1_6_R2.Packet3Chat.handle(SourceFile:49)
at net.minecraft.server.v1_6_R2.NetworkManager.b(NetworkManager.java:296)
at net.minecraft.server.v1_6_R2.PlayerConnection.e(PlayerConnection.java:116)
at net.minecraft.server.v1_6_R2.ServerConnection.b(SourceFile:37)
at net.minecraft.server.v1_6_R2.DedicatedServerConnection.b(SourceFile:30)
at net.minecraft.server.v1_6_R2.MinecraftServer.t(MinecraftServer.java:590)
at net.minecraft.server.v1_6_R2.DedicatedServer.t(DedicatedServer.java:226)
at net.minecraft.server.v1_6_R2.MinecraftServer.s(MinecraftServer.java:486)
at net.minecraft.server.v1_6_R2.MinecraftServer.run(MinecraftServer.java:419)
at net.minecraft.server.v1_6_R2.ThreadServerApplication.run(SourceFile:582)
Caused by: while scanning a simple key
in "<string>", line 457, column 5:
cooldown:10
^
could not found expected ':'
in "<string>", line 458, column 5:
range: 15
^
at org.yaml.snakeyaml.scanner.ScannerImpl.stalePossibleSimpleKeys(ScannerImpl.java:398)
at org.yaml.snakeyaml.scanner.ScannerImpl.needMoreTokens(ScannerImpl.java:229)
at org.yaml.snakeyaml.scanner.ScannerImpl.checkToken(ScannerImpl.java:178)
at org.yaml.snakeyaml.parser.ParserImpl$ParseBlockMappingKey.produce(ParserImpl.java:563)
at org.yaml.snakeyaml.parser.ParserImpl.peekEvent(ParserImpl.java:161)
at org.yaml.snakeyaml.parser.ParserImpl.checkEvent(ParserImpl.java:146)
at org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java:230)
at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:160)
at org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java:237)
at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:160)
at org.yaml.snakeyaml.composer.Composer.composeDocument(Composer.java:123)
at org.yaml.snakeyaml.composer.Composer.getSingleNode(Composer.java:106)
at org.yaml.snakeyaml.constructor.BaseConstructor.getSingleData(BaseConstructor.java:121)
at org.yaml.snakeyaml.Yaml.loadFromReader(Yaml.java:480)
at org.yaml.snakeyaml.Yaml.load(Yaml.java:399)
at org.bukkit.configuration.file.YamlConfiguration.loadFromString(YamlConfiguration.java:53)
... 21 more
while scanning a simple key
in "<string>", line 457, column 5:
cooldown:10
^
could not found expected ':'
in "<string>", line 458, column 5:
range: 15
^
at org.yaml.snakeyaml.scanner.ScannerImpl.stalePossibleSimpleKeys(ScannerImpl.java:398)
at org.yaml.snakeyaml.scanner.ScannerImpl.needMoreTokens(ScannerImpl.java:229)
at org.yaml.snakeyaml.scanner.ScannerImpl.checkToken(ScannerImpl.java:178)
at org.yaml.snakeyaml.parser.ParserImpl$ParseBlockMappingKey.produce(ParserImpl.java:563)
at org.yaml.snakeyaml.parser.ParserImpl.peekEvent(ParserImpl.java:161)
at org.yaml.snakeyaml.parser.ParserImpl.checkEvent(ParserImpl.java:146)
at org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java:230)
at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:160)
at org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java:237)
at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:160)
at org.yaml.snakeyaml.composer.Composer.composeDocument(Composer.java:123)
at org.yaml.snakeyaml.composer.Composer.getSingleNode(Composer.java:106)
at org.yaml.snakeyaml.constructor.BaseConstructor.getSingleData(BaseConstructor.java:121)
at org.yaml.snakeyaml.Yaml.loadFromReader(Yaml.java:480)
at org.yaml.snakeyaml.Yaml.load(Yaml.java:399)
at org.bukkit.configuration.file.YamlConfiguration.loadFromString(YamlConfiguration.java:53)
at org.bukkit.configuration.file.FileConfiguration.load(FileConfiguration.java:138)
at org.bukkit.configuration.file.FileConfiguration.load(FileConfiguration.java:105)
at com.nisovin.magicspells.util.MagicConfig.<init>(MagicConfig.java:91)
at com.nisovin.magicspells.MagicSpells.load(MagicSpells.java:163)
at com.nisovin.magicspells.CastCommand.onCommand(CastCommand.java:65)
at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44)
at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:192)
at org.bukkit.craftbukkit.v1_6_R2.CraftServer.dispatchCommand(CraftServer.java:523)
at net.minecraft.server.v1_6_R2.PlayerConnection.handleCommand(PlayerConnection.java:954)
at net.minecraft.server.v1_6_R2.PlayerConnection.chat(PlayerConnection.java:872)
at net.minecraft.server.v1_6_R2.PlayerConnection.a(PlayerConnection.java:829)
at net.minecraft.server.v1_6_R2.Packet3Chat.handle(SourceFile:49)
at net.minecraft.server.v1_6_R2.NetworkManager.b(NetworkManager.java:296)
at net.minecraft.server.v1_6_R2.PlayerConnection.e(PlayerConnection.java:116)
at net.minecraft.server.v1_6_R2.ServerConnection.b(SourceFile:37)
at net.minecraft.server.v1_6_R2.DedicatedServerConnection.b(SourceFile:30)
at net.minecraft.server.v1_6_R2.MinecraftServer.t(MinecraftServer.java:590)
at net.minecraft.server.v1_6_R2.DedicatedServer.t(DedicatedServer.java:226)
at net.minecraft.server.v1_6_R2.MinecraftServer.s(MinecraftServer.java:486)
at net.minecraft.server.v1_6_R2.MinecraftServer.run(MinecraftServer.java:419)
at net.minecraft.server.v1_6_R2.ThreadServerApplication.run(SourceFile:582)
Server version: git-Bukkit-1.6.2-R1.0-b2879jnks (MC: 1.6.2)
MagicSpells version: 3.0-b3
-
View User Profile
-
Send Message
Posted Sep 18, 2013@Marcoral
Thats weird then, cose my armor spell is working fine. Only time i could take it off was when i was on creative mod. Make sure you don't have permanent: true . Im using v3.0-b3
-
View User Profile
-
Send Message
Posted Sep 18, 2013Is the armor spell bugged? I can take off fe. helmet, drop it, pick up and wear again, without limit. Is there any chance to fix it?
-
View User Profile
-
Send Message
Posted Sep 17, 2013I have a suggestion regarding this amazing mod, but it's not an idea for a new spell. I was thinking that in order for players to learn new spells. Put a piece of paper in an enchanting table (that has bookshelves around it), and then you could use your actual XP levels to make a scroll of "x" spell. When you use that scroll you learn the spell. It's just a thought. (It would also be great if this was configurable).
-
View User Profile
-
Send Message
Posted Sep 17, 2013@Marcoral Well, it took me while :p but all you have to do is put it like in costs like this:
-
View User Profile
-
Send Message
Posted Sep 17, 2013@Mordrogg
Thanks for reply, but I still need your (or somebody else) help. What should I write in the config to make spell, that will summon fe. 2x more potion ingredients than default? It should look as below, or totally different? http://pastebin.com/AkyTBNTn
Hope you reply again, asap, thanks one more time :)
-
View User Profile
-
Send Message
Posted Sep 17, 2013@Marcoral You can use "replaces" and "prerequisites" from Spell Configuration @Flamestar666
Yes, place "|(name)" after item
@DivinityCraft
You can go: .TargetedMultiSpell or make 2 particle projectile spell with .MultiSpell
-
View User Profile
-
Send Message
Posted Sep 17, 2013I'm trying to get the particle projectile spell to cast two potion effect spells on targets it hits. I've tried using both multi spells for this but neither works when used with particle projectile. Can anyone else make it work?
-
View User Profile
-
Send Message
Posted Sep 17, 2013Just out of curiosity, is it possible to conjure armor and items with names?
-
View User Profile
-
Send Message
Posted Sep 17, 2013It is possible to add spells levels? For example: If I have 1st level conjure spell I can summon golden nugget, but if I have 5th level I can summon diamond :D
-
View User Profile
-
Send Message
Posted Sep 16, 2013Third beta build now available:
http://dev.bukkit.org/bukkit-plugins/magicspells/files/41-v3-0-b3/
-
View User Profile
-
Send Message
Posted Sep 16, 2013I'm having issues with dance casting.
general.yml: http://dev.bukkit.org/paste/8530/
I right click with a piece of stone, which is my dance cast item, and nothing happens. I have a spell set up with a dance sequence also. Anyone have this worked out?
-
View User Profile
-
Send Message
Posted Sep 16, 2013@MasterMithrandir
Your complaint was that all spells weren't being granted to OPs, but you also said you have no problem casting spells. Since being able to cast a spell requires 2 permissions, magicpsells.cast.spell and ,magicspells.grant.spell, and being OP just give you the last one, if you meet these 2 requirements and can't cast some spells I can only assume they are not present in your config file
-
View User Profile
-
Send Message
Posted Sep 15, 2013@machado197328
I have no issue with casting spells :S did you read what I said properly?
-
View User Profile
-
Send Message
Posted Sep 14, 2013Is there a tutorial on how to create a spell using the Dance Cast? I really need help with this. I don't even know where to start.
-
View User Profile
-
Send Message
Posted Sep 14, 2013@MasterMithrandir
having the spell doesn't mean you can cast them, you need the cast permission aswell. Take a permission plugin and add magicspells.cast.* to your group
-
View User Profile
-
Send Message
Posted Sep 14, 2013@nisovin
Being OP does not grant me all spells, even having the correct settings on general.yml: ops-have-all-spells: true
This might have something to do with new spells being added and old ones replaced/removed, I've been using this plugin for quite a few months. It also conflicts with NoCheatPlus.
nisovin, could you answer my pm about Shopkeepers please :)