Face-touching water can be converted to pumice instead of the
flowing lava (e.g. lava intrudes into that space and quenches
instead) creating even more of a mess.
If the server can't handle optics, it would lead to a
runaway effect and bring the system down. Instead
only process up to half a second worth of optics on
each tick, so that this effect is capped and the server
will at least be able to chug along.
Using pngquant this time, instead of GIMP. It seems pngquant at
least is smart enough to preserve the exact RGB value of the
single most common color used in all the images.
When unlaundered ABMs run, give the
laundered ABM pump a rest for 1 tick, to
ensure we don't run 2 batches worth of
ABMs on any 1 tick, to smooth things out.
- Track visinv ents in a separate list instead
of minetest.luaentities, so we can skip the
removed and non-visinv ents all in one pass
- If no visinv updates were scheduled for any
given tick then don't run any pass at all
- Push early activation externally.
- Fix bug with ents fooling visinv checker into
thinking pos is handled even when marked
for removal
- Eliminate a redundant stack_get call
Instead of using 20% of CPU time to run
ABMs, defer 75% of them, so we are using
20% time to run 20% ABMs plus defer
a further 60%, giving us a total of roughly
80% CPU time for ABMs (not factoring in
overhead).
This should let us work around the engine's
hardcoded 20% ABM limit.
This should cause maps that have the same
seeds to have much more similar results
than before, e.g. sponge deposits will be in
the same places determined by seed and not
random each regeneration of the map.
- Mapgen shared now provides an RNG which
will be deterministic when feasible, for
repeatable mapgen results.
- Make existing rng-using mapgen hooks use
the new deterministic RNG.
- Mapgen shared hooks are also run in
deterministic order too.
- Tidy up mapgen_shared API a little more.
We generally either require all cooking recipes to operate on a
single item, or on any number in parallel, and will probably
never want to do an exact match on any other quantity.
This speeds up a 4000ms startup cost to 40ms.