v3.0.1 (25 Jun 2014)

(The v3.0.0 release was pulled in favour of v3.0.1 due to a critical player interaction cancellation bug)

v3.0.0 (23 Jun 2014)

  • This release is not supported on CraftBukkit releases earlier than 1.7.9 due to UUID migration.
  • Added public hologram views - use holograms provided by the HoloAPI plugin to display menus to a player. Views of this type are common to all players (i.e. if one player scrolls the view, all players see the change), can be shown or hidden by the presence or absence of a redstone signal, and can also control redstone output switches.
  • Added private hologram views - these display a menu with HoloAPI to the activating player only, and have a separate scroll position for each player. Unlike public hologram views, these views are toggled by clicking an item, and do not have any redstone functionality.
  • Added /sms give popup command; this can be used to get any item which when left- or right-clicked, will display a popup menu (inventory, private hologram, or spout). This is also intended to replace popup books previously used to show inventory views; popup items are more flexible. E.g. /sms give popup warps-1 compass 1 desht will give a specially-named compass to the player 'desht' which when clicked will pop up the previously created view warps-1.
  • Big player name -> UUID migration. Player names are no longer stored persistently by SMS; player UUIDs are now stored instead. This affects the "owner" attribute for menus and views, as well as owners for user variables. Data will be auto-migrated when 3.0.0 is installed; no admin intervention is needed.
  • ScrollingMenuSign is now built against Vault 1.4, for proper UUID support in economy/permissions plugins. A warning will be logged if an older version of Vault is detected at run-time.
  • Access Control: changed the meaning of the GROUP value for the "access" menu/view attribute. It is now called OWNER_GROUP (data will be auto-migrated if necessary). Added a "group" attribute which is simply the permission group which the player must be a member of, if the access control for the menu/view is set to GROUP.
  • Expanded the functionality of User Variables: they are now substituted whenever encountered in menu titles, menu item labels, and menu item lore, allowing for some better per-user menu customisation.
  • Menu title/item label/item lore text is now processed for HTML escape codes, allowing much more freedom to insert arbitrary Unicode characters into menus. Config settings which affect menu text (e.g. prefixes) also support HTML-escapes. Example: /sms menu mymenu title "ΑΒΓ頰". See for a list of some useful HTML escape codes.
  • As a side effect of the above change, saved menu data files will now contain HTML escape codes, including for Bukkit colour codes. However, SMS will unescape all data as it's loaded, resulting in identical content to previous version. You can still edit menu files directly if you so choose.
  • Individual menu items may now have their own permission node defined; the player must have this node to execute the menu item (in addition to any possible nodes needed to run the command). For per-player views (map, inventory, spout, private holo) the player will need the defined node to be able to see the item label at all. E.g. /sms edit mymenu Diamonds -perm diamond.permission.node -
  • Added the "noescape" attribute for inventory views - if set to true, then the view cannot be dismissed with Escape or 'E' - only by selecting an item. For reasons of sanity, it is not possible to both this attribute to true and the "autopopdown" attribute to false at the same time.
  • Added the "-popup-for" option to the /sms view command to force-display a popup view on a given player's screen. E.g. /sms view punishment-1 -popup-for evilplayer. This command can be used from the console. This may be useful to force a player to choose a particular menu item before continuing (see also the new "noescape" view attribute added above).
  • Added the ability to run alternative commands via the "-altcommand" option when creating/editing menu items. The alt command will be run if you shift-left-click (by default) on sign/map/hologram views, or right-click the icon in inventory views. E.g. /sms add mymenu "Hello" \\hi! -altcommand \\bye!
  • For commands running on a cooldown, the string <COOLDOWN> in commands will be substituted with a user-readable remaining time. E.g. /sms add mymenu Diamond "COOLDOWN 12hr diamond $diamond,-1 \\Have a diamond! $$ \\$6You must wait <COOLDOWN> !"
  • The string <UUID> in commands will substituted with the player's UUID. Also, UUID's are now accepted in the @p restrictor for commands.
  • API: added MenuManager class and moved all static methods from the SMSMenu class into it
  • API: added addSubstitionHandler() method to SMSHandler; allows other plugins to register custom substitutions to be carried out in command strings.
  • /sms view -l will now list all known views.
  • Added /sms repaint command, which forces a repaint of all views.
  • Icon specification for inventory views can now specify a number for the icon used, and make the icon glow (if ProtocolLib is installed).
  • FIX: the door (BACK) icon for inventory view submenus wasn't showing up: - if you still see this problem after upgrade, do /sms set submenus.back_item.material wood_door
  • FIX: centre and right-justified inventory views now work properly.

v2.3.3 (21 Jan 2014)

