ScrollingMenuSign
Videos
Latest video:
- See the Videos page for full list of demonstration & tutorial videos.
Latest Version
Features
- Create scrollable command menus with one or more sign, map, multisign, inventory, hologram or spout views. Or trigger your menus with redstone signals or even from any held item.
- Scroll through views with right-click, execute the selected command with left-click (configurable)
- Sophisticated command parser/executor - permission elevation, command costs (items/durability/economy/food/health/xp), player/group/world restrictions, variable substitutions...
- Commands can have warm-ups and cooldowns
- Macros - run multiple commands or display large text blocks with one click
- Build a hierarchy of menus using Submenus
- Flexible Access Control gives you private menus and views, or limited to permission groups.
- External scripting language support allowing unlimited flexibility in what menu commands can do
- Sign & multisign views can produce Redstone Output when scrolled or executed
- Redstone Control Signs allow remote scrolling & execution via redstone signals for sign & multisign views
- Permissions support via Bukkit superperms
- Command Logging lets you keep an audit trail of who's executed what commands from SMS menus
- Multi-world support: menus can have views in any number of worlds
- Full coloured/bold/italic/underline/strikethrough text support on menu titles, items and messages
- Configure menus or menu items to have a limited number of uses, either per-player or globally
- Comprehensive tab completion for all commands
- Optional Spout support
Possible Applications
- A menu of station setting commands for Minecart Mania (this is what inspired me to write the plugin in the first place!)
- Newbie user guide menus
- Warp menus for your favourite teleportation plugin
- A basic shop menu - buy/sell/swap items & credits
- Controlled access to commands that users can't normally run
- Item reward menus with limited usage count
- Traps built from redstone views and/or scripts
- Super-convenient game mode (survival/creative) changer with map and/or spout views
Installation
Pretty simple:
- Copy ScrollingMenuSign.jar into your server's
bukkit/plugins
folder - Optional: install Vault for economy command costs and/or permission group support.
- Optional: install ProtocolLib to make active items glow.
- Restart or reload your server.
That's it. ScrollingMenuSign will automatically create a folder called bukkit/plugins/ScrollingMenuSign
when it first runs. All data related to the plugin is stored in here.
Documentation
- Quickstart Guide
- FAQ
- Command Reference
- Permissions support
- The Configuration File
- The Command Parser
- Submenus
- Warmups and Cooldowns
- Popup Messages
- View Types
- Redstone Output
- Macros
- Menu Item Tooltips
- User Variables
- Command Logging
- Setting usage limits on menus & menu items
- Redstone Control Signs
- Spout Support
- Using External Scripting Languages
- API: Managing ScrollingMenuSign menus from scripts or other plugins
Source
Development Versions
Development versions can be downloaded from this Jenkins build server. Notes:
- Development versions have not been approved by dev.bukkit.org staff
- Development versions may be buggy or fail to work completely. Only use development versions if you a) want to help with finding bugs, or b) have been asked to, to test a bugfix.
Changelog
Usage Statistics
Since SMS v1.3.0, fully anonymous usage statistics are collected using MCStats:
If you wish to opt out of MCStats metrics collection, edit plugins/PluginMetrics/config.yml
and change opt-out: false to true.
Donations
If you use and enjoy ScrollingMenuSign, you are welcome to make a donation by clicking the "Donate" button at the top right. However, donations are strictly optional, and don't confer any special benefits over non-donors.
@wiedzmin137
Done!
Little suggestion - add link to devbuild server here.
@wiedzmin137
Can you create an enhancement ticket for that one, otherwise I'll just forget it :)
@desht
And question about icons - is there possibility to change their amount and enchantment (boolean)?
@wiedzmin137
Ah, OK. I've just fixed that in the latest dev release - set up proper non-null defaults for anything not specified in the Builder object. Your code didn't set use withMessage() so it was wrongly set to null in the menu item, when it should have been "". Your code should work fine with the latest dev release (Jenkins build #15).
Builder looks very nice but...
It was returned this (on 223 line I have menu.setAutosave(true); )
Lang enum contain &something for colouring.
@wiedzmin137
Not bored, discussion is always welcome :)
However, a setAltCommand() method won't be added, since SMSMenuItem is a (mostly) immutable class - only the remaining uses on an existing menu item can be changed.
To set the alt-command in a new SMSMenuItem, use the
SMSMenuItem.Builder
object, with thewithAltCommand()
method, e.g.I decided to add a builder pattern for this class since the number of (optional) parameter was just getting too big...
Also, can you add setAltCommand into SMSMenuItem class?
You're not bored with my requests?
@wiedzmin137
OK, I see. It may actually be possible to do without ProtocolLib - it's just a matter of making the appropriate substitutions when the item stacks are created for the inventory window. I will probably make that a feature which needs to be enabled in the config, simply because it adds extra processing time for a feature not everyone will need. But yeah, I can the use for that...
@desht
Substitutions in lore - I would see API for that and {Player} variable (maybe here ProtocolLib is needed ;) ).
E.g. (with API):
Those examples are about Skills from Heroes, SkillLevel from my plugin.
I think that it will be faster that actualize menu.yml ALWAYS onMenuOpen.
@wiedzmin137
API for adding custom substitutions: no, but that's a good idea, and something easy enough to add. Expect to see it in the upcoming 2.4.0.
Substitutions in lore: no, and that's a bit harder. What kind of use-case do you see for this?
@desht
And is there API for writing your own variables by external plugin?
Are those variables can be used on lore?
@wiedzmin137
It's absolutely possible, and no ProtocolLib or extra plugin is needed. Any occurrence of <NAME> in a command is replaced with the name of the player who is running the command. The next release will also support the <UUID> replacement for the player's full UUID.
See http://dev.bukkit.org/bukkit-plugins/scrollingmenusign/pages/command-parser/#w-command-preprocessing for a full list of subsitutions that are made.
Is there possibility to write variables on menu.yml? E.g. {player} - in game returns players name (who e.g. see that).
If not, can you implement that (as I know, you can use ProtocolLib for that)?
@wiedzmin137
Yeah, this looks interesting :) I'll definitely be checking this out.
For Holografic view, you can use Touchscreen Holograms, like here.
@wiedzmin137
Yeah, items with no command would cause an inventory view to pop down (if its "autopopdown" attribute is true, which is the default). I can modify that for the next release, and not pop down views at all if the item has no command.
If you can find a way of preventing an inventory window from closing, great :) But I'll be extremely surprised. Closing of windows is done client-side, and a packet is sent to the server to tell it that the window has already been closed. It isn't possible to stop the window being closed (although I could possibly just immediately pop the window up again if I can detect that it was closed without any icon being clicked... that could work).
For anyone who uses Submenus in conjunction with View Types / Inventory Views in 1.7.x - if you notice that the "<- Back" button is missing, the fix is here:
http://dev.bukkit.org/bukkit-plugins/scrollingmenusign/tickets/74-doors-from-submenu-doesnt-show/?comment=1
@desht
Maybe you'll create ToDo list?
@wiedzmin137
Yep, sorry, meant to reply earlier. Anyway: