ABM action calls are delayed until a background timer picks them
up, but it passes in the original args and assumes that the nodes
haven't changed. In addition, it bypasses our bug #8378 hack,
because that check is done in the abm action call but NOT the
background worker timer.
Do a check in the worker to make sure the node to be acted on has
not changed since the call was queued, and just let the call miss
and waste in that case.
Note that this automatically implicitly handles any #8378 issues
that may still be present since it has to force a fresh check of
the node to be operated on anyway.
If items have a common "stackfamily" property in definition, then
they combine stacks; name and metadata are effectively ignored and
any name is considered acceptable for the combined stack name.
This is used by Lux to allow it to stack naturally instead of the
player having to lay them out spaced on the ground to "cool" them
all to the same level, since all Lux changes dynamically anyway.
- Fix tab switching events for formspecs.
- Add padding to fix cutoff text rendering issue.
- Added more pt and pt_BR translations from Terifo.
Note that when you call translate() on a piece of
text, it merely adds translation tags around it to
request that it be translated client-side, but when
the client submits formspecs, the button values are
the actually translated text, which you can't
trivially access server-side. That means that we
need to use different button fields, not just count on
different button name/values, for events.
Translations are currently by holistic strings, i.e.
no parameterization. This may create some busy
work for translators, but gives them more freedom
to account for differences between languages.
A translation template file is written out to the world
path on game start, so translators have a seed to
work from.
This will make stacked/repeated sounds play slightly differently
so you can hear from the interference patterns that there is more
going on underneath the surface. It also adds volume to dispersed
ambient effects like fire.
This reverts commit 68c6f6671121b1b72b62db97858c25c82f6e834f.
I was able to reproduce the issue, in a case when it was definitely
NOT a falling_node mishap. Snuffing fire by placing a node against
the last bare face of embers apparently creates a race condition,
in which the node you place can be removed instead of only fire
being removed.
Standardize the "play a sound for everybody except the player who
is already playing it client-locally" logic into one place.
Fix failure to correctly detect tool speeds for some things, i.e.
when the player is using a tool but the capability used on a node
is actually inherited from the hand.
Note that this may allow pummeling with wrong tools (e.g. repacking
soils with spades) along with accompanying inappropriate tool wear,
but this should be minor and avoidable, and can be fixed later...
I suspect that the problem that I actually observed was caused by
falling_node behavior, and NOT by an abm. This workaround cannot
remain without firm evidence that it solves an actual problem.
We actually haven't been testing in 0.4 at all for quite a while
now. Since this is a standalone base game without complex
interdependency relationships, there isn't really any need to
maintain compat with old versions of the engine. Players can
upgrade to play; keeping a separate copy just to play on old 0.4
servers is even still an option.
There is some internal cruft that has been building up to support
0.4, and this allows us to purge most of it. The larger benefit
may come when we're able to remove line_of_sight in favor of the
more efficient raycast (still yet to be done).
Hopefully calling minetest.get_node_or_nil() again for all ABM's
will bypass the broken node cache. We should see warning messages
in the logs if this is the case.
This restores an old visual scale from the extremely early days
of NodeCore. That style was removed to syncrhonize the scale of
stack nodes with item ents. The syncrhonization can work the
other way, too, though.
This was triggered by wanting to make loose item ents more
visually distinct at a glance from settled stack nodes, by making
loose item ent rotation faster. Since we were going to change the
properties either way, given that, then we might as well use the
better visual.
Since making stack nodes have a full-size collision hull, it was
distracting having the items inside be so mismatched in scale.
Also, the "pointing around stacks" thing becomes less important
in long-run gameplay with shelves in play, which do not allow
pointing around/through anyway.
- Intercept /give commands.
- Provide an API for giving the player an item and inserting it
into the inventory in the right place(s).
- Change the fill order. We try to fill the current slot first,
the continue to the right to the end of the bar, and then
finally work our way left to the beginning. I think this fill
order should be most comfortable, in terms of having items tend
to fall close to the cursor.
Use interception where possible to modify destintion for items
directly instead of relying on post-hoc inventory rearrangement.
This should resolve the glitches where items appear in the wrong
place in inventory for a flash before being moved.
It was superseded effectively by the new inventory management
system. To split stacks, count out the items to transfer onto the
ground using sneak-drop, select the destination slot and pick them
back up.