JJ2+ Readme

JJ2+ (last updated October 30th, 2013)

Created by BlurredD based on Neobeo's code

With much help from Monolith

And additional code by Grytolle

Expanded by Violet CLM and Jerrythabest

Additional credits: Neobeo, Monolith, Cpp (Overlord), Grytolle, EvilMike, Bobby aka Dizzy, Red^Ninja, Salface, Shane Lillie (Notepad chatlogger), cooba, Emo (some guy), Cataphract, the [semi-idle], Syntax (who made the original Roast Tag rules), SuPrem, Stijn, DoubleGJ, Sir Ementaler, Foly, TreyLina, ninjaCC, zepect, the guys at CodeProject, and others who (might?) know who they are.

Additional Artwork: Hare, Blade, Disguise, Pyromanus, P4ul, Mez, Toxic Bunny, Spaztic, Haze.

About JJ2+

JJ2+ is a mod, adding countless features and bug fixes to both Single Player and Multiplayer gameplay. It has much better network code than the original game, fixes or enhances many of the events in the game, and allows level designers far more power than in regular JJ2 through the addition of an easy-to-use scripting language.

JJ2+ only works with the full versions 1.23 and 1.24 (TSF), although not all versions of 1.23 and 1.24 are supported. In particular, TSF: LK Avalon is not supported.

JJ2+ makes use of the BASS audio library, allowing support for MP3/MP2/MP1/OGG/AIFF music and better support for module music. Warning: Users not running the latest version of JJ2+ will crash if JJ2 attempts to load any music file that is not a supported module music track.

JJ2+ has been in development more or less since January 2006. It is not open source at this time.

Any questions about JJ2+, or bug reports, can be posted either in the dedicated thread at the Jazz Jackrabbit Community Forums, or our ModDB page.


Extract all files from plus.zip into your Jazz Jackrabbit 2 directory.

If it is the first time JJ2+ is installed, it is necessary to run the Plusifier (plusifier.exe) first. The Plusifier takes JJ2's original executable and makes a new executable that automatically loads plus.dll on startup. The new executable will have a plus sign added to its filename. The Plusifier DOES NOT need to be used every time JJ2+ is updated, unless specified otherwise.

The Plusifier allows overwriting the original exe or another file, so BE CAREFUL and make backups when necessary. Please report any problems with the Plusifier.

plus.dll can also be loaded into an already running JJ2 process by using plus.exe, but using it is strongly recommended to use the Plusifier instead.

If you receive an error (unlikely) claiming that you are missing "MSVCP100.dll", you will need to download the Microsoft Visual C++ 2010 Redistributable Package. If you are running JJ2+ in Wine, the module "vcrun2010" in winetricks should do the trick.

Latest Changes

Oct 30, 2013

Oct 19, 2013

Feb 5, 2013

Feb 4, 2013

Jan 28, 2013

Jul 7, 2012

Jun 30, 2010

Apr 8, 2010 (A)

Apr 8, 2010

Jul 28, 2009

Apr 10, 2009

Apr 9, 2009

Nov 27, 2008

Aug 28, 2008

Jul 3, 2008

Jun 22, 2008

Apr 9, 2008

Apr 5, 2008

Apr 3, 2008

Mar 22, 2008

Mar 14, 2008

Feb 17, 2008

Jan 17, 2008

Jan 11, 2008

Jan 5, 2008

Dec 21, 2007

Miscellaneous features/fixes added before Dec 21, 2007

New features and bug fixes

Note that this section is updated rather arbitrarily. For a much fuller sense of JJ2+'s contributions, read the Latest Changes section instead.

Note: See commands below for additional features.

Known Issues

This is, naturally, only a partial list, but hopefully it covers some of the more egregious issues.


The Points stat is based on the number of roasts a player has and includes point decreases from pit deaths and similar. In other words, it's the number of "roasts" you see on the screen during a JJ2 game. The Roasts stat is strictly the number of kills a player has in a given game. This is true for all custom modes and game modes that record these stats. For custom modes like Roast Tag and battle games with pits, "Points" makes a lot more sense. I know it's not immediately obvious what points and roasts means in the Playlog, especially in team games, but now you know. I am considering using the word "Points" in the HUD for Battle mode in the near future.

Level List and Zipping Levels

plus.exe also serves two main purposes: adding levels to the Level List (in file LevelList.ini) and zipping levels including their tilesets, music, scripts, and other linked levels automatically. Note that levels can be added to the Level List and a zip file at the same time.

Level List

To add levels to the Level List, you can select the levels within your JJ2 folder and drag them over plus.exe. Arguments can be used to skip the prompts.

plus.exe arguments for Level List:

Used to add levels to the Level List.
-section <section_name>
Specifies which section levels are added.
-link, -nolink
Add/Don't add the levels linked to the specified levels.
-excludefile <filename>
Specifies file which lists files to exclude from being added to the Level List.
See default exclude file plus-exclude.txt which is automatically used.
Exclude no files from being added to the Level List. This overrides the default where files listed in plus-exclude.txt are automatically excluded.

Example shortcuts:

plus.exe -addtolist -nolink
Add levels, don't get linked levels, prompt for section name.
plus.exe -addtolist -section CTF -link
Add levels to Level List section "CTF", get linked levels (useful for level packs).

In addition, plus.exe automatically does renumbering for missing keys and blank level filenames, even when no levels are added to the specified section. You can also write the filenames directly into LevelList.ini directly. The "j2l" extension must be included. This is the general format of LevelList.ini:


The default section names, based on gamemode, are Battle, TeamBattle, CTF, Treasure, SinglePlayer, Race, FlagRun, and Jailbreak. The number before the equal sign must be between 001 and 999, and the leading zeros are required.

On 'Game Server Setup' screen, you can use "levellist [<number>]" in place of a level filename. When the server starts, JJ2+ will attempt to load the first level (or the level belonging to the specified number) from the Level List.

See Cycling and Next Level Commands in the Server Only Commands section for the Level List commands.

Zipping Levels

To zip levels to a zip file, you can select the levels you want and drag them over plus.exe or simply click plus.exe and follow the prompts to add levels from a Level List section. Arguments can be used to skip the prompts.

plus.exe arguments for Zipping Levels:

