Releases: bhavanki/grounds
Releases · bhavanki/grounds
v0.7.2
Notable new features:
- A new lightweight markup language lets you customize text appearance in messages, sent either as a player or by a plugin.
- The new ArrivalEvent and DepartureEvent events definitively indicate when players arrive to and depart from the game.
Notable improved features:
- The chat plugin uses the new ArrivalEvent to trigger adding guests to the #guest channel.
- The chat plugin now automatically removes guest players from #guest when they depart.
- Help content for commands now lists permitted roles.
Fixed bugs:
- Missing help text for MAIL MARK_READ is added.
- The events plugin no longer allows guests to use it.
Other interesting changes:
- If the current owner of a thing is missing, it cannot be claimed or abandoned.
- You can now abandon a thing with no owner.
v0.7.1
Notable new features:
AnnounceCommand
lets a wizard page all players at once.- Plugin commands may now list caller roles that are permitted for them.
Notable improved features:
- The chat plugin supports channel visibility and joinability constraints by role and/or player name. The role constraints are possible through the new
getRoles
plugin API command. - The
$chatadmin
plugin command is now restricted to wizards.
Fixed bugs:
RunCommand
now ignoresSHUTDOWN
.- ANSI coloring is now correctly disabled when an actor's "ansi" preference is not set to "true".
v0.7.0
Notable new features:
- Scripts have been removed in favor of plugins. Instead of running softcode written in Groovy and stored within a universe, Grounds calls out to external plugins over JSON RPC written in any language.
- In turn, plugins may call back to Grounds through a new API in order to gather information about the universe and make changes to it.
- All of the former scripts - random, magicfiddle, chat, and events - are replaced with equivalent plugins. The first two are written in bash (!) and the last two in Go.
TeleportCommand
andMoveCommand
now emit enter and exit messages to other players when a player enters or exits a location.- Similarly,
YoinkCommand
now emits arrival and departure messages to other players when a player is yoinked (logs in, logs out, or is yoinked).
Notable improved features:
BuildCommand
returns the ID of the thing it built.- The GOD player can build from any location, even nowhere.
RunCommand
prints "true" or "false" for successful commands that return booleans.InitCommand
no longer replaces the original guest home of a new universe.- Code coverage tests no longer include code generated by
protoc
.
Fixed bugs:
- Guest players are now built with a BUILD command instead of directly by
Shell
, which closes a hole allowing changes in the universe outside of commands. ArgumentResolver
now always checks the requested thing type when resolving "here".- Empty lines work correctly in
RunCommand
again. LookCommand
no longer reveals extensions to non-wizards.
Other interesting changes:
- Grounds now requires Java 17 or higher.
- GroundsSecurityManager is eliminated. It was only present to run with a Java security manager to try to protect Grounds from rogue scripts, but the danger is gone with plugins.
RecordOutput
andTabularOutput
now support creation in one step from maps. This is mostly in service of plugin support.- Jackson dependencies are updated to 2.12.6.
- There are unit tests for more commands and more of command handling, and more of other stuff too.
- A new
Concierge
class centralizes guest management. - Use of generics around the
Command
class is tightened up.
v0.6.0
Notable new features:
- Telnet is now supported, either by itself or along with SSH.
- Autocomplete for commands and subcommands is available.
- Players are notified when another player arrives in their location by logging in, or departs their location by logging out.
Notable improved features:
- With no arguments, the HELP command provides general guidance.
- Line breaking is vastly improved. Most importantly, it now accounts for ANSI escape codes which otherwise can cause early line breaks. Trailing spaces are also trimmed more effectively.
- The MUTE and UNMUTE commands may now refer to players that are not in your current location. Similarly, TELEPORT may now refer to other locations by name.
- The WHO command reports the value of each player's "doing" attribute as a way of reporting status.
Fixed bugs:
- Entering an empty line no longer produces an error.
- Entering multiple exclamation points in a command no longer triggers "event expansion", which would insert previous command text. So awesome!!!
- The WHO and ACTOR BOOT commands no longer fail if an actor is connected but has not yet selected a player.
Other interesting changes:
- Messages can now emit horizontal rules which span the actor's terminal.
- You can no longer MUTE yourself. Just say less.
- The default host for the server is changed to 0.0.0.0.
- The maximum action dice you can spend on a combat maneuver is increased to 4.
- Unchecked exceptions thrown from commands are now logged and wrapped properly.
- An attribute specification, like "count[integer]=4", can now use lowercase for the type.
v0.5.0
Notable new features:
- Players can now engage in non-mortal combat! The new COMBAT command provides a system for teams of players, and optionally NPCs, to fight using skills and the luck of the dice.
- Non-guest players can use the new softcoded
$event
command to manage scheduled events. - The new PAGE command lets you communicate with players from afar.
- The new CHANGE_PASSWORD password lets you do just that, finally.
- Actors can now set their timezone, which is applied to timestamps they see (like in events).
Notable improved features:
- The initial player selection process after logging in is cleaned up and much easier.
- Commands may now be input across multiple lines.
- The ACTOR GET command is improved with much more actor information.
- The WHO command is revamped with better output, and it now works for all players.
- MAIL LIST and MAIL GET command output is improved.
Fixed bugs:
- Some issues with rendering ANSI colors have been fixed.
Other interesting changes:
- The LOOK command shows the ID of the player's current location, when IDs are being shown.
v0.4.0
Notable new features:
- You've got mail! An in-game mail system is introduced through a new set of MAIL commands.
- With no arguments, the MUTE command prints out the player's mute list.
- A thing attribute may now have a "timestamp" type (with second resolution).
- The new ACTOR LIST command lists all actors.
- Grounds can now be run under a security manager, in order to restrict what softcode (Groovy scripts) is permitted to do. The run.sh script helps with starting Grounds with a security manager enabled. Operations that are restricted include:
- working with the actor database
- executing commands
- working with and saving universes
- New events are created for:
- a player leaving a location
- a player saying something
- a player taking something
- a player dropping something
- a player getting yoinked from a location
- a player getting yoinked to a location
Notable improved features:
- Chat channels now have controls for who may see and join them.
- The INSPECT command can now print just one attribute of a thing.
- If a script run for a ScriptedCommand throws a CommandException, it is reported to the caller's console or shell, and not just logged.
- Scripts can now log what they are doing.
- A listener attribute on an extension may be made "localized", so that it only triggers for events in the extension's location.
- Events now include a location. Retrieved event payloads automatically include player and place IDs.
Fixed bugs:
- Line breaking no longer can occur within ANSI escape codes.
- A guest's temporary player may now receive messages and has a correct home.
Other interesting changes:
- The actor preference "showIds" controls whether thing IDs are presented in game. Usually you don't want to see them, but it can help wizards a lot.
- Line breaking is generally improved.
- Guests may now use the chat system, and are automatically joined to the #guest chat channel.
Internals:
- Java 11 is the new minimum supported JVM version.
- Several dependencies are updated, including Groovy and Apache SSH.
v0.3.0
Notable new features:
- When a player leaves the game, they are "stowed" at the universe origin and
so not present in the IC world. When a player returns, they are brought out
to their home location. - New $chat and $chatadmin commands are available.
- Help text for scripted commands is now supported.
- Extensions support listener attributes, which are scripts run in response to
events posted by commands. This enables automatic reactions to occurrences in
the game. - Extensions are now considered players in the game, with their own roles; this
avoids the need to create hidden "bot" players for that purpose.
Notable improved features:
- Password authentication failures are logged in a way that is easily detected
by fail2ban. - Saving a universe to its default file, as well as autosaves, now involves
saving to a temporary file first, to guard against a save failure corrupting
the save file. - Values for attributes that are themselves either attributes or lists of them
may now be constructed from YAML strings as well as JSON strings. - The GOD player is now handled better when a new universe is loaded.
- Failure to parse or run a script is now logged.
Fixed bugs:
- The SWITCH_PLAYER command now works even when the two players involved are not
in the same location. - Player auto-selection will no longer happen if the player is occupied.
- In single user mode, the GOD player's actor is now set, so that messages
appear.
Other interesting changes:
- A universe is now required to have an origin, lost and found, and guest home.
v0.2.0
Notable new features:
- Things can be destroyed.
- Actors can store preferences. The only defined one right now, "ansi", controls whether color codes are emitted.
- Players can have home places.
- Actors may be kicked off of the server ("booted") and locked out.
- Players may mute other players.
- Players may describe things more easily.
- Guest login is supported.
- The server emits a welcome banner prior to user login.
Notable improved features:
- Help text is complete and packaged in a bundle for internationalization.
- Actor login times and IP addresses are tracked.
- The state of the universe is now saved automatically at a configurable interval.
- Actors may now log in multiple times at once.
Other interesting changes:
- The multiverse model has been removed. The game now only uses one universe at a time.
Internals:
- Unit tests are now using JUnit 5.
- Jacoco code coverage is integrated.