Right-clicking on the top of a shelf would place a legacy plantlike
eggcorn. This was due to the storebox right-click override
unconditionally calling `item_place_node` when placing an item against an
inaccessible side of a storebox.
The solution would be to call `item_place` instead, since that function
has the logic to handle `place_as_item` correctly. However, this cannot
be called from the storebox right-click override directly because
`item_place` calls the `pointed_thing` `on_rightclick`, which would
cause an infinite recursion.
Solve this by refactoring the placement logic into a new
`minetest.item_place_node_or_stack` which is called by `item_place`,
as well as by the storebox right-click override when placing items.
There isn't always a surface below to catch items
that fall into a storebox, so we can't guarantee an
item that falls into a storebox won't just fall out
the bottom. Only allow falling in the top if falling
out the bottom is allowed too.
This fixes glass cases not catching items if the
case is floating in air with nothing solid below it.
There are still some cases it doesn't handle
correctly, like a bare stack node underneath a
form, wherein the item should be allowed to fall
out of the form and combine into the stack.
- Retire items_fall_thru group
- Add on_settle_item callback
- Open-topped storeboxes automatically capture
items settling on top of them
- Start converting form into storebox
Some users may use filtering but not have the "clean transparent"
filter enabled in the Minetest engine config. Bake this filter
into all images to (1) avoid the consequences of this (i.e. black
halos), and (2) possibly speed up startup time (the filter will
converge immediately).
- Storeboxes are now scalable.
- Standardize touch-hurt operation.
- Touch-hurt damage on scaling.
- Now possible to alter scaling time via scaling_time
group (percent of original scaling time)
This created a ton of dependency inversions, which
necessitated moving a number of API functions up into
higher layers, and restructuring dependency lists for
a number of mods.
BOLO: non-deterministic load errors due to missed
dependencies.
- Unbake the scaling tweak from models, apply it
using mesh scaling in MT instead.
- Standardize ratio definition in one place.
- Default all nodeboxes to winning z-fights.