CmdSigns - Fully customizable command signs! 0.3

Fully customizable command signs!

  1. Rojoss
    Cmd Signs
    Fully customizable command signs!

    This plugin adds customizable command signs to your server.
    You can create a sign template and with a certain syntax.
    For example the syntax could be [heal] and the command would be /heal.
    You can then place signs with [heal] in your world and players can interact with them.
    You can make very basic signs or you could make very advanced signs.

    • Fully customizable signs
    • Execute any command you want
    • Supports advanced placeholders defined by yourself
    • Supports multiple placeholders on the same line
    • In game menu to set up templates
    • Charge money,items or xp for using signs
    • Set delays/cooldowns for using signs
    • Every message configurable
    • Option to execute commands by player or console
    • Permissions for each sign type you create
    • Easily share templates as each template has it's own config file
    • Extremely user friendly and easy to use

    Just drop the plugin jar file in your plugins folder and restart the server.
    If you want to charge people money for using signs install the latest version of Vault!
    If you have Vault installed writing item costs will be easier too.
    The plugin should work fine on any server version but it's not tested on older versions.

    Bugs & Suggestions
    If something isn't working please let me know and I'll fix it as soon as I can.
    Also if you have suggestions for changes or new features let me know!
    As long as it's related to command signs I don't mind adding more things to the plugin.

    The plugin is already open source but I'll add the link later as I have to add licence etc.

    Default [cmd] template
    By default the plugin loads in a [cmd] template already.
    This lets you write down any command on the sign you want.
    For example you could write a sign like:
    And it would run the command /gamemode creative
    You can look at the template in game how it works and it might give you a good understanding how it works.

    /signs or /templates
    Permission: cmdsigns.cmd.signs
    This command will open the template menu.

    /cmdsigns {reload|loadtemplates|info}
    Permission: cmdsigns.cmd.cmdsigns.reload and cmdsigns.cmd.cmdsigns.loadtemplates
    /cmdsigns reload will reload the Messages and Main configuration file.
    /cmdsigns loadtemplates will load templates from the templates folder.
    /cmdsigns info will display basic plugin information.


    Each sign has it's own permissions for creating/destroying and using it.
    The identifying name you specify for the sign is used for the permission too.
    Place an asterisk after a dot to grant permissions for everything.
    For example cmdsigns.signs.use.* will allow users to use all the signs.
    And cmdsigns.signs.* will allow creating/breaking and using all the signs.


    These are templates you can download and upload to your templates folder.
    If you can't be bothered to create your own this might be helpful.
    Feel free to share templates in the discussion page so that I can add them to this list.


    It doesn't work...
    Check your console/log if there are any errors and if there are report them to me so i can fix it.
    If there aren't any errors which would be strange tell me what doesn't work, what version you're using, what Spigot/Bukkit version you're using and any other useful information.

    How do I delete a template?
    Just delete the template file in the plugin folder at: '/plugins/CmdSigns/templates'
    After you've done that use /cmdsigns loadtemplates

    Will previously created signs still work if I edit a template?
    Depends on what you edit.
    If you modify the syntax it will most likely break especially if you modify the unique line.
    But if you modify commands or settings signs should still work fine and changes made will happen immediately for all signs.

    How does it work?
    Read instructions below... ;)


    Syntax placeholders
    The syntax on the sign can have placeholders which get replaced in the command.
    For example if you want to create a sign that changes your gamemode you don't want to create a template for each game mode you just want to create one template.
    So in that case you would use a placeholder for the mode.
    The syntax could look like this:

    When you place a sign in the world you don't put {mode} but you put the placeholder value.
    The value you write will be used when the command is executed.
    So the command on the template would be /gamemode {mode}.
    Then if you write a sign like:

    The command that will be executed is /gamemode Creative
    You can use any text you want with placeholders as long as the text on the syntax matches with the text in the command.

    You can even put multiple placeholders on the same sign line.
    For example you could do a syntax like:
    On the sign you can write 10:50:22
    Then {hour} will be 10 {min} 50 and {sec} 22 when executing the command.

    Creating Templates
    Templates can be created in game in a interactive menu.
    It's extremely easy to create and modify templates.
    Type /signs or /templates in game to open the template editing menu.
    Each template will be represented by a sign in the image above we only have one template.
    If you have a lot templates you can navigate between multiple pages using the arrows in the top corners.

    Adding templates
    You can add templates by clicking on the log.
    This will close the menu and you'll have to type a name in chat.
    The name you specify will be used to identify the template further on it has nothing to do with the display on the sign.
    Once you've done that the menu will open again and you can start modifying the template.

    Modifying Templates
    Templates have a bunch of settings and they obviously need a sign syntax and a set of commands.
    When you click on a sign in the main menu you'll see the template editing menu.

    Setting syntax
    The sign syntax is the most important part of a template.
    The 4 nametags represent the lines of the sign and the syntax.

    The glowing nametag is the unique line in this case the first line.
    Each sign has an unique line and this obviously needs to be unique.
    When creating/destroying/using signs it will check if the unique line matches with the template.
    Usually you want to put a header like [heal] or something but it can be regular text too.
    Just remember that there can't be two templates with the same unique line syntax.
    To change the unique line shift left click another nametag.

    You can modify the syntax by clicking on the nametag.
    This will close the menu again and you'll have to type the syntax in chat.
    When you've done that the menu will open again.
    Remember that you can use any placeholder you want.
    Just type anything between curly brackets like {example}.
    To remove the current syntax shift right click the nametag.

    Setting commands
    Each template can have 4 commands for different click actions.
    The actions are left click, right click, shift + left click and shift + right click.
    This means you can run different commands when using different interactions.
    Settings the commands is similar to settings the syntax.
    just click on the command block and type the command in chat.

    Make sure you don't put a slash(/) in front of the command.
    To remove the current command shift right click the command block.

    Enabling/Disabling templates
    Templates can be disabled and enabled using the dye in the middle.
    When a template is disabled it only means that it wont run commands when interacting with those signs.
    Users will still be blocked from creating/breaking the signs if they don't have permissions.
    Delete the template file to remove a template completely.

    The left option toggles who executes the command.
    It can be executed from the console or by the player who clicked the command.
    For console execution you can use the {player} placeholder in commands.

    Ignore/Match colors
    (This plugin doesn't color signs because many other plugins do so already.)
    The second option from the left is to change how colors are handled.
    If colors are ignored you shouldn't add any colors to the syntax of the unique line.
    You can then put any color you want on the unique line and it will still match.
    If it's set to match colors the colors on the unique line syntax need to match exactly with the sign colors.

    Sign Delays
    You can set delays on signs so that users have to wait xx seconds before using it again.
    Delays are shared between all signs of a given template.
    So if you create two [heal] signs with 60 seconds delay the user can't use both signs.
    When using one sign both [heal] signs will be blocked till the delay is ended.
    The delay can be set by clicking on the clock in the template editing menu.

    Sign Costs
    You can set up costs for using signs as well.
    Every time the user clicks the sign he will be charged.
    The cost can be money (if Vault is installed), items or experience.
    To set a cost click on the gold ingot in the template editing menu.
    Then you first have to type the prefix of the type you want followed with a value.
    Prefix: eco
    Value: A positive number which can have decimals
    Example: eco:3.33
    Prefix: item
    Value: {item}[:data] [amount] [name:{name}]
    - item:diamond
    - item:wool:10 3 name:Cloth
    Prefix: xp
    Value: A positive number without decimals.
    Example: xp:100
    Code7y7 and JBS like this.

Recent Updates

  1. Fix permission issues
  2. Bugfix

Recent Reviews

  1. MartinKury
    Version: 0.3
    It was great from the beginning, but then after the destruction of the sign it says this error: [19:42:18 ERROR]: Could not pass event SignChangeEvent to CmdSigns v0.2-SNAPSHOT
    org.bukkit.event.EventException: null
    at$1.execute( ~[minecraft_server.jar:git-Spigot-93e20b3-31d3159]
    at org.bukkit.plugin.RegisteredListener.callEvent( ~[minecraft_server.jar:git-Spigot-93e20b3-31d3159]
    at org.bukkit.plugin.SimplePluginManager.fireEvent( [minecraft_server.jar:git-Spigot-93e20b3-31d3159]
    at org.bukkit.plugin.SimplePluginManager.callEvent( [minecraft_server.jar:git-Spigot-93e20b3-31d3159]
    at net.minecraft.server.v1_12_R1.PlayerConnection.a( [minecraft_server.jar:git-Spigot-93e20b3-31d3159]
    at net.minecraft.server.v1_12_R1.PacketPlayInUpdateSign.a(SourceFile:44) [minecraft_server.jar:git-Spigot-93e20b3-31d3159]
    at net.minecraft.server.v1_12_R1.PacketPlayInUpdateSign.a(SourceFile:10) [minecraft_server.jar:git-Spigot-93e20b3-31d3159]
    at net.minecraft.server.v1_12_R1.PlayerConnectionUtils$ [minecraft_server.jar:git-Spigot-93e20b3-31d3159]
    at java.util.concurrent.Executors$ [?:1.8.0_74]
    at [?:1.8.0_74]
    at net.minecraft.server.v1_12_R1.SystemUtils.a(SourceFile:46) [minecraft_server.jar:git-Spigot-93e20b3-31d3159]
    at net.minecraft.server.v1_12_R1.MinecraftServer.D( [minecraft_server.jar:git-Spigot-93e20b3-31d3159]
    at net.minecraft.server.v1_12_R1.DedicatedServer.D( [minecraft_server.jar:git-Spigot-93e20b3-31d3159]
    at net.minecraft.server.v1_12_R1.MinecraftServer.C( [minecraft_server.jar:git-Spigot-93e20b3-31d3159]
    at [minecraft_server.jar:git-Spigot-93e20b3-31d3159]
    at [?:1.8.0_74]
    Caused by: java.lang.ArrayIndexOutOfBoundsException: 0
    at com.jroossien.cmdsigns.util.SignParser.<init>( ~[CmdSigns.jar:?]
    at com.jroossien.cmdsigns.listeners.MainListener.signCreate( ~[CmdSigns.jar:?]
    at sun.reflect.GeneratedMethodAccessor1024.invoke(Unknown Source) ~[?:?]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke( ~[?:1.8.0_74]
    at java.lang.reflect.Method.invoke( ~[?:1.8.0_74]
    at$1.execute( ~[minecraft_server.jar:git-Spigot-93e20b3-31d3159]
    ... 15 more

    and not working..:/

    Thanks for answer,KuryCZ
  2. Code7y7
    Version: 0.3
    This looks great! I will definatly use this for my server, but after I've created my template how do I get the sign?
    1. Rojoss
      Author's Response
      Hi Code7y7, you just place a sign and write the unique line on it. (the glowing nametag in your template which is the first line by default)
      So if you have a sign with [gamemode] on the first line then if you place a sign with [gamemode] it'll work automatically.
  3. StarRift
    Version: 0.3
    Still works great on 1.12.2! However, keep in mind it uses the old process on the main thread method to constantly check for player-interact events, which can cause some tick lag if you are using this on a low spec system.
  4. MatthewKai
    Version: 0.3
    Awesome plugin and works perfectly. I needed this because I wanted a way to give towny bonus plots to players for in game money without having to do it manually. +++++
  5. JonasLikerSpill
    Version: 0.3
    Works like a charm! Pleas update this plugin for every version! It's the plugin that i really need. :)
  6. Geitenijs
    Version: 0.2
    Great plugin! .
    1. Rojoss