There have been over 100 improvements to the Mudlet’s API in the 3.0 release. Check out te list below:
- added: addCustomLine() to programatically draw a custom line in the mapper
- added: getAllRoomEntrances() which returns rooms that have exits to the given room
- added: getAreaExits() to return the exits leading out of a particular area
- added: getCustomLines() to return data on all the custom lines attached to a room
- added: getExitStubs1() which starts indexing from 1, in addition to getExitStubs() which starts at 0
- added: getModulePath() to return the module’s location that it’s loaded/saved from on your computer
- added: getModulePriority() to return the module’s loading priority which determines the module loading order
- added: Geyser.Label:clear() to clear the label
- added: Geyser.Miniconsole:clear() to clear the miniconsole
- added: Geyser.MiniConsole:resetFormat()
- added: installModule() to install a module
- added: map auditing to detect any errors in maps (autocorrects any errors that it can)
- added: native MSDP support! Mudlet has an open architecture so you can also add support for your own protocol via http://cnwiki.mudlet.org/w/Manual:Supported_Protocols#Adding_support_for_a_telnet_protocol
- added: openWebPage() to open a webpage in the browser
- added: option to display whitespace or tabs in the editor
- added: reloadModule() to uninstall and reinstall a module at once
- added: searchAreaUserData(), setAreaUserData(), clearAreaUserData(), clearAreaUserDataItem(), getAreaUserData(), getAllAreaUserData(), setMapUserData(), clearMapUserData(), clearMapUserDataItem(), getMapUserData(), getAllMapUserData() to store user data at the map and area level, in addition to the existing room-level commands
- added: setAppStyleSheet() to allow you theming of Mudlet
- added: setStrikeOut() to strike out text
- added: shms() to convert seconds into hours, minutes, and seconds
- added: status bar display for the main display
- added: stopSounds() to stop all currently playing sounds
- added: sysProtocolEnabled Mudlet event that is raised when MSDP, MXP, ATCP, GMCP or Channel 102 is enabled
- added: sysProtocolDisabled Mudlet event that is raised when MSDP, MXP, ATCP, GMCP or Channel 102 is disabled
- added: table.deepcopy() to make a copy of a table
- added: uninstallModule() to uninstall a module
- added: getMudletVersion() to check Mudlet’s version. Prefer to check if a function exists over checking the version wherever possible as a good practice
- added: you can now use the keyboard up/down/left/right buttons to navigate the trigger/alias/etc editor
- fixed: added missing icon from replay toolbar
- fixed: cecho/decho/hecho not allowing <text inside pointy brackets>
- fixed: colour triggers can now fire on cyan/light grey
- fixed: db: now reports times in the local timezone instead of UTC
- fixed: db: setting _unique property to actually take effect
- fixed: db:close() now allows re-opening the database again
- fixed: db:create can now create sheets without the unique index
- fixed: db:eq() now escapes field names when querying the database
- fixed: db:fetch() sort operator is now applied to all fields
- fixed: db:set() to work
- fixed: disabling/re-enabling MCCP from the game no longer breaks output
- fixed: downloadFile() now supports https:// URLs
- fixed: duplicate .xml files if you specify an existing file to use when exporting profiles or triggers
- fixed: duplicate area names in the mapper are no longer allowed
- fixed: errors window will no longer show errors about WindowResizeEvent at startup
- fixed: exportAreaImage() now draws doors as well
- fixed: getExitStubs() to return correctly if no exit stubs are defined
- fixed: Geyser clickCallback passes all arguments to function, rather than only the first
- fixed: geyser flash() callback fixed
- fixed: Geyser.MiniConsole:setBold(), Geyser.MiniConsole:setUnderline(), Geyser.MiniConsole:setItalics() toggles to work
- fixed: Geyser.MiniConsole:setFontSize changing fontSize of other miniconsoles
- fixed: insertText() crashing when containing newlines (“\n”) and used outside of triggers
- fixed: io.exists() can now detect if folders exist on Windows
- fixed: minimised alias/trigger/etc editor wouldn’t come back if you pressed on Aliases/Triggers/etc buttons
- fixed: Mudlet randomly resizing on OSX
- fixed: new rooms default to area -1 in the mapper
- fixed: permanent triggers that get added from a package/module import no longer end up behind in execution order after existing temp triggers
- fixed: regex compilation errors in triggers and aliases are now reported correctly
- fixed: script editor losing your scripts
- fixed: setExitStub() to allow in/out exits
- fixed: setExitWeight() won’t accept invalid exits anymore
- fixed: some profile icons in the connection dialog no longer have a black background
- fixed: spawn() to read more than the first line of the output
- fixed: tempLineTrigger() crashing under very specifc conditions
- fixed: typos in item activation/deactivation messages in the trigger/alias/etc editor
- fixed: uninstalling scripts now also unregisters the event handlers they had
- fixed: xterm256 colours not showing up properly
- fixed: you can now pass numbers bigger than 999999 through Mudlets event system
- fixed: sound not working in 3.0 previews
- improved: 2D map selection now has the info label dynamically move out of the way as needed
- improved: changing areas in the area selection mapper dropdown now centers on the area
- improved: copying maps across to other profiles automatically reloads the map
- improved: createGauge() can now specify the gauge orientation
- improved: createMiniConsole() can now be called multiple times to change the layout of a miniconsole
- improved: createRoomID() can now take a starting roomID
- improved: db:add() to return a positive result on completion or nil and the error message on fail
- improved: db:aggregate() now allows filtering by distinct values
- improved: db:query_by_example() can now be used with all functions as the query
- improved: display({}) outputs {} and not {\n}
- improved: drawing custom exit lines is now more intuitive
- improved: echo() now uses the current foreground/background colours of the cursor
- improved: exits interface for the mapper reorganised and has its own icon
- improved: fg(), bg() accepts “main” parameter and report wrong color names used
- improved: game profile tabs in the main window are now re-orderable
- improved: getColumnNumber() can now return the column number for a miniconsole as well
- improved: getLineNumber() can now return the line number for a miniconsole as well
- improved: map can now store players position (requires map format 18)
- improved: map loading speed
- improved: much faster initial Mudlet loading
- improved: mudlet.exe now has an icon on Windows and in the Control Panel
- improved: raiseEvent() now takes boolean and nil arguments
- improved: replace() can now have a 3rd argument to keep the colour
- improved: room deletion in the mapper is much quicker
- improved: room/area deletion speed in mapper
- improved: searchRoom(), getRoomName(), setRoomName() can now work with non-Latin characters. This is leading up to upcoming work to make Mudlet i18n friendly
- improved: setExitWeight(), addCustomLine(), setExitStub(), connectExitStub(), lockExit(), hasExitLock(), setExit() can now take shorthand “n”, longhand “north” and numeric 1 arguments for specifying the exit
- improved: setGaugeText() now works with my text here to align the text
- improved: showColors() colors are clickable, added showColors(columns), showColors(filterColor), showColors(columns, filterColor) options
- improved: table.contains() won’t error if passed nil for the table argument
- improved: various mapper functions now find rooms faster
- improved: word wrapping now gets rids of leading spaces on wrapped lines
- improved: you can now double-click on words in the main window and miniconsoles to highlight them (also: you can configure what it should stop selecting on)