Used to add levels to a zip file.
-zip <zip_filename>
Specifies zip filename. This argument doesn't need to be used with -addtozip.
If zip file exists, overwrite zip.
If zip file exists, append files to zip and overwrite duplicate files within the original zip.
Zip file cannot contain passworded files.
If zip file exists, append files to zip. Duplicate files within the original zip are always added, which will lead to a situation where more than one file has the same filename. Note that this option is not provided as a prompt.
-addsection, -nosection
Add/Don't add the levels from a Level List section.
-section <section_name>
Add all levels from the specified Level List section to the zip. This argument doesn't need to be used with -addsection.
-link, -nolink
Add/Don't add the levels linked to the specified levels.
-tilesets, -notilesets
Add/Don't add the tilesets of the specified levels.
-music, -nomusic
Add/Don't add the music of the specified levels.
-excludefile <filename>
Specifies file which lists files to exclude from being zipped.
See default exclude file plus-exclude.txt which is automatically used.
Exclude no files from being zipped. This overrides the default where files listed in plus-exclude.txt are automatically excluded.

Example shortcuts:

plus.exe -addtozip -overwrite -nosection -link
Zip levels, prompt for zip save filename, overwrite existing zip, get linked levels, prompt for getting tilesets and music.
plus.exe -addtozip -zip mypack.zip -append -addsection -nolink -tilesets -music
Zip levels, add to zip file "mypack.zip", append files to existing zip, add section from Level List specified through prompt, don't get linked levels, get tilesets and music.

Remote Admin

When Remote Admin is enabled (/remoteadmin on), a client can be promoted to an admin and given access to certain server commands. A client can become an admin either by typing the command /login <password> or, for newer versions of JJ2+, by having an Auto Admin IP address.

The latest versions of JJ2+ offers the ability to manage admin groups. For each admin group, the following can be set: the password, allowed commands (or blocked commands), Auto Admin IP addresses, and whether the group is currently enabled. Auto Admin IP addresses allow a user to be automatically promoted to an admin for a given group when joining the server. The password must be between 8 to 20 characters long and must contain only letters and numbers. If no password or an invalid password has been stored for an admin group in the admin configuration file (admin.ini), a valid password will have to be specified later before that group can be used. Passwords are NOT case sensitive. Any attempt to login (whether Remote Admin is enabled or not) as well as any command issued by an admin will be hidden to any player in the server who is not an admin.

For the commands /c <level_filename> and /n <level_filename>, the admin is limited to the levels that can be found in the Level List (LevelList.ini). The server and admins are able to use Admin Chat--chat only viewable by the server and admins--by prefixing their chat messages with ">". For players running JJ2+, F9 can be used to see who has Admin Access. Those who do will have a green "A" next to their name.

Since an admin may have considerable access to server commands, it is especially important to make sure those who have the admin password can be trusted.

Control Schemes

JJ2+ allows players to edit their keyboard control mapping schemes from ingame, rather than only from the main menu, even in online servers. To modify these controls, press Esc and select the "Controls" option from the menu that appears. (If your JJ2 is configured to use a language other than English, this option will have some other name instead.)

Editing control schemes from this ingame menu works essentially the same way as from the main menu: use the arrow keys to select the control (e.g. jump) you want to specify a key for, press space or enter, then press the key you want to use (e.g. left ctrl). Unlike the main menu control scheme setup screen, the primary, secondary, and middle mouse buttons are available options here, and you are allowed to assign the same key to multiple controls or multiple schemes, although you really shouldn't.

In the event that you are playing with only one local player, your control scheme is "Keyboard 1" (or its equivalent in your current language), and mouse aiming is enabled in the current level or server, you will use the special "Kbd/Mouse" control scheme instead of Keyboard 1. This is preconfigured to allow either arrow keys or WSAD controls, with your primary mouse button serving as an alternate fire key, but you may configure this control scheme just like the other two if you so wish.

Note that if you set any of the controls for Keyboard 1 or Keyboard 2 to use the mouse buttons, and then try to edit that control scheme from JJ2's native main menu control scheme editing screen, JJ2+ may crash. Additionally, normal unpatched JJ2 will not recive input from the mouse even if it is included in a control scheme.

Note that this ingame menu only supports editing the keyboard-based control schemes. Support for joysticks depends minimally on some kind user volunteering to pay for one or more joysticks for testing the necessary code with.

Roast Tag

This is a custom gametype where one player can become it (i.e. the player who has "Eva's Ring" and has a green name), and everyone else tries to roast that player. When no one is it yet, there is a free-for-all, and the first player to get a roast receives three points then becomes it. Afterwards, any time a player kills the one that is it, the killer will become it. In addition, the player with the least points and most deaths will become the bottom feeder and will get a red name. Whenever someone is it, the other players, excluding the bottom feeder, cannot receive points unless they roast the player who is it. The bottom feeder can receive one point for roasting normal players (i.e. players without colored names).

After the first roast, the player who is it receives one point for roasting a normal player, and the points received increase by one after each roast of a normal player for a maximum of five points. Whoever is it will always receive three points for roasting the bottom feeder. Furthermore, the player that is it must get a roast every 90 seconds, or else that player will lose a point and cease to be it. After that, there is another free-for-all.

Roast Tag is enabled by the /rt command.

Flag Run

In this gamemode derived from Unreal Tournament 2004, there is one "flag" which both teams can capture, usually located somewhere in the middle of the level. The flag holder must return the flag to the opponent's base before time runs out or else the flag holder will self-destruct and lose the flag. The flag holder's team has 45 seconds to score on flag captures, and 30 seconds to score on flag steals. A flag can be stolen by roasting the flag holder when he/she has 15 seconds or less to score.


On flag captures, extra points start at 0.

On flag passes and flag steals, extra points get set to 1.

Each roast by the flag holder adds 1 extra point.

Extra points can be 3 at the most.

Flag Run is enabled by the /fr command.

Team Last Rabbit Standing

Teams have a set number of lives which are divided among the players of a team. No player cannot receive more points than Max Lives. If there are lives left over, they go into a team's reserves. When players lose all their lives, and their team has reserves, the remaining reserves are divided among all players of the same team who are out. Game ends when only one team has remaining lives left.

Team Last Rabbit Standing is enabled by the /tlrs command.


Teams try to capture the control points in a level. Each team gains a point for each control point separately every 5-20 seconds depending on when it was captured. The number of seconds between each score depends on the total number of control points in the level:

1-4 control points: 5 seconds

5-8 control points: 10 seconds

9-12 control points: 15 seconds

13-16 control points: 20 seconds

Neutral control points (that is, control points not controlled by any team yet) are shown as a spinning white circle. Once a player touches it, after a one second delay the control point will turn into a Super Gem in the color of the player's team. Captured control points can then be captured by another team in a similar manner. The team that currently holds a control point can prevent its capture by another team by touching the control point within a second after another team has touched it.

