forked from Minetest/dripstone
Compare commits
8 Commits
c8c11d6539
...
2a8ff26dd7
Author | SHA1 | Date |
---|---|---|
Bram van den Heuvel | 2a8ff26dd7 | |
Bram van den Heuvel | 88085fed50 | |
Bram van den Heuvel | 6301616925 | |
Bram van den Heuvel | f6774858db | |
Bram van den Heuvel | f9ff713bb5 | |
Bram van den Heuvel | 7b230fdd97 | |
Bram van den Heuvel | c908311c48 | |
Bram van den Heuvel | 05f093b0ce |
|
@ -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.
|
|
@ -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
370
init.lua
|
@ -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 |
Loading…
Reference in New Issue