Commit Graph

140 Commits

Author SHA1 Message Date
Auke Kok
4f32fd253c Fix ItemStack method call for keys.
Fixes (I hope) #1420 (bad method call).
2016-11-27 18:26:31 -08:00
Auke Kok
e4b1c93512 Keys: Allow easy sharing of access without commands
This code adds the key concept to minetest_game, and integrates it
with lockable nodes. Currently supported lockable items are the Steel
Door, the Steel Trapdoor, and the Locked Chest.

The goal of this modification is to introduce a fine-grained multi-
player permission system that is intuitive and usable without any
console or chat commands, and doesn't require extra privileges to
be granted or setup. Keys can also physically be conveyed to other
players, adding to gameplay and adding some personality that is
preferable to console commands or editing formspecs.

A skeleton key can be crafted with 1 gold ingot. Skeleton keys can
then be matched to a lockable node by right-clicking the skeleton
key on a lockable node, which changes the skeleton key to a "key".

Gold was chosen as it's currently a not-so very useful item, and
therefore it's likely that players have some, but aren't really
using it for any purpose.

This key can subsequently used by any player to open or access that
lockable node, including retrieving items from Locked Chests, or
putting items in them.

They key is programmed to fit only the particular locked node it is
programmed to. This is achieved by storing a secret value in both
key and locked node. If this secret value doesn't match, the key
will not open the locked node. This allows many keys to be created
for one chest or door, but a key will only fit one node ever. The
secrets are stored in node, and item meta for the key.

If a locked node is removed, all keys that opened it are no longer
valid. Even if a new door/chest is placed in exactly the same spot,
the old keys will no longer fit that node.

Keys can be smelted back in gold ingots if they are no longer useful.

The method of storing a secret in nodemeta and itemstackmeta is secure
as there is no way for the client to create new items on the server
with a particular secret metadata value. Even if you could possible
create such an itemstack on the client, the server does not ever read
itemstackmeta from a client package.

The patch adds an API that allows other nodes and nodes added by
mods to use the same keys as well. The method how to implement this
is described in game_api.txt. The mod should add 2 callbacks to it's
node definition. Example code is given.

Textures are from PixelBOX, thanks to Gambit.
2016-11-25 03:01:14 +00:00
Auke Kok
0bd2efcfc1 Merge 'torches' mod as default:torch.
This merges the current state of the well-maintained and tested
`torches` mod as I've maintained it for the last 6 months.

This started out as a thorough cleanup of 3D torches by blockmen,
where some of the initial code still remains.

The models were redone entirely from scratch and have been extensively
tested with dozens of animated textures converted with mcimport,
and look a lot better than the original 3D Torches mod.

The ceiling torch is retained and functional. The `wieldlight`
addition that the torches mod has was removed, since it relies
on wieldview to look decent. This can stay external mod code.

I've opted to move the torch nodes to a separate file. It's not
a lot of code but nodes.lua is already huge, and I wanted to
retain the copyright header and some of the readme.txt notes,
and this was the easiest way of doing it.

This code passes "default:torch" to nodes with on_rightclick,
fixing problems with itemframes. Essentially it has a more
elaborate item_place() routine to make sure we're not passing
the wall torch to nodes that may display it.

The ceiling torch is a separate model and not the same as the
floor model. That does mean that there are 3 models in this
mod.
2016-11-23 15:29:53 -08:00
paramat
ec95f47021 Default: Add water footstep sounds
Plus one silent sound to break repetition 'default_water_footstep.4.ogg'.
2016-11-21 03:19:37 +00:00
Auke Kok
1e691c4429 Carts: Merge boost_cart as "carts" mod
This is all the working code from SmallJoker's boost_cart, poored into
a more suitable form for minetest_game.

- Mesecons and moreores stuff was removed entirely.
- Textures were all renamed and moved out of default/
- Updated license, readme.txt, attribution
- Changed code license to MIT, left artwork at CC0
- removed default:rail and made aliases for it
- :carts:rail is now carts:rail.
- localized entity def
- removed copper rail entirely
- startstop rail was removed, as well as detector rail
- remodeled to b3d using stujones11 excellent blend model, but sizes
  of cart adjusted to make pixel sizes consistent (0.625) everywhere.
- slightly more complex texture map for the cart (front/side visibly
  different)
- rail parameters are passed as a separate def table, and stored in
  a private list. This avoids having to call `get_meta` on every
  node. In return, we need the node name, though.
- adds metal sounds (based on default metal sound function) and
  cart moving sound.
- reduced cart speeds to max 7, 5 by pushing.
- Added on_step() rail event handler, gets called when a cart is on
  a rail.
- Added various rebased updates from upstream (thanks Krock)
- Included a fix that removes the 'reverse jiggle' when stopping.
- Included reworked textures by sofar.

