The new function has no API compatibility with the old one, so give it
a different name to avoid confusion among caller mods, which need to
change their usage. Have a function under the old name that outputs a
helpful error message.
Merge node breaker into the generic wielder mechanism. Center the wield
inventory in all wielders' formspecs. Implement full auto-upgrade of
legacy node breakers, occurring upon use or punching of the node breaker.
Make node breaker respect on_dig hooks.
Merge implementations into a single "wielder" mechanism. Clean up the
code a bit. Fix get_player_control_bits for the dispenser (it wasn't
indicating the sneak setting). Fix drops for dispenser (dispenser_on was
dropping as itself). Show item image, as well as name, at head of form.
The filter-injectors used to always prefer to take items from the
beginning of the source inventory. Because items also tend to get placed
at the beginning of an inventory, this could lead to a chest+injector
buffer only passing through a trickle of one type of item, where other
item types are flowing in and getting later inventory slots. So now,
the sequencing of source inventory slots is configurable, per-injector,
by form. In addition to the old priority mode, there's now a random
mode and a rotation mode.
Incidentally refactor the filter-injector code, to avoid duplication
between the itemwise and stackwise variants.
Describe the two modes as "Send and Receive" and "Send only", rather
than the misleading "On" and "Off". Also make the mode toggle button
lag-resistant.
The logic that prevents mechanically wearing a tool was also preventing
the diminution of a stack of items to use, such as a stack of snowballs.
Restrict the use of pickcopy to the case where the stack still has the
same item type, count, and metadata.
Due to historical shenanigans around the addition of the pick slot to
node breakers, some breakers that were placed before the addition have
ended up with a mese pick in their newly-acquired pick slot, rather than
in the ghost_pick slot where it belongs. This causes these breakers to
spill this ghost pick when they are broken. To avoid this, make pick
spilling conditional on the breaker having a formspec: pre-slot breakers
don't have one.
A detector tube would sometimes miss a decrement, due to the pos structure
passed to can_go being modified by the tubed-item entity while it's also
sitting in the timer queue as an argument to item_exit. As the can_go
API actually depends on being able to mutate the pos structure (see the
teleporter tube), we can't just start passing in a never-mutated copy
of pos. So for now just fix in the detector tube's can_go, by copying the
structure there. Incidentally, make the decrement mechanism consistent
between the two forms of increment.
Previously, some tube types were named based on their function, and others
based on some arbitrarily-chosen material used in their construction,
with no meaningful system governing which was in each category. With this
change they are consistently named according to function. Naming style
is also made consistent in the wording that identifies tubes as such,
and in capitalisation.
Use the "wielditem" visual type for non-node items, with a fixed 45
degree yaw. This matches the recent change of dropped-item entities from
"sprite" visual to "wielditem".