forked from Minetest/dripstone
Update API.md
parent
b7af84645a
commit
2a6ffd9f92
124
API.md
124
API.md
|
@ -54,7 +54,7 @@ under can do this.
|
|||
Liquids can never be passed down to hardened dripstones.
|
||||
3. If the dripstone is a spike size, it can release the droplet downwards to the
|
||||
ground or to an object (such as a dripstone spike or a cauldron) that can catch
|
||||
the droplet. If there's no surface within 25 blocks, the droplet evaporates. If
|
||||
the droplet. If there's no surface within 50 blocks, the droplet evaporates. If
|
||||
there's a surface that is unable to catch the droplet, a new spike will grow on
|
||||
top, effectively forming a new stalagmite.
|
||||
|
||||
|
@ -85,17 +85,115 @@ Huge dripstone cannot be upgraded to a dripstone block, however.
|
|||
|
||||
## Lua modders
|
||||
|
||||
The following API functions are exposed for you to manipulate this mod with.
|
||||
Everything until this section has been an introduction to how the mod has
|
||||
implemented dripstone. However, you are welcome to make changes and add your
|
||||
own types!
|
||||
|
||||
- `noordstar_dripstone.add_lava_source(nodename)` Add a node name that the mod
|
||||
should consider a source of lava droplets above dripstone blocks.
|
||||
- `noordstar_dripstone.add_water_source(nodename)` Add a node name that the mod
|
||||
should consider a source of water droplets above dripstone blocks.
|
||||
- `noordstar_dripstone.add_lava_catcher(oldnodename, newnodename)` Register a
|
||||
node that can catch lava droplets to transform into a new node, such as a
|
||||
cauldron.
|
||||
- `noordstar_dripstone.add_water_catcher(oldnodename, newnodename)` Register a
|
||||
node that can catch water droplets to transform into a new node, such as a
|
||||
cauldron.
|
||||
Matter of fact, everything until this section has been written using this
|
||||
publicly available mod. So take a look at [the init.lua file](init.lua) if
|
||||
you'd prefer to look at a real example.
|
||||
|
||||
All input values are strings in this API.
|
||||
This mod uses **droplets** to build the dripstone. These are incredibly tiny
|
||||
drops of liquid that flow down a dripstone. Currently, there are two
|
||||
types in use: `water` and `lava`.
|
||||
|
||||
### noordstar_dripstone.register_droplet(droplet)
|
||||
|
||||
Every droplet type is a unique string. Different droplets interact uniquely
|
||||
with different dripstones.
|
||||
|
||||
```lua
|
||||
noordstar_dripstone.register_droplet("magma")
|
||||
noordstar_dripstone.register_droplet("mercury")
|
||||
noordstar_dripstone.register_droplet("mineral_water")
|
||||
```
|
||||
|
||||
### noordstar_dripstone.add_droplet_source(droplet, nodename)
|
||||
|
||||
In order to let droplets stream down dripstone nodes, you need to define which
|
||||
nodes a full dripstone block can absorb liquid from. Absorbing liquid does not
|
||||
affect the liquid node: this mod creates a way for players to duplicate liquid
|
||||
nodes.
|
||||
|
||||
Generally, you are recommended to use liquid source blocks to create droplets.
|
||||
However, you don't need to do this! You could use any node, as long as it has a
|
||||
name.
|
||||
|
||||
```lua
|
||||
noordstar_dripstone.add_droplet_source("water", "mymod:swamp_water_source")
|
||||
```
|
||||
|
||||
### noordstar_dripstone.add_droplet_catcher(droplet, oldnodename, newnodename)
|
||||
|
||||
Similarly, on the other side of the dripstone, you can create a catcher that
|
||||
can catch any of the liquid drops dripping down. You can use this to create
|
||||
orchids, or to create other interactions with nodes that might change from a
|
||||
tiny bit of liquid.
|
||||
|
||||
```lua
|
||||
noordstar_dripstone.add_droplet_catcher("water", "mymod:cauldron_empty", "mymod:water_cauldron")
|
||||
noordstar_dripstone.add_droplet_catcher("water", "mymod:dirt", "mymod:farmland")
|
||||
noordstar_dripstone.add_droplet_catcher("lava", "mymod:precious_orchid", "mymod:dead_bush")
|
||||
```
|
||||
|
||||
### noordstar_dripstone.register_dripstone(flavor, def)
|
||||
|
||||
You can define your own dripstone type. You need to pick a flavor (which you
|
||||
shouldn't namespace) and you need to offer a dripstone definition, which is
|
||||
defined as follows:
|
||||
|
||||
```
|
||||
{
|
||||
-- What item is dropped when the dripstone is broken.
|
||||
-- When left nil, the spike of the dripstone type is dropped.
|
||||
drop = "dry"
|
||||
|
||||
-- What flavor to become when using liquid to grow.
|
||||
-- Leave to nil when unable to grow.
|
||||
grow_to = "dry"
|
||||
|
||||
-- When receiving a droplet of a given type, transform into a different
|
||||
-- dripstone type. When a droplet is unspecified, the block cannot
|
||||
-- receive the droplet.
|
||||
on_droplet_receive = {
|
||||
water = "watered",
|
||||
lava = "molten",
|
||||
}
|
||||
|
||||
-- Sounds that the dripstone makes
|
||||
sounds = <standard sound definition for a node>
|
||||
|
||||
-- Node tiles for layout
|
||||
tiles = <node tile layout>
|
||||
|
||||
-- Droplet type that the dripstone flavor can pass down.
|
||||
-- When the droplet is passed down, the dripstone converts to the
|
||||
-- "grow_to" type
|
||||
trickle_down = "water"
|
||||
|
||||
-- Speed of how often a droplet trickles down.
|
||||
trickle_speed = 5
|
||||
}
|
||||
```
|
||||
|
||||
For examples, refer to [this mod's init.lua file](init.lua).
|
||||
|
||||
### noordstar_dripstone.size_to_name(flavor, size)
|
||||
|
||||
Lastly, this function serves as a tool to help you find the node name of a
|
||||
dripstone of a given flavor and size. Remember that dripstone size range from 1
|
||||
to 8.
|
||||
|
||||
```lua
|
||||
noordstar_dripstone.size_to_name("dry", 1)
|
||||
-- Returns "noordstar_dripstone:dry_dripstone_spike"
|
||||
|
||||
noordstar_dripstone.size_to_name("lol", 3)
|
||||
-- Returns "noordstar_dripstone:small_lol_dripstone"
|
||||
|
||||
noordstar_dripstone.size_to_name("cool", 8)
|
||||
-- Returns "noordstar_dripstone:cool_dripstone_block"
|
||||
```
|
||||
|
||||
Note how the function even returns a string if the dripstone type hasn't been
|
||||
registered.
|
||||
|
|
Loading…
Reference in New Issue