This is an amazing release that adds drag and drop packages, custom cursors, draggable labels and more! Mudlet is now more powerful than ever for building stunning, modern interfaces for MUDs.
Drag and drop packages
Thanks to Edru, who massively improved Geyser and Userwindows in the last update, you can now drag and drop packages into Mudlet to install them. Pretty simple!
Along with this comes a sysDropEvent, so you can code a custom action when a file is dropped into Mudlet. If you’re a package author, remember you can make use of the sysInstall event to notify that your package has been installed. Enjoy!
Carrion Fields added
This game has put together a seriously impressive Mudlet package and we’re honoured to have them added to Mudlet officially! Double-click on CF in the Connection screen to play :)
Carrion Fields is a unique blend of high-caliber roleplay and complex, hardcore player-versus-player combat that has been running continuously, and 100% free, for over 25 years.
Choose from among 21 races, 17 highly customizable classes, and several cabals and religions to suit your playstyle and the story you want to tell. Our massive, original world is full of secrets and envied limited objects that take skill to acquire and great care to keep.
We like to think of ourselves as the Dark Souls of MUDs, with a community that is supportive of new players – unforgiving though our world may be. Join us for a real challenge and real rewards: adrenalin-pumping battles, memorable quests run by our volunteer immortal staff, and stories that will stick with you for a lifetime.
Adjustable Containers
Edru didn’t just stop with drag and drop – adjustable containers are in as well! What does it mean? It means labels/miniconsoles that you can move around and reposition just by dragging! No code needed.
Try this code in Mudlet:
testCon = testCon or Adjustable.Container:new({name="testContainer"})
testLabel = Geyser.Label:new({x=0, y=0, height="100%", width="100%", color="green"},testCon)
Search within the script
Dicene also added a cool feature – you can now hit Ctrl+F to search within the script only, not your entire Mudlet profile!
He didn’t just stop there either – you can now toggle whenever you’d like to search within variables, default off so it’s quicker:
CP437 encoding now supported
Thanks to SlySven, the CP437 encoding is now supported. Along with a custom font, Medievia makes use of this to draw amazing custom maps :)
Check out a few more screenshots.
Custom cursors
Yep, custom cursors are here! Curious? Download, drag, and drop this demo package into Mudlet to try all the cursors out :)
Big thanks to Edru for adding these in.
New API features
gcms added MXP as another format that you can get data / events from, just like GMCP. Check it out!
demonnic did a pass over the table functions – table.contains() can now check within multiple nested tables, and table.collect(), table.n_collect(), table.matches(), table.n_matches() to make working with tables easier.
Thanks to Edru, you can now manipulate the syncing of a module with enableModuleSync(), disableModuleSync(), and getModuleSync(), and add/edit the Scripts as you see them in Mudlet with enableScript(), disableScript(), setScript(), getScript(), permScript(), and appendScript().
Edru also improved on the userwindows – you can now choose whenever they should be popped out or docked at start, and if docked, which area should they be in. Autodocking while dragging can now be disabled, too!
A few more improvements are also present – see the full changelog below.
Geyser:show() fixed
As mentioned two months ago, we’ve fixed an issue where you could still :show() the child of a hidden container. If your UI relied on this broken behaviour, make sure to update it!
Script editor sizes
Alias/trigger/script editors are no longer huge by default, and they’ll remember their sizes as well. Thanks to dicene for covering this off!
Polish translation ⭐
Big thanks to mwarzec for translating the entirety of Mudlet into Polish! In his own words, it was possible thanks to:
home.. sweet home.. and no reasons to go outside..
Did I miss 4.7?
We skipped 4.7 because that was the April Fools version ;)
Credits
Thanks to all coders who made this release amazing! atari2600tim, Damian Monogue, Edru2, gcms, Ian Adkins, Jim Tryon, Kebap, keneanung, Mike Conley, Richard Moffitt, Slobodan Terzić, Stephen Lyons, and Vadim Peretokin.
Thanks to all translators: DarkApocalypse , Dawid Chomaniuk (pd.chomaniuk), Jelle Z. (jelle619), Leris, Marco “M0lid3us” Tironi (wiploo), mwarzec, vingi, and thomazleventhal for their work in this.
Changelog
added:
- ‘sysDropEvent’ event that allows drag and drop over labels/miniconsoles/main window
- Adjustable Containers are now part of Mudlet. This means nice labels you can drag to move without having to code it
- CLI option –profile to load a specific profile on start
- copy2decho() and copy2html() utility functions
- CP437 encoding is now supported
- enableModuleSync(), disableModuleSync(), and getModuleSync()
- enableScript(), disableScript(), setScript(), getScript(), permScript(), and appendScript()
- getMudletInfo() to show debugging information about Mudlet
- Geyser.changeContainer() to change the parent of a label/window
- Geyser.container raiseAll/lowerAll()
- Geyser:setCursor(), Geyser:setCustomCursor(), and Geyser:resetCursor() (and non-Geyser equivalents) to set a custom cursor over a label
- mxp events and an ‘mxp.’ table for MXP content (similar to GMCP)
- set/resetMapWindowTitle() to change the name of the mapper
- set/resetUserWindowTitle() and shorter titles by default
- setFgColor() for Gauges
- setWindow() to change the parent of a label/window
- table.collect(), table.n_collect(), table.matches(), table.n_matches() to make working with tables easier
- you can now drag and drop packages into Mudlet to install them!
- you can now search just within the script, and not the whole of Mudlet, with Ctrl+F. Enter/Shift+Enter navigate results
- Mapper is a Geyser object now as well under Geyser.Mapper
improved:
- echo() is now limited to 10k characters on a single line
- Geyser:setOnEnter/setOnLeave() now support tables of arguments like other functions
- setLabelClick and others now accept Lua functions directly
- 3D mapper is only loaded when clicked on now
- Mudlet’s language is auto-detected and set for new players automatically
- Noto Font only included where it’s useful (Linux), smaller Mudlet size for macOS and Windows
- searching for variables in editor is now optional and defaults to off (faster search)
- setConsoleBufferSize() won’t allow you to set the limit to be bigger than your computer’s/processes memory anymore
- splash screens are now different for official / dev / public test build versions
- table.contains() can now check for multiple items
- tempComplexRegexTrigger() won’t throw an error if expiration is set to 0
- the collapse/expand icon for search is now sharper
- there’s now a frame around the search line in Mudlet
- trigger/script/etc sizes in the editor are now better by default and will remember their position
- updated algorithm for calculating the width of a character
- updated Noto Font to a newer version
- updater window now mentions ‘update’ explicitly
- UserWindows: you can now choose dockPosition on start
- UserWindows: you can now disable automatic docking
- removed getMudletLuaDefaultPaths(). This is a rare case where nobody at all was using the function and it wasn’t needed, so no backwards compat is broken
fixed:
- echoLink() fixed to show text right away
- logging in other languages will now record characters properly
- MXP now handles &text; tag correctly
- toolbar turning black on old macOS when 3D mapper window is opened
- many issues with Geyser Flyout labels fixed
- Geyser:show() won’t allow showing children of a hidden parent anymore
infrastructure:
- big thanks to TheFae for refreshing the frontpage and the downloads page on the website
- added use of Github Actions to automate infrastructure tasks (updating dependencies, translations, etc)
- added use of Github Actions to build Mudlet in macOS and Windows
- createButton() deprecated, now uses an internal wrapper
- text available for translation improved, some \n’s removed
4.8.1 restores Geyser’s :new() behaviour to be as-is and adds :new2() which won’t make a hidden element appear.