The mod namespace is still public, but I'm NOT declaring it an API. I'd
rather see it localized instead, for now. Any public interface in this
code is *experimental* at best, and should be considered non-stable and
unsupported for now.
2016-11-21 03:15:04 +00:00
paramat
c3f3406e8e Default: Add 'group:cools_lava' for lavacooling by snowblock and ice
Make lava cooling ABM use a new group 'group:cools_lava'.
Nodes other than water can cool lava. We assume snowblock and ice melt,
turn to water and cool lava.
Leave 'group:water' present temporarily to not break mod liquids.
2016-11-18 08:09:45 +00:00
sfan5
7fbf25d6ca Do not show item overlay if slot is occupied by item (bookshelf, vessels shelf) 2016-11-14 20:03:49 +01:00
paramat
ddea6c431e Default: Make snowblock change 'dirt with grass' below
To be consistent with the snow slab.
2016-11-10 08:10:34 +00:00
paramat
614e9cfe8d Default: Make snow walkable again 2016-11-10 08:10:29 +00:00
Wuzzy
6e00ddee2a Default, vessels: Darken shelf empty slot icons
Rename slot icons.
2016-11-07 14:32:35 +00:00
paramat
c7e2d59461 Default: Add 'acacia leaves simple' texture
A deeper, darker level of leaves is created by tiling the texture
2 by 2, reducing brightness and offsetting this.
For a denser leaf appearence with the 'simple leaves' setting.
Also used for acacia bush leaves.
2016-11-06 08:25:53 +00:00
paramat
178db04526 Default, flowers: Improve plant selection boxes
Selection box width is limited to 14 / 16 node to visually
distinguish box from any neighbouring cubic nodes.
2016-11-05 09:14:10 +00:00
Wuzzy
0acd9a2ccb Add icon overlay to shelf inventory slots 2016-10-30 15:32:43 -07:00
paramat
02a82c9d7a Default: Remove unnecessary leaf 'visual scale' 2016-10-29 14:44:00 +01:00
paramat
048aaa2616 Default: Add bush stem and leaves nodes
To allow mapgen bushes in green-grass and savanna grasslands.
Nodes for a generic bush and an acacia bush.
Stem nodes are craftable to a single wood node to provide a small
amount of wood resource in grasslands.
Fuel times are that of corresponding 'wood' nodes, 1/4 that of
corresponding tree nodes.
No leafdecay to enable use as hedges or without a nearby tree trunk.
Uses 'default leaves simple' texture for extra visual thickness.
2016-10-27 02:54:04 +01:00
Fernando Carmona Varo
3c9d71e6f7 Make flammable: Flowers, grasses and several crafitems 2016-10-25 02:37:36 +01:00
Auke Kok
fbac9be51c Change many metal nodes to use default metal sounds 2016-10-25 02:37:36 +01:00
paramat
3d26b33e5b Default: Add coral nodes and death ABM
Original code by Sofar.
Textures by Pithydon.
Exposure to air converts live coral to coral skeleton.
Live corals drop coral skeleton.
2016-10-12 23:55:46 +01:00
paramat
67fc2247fc Default: Add 'silver sand' for cold desert biome 2016-10-05 22:22:08 +01:00
paramat
c0de5646d2 Default: Generalise, optimise and simplify grass spread function
Credit to tenplus1 for the suggestion to generalise for mod use.
Mods can add mod nodes to 'group:spreading_dirt_type' enabling the
function to work with mod nodes.

Add some nodes to this group.

Removing 'dirt_with_grass' etc. from 'neighbors' stops the ABM action
running everywhere and constantly, on the dirt nodes immediately below
the surface nodes. Now the action only runs in the rare case of a dirt
node with neighbouring air, grass decorations or snow.

Remove check for air above to allow grass to spread under light-
transmitting nodes such as fences, walls, plants. This causes spread
under slabs, stairs and glass, when near air, but seems worth it.

Remove unnecessary check for nil node.
2016-10-01 23:15:05 +01:00
paramat
995256744a Default, stairs, doors: Vary wood flammable and choppy group values
Make the softer woods, pine and aspen, 'flammable = 3'.
Correct inconsistent flammability of wood and stairs in relation
to all other solid wood nodes in MTGame.
Make the the softer woods, pine and aspen, 'choppy = 3'.
2016-08-29 00:24:30 +01:00
pithydon
088385493a Default: Improve fences inventory/wield images 2016-08-20 04:27:48 +01:00
DonBatman
61a197ffd8 Changed snow nodebox to 'walkable = false'
Allows walking in, and prevents being trapped in, 2 node high spaces.
Simulates player's feet sinking into snow.
Easier jumping up onto nodes with snow.
2016-08-09 03:51:22 +01:00
paramat
0ac096991c Default: Prevent placing sapling if grown tree intersects protection
Add a global 'intersects protection' function to functions.lua for
checking if a specified volume intersects with a protected volume.
A 3D lattice of points are checked with an adjustable interval.
Add a global 'sapling on place' function to avoid duplicated code in
nodes.lua.
2016-07-27 21:39:22 +01:00
rubenwardy
3661cb61e3 Move nyancats into a separate mod
Nyancats are independent in the default mod. Nothing else uses them or
their code. Separating it into a separate mod makes it easier for
subgames to remove them. It also makes it easier for a mod to depend
on nyancats, as lots of subgames don't have them.