In JCS, control points are created by marking any event as Easy or Hard. Control points marked as "Easy" face to the right, while control points marked as "Hard" face to the left. If the event used is a text event, the control point is named after the text string used with that event. If the event used is NOT a text event, the control point will be automatically named based on it's relative position to other control points. For example, if there are two control points and none of them use a text event, the control point closest to the top and furthest to the left would be named "Control Point 1", and the other control point would be named "Control Point 2." The control point ordering goes from top to bottom and left to right.

Domination is enabled by the /dom command.

Pit Levels

Enabling pits makes it so players die when they hit the bottom of the level. If ammo, carrots, or other pickups are shot down and fall into a pit, they will be destroyed. For a level to be able to use pits, the event at the bottom-right corner of level must be "MCE Event" (#255). If the event in the bottom-right corner of the level is "One Way" (#1) instead of #255, the bottom of the level will function as a solid floor, instead of as a death pit.

Fly carrots, airboards, copters, and water are recommended not to be used with pits. Start positions, warp targets, and platforms should not be placed too close to the bottom of a level since this may cause clients to get stuck at the bottom. Warp targets where players can fall into a pit without landing on a platform must especially be avoided.

Trigger Zones

Some things to know first: Whenever a client first spawns in a level, the client receives all of the server's trigger settings. This behavior is needed to make many levels work, but causes problems for others. Levels that will have problems include those which use a trigger for team-based routes. This section addresses these issues.

With JJ2+, the trigger IDs of the trigger zones placed on the bottom row of a level will receive special properties. Several trigger zones have specific uses. When the server sends its trigger settings to clients, the trigger settings will be adjusted depending on the client. For the following triggers, note that "Position <number>" means place the trigger zone at position (<number>, <level_height>) in JCS. For example, to set the server trigger in a level with 50 as its height, you would place a trigger zone at (2, 50).

Any other trigger zone placed on the bottom row of a level will have its trigger set to off when trigger settings are sent to clients. In addition, clients running the latest version of JJ2+ will always ignore their trigger settings.

Note: I plan on giving other uses for trigger zones after position 3, so if you want a trigger to always be off/ignored by clients, place its trigger zone at the bottom right of your level.


To use special events recognized only by JJ2+, you must replace certain lines in your JCS.ini, which should be located in the same folder as JCS.exe. It's recommended to update JCS.ini before opening levels that take advantage of these JCS event changes, since some of the level's data may be lost when they attempt to save it.

Oct 19 2013 Additions

Three new textured background effects have been added to JJ2 besides "Warp Horizon." The first, "Tunnel," is most similar to Warp Horizon, except that it draws the texture in a circle around a fade spot instead of as two planes above and below a fade line. See Psych2.j2l for an example.

The "Menu" textured background is the familiar effect from JJ2's main menus, complete with numerous little Jazz Jackrabbit 2 logos. The "Palrow 16," "Palrow 32," and "Palrow 256" parameters choose which colors from the tileset palette each layer of the background will use. For example, if you set Palrow 256 to 112, the JJ2 logos will only use colors from the 112-127 range. No layer uses all 16 colors from a row, so feel free to move the number up and down a little for the best-looking result. See plusMenu.j2l for an example.

(Some tilesets' palettes have gradients ranging from dark to light, and others from light to dark. Therefore, checking the "Parallaxing Stars" checkbox with a Menu textured background will reverse the background's expectations for which order to grab its colors in.)

The "Tile Menu" textured background uses the same code as the "Menu" background to draw, but draws tiles from the tileset instead! The front layer is filled with the 8x8 texture in layer 8 (or whatever texture is specified with the AngelScript property jjTexturedBGTexture). The middle layer is filled with the 2x2 square set of tiles in the top left corner of layer 4, from 0,0 to 1,1, and the back layer is filled with tile 0,2 in layer 4. See plusSurvivor.j2l for an example.

0=Warp Horizon				|Fade Red  |Fade Green |Fade Blue
1=Tunnel				|Fade Red  |Fade Green |Fade Blue
2=Menu					|Palrow 16 |Palrow 32  |Palrow 256
3=Tile Menu

Or, if using MLLE:

0=3D Planes (Layer 8)         |+|Parallaxing stars|Fade Color
1=Tunnel (Layer 8)            |+|Spiral|Fade Color
2=Menu (Layer 8)              |-|Reverse gradients|Palrow 16|Palrow 32|Palrow 256
3=Tile Menu (Layer 8)

Three new tile types have been added to JJ2. "Invisible" tiles are simply not drawn at all; this can be used with tilesets that do not include empty masked tiles on their own, or else to make a certain set of tiles seem to disappear. "Frozen" tiles are drawn blue and semi-translucently, using the same effect as frozen rotating rocks or shootable pole objects. "Heat Effect" tiles, a feature planned for JJ2 but never implemented, are drawn wavily to the screen as if seen through intense heat.

5=Heat Effect

Feb 4 2013 Additions

Slide (event 5) now provides control over its strength.

5=Slide                             |+|Modifier  |Slide    |       |Strength:2

Jan 28 2013 Additions

Limit X Scroll (event 24) now offers additional control over the limits placed on horizontal scrolling.

The "Left" parameter specifies what column should be the farthest left point in the level that the player can move to. If left at 0, this defaults to whatever column the event itself is in, for full backwards compatibility.

The "Width" parameter, if greater than 0, specifies the distance in tiles) between the farthest left point and the farthest right point that the player can move to. Additionally, if "Width" is greater than 0, these two points will scroll to their specified targets.

See plusLimitX.j2l for a basic example.

24=Limit X Scroll                   |+|Modifier  |Limit  |Xscroll|Left:10|Width:10

Bomb Crate (event 52) can be used to create a crate with no default contents at all, only whatever you specify through ExtraEvent and NumEvent. The same change is not applied to other crate events because that would be pointless.

52=Bomb Crate                       |+|Goodies   |Bomb    |Crate |ExtraEvent:8|NumEvent:4|RandomFly:1|NoBomb:1

Extra Time (event 89) is now used for the Player Timer feature new in JJ2+ (see plusTimerEx.j2l and PlusTimerEx.j2as). Its Seconds parameter defaults to 10 if left empty.

89=Extra Time                       |+|Goodies   |Extra  |Time   |Seconds:7

The horizontal spring events now have a parameter to reverse their direction from what it would otherwise be, analogous to the "Ceiling" parameter on non-horizontal springs. This should primarily be used to create leftward-facing springs in midair, but may also be used by cruel people to create springs that point directly into walls.

