Commit Graph

1609 Commits

Author SHA1 Message Date
Auke Kok
9de43cdf7d Doors: Allow falling nodes to fall onto doors.
We were cleverly attempting to use an airlike node as the
top half of the doors, but as airlike nodes are not walkable,
falling nodes would not stop falling and thus remain an entity
stuck on top of a door.

After inspecting the builtin/game/falling.lua code, I considered
the remaining options: (a) revert doors such that the top part is
actually the door, (b) play with nodedef fields and see if other
flags may work, or (c) modify the hidden door part to another
drawtype that properly prevents this issue.

(a) seemed way over the top for now, although it would solve the
issue, it would cause a rewrite of most of the code including the
old-door-conversion.

(b) turned up nothing.

(c) turned out to be relatively simple.

So, here's the implementation where I turn the hidden door top
into a tiny, non-targetable but walkable nodebox that is entirely
inside the door hinge. It's entirely transparent, so you still
can't see it, can't hit it, nor can you place anything in it or
make liquids flow through it. The top part is placed in the right
position on placement and not touched further.

Falling nodes will properly stop on top of these doors. I've
adjusted the door conversion code to properly account for the
issue as well, so the only thing remaining is people who have
been running a git branch - those can upgrade by re-placing the
door.
2016-03-21 06:17:27 +00:00
Rui914
a2ecc51fbc Create API for registration of fence gate. 2016-03-21 06:17:21 +00:00
James Stevenson
d90a081722 Rename argument to priv check
Fixes crash when punching bones not owned by you, and may resolve https://github.com/minetest/minetest_game/issues/940
2016-03-18 02:35:38 +00:00
Auke Kok
70248505ae Walls: Don't connect to group:cracky
the ```group:cracky``` group contains all sorts of odds and ends
nodes that we shouldn't connect to. There are a few nodes that
walls now no longer connect to, that probably should get
```group:stone``` added, or something similar, though.
2016-03-18 02:35:28 +00:00
Auke Kok
22e32a01ad Allow digging of protected doors with "protection_bypass"
This was probably lost in either the API rewrite or a merge/rebase.

Fixes #929
2016-03-18 02:35:20 +00:00
Auke Kok
c94349eaef Re-export character.b3d without texture linkage.
I've created a modified B3Dexport.py version that automatically strips
the embedded texture link to external texture files. These links were
causing the engine to spew "can't find character.png" messages on the
console, but were harmless due to texture loading being done by the
client side and not through irrlicht.

I previously moved character.png to /textures/, which is wrong. I now
understand that character.png was in the same folder as character.blend
simply to make blender load the texture from the embedded linkage
automatically. Nothing more, nothing less.

Subsequently the character.png file should just sit in convenience
in the /models/ folder with the blend file, and not in the textures
file. This patch moves it back. And yes, minetest does load the
character.png from this path.
2016-03-18 02:35:14 +00:00
Auke Kok
41c2b2aeea Allow both sides of the bed to be digged up.
Tested with nodebreaker, fire.

If called from lua, minetest.remove_node() calls on_destruct() callbacks
before the map is actually updated. This means that we can't look at the
map data to determine if we're done cleaning up adjacent nodes, and we
have to stop recursing some other way.

There's no data we can pass around through functions that would survive
scope to a secondary on_destruct() callback, so we have to maintain
local state somewhere in the mod namespace.

In this case, we keep a bitflag. The bitflag is set to "true" by
default. On the first half removal, the flag is flipped and afterwards
we remove the other half node. When the on_destruct for the other half
is running, it's value is false and we flip it back to true without
removing the other half node.

This thus prevents recursing.

To facilitate easier finding of the bed partner, we tell our on_destruct
whether we're a top or bottom half node through a passed flag.

Now that the top is diggable, we just need to assure that it drops a
bottom bed part.
2016-03-18 02:35:07 +00:00
Auke Kok
cb57f70aab Add steel door/trapdoor sounds.
I've found a favorable steel door sound from a parking garage
door that isn't abrupt or scary, just sounds like a nice solid
metal door. The sample had both opening and closing sounds, and
so they match nicely. Amplified and mixed several samples together
to reduce ambient noise, and get the right level compared to
wood doors. Attribution was added as well. CC-BY-3.0 sounds.
2016-03-18 02:34:43 +00:00
paramat
f18871d60c Default: Colourise desert cobble to be consistent with desert stone
Hue and saturation match desert stone and desert stone brick
Preserve original mortar colour
2016-03-15 16:23:13 +00:00
paramat
c17c317669 Doors: Update glass door item textures to new design 2016-03-15 16:23:05 +00:00
Auke Kok
7c966db4bc Fencegate: prevent y-fighting at top.
We raise the height of the fencegate node by 0.0001 to make the
fencegate post stop fighting with node blocks. This makes the
gate pole appear to be cut through the node, and doesn't leave
a gap when stacking fencegates, which would look odd.
2016-03-15 16:22:58 +00:00
Auke Kok
e5304ce674 Fire: Optimize spreading ABM.
No need to find_node_near twice with the same params.
2016-03-15 16:22:50 +00:00
Jean-Patrick Guerrero
28884cc784 Add flint and flint-and-steel 2016-03-15 16:22:42 +00:00
Auke Kok
dfee51c21e Clean up door tops if fire destroys bottom.
Fixes #909. Door tops are never flammable.

