1
0
Fork 0

Compare commits

...

8 Commits

5 changed files with 334 additions and 140 deletions

101
API.md Normal file
View File

@ -0,0 +1,101 @@
# Dripstone API manual
The dripstone behavior in this mod differs from games like Minecraft by adding
more complexity in a context agnostic manner. This means that in comparison to
a game like Minecraft:
- This dripstone is **computationally very cheap**, as it doesn't care whether
it's part of a stalactite, stalagmite or neither.
- This dripstone grows in **more accurate shapes**, forming more complex shapes
that occur in nature too.
- This dripstone doesn't know whether it is part of a stalactite or stalagmite,
so it **doesn't support falling stalactites**.
![Dripstone demonstration showing various complex shapes](textures/dripstone_example.png)
## Composition
Dripstone has 4 dripstone types:
- Dry dripstone, which is the default type.
- Watered dripstone, which has absorbed water.
- Molten dripstone, which has absorbed lava.
- Hardened dripstone, which has absorbed water & lava at the same time.
Dripstone has 8 different sizes:
- A base dripstone block
- 7 dripstone spike shapes that can grow in height and thickness.
As you can see in the image below, shape sizes from smallest to largest are
spike, tiny, small, medium, great, large, huge, and block.
![Classification of all 32 dripstone nodes](textures/dripstone_classification.png)
From left to right, the dripstone types are dry dripstone, watered dripstone,
molten dripstone and hardened dripstone.
## Dry dripstone
Dry dripstone is the base dripstone type. All dripstone types mimick this type
with a few minor changes.
Dry dripstone blocks are the only type that can absorb liquids. When doing so,
they become watered or molten dripstone blocks.
## Watered & molten dripstone
Dripstone that has absorbed water or lava, can use it for three things. Once it
has done either of the three following options, the dripstone becomes dry.
1. The dripstone can use it to grow 1 size. Only dripstone of size 6 (Large) and
under can do this.
2. The dripstone can pass the liquid down to a dripstone directly below it.
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
there's a surface that is unable to catch the droplet, a new spike will grow on
top, effectively forming a new stalagmite.
Since dripstone blocks are the only blocks that can absorb liquids, they
function as a sprinkler that grows both the stalactite and stalagmite beneath
it.
**Note:** It is impossible to grow new dripstone blocks using dripstone blocks.
As a result, you must either build your dripstone/lava/water farm in a cave, or
you need to acquire silk touch to be able to break, move and place the dripstone
blocks.
## Hardened dripstone
Similar to how unbreakable a block of obsidian is when lava & water mix,
hardened dripstone is a tough, less breakable type of dripstone that occurs when
a dripstone absorbs both watetr & lava before drying up.
Hardened dripstone cannot grow, it cannot absorb water or pass it on.
## Crafting
Dripstone blocks cannot be crafted.
All other sizes can be crafted using dripstone spikes. You can upgrade a
dripstone item by surrounding it with (the same type of) dripstone spikes.
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.
- `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.
All input values are strings in this API.

View File

@ -4,6 +4,9 @@ This Minetest mod adds dripstone to Minetest.
![Dripstone in various shapes and forms, absorbing water and lava](textures/noordstar_dripstone_preview.png)
You can read the [API manual](API.md) for an extensive explanation on how the
dripstone works in this mod.
## Contribute
You can contribute by making pull requests or by reaching out to me

370
init.lua
View File

@ -1,50 +1,11 @@
noordstar_dripstone = {
-- Nodes that the mod should consider as sources to extract water from
water_nodes =
{ "default:river_water_source"
, "default:water_source"
, "mcl_core:water_source"
, "mclx_core:river_water_source"
}
-- Nodes that the mod should consider as sources to extract lava from
, lava_nodes =
{ "default:lava_source"
, "mcl_core:lava_source"
}
}
local modpath = minetest.get_modpath(minetest.get_current_modname())
local function load(module_name)
return dofile(modpath .. "/lua/" .. module_name .. ".lua")
end
local function schem(module_name)
return dofile(modpath .. "/schematics/" .. module_name .. ".lua")
end
-- Create a node box for any given dripstone size.
-- Size 8 is a normal block size
local function nodebox_of_size(size)
return {
type = "fixed",
fixed = {
{ - size / 16, -0.5, - size / 16, size / 16, 0.5, size / 16 },
},
}
end
-- Sounds
local dripstone_sounds = nil
if mcl_sounds then
dripstone_sounds = mcl_sounds.node_sound_stone_defaults()
end
noordstar_dripstone = {}
-- Constants
local speed_factor = 30
local seconds_per_growth = 10 * speed_factor
local seconds_per_trickle = 1 * speed_factor
local samples_per_interval = 10
local seconds_per_water_trickle = 1 * speed_factor
local seconds_per_lava_trickle = 6 * speed_factor
local samples_per_interval = 30
-- Namespaced node names
local dry_dripstone_block = "noordstar_dripstone:dripstone_block"
@ -80,6 +41,82 @@ local watered_dripstone_small = "noordstar_dripstone:small_watered_dripstone"
local watered_dripstone_tiny = "noordstar_dripstone:tiny_watered_dripstone"
local watered_dripstone_spike = "noordstar_dripstone:watered_dripstone_spike"
local internal = {
-- Nodes that the mod should consider as sources to extract water from
water_nodes =
{ "default:river_water_source"
, "default:water_source"
, "mcl_core:water_source"
, "mclx_core:river_water_source"
},
-- Nodes that the mod should consider as sources to extract lava from
lava_nodes =
{ "default:lava_source"
, "mcl_core:lava_source"
},
-- Nodes that can catch a lava droplet instead of letting a spike grow on top
lava_cauldrons = {
{ from = dry_dripstone_spike, to = molten_dripstone_spike },
{ from = "mcl_cauldrons:cauldron", to = "mcl_cauldrons:cauldron_1_lava" },
{ from = "mcl_cauldrons:cauldron_1_lava", to = "mcl_cauldrons:cauldron_2_lava" },
{ from = "mcl_cauldrons:cauldron_2_lava", to = "mcl_cauldrons:cauldron_3_lava" },
},
-- Nodes that can catch a water droplet instead of letting a spike grow on top
water_cauldrons = {
{ from = dry_dripstone_spike, to = watered_dripstone_spike },
{ from = "mcl_cauldrons:cauldron", to = "mcl_cauldrons:cauldron_1" },
{ from = "mcl_cauldrons:cauldron_1", to = "mcl_cauldrons:cauldron_2" },
{ from = "mcl_cauldrons:cauldron_2", to = "mcl_cauldrons:cauldron_3" },
}
}
function noordstar_dripstone.add_lava_source(nodename)
table.insert(internal.lava_nodes)
end
function noordstar_dripstone.add_water_source(nodename)
table.insert(internal.water_nodes, nodename)
end
function noordstar_dripstone.add_lava_catcher(nodename, newnodename)
table.insert(internal.lava_cauldrons, { from = nodename, to = newnodename })
end
function noordstar_dripstone.add_water_catcher(nodename, newnodename)
table.insert(internal.water_cauldrons, { from = nodename, to = newnodename })
end
-- Create a node box for any given dripstone size.
-- Size 8 is a normal block size
local function nodebox_of_size(size)
if size >= 8 then
return nil
else
return {
type = "fixed",
fixed = {
{ - size / 16, -0.5, - size / 16, size / 16, 0.5, size / 16 },
},
}
end
end
local function nodebox_type(size)
if size >= 8 then
return "normal"
else
return "nodebox"
end
end
-- Sounds
local dripstone_sounds = nil
if mcl_sounds then
dripstone_sounds = mcl_sounds.node_sound_stone_defaults()
end
-- Trickle down config
local lava_trickle_down = {
@ -158,20 +195,8 @@ local water_trickle_down_spike = {
{ from = molten_dripstone_spike, to = hardened_dripstone_spike },
}
local lava_drop_down = {
{ from = dry_dripstone_spike, to = molten_dripstone_spike },
{ from = "mcl_cauldrons:cauldron", to = "mcl_cauldrons:cauldron_1_lava" },
{ from = "mcl_cauldrons:cauldron_1_lava", to = "mcl_cauldrons:cauldron_2_lava" },
{ from = "mcl_cauldrons:cauldron_2_lava", to = "mcl_cauldrons:cauldron_3_lava" },
}
local water_drop_down = {
{ from = dry_dripstone_spike, to = watered_dripstone_spike },
{ from = "mcl_cauldrons:cauldron", to = "mcl_cauldrons:cauldron_1" },
{ from = "mcl_cauldrons:cauldron_1", to = "mcl_cauldrons:cauldron_2" },
{ from = "mcl_cauldrons:cauldron_2", to = "mcl_cauldrons:cauldron_3" },
}
-- Tiles for dripstone
local dry_dripstone_tiles =
{ "noordstar_dripstone_dripstone_top.png"
, "noordstar_dripstone_dripstone_top.png"
@ -193,78 +218,41 @@ local watered_dripstone_tiles =
, "noordstar_dripstone_watered_dripstone_side.png"
}
-- BASE BLOCKS
-- These blocks are able to absorb water or lava from above them.
-- Register dripstone nodes
minetest.register_node(dry_dripstone_block,
{ description = "Dripstone block"
, _doc_items_longdesc = "Dripstone block that can suck up liquids above it and creates stalactites below it."
, tiles = dry_dripstone_tiles
, drawtype = "normal"
, groups = { pickaxey=2, material_stone=1 }
, is_ground_content = true
, drop = dry_dripstone_spike
, sounds = dripstone_sounds
, _mcl_hardness = 2
, _mcl_blast_resistance = 5
, _mcl_silk_touch_drop = true
}
)
minetest.register_node(hardened_dripstone_block,
{ description = "Hardened dripstone block"
, _doc_items_longdesc = "Dripstone block that is no longer able to absorb liquids above it."
, tiles = hardened_dripstone_tiles
, drawtype = "normal"
, groups = { pickaxey=2, material_stone=1 }
, is_ground_content = true
, drop = dry_dripstone_spike
, sounds = dripstone_sounds
, _mcl_hardness = 2
, _mcl_blast_resistance = 5
, _mcl_silk_touch_drop = true
}
)
minetest.register_node(molten_dripstone_block,
{ description = "Molten dripstone block"
, _doc_items_longdesc = "A dripstone block that has absorbed some lava, allowing it to form a stalactite."
, tiles = molten_dripstone_tiles
, drawtype = "normal"
, groups = { pickaxey=2, material_stone=1 }
, is_ground_content = true
, drop = dry_dripstone_spike
, sounds = dripstone_sounds
, _mcl_hardness = 2
, _mcl_blast_resistance = 5
, _mcl_silk_touch_drop = true
}
)
minetest.register_node(watered_dripstone_block,
{ description = "Watered dripstone block"
, _doc_items_longdesc = "A dripstone block that has absorbed some water, allowing it to form a stalactite."
, tiles = watered_dripstone_tiles
, drawtype = "normal"
, groups = { pickaxey=2, material_stone=1 }
, is_ground_content = true
, drop = dry_dripstone_spike
, sounds = dripstone_sounds
, _mcl_hardness = 2
, _mcl_blast_resistance = 5
, _mcl_silk_touch_drop = true
}
)
local function make_dripstone(name, desc, longdesc, tiles, drop, size)
local sunlight_propagates = nil
if size < 8 then
sunlight_propagates = true
end
local function make_dripstone(name, desc, longdesc, tiles, size)
minetest.register_node(name,
{ description = desc
, _doc_items_longdesc = longdesc
, tiles = tiles
, groups = { pickaxey=2, material_stone=1 }
, groups = { pickaxey=2, material_stone=1, fall_damage_add_percent = math.max(4 - size, 0) / 4 * 100 }
, is_ground_content = true
, drop = dry_dripstone_spike
, drop = {
max_items = math.floor((size + 1) / 2),
items = {
{ rarity = 1
, items = { drop }
},
{ rarity = 2
, items = { drop }
},
{ rarity = 4
, items = { drop }
},
{ rarity = 4
, items = { drop }
},
}
}
, sounds = dripstone_sounds
, drawtype = "nodebox"
, drawtype = nodebox_type(size)
, paramtype = "light"
, sunlight_propagates = true
, sunlight_propagates = sunlight_propagates
, node_box = nodebox_of_size(size)
, _mcl_hardness = 1.0 + size / 8
, _mcl_blast_resistance = 1 + size / 2
@ -273,6 +261,42 @@ local function make_dripstone(name, desc, longdesc, tiles, size)
)
end
-- BASE BLOCKS
-- These blocks are able to absorb water or lava from above them.
make_dripstone(
dry_dripstone_block,
"Dripstone block",
"Dripstone block that can suck up liquids above it and creates stalactites below it.",
dry_dripstone_tiles,
dry_dripstone_spike,
8
)
make_dripstone(
hardened_dripstone_block,
"Hardened dripstone block",
"Dripstone block that is no longer able to absorb liquids above it.",
hardened_dripstone_tiles,
dry_dripstone_spike,
8
)
make_dripstone(
molten_dripstone_block,
"Molten dripstone block",
"A dripstone block that has absorbed some lava, allowing it to form a stalactite.",
molten_dripstone_tiles,
dry_dripstone_spike,
8
)
make_dripstone(
watered_dripstone_block,
"Watered dripstone block",
"A dripstone block that has absorbed some water, allowing it to form a stalactite.",
watered_dripstone_tiles,
dry_dripstone_spike,
8
)
-- HUGE DRIPSTONE
-- This is the largest form a non-block can get.
@ -281,6 +305,7 @@ make_dripstone(
"Huge dripstone",
"Dripstone in the largest shape it can reach.",
dry_dripstone_tiles,
dry_dripstone_spike,
7
)
make_dripstone(
@ -288,6 +313,7 @@ make_dripstone(
"Huge hardened dripstone",
"Dripstone in the largest shape it can reach. It is no longer able to grow or absorb liquids.",
hardened_dripstone_tiles,
hardened_dripstone_spike,
7
)
make_dripstone(
@ -295,6 +321,7 @@ make_dripstone(
"Huge molten dripstone",
"Dripstone in the largest shape it can reach. It has absorbed some lava, but it can no longer grow in thickness.",
molten_dripstone_tiles,
dry_dripstone_spike,
7
)
make_dripstone(
@ -302,6 +329,7 @@ make_dripstone(
"Huge watered dripstone",
"Dripstone in the largest shape it can reach. It has absorbed some water, but it can no longer grow in thickness.",
watered_dripstone_tiles,
dry_dripstone_spike,
7
)
@ -312,6 +340,7 @@ make_dripstone(
"Large dripstone",
"A thick layer of dripstone.",
dry_dripstone_tiles,
dry_dripstone_spike,
6
)
make_dripstone(
@ -319,6 +348,7 @@ make_dripstone(
"Large hardened dripstone",
"A thick layer of dripstone. It is no longer able to grow or absorb liquids.",
hardened_dripstone_tiles,
hardened_dripstone_spike,
6
)
make_dripstone(
@ -326,6 +356,7 @@ make_dripstone(
"Large molten dripstone",
"A thick layer of dripstone. It has absorbed some lava, so it is able to grow in thickness.",
molten_dripstone_tiles,
dry_dripstone_spike,
6
)
make_dripstone(
@ -333,6 +364,7 @@ make_dripstone(
"Large watered dripstone",
"A thick layer of dripstone. It has absorbed some water, so it is able to grow in thickness.",
watered_dripstone_tiles,
dry_dripstone_spike,
6
)
@ -343,6 +375,7 @@ make_dripstone(
"Great dripstone",
"A thick layer of dripstone.",
dry_dripstone_tiles,
dry_dripstone_spike,
5
)
make_dripstone(
@ -350,6 +383,7 @@ make_dripstone(
"Great hardened dripstone",
"A thick layer of dripstone. It is no longer able to grow or absorb liquids.",
hardened_dripstone_tiles,
hardened_dripstone_spike,
5
)
make_dripstone(
@ -357,6 +391,7 @@ make_dripstone(
"Great molten dripstone",
"A thick layer of dripstone. It has absorbed some lava, so it is able to grow in thickness.",
molten_dripstone_tiles,
dry_dripstone_spike,
5
)
make_dripstone(
@ -364,6 +399,7 @@ make_dripstone(
"Great watered dripstone",
"A thick layer of dripstone. It has absorbed some water, so it is able to grow in thickness.",
watered_dripstone_tiles,
dry_dripstone_spike,
5
)
@ -374,6 +410,7 @@ make_dripstone(
"Medium dripstone",
"A thick layer of dripstone.",
dry_dripstone_tiles,
dry_dripstone_spike,
4
)
make_dripstone(
@ -381,6 +418,7 @@ make_dripstone(
"Medium hardened dripstone",
"A thick layer of dripstone. It is no longer able to grow or absorb liquids.",
hardened_dripstone_tiles,
hardened_dripstone_spike,
4
)
make_dripstone(
@ -388,6 +426,7 @@ make_dripstone(
"Medium molten dripstone",
"A thick layer of dripstone. It has absorbed some lava, so it is able to grow in thickness.",
molten_dripstone_tiles,
dry_dripstone_spike,
4
)
make_dripstone(
@ -395,6 +434,7 @@ make_dripstone(
"Medium watered dripstone",
"A thick layer of dripstone. It has absorbed some water, so it is able to grow in thickness.",
watered_dripstone_tiles,
dry_dripstone_spike,
4
)
@ -405,6 +445,7 @@ make_dripstone(
"Small dripstone",
"A thick layer of dripstone.",
dry_dripstone_tiles,
dry_dripstone_spike,
3
)
make_dripstone(
@ -412,6 +453,7 @@ make_dripstone(
"Small hardened dripstone",
"A thick layer of dripstone. It is no longer able to grow or absorb liquids.",
hardened_dripstone_tiles,
hardened_dripstone_spike,
3
)
make_dripstone(
@ -419,6 +461,7 @@ make_dripstone(
"Small molten dripstone",
"A thick layer of dripstone. It has absorbed some lava, so it is able to grow in thickness.",
molten_dripstone_tiles,
dry_dripstone_spike,
3
)
make_dripstone(
@ -426,6 +469,7 @@ make_dripstone(
"Small watered dripstone",
"A thick layer of dripstone. It has absorbed some water, so it is able to grow in thickness.",
watered_dripstone_tiles,
dry_dripstone_spike,
3
)
@ -436,6 +480,7 @@ make_dripstone(
"Tiny dripstone",
"A thick layer of dripstone.",
dry_dripstone_tiles,
dry_dripstone_spike,
2
)
make_dripstone(
@ -443,6 +488,7 @@ make_dripstone(
"Tiny hardened dripstone",
"A thick layer of dripstone. It is no longer able to grow or absorb liquids.",
hardened_dripstone_tiles,
hardened_dripstone_spike,
2
)
make_dripstone(
@ -450,6 +496,7 @@ make_dripstone(
"Tiny molten dripstone",
"A thick layer of dripstone. It has absorbed some lava, so it is able to grow in thickness.",
molten_dripstone_tiles,
dry_dripstone_spike,
2
)
make_dripstone(
@ -457,6 +504,7 @@ make_dripstone(
"Tiny watered dripstone",
"A thick layer of dripstone. It has absorbed some water, so it is able to grow in thickness.",
watered_dripstone_tiles,
dry_dripstone_spike,
2
)
@ -467,6 +515,7 @@ make_dripstone(
"Dripstone spike",
"A thick layer of dripstone.",
dry_dripstone_tiles,
dry_dripstone_spike,
1
)
make_dripstone(
@ -474,6 +523,7 @@ make_dripstone(
"Hardened dripstone spike",
"A thick layer of dripstone. It is no longer able to grow or absorb liquids.",
hardened_dripstone_tiles,
hardened_dripstone_spike,
1
)
make_dripstone(
@ -481,6 +531,7 @@ make_dripstone(
"Molten dripstone spike",
"A thick layer of dripstone. It has absorbed some lava, so it is able to grow in thickness.",
molten_dripstone_tiles,
dry_dripstone_spike,
1
)
make_dripstone(
@ -488,6 +539,7 @@ make_dripstone(
"Watered dripstone spike",
"A thick layer of dripstone. It has absorbed some water, so it is able to grow in thickness.",
watered_dripstone_tiles,
dry_dripstone_spike,
1
)
@ -612,32 +664,32 @@ end
-- ABSORB LIQUIDS
make_abm(dry_dripstone_block, seconds_per_trickle, absorb_liquid)
make_abm(molten_dripstone_block, seconds_per_trickle, harden(function ()
make_abm(dry_dripstone_block, seconds_per_water_trickle, absorb_liquid)
make_abm(molten_dripstone_block, seconds_per_lava_trickle, harden(function ()
return noordstar_dripstone.water_nodes
end))
make_abm(watered_dripstone_block, seconds_per_trickle, harden(function ()
make_abm(watered_dripstone_block, seconds_per_water_trickle, harden(function ()
return noordstar_dripstone.lava_nodes
end))
-- TRICKLE DOWN
make_abm(molten_dripstone_block, seconds_per_trickle, trickle_down(lava_trickle_down, dry_dripstone_block))
make_abm(watered_dripstone_block, seconds_per_trickle, trickle_down(water_trickle_down, dry_dripstone_block))
make_abm(molten_dripstone_huge, seconds_per_trickle, trickle_down(lava_trickle_down, dry_dripstone_huge))
make_abm(watered_dripstone_huge, seconds_per_trickle, trickle_down(water_trickle_down, dry_dripstone_huge))
make_abm(molten_dripstone_large, seconds_per_trickle, trickle_down(lava_trickle_down, dry_dripstone_large))
make_abm(watered_dripstone_large, seconds_per_trickle, trickle_down(water_trickle_down, dry_dripstone_large))
make_abm(molten_dripstone_great, seconds_per_trickle, trickle_down(lava_trickle_down, dry_dripstone_great))
make_abm(watered_dripstone_great, seconds_per_trickle, trickle_down(water_trickle_down, dry_dripstone_great))
make_abm(molten_dripstone_medium, seconds_per_trickle, trickle_down(lava_trickle_down, dry_dripstone_medium))
make_abm(watered_dripstone_medium, seconds_per_trickle, trickle_down(water_trickle_down, dry_dripstone_medium))
make_abm(molten_dripstone_small, seconds_per_trickle, trickle_down(lava_trickle_down, dry_dripstone_small))
make_abm(watered_dripstone_small, seconds_per_trickle, trickle_down(water_trickle_down, dry_dripstone_small))
make_abm(molten_dripstone_tiny, seconds_per_trickle, trickle_down(lava_trickle_down, dry_dripstone_tiny))
make_abm(watered_dripstone_tiny, seconds_per_trickle, trickle_down(water_trickle_down, dry_dripstone_tiny))
make_abm(molten_dripstone_spike, seconds_per_trickle, trickle_down(lava_trickle_down_spike, dry_dripstone_spike))
make_abm(watered_dripstone_spike, seconds_per_trickle, trickle_down(water_trickle_down_spike, dry_dripstone_spike))
make_abm(molten_dripstone_block, seconds_per_lava_trickle, trickle_down(lava_trickle_down, dry_dripstone_block))
make_abm(watered_dripstone_block, seconds_per_water_trickle, trickle_down(water_trickle_down, dry_dripstone_block))
make_abm(molten_dripstone_huge, seconds_per_lava_trickle, trickle_down(lava_trickle_down, dry_dripstone_huge))
make_abm(watered_dripstone_huge, seconds_per_water_trickle, trickle_down(water_trickle_down, dry_dripstone_huge))
make_abm(molten_dripstone_large, seconds_per_lava_trickle, trickle_down(lava_trickle_down, dry_dripstone_large))
make_abm(watered_dripstone_large, seconds_per_water_trickle, trickle_down(water_trickle_down, dry_dripstone_large))
make_abm(molten_dripstone_great, seconds_per_lava_trickle, trickle_down(lava_trickle_down, dry_dripstone_great))
make_abm(watered_dripstone_great, seconds_per_water_trickle, trickle_down(water_trickle_down, dry_dripstone_great))
make_abm(molten_dripstone_medium, seconds_per_lava_trickle, trickle_down(lava_trickle_down, dry_dripstone_medium))
make_abm(watered_dripstone_medium, seconds_per_water_trickle, trickle_down(water_trickle_down, dry_dripstone_medium))
make_abm(molten_dripstone_small, seconds_per_lava_trickle, trickle_down(lava_trickle_down, dry_dripstone_small))
make_abm(watered_dripstone_small, seconds_per_water_trickle, trickle_down(water_trickle_down, dry_dripstone_small))
make_abm(molten_dripstone_tiny, seconds_per_lava_trickle, trickle_down(lava_trickle_down, dry_dripstone_tiny))
make_abm(watered_dripstone_tiny, seconds_per_water_trickle, trickle_down(water_trickle_down, dry_dripstone_tiny))
make_abm(molten_dripstone_spike, seconds_per_lava_trickle, trickle_down(lava_trickle_down_spike, dry_dripstone_spike))
make_abm(watered_dripstone_spike, seconds_per_water_trickle, trickle_down(water_trickle_down_spike, dry_dripstone_spike))
-- GROW
@ -656,5 +708,43 @@ make_abm(watered_dripstone_spike, seconds_per_growth*(4*4 - 2*2), grow_to(dry_dr
-- DROP DOWN
make_abm(molten_dripstone_spike, seconds_per_trickle, drop_down_to(lava_drop_down, dry_dripstone_spike))
make_abm(watered_dripstone_spike, seconds_per_trickle, drop_down_to(water_drop_down, dry_dripstone_spike))
make_abm(molten_dripstone_spike, seconds_per_lava_trickle, drop_down_to(lava_drop_down, dry_dripstone_spike))
make_abm(watered_dripstone_spike, seconds_per_water_trickle, drop_down_to(water_drop_down, dry_dripstone_spike))
-- CRATING RECIPES
local function gapple_recipe(gold, apple, gapple)
minetest.register_craft({
output = gapple,
recipe = {
{ gold, gold, gold },
{ gold, apple, gold },
{ gold, gold, gold },
}
})
end
gapple_recipe(dry_dripstone_spike, dry_dripstone_spike, dry_dripstone_tiny)
gapple_recipe(dry_dripstone_spike, dry_dripstone_tiny, dry_dripstone_small)
gapple_recipe(dry_dripstone_spike, dry_dripstone_small, dry_dripstone_medium)
gapple_recipe(dry_dripstone_spike, dry_dripstone_medium, dry_dripstone_great)
gapple_recipe(dry_dripstone_spike, dry_dripstone_great, dry_dripstone_large)
gapple_recipe(dry_dripstone_spike, dry_dripstone_large, dry_dripstone_huge)
gapple_recipe(hardened_dripstone_spike, hardened_dripstone_spike, hardened_dripstone_tiny)
gapple_recipe(hardened_dripstone_spike, hardened_dripstone_tiny, hardened_dripstone_small)
gapple_recipe(hardened_dripstone_spike, hardened_dripstone_small, hardened_dripstone_medium)
gapple_recipe(hardened_dripstone_spike, hardened_dripstone_medium, hardened_dripstone_great)
gapple_recipe(hardened_dripstone_spike, hardened_dripstone_great, hardened_dripstone_large)
gapple_recipe(hardened_dripstone_spike, hardened_dripstone_large, hardened_dripstone_huge)
gapple_recipe(molten_dripstone_spike, molten_dripstone_spike, molten_dripstone_tiny)
gapple_recipe(molten_dripstone_spike, molten_dripstone_tiny, molten_dripstone_small)
gapple_recipe(molten_dripstone_spike, molten_dripstone_small, molten_dripstone_medium)
gapple_recipe(molten_dripstone_spike, molten_dripstone_medium, molten_dripstone_great)
gapple_recipe(molten_dripstone_spike, molten_dripstone_great, molten_dripstone_large)
gapple_recipe(molten_dripstone_spike, molten_dripstone_large, molten_dripstone_huge)
gapple_recipe(watered_dripstone_spike, watered_dripstone_spike, watered_dripstone_tiny)
gapple_recipe(watered_dripstone_spike, watered_dripstone_tiny, watered_dripstone_small)
gapple_recipe(watered_dripstone_spike, watered_dripstone_small, watered_dripstone_medium)
gapple_recipe(watered_dripstone_spike, watered_dripstone_medium, watered_dripstone_great)
gapple_recipe(watered_dripstone_spike, watered_dripstone_great, watered_dripstone_large)
gapple_recipe(watered_dripstone_spike, watered_dripstone_large, watered_dripstone_huge)

Binary file not shown.

After

Width:  |  Height:  |  Size: 583 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 702 KiB