91=Hor Red Spring                   |+|Spring    |H-Red  |Spring |Empty:2|Keep Y-Speed:1|Delay:4|Reverse:1
92=Hor Green Spring                 |+|Spring    |H-Green|Spring |Empty:2|Keep Y-Speed:1|Delay:4|Reverse:1
93=Hor Blue Spring                  |+|Spring    |H-Blue |Spring |Empty:2|Keep Y-Speed:1|Delay:4|Reverse:1

Trigger Crate (event 95) now can disable and toggle triggers as well as enabling them. These parameters work exactly the same as for Trigger Zone, except "off" defaults to enabling the trigger and only disables the trigger when set to 1, whereas Trigger Zone's "onoff" default to disabling the trigger and only enables the trigger when set to 1.

95=Scenery Trigger Crate            |+|Trigger   |Trig   |Crate  |TriggerID:5|off:1|switch:1

Steady Light (event 148) and Pulze Light (event 149) can now create different types and sizes of light source. The types are:

  1. Normal light
  2. Single point (ignores the "Size" parameter)
  3. Single point (brighter) (ignores the "Size" parameter)
  4. Flicker light
  5. Bright normal light
  6. Laser shield/Illuminate Surroundings
  7. Ring of light
  8. Ring of light 2
148=Steady Light                    |+|Light     |Steady |Light |Type:3 |Size:7
149=Pulse Light                     |+|Light     |Pulse  |Light |Speed:8|Sync:4|Type:3|Size:5

Or, if using MLLE:

148=Steady Light                    |+|Light     |Steady |Light  |Type: {Normal,Point,Point2,Flicker,Bright,Laser,Ring,Ring2}3 |Size:7
149=Pulse Light                     |+|Light     |Pulse  |Light  |Speed:8|Sync:4|Type: {Normal,Point,Point2,Flicker,Bright,Laser,Ring,Ring2}3|Size:5

Sucker Tube (event 206) now allows an alternate Noclip Mode. While in Noclip Mode, a player ignores walls and is unfettered by gravity and deceleration. The parameter "BecomeNoclip" determines whether using the event causes the player to enter Noclip Mode; the parameter "Noclip Only" determines whether the player must already be in Noclip Mode to use the event. A player in Noclip Mode cannot use a sucker tube event with Noclip Only set to 0, nor can a player not in Noclip Mode use a sucker tube event with Noclip Only set to 1.

Thus, to enter Noclip Mode, Noclip Only should be set to 0 and BecomeNoclip to 1. To resume normal play, Noclip Only should be set to 1 and BecomeNoclip to 0.

206=Sucker Tube                     |+|Object    |Suck   |      |X-Speed:-7|Y-Speed:-7|Trig Sample:1|BecomeNoclip:1|Noclip Only:1|WaitTime:3

Text (event 207) now allows the player to view only one substring of a greater help string. The substrings are delimited by the vertical pipe character (|), just like for the end of level events, and "Offset" determines which substring will be viewed. The first substring cannot be displayed independently, since an Offset value of 0 will default to displaying the entire string.

For example, with help string 2 being set to "Zero|One|Two|Three", setting TextID to 2 and Offset to 3 will display the word "Three" onscreen, instead of the entire help string. Offset 1 will display "One", and Offset 0 will display "Zero|One|Two|Three".

See plus-angelscript.html for information about the "AngelScript" parameter.

207=Text                            |+|Trigger   |Text   |      |TextID:8|Vanish:1|AngelScript:1|Offset:8

Water Level (event 208) can be configured to allow ambient lighting and water to exist simultaneously if the "Lighting" parameter is set to 1. Alternatively, setting it to 3 will ignore the level's ambient lighting setting but will cause the level to appear progressively darker the farther underwater the player is. Value 2 is not yet implemented and so should not be used.

208=Water Level                     |+|Scenery   |Water  |      |Height (Tiles):8|Instant:1|Lighting:2

Or, if using MLLE:

208=Water Level                     |+|Scenery   |Water  |      |Height (Tiles):8|Instant:c1|Lighting:{Off, On, ???, Lagunicus}2

Warp (event 230) can now warp players instantaneously to their targets, without playing a sound effect or showing warping animations.

230=Warp                            |+|Area      |Warp   |      |ID:8|Coins:8|SetLap:1|ShowAnim:1|Fast:1

No Fire Zone (event 245) now provides much finer control and a wider variety of gameplay alterations. By default, the player is unable to fire while standing in the zone. If "Set To" is set to 2, the player will be unable to fire even after leaving the tile. Setting "Set To" to 1 will disable the effect. Finally, setting "Set To" to 3 will toggle the effect, like the "switch" parameter on trigger zones.

By setting "Var" to 1, the event will turn on and off a reverse gravity mode instead of a no-firing mode. This mode is in its early stages of development; it works well with springs, warps, belts, sucker tubes, and the "Hook," "Vine," and "One Way" events, but it has not been tested with most other events and may lead to unexpected effects.

245=No Fire Zone                    |+|Area      |No Fire|Zone  |Set To:2|Var:1

Or, if using MLLE:

245=No Fire Zone                    |+|Area      |No Fire|Zone  |Set To:{Local, Off, On, Toggle}2|Var:{No Fire, Anti-Grav}1

The Rocket Turtle boss has received a significant overhaul for its movement and its interaction with the Area ID events. (Or "Path", since "Area ID" is a completely meaningless name.) To use the new alternate behavior, set its "Velocity" parameter to anything other than zero. Leaving Velocity at 0 will use the old, rather buggy behavior for the boss. See plus-butterfly.j2l for examples.

Once activated through an Activate Boss event, the Rocket Turtle will begin moving in a specified direction ("Angle") at a specified speed ("Velocity").

There are eight possible angles, beginning at angle 0 (right/east) and rotating clockwise all the way to angle 7 (up-right/northeast).

The Rocket Turtle will maintain this angle and velocity until it hits a Path event, at which point it will adopt the angle/velocity specified by the parameters of that Path event. Unlike in the old Rocket Turtle behavior, this Path event will still exist after being used and can (and should) be used again for infinitely looping paths.

Alternatively, if the "Relative" parameter on the Path event is set to 1, the Rocket Turtle will add the Path event's "Angle" parameter to its existing angle. So an "Angle" of 0 will cause no change: 2 will cause a 90 degree rightward turn; 6 will cause a 90 degree leftward turn; and so on.

If the "RandRev" parameter on the Path event is set to 1, there is a 50% chance the Rocket Turtle will move in the exact opposite direction that the event would otherwise send it in. This allows for more variation in the followed path. For example, Angle=2/Relative=0/RandRev=1 will sometimes send the Rocket Turtle upward and will sometimes send it downward.

