Commit Graph

56 Commits

Author SHA1 Message Date
Wuzzy
6910c8d920
Fix number of tool uses being off by 1..32767 (#11110) 2021-10-31 22:33:33 +00:00
sfan5
660e63dbae
Fix item duplication if player dies during interact callback (alternative) (#11662) 2021-10-25 20:30:27 +02:00
Treer
149d8fc8d6
Add group-based tool filtering for node drops (#10141)
Supports both AND and OR requirements, e.g.

 * "a tool that's in any of these groups"
 * "a tool that's in all of these groups"
2021-08-27 20:23:20 +02:00
DS
8f085e02a1
Add metatables to lua vectors (#11039)
Add backwards-compatible metatable functions for vectors.
2021-06-04 21:22:33 +02:00
Vitaliy
3b78a22371
Degrotate support for mesh nodes (#7840) 2021-03-30 00:25:11 +02:00
rubenwardy
4db7fb4a3b Replace 'minetest.' with 'core.' in builtin 2021-02-11 10:18:22 +00:00
rubenwardy
6e0e0324a4
Fix minetest.dig_node returning true when node isn't diggable (#10890) 2021-01-31 18:49:51 +00:00
sfan5
edd8c3c664 Drop never documented 'alpha' property from nodedef
Includes minimal support code for practical reasons.
We'll need it for a slightly different purpose next commit.
2021-01-29 17:34:41 +01:00
Zughy
45ccfe26fb
Removed some obsolete code (#10562)
Co-authored-by: Zughy <4279489-marco_a@users.noreply.gitlab.com>
2021-01-21 18:17:09 +00:00
sfan5
61bbdd6807 Copy position for can_dig
fixes #10514
2020-11-12 21:08:26 +01:00
Wuzzy
65a6a316d0 Add minetest.is_creative_enabled 2020-05-29 22:45:40 +02:00
SmallJoker
27d611fe55
Add default stack size setting (#8873)
New setting "default_stack_max" to alter the default stack sizes of all items when desired.

Co-authored-by: Pascal Abresch <nep@packageloss.eu>
2020-04-13 10:53:10 +02:00
SmallJoker
3f675490df Builtin: Fix error by digging unknown nodes 2020-02-16 14:13:52 +01:00
sfan5
7d29611c1b Convert sound_play uses in builtin to ephemeral 2020-02-01 20:31:41 +01:00
sfan5
c10e188594 Let node 'place' and 'dug' sounds be heard by other players 2020-02-01 20:31:41 +01:00
Wuzzy
876a15bd75 Fix item eat sound not played if last item (#9239) 2019-12-24 19:12:46 +01:00
Bluebird
80af58c8c5 Make core.item_place_node return position of placed node. (#7713) 2019-12-18 19:21:24 +01:00
sfan5
db7e59f472 Correct documentation around minetest.item_place
The code that calls minetest.item_place_object was removed
in 2013 in commit fc61c8809b9a1d47d9f117446764107a56cec956.
2019-12-16 21:24:34 +01:00
rubenwardy
8e757859d6
Add luacheck to check builtin (#7895) 2019-08-06 19:30:18 +01:00
SmallJoker
47492386ec
Docs: Clarify where to check for 'protection_bypass' (#8675) 2019-07-14 13:23:38 +02:00
Wuzzy
5560ec8178 Add eat sound (#7956) 2018-12-10 09:25:47 +01:00
tenplus1
a4f41e7bfc get_node_drops: Make empty drop return empty table (#7592)
This stops get_node_drops from returning an empty string when using drop = "" and instead returns the supposed empty table instead {}
2018-08-30 20:32:33 +02:00
SmallJoker
ade7a1cbcf
Builtin: Replace deprecated function calls (#7561) 2018-07-17 20:17:54 +02:00
SmallJoker
8f827ee680
core.rotate_node: Do not trigger after_place_node (#6900) 2018-03-29 21:44:13 +02:00
ashtrayoz
abd8a30c05 Add callback to preserve node metadata as item metadata 2017-12-14 20:54:04 +00:00
SmallJoker
b19241b9bc Builtin: Fix handle_node_drops crash with nil digger 2017-12-12 19:19:04 +01:00
raymoo
a5d5728f24 Fix default item callbacks to work with nil users (#5819)
* Fix default item callbacks to work with nil users

* item.lua: Handle node drops for invalid players

The if-condition for the dropping loop is the same as `inv`, which means that the 2nd possible definition of `give_item` is never used.
Remove redundant `local _, dropped_item`
2017-10-28 10:30:50 +02:00
Paramat
604fe2083d Item drop: Tune to land exactly 2 nodes away with level view (#6410) 2017-09-13 00:01:50 +02:00
rubenwardy
ad9677a14f Check item_drop amount clientside (#6242) 2017-08-26 08:11:59 +02:00
Dániel Juhász
71b02d626f Make dropped items colorable 2017-08-14 12:52:13 +01:00
Dániel Juhász
5a41a98ff6 Helper methods for hardware colorization (#5870) 2017-06-24 20:15:09 +02:00
Dániel Juhász
0fcaf9fb1b Automatic item and node colorization (#5640)
* Automatic item and node colorization

Now nodes with a palette yield colored item stacks, and colored items
place colored nodes by default. The client predicts the colorization.

* Backwards compatibility

* Use nil

* Style fixes

* Fix code style

* Document changes
2017-06-20 11:19:56 +02:00
ShadowNinja
43d1f375d1 Use a settings object for the main settings
This unifies the settings APIs.

This also unifies the sync and async registration APIs, since the async
registration API did not support adding non-functions to the API table.
2017-05-06 15:33:19 -04:00
Auke Kok
b539985ab8 Fix two nul deref if digging unknown nodes. (#5398)
Introduced by d785456b3fa35faf47cb972fde9e8668382c5e22 (#5162)
2017-03-15 08:04:53 +01:00
tenplus1
d785456b3f Optimize item.lua
Replace slow ItemStack get_definitions with registered_nodes one's and cached playername as it's used multiple times.  Also removed local item = itemstack:peek_item() as it is never used.
2017-03-10 11:24:10 -08:00
Dániel Juhász
00123ee04d Fixes for colorwallmounted and colorfacedir nodes
Correct node placement prediction for attached colorwallmounted nodes.
Correct placement direction for colorfacedir and colorwallmounted nodes.
Correct detatch mechanism for attached colorwallmounted nodes.
2017-02-18 22:47:24 +00:00
Nathanaël Courant
3e355ab7d5 Make facedir_to_dir and wallmounted_to_dir work with coloured nodes as well. (#5153) 2017-01-31 15:02:30 -08:00
Auke Kok
7fc6719968 core: Add dir_to_yaw and yaw_to_dir helpers
These are needed to go from things like entity yaw to a vector
and vice versa.
2017-01-23 07:38:39 +00:00
paramat
c6ca7a81cc Tool break: Reduce gain of break sounds 2016-11-20 04:43:09 +00:00
Auke Kok
4a0a6723af Builtin/../item: Enable tool breaking sounds
If a tool wears out and is destroyed, it's itemstack count
goes to 0, and we can optionally play a breaking sound.

This patch implements playing a breaking sound when this
occurs. Sounds need to be added to the tool itemdef
registration as the sound name string in the .sound.breaks
member.
2016-11-18 06:15:08 +00:00
est31
afc48c802a Introduce builtin_shared and use it to fix #4778
Fixes #4778 which was about the error:

ServerError: Lua: Runtime error from mod '' in callback item_OnPlace():
/usr/local/share/minetest/builtin/game/item.lua:278: attempt to call global 'check_attached_node' (a nil value)

The issue was a regression of commit 649448a2a91fbf3e944b2f2e739f4e2292af1df0

"Rename nodeupdate and nodeupdate_single and make them part of the official API"
2016-11-16 18:51:36 +01:00
Auke Kok
39a9e9874e Builtin/game/item: Add place_param2 nodedef field
This allows a nodedef to specify a fixed value for param2 to be
used for all normal placements.

There are several uses for this:

- nodes that require param2 to be set to a non-zero value for
  internal mod use. E.g. leafdecay could use this to detect that
  leaves are played by players.
- force wallmounted or facedir value at placement at placement

This overrides any player look direction or other on-the-fly
param2 setting during placement.
2016-06-17 04:41:20 +01:00
Auke Kok
f627ef39e0 Introduce "protection_bypass" privilege.
This privilege allows map protection bypassing for server operators
and world moderators.

Initially I had thought that bypassing protection mods would have been
something that could entirely be done inside mods and minetest_game,
but the concept of protection is defined in core, in the code of
core.is_protected().

I don't feel that it would be logical to introduce a protection
concept in core, but not some way around that for server operators
to maintain map parts that need fixing, de-griefing or cleanup.

Others had noticed the same problems, and proposed a patch to
minetest_game. That patch is fine by itself, but it fails to add
protection bypass functionality for digging normal nodes and placing
nodes.

So, instead, we indroduce the new priv "protection_bypass" in core,
and modify 'on_place_node' and 'node_dig' to allow bypassing node
protections if the player holds this priv.

This priv was tested with protector redo by tenplus1.

A followup patch to Minetest Game will include allowing special checks
for doors, trapdoors, chests in Minetest Game.

Protection mods will likely want to mimic the changes in their relevant
code sections.
2016-03-11 21:09:53 +00:00
Diego Martinez
13dd7959db Initialize facedir and wallmounted tables only once.
This makes the functions a bit faster since they don't
have to recreate the tables every invocation, and makes
the code more readable.

Also, document `wallmounted_to_dir`.

The function was implemented but not documented in `lua_api.txt`.
2016-02-11 04:23:17 +00:00
paramat
0bbbc6e13d Liquids: Flow into and destroy 'floodable' nodes
Add new node property 'floodable', default false
Define "air" as floodable = true in C++ and lua
2016-01-07 05:57:19 +00:00
HybridDog
5755c9a439 Fix missing localization for obj 2015-12-20 16:25:33 +01:00
Alex Ford
97908cc656 Add on_secondary_use when right clicking an item in the air 2015-12-02 02:18:44 +00:00
Robert Zenz
0876623aed Add the player name to dropped items
The player name is now added in the field "dropped_by" on the created
entity.
2015-11-12 00:47:11 +01:00
Fernando Carmona Varo
b12bdcce34 Added minetest.wallmounted_to_dir 2015-10-04 03:19:18 +02:00
est31
2a7d01b833 Some map border related fixes
1. Check for entity addition success in spawn_item implementation
2. Check for success in item_drop callback, so that the player
doesn't lose the item if they are outside bounds and try to drop it.
3. When existing player joins game, check that their position is inside
map bounds. If not, set their position to the return value of findSpawnPos().
4. Make findSpawnPos() respect the border

2 fixes a lua crash if a player drops an item outside map bounds.
3 fixes an assertion crash if a player leaves when being outside map bounds,
and then rejoins.
2015-09-29 23:06:15 +02:00