Commit Graph

741 Commits

Author SHA1 Message Date
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
MT-Modder 1ab0fc12a7 Add background image to book formspec 2016-02-19 19:54:45 +00:00
Auke Kok 5569950b26 New gravel texture.
Issue #811 - new gravel texture needed.

This texture was Gambits' PixelBOX gravel light texture. Gambit
posted that his texture pack is WTFPL:
- https://forum.minetest.net/viewtopic.php?f=4&t=4990&start=50#p141196

I've made significant modifications to this texture:
- slightly rotated and rolled some sections of pixels
- minor burn/dodge some pixels to keep high contrast
- removed lineair repeating effects
- etc.

Attribution is added back to Gambit. Thanks.
2016-02-19 19:54:40 +00:00
Auke Kok 363b95c003 Doors: Allow arbitrary recipe to be passed, even nil
This allows mod makers to register their own recipies, including
none, to register doors.
2016-02-18 13:57:09 +00:00
Auke Kok 8422f2ef52 Fix character.b3d animation issues.
Both the standing and sitting animations had misplaced curve
cusps that caused the end part of the animation to wiggle the
feet slightly back and forward.

I've fixed both animations parts and re-exported. Verified in-game
with multiplayer that everything was indeed fixed.
2016-02-18 13:57:04 +00:00
tenplus1 36d18cb161 added timer to tnt:tnt_burning for explosions
By adding the timer to the tnt:tnt_burning node it will help mods add the block and cause an explosion after 4 seconds instead of doing nothing like in it's current state.
2016-02-18 13:56:57 +00:00
Craig Davison b47a556472 Remove log_mods from TNT
This option is not documented nor is it used with any other mod in Minetest Game so why should it be used in TNT?
2016-02-18 13:56:50 +00:00
paramat 7d2dfe4101 Consolidate ABMs
Spread ABM intervals evenly across 1 to 16 seconds
16s ensures no nodes are missed when player walks past
Adjust chance values to compensate, for identical action rates
Combine lavacooling ABMs into one, return to chance = 1
Grass growth: add 'neighbors = "air"' to avoid
processing the thousands of underground dirt nodes
Grass death: Reduce action rate to that of grass growth
Fire: Use chance = 1 for flame extinguishing
and flame removal when mod is disabled
2016-02-14 05:22:20 +00:00
Jean-Patrick Guerrero 04f01bc57f Doors: fix unability to register doors outside of doors mod 2016-02-13 18:37:16 +01:00
Rui 7a3cff5529 Remove minetest.inventorycube 2016-02-13 03:47:49 +00:00
Auke Kok 8f095c62a8 Convert furnace ABM to node timer
Node timers are higher precision and a better guarantee
of happening at regular intervals, whereas ABM's may be
postponed, cancelled or missed if a player is too far.

The largest benefit is that once the furnace is done
cooking, no more ABM's are fired - the timer is stopped
instead and no more events are created until items
are put in the furnace.

This patch is larger due to the migration of the timer
function and indentation change as a result of the somewhat
reduced complexity. I've tested with several furnaces and
this works correctly and behavior is not affected, although
people may find that their furnaces now work more
regularly.

If you place several furnaces next to eachother, you will
still find all furnace timers firing exactly at the same
time. This is a bug in core that should not coalesce node
timers at second intervals.
2016-02-13 03:47:38 +00:00
Auke Kok f600a9f645 New mesh door models, and extensive door API
This patch replaces the default door nodes with a new mesh model
and nodes.

Two new models were added that are 2 blocks high. One for left-hinge
and one for right-hinge doors. This allows us to make a single texture
fit on both models. The alternative would have been 1 model and 2
unmapped textures, which is more work for mod developers.

Doors work exactly like the old doors, including ownership, breaking
doors, opening and closing.

Under the hood, we can prevent the top part of the door from being
obstructed by placing an invisible node. This prevents liquids from
flowing through doors or people placing sand or other blocks in the
top half. The door code automatically places and removes these as
needed.

Metadata is used to store door state, just like the old version.

A doors API is added, it allows mods to use the API to open/close or
toggle door states without worrying about sounds, permissions and
other details. This is intended for e.g. mesecons. This API allows
mods to manipulate or inspect doors for players or for themselves.

In-game old door nodes are automatically converted using an ABM and
preserve ownership and orientation and state.

TNT blows up all doors and trapdoors except for the steel ones,
who can survive a blast. We return an itemstack in on_blast(),
which requires a TNT API patch which is also pending.

We enable backface culling for most of these doors, as this gives
the identical visual appearance that the old doors had. In the case
of the glass door, there's a slight twist.

The texture files used by the new doors have new names that do
not conflict with previous texture file names to avoid texture
pack conflicts.

Thanks to red-001 <red-001@users.noreply.github.com> for some
of the conversion code, cleanups, and extra textures.
2016-02-13 03:47:28 +00:00
Muhammad Rifqi Priyo Susanto 9e54b379c8 Creative: Extend search function to descriptions 2016-02-06 01:24:24 +00:00
paramat 5994ac8dc5 Default/schematics: Re-add force-placed root node to mapgen trees
Avoids trees or large cacti being placed multiple times at a single
position, by changing the node at the heightmap y value
2016-02-06 01:24:19 +00:00
paramat c198d8c57e Default/mapgen: Confine Aspen to one half of deciduous forest 2016-02-06 01:24:14 +00:00
Craig Davison 09dbaf7972 Follow naming conventions of textures in creative 2016-02-03 19:33:59 +00:00
Craig Davison 0add474af2 Follow naming conventions of textures and models in boats 2016-02-03 19:33:46 +00:00
kilbith 0ea23a50d3 Creative: move player datas in separate table (fixes #812) 2016-02-03 19:33:31 +00:00
Auke Kok 2f39cad09b Create API for fence.register, and use it.
This converts the call to minetest.register() for the default
fence node, so it can be called by other mods to quickly
setup other fences.

Since this creates an API, insert it into the game_api.txt.

The api looks like minetest.register(name, {def}), and has two
uncommon fields: "texture" and "material". Any normal nodedef
property can be passed through, except "drawtype". The "fence"
group will always be added.

The default fence recipe is modified to be as follows:
  wood, stick, wood
  wood, stick, wood

This recipe yields 4 fence nodes.

This allows us to create according recipes for acacia, pine,
aspen, and junglewood fences without adding new stick types:

  pine wood, stick, pine wood
  pine wood, stick, pine wood

This is a from-scratch implementation, written by heart but inspired
by (#665 - Add many wooden fences).

Stick and fences nodes are named in a consistent way.
2016-02-03 19:33:19 +00:00