The "WaitTime" parameter on the Path event works identically to the same parameter on the "Sucker Tube" event, and will cause the Rocket Turtle to stop at that tile for that number of seconds before continuing on the path.

198=Rocket Turtle                   |-|Boss      |Rock   |Turt  |EndText:4|Velocity:6|Angle:3
242=Path                            |-|Area      |Path   |      |Velocity:6|Angle:3|Relative:1|RandRev:1|WaitTime:3

Or, if using MLLE:

198=Rocket Turtle                   |-|Boss      |Rock   |Turt  |EndText:t4|Velocity:6|Angle:{E,SE,S,SW,W,NW,N,NE}3
242=Path                            |-|Area      |Path   |      |Velocity:6|Angle:{E,SE,S,SW,W,NW,N,NE}3|Relative:c1|RandRev:c1|WaitTime:3

The Butterfly enemy (event 236) has been recoded to also use the Path events, but as a simple enemy instead of a boss. It interacts with all the Path parameters in exactly the same way that the Rocket Turtle does.

If the Butterfly is created directly through a generator, crate, or three-event MCE, its velocity will default to 8 and its angle to 6 (up). Use a five-event MCE or place the Butterfly event directly in the level (non-generating) to use other initial velocity/angle values.

236=Butterfly                       |-|Enemy     |Butter |Fly   |Velocity:6|Angle:3

Or, if using MLLE:

236=Butterfly                       |-|Enemy     |Butter |Fly   |Velocity:6|Angle:{E,SE,S,SW,W,NW,N,NE}3

Pre-2013 Additions

Lori Level Start (event 32) can be used to create a start position usable only by Lori.

32=Lori Level Start                 |+|StartPos  |Lori   |Start

Generator (event 216) now has a maximum delay time for generated objects to 255 seconds and an extra parameter so that objects can optionally be delayed from initially spawning until after the delay time specified. The new maximum delay time and the optional initial delay can also be used with MCE events (see MCE Event below).

216=Generator                       |+|Generator |Gene-  |rator  |Event:8|Delay Secs:8|Initial Delay:1

MCE Event (event 255) can be used to create MCE events with no unwanted side effects. It has the same parameters as the Generator event.

255=MCE Event                       |+|Area      |MCE    |Event  |Event:8|Delay Secs:8|Initial Delay:1

The end-of-level events now have additional parameters to allow fast level cycling and a greater number of choices for the next level. The TextID parameter is used for the help string number, and each help string can contain multiple filenames separated by a vertical bar (|). If TextID is zero, the default next level filename is used. The Offset parameter is used to select the filename within the help string. For example, if the help string is "beachlevel|castlelevel" and Offset is 1, castlelevel is used end-of-level event.

See levels SPlevel1.j2l and SPlevel2.j2l for an example. Warning: Running these levels through JCS (via Save & Run) may cause the levels to break if JCS.ini is not properly updated first.

17=Area End Of Level                |+|Area      |End    |Area   |Secret:1|Fast:1|TextID:4|Offset:4
18=Area Warp EOL                    |+|Area      |End    |Warp   |Empty:1|Fast:1|TextID:4|Offset:4
26=Area Warp Secret                 |+|Area      |Warp   |Secret |Coins:10|TextID:4|Offset:4

Hurt (event 2) can now hurt players from more than one direction, allowing it to be used to create ceiling and wall spikes as well as floor spikes. Set each parameter to 1 to have it hurt players in that direction. If all four are left at 0, JJ2 will act as if "Up" is still set to 1.

2=Hurt                              |+|Modifier  |Hurt   |       |Up:1|Down:1|Left:1|Right:1

Plus Only Features

Certain features are only available when Plus Only is enabled:

3D Mode

This version of JJ2+ features special support for 3D TVs and 3D-capable computer displays. For most 3D screens, to enjoy 3D Mode the following conditions need to be met:

  1. The display resolution is set to 1920x1080 ("1080p"), and
  2. The JJ2 video image spans either the width or height of the screen (or both).

