This was added to allow a player to get out of a
rare softlock (trapped inside a cobble room without
any tools). Since then we have not seen much use
of it for this intended purpose.
However, it has caused MUCH confusion among new
players, wondering why it takes so long to mine
dirt or tree trunks, instead of trying to figure out how
to make the proper tool.
Emergency digging is causing more problems than
it's solving and thus it makes more sense to remove
it than to keep it. If we need some mechanic to fill
its niche (i.e. a way out of softlock) then we will need
to consider something that's harder to discover
accidentally to avoid confusion.
The old system effectively cached cross-block
boundary information forever and never expired
them, even if the node creating them was
removed (that would have been easy to fix) or
an obstacle placed in the path (that would have
been difficult to fix with the old method).
Instead just do the simplest thing and split this
into a separate loop, and run a 2-second DNT with
a separate forward-trace from all active optic
nodes.
Doing a second forward trace for each node output
may not be as efficient but ultimately we create more
problems than we solve when we try to be too clever.
...similar to how loose items are.
- They're emphemeral/air-like anyway
- Prevent exploiting protection areas to make traps to
capture players or their items.
Before we were generating one spark spawner for
each ABM run, which could run hundreds of nodes for
a large blaze, and bunched them together. Instead,
push into a limited fair queue, and also spread the
actual spark spawning out across time to spread the
network traffic from fire.
To repro: place a sand node at least 2 nodes high above
glowing lode prills and let the sand fall onto the prills and
try to displace them.
Introduced in 01252653-5da0918.
For some reason it seems like a non-player object is being
passed as the digger (I thought it would be nil for non-
players?) and this object apparently imitates a player but
is missing some critical thing such as metadata.
To work around the problem, just add guards to the
phealth functions, since only players are intended to have
"health" anyway.
Wherever an optic beam strikes a mapblock boundary,
it now creates a particle effect visible to players close
enough. This can be used to plan circuits so they work
entirely within a single mapblock and thus are never
internally interrupted by unloading.
This is useful when we want to perform an
action on a commonly-occuring node (like
sand or item stacks) with a requirement of
a neighbor of a less common node type (like
igniters). Checking for B with A nearby can
be a lot faster than A with B nearby if B is
less common, so fewer neighbor checks
actually need to happen.
This was already done "manually" for the
flammable/igniter interaction, but now this is
a general API for all ABMs, that allows the
inversion to be done nearly transparently
with just a flag in the definition, and so the
ABM rules can be written more simply, with
the inversion handled elsewhere.
TODO: Rewrite current manual-inversions,
including the ones for flammable/igniter and
lava/stone hardening/softening.
This prevents a problem where players
can drop items into other players'
protected areas but cannot dig them.
Other solutions to prevent players from
placing items into protected areas in the
first place may be possible, and may still
be explored, but are not foolproof and so
this acts as a fallback at least.
A low-level player teleportation must be explicitly
declared nodecorian via a keepinv property on
the position, or the player must be exempted via
the keepinv priv, to be allowed to teleport without
leaving the inventory behind.
This means that naive mods like /home commands
will now work correctly and teleport only the
player, and not items.
Use grid-aligned pixel locaiton for calculating
opacity so each star pixel position has only one
opacity level associated with it, rather than the
multiple that can currently occupy that opacity
range.
Use grid-aligned pixel locaiton for calculating
opacity so each star pixel position has only one
opacity level associated with it, rather than the
multiple that can currently occupy that opacity
range.
Apparently (e.g. on Kimapr's servers) it's possible
to dig "undiggable" nodes under extreme lag.
Theory:
- Place something like cobble next to water source
- Dig with infused mattock through all stages
The client will predict a cobble->loose cobble
transition, then let you dig the loose cobble, and
then send the "dig" command to the server, but
on the server side the cobble instead was dug
directly, and then water flowed in to fill the space
where the client thought the loose cobble would
be, so the client digs the water, and you get
flowing water in your inventory.
For one thing, it's a bit overpowered when you go
right from infused still digging lode ore as loose
cobble, right to boosted-infused digging it as raw
ore.
For another, uncobbled lux stone is purposefully
labeled as just plain stone to force the player to
pay attention to light cues, but this would make
inventory management problematic once smooth
lux stone has been collected with boosted tools.
The realism theory is that item stacks are "looser"
and more easily pushed out of the way. The
gameplay theory is that it's getting annoying
having machines like log or charcoal choppers
getting blocked by items under the falling nodes.
This is also hopefully part of falling-node stack
order reform, to fix that nodes sometimes fall
through each other.
This way, at the time the announcement is made,
the player has already been kicked, and any mods
that check the player list based on this (i.e.
szutil_nowonline) will show the correct list.
Visinv ents sometimes don't appear in MT
5.4+. I haven't fully investigated the
reason yet, but it could be because the
mapblocks aren't "active" yet when the
LBM is being called and trying to create the
ents, so if the creation fails, try queueing
a retry and see if we catch it later.
The original idea was to have items that are thrown and land into a
stack node smoothly "slide" into place instead of disappearing
momentarily and then reappearing in their final spot, to create a sort
of visual continuity.
However, it turns out that making this actually work is almost
certainly going to be way more complex and fragile than it's worth,
and visinvs have faced new challenges since then anyway, so it's
probably about time to kill this project officially.
- This branch has gone nowhere for a long time.
- Most players agreed they didn't like the new look.
- It would take away texture pack authors' ability to redefine the
shape of the eggcorn as they can now.
- The existing "flat item extrude mesh" look fits well enough with
the other artwork in the game that it's not needed.
This was an interesting experiment and so will be preserved in the
project history, but isn't going anywhere so doesn't deserve its own
branch head.