v2.3.2 (5 Jan 2014)

  • Map views in item frame now work properly with CraftBukkit 1.7.x (Minecraft & CraftBukkit changed the way item frames with items in them react to left-clicks).
  • Map views now have a solid filled background by default (map colour #9 - see for a full list of colours). This is primarily again for the benefit of CB 1.7.x, where the default background is transparent and shows the item frame behind the menu). If you prefer this, use map colour 0 for the background...
  • Added new map view attribute background to set the map view's background fill colour, and config setting maps.background to define the default background fill for newly-created map views.
  • Map view text colours now much more closely resemble the specified chat colours thanks to the extended map palette in Minecraft 1.7 (and should still look acceptable on CraftBukkit 1.6 servers).

v2.3.1 (25 Nov 2013)

  • Added a couple of backwards compat methods to the SMSView class. This is intended to allow older versions of Heroes to continue to work with newer releases of ScrollingMenuSign. If you don't use Heroes, this update doesn't bring anything else.

v2.3.0 (14 Nov 2013)

  • Added new view attribute to all scrollable view types: scroll_type. This may be one of "scroll", "page" or "default". "scroll" is the default and current behaviour - the selected item remains in place and the view scrolls around it. The "page" type allows the selection cursor to move and the view will switch to the next/previous page (where there are more items than can be displayed on one page). A value of "default" means to use the global "scroll_type" Configuration setting, which can be one of "scroll" or "page".
  • Item costs: giving or taking items should now use a material name, not a numeric ID. Numeric ID's are still accepted for now, but will log a warning to the console & server.log so that you can fix the menu entry. This is due to numeric IDs being generally deprecated by both Bukkit and Mojang.
  • Inventory views now have a "spacing" attribute (default 0) - this controls how many blank inventory slots are placed between each icon in the inventory.
  • Multisign view rendering should now be somewhat lighter on CPU when the multisign is only 1 sign wide (regardless of how many signs high)
  • Predefined substitutions in commands (e.g. <EXP>, <MONEY> - see Command Parser) are now done on a command-by-command basis rather than all the very start of command parsing. This means that a chained command like "$x,10 && \\You now have <EXP> experience" now reports the new experience amount instead of the previous amount. The previous behaviour can still be achieved by not using chaining, e.g. "$x,10 \\You had <EXP> experience && You now have <EXP> experience"
  • Predefined substitutions in commands should now be a little lighter on CPU.

v2.2.0 (26 Sep 2013)

  • Added new "view" type: active items. An active item allows any item to become a trigger for an SMS menu. Item metadata is used to display the current menu item, and the menu can be "scrolled" in the way traditional menus are scrolled (default: right-click & shift-right-click or shift-wheel to scroll, left-click to execute). Submenus are fully supported too. See View Types/Active Items for more info.
  • If ProtocolLib is installed, active items will glow as if enchanted.
  • Map views can now be placed in item frames and used as expected (a bit like a prettier sign view!). This will use more server resources than a simple sign view though, so use with care. Added new permission node "" which allows use of map views in a frame - all players have this by default. See View Types / Map Views for more info.
  • Added the QUICKMSG special command, to allow quick popup messages to be displayed to the user by faking their held item's metadata briefly. This feature requires ProtocolLib to be installed. See Popup Messages for more info.
  • Tooltip signs ([smstooltip]) can now specify a direction (U,D,L,R) on line 2 to indicate which sign view they should be a tooltip for. Useful if you need to place a tooltip sign adjacent to two sign views.
  • API breakage: all static methods (relating to view creation/searching/deletion) are gone from SMSView. New SMSViewManager object now handles view creation/deletion. Get the manager instance with ScrollingMenuSign.getInstance().getViewManager().
  • API: All SMS blocks (views, output switches, control signs, tooltip signs) now implement the new SMSInteractableBlock interface and are managed by the new LocationManager. Get the manager instance with ScrollingMenuSign.getInstance().getLocationManager().
  • Command tab completion now works on the console with CraftBukkit 1.6.4+ (technically a CraftBukkit change, but worth mentioning)

v2.1.1 (10 May 2013)

  • Added new special "AFTER" command which allows menu commands to be run after a given delay in server ticks, e.g. /sms add mymenu "Delayed Hello" "AFTER 20 \\hello. This may be particular useful when running commands which pop up an inventory window, when run from a SMS inventory view (trying to pop up an inventory while an inventory is already open can be problematic). Addresses
  • Added new special "COOLDOWN" command which allows menu commands to be run with a given cooldown, e.g. /sms add mymenu "Cooldown hello" "COOLDOWN c1 5s \\hello $$ \\&4Still on cooldown will allow the command to be run once every 5 seconds, per-user. Cooldowns have names (e.g. c1 in the example, and multiple commands can use the same cooldown name. Global cooldowns (shared by all players) are possible by prefixing the cooldown name with "global:". If the command is still on cooldown, no error is displayed but the command is considered restricted, allowing a custom error command to be run using $$, as in the example above.
  • Scripts can now return a boolean true or false value by setting the result script variable (default: true). Scripts that return false consider the command to be restricted, which may be useful with command chaining (see Command Parser). E.g. /sms add mymenu "Test Even" "SCRIPT even.js 3 $$ \\No, this is an odd number, where script.js returns true for even argument and false otherwise.

v2.1.0 (6 May 2013)

  • Scripting engine support. It's now possible for menu items to call out to external scripts using the special SCRIPT command. Javascript is supported out of the box; other languages (e.g. Python/Jython) can be added. See Scripting for full details.
  • Fixed problem where items in an inventory view could get executed multiple times when using submenus.
  • Tab completion: only /sms subcommands the player has permission for will be shown when pressing Tab.

v2.0.0 (19 Apr 2013)

  • Submenu support: any view can now be switched to displaying a different menu using the special "SUBMENU" command. Allows for arbitrary levels of cascading menus all displayable in a single view (sign, map, inventory, spout...). Submenus automatically get a faked "BACK" menu item to switch the view back to the previous menu. See Submenus for more detail.
  • Comprehensive tab completion support when using the Minecraft client to issue /sms commands (not supported from the console, unfortunately). Pressing Tab at any point during entering a command (or any command argument) will either provide a completion for the command, or a list of possible completions.
  • Map views have had a facelift: it's now possible to specify any font known to Java and any fontsize to draw the map text. Custom fonts can easily be used by placing TTF or Type1 font files in plugins/ScrollingMenuSign/fonts. Font & fontsize can be set on a per-view basis, and global defaults can be defined in the Configuration.
  • Added menu item tooltips, displayable by all view types (sign/multisign views use an auxiliary sign beside the main view, inventory views use the item tooltip, spout views use the Spout list widget text, and map views draw a tooltip box on the map). Use /sms edit <menu> <item> -lore <tooltip> to give an item a tooltip.
  • Menus now have attributes, like views already did. Menu attributes are used to set the title, autosorting, default command, and owner. Use the new /sms menu command to view & manage menu attributes. See Menu Attributes for more information.
  • Significantly revamped menu & view access control. Menus & views both now have an "owner" attribute. Access control can be specified as open access, owner only, or restricted to owner's primary permission group (Vault required). See Access Control for more details.
  • Added special "POPUP <view-name>" menu command (only usable in menu items) to pop up "poppable" view types (currently, inventory and spout views). Much like the existing /sms view <view-name> -popup command, but doesn't require that the scrollingmenusign.commands.view permission node be given to players.
  • Redstone output: default redstone pulse ticks is now 10, to match that of a stone button (was previously 20 ticks)
  • Redstone output: added new rsoutputmode setting - "radio". This makes the configured output switches behave like a set of radio buttons - when a menu item is clicked, its output switch goes on, and all other output switches for the view go off.
  • Menu and view attributes have description text now, which is displayed when tab completion is used. E.g. /sms menu mymenu title <Tab> will display title = <String> [The menu's displayed title]].
  • If a player uses the mouse wheel to scroll a sign view and is holding Shift, the player's item in hand is no longer changed (if Shift is not held, then the item in hand will still change). Requires CB 1.5.1-R0.2 or later.
  • Added /sms undelete command to restore deleted menus (must be used before server is restarted)
  • Creating a sign with [sms] as the first line, menu name on second line and (if creating a new menu) menu title on third line will now automatically try to turn the sign into a sign view. It's no longer necessary to punch the sign.
  • Command output is now coloured on the console as well as on the client. If you don't want this (e.g. your console doesn't have working ANSI colour support), it can be disabled via new config item coloured_console.
  • Added new scrollingmenusign.limited_admin parent permission node. This is like scrollingmenusign.admin with more limited rights; see Permissions for a full description.
  • Dropped the /sms title, /sms show, /sms defcmd and /sms sort commands, since that functionality is now provided by /sms menu.
  • Dropped the /sms debug command, since debug logging can be controlled with /sms set log_level ...
  • Dropped the maps.break_block_id config item (block to break map views if hit). It just wasn't useful.
  • Dropped the autosave config item. It's always true now.
  • Dropped obsolete menuitem_separator and persistent_user_vars config items.
  • Development: API breakage, especially regarding SMSView and subclasses.

v1.8.0 (19 Dec 2012)

v1.7.0 (30 Nov 2012)

  • CraftBukkit 1.4.x required (1.4.5+ recommended). This will *not* work with CB 1.3.x or earlier revisions!
  • New view type: inventory view. This uses Minecraft 1.4's ability to have custom item tooltips to display menus as a collection of clickable icons in a virtual inventory window. These views can be popped up with a specific type of written book item, available with the /sms give book command or by hitting an existing sign view with a book and quill item. See View Types / Inventory Views. Credit for the inventory vie concept goes to @nisovin:
  • It is now possible to apply potion effects with a command cost specifier. E.g. /sms add mymenu "Water Breathing" "$water_breathing,180;E,10" gives the player the water breathing effect for 180 seconds at a cost of 10 economy credits. See Command Parser (Costs section) for more information.
  • Replaced (haha) the /sms replace command with a more versatile /sms edit command. This can be used to adjust the label, command, feedback message, icon (for inventory views) or position of menu items. See Usage / Editing Menu Items.
  • Explosions which affect SMS view blocks are no longer entirely cancelled, but view blocks are still protected (when "no_explosions" is true, of course)
  • Map view items now have a tooltip indicating the title of the menu they are associated with (Spout is no longer required for this, since MC 1.4 can do it natively)
  • The "<EXP>" string is now substituted with the player's current experience total in commands. E.g. /sms add mymenu "Check EXP" "\\You have <EXP> experience."
  • The output pager no longer pages large blocks of output (e.g. listing menus) by default, since it's now easy to scroll back with the mouse wheel when the chat window is open. You can restore the previous paging behaviour if you want, with /sms set pager.lines 20
  • Change to /sms givemap command: it is now /sms give map <id> (and added /sms give book <view-name> to give popup books for inventory & spout views).
  • Change to /sms uses command: now use '-global' instead of 'global' when setting global usage limits on a menu or item.
  • Change to /sms sort command: now use '-auto' instead of 'auto' to get auto-sorting menus.

v1.6.0 (15 Oct 2012)

v1.5.1 (18 Sep 2012)

v1.5.0 (8 Aug 2012)

This is mostly identical to 1.4.999 but with fixes for the $X cost, and thread-safety improvement for the new async chat system in CB 1.3.1

  • Built for CraftBukkit 1.3.1-R1.0. This will NOT work with 1.2.5.
  • Resolves deprecation warning with PlayerChatEvent (1.3.1 has the new AsyncPlayerChatEvent)
  • Creative mode: sign views now properly redraw themselves after being left-clicked (left clicking a sign in creative mode blanks it even when the block damage/break events are cancelled)
  • New substitution type: password fields. Using <$p:prompt> in a command will prompt the user for a string just like <$:prompt> but typed characters are not displayed, so useful for entering sensitive data. This is only supported with Spout right now (and there isn't actually a 1.3.1-compatible SpoutPlugin yet so this feature is not too useful just now...)
  • Costed commands: $X experience costs should work correctly with Minecraft 1.3 experience tables.

v1.4.999 (6 Aug 2012)

  • Built for the CraftBukkit 1.3.1 dev releases. This will likely NOT work with 1.2.5 (and no support will be given for trying!).
  • Resolves deprecation warning with PlayerChatEvent (1.3.1 has the new AsyncPlayerChatEvent)
  • Creative mode: sign views now properly redraw themselves after being left-clicked (left clicking a sign in creative mode blanks it even when the block damage/break events are cancelled)
  • New substitution type: password fields. Using <$p:prompt> in a command will prompt the user for a string just like <$:prompt> but typed characters are not displayed, so useful for entering sensitive data. This is only supported with Spout right now (and there isn't actually a 1.3.1-compatible SpoutPlugin yet so this feature is not too useful just now...)

v1.4.2 (25 Jul 2012)

  • Views now properly redraw themselves when /sms replace is used to change the label of a menu item.

v1.4.1 (24 Jul 2012)

v1.4.0 (23 Jul 2012)

  • Changes to menu item handling: duplicate menu labels are no longer permitted. Any saved menus with duplicate labels will have the duplicate(s) replaced with a unique numeric suffix (you're then free to modify them as you wish). This is a slightly incompatible change, but duplicate labels don't really make sense anyway and the change was needed to improve menu efficiency.
  • Added '/sms replace' command to allow modification of existing menu items in a menu. See Usage / Replacing Menu Entries
  • Enhanced '/sms add' to allow items to be added at any position in the menu instead of just at the end. See Usage / Adding Menu Entries
  • Revamp of user variables - they are significantly more powerful now. Added @v: restrictor to restrict commands based on variable values - supports simple, numeric and regexp comparisons. /sms var command is now only available to admins by default. See User Variables
  • Added "view variables". These are arbitrary key/value pairs which can be added on a per-view basis. E.g. allows the possibility of a purchase menu having different costs on different views. View variables can also be displayed on the title or item label of their view. See Usage / Managing Views
  • Command parser: the string "<MONEY>" will be substituted with a formatted string of the player's current economy balance in commands (Vault required)
  • Command parser: the string "<VIEW>" will be substituted with the current view name in commands.
  • Redstone output: added "pulse" and "pulseany" rsoutputmode values. "pulse" will send a brief (duration configurable, default 1 second) redstone pulse when its associated item is executed. "pulseany" will send a pulse on all output switches if any item on that view is executed. See Redstone Output
  • Spout text entry popup (for <$:..> prompted commands) now uses OK and Cancel buttons and no longer responds to Enter and Escape keypresses - the spout textfield just doesn't work properly if the player types and presses Enter too quickly.
  • Completely dropped support for the very old '/sms add menu label|command|message' syntax (which was deprecated way back in v0.6)
  • Fix: $X cost check - false detection of insufficient XP under some circumstances
  • Fix: fixed NPE when repainting Spout views which didn't have a texture under some circumstances
  • Fix: players could pop up Spout views owned by someone else even when "ignore_view_ownership" was set to false
  • Fix: /sms break -loc x,y,z,world threw an "invalid number" error
  • Fix: sign/multisign view scroll position is now saved on server shutdown/reload (map/spout scroll positions, which are per-player, are not saved)

v1.3.2 (27 Jun 2012)

v1.3.1 (19 Jun 2012)

v1.3.0 (18 Jun 2012)

  • New view type: multisign view. These behave pretty much like ordinary sign views, but can be any number of signs wide or high, allowing for bigger menu displays than the 4x15 text you get with a single sign. See
  • Added Redstone control signs. Any sign (or multi-sign) view can have one or more control signs associated with it. These signs allowing scrolling and execution of the view when they receive redstone signals from configurable directions. See
  • Map views now handle &l, &m, &n, &o, &r control codes properly.
  • New config item: maps.break_block_id - hitting a block with this ID with a map view will erase the view from the map. Default is 0, which means disabled. (This replaces the old non-configurable ID of 20 - glass - so hitting glass with a map no longer erases it).
  • New config items: maps.transfer.to_sign, maps.transfer.from_sign which globally enables/disables transferring of map views to sign views and vice versa (default: true, preserving old behaviour)
  • Fixed problem where negative economy costs (e.g. "$e,-1" to give the player 1 credit) didn't work when using BOSEconomy (and possibly other economy plugins)
  • Sign costs: if items are given to a player and there is no room in their inventory, excess items will now drop at the player's feet (previous behaviour was for excess items to vanish into nowhere)
  • Added new view attributes to all views: "item_justify" and "title_justify". These override the global config settings "item_justify" and "title_justify". Can be one of "left", "right", "center" or "default". "default" means to use the global justification setting and is the default value for both attributes.
  • Map and Spout views now also honour the "item_justify" and "title_justify" config items, and also the new "item_justify" and "title_justify" view attributes. (Exception: Spout views don't support anything other than left-justified menu items, but title justification does work)
  • Added anonymous metrics reporting via Absolutely no personal data is sent; only information on how the plugin is being used. See for more information, including how to disable it if you really want to (but I would prefer that you didn't!)
  • New config item: "log_level". This system replaces the "/sms debug" command, which still exists but is now considered deprecated. "log_level" is "info" by default, but can also be set to "fine", "finer" or "finest" for increasing levels of log detail. All logging information is sent to the console and server.log.
  • Quieter on startup: initialisation messages are now only reported if "log_level" is set to "fine" or higher.
  • API: removed some deprecated methods from SMSMenu, SMSMenuItem, SMSView, SMSScrollableView and SMSMapView.

v1.2.1 (16 Apr 2012)

  • Removed spurious debug messages in map renderer code.

v1.2.0 (16 Apr 2012)

  • Built against CraftBukkit 1.2.5-R1.0. Support will not be provided for running ScrollingMenuSign 1.2.0 against earlier CraftBukkit releases.
  • Added redstone output for sign views: sign views can be made to trigger the state of user-definable levers anywhere in the world based on what item is selected. See Redstone Output for more information.
  • Support for new Minecraft 1.2.4 escape codes: &k (random), &l (bold), &m (strike), &n (underlined), &o (italic) and &r (reset). These can be used anywhere that the normal colour codes are used, although they are currently ignored while drawing map views.
  • Another attempt at exp handling (with the $x,<n> command) - giving/taking exp should work correctly now even after enchanting items.
  • The 'no_destroy_signs' setting is now true by default. (This settings prevents players breaking any signs which are sign views, most useful in creative mode. When 'no_destroy_signs' is true, the sign view must first be removed with '/sms break' before the sign can be physically broken).

v1.2.0 release pulled due to presence of debugging code which was removed in 1.2.1

v1.1.7 (29 Feb 2012)

v1.1.6 (28 Feb 2012)

  • If a command is not found with dispatchCommand(), fall back to using Helps work around - also negates the need for "\/command" constructions to run "fake" commands.
  • Macros: the <*> substitution expands to a string of all macro arguments, joined by a space. Makes it easier to pass strings which contain spaces to macro arguments.
  • Spout text entry field for substitutions: removed 15-character limitation on entered text.

v1.1.5 (17 Feb 2012)

v1.1.4 (14 Feb 2012)

  • "scrollingmenusign.denied" parent node has been dropped. It's been causing too many problems with players getting it even when they shouldn't. If you need to deny all access to SMS, just give the player "scrollignmenusign.user: false" (^scrollingmenusign.user in bPermissions, -scrollingmenusign.user in PEX/GroupManager).
  • Fixed bug with sign views where sometime players would get the menu item they last scrolled to, even if another player had since scrolled to a different item.
  • More checks for corrupted persisted data files - show clear error message instead of string of exception text.
  • /sms givemap command can now give maps to other players, e.g. /sms givemap 5 1 desht would give 1 map of id 5 to desht.
  • Percent (%) signs are now escaped in the item_prefix.selected and item_prefix.not_selected config settings (previously an InvalidFormatException was thrown).

v1.1.3 (6 Feb 2012)

  • PlayerInteract events are now always cancelled if SMS has done something with them. Avoids problems like where events are passed on to other plugins when they shouldn't be.
  • Background texture setting is now more consistent between spout and map views. The "resource_base_url" setting can be used in both cases now.
  • Fixed multiworld problem where views on the non-default world did not always load. SMS now track the WorldLoad event to ensure view data is always pulled in when needed.
  • API: SMSMenu#getItem() is deprecated. Use SMSMenu#getItemAt() instead.
  • Removed two deprecated permission nodes from plugin.yml: scrollingmenusign.maps, scrollingmenusign.useAnyView.

(v1.1.2 was not released due a critical event handling bug that was discovered after tagging it)

v1.1.1 (1 Feb 2012)

  • Implemented workaround for problems calling "fake" (user-defined) commands as defined in plugins such as CommandHelper or MCDocs. When defining the command in "/sms add", prefix it with a "\" (the player chat symbol), e.g. /sms add mymenu "About MCDocs" "\/about"
  • Views are now saved as soon as they're created.

v1.1 (25 Jan 2012)

  • Requires CraftBukkit 1.1-R1 (1818). This will NOT work on 1.0.
  • Spout support requires latest Spout plugin build and Spoutcraft client (Spout RB not yet available but Spout plugin build 719 and Spoutcraft build 1076 are working well). ListWidget scrolling problems seen in 1.0 releases have been resolved.
  • Spout views now support textured backgrounds (in addition to background colour and alpha added in 1.0.3) for a really nice visual appearance.
  • Map views can now be left- and right-clicked without having a block targeted (thanks @Sleaker )
  • Saved menu and view data is now loaded at plugin enable time, no longer deferred until all plugins are loaded. This is essential for good interoperability with other plugins. It means that you must ensure all of your worlds are loaded in time with a suitable multiworld management plugin (thanks @Sleaker)
  • Interactive command substitution (i.e. using <$:prompt> in commands) - with Spout and a player running Spoutcraft, substitutions are now prompted for via a popup Spout textfield, which is nicer than entering subs via chat.
  • Interactive command substitution - when using chat to enter subs (i.e. no Spout), left- or right-clicking anywhere now cancels the command.
  • Fixed bug for map view image backgrounds: cached image files under plugins/ScrollingMenuSign/imagecache are now stored with an ASCII filename, not a blob of binary data.
  • Now uses the Bukkit 1.1 event model for improved event handling performance.

v1.0.4 (24 Jan 2012)

  • Play nicely with the Courier plugin. If you hit a sign while holding a map that is used by Courier, SMS won't try and turn it into a map view anymore.

v1.0.3 (20 Jan 2012)

  • More permission fixing in plugin.yml. Permissions should work properly with and without a permissions plugin now.
  • Spout view bugfixes & improvements: ability to set custom background colour and alpha for spout views.
  • Fixed problem in map views where multiple people had maps for the same view (when someone scrolled a map view, all other players holding that map view would see their map go blank)
  • The map view imagefile attribute can now be a full URL, in which the resource_base_url config setting is not used

v1.0.2 (11 Jan 2012)

  • Hopefully fixed experience costs ($X,<n>) to work with MC 1.0
  • Permissions definitions revamped slightly in plugin.yml, parent permissions nodes (e.g. scrollingmenusign.user) should work correctly with PEX now
  • Catch and ignore IllegalStateException from calls to Bukkit's player.getTargetBlock() method - the exception appears to be harmless

v1.0.1 (28 Dec 2011)

  • Fixed problem with permissions checking when creating commands with interactive variable substitution (i.e. <$:name> strings)
  • Fixed problem with recursive calls if command with interactive variable substitution was a chat command
  • Output of /sms debug permission checking now shows the outcome of the permission check

v1.0.0 (21 Dec 2011)

  • Works with CraftBukkit 1.0.1-R1 (aka build 1597)
  • User variables. Set with "/sms var <name> <value>", use in commands with " ... <$name> ... "
  • Prompted variable in commands. "... <$:Type in a value> ... " will display "Type in a value" to the player, and the next thing typed in chat will be subsituted into the <$:...> string.
  • Spout views now use the native Spout ListWidget instead of a stack of Buttons.
  • Map views can now have an image background (see the "imagefile" view attribute).
  • Permission changes to parent nodes (which give a bunch of low-level permissions)...
  • New "scrollingmenusign.guest" node which allows the most basic menu usage, no access to permission elevated commands
  • "scrollingmenusign.user" node no longer gives access to /sms list, /sms show or /sms get
  • "scrollingmenusign.poweruser" gives access to the above commands (as well as access to map and spout views)
  • "scrollingmenusign.admin" is unchanged
  • If player lacks permission to do something, SMS no longer reports the node needed. Regular players don't need to see that. If you're debugging as an admin, /sms debug will show permission node checks.
  • Map and spout views now display the menu item feedback text (if any), same as for signs.
  • Maven: fixed group ID for Vault, updated artifact ID for spoutapi (now spoutpluginapi)
  • Added author/website/description fields to plugin.yml
  • Explosion/physics/damage protection now works for all block types - redstone views are now properly protected.
  • General cleanup: tracked down several NPE's and places where memory could have leaked.
  • Command logging: it is possible to log all commands run by users to either the console or a configurable log file under the plugin folder
  • Dropped support for the "/sms create <menu1> from <menu2>" syntax - it isn't needed when multiple views on a menu are possible

v0.9.1 (13 Dec 2011)

  • Works with CraftBukkit 1.0.1-R1 (aka build 1597)
  • Tested with Spout 644 & SpoutCraft 928, but see notes & caveats below.
  • Worked around problem in dev releases of Spout (only dev releases work with 1.0.1-R1 of CraftBukkit) where NPE's are thrown when setting item names. NPE's are caught and a message like "10:02:30 [WARNING] [ScrollingMenuSign]: Caught exception while setting item name for Spout: class java.lang.NullPointerException" will be shown.

v0.9 (9 Nov 2011)

  • New view type: Spout Views. Can create Spout views on any menu and assign a hotkey (or key combination) to each. Cascading menus (i.e. opening a submenu from another menu) are also possible. See
  • New view type: Redstone Views. Can create redstone views on any menu, where applying and/or removing redstone current triggers a specific command from that menu. These views have some caveats and limitations; see
  • Now uses Vault instead of Register for Economy and Permissions support. Register has been causing way too many problems and the author isn't active on the Register support forums.
  • Needs Vault 1.1.1 minimum. If you use PEX, you need PEX 1.16 minimum.
  • Meaning for '&&' in command sequences has changed slightly. '&&' now means execute the next command IF the last command ran OK (where it used to mean execute the next command unconditionally). E.g. "$E,100 /heal && \\You feel great!" now behaves like you would expect it to, only sending the message to the player if they were actually healed.
  • @g:<group> command restrictor has had a reprieve - it still checks if the player is in the given group. Thank Vault's permissions abstraction layer for that.
  • No longer auto-migrates permission nodes from the &SMS user into the elevation.nodes setting. This means that upgrading from 0.7 direct to 0.9 wouldn't pick this information up automatically. So if upgrading from 0.7, I recommend to upgrade to 0.8.4 first, then to 0.9. If you're upgrading from 0.8.x, there should be no problem.
  • Maps should now render correctly (i.e. per-player) when multiple players are looking at the same map view.
  • 'use_any_view' setting is now called 'ignore_view_ownership', a more accurate description of what it does. It will be auto-updated in your config file. Similarly the 'scrollingmenusign.useAnyView' permission is now known as 'scrollingmenusign.ignoreViewOwnership' (although the old node name will continue to work for now).
  • API: runCommandString() is deprecated - use runCommand() instead. The return value is much more informative now.
  • API: SMSScrollableView scrollUp(), scrollDown(), getScrollPos(), setScrollPos() methods which don't take a Player parameter are deprecated. Use corresponding method calls which take a Player parameter.
  • Using the new Bukkit Configuration API. CraftBukkit 1337 is required.
  • Now uses Maven to build the project.

v0.8.4 (23 Oct 2011)

  • Fixed error reporting if the last command in a macro led to a an error, e.g. a cost was not met. Previously the error status was ignored.
  • Fixed "$$$" being wrongly picked up in a macro command if the command did not get run due a cost or restriction not being met.

v0.8.3 (17 Oct 2011)

  • Fixed index out of bounds exception at startup if the the elevation.nodes setting is empty.

v0.8.2 (13 Oct 2011)

  • Fixed NPE at startup if there is no &SMS permissions user to migrate nodes from.

v0.8.1 (7 Oct 2011)

  • Added support for /#command style, to run the command as if from the console. This only works for commands which can be run from the console in the first place, but for supported commands, will always work. This may be useful for running commands like 'pex' (PermissionsEX) which doesn't work with normal elevated permissions or temporary op, but do work from the console.

v0.8 (6 Oct 2011)

  • Dropped support for Permissions 2.x/3.x. Only superperms-compatible permissions plugins are now supported.
  • Dropped support for CommandSigns 0.9. The built-in command parser is now used for everything.
  • Now uses Register (multi-economy support) as an external plugin. Download from and put Register.jar in your plugins/ folder along with whatever economy plugin you use.
  • Initial Spout support. If present (and player is using the Spoutcraft client) then maps which are menu views now show the menu title as their item name in the inventory. Also, configurable key bindings can now be defined to scroll and execute menus (default is cursor up/down, and Return). Further Spout enhancements are planned...
  • Dropped support for the &SMS fake user. Instead a configurable setting 'elevation.nodes' is used to list the temporary permission nodes to add to a player who is running an elevated command. The first time v0.8 is loaded, this setting will be automatically initialised to the permission nodes that the &SMS user has (or whatever user was specified by the 'elevation_user' setting). Permissions are now added via the built-in Bukkit superperms interface.
  • All fake-user commands (e.g. /*command) now get run as if they were /@command.
  • New configuration setting 'elevation.grant_op', default false. If set to true, players get temporary op status when running elevated commands. You should only need to set this true if you need to run elevated commands from plugins which don't support superperms.
  • Command parser enhancement: new restriction operators @n: and @i:. @n:node restricts commands to player who have the specified permission node. @i:id restricts commands to players who are holding an item of the given id in their hand.
  • The @g:group restriction operator should be considered deprecated. @n:node can be used instead (e.g. instead of @g:admins, put a node like 'isAdmin: true' in your admins group in your permissions config, and then use @n:isAdmin).
  • Command parser enhancement: new cost types $X, $H, $F, $E can be used to charge (or grant) experience, health, food, or economy credits respectively. ($0 can still be used for economy credits)
  • Command parser enhancement: the string <INAME> is now replaced by the name of the held item.
  • Macro enhancements. Macros can now be called from anywhere in a command (i.e. after a @ or $ restriction) where previously they could only be called at the start of a command. In addition, macros can now be passed arguments.
  • Macros are now stored one per file under the data/ directory, like menu and view data is. On startup, the commands.yml file will be automatically migrated to the new structure and renamed to commands.yml.OLD.
  • New permission nodes scrollingmenusign.maps.toSign and scrollingmenusign.maps.fromSign to control whether players may copy maps to and from signs, respectively. Default is true if player is an op or has scrollingmenusign.admin.
  • Menu views (signs & maps) may now have owners (default for new views is no owner). New configuration item 'use_any_view', default true. New permission node scrollingmenusign.useAnyView. If 'use_any_view' is set to false and players do not have the 'scrollingmenusign.useAnyView' node, they will not be able to use views owned by someone else. This may be useful if you want to restrict a map view to one player only - you can set the ownership of the map with the new '/sms view' command.

v0.7.3 (26 Sep 2011)

  • Fixed bug where "elevation_user" setting was being ignored.
  • Fixed bug in command costs where all item stacks in inventory which matched a cost got removed, instead of just one stack.
  • Fixed bug in map view renderer which caused a player kick if a menu which was currently being rendered on a map had an item removed.

v0.7.2 (22 Sep 2011)

  • CraftBukkit 1185 (MC 1.8.1) compatibility. This release will likely not work on earlier CB (MC 1.7.3) releases - use ScrollingMenuSign 0.6.4 for that. Versions 0.7 and later are only for MC 1.8 releases. Only critical bugfixes will be applied to the 0.6.x release train from now on.
  • Prevent blocks from being broken when holding a map which is an active menu view. Mainly for the benefit of 1.8 creative mode - you can now left-click maps at nearby blocks without insta-breaking them.

The 0.7 and 0.7.1 builds were unofficial/internal builds. 0.7 was identical to 0.6.4 but for CB 1149, and 0.7.1 was never released

v0.6.4 (23 Sep 2011)

  • Plugin will now check its version and the CraftBukkit version and disable itself with an informative message if the versions are deemed incompatible. Should be less confusing than mysterious exceptions getting thrown here & there. In particular this version (SMS 0.6.4) will not work on MC-1.8 based builds of CraftBukkit.
  • Added runCommandString() method to SMSHandler (published API), giving other plugins access to SMS's command parser.
  • Added config item "no_destroy_signs", default false. If set to true, menu signs will be indestructible by normal means. The only to destroy them will be to use "/sms break" on them first. This is mainly for the benefit of creative mode users in MC 1.8.

v0.6.3 (19 Sep 2011)

  • Register functionality now built-in - using it as an external dependency was just too problematic.

v0.6.2 (18 Sep 2011)

  • Updated for new Register build.

v0.6.1 (12 Sep 2011)

  • Command parser bugfixes. Command terminator now works properly.
  • Command parser: added \\ command prefix to have the string whispered to the player (like CommandSigns)
  • Bug fixes in map & sign view classes - prevent NPE's when maps or signs can't be found.
  • Fixed up some missing permission nodes in plugin.yml

v0.6 (12 Sep 2011)

  • Significant internal rewrite - structure is much more MVC-based, allowing more flexibility in what views can be created on a menu. Which leads to...
  • Map views! Yes, maps can now be used to display and interact with SMS menus! See the docs ("Maps") for much more information.
  • Also added new "/sms givemap" command, making it easy to get one or more maps of a specific ID. Again see the "Maps" documentation for more information.
  • The built-in SMS command parser is now much more powerful, and is intended to ultimately replace the CommandSigns integration. The SMS command parser is mostly compatible with CommandSigns, so migration should be reasonably painless. However, it should be considered experimental for now, and the CommandSigns integration is still supported for now. This has been done because CommandSigns now appears to be an inactive plugin (not updated in a couple of months). See the docs ("Command Parsing") for much more information.
  • Menus may now have a default command. This command is used if an item is added with no command string. Not so useful on its own, but the default command can include a "<LABEL>" tag, which is replaced with the label of the menu item being executed. This may be useful for e.g. menus of warp points.
  • Syntax for the "/sms add" command has been cleaned up. Now possible to use a quoted syntax, e.g. /sms add mymenu "My Command" "/do my command". No more need for the confusing field separator (which is still supported for now, but deprecated and will give a warning if used).
  • It is now possible to delete menu items which contain spaces by name - just quote the menu item, e.g. /sms remove mymenu "My Command"
  • API updated. Some methods are deprecated now (mainly any SMSMenu methods which dealt with signs & locations - this is now handled in the new public SMSView class and its subclasses). Also, macros can now be manipulated via the API.

v0.5.1 (10 Aug 2011)

  • Usage limits can now be set on a whole menu (in addition to per-item)
  • Some API updates (mainly around usage limits)
  • Fixed bug where creating a menu by punching a sign wasn't working properly

v0.5 (5 Aug 2011)

  • ScrollingMenuSign now has an API to allow other plugins to manipulate menus. See the Wiki for more information.
  • Menu items may now have limited uses - see the new /sms uses command on the Wiki.
  • Menus can now be sorted with the /sms sort command (and optionally configured to always remain sorted)
  • Menu data persistence now stores the menus one per file under ScrollingMenuSign/data/menus/<menu>.yml instead of all in the scrollingmenus.yml file. Makes for efficient data saving (don't need to write everything when one menu changes). Existing saved data will be seamlessly migrated.
  • Now supports Bukkit superperms (but Permissions will still be used in preference if it is detected)
  • Significant internal code cleanup.

v0.4.1 (18 Jul 2011)

  • Colour coded menu titles & items are now stored in the scrollingmenus.yml file with & symbols, not the Unicode ยง symbol. It was proving too problematic ensuring that they got loaded again correctly. This should fix the problems some people were having with menus no longer working after a server reload/restart.
  • Fixed a problem with /sms break ... where it claimed a sign was correctly removed, but wasn't really.
  • /sms sync ... now correctly causes menus to be saved (assuming autosave is set to true).
  • /sms list can now take a menu name to list - it will show the info for only that menu

v0.4 (13 Jun 2011)

  • CraftBukkit RB 860 tested and supported now. RB 803 no longer supported (still likely to work, though).
  • If CommandsSigns is in use, we now require CommandSigns v0.8.7 minimum (recommended 0.8.11).
  • Tested with Permissions 2.7.4 and 3.1.5b.
  • If there is a syntax error in the YAML for scrollingmenus.yml or commands.yml, a backup is now made. This avoids the situation where they may be overwritten by an empty file, losing a lot of work. Check your server logs to ensure the files are successfully loaded.
  • It is now possible to remove menu items by label as well as index (e.g. "/sms remove mymenu label1")
  • New config item "autosave", true by default. When true, menus are saved to file after every change. When false, they are saved only on server reload/restart or explicit "/sms save" command.
  • New config items "no_physics" & "no_explosions" to protect menu signs from physics events (being broken off a wall/floor) and explosions. Both false by default, enable them if you don't want signs being broken at all. See Config for more details.
  • New config items affecting global menu display: "item_justify", "item_prefix.selected", "item_prefix.notselected". See Config for more details.
  • "/sms break" command can now take location of the sign to remove on the command line, e.g. "/sms break 100,65,-50,world". world is mandatory if on console, optional otherwise.
  • Feedback messages from signs can now be coloured (usual &X syntax) and may also use macro expansions like commands do. This may be useful if you want to display extended help text when clicking an entry.
  • If scrollingmenus.yml is edited directly and reloaded (/sms reload), any menus that you deleted in the file will now disappear properly from in-game (previously they stayed in game even though missing from the saved file).
  • The field separator string for /sms add is now a string literal, not a regular expression. Regexps are just unnecessarily complex for this simple application. The default separator in config.yml is now just '|', not '\|' - this will be auto-updated in your config if necessary. No user intervention needed.
  • Added /sms debug command to help track down problems. At the moment, only events are logged.

v0.3.3 (4 Jun 2011)

  • Fixed parameter count check when creating signs - forgetting to pass a title caused a NPE. Now gives a sensible error message.

v0.3.2 (2 Jun 2011)

  • Fixed a silly bug that ignored any sign the player was looking at when creating a menu.

v0.3.1 (2 Jun 2011)

  • Fixed uncaught IndexOutofBoundsException when removing entries from a menu
  • Adding menu entries which use special CommandSigns commands (/@, /* etc.) are now subject to the same permissions checks as if you were creating them on a CommandSign directly. E.g. you need commandSigns.super or commandSigns.super.fakeuser to create an entry with a /* command, etc.
  • Empty commands now do nothing, instead of making the user say a a line with no text. This can be useful if you just want a menu entry to give the user a feedback message and nothing else.

v0.3 (1 Jun 2011)

  • CommandSigns integration. If the CommandSigns plugin is present, ScrollingMenuSign can use its command parser to handle all commands. Strongly recommended - among other goodies, you get elevated permissions support, and economy support for free! See CommandSigns documentation for details.
  • Fully synchronised menu signs. What does this mean? One menu can now have any number of signs associated with it (even zero), each sign being an independent view on the menu's contents. Update the menu, all associated sign automatically reflect its contents.
  • Command macros. You can set up macros which call multiple commands, and can even call each other (yes, recursive loops are detected and stopped!)
  • All /sms subcommands can now be abbreviated to their shortest unique spelling. E.g. "/sms c" instead of "/sms create".

v0.2.1 (27 May 2011)

  • Fixed bug in /sms title where only the first word of a multi-word title was used
  • Most commands can now be used on the console (/sms create cannot be, and /sms show & /sms break can only be used if a menu name is passed)

v0.2 (26 May 2011)

  • Added colour support for menu titles & labels.
  • Titles are no longer blue by default - colour support means you can choose their colour yourself. However, any previously saved menus will have lost their colour after upgrading - sorry! You can re-colour them with the new "/sms title" command.
  • Added config file (config.yml) and "/sms getcfg" / "/sms setcfg" commands
  • Added "/sms title" command to change an existing menu's title
  • Menu item field separator for "/sms add" can now be set in configuration
  • Menu actions (left-click, right-click, mouse wheel) are now configurable.

v0.1.1 (25 May 2011)

  • Fixed NPE on sign creation in some circumstances
  • Fixed problem where menus were destroyed if any block was placed/removed beside a sign (bad processing of block physics event)

0.1 (23 May 2011)

  • Initial release


Posts Quoted:
Clear All Quotes