Since JJ2+ currently does not support the 1920x1080 resolution, the easiest way to accomplish this is to set the Windows desktop resolution to 1920x1080 (if it isn't already), and run JJ2 in a Maximized window so that it spans the width.

Once these conditions are met, to enable 3D mode, use the command /3d on. In offline games, choose the appropriate setting in the Video menu of JJ2's window menu. Then, find the '3D' button on your TV's remote and turn it on.

There are two 3D "arrangements": Side-By-Side (SBS) and Top-And-Bottom (TAB). Switch modes by typing /3d sbs or /3d tab, or use the Video menu. Ultimately, this setting must match the settings of your 3D TV. If you are running JJ2 in a maximized window, use SBS mode to get the desired effect.

Finally, the "depth" of the 3D effect may be tweaked by using the /3ddepth command. /3ddepth 0 is completely flat, whereas /3ddepth 25 is the maximum depth setting. This setting is not available from the window menus.

Please note that 3D Mode is still work in progress. The following things are not 3D-ified yet (and some may require you to switch back to 2D):


For Server and Remote Admins Only

Main Server Commands

Lists server.
Delists server.
Relists server.
Makes server public.
Makes server private
/servername <server_name>
Renames server. Server name cannot exceed 30 characters.
/maxplayers <number>
Sets the max number of players allowed in server. Must be between 1 and 32.
/gamemode <mode>
Sets Game Mode. Mode must be either sp, coop, battle, race, treasure, or ctf.
Warning: Game Mode changes causes glitches for splitscreeners not running JJ2+.
/password <password>
Sets server password. Password cannot exceed 14 characters.
/bluescore <number>
Sets Blue Team's score.
/redscore <number>
Sets Red Team's score.
/maxscore <number>
Sets Max Score.
Warning: Max Score changes causes glitches for splitscreeners not running JJ2+.
Note: In CTF mode, setting Max Score above any team's score will cause the level to cycle.
/alwaysupdatepos <on|off>
Enables/disables always updating clients of other players' positions.
This feature should only be used by servers with fast enough internet connections.
/blockdownloads <on|off>
Enables/disables blocking downloads by clients.
/uploadmusic <on|off>
Enables/disables uploading music to clients.
/maxuploadpacketsize <bytes>
Sets the number bytes for the maximum upload packet size for clients using the latest version of JJ2+.*
/maxconnections <number>
Sets the maximum number of connections allowed for the server. This is different than Max Players which accounts for splitscreeners. Note that clients running JJ2+ but not the latest version cannot join servers where there are 16 or more connections. However, non-Plus clients can join such a server, although they won't be able to see chat from any client (including themselves) who has a connection number above 15.
Sprites will automatically display correctly for a player's character if clients do not edit their JJ2 version before joining.
/plusonly <on|off>
Allows only players with JJ2+ to be in the server.
All players not running JJ2+ are automatically kicked.
See Plus Only Features section.
/latestversiononly <on|off>
Restricts the players allowed in the server to all players not running JJ2+ and players running a JJ2+ version that is equal to or greater than the server's JJ2+ version.
All JJ2+ players not running the latest JJ2+ version are automatically kicked.
Note that to use Plus Only features, Plus Only must be enabled.
/nosplitscreeners <on|off>
Allows only players who aren't splitscreeners join the server.
/welcomer <on|off>
When enabled, clients joining the server are greeted with a custom message.
/welcomemessage <message>
Sets the welcome message clients see when they join the server if the Welcomer is on.
For longer messages, manually edit the setting in the configuration file.
Welcome message cannot exceed 50 characters.
/rename <player> <new_name>
Changes player's name to a new name.
/k <player>
Kills player (not counted as a death).
Forces all allowed objects created by generators to spawn if they aren't spawned already.
/allowready <on|off>
Toggles the availability of the /ready command.
/allowmouseaim <on|off>
Toggles the availability of clients using mouse aim.
/allowsuicide <on|off>
Toggles the availability of clients using the !k command to commit suicide.
/ip <client>
Displays the client's IP address.
Cannot be used by the server, since the IP addresses of all players are available to the server on the Game Info screen already.
/spaminterval <seconds>
Determines the amount of time after which a player can repeat a message without getting kicked for spam.
Set to 0 to disable the spam kicker entirely.

Idle Player Management

/kickidlers <on|off>
Enables/disables automatically kicking idlers.
/idletime <minutes>
Sets the max number of minutes a client can idle.

Idle Server Commands

/idleserver <on|off>
Enables/disables Idle Server mode.
Automatically enabled after an hour (or 5 minutes if minimized) of server inactivity in a Battle or CTF game.

Resolution Command

/maxresolution <width>x<height>
Sets the maximum viewable area for online games.
Only players running the latest version of JJ2+ are affected.


/spectating <on|off>
Enables/disables spectating for all players running JJ2+.
/joinersspectate <on|off>
Enables/disables automatic spectating for players joining with JJ2+.
Players not running JJ2+ will not be able to join the server.
/maxspectators <number>
Sets the maximum number of players who are allowed to spectate. If the limit is reached, players will not be able to spectate with the "/spectate" commands. Note that the limit also applies to joining players when Joiners Spectate is enabled.
/forcespectate <player|all> <on|off>
Forces spectator mode to turned on/off for specified player or all players.
Players not running JJ2+ cannot be forced to spectate.

Remote Admin

/remoteadmin <on|off>
Enables/disables admin access.*
/admingroup <group> <on|off>
Enables/disables the specified admin group.*
/setadminpass <group> <password>
Sets password needed for admins to login for the specified group.*
Password must be only letters and numbers and between 8 and 20 characters.
/getadminpass <group>
Displays password needed for admins to login for the specified group.*
/addadminip <group> <ip_address>
Adds an Auto Admin IP address for the specified group.*
/removeadminip <group> <ip_address>
Removes an Auto Admin IP address for the specified group.*
/addallowedcommand <group> <command>
Adds an allowed command for the specified group.*
/removeallowedcommand <group> <command>
Removes an allowed command for the specified group.*
/addblockedcommand <group> <command>
Adds a blocked command for the specified group.*
/removeblockedcommand <group> <command>
Removes a blocked command for the specified group.*
/shutup <on|off>
Only the server and any logged-in remote admins are allowed to chat.

Kick/Ban Commands

/kick <player> [<reason>]
Kicks player. If reason is specified, all players running the latest version of JJ2+ will see the reason.
/ban [<time>{s|m|h|d}] {<player>|<ip_address>} [<reason>]
Bans specified player or IP address. Asterisks can be used as wildcards for the IP address.
When banning an IP address, players who have the banned IP will NOT be automatically kicked.
The optional ban time can be set to a number of seconds, minutes, hours, or days, and ban time must be between 5 seconds and 30 days. If no ban time is specified, the player or IP address is banned indefinitely.
If reason is specified, all players running the latest version of JJ2+ will see the reason.
Examples: "/ban 30s 2 Bye" bans player 2 for 30 seconds with a reason of "Bye". "/ban 5h" bans IP for 5 hours with no reason given.
/unban <ip_address|all>
Removes ban for a single or all IP addresses. Asterisks can be used as wildcards.
This command cannot be used to unban IP addressses banned through JJ2's default ban command or Banlist.lst.

Start/Stop, & Time-Based Commands

Starts game.
Stops game
Starts game with a countdown.
Stops game with a countdown.
/nomovement <on|off>
Enables/Disables no movement for when a game is stopped.
When enabled and game is stopped: -Players running JJ2+ are restricted of movement. -Players not running JJ2+ are sent to the bottom-left corner.
When enabled and game is started: -Players running JJ2+ are allowed to move again. -Players not running JJ2+ are roasted (and flags will be lost).
/autostart <on|off>
Enables/disables Auto-Start. Game automatically starts after the level cycles.
/readystart <on|off>
Enables/disables Start When All Are Ready. Game automatically starts (after a countdown) if all visible, non-spectating players in the server have used the /ready command. Obviously only applicable if Allow Ready is turned on.
Displays time limit and time left.
Enables/disables Pregame.
Pregame is automatically extended if there is not enough active players in the server.
/pgtimelimit <minutes|30s|10s> [reset]
Sets Pregame time limit.
/overtime <on|off>
Enables/disables Overtime.
/otlimit <minutes> [reset]
Sets Overtime limit.
/autocycle <on|off>
Enables/disables Auto-Cycling. Level automatically cycles after the time limit is reached.
/autostop <on|off>
Enables/disables Auto-Stop. Game automatically stops after the time limit is reached or after a player/team wins in a Battle- or CTF-based mode. (I'm still working on the command names...)
Warning: Reaching the score limit with Auto-Stop enabled may cause clients not running JJ2+ or using an older version of JJ2+ to see the game end when the level is not cycling.
/timelimit <minutes> [reset]
Sets time limit for when the game is in Normal (i.e. when it's not Pregame or Overtime).

Cycling and Next Level Commands

Cycles to the next level.
/c <level_filename>
Sets next level to <level_filename> if it exists, then cycles.
Sets next level to current level.
Displays level filename of the next level.
/n <level_filename>
Sets next level to <level_filename> if it exists.
Restarts level (i.e. cycles to current level).
/levellist <on|off>
Enables/disables Level List Cycling.
/levellist shuffle
Shuffles levels within the Level List.
/levellist <number>
Sets next level to the Level List file belonging to the specified number.
/llautoshuffle <on|off>
Enables/disables automatic shuffling of the levels within the Level List.

General CTF Mode Commands

/eventeams <on|off>
Enables/disables Even Teams. Teams are only made more even when a player joins.
/allblue <on|off>
When enabled, all players in the server are changed to blue team, and all new players join on blue team.
Mutually exclusive with /allred.
/allred <on|off>
When enabled, all players in the server are changed to red team, and all new players join on red team.
Mutually exclusive with /allblue.
/selfswap <on|off>
Enables/disables clients to change their own team. When enabled, clients can use !swap, !blue, and !red to change teams.
/passing <on|off>
Enables/disables Flag Passing between teammates.
To pass a flag, the flag holder must hit at a teammate who is pressing up.
If Friendly Fire and Plus Only are enabled, any hit can be used for passing, otherwise only RFs can be used.
/capturewait <on|off>
Enables/disables Capture Wait.
/ctfmessages <on|off>
Enables/disables CTF+ messages.
Shuffles all players' teams. Must be done at the beginning of the game.
Doesn't make sure splitscreeners stay on the same teams.
Shuffling teams several seconds after a level cycles or while players are still connecting may cause players to spawn at the wrong start positions.
/autoshuffle <on|off>
Automatically shuffles all player's teams at the start of the level.
Doesn't make sure splitscreeners stay on the same teams.
Also, players may not always start at the correct start positions.
/swap <player|all>
Changes the team for the specified player, or all players.
Doesn't make sure splitscreeners stay on the same teams.

Add-on Commands

/starthealth <number|default>
Sets the amount of health players start with. Can be between 1 and 7.
Setting Start Health to "default" sets Start Health to the default of the current game mode, which is 5 for Battle and 3 for CTF. If the start health is greater than max health, players will start with max health.
Warning: If start health isn't equal to the game mode's default, clients not running JJ2+ will be glitched. It is HIGHLY recommended to enable Plus Only.
/maxhealth <number|default>
Sets the maximum amount of health players can get. Can be between 1 and 7
Setting Max Health to "default" sets Max Health to the default of the current game mode, which is 5 for Battle and 3 for CTF.
Warning: If max health isn't equal to the game mode's default, and there are carrots in the level, clients not running JJ2+ will be glitched. It is HIGHLY recommended to enable Plus Only.
/smhealth <number|default>
Sets both Start Health and Max Health at the same time. See above commands for more information.
/instagib <on|off>
Enables/disables Instagib. When enabled, all unshielded hits roast opponents instantly.
/frustration <on|off>
Enables/disables Frustration. When enabled, players who get a roast will also die themselves.
/hfk <on|off>
Enables/disables Health From Kills. Roast gives players health.
/hfkmaxhealth <number>
Sets HFK Max Health. Must be between 1 and 7.
If HFK Max Health is greater than the general max health, players will start with general max health.
/hfkhealthinc <number>
Sets HFK Health Increase. Must be between -6 and 6.
/da <on|off>
Enables/disables Damage Amplifier. Fired shots do +1 extra damage.
/noblink <on|off>
Enables/disables No Blink Mode.
/friendlyfire <on|off>
Enables/disables Friendly Fire for team games.
Note: To have an affect, Plus Only must be enabled.
/punishsds <on|off>
Enables/disables Punishment for Self-Destructs.
/sdteampointdec <on|off>
Enables/disables team point decreases for Self-Destructs.
When disabled, a pit death causes a point increase for the other team.
/ffpointdec <on|off>
Enables/disables point decreases for Friendly Fire.
When disabled, friendly fire causes a point increase for the other team.
/fastammorespawn <on|off>
Enables/disables Fast Ammo Respawn (every 5 seconds at the most).
/fastpoweruprespawn <on|off>
Enables/disables Fast Powerup Respawn (every 5 seconds at the most).
/weakpowerups <on|off>
Enables/disables Weak Powerups. Makes powerups only do 1 damage.
Mutually exclusive with Strong Powerups.
/strongpowerups <on|off>
Enables/disables Strong Powerups. Makes pepper spray and electro-blaster powerups do 2 damage.
Mutually exclusive with Weak Powerups.
/nopowerups <on|off>
Enables/disables No Powerups.
/noammocrates <on|off>
Enables/disables No Ammo Crates.
/noseekerammo <on|off>
Enables/disables No Seeker Ammo.
/noseekerpowerups <on|off>
Enables/disables No Seeker Powerups.
/nocarrots <on|off>
Enables/disables No Carrots.
/noshields <on|off>
Enables/disables No Shields.
/extendedtnt <on|off>
When enabled, the maximum distance a player can be hit by TNT in online games increases.
/tntdamage <number>
Sets amount of damage TNT can inflict. Must be between -6 and 7.
/evilice <on|off>
When enabled, ice shot by players does 1 heart damage if the victim isn't frozen already.
/fireball <on|off>
When enabled, pepper spray is replaced with fireball gun from the beta versions of JJ2.
The fireball gun does 2 damage when powered up even without /strongpowerups.


Loads configution settings of plus.ini (automatically done at startup).
Mainly meant for admins. See "/loadsettings" commands below.

Player Stats

Logs player stats.*

Logging Commands

/chatlog <on|off>
Enables/disables Chatlog (requires restart).*
/playlog <on|off>
Enables/disables Playlog (requires restart).*
/iplog <on|off>
Enables/disables IPlog (requires restart).*
/autosavechatlog <on|off>
Enables/disables automatic saving of the chatlog.*

The ALMIGHTY Trigger Commands

Note: Changing the trigger state of the Server Trigger or Team Trigger may cause unintended results.

/trigger <trigger|all> <on|off>
Turns specified trigger or all triggers on/off for all players.
/ptrigger <player> <trigger|all> <on|off>
Turns specified trigger or all triggers on/off for specified player.

Custom Mode Commands

Turns Custom Mode off.
/latejoiners <on|off>
Enables/disables Allowing Late Joiners (affects LRS, XLRS, and Pestilence).
/resetallteams <on|off>
When enabled, both teams have their ammo and health reset after a round ends in Death CTF or Jailbreak.
For the time being, this means both teams get roasted after a round ends.
/maxlives <number>
Sets Max Lives. Must be between 1 and 100.
/setlives <player> <lives>
Sets player lives. Lives must be between 1 and 100.
Can only be used for LRS, XLRS, and TLRS. Cannot be used during pregame in TLRS.
/livesperteam <lives>
Sets number of lives each team receives in Team Last Rabbit Standing. Lives must be between 1 and 100.
/maxteamplayers <number>
For Team Last Rabbit Standing, sets the max number of players allowed to have lives on each team.
Must be between 1 and 16.
Changes custom mode to Roast Tag.
Changes custom mode to Last Rabbit Standing.
Changes custom mode to Extended Last Rabbit Standing.
Changes custom mode to Pestilence.
Changes custom mode to Team Battle.
Changes custom mode to Death CTF.
Changes custom mode to Jailbreak.
Releases all players in jail if custom mode is Jailbreak.
Changes custom mode to Flag Run.
Changes custom mode to Team Last Rabbit Standing.
Changes custom mode to Domination.
Resets the game.

* This command cannot be used by admins.

For Clients and Server running JJ2+


Loads configution settings of plus.ini (automatically done at startup).
See "/resetsettings" command above.
/loadsettings <filename>
Loads configution settings of the filename specified.
Saves configution settings to plus.ini.
/savesettings <filename>
Saves configution settings to the filename specified.
Filename must be at least 5 characters long ending with the ".ini" extension.


/spectate <on|off>
Enables/disables Spectator Mode if user is in a JJ2+ server and Spectating is enabled. The limit of Max Spectators may prevent spectating. If you are spectating because you are out in a LRS/XLRS game, "/spectate on" will make you enter normal Spectator Mode.
/spectate <target>
Spectate target if user is in a JJ2+ server and Spectating is enabled. The limit of Max Spectators may prevent spectating.
Target can be:
  • A player number
  • "blue flag"
  • "red flag"
  • "flag" if Flag Run
  • "flag holder" if Roast Tag
  • "bottom feeder" if Roast Tag
  • "cp <number>" for Control Point if Domination


/autovolumeleveling <on|off>
Enables Auto Volume Leveling for music files loaded with BASS audio library.
When enabled, it automatically attempts to raise the volume level of the music track if it is not loud enough. This feature may momentarily cause a slight slow down to JJ2 as the appropriate volume level is found. JJ2's music volume setting is never adjusted.
Note that j2b files cannot use this feature.
/changemusic <music_filename>
Changes next level to <music_filename> if it exists.
May cause JJ2 to crash with an Amnesia error.
Restarts the music currently being played.
May cause JJ2 to crash with an Amnesia error, but probably not.

3D Commands

/3D <on|off>
Switches 3D Mode on or off.
Switches 3D Mode on in Side-By-Side or Top-And-Bottom mode, respectively.
See the 3D Mode section for details.
/3Ddepth <number>
Sets the depth of the 3D effect. Must be between 0 and 25.
0 means completely 'flat', whereas 25 is the most agressive 3D depth setting and may cause headaches since it requires you to cross your eyes badly.


/wc <on|off>
Enables/disables Wall Climbing. When disabled, it becomes harder to get stuck in ceilings.
/alwaysshowingamepings <on|off>
Enables/disables always displaying in-game pings on the Game Info (F9) screen.
/mouseaim <on|off>
Enables/disables mouse aim mode.
/mute <player>
Mutes chat from specified player.
If the server mutes a player, that player cannot use Self-Swap and admin commands.
/unmute <player>
Unmutes chat from specified player.
All local players acquire all available ammo, powerups, and fastfire (if Ready Gives Fast Fire is turned on) and are warped to their CTF base if applicable.
Only available when the game is stopped at the very beginning, and only if the server has enabled Allow Ready.
/readyff <on|off>
Enables/disables the /ready command giving you full fastfire when used, in levels with one or more fastfire pickups.
/run <on|off>
Enables/disables permanent running. Unlike capslock, this works even when there is more than one local player, and has the side benefit of not making everything you type uppercase.
/weaponchange <on|off>
Enables/disables automatically changing weapons upon picking up ammo for a new weapon/getting a new powerup.

For Clients running JJ2+

/downloadmusic <on|off>
Enables/disables downloading music from the server if the server allows it.
Audio formats client can download: J2B, XM, IT, S3M, MOD, MTM, UMX, MO3, MP3, OGG.
When downloading music, note that the escape key can be pressed to stop downloading while staying in the server.
/downloadsamemusicversion <on|off>
When enabled with the Downloading Music setting also enabled, client always downloads music even if a music file with the same name already exists but is a different version (that is, the music file has a different CRC than the version the server has).
/flipmousewheel <on|off>
Reverses the order of weapon cycling via the mouse wheel.

For All Clients in JJ2+ Server

/login <password>
Allows a client to login if the server allows remote admins and the password is correct.
No other players, including the server, will be able to see the login attempt. If the server is running JJ2+, the login command and password will not be displayed locally in the chat and instead will be replaced by a message saying "Attempting to login". Password is NOT case sensitive.
/me <text>
Displays <text> as an IRC-style action message. For example, typing "/me is waiting" would produce a "*BlurredD is waiting" message.

New Command Line Arguments


Sets server port used for listening for client connections. Default port is 10052.
Lists the server on the Internet. Requires -server.
-levellist [<number>]
Enables Level List Cycling and loads the first level (or the level belonging to the specified number) from the Level List. Requires -server.
For offline games, sets character to Spaz.
Added for 1.23 only since TSF already has this functionality.
-player <number>
Sets number of local players.
Added for TSF to fix a parsing issue.
Skips the intro and goes directly to the menu screen.
Minimizes JJ2 to the tray on startup.
Renames server. Server name cannot exceed 30 characters.
Sets the main configuration file (file must exist). If not specified, defaults to plus.ini.
Sets the admin configuration file (file must exist). If not specified, defaults to admin.ini.
Sets the Level List file (file must exist). If not specified, defaults to level.ini.

Custom Mode (requires -server)

Changes custom mode to Roast Tag.
Changes custom mode to Last Rabbit Standing.
Changes custom mode to Extended Last Rabbit Standing.
Changes custom mode to Pestilence.
Changes custom mode to Team Battle.
Changes custom mode to Death CTF.
Changes custom mode to Jailbreak.
Changes custom mode to Flag Run.
Changes custom mode to Team Last Rabbit Standing.
Changes custom mode to Domination.

New formats for -connect

-connect <ip_address>[:<port>] [-password=<password>] [-version=<server_version>]
-connect <ip_address>[:<port>][/[<password>][/<server_version>]]
Values for <server_version>
  • For 1.23, use: 1.23, 23, 1.21, or 21 (all map to "21 ")
  • For TSF, use: 1.24 or 24 (both map to "24 ")