Command Signs

CommandSigns

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

  1. Place a sign (or block) and add any writing you want
  2. Add lines to your clipboard with /commandsigns line<number> <\text or /command>
  3. 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.

CommandSigns version reference

Videos

Video by luigi_vampa

CommandSigns 1.7.3 Demo

View Source on GitHub Feel free to contribute!

This plugin utilizes 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 Opting out of this service can be done by editing plugins/Plugin Metrics/config.yml and changing opt-out to true.

Plugin Metrics

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.

You must login to post a comment. Don't have an account? Register to get one!

  • Avatar of unrivaledneo unrivaledneo Feb 04, 2016 at 00:37 UTC - 0 likes

    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>>

    Last edited Feb 04, 2016 by unrivaledneo
  • Avatar of Deps7 Deps7 Jan 31, 2016 at 16:13 UTC - 0 likes

    Up for 1,8 version?

  • Avatar of djwubamonkey djwubamonkey Jan 29, 2016 at 03:36 UTC - 0 likes

    maybe add a way to summon mobs? /summon EnderDragon dont work... just an idea?

  • Avatar of Omanoctoa Omanoctoa Jan 03, 2016 at 15:50 UTC - 1 like

    @SpencerRyanC: Go

    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.

  • Avatar of SpencerRyanC SpencerRyanC Jan 01, 2016 at 21:02 UTC - 0 likes

    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.

  • Avatar of Omanoctoa Omanoctoa Dec 28, 2015 at 23:53 UTC - 0 likes

    @DenDerErn: Go

    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.

  • Avatar of DenDerErn DenDerErn Dec 28, 2015 at 19:32 UTC - 0 likes

    Do someone know why standard commands as tellraw setblock... dosent work in commandblocks?

  • Avatar of Omanoctoa Omanoctoa Dec 27, 2015 at 22:42 UTC - 0 likes

    @visde: Go

    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 :)

  • Avatar of PresentingTulip PresentingTulip Dec 27, 2015 at 15:10 UTC - 1 like

    @DenDerErn: Go

    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.

    Last edited Dec 27, 2015 by PresentingTulip

    I love making plugins :D

  • Avatar of DenDerErn DenDerErn Dec 19, 2015 at 20:24 UTC - 0 likes

    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?

Facts

Date created
Mar 07, 2012
Categories
Last update
Aug 14, 2014
Development stage
Release
License
GNU General Public License version 3 (GPLv3)
Curse link
Command Signs
Downloads
350,780
Recent files

Authors

Relationships

Required dependency
Vault