This doesn't guard yet against a voxelmanip removing the top node,
but that is less of an issue since if a voxelmanip removes the top,
then the bottom part remains functional and visibly intact. If the
voxelmanip removes the bottom part, but not the top, then this patch
makes it clean up the top just fine.
2016-03-13 04:49:21 +00:00
tenplus1
20053d6b52 Fix bug rotating unknown node
This fixes a bug what crashes game when rotating an unknown node.
2016-03-13 04:49:15 +00:00
paramat
079b796031 Dye: Add global table of dye names and descriptions 2016-03-13 04:49:03 +00:00
paramat
9c887e0b32 Dye: Make pink dye mixable
Correct 2 inconsistent mixes
Clean up code style and vertically align mix table
Remove dyelocal and simplify table names
2016-03-13 04:49:03 +00:00
Auke Kok
2fb40be409 Add "protection_bypass" priv.
The access privilege allows players that have it to bypass protection
on locked doors/trapdoors, chests and bones.

The priv also allows bypassing any minetest.is_protected() check,
including digging nodes and placing them. It is meant for world
moderators to clean up and fix map issues.

Original patch by red-001. Split up and rebased/rewritten by sofar.

This patch requires https://github.com/minetest/minetest/pull/3800
2016-03-13 04:48:57 +00:00
Auke Kok
f8f7502e32 Basic stone walls, using NDT_CONNECTED.
These basic connected wall nodes automatically connect
to neigboring stone blocks, other wall blocks and anything
that's "cracky". The do not connect to wood (fences will do
that).

The walls are generated using a new walls.register() API.
Documentation on the API is included in game_api.txt.

This change requires minetest/minetest#3503.

Walls are added for all cobble stone materials. They generally
look best and are the natural use cases for these materials.
2016-03-13 04:11:22 +00:00
Auke Kok
b998ab1b3a Add a simple, but stylish fence gate.
This fence gate builds on NDT_CONNECTED by assuming fence nodes will
automatically connect to it's sides properly. The fence gate will
open and close just like doors, with sounds, but it only opens one
way. The gate sticks out quite a bit and can be bumped into, so the
fence may be used as some sort of path switch.

The fence gate offers no form of protection and can be opened and
closed by anyone. This is done on purpose - the fencegate isn't
meant to provide protection from players, as fences can be
trivially jumped over. Instead, these fences should be used for
protecting crops from hungry sheep, or keeping rabbits in their
pen, or just decoration. Mods can also modify the mod to add
protection, of course.

A recipe is added to make these. It's 4 sticks and 2 wood (any)
as follows:

  stick  wood  stick
  stick  wood  stick

The collision box of the open gate is such that if two gates are
connected but mirrored (making an M shape) then you can walk a large
entity that's larger than 1.0 wide through the opening. The gate of
an opened fence can also be stood upon or bumped into.

I've mixed together some sounds to provide a somewhat light sound
experience, one that one would expect from a small gate latching open
and close.

This change requires #873, otherwise it doesn't connect to fences.
2016-03-13 04:11:03 +00:00
Auke Kok
d979293f14 Convert fences to NDT_CONNECTED.
This changes the drawtype of fences to NDT_CONNECTED nodebox drawtype.

These nodes are drawn by the client with the needed connections on
the fly as the scene is drawn. There is no logic needed by mods to
modify the nodes.

These fences connect to (1) other fences, (2) planks and (3) tree
trunks, but nothing else. They do not connect to stone, dirt, wool,
etc. This is done by the "connects_to" parameter, which takes groups
and node names.

Due to the way textures are wrapped, we can make these nodes look a
lot better by giving them a special tile.

This change requires minetest/minetest#3503.
2016-03-13 04:10:51 +00:00
Jean-Patrick Guerrero
676822d286 Change steel ladder sounds + fix/add missing recipes 2016-03-11 15:28:13 +00:00
red-001
a5ad30748d Add an on_burn callback. 2016-03-11 15:27:57 +00:00
paramat
45bc0b245f Beds: Fix code style issues 2016-03-09 02:44:32 +00:00
Jean-Patrick Guerrero
aa676ab878 Add steel sign + Update wooden sign texture 2016-03-09 02:44:27 +00:00
paramat
f80fafbcfb Default: New jungletree_top texture 2016-03-06 01:32:11 +00:00
Jean-Patrick Guerrero
7f317871d4 Add steel ladder 2016-03-06 01:31:36 +00:00
red-001
68f5740dcc Fix markdown formating in game_api.txt. 2016-03-06 01:30:58 +00:00
paramat
6c6cc2159a Default/craftitems: Fix whitespace and code style issues 2016-03-06 01:30:40 +00:00
tenplus1
aa254e2835 Fix book formspec to word-wrap lines
Books still don't wrap long lines of text properly so until this has been sorted out I suggest reverting back to a previous working formspec which lets players read books properly until a fix is found (and maybe scrollbars added to texarea's).  Also adding a recipe to blank written books.
2016-03-03 00:37:07 +00:00
MT-Modder
29252c6fb2 Allow non-players to dig steel doors. 2016-03-03 00:37:01 +00:00
MT-Modder
ac843f8fe7 Allow non-players to dig locked chests. 2016-03-03 00:37:01 +00:00
MT-Modder
0410b5e0ca Allow non-players to dig bones. 2016-03-03 00:37:01 +00:00
red-001
3a98245f62 Document share_bones_time_early 2016-03-03 00:36:53 +00:00
Auke Kok
00a0d9a5d4 Doors: Prevent placement in protected areas.
https://forum.minetest.net/viewtopic.php?f=42&t=1523&start=500#p208773

