MineClone2/mods/ITEMS/mcl_bone_meal/API.md
kabou 3889abbaf4 Add mcl_bone_meal.
* New mod mcl_bone_meal, replacing bone meal functionality previously
  held in mcl_dye.
* Improve bonemealing API using callbacks in the nodes that support
  bonemealing.
* Rename bone meal item to `"mcl_bone_meal:bone_meal"` and updated its
  crafting recipe.
* Implement legacy compatibility for older bone meal API.
* Remove all non dye-related bone meal code, texture and translations from
  mcl_dye.
* Add legacy compatibility shims to mcl_dye that refer to mcl_bone_meal.
* Add an alias for "mcl_dye:white" to keep mcl_dye and its API working
  uniterrupted.
* Update mod depends in mcl_dye mod.conf.
2024-11-09 20:24:02 -06:00

2.1 KiB

Bone meal API

Bonemealing callbacks and particle functions.

_mcl_on_bonemealing(pointed_thing, placer)

The bone meal API provides a callback definition that nodes can use to register a handler that is executed when a bone meal item is used on it.

Nodes that wish to use the bone meal API should in their node registration define a callback handler named _mcl_on_bonemealing. This handler is a

function(pointed_thing, placer)

Its arguments are:

  • pointed_thing: exact pointing location (see Minetest API), where the bone meal is applied
  • placer: ObjectRef of the player who aplied the bone meal, can be nil!

The function should return true if the bonemealing was succesful.

It is for all intents and purposes up to the callback defined in the node to decide how to handle the effect that bone meal has on that particular node.

The on_place code in the bone meal item will spawn bone meal particles and decrease the bone meal itemstack if the handler returned true and the placer is not in creative mode.

mcl_bone_meal.add_bone_meal_particle(pos, def)

Spawns standard or custom bone meal particles.

  • pos: position, is ignored if you define def.minpos and def.maxpos
  • def: (optional) particle definition; see minetest.add_particlespawner() for more details.

Legacy API

The bone meal API also provides a legacy compatibility function. This function is not meant to be continued and callers should migrate to the newer bonemealing API.

mcl_bone_meal.register_on_bone_meal_apply(function(pointed_thing, placer))

Called when the bone meal is applied anywhere.

  • pointed_thing: exact pointing location (see Minetest API), where the bone meal is applied
  • placer: ObjectRef of the player who aplied the bone meal, can be nil! This function is deprecated and will be removed at some time in the future.

mcl_dye.add_bone_meal_particle(pos, def)

mcl_dye.register_on_bone_meal_apply(function(pointed_thing, user))

These shims in mcl_dye that point to corresponding legacy compatibility functions in mcl_bone_meal remain for legacy callers that have not yet been updated to the new API. These shims will be removed at some time in the future.