The use of [REMOVED] was originally intended to
keep translations of past strings when removed, so if
they were re-added later we could revive the
translations without relying on Weblate to keep them
for us, i.e. we should be able to regenerate Weblate
state (including hidden strings) from this repo.
Since we are now committing copies of the raw
weblate files, we should be able to revive anything
we need from git history anyway.
So far it looks like Weblate does not automatically
remove translation strings from target languages
when the source language is changed. If this
becomes an issue later then we can scrape the git
repo history to reconstruct lost strings at that time.
This also cleans up some translations that were being
mistakenly included in the final compiled output
despite being removed, because we weren't
correctly filtering out [REMOVED] strings after the
punctuation was added to silence Weblate warnings.
16 total mask positions rather than like 150. This
should (1) cut back on video memory leakage, and
(2) reduce the probability of client lag due to drawing
dynamic textures all the time, after it's had a little
time to "warm up".
- Pass a def table instead of a function
- Retroactive defs will also scan over all existing
definitions and have an opportunity to modify them
at time of registration.
We want to start requiring translation informing to
happen at loadtime, so we can sort strings into
groups by mod, so we can (1) keep the base NC
locale data clean of optional mods, and (2) manage
translations for mods separately.
This reverts commit 03f8d32967cc35e418d8ffb46b00f65eaf34e685.
Apparently this causes item destruction: when stack nodes are
secondarily dug by a rake, their items are not given to the
player.
If there are multiple variants with conflicting
translations and no "generic" translation, then
sort the variants into an arbitrary but constistent
order so we always get the same results each
time we run this with the same input, and
translations don't fluctuate.
Share strings across variants for a common
langauge, if we don't have a string for that
specific variant. This should help us get better
overall translation coverage.
This is done as a "filter" on converting the raw
weblate data to MT locale files, so we don't get
the purity of the original translations ruined.
The new method of intercepting item addition into
player inventories hooks into the base metatables for
the userdata types only once per type, instead of
trying to substitute every inventory object with a
table (which crashed some things) and does a lookup
to find the player per inv. This should hopefully be
more reliable, and avoid some of the leaks to
rearrangement we had before.
If we can finally stop hitting the player inv rearrange
safety net then it can be removed.
This should fix "messy raking" issues where
the rake fails to pick up some things inside
its volume because they start falling due to
items below being dug first before the rake
hits them, making it more as if the rake is
actually simultaneously digging that volume.
Based on what's being dug, rakes can have
different dig volumes and checks.
Lode rake now has 3 modes depending on
what's being dug:
- Loose things, same as wooden rake
- 3x3x3 exfoliating
- 3x1x1 soil tilling/digging
Allow the built-in teleport command to be used
with standard NodeCore rules, i.e. players
can move freely, but items cannot. Players
travelling by use of this command need a
special priv to keep inventory.
Hughes Ross has started to work on a PR for this
(https://github.com/minetest/minetest/pull/10140)
but it doesn't look like it will be ready until 5.4 at
least, and we will support pre-5.4 versions for
some time yet. The ability for TP artists to
override special_tiles is necessary to allow things
like flowing liquid textures to be customized in
texture packs.
Add a hack for these, similar to how we did the
inventory/wield image hacks.
Note that we are also forcing overrides for special
tiles, since there may be cases where we reuse a
base image without modifiers but TP artists may
still want an independent override.
Item ejection due to injury or teleportation:
- Check for custom on_drop calls from items, e.g. admin tools
that distintegrate instead of becoming items.
- Log players losing items so we can audit where things came from
or went to.
- Make teleportation and injury APIs use the same methods.
Trying to isolate server performance issues, it was pointed out
that clients are spending a LOT of time receiving and rebuilding
mapblock meshes, and that updating node meta triggers this, even
when that meta is not relevant to the rendering of nodes.
Rubenwardy added a suggestion to change this in the engine:
https://github.com/minetest/minetest/issues/10127
This patch implements this suggestion at the game level, since
in NodeCore's case we already were making the assumption that
nearly all metadata fields were private.
Useful for more complex transformations like assembling
animations or tiling.
Use in a couple places to try it out, esp. the new living
sponge animation.