Enchantable Staffs is a mod that adds a few new staffs to the game. The point of this mod is to expand upon Minecraft's magic system, using the enchantment system. Instead of crafting different staffs for different purposes, with Enchantable Staffs you craft just a 'staff' which you can then enchant. There are still multiple types of staffs, however these do not have different functions or enchantments, rather they have better enchantability and more durability.
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
For more information on individual staffs, visit the wiki.

For more information on individual enchantments, visit the wiki.
Area Heal
Cleansing
Create Lava
Create Water
Critical
Cure Illness
Draconic Fireball
Dragon Breath
Elemental Efficiency
Explosion
Fireball
Flame Breath
Freeze Breath
Gills
Glow
Greater Heal
Heal
Lightning Bolt
Lightning Circle
Magical Strengthening
Necromancy
Ring of Fire
Spectral Wings
Summon Skeleton Horse
Teleport
Turn Undead
Warp
Weather Alteration
How can I make potions?, coz there are no recipes
In 1.18.2 seem like this mod unable to play on multiplayer
In reply to poomvixbo:
Could you make an issue on the issue page with the mod version, forge version of your client and server, and a short description of what you mean by 'unable to play' so I can look into it?
In reply to ISenseHostility:
Here the crashlog(I used latest version of 1.18 of the mod and forge version 40.1.48) It might be conflict with other mods since my custom modpack has 200+ mods. Also i don't have any other magic mods or mod that change any system of enchanting.
Time: 24/7/65 02:47Time: 24/7/65 02:47Description: Mod loading error has occurred
java.lang.Exception: Mod Loading has failed at net.minecraftforge.logging.CrashReportExtender.dumpModLoadingCrashReport(CrashReportExtender.java:55) ~[forge-1.18.2-40.1.48-universal.jar%23263!/:?] {re:classloading} at net.minecraftforge.server.loading.ServerModLoader.load(ServerModLoader.java:39) ~[forge-1.18.2-40.1.48-universal.jar%23263!/:?] {re:classloading} at net.minecraft.server.Main.main(Main.java:112) ~[server-1.18.2-20220404.173914-srg.jar%23258!/:?] {re:classloading,re:mixin,pl:mixin:A} at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?] {} at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?] {} at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?] {} at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?] {} at net.minecraftforge.fml.loading.targets.CommonServerLaunchHandler.lambda$launchService$0(CommonServerLaunchHandler.java:32) ~[fmlloader-1.18.2-40.1.48.jar%2316!/:?] {} at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:37) [modlauncher-9.1.3.jar%235!/:?] {} at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:53) [modlauncher-9.1.3.jar%235!/:?] {} at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:71) [modlauncher-9.1.3.jar%235!/:?] {} at cpw.mods.modlauncher.Launcher.run(Launcher.java:106) [modlauncher-9.1.3.jar%235!/:?] {} at cpw.mods.modlauncher.Launcher.main(Launcher.java:77) [modlauncher-9.1.3.jar%235!/:?] {} at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:26) [modlauncher-9.1.3.jar%235!/:?] {} at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:23) [modlauncher-9.1.3.jar%235!/:?] {} at cpw.mods.bootstraplauncher.BootstrapLauncher.main(BootstrapLauncher.java:149) [bootstraplauncher-1.0.0.jar:?] {}
A detailed walkthrough of the error, its code path and all known details is as follows:---------------------------------------------------------------------------------------
-- Head --Thread: mainStacktrace: at net.minecraftforge.fml.loading.RuntimeDistCleaner.processClassWithFlags(RuntimeDistCleaner.java:57) ~[fmlloader-1.18.2-40.1.48.jar%2316!/:1.0] {}-- MOD enchantable_staffs --Details: Caused by 0: java.lang.reflect.InvocationTargetException at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:?] {} at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77) ~[?:?] {} at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:?] {} at java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) ~[?:?] {} at java.lang.reflect.Constructor.newInstance(Constructor.java:480) ~[?:?] {} at net.minecraftforge.fml.javafmlmod.FMLModContainer.constructMod(FMLModContainer.java:67) ~[javafmllanguage-1.18.2-40.1.48.jar%23260!/:?] {} at net.minecraftforge.fml.ModContainer.lambda$buildTransitionHandler$4(ModContainer.java:106) ~[fmlcore-1.18.2-40.1.48.jar%23259!/:?] {} at java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1804) ~[?:?] {} at java.util.concurrent.CompletableFuture$AsyncRun.exec(CompletableFuture.java:1796) ~[?:?] {} at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373) ~[?:?] {} at java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182) ~[?:?] {} at java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655) ~[?:?] {re:computing_frames} at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622) ~[?:?] {re:computing_frames} at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165) ~[?:?] {}
Caused by 1: java.lang.BootstrapMethodError: java.lang.RuntimeException: Attempted to load class net/minecraft/client/player/LocalPlayer for invalid dist DEDICATED_SERVER at isensehostility.enchantable_staffs.item.StaffItems.<clinit>(StaffItems.java:17) ~[enchantable_staffs-1.18.2-2.1.0.jar%23108!/:2.0.0] {re:classloading} at isensehostility.enchantable_staffs.EnchantableStaffs.<init>(EnchantableStaffs.java:18) ~[enchantable_staffs-1.18.2-2.1.0.jar%23108!/:2.0.0] {re:classloading} at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:?] {} at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77) ~[?:?] {} at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:?] {} at java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) ~[?:?] {} at java.lang.reflect.Constructor.newInstance(Constructor.java:480) ~[?:?] {} at net.minecraftforge.fml.javafmlmod.FMLModContainer.constructMod(FMLModContainer.java:67) ~[javafmllanguage-1.18.2-40.1.48.jar%23260!/:?] {} at net.minecraftforge.fml.ModContainer.lambda$buildTransitionHandler$4(ModContainer.java:106) ~[fmlcore-1.18.2-40.1.48.jar%23259!/:?] {} at java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1804) ~[?:?] {} at java.util.concurrent.CompletableFuture$AsyncRun.exec(CompletableFuture.java:1796) ~[?:?] {} at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373) ~[?:?] {} at java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182) ~[?:?] {} at java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655) ~[?:?] {re:computing_frames} at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622) ~[?:?] {re:computing_frames} at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165) ~[?:?] {}
Mod File: enchantable_staffs-1.18.2-2.1.0.jar Failure message: Enchantable Staffs (enchantable_staffs) has failed to load correctly java.lang.reflect.InvocationTargetException: null Mod Version: 1.18.2-2.1.0 Mod Issue URL: Exception message: java.lang.RuntimeException: Attempted to load class net/minecraft/client/player/LocalPlayer for invalid dist DEDICATED_SERVERStacktrace: at net.minecraftforge.fml.loading.RuntimeDistCleaner.processClassWithFlags(RuntimeDistCleaner.java:57) ~[fmlloader-1.18.2-40.1.48.jar%2316!/:1.0] {} at cpw.mods.modlauncher.LaunchPluginHandler.offerClassNodeToPlugins(LaunchPluginHandler.java:88) ~[modlauncher-9.1.3.jar%235!/:?] {} at cpw.mods.modlauncher.ClassTransformer.transform(ClassTransformer.java:120) ~[modlauncher-9.1.3.jar%235!/:?] {} at cpw.mods.modlauncher.TransformingClassLoader.maybeTransformClassBytes(TransformingClassLoader.java:50) ~[modlauncher-9.1.3.jar%235!/:?] {} at cpw.mods.cl.ModuleClassLoader.readerToClass(ModuleClassLoader.java:110) ~[securejarhandler-1.0.3.jar:?] {} at cpw.mods.cl.ModuleClassLoader.lambda$findClass$16(ModuleClassLoader.java:216) ~[securejarhandler-1.0.3.jar:?] {} at cpw.mods.cl.ModuleClassLoader.loadFromModule(ModuleClassLoader.java:226) ~[securejarhandler-1.0.3.jar:?] {} at cpw.mods.cl.ModuleClassLoader.findClass(ModuleClassLoader.java:216) ~[securejarhandler-1.0.3.jar:?] {} at cpw.mods.cl.ModuleClassLoader.loadClass(ModuleClassLoader.java:132) ~[securejarhandler-1.0.3.jar:?] {} at java.lang.ClassLoader.loadClass(ClassLoader.java:520) ~[?:?] {} at isensehostility.enchantable_staffs.item.StaffItems.<clinit>(StaffItems.java:17) ~[enchantable_staffs-1.18.2-2.1.0.jar%23108!/:2.0.0] {re:classloading} at isensehostility.enchantable_staffs.EnchantableStaffs.<init>(EnchantableStaffs.java:18) ~[enchantable_staffs-1.18.2-2.1.0.jar%23108!/:2.0.0] {re:classloading} at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:?] {} at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77) ~[?:?] {} at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:?] {} at java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) ~[?:?] {} at java.lang.reflect.Constructor.newInstance(Constructor.java:480) ~[?:?] {} at net.minecraftforge.fml.javafmlmod.FMLModContainer.constructMod(FMLModContainer.java:67) ~[javafmllanguage-1.18.2-40.1.48.jar%23260!/:?] {} at net.minecraftforge.fml.ModContainer.lambda$buildTransitionHandler$4(ModContainer.java:106) ~[fmlcore-1.18.2-40.1.48.jar%23259!/:?] {} at java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1804) ~[?:?] {} at java.util.concurrent.CompletableFuture$AsyncRun.exec(CompletableFuture.java:1796) ~[?:?] {} at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373) ~[?:?] {} at java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182) ~[?:?] {} at java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655) ~[?:?] {re:computing_frames} at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622) ~[?:?] {re:computing_frames} at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165) ~[?:?] {}
In reply to poomvixbo:
Looks like I made a mistake in the code, it has been fixed and a new version should be available shortly :)
In reply to ISenseHostility:
It still crashing though, it just crash in deifferent reasons, This mod made other mods being the cause of it
In reply to poomvixbo:
Can you send the log?
In reply to ISenseHostility:
I'm so sorry the mod's working fine now.I just added this along with other mod i interest, turn out the other mod was the cause of it. My bad though
Awesome idea, thanks for the mod :D
This sounds wonderful! Are you planning to update this to 1.19 any time soon, and/or make it compatible with Fabric?
In reply to SimonTheSeventh:
I'm working on 1.19, but I have no plans to port to Fabric due to the fact that I would rather spend that time adding new things or fixing existing problems.
In reply to ISenseHostility:
Fair enough! Thank you for your answer and good luck <3
Finally vanilla friendly magic mod. Thanks for making this.
The warp staff doesn't seem to be working on my 1.16.5 server. Whether I shift+right click or just right click, it does nothing and sets the staff on cooldown, without taking any durability even. Other staffs seem to work just fine.
Great mod! Textures and enchantments are great, but there is one thing that I would really like to see in the mod. That thing is having the ability to enchant the staffs with unbreaking and mending. Making a quick charge enchantment that you can add to the wand would also be great (maybe even making it so that the already existing quick charge enchantment would work on the staffs.
Well, this is what i've been looking around about simple, nice and vanilla spells. But i don't like the idea of having a staff per enchantment, i suggest adding a special and magic type of paper, in which you can enchant. So, like different arrow's types, the staff should use the first enchanted paper in the hotbar or in the off-hand. Ik It's the same thing that carrying multiple staffs, but it should have their special feature.
Also, is there a way to disable the cooldown timer? In the config file I only can modify its position. Thanks for enhancing my free time, and keep going!
Been looking for a mod like this! Thanks for making it! Would be awesome if the staff's normal attack (left click) has a bit of reach and particle to it. Making it seem like a normal magic bullet when you are waiting for the spell cooldown.
Can more than one enchant be on a staff because so far it does not seem so
In reply to nexy40:
No, you can only have a single enchant per staff.
Just got around to testing this mod now. I think it would be better if the staffs use the vanilla cooldown system like the ender pearls do. That way you could avoid the item use animation (held item disappears and reappears quickly) from spamming every tick while the staff is charging.
Though i don't know how possible it is to implement the vanilla cooldowns to an enchantable item, especially if the same item can have enchantments (or in this case spells) where each of them have varying cooldown times.
If that's not quite possible i hope you could still somehow fix the item use animation spam, because it looks kinda silly tbh. :D