The cost system
Plethora’s cost system is a way of limiting the rate at which methods can be called, ensuring that certain features are not abused. By default, a fixed buffer of “energy” is allocated for every owning object (be it tile entity or entity). This energy regenerates by a fixed amount over time. Each method call will consume a configurable amount of energy from this buffer, waiting for the buffer to replenish if there is no energy left.
Whilst each method can consume a fixed level of energy, some methods will consume additional energy based on its arguments. One such example would be lasers, which consume more energy the higher their potency.
It is possible to configure the rate at which the internal buffer regenerates, and the maximum size of the buffer
through the Cost System
section of the plethora-core.cfg
configuration file (or in the Minecraft GUI). You can also
set the base cost for every method in the same file. For more information about configuring Plethora,
read this document.
Negative energy
There may be a time where you want to have a method consume significant amounts of energy, but not increase the size of
the energy buffer. If so, you may wish to enable the allowNegative
option. This allows the energy buffer to enter the
negative region, though methods will fail if there is negative energy. This option, when combined with a buffer limit of
0, allows a more traditional rate limiting system as you must wait after every method call rather than being able to
batch them.
Hard failure
Previous versions of Plethora would error if there was insufficient energy, instead of waiting for the buffer to fill up
again. This functionality can be re-enabled by setting the awaitRegen
to false. While it does make it harder to write
programs which run under different configurations, it does make it easier to discover potential performance issues.