Command Signs
Make signs run commands!
CommandSigns allows you to assign any commands to any block making it easier for your players to do their command-based business!
Required Dependency
- Vault is required for CommandSigns. You can get it here: Vault
Features
- Run commands from signs or any other block with a single click
- Signs can have any other text on them, the commands are linked to the sign behind the scenes
- Elevate user permissions to run any command you choose
- Restrict who can use the sign and when
- Activate your CommandSigns with redstone
How To Use
- Place a sign (or block) and add any writing you want
- Add lines to your clipboard with /commandsigns line<number> <\text or /command>
- Right click the block to make it a CommandSign
Basic Tutorial
Advanced Usage (using money and permissions)
Reference Guide
Auto Updating
CommandSigns automatically checks for updates in order to keep your server up to date with the latest bug fixes! You can set CommandSigns to update completely automatically in config.yml, or to manually update, type /commandsigns update.
Videos
Video by luigi_vampa
Links
View Source on GitHub Feel free to contribute!
Help/Support
If you encounter a problem and it's not something covered by the tutorials and reference guide, please submit a trouble ticket using Bukkit's ticket requester in the menu above.
If it's something simple, post a comment and CJ will get back to you.
@coolkc456
yes :)
IS it possible to add two commands to a single block using this? And if so, or not, what would be the command to give a player something, using the sign? I've tried /cmds line1 /give @p minecraft:wooden_pickaxe, but it doesn't do anything.
Does this work for 1.9?
@Fusion09a
I've been trying to figure this one out for a while but honestly, unsure. I know you can use the /setblock command to replace a block with air, or surround it with barriers so it cannot be reused, but I don't believe it is possible to destroy a commandsign without using the /cmds remove command and clicking it.
Somehting you could try though...is forcing the user to run /cmds remove, then removing their basic permissions that would allow them to leave an area or block them in, so they must clear that sign in order to leave the area. Set the command to a delay though, so if it is not run within a certain time the player is forced to run /cmds clear, which means they are trapped in the area. You can use this in conjunction with a timer and permission, to prevent a player from reusing the commandsign until they have destroyed it. Basically....
[CMDS START] !&permission.node (if they don't have a permission) use shop sign give permission.node (so they cannot reuse the shop portion of the sign) - ?sudo <player> cmds remove remove permissions.that.allow.them.to.escape \Click this block to exit %5 ?sudo <player> cmds clear [CMDS END]
then, readd the permissions they lost afterwards. There are loads of flaws to this system but it's the only way I can think of to actually make it work.
Anyone know a command that will remove the command and sign/block after it is used once? Without manually using /commandsigns remove and then clicking it.
Example: Place sign that says. "buy me". A player clicks it and a command runs for /pay and /give. Then the sign disappears on its own after 1 use.
@MrHtgreen
/commandsigns remove - Remove a CommandSign.
how do you remove the sign because mine says i have to remove the command text first
Question: If a CommandSign has no block (removed using setblock or WorldEdit), would it unbind the commands to that block after a restart, if the block is not replaced? I've had this issue a few times where a block I've assigned with commands is cleared after a restart, if I did not manually replace the block before a 2nd restart.
Basically... Place block, assign commands, remove block. Restart server, do whatever but do not replace missing block, restart server again. After all that, the commands appear to be missing (not 100% of the time, but many times)
@Deps7
Yes, works fine with 1.8
@djwubamonkey
I have this issue as well. I think /summon is a bukkit/spigot "replaced command". You will need to modify this value in the bukkit.yml, spigot.yml or server.properties file on your server (I don't recall which it is) and remove the summon command from the list. Alternatively, use another plugin to spawn mobs. I know essentials lets you use /mob and /spawnmob, and though they are not quite as versatile as vanilla /summon, search around and you will find how to make that command work. The main issue I've encountered is the inability to target a location to spawn mobs at.
using your latest version with cauldron 1.7.10 getting this error
<<code lua>>
Could not pass event PlayerInteractEvent to CommandSigns v1.9.3.2 org.bukkit.event.EventException at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:338) [JavaPluginLoader$1.class:git-Cauldron-MCPC-Plus-1.7.10-1.1236.06.212] at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) [RegisteredListener.class:git-Cauldron-MCPC-Plus-1.7.10-1.1236.06.212] at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:507) [SimplePluginManager.class:git-Cauldron-MCPC-Plus-1.7.10-1.1236.06.212] at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:492) [SimplePluginManager.class:git-Cauldron-MCPC-Plus-1.7.10-1.1236.06.212] at org.bukkit.craftbukkit.v1_7_R4.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:223) [CraftEventFactory.class:git-Cauldron-MCPC-Plus-1.7.10-1.1236.06.212] at net.minecraft.server.management.ItemInWorldManager.func_73078_a(ItemInWorldManager.java:422) [mx.class:?] at net.minecraft.network.NetHandlerPlayServer.func_147346_a(NetHandlerPlayServer.java:875) [nh.class:?] at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.func_148833_a(SourceFile:60) [jo.class:?]
at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.func_148833_a(SourceFile:9) [jo.class:?] at net.minecraft.network.NetworkManager.func_74428_b(NetworkManager.java:244) [ej.class:?] at net.minecraft.network.NetworkSystem.func_151269_c(NetworkSystem.java:173) [nc.class:?] at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:980) [MinecraftServer.class:?] at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:423) [lt.class:?] at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:798) [MinecraftServer.class:?] at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:658) [MinecraftServer.class:?] at java.lang.Thread.run(Thread.java:745) [?:1.8.0_45-internal] Caused by: java.lang.NoClassDefFoundError: org/zonedabone/commandsigns/proxy/PlayerProxy at org.zonedabone.commandsigns.handler.CommandHandler.run(CommandHandler.java:104) [?:?] at org.zonedabone.commandsigns.handler.CommandHandler.handle(CommandHandler.java:80) [?:?] at org.zonedabone.commandsigns.SignExecutor.runLines(SignExecutor.java:235) [?:?] at org.zonedabone.commandsigns.ClickHandler.onInteract(ClickHandler.java:159) [?:?] at org.zonedabone.commandsigns.listener.EventListener.onPlayerInteract(EventListener.java:61) [?:?] at sun.reflect.GeneratedMethodAccessor102.invoke(Unknown Source) [?:?] at sun.reflect.DelegatingMethodAccessorImpl.invoke(De
legatingMethodAccessorImpl.java:43) [?:1.8.0_45-internal] at java.lang.reflect.Method.invoke(Method.java:497) [?:1.8.0_45-internal] at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:334) [JavaPluginLoader$1.class:git-Cauldron-MCPC-Plus-1.7.10-1.1236.06.212] ... 15 more [16:35:04 ERROR]: Could not pass event CreatureSpawnEvent to DiabloDrops v2.6 org.bukkit.event.EventException at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:338) [JavaPluginLoader$1.class:git-Cauldron-MCPC-Plus-1.7.10-1.1236.06.212] at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) [RegisteredListener.class:git-Cauldron-MCPC-Plus-1.7.10-1.1236.06.212] at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:507) [SimplePluginManager.class:git-Cauldron-MCPC-Plus-1.7.10-1.1236.06.212] at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:492) [SimplePluginManager.class:git-Cauldron-MCPC-Plus-1.7.10-1.1236.06.212] at org.bukkit.craftbukkit.v1_7_R4.event.CraftEventFactory.callCreatureSpawnEvent(CraftEventFactory.java:272) [CraftEventFactory.class:git-Cauldron-MCPC-Plus-1.7.10-1.1236.06.212] at net.minecraft.world.World.addEntity(World.java:1734) [ahb.class:?] at net.minecraft.world.SpawnerAnimals.func_77192_a(SpawnerAnimals.java:212) [aho.class:?] at net.minecraft.world.WorldServer.func_72835_b(WorldServer.java:247) [mt.class:?] at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:920) [MinecraftServer.class:?] at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:423) [lt.class:?] at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:798) [MinecraftServer.class:?] at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:658) [MinecraftServer.class:?] at java.lang.Thread.run(Thread.java:745) [?:1.8.0_45-internal] Caused by: java.lang.IllegalArgumentException: bound must be positive at java.util.Random.nextInt(Random.java:388) [?:1.8.0_45-internal] at us.deathmarine.diablodrops.drops.DropsAPI.colorPicker(DropsAPI.java:68) [?:?] at us.deathmarine.diablodrops.drops.DropsAPI.getItem(DropsAPI.java:546) [?:?] at us.deathmarine.diablodrops.drops.DropsAPI.getItem(DropsAPI.java:358) [?:?] at us.deathmarine.diablodrops.listeners.MobListener.onSpawn(MobListener.java:53) [?:?] at sun.reflect.GeneratedMethodAccessor79.invoke(Unknown Source) [?:?] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [?:1.8.0_45-internal] at java.lang.reflect.Method.invoke(Method.java:497) [?:1.8.0_45-internal] at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:334) [JavaPluginLoader$1.class:git-Cauldron-MCPC-Plus-1.7.10-1.1236.06.212] ... 12 more [16:35:15 ERROR]: Could not pass event PlayerInteractEvent to CommandSigns v1.9.3.2 org.bukkit.event.EventException at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:338) [JavaPluginLoader$1.class:git-Cauldron-MCPC-Plus-1.7.10-1.1236.06.212] at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) [RegisteredListener.class:git-Cauldron-MCPC-Plus-1.7.10-1.1236.06.212] at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:507) [SimplePluginManager.class:git-Cauldron-MCPC-Plus-1.7.10-1.1236.06.212] at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:492) [SimplePluginManager.class:git-Cauldron-MCPC-Plus-1.7.10-1.1236.06.212] at org.bukkit.craftbukkit.v1_7_R4.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:223) [CraftEventFactory.class:git-Cauldron-MCPC-Plus-1.7.10-1.1236.06.212] at net.minecraft.server.management.ItemInWorldManager.func_73078_a(ItemInWorldManager.java:422) [mx.class:?] at net.minecraft.network.NetHandlerPlayServer.func_147346_a(NetHandlerPlayServer.java:875) [nh.class:?] at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.func_148833_a(SourceFile:60) [jo.class:?] at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.func_148833_a(SourceFile:9) [jo.class:?] at net.minecraft.network.NetworkManager.func_74428_b(NetworkManager.java:244) [ej.class:?] at net.minecraft.network.NetworkSystem.func_151269_c(NetworkSystem.java:173) [nc.class:?] at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:980) [MinecraftServer.class:?] at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:423) [lt.class:?] at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:798) [MinecraftServer.class:?] at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:658) [MinecraftServer.class:?] at java.lang.Thread.run(Thread.java:745) [?:1.8.0_45-internal] Caused by: java.lang.NoClassDefFoundError: org/zonedabone/commandsigns/proxy/PlayerProxy at org.zonedabone.commandsigns.handler.CommandHandler.run(CommandHandler.java:104) [?:?] at org.zonedabone.commandsigns.handler.CommandHandler.handle(CommandHandler.java:80) [?:?] at org.zonedabone.commandsigns.SignExecutor.runLines(SignExecutor.java:235) [?:?] at org.zonedabone.commandsigns.ClickHandler.onInteract(ClickHandler.java:159) [?:?] at org.zonedabone.commandsigns.listener.EventListener.onPlayerInteract(EventListener.java:61) [?:?] at sun.reflect.GeneratedMethodAccessor102.invoke(Unknown Source) [?:?] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [?:1.8.0_45-internal] at java.lang.reflect.Method.invoke(Method.java:497) [?:1.8.0_45-internal] at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:334) [JavaPluginLoader$1.class:git-Cauldron-MCPC-Plus-1.7.10-1.1236.06.212] ... 15 more [16:35:46 INFO]: ‹‹blackbladiz›› what will be the rebel transport ship? [16:36:06 INFO]: ‹‹blackbladiz›› those little ones with the 8 engines in the back [16:36:14 INFO]: [SWU] Register on http://pokenationbr.enjin.com and enjoy our community ! [16:36:14 INFO]: [ServerListPlus] [Core] Saving player identities... [16:36:15 INFO]: [VirtualPack] Saving user data... [16:36:16 INFO]: ‹‹blackbladiz›› turbo's, what ever you wanna call em [16:36:16 INFO]: ‹‹[Owner] Neo›› wtf grr [16:36:19 INFO]: ‹‹[Owner] Neo›› work bitch [16:36:19 ERROR]: Could not pass event PlayerInteractEvent to CommandSigns v1.9.3.2 org.bukkit.event.EventException at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:338) [JavaPluginLoader$1.class:git-Cauldron-MCPC-Plus-1.7.10-1.1236.06.212] at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) [RegisteredListener.class:git-Cauldron-MCPC-Plus-1.7.10-1.1236.06.212] at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:507) [SimplePluginManager.class:git-Cauldron-MCPC-Plus-1.7.10-1.1236.06.212] at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:492) [SimplePluginManager.class:git-Cauldron-MCPC-Plus-1.7.10-1.1236.06.212] at org.bukkit.craftbukkit.v1_7_R4.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:223) [CraftEventFactory.class:git-Cauldron-MCPC-Plus-1.7.10-1.1236.06.212] at net.minecraft.server.management.ItemInWorldManager.func_73078_a(ItemInWorldManager.java:422) [mx.class:?] at net.minecraft.network.NetHandlerPlayServer.func_147346_a(NetHandlerPlayServer.java:875) [nh.class:?] at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.func_148833_a(SourceFile:60) [jo.class:?] at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.func_148833_a(SourceFile:9) [jo.class:?] at net.minecraft.network.NetworkManager.func_74428_b(NetworkManager.java:244) [ej.class:?] at net.minecraft.network.NetworkSystem.func_151269_c(NetworkSystem.java:173) [nc.class:?] at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:980) [MinecraftServer.class:?] at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:423) [lt.class:?] at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:798) [MinecraftServer.class:?] at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:658) [MinecraftServer.class:?] at java.lang.Thread.run(Thread.java:745) [?:1.8.0_45-internal] Caused by: java.lang.NoClassDefFoundError: org/zonedabone/commandsigns/proxy/PlayerProxy at org.zonedabone.commandsigns.handler.CommandHandler.run(CommandHandler.java:104) [?:?] at org.zonedabone.commandsigns.handler.CommandHandler.handle(CommandHandler.java:80) [?:?] at org.zonedabone.commandsigns.SignExecutor.runLines(SignExecutor.java:235) [?:?] at org.zonedabone.commandsigns.ClickHandler.onInteract(ClickHandler.java:159) [?:?] at org.zonedabone.commandsigns.listener.EventListener.onPlayerInteract(EventListener.java:61) [?:?] at sun.reflect.GeneratedMethodAccessor102.invoke(Unknown Source) [?:?] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [?:1.8.0_45-internal] at java.lang.reflect.Method.invoke(Method.java:497) [?:1.8.0_45-internal] at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:334) [JavaPluginLoader$1.class:git-Cauldron-MCPC-Plus-1.7.10-1.1236.06.212] ... 15 more <</code>>
Up for 1,8 version?
maybe add a way to summon mobs? /summon EnderDragon dont work... just an idea?
@SpencerRyanC
I don't see why a replacement would be needed. I've used this plugin for a long time and I've only lost them once and that was due to manually editing the configuration file and not entering the correct syntax. Creating backups before and after major edits, for example on a weekly basis, are highly recommended. In the case you do need a replacement, for whatever reason your signs keep resetting, just search dev.bukkit for "command signs" and "command block" - it displays loads of alternatives.
As for hiding console command output from players...that's easy - just put ? in front of the command like this
?/give <player> bedrock 1
- this is the silent operator that runs a command without displaying output. It also means you will not see error messages should a command fail - also useful.Is there a replacement for this plugin yet? I am getting tired of my commandsigns randomly being deleted. Also, when commandsigns runs a console command, it relays the messages that would have gone to the console, back to the player.
@DenDerErn
Assuming you mean 'command signs' I believe they need to be run as a player or a full vanilla Command Block. When I tried to use /setblock with a CommandSign, I got this....
java.lang.ClassCastException: org.zonedabone.commandsigns.proxy.PlayerProxy cannot be cast to org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer
...Which I believe basically means I'm trying to run a command as a block, rather than as console or a player. I tried using/cmds 1 /sudo <player> setblock ~ 2 ~ stone
to see if it worked and it does, but without the /sudo, it does nothing. Same for redstone-activated blocks. If you are trying to make blocks appear at a location when a player say, hits a switch, you can use this:/cmds 1 ?/sudo <near> setblock ~ ~ ~ glass
the Silent operator is there simply to make it more discrete - it doesn't matter who triggers the sign via redstone - it will silently choose a random (nearby) player and make them run it.Hopefully this is helpful.
Do someone know why standard commands as tellraw setblock... dosent work in commandblocks?
@visde
Hmm there is another plugin I've seen that allows you to run commands at locations, which may be useful but I forget the name. To do this with Command Signs alone...
Basically you need to use the /setblock to convert the Command Sign into an air block. I believe...
/setblock <blockx> <blocky> <blockz> air
...should do the trick. Note that teh block will still be there, useable, so I recommend this being in a pathway where the player cannot build/destroy. You can also, I think...use force the player to run the/cmds remove
command, then tell them to punch the block again to confirm claiming the plot. However the player would then have the ability to destroy any command sign they click on (if anyone thinks to). You could lessen this to some degree by having players contained within a small hut with a door, opened with a button. Players would not be able to touch anything else besides the command sign, as they would be spammed by "That is not a Command Sign!"But...that's ugly and not likely usable. It also means you players will not be able to decline a confirmation. Again however, this is only an issue if the CLAIM block is actually ON the plot. If its just on the dividing pathways...no issue at all. You just turn it to air and done :)
@DenDerErn
Say you wanted them to do /spawn, but they dont have the permission, you would do, /commandsigns line1 /^spawn
That ^ sign is the thing that signifies it.
Is there are way so people dont need permission to the command on the sign to use the sign?
For example, if there are a sign that says "/Warp Nether", is there a way so people cant use /warp Nether but can use the sign to warp to nether?
Hello,
Is there a way to make the sign delete itself at the end of the command lines?
I want to make a plot like setup where u buy a piece of land. But i want to make it so there is only one player per plot without having to make an entire plots world for it.
Thanks
@Dillzzzzz
/cmds 1 (shift + #)20
this would be a 20 second cooldown it doesnt show up for some reason
@ashash1509
have you tried /cmds 1 ?/^clear <name> <item> <ammount>
We use command signs on our server and i have to say its one of the best plugins on there.