TrainCarts/Lag

From BergerHealer Wiki
Jump to navigation Jump to search

« Go back

Using the plugin in some way may cause server or client lag. This page details causes of lag, and how to deal with them.

Complex 3D models

Minecraft is not very good at rendering complicated voxel models. If you use a custom resource pack on the server that has far too complicated models, it can cause the FPS of the client to drop. Always review models before you use them on a live server. The model JSON filesize is a strong indicator.

Large carts

When configuring the physical attributes of a cart in the attachment editor, the cart size can be set very large. This changes the bounding box of the entity itself, which may result in worsened TPS on the server. The main cause is the block collision calculations the server does. To prevent this problem, disable block collisions entirely

Turns off block collisions, trains will fall through the ground
Command: /train collision block cancel
Permission: train.property.collision


Large wait distance

The wait distance property can be set for a train, so that it will keep distance to trains up ahead. This does require tracking all the rails the full distance in front of the train. Setting this distance too high can therefore result in worsened TPS on the server.

Keep chunks loaded

Trains can keep chunks loaded, but too many loaded chunks may also hurt server performance. They consume RAM, which might cause an out-of-memory situation. They may also contain entities or redstone contraptions that all contribute to a worsened TPS. As trains move, they load and unload chunks continuously, which might also cause problems.

Generally a single train keeping chunks loaded is not a big deal, it's no different from a player moving from one location to another. But having hundreds of them on far reaches of the server could cause problems.

Limit the number of trains

You can edit plugins/Train_Carts/config.yml to limit how many individual TrainCarts Minecart entities can exist per world. This prevents an out of control spawner sign or player abuse lagging the server to a halt.

# Limits of the amount of carts on the server
cartLimits:
  # Maximum number of TrainCarts minecarts allowed per world
  # If there are more than this number, no more minecarts can be placed/spawned
  # A value of -1 disables this limit (default)
  maxCartsPerWorld: -1

  # Whether to include unloaded trains/carts in the maxCartsPerWorld limit
  countUnloaded: false

  # Maximum number of carts that can be joined together in a train
  # Linking does not happen when it would exceed this limit,
  # and trains longer than this cannot be spawned
  # A value of -1 disables this limit, allowing any length (default)
  maxCartsPerTrain: -1

Saved Train Spawn Limits

Besides a global limit, it is possible to configure a spawn limit per saved train. After having saved a train with /train save name, you can configure a spawn limit with /savedtrain name spawnlimit <limit>.

Spawn signs and train chests configured with the train name will stop spawning trains when this limit is reached. This is particularly useful with auto-spawning spawn signs that populate a train network, combined with setting destroyAllOnShutdown to true in config.yml.