Popstarfreas Dimensions Versions Save

The load-balancing and routing service for Terraria Servers

v6.0.0-beta.1

2 weeks ago

Breaking Changes:

Update logging to use winston (5516d8)

Due to the wide variety of possible deployment environments and needs of those environments, the existing logging solution was not able to properly address those needs. For example, log ingest services can work better if logs are formatted so that each entry is one line or even one line of JSON instead of something like entries taking up a variable number of lines, as is common with stack traces.

To address this, the existing logging solution has been removed, and winston has been added instead. With new config options added:

    log: {
            ...
            outputToFile: true,
            format: {
              console: "PlainText",
              file: "JSON"
            }
    }

Now, you can specify whether the logs go to stdout and/or a file and also the formats of each. This allows you to disable file logging and go pure stdout with JSON, which is useful when deploying in an environment such as Kubernetes.

Features:

  • Add SIGINT/SIGTERM handling and add close message (c9c12f)
  • Add disconnect on kick setting (7416af)
  • Update blacklist implementation (24989b)
  • Add more logging options (0f3b3e)
  • Pass logger into extension constructor (2a6f03)
  • Add missing player info (eeae12)

Fixes:

  • Update PlayerSpawn structure to 1449 (5ec78b)
  • Queue packets until the server connection is ready (08dafd)
  • Blacklist: Separate errors and packet errors (5a80aa)

Full Changelog: https://github.com/popstarfreas/Dimensions/compare/v6.0.0-beta.0...v6.0.0-beta.1

v6.0.0-beta.0

6 months ago

There are breaking changes in this release!

This beta release will be upgraded to a full release (with no further changes, except the master branch being updated) when Dark Gaming's pre-production testing on it is finished.

If you were having trouble with the last release, it is recommended to test out this release.

Breaking Changes

  • Rewrite an ip/port based switch (Dimensions Message Type 3) for 127.0.0.1 to use the ip of the remote server - this allows the remote server not on the same machine as dimensions to use 127.0.0.1 in cases where it wants to switch to a server on the same machine as itself without having to know the external ip

Features

  • Update packet parsing to support 1.4.4 packets
  • Add a second kind of allowed config value for blockInvis to specify which dimensions to enable it for
  • Add language option to config with translations for simplified chinese provided by @1790283354 in #121
  • Add language overrides to the config to allow custom messages for any message that dimensions sends to a user
  • Add debuff options to config to allow changing what debuffs are applied on switching dimensions and for how long they last

Fixes

  • When switching, the connect request packet was incorrectly passed into the terraria server packet handlers - it is now correctly passed into the client packet handlers #112
  • The client packet handlers incorrectly blocked a connect request if the client has already sent one to the server before - this is now never blocked #113
  • Properly log a terraria server packet handling error
  • Add some level of validation to config to prevent errors caused by incorrect field name in nameChanges
  • Properly clear npcs on switch
  • Add error handling to terraria server packet handler

Documenation Updates

  • Fix example config having syntax errors
  • Fix config example/quickstart having a wrong field name that would cause errors when running

Full Changelog: https://github.com/popstarfreas/Dimensions/compare/v5.10.0-beta.1...v6.0.0-beta.0

v5.10.0-beta.1

2 years ago

No breaking changes are expected in this release.

This beta release will be upgraded to a full release (with no further changes, except the master branch being updated) if no problems are found within a period of time following this release's publish date.

