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.
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.
- Clean up registered_* usage patterns.
- Reduce tendancy of leaves to create stack nodes.
Now they tend to stack up properly in-world more often.
- Tweak damage system to create "headroom" where minor
damage doesn't cost inv slots immediately.
- Make player hand skin color match model skin.
- Cleanup/unify grass abm logic.
- Start installing new sounds by MagikEh
Sound source:
https://github.com/MagikEh/SoundsOfWarr
- Players heal over time at variable speed, depending on subtle
environmental factors.
- This frees us up to work on the death mechanic, since it's no
longer the only way to restore health and prevent an untimely
death.
- Make node match operate on only one of node or stack, depending
on whether node defers to stack via is_stack_only. This should
hopefully prevent future pummel recipe issues.
- Add new core stack API. Needs to be deployed in a lot of places.
- Start work on system for allowing flammable containers; they
eject their potentially non-flammable contents.
Appears to work with existing functionality.
Next step will be to rework pummel to use a "recipe" system and
reuse most of the useful parts of the crafting system.
- Refactor player knowledge into player mod, to declutter API.
- Move player knowledge into mod storage so players don't need to
be connected to access. Old knowledge will be reset, but I
doubt there was very much of it to lose.
- Start gathering some basic stats.
- Main glaring omission is player moving and idle time.
- Add a bit of stone to the tip of a wooden tool to harden it.
- Stone tools wear back down to their wooden originals.
- Stone tools dig faster, but wear quickly, so you need to pay
attention to wear levels and carry spare stone tips.
Also:
- Nerfed mining speeds again, but made higher-tier tools much
faster relative to lower.
- Nerfed tool durability as well.
Also:
- Standardized item ejection logic.
Try to standardize the way we handle tools, materials, digtimes.
- Levels start at 1 and work upwards.
- Level 1 is for "hand" or "primitive" tools.
- Levels 2+ are wood, stone, metal, etc.
- Link dig times, tool levels, and durability together.
- Material groups now define standard "base dig times" which
are the main thing that makes e.g. stone harder to dig than dirt.
The speed of digging almost everything will probably have changed,
in some cases not for the better; much testing will be needed.
- Clean up utils into multiple files.
- Standardize limited ABM.
- Standardize debug trace handling. Instead of using chat_send_all
to debug, and then having to remember to remove before release,
allow privileged players to receive all server debug messages.
Much TODO:
- Primitive adze should not harvest trees whole; need to split into
planks from end only.
- Not entirely satisfied with crafting experience from gameplay nor
API perspective.
- Need an easier way to register these kinds of recipe checks.
- Need more gameplay actions to commmit a craft, e.g. have to pound
the tool head into place.
- Punch a node repeatedly, aborting dig between each swing, to
trigger the "pummel" action.
- Can use this to repack "loose soil" type nodes into solid,
non-falling versions.
"Loose" versions of materials will only allow a certain maximum
angle of repose, and will shuffle around sideways and fall if
that angle is exceeded. Softer materials like sand, leaves, loose
items, will all have shallow angles, while sturdier stuff like
dirt, gravel, etc. may allow steeper ones.