June 10, Documentation, UTF Surrogate Pairs, and Lua Admin Commands

I’ve been working on a few nice things for the behind the scenes stuff.

First thing I did was make a few of the admin commands nicer. Banning now can take an optional timeout and unban automatically once the time is done. The cavaets are that the server needs to stay running, because temp bans aren’t stored, yet (perm bans are of course). This is useful for short term bans for someone to cool off, like 10 minutes or a few hours.

Next, I retooled a bunch of the duplicate admin commands to take a playerSpecifier instead. See my player specifiers post on the forums for more detail on how they work.

Then I changed /listcid to simply /list and modified it to also display the player’s UUID and if the player has characters that can’t normally be displayed by our font it will display the UTF escape code for the character instead. So if you have someone named “😀☃” you won’t be able to read their nickname normally but the list command will output them as $3 : \ud83d\ude00\u2603 : $$(uuid goes here).

You can use the unicode escape sequence to address them to any admin command.

Notice that I’m using the \u not the \U unicode escape sequences, which means much of my time this morning was taken up writing an encoder and decoder for UTF surrogate pairs and redoing bits of the parser to handle them better. This will save a lot of keystrokes though, because that sort of huge unicode codepoint is rare.

Next, I stuck a lua script hook into the command processor. Now you can define your own admin commands. There isn’t much to the lua API yet, but that will change as we figure out what you need.

Finally, I changed the format of the Lua callbacks so that Doxygen can parse them (some of them anyway, there’s still a lot to do), then I changed our doxygen settings to make documentation fit for public consumption (remove verbatim_headers and full_source).

You can find public documentation at: http://doc.playstarbound.com.

Currently it’s updated manually whenever I fancy it. But once we get the nightlies system working, I’ll make sure that the script that uploads the nightlies also updates the documentation. Enjoy modders.