Features

  • Dimension names w/ capital letters are now supported. Contributed by @Moneylover3246 in https://github.com/popstarfreas/Dimensions/pull/84
  • Dimensions can be labelled as hidden to not show up in the dimensions list. Contributed by @EMREOYUN in https://github.com/popstarfreas/Dimensions/pull/82
  • Each server in the config no longer needs a port to expose specified. This means you can provide ports only for servers you intend people to join directly by port. https://github.com/popstarfreas/Dimensions/pull/89
  • Added a new config option to prevent the client from changing its name, this ensures that throughout a single session the player name is the same. An exclusion list is provided to allow specific dimensions to change the player name from the server-side. https://github.com/popstarfreas/Dimensions/pull/90
  • Game kick messages now use localisation. Contributed by @Arthri in https://github.com/popstarfreas/Dimensions/pull/92
  • Servers in the config now have a vanilla option to allow vanilla servers to be used with dimensions. https://github.com/popstarfreas/Dimensions/pull/58
  • The currentTerrariaVersion config option has been removed. Dimensions now uses the version the client specifies. https://github.com/popstarfreas/Dimensions/pull/98
  • Added support for using a separate extensions js file that contains all of the extension classes to use - this is intended for bundled deployments where dimensions core is bundled together with plugins into one single js file. You can (for example) use this to build a small docker image for dimensions.
  • Server version used by the REST API now supports reading from a version.txt in the working directory per request, meaning you can easily update the reported supported version
  • REST API now supports additional options in the config: name, worldName, terrariaServerPort, hasServerPassword, maxPlayers and version
  • REST API default version is now 1.4.3.6

Fixes

  • Fixed issue when parsing strings of exactly 128 characters
  • Added parsing of playerCountForMultipliayerDifficultyOverride and strengthMultipler to fix NPC update parsing
  • REST API now returns a valid HTTP response
  • Fixed entities not being cleared properly in #99 (was a bug during dev versions, not 5.9.1)
  • Fixed some packets causing vanilla servers to prevent switching in #100

Dependency Updates

Documentation Updates

New Contributors

v5.9.1

3 years ago

The below is a summary of changes from v5.8.3 -> v5.9.1

Fixes:

  • Correctly sends the status packet to clients
  • The Rest API will now return the latest game version: 1.4.1.2
  • The config now uses 234 (the number for 1.4.1.2) so that switching will work properly

Plugin Update:

  • The Dimensions plugin has been updated so that it is built against the latest references. If you're having trouble with the plugin not working, go to the updated link in the README and download that version

Node Support:

  • Node v8 is no longer a supported version
  • Node v14 is now a supported version

Developer API Changes:

  • The Packet type is now referred to as RawPacket. Any extensions that import this type will need to update their import path. This makes a clear distinction between an unparsed (raw buffer) packet and a parsed packet.
  • Buffs caused by Dimensions can now be handled by extensions properly
  • ClearUtils makes sure it respects the outcome of handlePacket so that it doesn't send a packet unless handlers allow it

v5.8.3

3 years ago

Fixes:

  • Spawn player packet on switching now contains the 2 new fields
  • NPC clearing on switching now contains extra flags byte
  • Debuffs given on switching now use int16 for buff type
  • Player slot packet now uses int16 for slot

v5.8.2

3 years ago

Fixes;

  • Avoid error caused by reading the player id as an int16 instead of a int8

v5.8.1

3 years ago

Features;

  • Packet Structures are now updated to conform to changes made from 1.3.5.3 -> 1.4.0.2
  • Stoned/Webbed debuffs applied when switching are now able to be manipulated by extensions

v5.7.0

4 years ago

This release adds:

  • Persistent storage support for extensions across reloads

This is a pre-release because it contains a known bug with counting players (that is used to display the count in /who). If you accept this bug (or you remove the message from /who) then there are no other known issues (other than those listed under the Issues page).

v5.6.0

4 years ago

This release adds:

  • Dynamic dimensions support which allows a plugin in a terraria server to tell dimensions a specific ip/port to route the client to without it having to be in the dimensions config
  • More support for extensions - certain packets sent by dimensions can be handled

Fixes:

  • Reading strings in packets for some cases
  • General code fixes

This is a pre-release because it contains a known bug with counting players (that is used to display the count in /who). If you accept this bug (or you remove the message from /who) then there are no other known issues.

v5.2.0-dynamicdimensions

4 years ago

This is the dynamic dimensions version of v5.2.0. This specific build has not been tested in a production environment. Dynamic Dimensions differs from the current version of dimensions by:

  • It has an issue with user count tracking
  • It allows a plugin in a terraria server to tell dimensions a specific ip/port to route the client to without it having to be in the dimensions config