Currently, doors can be placed inside others' protected areas. We
need to check protection for both bottom and top halves.
2016-02-29 20:29:47 +01:00
paramat
5d28040915 Default: Add 'snowy pine tree from sapling' schematic
Add function to detect nearby snow to enable snow on sapling-grown pine trees
Correct 'place schematic' rotation parameters to "0" or "random"
2016-02-27 21:47:10 +00:00
paramat
62dbf29301 Default/mapgen: Remove unnecessary spaces from log decorations 2016-02-25 00:08:30 +00:00
paramat
6493e5fefb Default/mapgen: Make forest clearings larger and more common
In mgv5/v7/flat/fractal/valleys
Add missing noise parameters to pine logs for
density to vary in relation to pine tree density
2016-02-24 22:53:32 +00:00
rubenwardy
42cc6d2c31 Add item name to chest log messages 2016-02-24 22:53:20 +00:00
MT-Modder
3a55e19055 Control leaf decay with sneak.
As requested by @paramat.
Leaves are preserved by default and only decay when using place + sneak.
2016-02-23 20:35:08 +00:00
MT-Modder
ea2a7d3b1f Remove dig_up() from cactus.
Digging a cactus leaves the branches hanging. With this change it will no longer happen.
2016-02-23 20:34:32 +00:00
Auke Kok
2c355a8642 Allow mod namespace for door registrations.
This is an adapted version of #861 - by oleastre

Most mods had been calling `doors.register_door() with a door
name that included the "modname:" prefix, and we should continue
to allow mods to do so, without registering the nodenames created
in the "doors:" namespace.

The default case is to use the "modname:" prefix verbatim. If
mods or code calls this function without a prefix, then "doors:"
is automatically used.

Now that the namespace is corrected, the copy replacement ABM is
no longer needed.
2016-02-23 20:34:23 +00:00
Auke Kok
777088481b Fallback doors.register_door() code.
This function maps doors.register_door to the new API as far as
reasonable. We can't map the texture, so we fall back to a default
texture. An error message is printed if mod writers did not provide the
needed new tiles field for the door. The created doors are functional
and a full replacement. Old doors are replaced with the new ones
through an ABM.
2016-02-23 20:34:23 +00:00
Auke Kok
6b055ae18a Fix broken door protection.
A previous fix overwrote the `def` variable during registration,
causing protected doors no longer to be placed with protection.
2016-02-23 20:34:23 +00:00
Jean-Patrick Guerrero
4c9944b263 Creative: Rename fields with correct naming convention to avoid possible conflicts 2016-02-21 15:31:37 +00:00
Auke Kok
73d998ccdf Lower snow footstep and dig sound level.
These sounds were perceived to be too loud in the
game. I've lowered them significantly but they remain
plenty audible. The dig sounds were very loud as well
so I toned them down as well.
2016-02-21 15:31:28 +00:00
Auke Kok
3fcb7821d7 Move character.png to textures.
This file is obviously out of place, as the engine does not
load textures, ever, out of a models folder.
2016-02-21 15:31:20 +00:00
Auke Kok
ed9fd475de Call on_place_node() callbacks after placing door.
Other mods may depend on knowing whether doors are placed
to setup additional attributes or perform node manipulations.

This is something e.g. mesecons does to connect circuits
to doors. This was tested with mesecons. Placing a door next
to a mesecon wire will make the wire automatically
connect, which was otherwise not happening.
2016-02-19 19:54:55 +00:00
Auke Kok
2cc6640edf Open doors when right-clicking a door with a door.
And similarly, if we wield a door and right click any node
that has an on_rightclick() handler, call the handler
instead.

Just to be on the safe side, assure that none of this
code runs when right-clicking an entity or player, which
would likely crash the server.

Fold in PR #831 as well - prevent server crash on door
place on unknown blocks, by @tenplus1.
2016-02-19 19:54:50 +00:00
Auke Kok
bbf17c9eca Allow building doors on buildable_to nodes.
This code never allowed placing a door on e.g. a grass
plant. The code to handle this isn't that complex. With
this code, doors can be placed on flowers and on normal
node surfaces without issues.
2016-02-19 19:54:50 +00:00