Properties¶
Sponge has some properties you can set on the command-line that can assist with debugging and other tasks. These properties provide useful information in the logs when submitting issues.
Usage¶
The properties are set on the command line in the server launch command using the -Dkey=value
syntax. For example,
the launch command may look like this: java -Dsponge.shouldFireAll=true -Dsponge.filter.debug=true -jar forge.jar
.
Note
The example above is a simple launch command. Your launch command can, and probably will, have other options.
Properties Available¶
Property | Description |
---|---|
sponge.debugBlockTransactions (boolean, default: false) |
Prints out a very verbose log entry for every block captured that is processed,
information about what BlockStates are proxied, what BlockStates exist
on the Chunk during processing, and potentially what BlockStates
existed prior to a future transaction changing positions. Likewise applies to
tracking TileEntity instances. Useful for debugging purposes for the
implementation, and potentially plugins, when dealing with
ChangeBlockEvents and their processing. |
sponge.debugcauseframes (boolean, default: false) |
Adds a StackTrace to each StackFrame for when either the Sponge
implementation or a plugin potentially corrupts the CauseStackManager ‘s
StackFrame s, whether it’s a frame being popped out of order, or popping
an already popped frame. This is useful to find out where the frame was
created. |
sponge.debugProxyChanges (boolean, default: false) |
Similar to the StackFrame exception creation, this tracks the stack trace
for each BlockTransaction that is captured for a block being changed, a
neighbor notification request, or a TileEntity change. Useful to find out
where each transaction is created, potentially adding more information if there
is an exception thrown during the processing of said transactions. Should
always be included for logs when reporting issues involving these sort of
transactions. |
sponge.debugShouldFire (boolean, default: false) |
Logs changes to the ShouldFire flags when event listeners are
registered/unregistered causing one of the boolean flags to be flipped (whether
it’s going from true to false or false to true ). |
sponge.filter.debug (boolean, default: false) |
Writes out classes that are generated by the filter generator to the
.sponge.debug.out folder, named after the class they are altering. |
sponge.print_all_catalog_types (boolean, default: false) |
Prints out all Sponge provided CatalogType s and their String id’s
before preInit, which is useful for finding out what id’s are registered from
vanilla, mods, and plugins for all created CatalogType s. |
sponge.shouldFireAll (boolean, default:false) |
Forces all boolean “performance” checks for common SpongeAPI events to be
forcibly created and fired, regardless whether there is a registered event
listener for the desired event (Sponge will normally not construct and throw a
ChangeBlockEvent if there are no listeners for that event or its sub
events). |
sponge.world.migrate_old (boolean, default: true) |
World migration is disabled when this is set to false. The migration process is described in Migrating to Sponge. |
timings.bypassMax (any value that exists) |
Allows for bypassing the max number of frames to send to the Aikar’s timing API. Setting this will not permit bypassing the limit unless the API is configured to permit it. |
Warning
sponge.debugcauseframes has the potential to increase performance costs due to the stack trace creation for every frame in the duration of the game’s lifecycle.
sponge.debugProxyChanges has the same potential to increase performance costs in potentially intensive
environments due to exception creation for every potential Entity
/ TileEntity
/ Block
being ticked in
the game.