This freezes many things that normally happen automatically
in the world, including most ABMs and AISMs, and a few other
custom step logic items like the player "hot potato" logic.
This can be used for "creative mode" purposes to setup a complex
build without it running itself away from you, and for texture
pack authors, to have time to see things that are normally
transient or difficult to observe because of the effects they have
on nearby things or players.
Treat all API mods as a "layer", and use the new
nc_api_all registration to indicate that a mod depends
on the NC API (which ALL NC mods assume they do).
This means that each non-API mod does not need to
worry about which API mods it really needs and which
it does not, nor will they need to be updated for any
internal API restructures.
This is a game, not a modpack, so all mods will be
loaded anyway, and we only care about order. That
means that we don't really need to worry about
having excess dependencies because any mod we
don't actually need will be needed by something that's
loaded anyway. If somebody wants to reuse a
component elsewhere, they're likely to need to do
some work to untangle it anyway, because of the
amount that NodeCore mechanics interact and
interdepend.
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.
- Thrown objects inherit initial velocity.
- Player and objects have matched terminal
velocity and can free-fall in tandem.
- Thrown objects experience horizontal air
friction too.
Note that for extremely long falls, something
still needs to be done for items falling in
parallel with players, since as it is right now,
then fall at different speeds.
Even with player velocity being limited,
objects tend to fall at much slower speeds
initially than players, and collide with
unloaded areas and "settle" into node space,
requriing an ABM to release them again.
Instead, when a falling item collides with an
unloaded area, we need a way to preserve
its speed until the area is loaded, and then
continue falling.
This idea has resulted in 2 failed branches
and exposed a handful of engine bugs.
The way things stand right now, it's a miracle
that HUDs are usable at all, and probably not
worth messing around with them to try to
get them "just right."
- Handles upsert, TTL, caching, players leaving.
- Unify breath and player name HUD logic for now.
Touchtips are more complex (multiline, translate) so
those will need more work to unify.
- Intermediate number of stages.
- No dizzying rotation.
- Still has a blank first stage for emergency hand-dig.
- More reminiscent of isometric cube motif.
- Lines coming from center make it more "crack-like".
Resize base texture down to 16x first, so mask works
as expected. Some textures may be blurred, but
we're more concerned with getting the overal color
right more than showing actual patterns.
- Now has 24 stages instead of 12.
- First stage is blank, to prevent very long digs from
giving player too much positive feedback.
- Rotation effect.
The key thing here is that for the first 1/24 of the
dig animation, no positive feedback is given to the
player to indicate that the dig is "working." This
should discourage new players from being distracted
by the emergency hand-digging feature.
More dig stages also help players get a better sense
of progress as they're digging things that do take a
long time, since digging in NodeCore tends to be
slower overall than digging in most MT games.
The rotation was thrown in as an afterthought, but
helps give a sense of progress. Hopefully it's not
too distracting or seizure-inducing on very short dig
times; it ends up sort of all blurring into a circle to me
when digging with advanced tools...
Making hand dig everything broke logic that was
depending on things being "not hand diggable".
Continue to treat things as not-hand-diggable if they
would take a long enough time to dig.
If the falling item/node causes enough damage to
trigger a "hurt" effect, then it loses much of its energy
and bounces upward off the player.
This will also reduce the "scraping" effect when nodes
fall through a player. Hopefully the damage from
falling things is a little more consistent now.
This should keep players from being able to trap
themselves permanently by burying or sealing
themselves inside a room with no tools, in theory.
Adjust silk touch logic to prevent presence of dig times
by hand from tripping it.
This may affect game balance of things like not being
able to punch trees in the early game, but since dig
times by hand are so very long, hopefully the effect
will be small.
Item drops are left as-is for now; it just takes a LOT
of patience to dig something without the right tool.