Cannons
What can it do?
Cannons is a highly configurable plugin which allows you to fire block build cannons. It is possible to aim and load different amounts of gunpowder to hit targets at different ranges. The power of redstone makes it possible to set the gun to auto load and activate the rapid fire mode. Choose your projectile from a broad spectrum of cannonballs and smash the enemy.
With Cannons 2.0 you are also able to design your own cannons using .schematic files and give each cannon their own settings, as well as different types of projectiles.

Features
- Build a cannon out blocks
- Design your own cannon and save it as .schematic
- Design and fire different projectiles to smash your enemy
- Use redstone to fire guns from distance
- Rapid fire with auto-load possible
- Destroyed blocks can be restored with CreeperHeal (if 'custom' option is true)
- Cannons will stay load and aligned due to the database
- Movement plugins (e.g. Movecraft) are supported if a cannon has a sign to store a tag
- API for ships plugins (e.g. iSails) to use cannons on ships without signs.
Videos
by ServerMiner
by wickedbrother
Out-dated showcase 1
Out-dated showcase 2
Recommended plugins
- ObsidianDestroyer
- WorldGuard (flag protection: '/region flag NAME other-explosion deny')
- CreeperHeal (set 'custom explosion' for your world to repair cannon damage)
Installation
- Install WorldEdit first (don't forget this)
- Copy the cannons.jar into your Bukkit's "plugins" directory, then run the server.
Dependencies
This plugin requires:
Metrics
This plugin utilises Hidendra's plugin metrics system, which means that the following information is collected and sent to mcstats.org:
- 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 If you wish to disable this feature (/me cries), you can do so by opt-ing out, which you can do in the config file under /plugins/PluginMetrics/
Information for Cannons 2.x
Tutorial:
Additional information:
Cannon Designs
- Share your designs with other people: Cannon Designs
Known Bugs
- The cannon ball (snowball) becomes invisible after 60 blocks but hits the target.
- Voxelsniper will delete Buttons/Torches when you load the gun (be careful when you click the barrel)
Need Help?
Credits
- Raser4000
- DreTax
- JlJlJl
- and many more

-
View User Profile
-
Send Message
Posted Mar 15, 2016@FabTheZen I missed that one on the last release. It is already fixed and I will upload the new version tomorrow.
-
View User Profile
-
Send Message
Posted Mar 12, 2016Plugin works fine, but I'm having unnecessary entries on console every time someone clicks a block. These are examples: [...] [02:16:54 INFO]: event block [02:16:55 INFO]: target block [...] It becomes very spammy, so I'd love if you were able to hide these features, at least when debug mode is off. Thank you
-
View User Profile
-
Send Message
Posted Mar 6, 2016I uploaded a new version for 1.9.
Spigot has a few troubles with the new offhand system, but it will be resolved soon. For now keep something in your offhand, to prevent the cannon from turning all the time.
You have to updated your design and projectiles folder for the new sound system.
Cannon Design
Projectile
-
View User Profile
-
Send Message
Posted Mar 5, 2016@galacticwarrior I am currently testing a working version of Cannons. The largest problem was the new names for the sounds. That is now fixed.
Thanks for all your support.
Pavlov
-
View User Profile
-
Send Message
Posted Mar 3, 2016@DerPavlov
Hi, The error with getOnlinePlayers() can be fixed by patching the plugin with Spigot's SpecialSource for now (see https://www.spigotmc.org/threads/minecraft-1-9-release.127186/), but the method was removed I think so it should be replaced in the long run.
The other errors are because of changes to the sound enum; sound names changed in 1.9 so they need to be updated too.
Hope this helps!
-
View User Profile
-
Send Message
Posted Mar 2, 2016@GodsDead Hi, I am currently ill but will fix the problem as soon as possible. DrkMatr1984 already provided some fixes, but I am unable to test it at the moment.
-
View User Profile
-
Send Message
Posted Mar 1, 2016Yeah can confirm that Cannons is broken with 1.9
-
View User Profile
-
Send Message
Posted Feb 29, 2016Just to let you know, after updating to spigot 1.9, the console keeps spamming this error message over and over, right after the server started
-
View User Profile
-
Send Message
Posted Feb 11, 2016@jedk1 Your pastie link does not work for me. Can you upload it somewhere else?
-
View User Profile
-
Send Message
Posted Feb 11, 2016hey I've been having an issue every time a cannon is deleted it throws an error: http://pastie.org/10717869 Been a fun plugin to use so far though so good job :D
-
View User Profile
-
Send Message
Posted Dec 28, 2015@DerPavlov
Yeah,I set the cobblestone name and lores just like what you told me.But either the "test" cobblestone and normal cobblestone can't load.
-
View User Profile
-
Send Message
Posted Dec 27, 2015@NOBUTSS I used 'simple rename' and added:
The default cobblestone config was edited to:
Let me know if I missed something.
-
View User Profile
-
Send Message
Posted Dec 26, 2015Why this do not work?
-
View User Profile
-
Send Message
Posted Dec 19, 2015@DerPavlov
Im sure that different config per world, probably would be the most effecient way to do it :)!
-
View User Profile
-
Send Message
Posted Dec 13, 2015@XxNaelxX Copy and rename one of the default projectiles.yml in plugins/Cannons/projectiles. Change the loadingItem to:
EDIT: Somehow your question changed :)
Second answer: You can set 'fireAfterLoading'. The cannon will fire when the cannon is loaded (and the projectile pushed, if required). The cannon will not fire automatically if you are sneaking while loading. But it is not owner specific.
-
View User Profile
-
Send Message
Posted Dec 13, 2015is there a way to make it fire automatically except at its owner?
-
View User Profile
-
Send Message
Posted Dec 9, 2015@nashoxx There seems to be a divide by zero error while calculating the cannonball velocity. Can you check if your 'maxLoadableGunpowder' is >= 1.
To disable gunpowder use 'needsGunpowder: False'
You can always send me your design files, I will have a look and try find the problem.
-
View User Profile
-
Send Message
Posted Dec 9, 2015I've been trying for several days to add a new custom type of cannon. The results are the same as always, the thing just throws a shit ton of errors in the console. I don't know what I'm doing wrong. I have the schematic, and the .yml file with the same name as the schematic, I load the plugin and I can actually create the schematic. but at the moment of firing nothing fires and when I try to positionate again the cannon to fire it throws a shit ton of errors. I configurated the thing so it doesn't need to use gunpowder or that stick thing to push or clean the barrel. So it just needs the projectile. I'm testing this thing with the cobblestone projectiles which I just modified so it doesn't damages the terrain. Still, I haven't been able to fire a single time. These are the erros I get:
I'm using Spigot 1.8.8
[15:31:52] [Server thread/ERROR]: Could not pass event PlayerInteractEvent to Cannons v2.3.8 org.bukkit.event.EventException at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:310) [spigot-1.8.8.jar:git-Spigot-5f38d38-18fbb24] at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) [spigot-1.8.8.jar:git-Spigot-5f38d38-18fbb24] at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502) [spigot-1.8.8.jar:git-Spigot-5f38d38-18fbb24] at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:487) [spigot-1.8.8.jar:git-Spigot-5f38d38-18fbb24] at org.bukkit.craftbukkit.v1_8_R3.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:228) [spigot-1.8.8.jar:git-Spigot-5f38d38-18fbb24] at net.minecraft.server.v1_8_R3.PlayerInteractManager.interact(PlayerInteractManager.java:463) [spigot-1.8.8.jar:git-Spigot-5f38d38-18fbb24] at net.minecraft.server.v1_8_R3.PlayerConnection.a(PlayerConnection.java:759) [spigot-1.8.8.jar:git-Spigot-5f38d38-18fbb24] at net.minecraft.server.v1_8_R3.PacketPlayInBlockPlace.a(PacketPlayInBlockPlace.java:52) [spigot-1.8.8.jar:git-Spigot-5f38d38-18fbb24] at net.minecraft.server.v1_8_R3.PacketPlayInBlockPlace.a(PacketPlayInBlockPlace.java:1) [spigot-1.8.8.jar:git-Spigot-5f38d38-18fbb24] at net.minecraft.server.v1_8_R3.PlayerConnectionUtils$1.run(SourceFile:13) [spigot-1.8.8.jar:git-Spigot-5f38d38-18fbb24] at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_45] at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_45] at net.minecraft.server.v1_8_R3.SystemUtils.a(SourceFile:44) [spigot-1.8.8.jar:git-Spigot-5f38d38-18fbb24] at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:715) [spigot-1.8.8.jar:git-Spigot-5f38d38-18fbb24] at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:374) [spigot-1.8.8.jar:git-Spigot-5f38d38-18fbb24] at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:654) [spigot-1.8.8.jar:git-Spigot-5f38d38-18fbb24] at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:557) [spigot-1.8.8.jar:git-Spigot-5f38d38-18fbb24] at java.lang.Thread.run(Unknown Source) [?:1.8.0_45] Caused by: java.lang.ArithmeticException: / by zero at at.pavlov.cannons.cannon.Cannon.getCannonballVelocity(Cannon.java:1441) [?:?] at at.pavlov.cannons.cannon.Cannon.getAimingVector(Cannon.java:1395) [?:?] at at.pavlov.cannons.Aiming.showAimingVector(Aiming.java:995) [?:?] at at.pavlov.cannons.Aiming.updateAngle(Aiming.java:246) [?:?] at at.pavlov.cannons.Aiming.changeAngle(Aiming.java:131) [?:?] at at.pavlov.cannons.listener.PlayerListener.PlayerInteract(PlayerListener.java:446) [?:?] at sun.reflect.GeneratedMethodAccessor85.invoke(Unknown Source) [?:?] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) [?:1.8.0_45] at java.lang.reflect.Method.invoke(Unknown Source) [?:1.8.0_45] at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) [spigot-1.8.8.jar:git-Spigot-5f38d38-18fbb24] ... 17 more [15:31:53] [Server thread/ERROR]: Could not pass event PlayerInteractEvent to Cannons v2.3.8 org.bukkit.event.EventException at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:310) [spigot-1.8.8.jar:git-Spigot-5f38d38-18fbb24] at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) [spigot-1.8.8.jar:git-Spigot-5f38d38-18fbb24] at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502) [spigot-1.8.8.jar:git-Spigot-5f38d38-18fbb24] at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:487) [spigot-1.8.8.jar:git-Spigot-5f38d38-18fbb24] at org.bukkit.craftbukkit.v1_8_R3.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:228) [spigot-1.8.8.jar:git-Spigot-5f38d38-18fbb24] at net.minecraft.server.v1_8_R3.PlayerInteractManager.interact(PlayerInteractManager.java:463) [spigot-1.8.8.jar:git-Spigot-5f38d38-18fbb24] at net.minecraft.server.v1_8_R3.PlayerConnection.a(PlayerConnection.java:759) [spigot-1.8.8.jar:git-Spigot-5f38d38-18fbb24] at net.minecraft.server.v1_8_R3.PacketPlayInBlockPlace.a(PacketPlayInBlockPlace.java:52) [spigot-1.8.8.jar:git-Spigot-5f38d38-18fbb24] at net.minecraft.server.v1_8_R3.PacketPlayInBlockPlace.a(PacketPlayInBlockPlace.java:1) [spigot-1.8.8.jar:git-Spigot-5f38d38-18fbb24] at net.minecraft.server.v1_8_R3.PlayerConnectionUtils$1.run(SourceFile:13) [spigot-1.8.8.jar:git-Spigot-5f38d38-18fbb24] at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_45] at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_45] at net.minecraft.server.v1_8_R3.SystemUtils.a(SourceFile:44) [spigot-1.8.8.jar:git-Spigot-5f38d38-18fbb24] at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:715) [spigot-1.8.8.jar:git-Spigot-5f38d38-18fbb24] at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:374) [spigot-1.8.8.jar:git-Spigot-5f38d38-18fbb24] at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:654) [spigot-1.8.8.jar:git-Spigot-5f38d38-18fbb24] at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:557) [spigot-1.8.8.jar:git-Spigot-5f38d38-18fbb24] at java.lang.Thread.run(Unknown Source) [?:1.8.0_45] Caused by: java.lang.ArithmeticException: / by zero at at.pavlov.cannons.cannon.Cannon.getCannonballVelocity(Cannon.java:1441) [?:?] at at.pavlov.cannons.cannon.Cannon.getAimingVector(Cannon.java:1395) [?:?] at at.pavlov.cannons.Aiming.showAimingVector(Aiming.java:995) [?:?] at at.pavlov.cannons.Aiming.updateAngle(Aiming.java:246) [?:?] at at.pavlov.cannons.Aiming.changeAngle(Aiming.java:131) [?:?] at at.pavlov.cannons.listener.PlayerListener.PlayerInteract(PlayerListener.java:446) [?:?] at sun.reflect.GeneratedMethodAccessor85.invoke(Unknown Source) [?:?] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) [?:1.8.0_45] at java.lang.reflect.Method.invoke(Unknown Source) [?:1.8.0_45] at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) [spigot-1.8.8.jar:git-Spigot-5f38d38-18fbb24] ... 17 more
-
View User Profile
-
Send Message
Posted Nov 15, 2015@GodsDead I started a section in github for this, but I did not add a link to the bukkit page. Therefore, not shared designs so far.
https://github.com/DerPavlov/Cannons/wiki/Designs
@Unpluggeddk I get the idea, but at the moment there is no such feature in Cannons. How is this done in other plugins: Different Config per world or just different settings per world?
Let me know what would be easier for you.
-
View User Profile
-
Send Message
Posted Nov 15, 2015Hi mate, love ur plugin, hoped u could help me a bit.
Am i blind or is it possible to set the cost of creating a cannon to be different per world. Im making a game with ur plugin, but in this game it shuldnt cost anything to make a cannon.
But in my Main world it shuld cost something.