Default/mapgen.lua: Register biomes, ores and decorations in
singlenode mapgen. These were never disabled anyway because
singlenode was removed from the world creation menu.
2016-07-18 04:15:44 +01:00
Tim
71c7e21669 Always return the leftover ItemStack for on_place and on_rightclick 2016-07-09 16:32:41 +01:00
paramat
60f6564c75 Doors / default: Remove 'hot', 'bendy' and 'melty' groups from nodes 2016-07-07 18:14:36 +01:00
paramat
9d6df824d6 Default: Add stone / desert stone / sandstone / obsidian blocks 2016-06-25 06:58:18 +01:00
Auke Kok
ba1ae07b4a Default: Make brick and plank nodes rotatable
Allow many crafted nodes to be rotated in any way possible.

These blocks all have slab and stair versions, which can create awkward
patterns if placed together. By allowing these to be rotated players
can create new patterns and appearances that were not before possible.

Since this wasn't possible before, there won't be any effect
to existing builds, as param2 should always be '0'. The current
screwdriver mod also refuses to rotate and alter param2, so this is
safe to enable from now on.

Personally, since these are all *crafted* nodes to begin with, it
should be apparent that they can be rotated to begin with, but I can
see people may disagree from a simplicity perspective. It also may
affect param2 usage that other mods rely on, although I'm not aware
of any mods that do this.
2016-06-17 23:41:42 +01:00
paramat
37347d40f4 Default: Bookshelf has 2 openings instead of 4
Make rotatable with 'paramtype2 = facedir'
2016-05-28 15:11:43 +01:00
Auke Kok
e0cb3fce02 Default: Convert saplings to use node timers
Each sapling is given a single node timer that is between
2 and 4 days of game play time (40-80 minutes). If you walk out
of the zone, and come back later, the tree will always grow
to full if the timer has elapsed.

Because trees.lua is all functions, it needs to be parsed before
nodes.lua, since that references some of its functions. Hence,
change the order of parsing here. Otherwise saplings would not
grow to full.
2016-05-25 03:27:08 +01:00
paramat
90f24e312d Default: Remove unnecessary infotexts for chests and signs 2016-05-21 03:01:10 +01:00
paramat
8c3f96d738 Stairs/default: Make sandstone(brick) groups consistent
Sandstone is crumbly = 1 cracky = 3 to be slowly diggable by hand
Sandstonebrick(stair/slab) is cracky = 2
2016-05-05 23:46:53 +01:00
Foz
1a6298958e Default: Add function 'node_sound_gravel_defaults()' 2016-04-29 23:19:30 +01:00
Auke Kok
54b87e955d TNT: Add on_blast to all nodes with an inventory
Adds a minor helper function that allows efficient retrieval of
several inventories from a node inventory. We use this helper to
quickly retrieve the items in chests, vessel shelves, book shelves
and furnaces, and return these with the nodes itself to the TNT caller.

The TNT caller then performs the entity physics, and we don't need
to do anything else.

We disable TNT doing anything with bones.

We expose a bug in the code that drops the items - metadata was lost
entirely. This patch corrects that by properly copying the metadata
and creating the drops list inclusive metadata.
2016-04-26 22:33:59 +01:00
paramat
0ca43e42bc Default: Create 'grass', 'dry_grass' groups, use in dirt conversion ABM 2016-04-18 01:52:03 +01:00
tenplus1
6e1a329763 default: Strengthen obsidian glass Remove group 'oddly_breakable_by_hand' 2016-04-12 01:27:55 +01:00
Auke Kok
f4e77edcc6 Flood snow with either lava or water.
Fixes #1005

This doesn't flood snow or ice blocks.
2016-04-04 05:39:23 +01:00
Jean-Patrick Guerrero
12bcfeab4d Shelves: Fix listring functionality + code cleaning 2016-03-30 23:10:46 +01:00
Jean-Patrick Guerrero
c3d2bc383b Wooden Sign: Add group oddly_breakable_by_hand 2016-03-22 15:46:13 +00:00
paramat
7d55320d5c Default: Make some plant nodes non-flammable 2016-03-22 15:46:07 +00:00
Jean-Patrick Guerrero
28884cc784 Add flint and flint-and-steel 2016-03-15 16:22:42 +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
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
Jean-Patrick Guerrero
aa676ab878 Add steel sign + Update wooden sign texture 2016-03-09 02:44:27 +00:00
Jean-Patrick Guerrero
7f317871d4 Add steel ladder 2016-03-06 01:31:36 +00:00
MT-Modder
ac843f8fe7 Allow non-players to dig locked chests. 2016-03-03 00:37:01 +00:00
rubenwardy
42cc6d2c31 Add item name to chest log messages 2016-02-24 22:53:20 +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