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.