Mineclone compatibility (#36)

* latest versions of mapgen_helper and subterrane

* initial work

* call it "minetest_game" compatibility instead of "default" compatibility

* Getting started on moving all default dependencies to a single root mod

* distilling out more dependencies

* fix some typos

* more default dependencies

* beds

* start getting some MCL equivalents set up

* mine gas dependencies

* reorganize

* add some mapgen stuff

* getting close to actually being able to run mineclone with this

* it actually runs! Crashes with out-of-memory error when you try to go below -64, but it's a start.

* hide flowing pit plasma from creative inventory

* mineclone 5 settings

* Update subterrane

* get rid of meselamp dependency, bring in ancient lanterns from deep roads

* stair dependencies

* add mcl fences

* add mcl blast resistance and hardness to everything. Also an alternate name for Nethercap in MCL, since "nether" has another meaning there.

* buckets of oil and syrup should work in mineclone now

* 'splosions!

* make hunters avoid repaired ancient lanterns

* mapgen torchspine wasn't having its timer set

* split mapgen compatibility code into its own file

* bypass dependency indirection for df_farming.

* apply threshold alpha to food items, they look better that way

* bypass dependency indirection for df_mapitems

* bypass dependency indirection for df_primordial_items

* bypass dependency indirection for df_trees

* bypass dependency indirection for df_underworld_items

* bypass dependency indirection for df_caverns

* fixing up the puzzle seal to work in both

* fix puzzle seal formspec for mcl

* create built-in substitutes for fireflies and bones mods for when those aren't available

* set up mcl dungeon loot for underworld warriors, port over some translations from default

* overlooked a debug

* add itemslot backgrounds for mcl

* added mineclone groups to all registered nodes. TODO: craftitems.

This was extremely tedious. Completely untested, aside from simply running the game.

* minor fixes to the built-in bones node

* eatable group for edibles

* clean up some TODOs

* adjust pit plasma abm conditions

* add df_ambience

* fixing up explosions. Also make slade sand diggable in mcl, and fix a bug in web generators

* make tower cap caves less chirpy, fix bigger goblin hut schematic, allow glowing spindlestem extract bottles

* avoid an undeclared global check

* alas, cave pearls aren't set up right for attached_node_facedir.

* bunch of work on mineclone ores, moved main config into df_dependencies

* add a few more ores

* update depends in mod.conf

* add opaque group to light-sensitive dirt types

Mineclone adds the "opaque" group only to non-light nodes, and torches check for the opaque group to decide whether they can be placed there. light-sensitive nodes need the "light" paramtype to work, though. So adding the opaque group manually to these.

* add a touch of reverb to one of the whisper tracks, it didn't fit with the others without it

* bloodthorn also needs to be set opaque

* add sound to torchspines

* isolate Nethercap translation name to make it easier to swap out in Mineclone contexts

* ambience tweak

* fix dirt spreads

https://github.com/FaceDeer/dfcaverns/issues/35

* adding achievements! Almost all untested yet.

* fix a few achievements glitches

* tweak some more achievements, add delay when achievements unlock other achievements

* fix farming achievements, fix spindlestem callbacks on place

* icons for farming achievements

* more achievement icons, fix ancient lantern achievement

* two more icons, update text

* add icons for upper cavern layers

* all achievements have icons now. Also add another sound to the magma sea ambience

* hook into awards' trigger system to get "x/y" progress displayed for the multi-achievement achievements

* ironically, Mineclone has an old version of awards that is incompatible with my trigger work.

* every award should now have a description and a difficulty.

* removing leftovers

* missing callbacks for farmables

* put growth restrictions on farmables so the achievement doesn't trigger inappropriately.

* enable ores in MCL2, fix some undeclared globals, fix icecap growth in MCL (achievements are a good debugging tool)

* get *all* the copper and iron containing nodes

* fix old awards mod's handling of grouped dig items

* Add a little bonus for players who activate a slade breacher - a handheld 'splosion tool

* used the wrong drop method

* beef up explosions in MCL, make slade brick craftable from slade sand and lava

* better creative mode checks, fix crash when digging walls in MCL

* Update subterrane

* various bugfixes and tweaks

* whipping up a simple puzzle chest to give a clue about ancient numbering

The coding is done, but UI and a node mesh need to be done

* prepare for some art tomorrow

* chest node and sounds

* images for the combination dials

* add puzzle chests to the underworld buildings

* update translations

* oops, can't initialize the contents of puzzle chests every time or players get endless stuff

* add backgrounds to item slots in MCL

* wrap the existing function rather than copy and pasting it

* fix bucket dependency in cooking recipes

* add _mcl_saturation to edibles
This commit is contained in:
FaceDeer
2022-08-28 23:48:44 -06:00
committed by GitHub
parent b2ee829c1a
commit 0a0c97b74e
435 changed files with 6100 additions and 1367 deletions

View File

@ -7,8 +7,10 @@ minetest.register_node("df_trees:black_cap_stem", {
_doc_items_usagehelp = df_trees.doc.black_cap_usage,
tiles = {"dfcaverns_black_cap_top.png","dfcaverns_black_cap_top.png","dfcaverns_black_cap_side.png",},
is_ground_content = false,
groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2},
sounds = df_trees.sounds.wood,
groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2, handy=1,axey=1, building_block=1, material_wood=1, fire_encouragement=5, fire_flammability=5},
sounds = df_dependencies.sound_wood(),
_mcl_blast_resistance = 6,
_mcl_hardness = 5,
})
--cap
@ -18,8 +20,10 @@ minetest.register_node("df_trees:black_cap", {
_doc_items_usagehelp = df_trees.doc.black_cap_usage,
tiles = {"dfcaverns_black_cap_top.png","dfcaverns_black_cap_top.png","dfcaverns_black_cap_side.png^[transformR90",},
is_ground_content = false,
groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2},
sounds = df_trees.sounds.wood,
groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2, handy=1,axey=1, building_block=1, material_wood=1, fire_encouragement=5, fire_flammability=5},
sounds = df_dependencies.sound_wood(),
_mcl_blast_resistance = 6,
_mcl_hardness = 5,
})
--gills
@ -29,8 +33,8 @@ minetest.register_node("df_trees:black_cap_gills", {
_doc_items_usagehelp = df_trees.doc.black_cap_usage,
tiles = {"dfcaverns_black_cap_gills.png"},
is_ground_content = false,
groups = {snappy = 3, leafdecay = 3, flammable = 2, leaves = 1},
sounds = df_trees.sounds.leaves,
groups = {snappy = 3, leafdecay = 1, flammable = 2, leaves = 1,handy=1, hoey=1, shearsy=1, swordy=1, deco_block=1, dig_by_piston=1, fire_encouragement=15, fire_flammability=30, compostability=30},
sounds = df_dependencies.sound_leaves(),
drawtype = "plantlike",
paramtype = "light",
drop = {
@ -45,10 +49,13 @@ minetest.register_node("df_trees:black_cap_gills", {
}
}
},
after_place_node = df_trees.after_place_leaves,
after_place_node = df_dependencies.after_place_leaves,
place_param2 = 1, -- Prevent leafdecay for placed nodes
_mcl_blast_resistance = 0.2,
_mcl_hardness = 0.2,
})
df_trees.register_leafdecay({
df_dependencies.register_leafdecay({
trunks = {"df_trees:black_cap"}, -- don't need stem nodes here
leaves = {"df_trees:black_cap_gills"},
radius = 1,
@ -70,7 +77,7 @@ minetest.register_craft({
})
minetest.register_craft({
output = df_trees.node_names.torch .. ' 8',
output = df_dependencies.node_name_torch .. ' 8',
recipe = {
{'df_trees:black_cap_gills'},
{'group:stick'},
@ -94,12 +101,13 @@ minetest.register_node("df_trees:black_cap_wood", {
place_param2 = 0,
tiles = {"dfcaverns_black_cap_wood.png"},
is_ground_content = false,
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, wood = 1},
sounds = df_trees.sounds.wood,
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, wood = 1, handy=1,axey=1, building_block=1, material_wood=1, fire_encouragement=5, fire_flammability=20},
sounds = df_dependencies.sound_wood(),
_mcl_blast_resistance = 5,
_mcl_hardness = 5,
})
df_trees.register.all_stairs("black_cap_wood")
df_trees.register.all_fences("black_cap_wood", {burntime = 30})
df_dependencies.register_all_stairs_and_fences("black_cap_wood", {burntime = 30})
minetest.register_craft({
type = "fuel",
@ -147,8 +155,10 @@ minetest.register_node("df_trees:black_cap_sapling", {
fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 7 / 16, 4 / 16}
},
groups = {snappy = 2, dig_immediate = 3, flammable = 2,
attached_node = 1, sapling = 1, light_sensitive_fungus = 11},
sounds = df_trees.sounds.leaves,
attached_node = 1, sapling = 1, light_sensitive_fungus = 11, dig_immediate=3,dig_by_piston=1,destroy_by_lava_flow=1,deco_block=1, compostability=30},
sounds = df_dependencies.sound_leaves(),
_mcl_blast_resistance = 0.5,
_mcl_hardness = 0.5,
on_construct = function(pos)
if df_trees.black_cap_growth_permitted(pos) then

View File

@ -37,14 +37,19 @@ minetest.register_node("df_trees:blood_thorn", {
"dfcaverns_blood_thorn_side.png", "dfcaverns_blood_thorn_side.png", "dfcaverns_blood_thorn_side.png", "dfcaverns_blood_thorn_side.png"},
paramtype2 = "facedir",
paramtype = "light",
groups = {choppy = 3, tree = 1, flammable = 2, light_sensitive_fungus = 11},
groups = {choppy = 3, tree = 1, flammable = 2, light_sensitive_fungus = 11, handy=1,axey=1, building_block=1, material_wood=1, fire_encouragement=5, fire_flammability=5, opaque=1},
_dfcaverns_dead_node = "df_trees:blood_thorn_dead",
sounds = df_trees.sounds.wood,
sounds = df_dependencies.sound_wood(),
is_ground_content = false,
on_place = minetest.rotate_node,
after_dig_node = blood_thorn_after_dig,
_mcl_blast_resistance = 1,
_mcl_hardness = 1,
on_construct = function(pos)
if not df_trees.blood_thorn_growth_permitted(pos) then
return
end
minetest.get_node_timer(pos):start(math.random(blood_thorn_min_delay, blood_thorn_max_delay))
end,
on_destruct = function(pos)
@ -82,11 +87,13 @@ minetest.register_node("df_trees:blood_thorn_dead", {
"dfcaverns_blood_thorn_side.png^[multiply:#804000"},
paramtype2 = "facedir",
paramtype = "light",
groups = {choppy = 3, tree = 1, flammable = 2},
sounds = df_trees.sounds.wood,
groups = {choppy = 3, tree = 1, flammable = 2, handy=1,axey=1, building_block=1, material_wood=1, fire_encouragement=5, fire_flammability=5},
sounds = df_dependencies.sound_wood(),
is_ground_content = false,
on_place = minetest.rotate_node,
after_dig_node = blood_thorn_after_dig,
_mcl_blast_resistance = 1,
_mcl_hardness = 1,
})
minetest.register_node("df_trees:blood_thorn_spike", {
@ -101,9 +108,9 @@ minetest.register_node("df_trees:blood_thorn_spike", {
"dfcaverns_blood_thorn_spike_front.png",
"dfcaverns_blood_thorn_spike_front.png"
},
groups = {choppy = 3, flammable = 2, fall_damage_add_percent=100, light_sensitive_fungus = 11},
groups = {choppy = 3, flammable = 2, fall_damage_add_percent=100, light_sensitive_fungus = 11, handy=1,axey=1, building_block=1, material_wood=1, fire_encouragement=5, fire_flammability=5},
_dfcaverns_dead_node = "df_trees:blood_thorn_spike_dead",
sounds = df_trees.sounds.wood,
sounds = df_dependencies.sound_wood(),
drawtype = "nodebox",
climbable = true,
is_ground_content = false,
@ -118,6 +125,8 @@ minetest.register_node("df_trees:blood_thorn_spike", {
{-0.0625, -0.0625, -0.5, 0.0625, 0.0625, -0.125}, -- tip
}
},
_mcl_blast_resistance = 1,
_mcl_hardness = 1,
})
minetest.register_node("df_trees:blood_thorn_spike_dead", {
@ -132,8 +141,8 @@ minetest.register_node("df_trees:blood_thorn_spike_dead", {
"dfcaverns_blood_thorn_spike_front.png^[multiply:#804000",
"dfcaverns_blood_thorn_spike_front.png^[multiply:#804000"
},
groups = {choppy = 3, flammable = 2, fall_damage_add_percent=100},
sounds = df_trees.sounds.wood,
groups = {choppy = 3, flammable = 2, fall_damage_add_percent=100, handy=1,axey=1, building_block=1, material_wood=1, fire_encouragement=5, fire_flammability=5},
sounds = df_dependencies.sound_wood(),
drawtype = "nodebox",
climbable = true,
is_ground_content = false,
@ -147,6 +156,8 @@ minetest.register_node("df_trees:blood_thorn_spike_dead", {
{-0.0625, -0.0625, -0.5, 0.0625, 0.0625, -0.125}, -- tip
}
},
_mcl_blast_resistance = 1,
_mcl_hardness = 0.8,
})
@ -172,12 +183,13 @@ minetest.register_node("df_trees:blood_thorn_wood", {
place_param2 = 0,
tiles = {"dfcaverns_blood_thorn_wood.png"},
is_ground_content = false,
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, wood = 1},
sounds = df_trees.sounds.wood,
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, wood = 1, handy=1,axey=1, building_block=1, material_wood=1, fire_encouragement=5, fire_flammability=20},
sounds = df_dependencies.sound_wood(),
_mcl_blast_resistance = 2,
_mcl_hardness = 1,
})
df_trees.register.all_stairs("blood_thorn_wood")
df_trees.register.all_fences("blood_thorn_wood", {burntime = 40})
df_dependencies.register_all_stairs_and_fences("blood_thorn_wood", {burntime = 40})
minetest.register_craft({
type = "fuel",
@ -225,10 +237,6 @@ function df_trees.grow_blood_thorn(pos, node)
return
end
if not df_trees.blood_thorn_growth_permitted(pos) then
return
end
local height = 0
local max_height = max_bloodthorn_height(pos)
while node.name == "df_trees:blood_thorn" and height < max_height do

View File

@ -43,7 +43,8 @@ for _, tree in pairs(trees) do
setting("float", tree.name.."_delay_multiplier", tree.delay_multiplier, tree.name.." growth delay multiplier")
end
if minetest.get_modpath("tnt") then
-- TODO: mineclone settings
if df_dependencies.tnt_boom then
df_trees.config.enable_tnt = minetest.settings:get_bool("enable_tnt")
if df_trees.config.enable_tnt == nil then
-- Default to enabled when in singleplayer

View File

@ -1,168 +0,0 @@
-- Note that a circular table reference will result in a crash, TODO: guard against that.
-- Unlikely to be needed, though - it'd take a lot of work for users to get into this bit of trouble.
local function deep_copy(table_in)
local table_out = {}
for index, value in pairs(table_in) do
if type(value) == "table" then
table_out[index] = deep_copy(value)
else
table_out[index] = value
end
end
return table_out
end
local S = minetest.get_translator(minetest.get_current_modname())
df_trees.sounds = {}
df_trees.sounds.wood = default.node_sound_wood_defaults()
df_trees.sounds.leaves = default.node_sound_leaves_defaults()
df_trees.sounds.nethercap_wood = default.node_sound_wood_defaults({
footstep = {name = "default_snow_footstep", gain = 0.2},
})
df_trees.sounds.glass = default.node_sound_glass_defaults()
df_trees.node_names = {}
df_trees.node_names.torch = "default:torch"
df_trees.node_names.chest = "default:chest"
df_trees.node_names.furnace = "default:furnace"
df_trees.node_names.apple = "default:apple"
df_trees.node_names.gold_ingot = "default:gold_ingot"
df_trees.node_names.water_source = "default:water_source"
df_trees.node_names.river_water_source = "default:river_water_source"
df_trees.node_names.ice = "default:ice"
df_trees.node_names.water_flowing = "default:water_flowing"
df_trees.node_names.river_water_flowing = "default:river_water_flowing"
df_trees.node_names.snow = "default:snow"
df_trees.node_names.torch_wall = "default:torch_wall"
df_trees.node_names.stone_with_coal = "default:stone_with_coal"
df_trees.node_names.coalblock = "default:coalblock"
df_trees.node_names.paper = "default:paper"
df_trees.textures = {}
df_trees.textures.gold_block = "default_gold_block.png"
df_trees.register = {}
df_trees.register.all_stairs = function(name, override_def)
local mod = minetest.get_current_modname()
local node_def = minetest.registered_nodes[mod..":"..name]
override_def = override_def or {}
local node_copy = deep_copy(node_def)
for index, value in pairs(override_def) do
node_copy[index] = value
end
if minetest.get_modpath("stairs") then
stairs.register_stair_and_slab(
name,
mod ..":" .. name,
node_copy.groups,
node_copy.tiles,
S("@1 Stair", node_copy.description),
S("@1 Slab", node_copy.description),
node_copy.sounds
)
end
if minetest.get_modpath("moreblocks") then
stairsplus:register_all(mod, name, mod..":"..name, node_copy)
end
end
df_trees.register.all_fences = function (name, override_def)
local mod = minetest.get_current_modname()
local material = mod..":"..name
local node_def = minetest.registered_nodes[material]
override_def = override_def or {}
local burntime = override_def.burntime
default.register_fence(material .. "_fence", {
description = S("@1 Fence", node_def.description),
texture = override_def.texture or node_def.tiles[1],
material = override_def.material or material,
groups = deep_copy(node_def.groups or {}), -- the default register_fence function modifies the groups table passed in, so send a copy instead to be on the safe side.
sounds = node_def.sounds
})
if burntime then
minetest.register_craft({
type = "fuel",
recipe = material .. "_fence",
burntime = burntime, -- ignoring two sticks
})
end
default.register_fence_rail(material .. "_fence_rail", {
description = S("@1 Fence Rail", node_def.description),
texture = override_def.texture or node_def.tiles[1],
material = override_def.material or material,
groups = deep_copy(node_def.groups or {}), -- the default register_fence_rail function modifies the groups table passed in, so send a copy instead to be on the safe side.
sounds = node_def.sounds
})
if burntime then
minetest.register_craft({
type = "fuel",
recipe = material .. "_fence_rail",
burntime = burntime * 4/16,
})
end
default.register_mesepost(material .. "_mese_light", {
description = S("@1 Mese Post Light", node_def.description),
texture = override_def.texture or node_def.tiles[1],
material = override_def.material or material,
groups = deep_copy(node_def.groups or {}), -- the default register_fence_rail function modifies the groups table passed in, so send a copy instead to be on the safe side.
sounds = node_def.sounds
})
if minetest.get_modpath("doors") then
doors.register_fencegate(material .. "_fence_gate", {
description = S("@1 Fence Gate", node_def.description),
texture = override_def.texture or node_def.tiles[1],
material = override_def.material or material,
groups = deep_copy(node_def.groups or {}), -- the default register_fence_rail function modifies the groups table passed in, so send a copy instead to be on the safe side.
sounds = node_def.sounds
})
if burntime then
minetest.register_craft({
type = "fuel",
recipe = material .. "_fence_gate_closed",
burntime = burntime * 2, -- ignoring four sticks
})
end
end
end
-- this stuff is only for during initialization
minetest.after(0, function()
df_trees.sounds = nil
df_trees.node_names = nil
df_trees.textures = nil
df_trees.register = nil
end)
df_trees.iron_containing_nodes = {"default:stone_with_iron", "default:steelblock"}
df_trees.copper_containing_nodes = {"default:stone_with_copper", "default:copperblock"}
df_trees.mese_containing_nodes = {"default:stone_with_mese", "default:mese"}
df_trees.after_place_leaves = default.after_place_leaves
df_trees.register_leafdecay = default.register_leafdecay
-- This is used by other mods, leave it exposed
df_trees.node_sound_tree_soft_fungus_defaults = function(table)
table = table or {}
table.footstep = table.footstep or
{name = "dfcaverns_fungus_footstep", gain = 0.3}
default.node_sound_wood_defaults(table)
return table
end

View File

@ -1,5 +1,7 @@
df_trees.doc = {}
local nethercap_name = df_dependencies.nethercap_name
if not minetest.get_modpath("doc") then
return
end
@ -21,8 +23,8 @@ df_trees.doc.fungiwood_usage = S("Fungiwood stalk is strong and very fine-graine
df_trees.doc.goblin_cap_desc = S("Massive but squat, mature goblin cap mushrooms are the size of small cottages.")
df_trees.doc.goblin_cap_usage = S("Goblin cap stem and cap material can be cut into wood of two different hues, a subdued cream and a bright orange-red.")
df_trees.doc.nether_cap_desc = S("Nether caps have an unusual biochemistry that allows them to somehow subsist on ambient heat, in violation of all known laws of thermodynamics. They grow deep underground in frigid, icy caverns that should by all rights be volcanic.")
df_trees.doc.nether_cap_usage = S("Nether cap wood, in addition to being a beautiful blue hue, retains the odd heat-draining ability of living nether caps and is able to quickly freeze nearby water solid.")
df_trees.doc.nether_cap_desc = S("@1 have an unusual biochemistry that allows them to somehow subsist on ambient heat, in violation of all known laws of thermodynamics. They grow deep underground in frigid, icy caverns that should by all rights be volcanic.", nethercap_name)
df_trees.doc.nether_cap_usage = S("@1 wood, in addition to being a beautiful blue hue, retains the odd heat-draining ability of living icecaps and is able to quickly freeze nearby water solid.", nethercap_name)
df_trees.doc.spore_tree_desc = S("Spore trees have a sturdy 'trunk' that supports a large spongy mesh of branching fibers, with embedded fruiting bodies that produce a copious amount of spores that gently rain down around the spore tree's base.")
df_trees.doc.spore_tree_usage = S("Spore tree trunks can be cut into pale woody planks. The branching fibers and fruiting bodies are only useful as fuel.")

View File

@ -14,8 +14,10 @@ minetest.register_node("df_trees:fungiwood", {
tiles = {"dfcaverns_fungiwood.png"},
paramtype2 = "facedir",
is_ground_content = false,
groups = {tree = 1, choppy = 3, oddly_breakable_by_hand = 1, flammable = 3},
sounds = df_trees.sounds.wood,
groups = {tree = 1, choppy = 3, oddly_breakable_by_hand = 1, flammable = 3, handy=1,axey=1, building_block=1, material_wood=1, fire_encouragement=5, fire_flammability=5},
sounds = df_dependencies.sound_wood(),
_mcl_blast_resistance = 2,
_mcl_hardness = 2,
on_place = minetest.rotate_node
})
@ -36,12 +38,13 @@ minetest.register_node("df_trees:fungiwood_wood", {
place_param2 = 0,
tiles = {"dfcaverns_fungiwood_wood.png"},
is_ground_content = false,
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, wood = 1},
sounds = df_trees.sounds.wood,
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, wood = 1, handy=1,axey=1, building_block=1, material_wood=1, fire_encouragement=5, fire_flammability=20},
sounds = df_dependencies.sound_wood(),
_mcl_blast_resistance = 3,
_mcl_hardness = 2,
})
df_trees.register.all_stairs("fungiwood_wood")
df_trees.register.all_fences("fungiwood_wood", {burntime = 7})
df_dependencies.register_all_stairs_and_fences("fungiwood_wood", {burntime = 7})
minetest.register_craft({
type = "fuel",
@ -81,7 +84,7 @@ minetest.register_node("df_trees:fungiwood_shelf",{
}
},
is_ground_content = false,
groups = {snappy = 3, leafdecay = 3, flammable = 2, leaves = 1},
groups = {snappy = 3, leafdecay = 5, flammable = 2, leaves = 1,handy=1, hoey=1, shearsy=1, swordy=1, deco_block=1, dig_by_piston=1, fire_encouragement=15, fire_flammability=30, compostability=30},
drop = {
max_items = 1,
items = {
@ -89,12 +92,15 @@ minetest.register_node("df_trees:fungiwood_shelf",{
{items = {"df_trees:fungiwood_shelf"}}
}
},
sounds = df_trees.sounds.leaves,
sounds = df_dependencies.sound_leaves(),
_mcl_blast_resistance = 0.5,
_mcl_hardness = 0.5,
after_place_node = df_trees.after_place_leaves,
after_place_node = df_dependencies.after_place_leaves,
place_param2 = 1, -- Prevent leafdecay for placed nodes
})
df_trees.register_leafdecay({
df_dependencies.register_leafdecay({
trunks = {"df_trees:fungiwood"},
leaves = {"df_trees:fungiwood_shelf"},
radius = 5,
@ -119,8 +125,10 @@ minetest.register_node("df_trees:fungiwood_sapling", {
fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 7 / 16, 4 / 16}
},
groups = {snappy = 2, dig_immediate = 3, flammable = 2,
attached_node = 1, sapling = 1, light_sensitive_fungus = 11},
sounds = df_trees.sounds.leaves,
attached_node = 1, sapling = 1, light_sensitive_fungus = 11, dig_immediate=3,dig_by_piston=1,destroy_by_lava_flow=1,deco_block=1, compostability=30},
sounds = df_dependencies.sound_leaves(),
_mcl_blast_resistance = 0.2,
_mcl_hardness = 0.2,
on_construct = function(pos)
if df_trees.fungiwood_growth_permitted(pos) then

View File

@ -13,8 +13,10 @@ minetest.register_node("df_trees:goblin_cap_stem", {
_doc_items_usagehelp = df_trees.doc.goblin_cap_usage,
tiles = {"dfcaverns_goblin_cap_stem.png"},
is_ground_content = false,
groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2, goblin_cap = 1},
groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2, goblin_cap = 1, handy=1,axey=1, building_block=1, material_wood=1, fire_encouragement=5, fire_flammability=5},
sounds = df_trees.node_sound_tree_soft_fungus_defaults(),
_mcl_blast_resistance = 2,
_mcl_hardness = 2,
})
--cap
@ -24,8 +26,10 @@ minetest.register_node("df_trees:goblin_cap", {
_doc_items_usagehelp = df_trees.doc.goblin_cap_usage,
tiles = {"dfcaverns_goblin_cap.png"},
is_ground_content = false,
groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2, goblin_cap = 1},
groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2, goblin_cap = 1, handy=1,axey=1, building_block=1, material_wood=1, fire_encouragement=5, fire_flammability=5},
sounds = df_trees.node_sound_tree_soft_fungus_defaults(),
_mcl_blast_resistance = 2,
_mcl_hardness = 2,
})
--gills
@ -35,8 +39,8 @@ minetest.register_node("df_trees:goblin_cap_gills", {
_doc_items_usagehelp = df_trees.doc.goblin_cap_usage,
tiles = {"dfcaverns_goblin_cap_gills.png"},
is_ground_content = false,
groups = {snappy = 3, leafdecay = 3, flammable = 2, leaves = 1, goblin_cap = 1},
sounds = df_trees.sounds.leaves,
groups = {snappy = 3, leafdecay = 1, flammable = 2, leaves = 1, goblin_cap = 1,handy=1, hoey=1, shearsy=1, swordy=1, deco_block=1, dig_by_piston=1, fire_encouragement=15, fire_flammability=30, compostability=30},
sounds = df_dependencies.sound_leaves(),
drawtype = "plantlike",
paramtype = "light",
drop = {
@ -51,10 +55,13 @@ minetest.register_node("df_trees:goblin_cap_gills", {
}
}
},
after_place_node = df_trees.after_place_leaves,
after_place_node = df_dependencies.after_place_leaves,
place_param2 = 1, -- Prevent leafdecay for placed nodes
_mcl_blast_resistance = 0.2,
_mcl_hardness = 0.2,
})
df_trees.register_leafdecay({
df_dependencies.register_leafdecay({
trunks = {"df_trees:goblin_cap"}, -- don't need stem nodes here
leaves = {"df_trees:goblin_cap_gills"},
radius = 1,
@ -83,8 +90,10 @@ minetest.register_node("df_trees:goblin_cap_wood", {
place_param2 = 0,
tiles = {"dfcaverns_goblin_cap_wood.png"},
is_ground_content = false,
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, wood = 1},
sounds = df_trees.sounds.wood,
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, wood = 1, handy=1,axey=1, building_block=1, material_wood=1, fire_encouragement=5, fire_flammability=20},
sounds = df_dependencies.sound_wood(),
_mcl_blast_resistance = 3,
_mcl_hardness = 2,
})
minetest.register_node("df_trees:goblin_cap_stem_wood", {
@ -95,14 +104,14 @@ minetest.register_node("df_trees:goblin_cap_stem_wood", {
place_param2 = 0,
tiles = {"dfcaverns_goblin_cap_stem_wood.png"},
is_ground_content = false,
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, wood = 1},
sounds = df_trees.sounds.wood,
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, wood = 1, handy=1,axey=1, building_block=1, material_wood=1, fire_encouragement=5, fire_flammability=20},
sounds = df_dependencies.sound_wood(),
_mcl_blast_resistance = 3,
_mcl_hardness = 2,
})
df_trees.register.all_stairs("goblin_cap_wood")
df_trees.register.all_fences("goblin_cap_wood", {burntime = 12})
df_trees.register.all_stairs("goblin_cap_stem_wood")
df_trees.register.all_fences("goblin_cap_stem_wood", {burntime = 7})
df_dependencies.register_all_stairs_and_fences("goblin_cap_wood", {burntime = 12})
df_dependencies.register_all_stairs_and_fences("goblin_cap_stem_wood", {burntime = 7})
minetest.register_craft({
type = "fuel",
@ -141,10 +150,10 @@ local bigger_goblin_cap_schem = dofile(modpath.."/schematics/goblin_cap_bigger.l
local bigger_goblin_cap_hut_schem = dofile(modpath.."/schematics/goblin_cap_bigger_hut.lua")
-- The hut has a chest and furnace near pos, use this to initialize it
local chest_node = df_trees.node_names.chest
local furnace_node = df_trees.node_names.furnace
local gold_item = df_trees.node_names.gold_ingot
local apple_item = df_trees.node_names.apple
local chest_node = df_dependencies.node_name_chest
local furnace_node = df_dependencies.node_name_furnace
local gold_item = df_dependencies.node_name_gold_ingot
local apple_item = df_dependencies.node_name_apple
local chest_on_construct = minetest.registered_items[chest_node].on_construct
local furnace_on_construct = minetest.registered_items[furnace_node].on_construct
@ -211,8 +220,10 @@ minetest.register_node("df_trees:goblin_cap_sapling", {
fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 7 / 16, 4 / 16}
},
groups = {snappy = 2, dig_immediate = 3, flammable = 2,
attached_node = 1, sapling = 1, light_sensitive_fungus = 11},
sounds = df_trees.sounds.leaves,
attached_node = 1, sapling = 1, light_sensitive_fungus = 11, dig_immediate=3,dig_by_piston=1,destroy_by_lava_flow=1,deco_block=1, compostability=30},
sounds = df_dependencies.sound_leaves(),
_mcl_blast_resistance = 0.2,
_mcl_hardness = 0.2,
on_construct = function(pos)
if df_trees.goblin_cap_growth_permitted(pos) then
@ -248,23 +259,6 @@ local c_stem = minetest.get_content_id("df_trees:goblin_cap_stem")
local c_cap = minetest.get_content_id("df_trees:goblin_cap")
local c_gills = minetest.get_content_id("df_trees:goblin_cap_gills")
-- If the farming mod is installed, add the "straw" group to farming straw.
-- This way we just need to check for group:straw to get cave straw as well, without
-- needing a df_farming dependency for this mod.
if minetest.get_modpath("farming") then
local straw_def = minetest.registered_items["farming:straw"]
if straw_def then
local new_groups = {}
for group, val in pairs(straw_def.groups) do
new_groups[group] = val
end
new_groups.straw = 1
minetest.override_item("farming:straw", {
groups = new_groups
})
end
end
df_trees.spawn_goblin_cap = function(pos)
if math.random() < 0.1 then
if math.random() < 0.5 then

View File

@ -3,9 +3,17 @@ df_trees = {}
local modname = minetest.get_current_modname()
local modpath = minetest.get_modpath(modname)
-- This is used by other mods, leave it exposed
df_trees.node_sound_tree_soft_fungus_defaults = function(table)
table = table or {}
table.footstep = table.footstep or
{name = "dfcaverns_fungus_footstep", gain = 0.3}
df_dependencies.sound_wood(table)
return table
end
--load companion lua files
dofile(modpath.."/config.lua")
dofile(modpath.."/dependencies.lua")
dofile(modpath.."/doc.lua")
dofile(modpath.."/aliases.lua")

View File

@ -22,19 +22,12 @@ Blood Thorn Stem=Blutdornstamm
Dead Blood Thorn Spike=
Dead Blood Thorn Stem=
### dependencies.lua ###
@1 Fence=
@1 Fence Gate=
@1 Fence Rail=
@1 Mese Post Light=
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
@1 Slab=@1 Platte
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
@1 Stair=@1 Treppe
### doc.lua ###
@1 have an unusual biochemistry that allows them to somehow subsist on ambient heat, in violation of all known laws of thermodynamics. They grow deep underground in frigid, icy caverns that should by all rights be volcanic.=
@1 wood, in addition to being a beautiful blue hue, retains the odd heat-draining ability of living icecaps and is able to quickly freeze nearby water solid.=
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
A torchspine alternates between active and quiescent phases and emits dim light when active. They can be harvested for torches, and their embers sprout into new torchspines when placed on flammable surfaces.=Eine Fackel wechselt zwischen aktiver und ruhender Phase und gibt schwaches Licht ab, wenn sie aktiv ist. Sie können für Fackeln geerntet werden, und ihre Glut sprießt auf brennbaren Oberflächen zu neuen Fackelstacheln.
@ -74,12 +67,6 @@ Living extract from the cap of a yellow Spindlestem.=Lebender Extrakt aus der Ka
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Massive but squat, mature goblin cap mushrooms are the size of small cottages.=Massive, aber gedrungene, reife Koboldkappenpilze haben die Größe kleiner Hütten.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Nether cap wood, in addition to being a beautiful blue hue, retains the odd heat-draining ability of living nether caps and is able to quickly freeze nearby water solid.=Netherkappenholz ist nicht nur ein wunderschöner blauer Farbton, sondern behält auch die seltsame Wärmeableitungsfähigkeit lebender Netherkappen bei und kann in der Nähe befindliche Wasserfeststoffe schnell einfrieren.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Nether caps have an unusual biochemistry that allows them to somehow subsist on ambient heat, in violation of all known laws of thermodynamics. They grow deep underground in frigid, icy caverns that should by all rights be volcanic.=Netherkappen haben eine ungewöhnliche Biochemie, die es ihnen ermöglicht, unter Verstoß gegen alle bekannten Gesetze der Thermodynamik von Umgebungswärme zu leben. Sie wachsen tief unter der Erde in kalten, eisigen Höhlen, die auf jeden Fall vulkanisch sein sollten.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Red Spindlestems are a sign of nearby iron deposits - or perhaps Goblin Caps. Their glowing symbiotes can be extracted as a long-lived light source, though the glow is weak.=Rote Spindelstämme sind ein Zeichen für nahegelegene Eisenvorkommen - oder vielleicht Goblin Caps. Ihre leuchtenden Symbioten können als langlebige Lichtquelle extrahiert werden, obwohl das Leuchten schwach ist.
@ -166,13 +153,10 @@ Goblin Cap Stem Planks=Goblin Cap Stem Planken
### nether_cap.lua ###
Nether Cap=
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Nether Cap Gills=Nether Cap Kiemen
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Nether Cap Planks=Nether Cap Planken
Nether Cap Spawn=
Nether Cap Stem=
@1 Gills=
@1 Planks=
@1 Spawn=
@1 Stem=
### spindlestem.lua ###
@ -235,3 +219,18 @@ Tunnel Tube Fruiting Body=Tunnelrohr-Fruchtkörper
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Tunnel Tube Plies=Tunnelrohrlagen
Tunnel Tube Spawn=
##### not used anymore #####
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Nether cap wood, in addition to being a beautiful blue hue, retains the odd heat-draining ability of living nether caps and is able to quickly freeze nearby water solid.=Netherkappenholz ist nicht nur ein wunderschöner blauer Farbton, sondern behält auch die seltsame Wärmeableitungsfähigkeit lebender Netherkappen bei und kann in der Nähe befindliche Wasserfeststoffe schnell einfrieren.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Nether caps have an unusual biochemistry that allows them to somehow subsist on ambient heat, in violation of all known laws of thermodynamics. They grow deep underground in frigid, icy caverns that should by all rights be volcanic.=Netherkappen haben eine ungewöhnliche Biochemie, die es ihnen ermöglicht, unter Verstoß gegen alle bekannten Gesetze der Thermodynamik von Umgebungswärme zu leben. Sie wachsen tief unter der Erde in kalten, eisigen Höhlen, die auf jeden Fall vulkanisch sein sollten.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Nether Cap Gills=Nether Cap Kiemen
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Nether Cap Planks=Nether Cap Planken

View File

@ -17,19 +17,12 @@ Blood Thorn Stem=Gambo di spina del sangue
Dead Blood Thorn Spike=Spuntone di spina del sangue morta
Dead Blood Thorn Stem=Gambo di spina del sangue morta
### dependencies.lua ###
@1 Fence=
@1 Fence Gate=
@1 Fence Rail=
@1 Mese Post Light=
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
@1 Slab=@1 Lastra
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
@1 Stair=@1 Scala
### doc.lua ###
@1 have an unusual biochemistry that allows them to somehow subsist on ambient heat, in violation of all known laws of thermodynamics. They grow deep underground in frigid, icy caverns that should by all rights be volcanic.=
@1 wood, in addition to being a beautiful blue hue, retains the odd heat-draining ability of living icecaps and is able to quickly freeze nearby water solid.=
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
A torchspine alternates between active and quiescent phases and emits dim light when active. They can be harvested for torches, and their embers sprout into new torchspines when placed on flammable surfaces.=Una torcia alterna le fasi attiva e quiescente ed emette una luce fioca quando è attiva. Possono essere raccolti per le torce e le loro braci germogliano in nuove spine delle torce quando vengono posizionate su superfici infiammabili.
@ -69,12 +62,6 @@ Living extract from the cap of a yellow Spindlestem.=Estratto vivo dal cappello
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Massive but squat, mature goblin cap mushrooms are the size of small cottages.=I funghi goblin sono grandi ma tozzi e maturi, hanno le dimensioni di piccoli cottage.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Nether cap wood, in addition to being a beautiful blue hue, retains the odd heat-draining ability of living nether caps and is able to quickly freeze nearby water solid.=Il legno del cappuccio inferiore, oltre ad essere una bella tonalità blu, conserva la strana capacità di drenaggio del calore dei tappi inferiori viventi ed è in grado di congelare rapidamente l'acqua solida vicina.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Nether caps have an unusual biochemistry that allows them to somehow subsist on ambient heat, in violation of all known laws of thermodynamics. They grow deep underground in frigid, icy caverns that should by all rights be volcanic.=I cappucci inferiori hanno una biochimica insolita che consente loro di sopravvivere in qualche modo al calore ambientale, in violazione di tutte le leggi conosciute della termodinamica. Crescono in profondità nel sottosuolo in caverne gelide che dovrebbero a tutti gli effetti essere vulcaniche.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Red Spindlestems are a sign of nearby iron deposits - or perhaps Goblin Caps. Their glowing symbiotes can be extracted as a long-lived light source, though the glow is weak.=I Red Spindlestems sono un segno di depositi di ferro vicini - o forse Goblin Caps. I loro simbionti luminosi possono essere estratti come fonte di luce a lunga durata, anche se il bagliore è debole.
@ -157,11 +144,10 @@ Goblin Cap Stem Planks=Assi di gambo di cappello di folletto
### nether_cap.lua ###
Nether Cap=Cappello del Nether
Nether Cap Gills=Lamelle di cappello del Nether
Nether Cap Planks=Assi di cappello del Nether
Nether Cap Spawn=Prole di cappello del Nether
Nether Cap Stem=Gambo di cappello del Nether
@1 Gills=Lamelle di @1
@1 Planks=Assi di @1
@1 Spawn=Prole di @1
@1 Stem=Gambo di @1
### spindlestem.lua ###
@ -211,3 +197,14 @@ Tunnel Tube=Tubo di galleria
Tunnel Tube Fruiting Body=Corpo fruttifero del tubo di galleria
Tunnel Tube Plies=Strati di tubo di galleria
Tunnel Tube Spawn=Prole di tubo di galleria
##### not used anymore #####
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Nether cap wood, in addition to being a beautiful blue hue, retains the odd heat-draining ability of living nether caps and is able to quickly freeze nearby water solid.=Il legno del cappuccio inferiore, oltre ad essere una bella tonalità blu, conserva la strana capacità di drenaggio del calore dei tappi inferiori viventi ed è in grado di congelare rapidamente l'acqua solida vicina.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Nether caps have an unusual biochemistry that allows them to somehow subsist on ambient heat, in violation of all known laws of thermodynamics. They grow deep underground in frigid, icy caverns that should by all rights be volcanic.=I cappucci inferiori hanno una biochimica insolita che consente loro di sopravvivere in qualche modo al calore ambientale, in violazione di tutte le leggi conosciute della termodinamica. Crescono in profondità nel sottosuolo in caverne gelide che dovrebbero a tutti gli effetti essere vulcaniche.

View File

@ -17,17 +17,12 @@ Blood Thorn Stem=
Dead Blood Thorn Spike=
Dead Blood Thorn Stem=
### dependencies.lua ###
@1 Fence=
@1 Fence Gate=
@1 Fence Rail=
@1 Mese Post Light=
@1 Slab=
@1 Stair=
### doc.lua ###
@1 have an unusual biochemistry that allows them to somehow subsist on ambient heat, in violation of all known laws of thermodynamics. They grow deep underground in frigid, icy caverns that should by all rights be volcanic.=
@1 wood, in addition to being a beautiful blue hue, retains the odd heat-draining ability of living icecaps and is able to quickly freeze nearby water solid.=
A torchspine alternates between active and quiescent phases and emits dim light when active. They can be harvested for torches, and their embers sprout into new torchspines when placed on flammable surfaces.=
Aside from the artistic applications of its particularly dark color, black cap wood is a long-burning fuel source that's as good as coal for some applications. Black cap gills are oily and make for excellent torch fuel.=
@ -53,10 +48,6 @@ Living extract from the cap of a yellow Spindlestem.=
Massive but squat, mature goblin cap mushrooms are the size of small cottages.=
Nether cap wood, in addition to being a beautiful blue hue, retains the odd heat-draining ability of living nether caps and is able to quickly freeze nearby water solid.=
Nether caps have an unusual biochemistry that allows them to somehow subsist on ambient heat, in violation of all known laws of thermodynamics. They grow deep underground in frigid, icy caverns that should by all rights be volcanic.=
Red Spindlestems are a sign of nearby iron deposits - or perhaps Goblin Caps. Their glowing symbiotes can be extracted as a long-lived light source, though the glow is weak.=
Spindlestems are too big to easily pluck by hand but too small to be called a proper tree. Nevertheless, they are a common and useful resource for underground travelers - particularly their glowing caps.=
@ -118,11 +109,10 @@ Goblin Cap Stem Planks=
### nether_cap.lua ###
Nether Cap=
Nether Cap Gills=
Nether Cap Planks=
Nether Cap Spawn=
Nether Cap Stem=
@1 Gills=
@1 Planks=
@1 Spawn=
@1 Stem=
### spindlestem.lua ###

View File

@ -1,4 +1,4 @@
name = df_trees
description = Adds various types of underground fungal "trees". Light kills their saplings, they only grow in the dark.
depends = default
optional_depends = doc, moreblocks, stairs, vessels, basic_materials, farming, doors, beds, df_farming, mapgen_helper
depends = df_dependencies
optional_depends = doc, basic_materials, df_farming, mapgen_helper, looped_node_sound

View File

@ -1,37 +1,43 @@
local S = minetest.get_translator(minetest.get_current_modname())
local nethercap_name = df_dependencies.nethercap_name
--stem
minetest.register_node("df_trees:nether_cap_stem", {
description = S("Nether Cap Stem"),
description = S("@1 Stem", nethercap_name),
_doc_items_longdesc = df_trees.doc.nether_cap_desc,
_doc_items_usagehelp = df_trees.doc.nether_cap_usage,
tiles = {"dfcaverns_nether_cap_stem.png"},
is_ground_content = false,
groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, puts_out_fire = 1, cools_lava = 1, freezes_water = 1, nether_cap = 1},
sounds = df_trees.sounds.wood,
groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, puts_out_fire = 1, cools_lava = 1, freezes_water = 1, nether_cap = 1, handy=1,axey=1, building_block=1, material_wood=1},
sounds = df_dependencies.sound_wood(),
_mcl_blast_resistance = 0.7,
_mcl_hardness = 0.7,
})
--cap
minetest.register_node("df_trees:nether_cap", {
description = S("Nether Cap"),
description = nethercap_name,
_doc_items_longdesc = df_trees.doc.nether_cap_desc,
_doc_items_usagehelp = df_trees.doc.nether_cap_usage,
tiles = {"dfcaverns_nether_cap.png"},
is_ground_content = false,
groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, puts_out_fire = 1, cools_lava = 1, freezes_water = 1, nether_cap = 1},
sounds = df_trees.sounds.nethercap_wood,
groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, puts_out_fire = 1, cools_lava = 1, freezes_water = 1, nether_cap = 1, handy=1,axey=1, building_block=1, material_wood=1},
sounds = df_dependencies.sound_wood({footstep = {name = df_dependencies.soundfile_snow_footstep, gain = 0.2},}),
_mcl_blast_resistance = 0.5,
_mcl_hardness = 0.5,
})
--gills
minetest.register_node("df_trees:nether_cap_gills", {
description = S("Nether Cap Gills"),
description = S("@1 Gills", nethercap_name),
_doc_items_longdesc = df_trees.doc.nether_cap_desc,
_doc_items_usagehelp = df_trees.doc.nether_cap_usage,
tiles = {"dfcaverns_nether_cap_gills.png"},
is_ground_content = false,
light_source = 6,
groups = {snappy = 3, leafdecay = 3, leaves = 1, puts_out_fire = 1, cools_lava = 1, freezes_water = 1, nether_cap = 1},
sounds = df_trees.sounds.leaves,
groups = {snappy = 3, leafdecay = 1, leaves = 1, puts_out_fire = 1, cools_lava = 1, freezes_water = 1, nether_cap = 1,handy=1, hoey=1, shearsy=1, swordy=1, deco_block=1, dig_by_piston=1},
sounds = df_dependencies.sound_leaves(),
drawtype = "plantlike",
paramtype = "light",
drop = {
@ -46,10 +52,13 @@ minetest.register_node("df_trees:nether_cap_gills", {
}
}
},
after_place_node = df_trees.after_place_leaves,
after_place_node = df_dependencies.after_place_leaves,
place_param2 = 1, -- Prevent leafdecay for placed nodes
_mcl_blast_resistance = 0.1,
_mcl_hardness = 0.1,
})
df_trees.register_leafdecay({
df_dependencies.register_leafdecay({
trunks = {"df_trees:nether_cap"}, -- don't need stem nodes here
leaves = {"df_trees:nether_cap_gills"},
radius = 1,
@ -71,23 +80,24 @@ minetest.register_craft({
})
minetest.register_node("df_trees:nether_cap_wood", {
description = S("Nether Cap Planks"),
description = S("@1 Planks", nethercap_name),
_doc_items_longdesc = df_trees.doc.nether_cap_desc,
_doc_items_usagehelp = df_trees.doc.nether_cap_usage,
paramtype2 = "facedir",
place_param2 = 0,
tiles = {"dfcaverns_nether_cap_wood.png"},
is_ground_content = false,
groups = {choppy = 2, oddly_breakable_by_hand = 2, wood = 1, freezes_water = 1},
sounds = df_trees.sounds.wood,
groups = {choppy = 2, oddly_breakable_by_hand = 2, wood = 1, freezes_water = 1, handy=1,axey=1,building_block=1, material_wood=1},
sounds = df_dependencies.sound_wood(),
_mcl_blast_resistance = 0.5,
_mcl_hardness = 0.5,
})
df_trees.register.all_stairs("nether_cap_wood")
df_trees.register.all_fences("nether_cap_wood")
df_dependencies.register_all_stairs_and_fences("nether_cap_wood")
-- sapling
minetest.register_node("df_trees:nether_cap_sapling", {
description = S("Nether Cap Spawn"),
description = S("@1 Spawn", nethercap_name),
_doc_items_longdesc = df_trees.doc.nether_cap_desc,
_doc_items_usagehelp = df_trees.doc.nether_cap_usage,
drawtype = "plantlike",
@ -105,8 +115,10 @@ minetest.register_node("df_trees:nether_cap_sapling", {
fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 7 / 16, 4 / 16}
},
groups = {snappy = 2, dig_immediate = 3,
attached_node = 1, sapling = 1, light_sensitive_fungus = 11},
sounds = df_trees.sounds.leaves,
attached_node = 1, sapling = 1, light_sensitive_fungus = 11, dig_immediate=3,dig_by_piston=1,destroy_by_lava_flow=1,deco_block=1},
sounds = df_dependencies.sound_leaves(),
_mcl_blast_resistance = 0.1,
_mcl_hardness = 0.1,
on_construct = function(pos)
if df_trees.nether_cap_growth_permitted(pos) then
@ -160,12 +172,12 @@ df_trees.spawn_nether_cap_vm = function(vi, area, data)
subterrane.giant_mushroom(vi, area, data, c_stem, c_cap, c_gills, stem_height, cap_radius)
end
local water = df_trees.node_names.water_source
local river_water = df_trees.node_names.river_water_source
local ice = df_trees.node_names.ice
local water_flowing = df_trees.node_names.water_flowing
local river_water_flowing = df_trees.node_names.river_water_flowing
local snow = df_trees.node_names.snow
local water = df_dependencies.node_name_water_source
local river_water = df_dependencies.node_name_river_water_source
local ice = df_dependencies.node_name_ice
local water_flowing = df_dependencies.node_name_water_flowing
local river_water_flowing = df_dependencies.node_name_river_water_flowing
local snow = df_dependencies.node_name_snow
minetest.register_abm{
label = "water freezing",

View File

@ -1,8 +1,8 @@
-- these methods should indicate whether a sapling placed at pos should bother attempting to grow.
-- check soil conditions and biome here, for example.
local stone_with_coal = df_trees.node_names.stone_with_coal
local coalblock = df_trees.node_names.coalblock
local stone_with_coal = df_dependencies.node_name_stone_with_coal
local coalblock = df_dependencies.node_name_coalblock
local is_coal = function(name)
return name == stone_with_coal or name == coalblock
end
@ -26,7 +26,8 @@ end
df_trees.nether_cap_growth_permitted = function(pos)
local below_name = minetest.get_node({x=pos.x, y=pos.y-1, z=pos.z}).name
return minetest.get_item_group(below_name, "cools_lava") > 0 and minetest.get_item_group(below_name, "nether_cap") == 0
return (minetest.get_item_group(below_name, "cools_lava") > 0 or minetest.get_item_group(below_name, "ice") > 0)
and minetest.get_item_group(below_name, "nether_cap") == 0
end
df_trees.spindlestem_growth_permitted = function(pos)

View File

@ -1,49 +1,37 @@
local n1 = { name = "air", prob = 0 } -- external air
local n2 = { name = "df_trees:goblin_cap" }
local n3 = {name = "stairs:slab_goblin_cap_stem_wood", param2 = 2} -- porch top
local n3 = {name = df_dependencies.node_name_slab_goblin_cap_stem_wood, param2 = 2} -- porch top
local n4 = { name = "df_trees:goblin_cap_gills" }
local n6 = { name = "df_trees:goblin_cap_stem", force_place=true } -- walls
local n7 = { name = "df_trees:goblin_cap_stem_wood", force_place=true } -- internal floor
local n8 = { name = "doors:door_wood_a", force_place=true }
local n9 = { name = "doors:hidden", force_place=true }
local n10 = { name = df_trees.node_names.furnace, param2 = 3, force_place=true }
local n8 = { name = df_dependencies.node_name_door_wood_a or "air", force_place=true }
local n9 = { name = df_dependencies.node_name_door_hidden or "air", force_place=true }
local n10 = { name = df_dependencies.node_name_furnace, param2 = 3, force_place=true }
local n11 = { name = "air", force_place=true } -- internal air
local n12 = { name = "beds:bed_bottom", force_place=true }
local n12 = { name = df_dependencies.node_name_bed_bottom or "air", force_place=true }
local n13 = { name = "df_trees:goblin_cap_stem", prob = 198, force_place=true } -- possible window holes
local n16 = { name = df_trees.node_names.chest, param2 = 3, force_place=true }
local n17 = { name = "beds:bed_top", force_place=true }
local n18 = { name = df_trees.node_names.torch_wall, param2 = 4, force_place=true }
local n16 = { name = df_dependencies.node_name_chest, param2 = 3, force_place=true }
local n17 = { name = df_dependencies.node_name_bed_top or "air", force_place=true }
local n18 = { name = df_dependencies.node_name_torch_wall, param2 = 4, force_place=true }
local n19 = { name = "df_trees:goblin_cap_stem" } -- base
local n20 = {name = "stairs:stair_goblin_cap_stem_wood", param2 = 1 }
local n21 = {name = "stairs:stair_goblin_cap_stem_wood", param2 = 3 }
local n22 = {name = "stairs:slab_goblin_cap_stem_wood", param2 = 22}
local n20 = {name = df_dependencies.node_name_stair_goblin_cap_stem_wood, param2 = 1 }
local n21 = {name = df_dependencies.node_name_stair_goblin_cap_stem_wood, param2 = 3 }
local n22 = {name = df_dependencies.node_name_slab_goblin_cap_stem_wood, param2 = 22}
if minetest.get_modpath("vessels") then
n18 = { name = "df_trees:glowing_bottle_red", force_place=true}
end
if not minetest.get_modpath("doors") then
-- replace the door with air
n8 = n11
n9 = n11
end
if not minetest.get_modpath("beds") then
--replace the bed with air
n12 = n11
n17 = n11
end
if not minetest.get_modpath("stairs") then
if not df_dependencies.node_name_stair_goblin_cap_stem_wood then
-- replace stairs with air
n3 = nil
n20 = nil
n21 = nil
n22 = nil
n3 = n1
n20 = n1
n21 = n1
n22 = n1
end
return {
local schematic = {
yslice_prob = {},
size = {y = 9, x = 11, z = 11},
center_pos = {x=5, y=2, z=5},
@ -258,3 +246,9 @@ return {
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
}
}
for index, node in ipairs(schematic.data) do
assert(node.name ~= nil, "undefined node name for index " .. tostring(index) .. " in goblin_cap_big_hut schematic data")
end
return schematic

View File

@ -5,47 +5,29 @@ local n4 = { name = "df_trees:goblin_cap_gills" }
local n5 = { name = "df_trees:goblin_cap_stem", force_place = true } -- walls, force place these
local n6 = { name = "df_trees:goblin_cap_stem", prob = 198, force_place=true } -- possible window holes
local n7 = { name = "df_trees:goblin_cap_stem_wood", force_place=true } -- internal floor
local n8 = { name = df_trees.node_names.furnace, param2 = 2, force_place=true }
local n8 = { name = df_dependencies.node_name_furnace, param2 = 2, force_place=true }
local n9 = { name = "air", force_place=true } -- internal air
local n10 = { name = df_trees.node_names.torch_wall, param2 = 3, force_place = true }
local n12 = {name = "stairs:slab_goblin_cap_stem_wood", param2 = 2} -- porch top
local n13 = { name = "doors:door_wood_a", param2 = 3, force_place = true }
local n14 = { name = "doors:hidden", param2 = 3, force_place = true }
local n10 = { name = df_dependencies.node_name_torch_wall, param2 = 3, force_place = true }
local n12 = {name = df_dependencies.node_name_slab_goblin_cap_stem_wood, param2 = 2} -- porch top
local n13 = { name = df_dependencies.node_name_door_wood_a or "air", param2 = 3, force_place = true }
local n14 = { name = df_dependencies.node_name_door_hidden or "air", param2 = 3, force_place = true }
local n15 = n9 -- internal air, but could be a vessel shelf
local n16 = { name = "beds:bed_top", param2 = 3, force_place = true }
local n17 = { name = "beds:bed_bottom", param2 = 3, force_place = true }
local n18 = { name = df_trees.node_names.chest, force_place = true }
local n19 = { name = df_trees.node_names.torch_wall, param2 = 2, force_place = true }
local n20 = {name = "stairs:stair_goblin_cap_stem_wood" }
local n21 = {name = "stairs:stair_goblin_cap_stem_wood", param2 = 2 }
local n22 = {name = "stairs:slab_goblin_cap_stem_wood", param2 = 22}
local n16 = { name = df_dependencies.node_name_bed_top or "air", param2 = 3, force_place = true }
local n17 = { name = df_dependencies.node_name_bed_bottom or "air", param2 = 3, force_place = true }
local n18 = { name = df_dependencies.node_name_chest, force_place = true }
local n19 = { name = df_dependencies.node_name_torch_wall, param2 = 2, force_place = true }
local n20 = {name = df_dependencies.node_name_stair_goblin_cap_stem_wood }
local n21 = {name = df_dependencies.node_name_stair_goblin_cap_stem_wood, param2 = 2 }
local n22 = {name = df_dependencies.node_name_slab_goblin_cap_stem_wood, param2 = 22}
if minetest.get_modpath("vessels") then
if df_dependencies.node_name_shelf then
-- replace torches with glowing bottles, add vessel shelf
n10 = { name = "df_trees:glowing_bottle_red", force_place=true}
n19 = n10
n15 = { name = "vessels:shelf", param2 = 3, force_place = true }
n15 = { name = df_dependencies.node_name_shelf, param2 = 3, force_place = true }
end
if not minetest.get_modpath("doors") then
-- replace the door with air
n13 = n9
n14 = n9
end
if not minetest.get_modpath("beds") then
--replace the bed with air
n16 = n9
n17 = n9
end
if not minetest.get_modpath("stairs") then
-- replace stairs with air
n12 = nil
n20 = nil
n21 = nil
n22 = nil
end
return {
local schematic = {
yslice_prob = {},
size = {y = 10, x = 13, z = 13},
center_pos = {x=6, y=2, z=6},
@ -324,3 +306,9 @@ return {
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
}
}
for index, node in ipairs(schematic.data) do
assert(node.name ~= nil, "undefined node name for index " .. tostring(index) .. " in goblin_cap_bigger_hut schematic data")
end
return schematic

Binary file not shown.

Binary file not shown.

View File

@ -1,2 +1,5 @@
dfcaverns_fungus_footstep are from https://freesound.org/people/jakeh111/sounds/60853/ under CC-BY-SA 3.0 in 2008 by jakeh111
dfcaverns_spore_tree_pitter_patter are from https://freesound.org/people/martinimeniscus/sounds/199332/ by martinimeniscus under the CC0 public domain license
dfcaverns_spore_tree_pitter_patter are from https://freesound.org/people/martinimeniscus/sounds/199332/ by martinimeniscus under the CC0 public domain license
dfcaverns_torchspine_loop is from https://freesound.org/people/PegasusCZ/sounds/569332/ by PegasusCZ under the CC0 public domain license
dfcaverns_torchspine_ignite is from https://freesound.org/people/deleted_user_4772965/sounds/256510/ by Patrick Hunt5 under the CC0 public domain license

View File

@ -1,12 +1,22 @@
local S = minetest.get_translator(minetest.get_current_modname())
local vessels = minetest.get_modpath("vessels")
local glass_bottle = df_dependencies.node_name_glass_bottle
-- pre-declare
local get_spindlestem_cap_type
-- Copied from subterrane's features.lua
-- Figured that was nicer than adding a dependency for just this little bit
local function copy_pointed_thing(pointed_thing)
return {
type = pointed_thing.type,
above = pointed_thing.above and vector.copy(pointed_thing.above),
under = pointed_thing.under and vector.copy(pointed_thing.under),
ref = pointed_thing.ref,
}
end
local stem_on_place = function(itemstack, placer, pointed_thing)
local pt = pointed_thing
-- check if pointing at a node
@ -43,8 +53,24 @@ local stem_on_place = function(itemstack, placer, pointed_thing)
end
-- add the node and remove 1 item from the itemstack
minetest.add_node(pt.above, {name = itemstack:get_name(), param2 = new_param2})
if not minetest.settings:get_bool("creative_mode", false) then
local newnode= {name = itemstack:get_name(), param2 = new_param2, param1=0}
local oldnode= minetest.get_node(pt.above)
minetest.add_node(pt.above, newnode)
-- Run script hook
local take_item = true
for _, callback in ipairs(core.registered_on_placenodes) do
-- Deepcopy pos, node and pointed_thing because callback can modify them
local place_to_copy = vector.copy(pt.above)
local newnode_copy = {name=newnode.name, param1=newnode.param1, param2=newnode.param2}
local oldnode_copy = {name=oldnode.name, param1=oldnode.param1, param2=oldnode.param2}
local pointed_thing_copy = copy_pointed_thing(pointed_thing)
if callback(place_to_copy, newnode_copy, placer, oldnode_copy, itemstack, pointed_thing_copy) then
take_item = false
end
end
if not minetest.is_creative_enabled(placer:get_player_name()) and take_item then
itemstack:take_item()
end
return itemstack
@ -63,8 +89,8 @@ minetest.register_node("df_trees:spindlestem_stem", {
_doc_items_longdesc = df_trees.doc.spindlestem_desc,
_doc_items_usagehelp = df_trees.doc.spindlestem_usage,
is_ground_content = false,
groups = {wood = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2, spindlestem = 1},
sounds = df_trees.sounds.wood,
groups = {wood = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2, spindlestem = 1, handy=1,axey=1, building_block=1, material_wood=1, fire_encouragement=5, fire_flammability=5},
sounds = df_dependencies.sound_wood(),
tiles = {
"dfcaverns_tower_cap.png",
},
@ -80,6 +106,8 @@ minetest.register_node("df_trees:spindlestem_stem", {
}
},
on_place = stem_on_place,
_mcl_blast_resistance = 2,
_mcl_hardness = 2,
})
minetest.register_craft({
@ -97,8 +125,8 @@ local register_spindlestem_type = function(item_suffix, colour_name, colour_code
is_ground_content = false,
_doc_items_longdesc = df_trees.doc["spindlestem_cap_"..item_suffix.."_desc"],
_doc_items_usagehelp = df_trees.doc["spindlestem_cap_"..item_suffix.."_usage"],
groups = {wood = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2, spindlestem = 1, not_in_creative_inventory = 1},
sounds = df_trees.sounds.wood,
groups = {wood = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2, spindlestem = 1, not_in_creative_inventory = 1, handy=1,axey=1, building_block=1, material_wood=1, fire_encouragement=5, fire_flammability=5},
sounds = df_dependencies.sound_wood(),
tiles = {
"dfcaverns_tower_cap.png^[multiply:#"..colour_code,
"dfcaverns_spindlestem_cap.png^[multiply:#"..colour_code,
@ -121,6 +149,8 @@ local register_spindlestem_type = function(item_suffix, colour_name, colour_code
{-0.1875+disp, -0.3125, -0.1875+disp, 0.3125+disp, -0.1875, 0.3125+disp},
}
},
_mcl_blast_resistance = 2,
_mcl_hardness = 2,
drop = {
-- Maximum number of items to drop
@ -201,11 +231,11 @@ local register_spindlestem_type = function(item_suffix, colour_name, colour_code
burntime = 10,
})
if vessels and light_level > 0 then
local tex = "dfcaverns_vessels_glowing_liquid.png^[multiply:#"..colour_code.."^vessels_glass_bottle.png"
if glass_bottle and light_level > 0 then
local tex = "dfcaverns_vessels_glowing_liquid.png^[multiply:#"..colour_code.."^"..df_dependencies.texture_glass_bottle
local new_light = light_level + math.floor((minetest.LIGHT_MAX-light_level)/2)
local groups = {vessel = 1, dig_immediate = 3, attached_node = 1}
local groups = {vessel = 1, dig_immediate = 3, attached_node = 1, material_glass = 1, destroy_by_lava_flow=1}
if extract_color_group then
groups[extract_color_group] = 1
end
@ -226,23 +256,25 @@ local register_spindlestem_type = function(item_suffix, colour_name, colour_code
fixed = {-0.25, -0.5, -0.25, 0.25, 0.3, 0.25}
},
groups = groups,
sounds = df_trees.sounds.glass,
sounds = df_dependencies.sound_glass(),
light_source = new_light,
_mcl_blast_resistance = 0.5,
_mcl_hardness = 0.5,
})
minetest.register_craft( {
output = "df_trees:glowing_bottle_"..item_suffix.." 3",
type = "shapeless",
recipe = {
"vessels:glass_bottle",
"vessels:glass_bottle",
"vessels:glass_bottle",
glass_bottle,
glass_bottle,
glass_bottle,
cap_item_harvested,
}
})
minetest.register_craft( {
output = "vessels:glass_bottle",
output = glass_bottle,
type = "shapeless",
recipe = {
"df_trees:glowing_bottle_"..item_suffix,
@ -258,7 +290,7 @@ minetest.register_node("df_trees:spindlestem_seedling", {
tiles = {
"dfcaverns_tower_cap.png",
},
groups = {snappy = 3, flammable = 2, plant = 1, attached_node = 1, light_sensitive_fungus = 11, digtron_on_place=1},
groups = {snappy = 3, flammable = 2, plant = 1, attached_node = 1, light_sensitive_fungus = 11, digtron_on_place=1, dig_immediate=3,dig_by_piston=1,destroy_by_lava_flow=1,deco_block=1, compostability=30},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
@ -271,6 +303,8 @@ minetest.register_node("df_trees:spindlestem_seedling", {
{-0.0625 + 0.125, -0.5, -0.125 + 0.125, 0.125 + 0.125, -0.375, 0.0625 + 0.125},
}
},
_mcl_blast_resistance = 0.2,
_mcl_hardness = 0.2,
on_place = stem_on_place,
on_construct = function(pos)
@ -351,6 +385,10 @@ local c_green = minetest.get_content_id("df_trees:spindlestem_cap_green")
local c_cyan = minetest.get_content_id("df_trees:spindlestem_cap_cyan")
local c_golden = minetest.get_content_id("df_trees:spindlestem_cap_golden")
local iron_nodes = df_dependencies.data_iron_containing_nodes
local copper_nodes = df_dependencies.data_copper_containing_nodes
local mese_nodes = df_dependencies.data_mese_containing_nodes
get_spindlestem_cap_type = function(pos)
if minetest.find_node_near(pos, 15, "group:tower_cap") then
return c_white
@ -359,9 +397,9 @@ get_spindlestem_cap_type = function(pos)
return c_red
end
local iron = minetest.find_node_near(pos, 5, df_trees.iron_containing_nodes)
local copper = minetest.find_node_near(pos, 5, df_trees.copper_containing_nodes)
local mese = minetest.find_node_near(pos, 5, df_trees.mese_containing_nodes)
local iron = minetest.find_node_near(pos, 5, iron_nodes)
local copper = minetest.find_node_near(pos, 5, copper_nodes)
local mese = minetest.find_node_near(pos, 5, mese_nodes)
local possibilities = {}
if mese then table.insert(possibilities, c_golden) end

View File

@ -15,8 +15,10 @@ minetest.register_node("df_trees:spore_tree", {
tiles = {"dfcaverns_spore_tree_top.png", "dfcaverns_spore_tree_top.png", "dfcaverns_spore_tree.png"},
paramtype2 = "facedir",
is_ground_content = false,
groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2},
sounds = df_trees.sounds.wood,
groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2, handy=1,axey=1, building_block=1, material_wood=1, fire_encouragement=5, fire_flammability=5},
sounds = df_dependencies.sound_wood(),
_mcl_blast_resistance = 2,
_mcl_hardness = 2,
on_place = minetest.rotate_node,
})
@ -37,12 +39,13 @@ minetest.register_node("df_trees:spore_tree_wood", {
place_param2 = 0,
tiles = {"dfcaverns_spore_tree_wood.png"},
is_ground_content = false,
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, wood = 1},
sounds = df_trees.sounds.wood,
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, wood = 1, handy=1,axey=1, building_block=1, material_wood=1, fire_encouragement=5, fire_flammability=20},
sounds = df_dependencies.sound_wood(),
_mcl_blast_resistance = 3,
_mcl_hardness = 2,
})
df_trees.register.all_stairs("spore_tree_wood")
df_trees.register.all_fences("spore_tree_wood", {burntime = 6})
df_dependencies.register_all_stairs_and_fences("spore_tree_wood", {burntime = 6})
minetest.register_craft({
type = "fuel",
@ -77,7 +80,7 @@ minetest.register_node("df_trees:spore_tree_hyphae", {
waving = 1,
tiles = {"dfcaverns_spore_tree.png"},
is_ground_content = false,
groups = {snappy = 3, leafdecay = 3, flammable = 2, leaves = 1, spore_tree_hyphae = 1},
groups = {snappy = 3, leafdecay = 3, flammable = 2, leaves = 1, spore_tree_hyphae = 1,handy=1, hoey=1, shearsy=1, swordy=1, deco_block=1, dig_by_piston=1, fire_encouragement=15, fire_flammability=30, compostability=30},
walkable = false,
climbable = true,
@ -91,9 +94,12 @@ minetest.register_node("df_trees:spore_tree_hyphae", {
{-0.5, -0.0625, -0.0625, 0.5, 0.0625, 0.0625},
}
},
sounds = df_trees.sounds.leaves,
sounds = df_dependencies.sound_leaves(),
_mcl_blast_resistance = 0.2,
_mcl_hardness = 0.2,
after_place_node = df_trees.after_place_leaves,
after_place_node = df_dependencies.after_place_leaves,
place_param2 = 1, -- Prevent leafdecay for placed nodes
})
minetest.register_node("df_trees:spore_tree_fruiting_body", {
@ -103,9 +109,11 @@ minetest.register_node("df_trees:spore_tree_fruiting_body", {
waving = 1,
tiles = {"dfcaverns_spore_tree.png"},
is_ground_content = false,
groups = {snappy = 3, leafdecay = 3, flammable = 2, leaves = 1, spore_tree_hyphae = 1},
groups = {snappy = 3, leafdecay = 3, flammable = 2, leaves = 1, spore_tree_hyphae = 1,handy=1, hoey=1, shearsy=1, swordy=1, deco_block=1, dig_by_piston=1, fire_encouragement=15, fire_flammability=30, compostability=100},
walkable = false,
climbable = true,
_mcl_blast_resistance = 0.7,
_mcl_hardness = 0.7,
drawtype = "nodebox",
paramtype = "light",
@ -131,12 +139,13 @@ minetest.register_node("df_trees:spore_tree_fruiting_body", {
}
}
},
sounds = df_trees.sounds.leaves,
sounds = df_dependencies.sound_leaves(),
after_place_node = df_trees.after_place_leaves,
after_place_node = df_dependencies.after_place_leaves,
place_param2 = 1, -- Prevent leafdecay for placed nodes
})
df_trees.register_leafdecay({
df_dependencies.register_leafdecay({
trunks = {"df_trees:spore_tree"},
leaves = {"df_trees:spore_tree_hyphae", "df_trees:spore_tree_fruiting_body"},
radius = 3,
@ -161,8 +170,10 @@ minetest.register_node("df_trees:spore_tree_sapling", {
fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 7 / 16, 4 / 16}
},
groups = {snappy = 2, dig_immediate = 3, flammable = 2,
attached_node = 1, sapling = 1, light_sensitive_fungus = 11},
sounds = df_trees.sounds.leaves,
attached_node = 1, sapling = 1, light_sensitive_fungus = 11, dig_immediate=3,dig_by_piston=1,destroy_by_lava_flow=1,deco_block=1, compostability=30},
sounds = df_dependencies.sound_leaves(),
_mcl_blast_resistance = 0.2,
_mcl_hardness = 0.2,
on_construct = function(pos)
if df_trees.spore_tree_growth_permitted(pos) then
@ -330,7 +341,9 @@ minetest.register_node("df_trees:spore_tree_ladder", {
selection_box = {
type = "wallmounted",
},
groups = {choppy = 2, oddly_breakable_by_hand = 3, flammable = 2},
groups = {choppy = 2, oddly_breakable_by_hand = 3, flammable = 2, handy=1,axey=1, attached_node=1, deco_block=1, dig_by_piston=1, material_wood=1, fire_encouragement=5, fire_flammability=20},
legacy_wallmounted = true,
sounds = df_trees.sounds.wood,
sounds = df_dependencies.sound_wood(),
_mcl_blast_resistance = 1,
_mcl_hardness = 1,
})

View File

@ -3,11 +3,21 @@ local S = minetest.get_translator(minetest.get_current_modname())
local torchspine_min_delay = df_trees.config.blood_thorn_delay_multiplier*df_trees.config.tree_min_growth_delay
local torchspine_max_delay = df_trees.config.blood_thorn_delay_multiplier*df_trees.config.tree_max_growth_delay
local looped_node_sound_modpath = minetest.get_modpath("looped_node_sound")
-- Rather than make this whole mod depend on subterrane just for this, I copied and pasted a chunk of stalactite code.
local x_disp = 0.125
local z_disp = 0.125
local function copy_pointed_thing(pointed_thing)
return {
type = pointed_thing.type,
above = pointed_thing.above and vector.copy(pointed_thing.above),
under = pointed_thing.under and vector.copy(pointed_thing.under),
ref = pointed_thing.ref,
}
end
local stal_on_place = function(itemstack, placer, pointed_thing)
local pt = pointed_thing
-- check if pointing at a node
@ -44,8 +54,24 @@ local stal_on_place = function(itemstack, placer, pointed_thing)
end
-- add the node and remove 1 item from the itemstack
local newnode= {name = itemstack:get_name(), param2 = new_param2, param1=0}
local oldnode= minetest.get_node(pt.above)
minetest.add_node(pt.above, {name = itemstack:get_name(), param2 = new_param2})
if not minetest.settings:get_bool("creative_mode", false) then
-- Run script hook
local take_item = true
for _, callback in ipairs(core.registered_on_placenodes) do
-- Deepcopy pos, node and pointed_thing because callback can modify them
local place_to_copy = vector.copy(pt.above)
local newnode_copy = {name=newnode.name, param1=newnode.param1, param2=newnode.param2}
local oldnode_copy = {name=oldnode.name, param1=oldnode.param1, param2=oldnode.param2}
local pointed_thing_copy = copy_pointed_thing(pointed_thing)
if callback(place_to_copy, newnode_copy, placer, oldnode_copy, itemstack, pointed_thing_copy) then
take_item = false
end
end
if not minetest.is_creative_enabled(placer:get_player_name()) and take_item then
itemstack:take_item()
end
return itemstack
@ -94,19 +120,19 @@ local grow_torchspine = function(pos)
pos.y = pos.y + 1
minetest.get_node_timer(pos):start(math.random(torchspine_min_delay, torchspine_max_delay))
for i = 1, height+1 do
minetest.swap_node(pos, {name=torchspine_list[i], param2=param2})
minetest.swap_node(pos, {name=torchspine_list[i], param2 = param2})
pos.y = pos.y - 1
end
end
local torch_node = df_trees.node_names.torch
local torch_node = df_dependencies.node_name_torch
minetest.register_node("df_trees:torchspine_1", {
description = S("Torchspine Tip"),
_doc_items_longdesc = df_trees.doc.torchspine_desc,
_doc_items_usagehelp = df_trees.doc.torchspine_usage,
tiles = {"dfcaverns_torchspine_0.5.png", "dfcaverns_torchspine_1.5.png", "dfcaverns_torchspine_1.png"},
groups = {oddly_breakable_by_hand = 1, subterrane_stal_align = 1, flow_through = 1, fall_damage_add_percent = 100, df_trees_torchspine = 1},
groups = {oddly_breakable_by_hand = 1, subterrane_stal_align = 1, flow_through = 1, fall_damage_add_percent = 100, df_trees_torchspine = 1, pickaxey=1, building_block=1, material_stone=1},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
@ -116,6 +142,9 @@ minetest.register_node("df_trees:torchspine_1", {
type = "fixed",
fixed = stal_box_1,
},
_mcl_blast_resistance = 6,
_mcl_hardness = 2,
on_place = stal_on_place,
on_punch = function(pos, node, puncher)
if puncher:get_wielded_item():get_name() == torch_node then
@ -127,6 +156,7 @@ minetest.register_node("df_trees:torchspine_1", {
local above_def = minetest.registered_nodes[minetest.get_node({x=pos.x, y=pos.y+1, z=pos.z}).name]
if above_def and above_def.buildable_to then
minetest.swap_node(pos, {name="df_trees:torchspine_1_lit", param2=minetest.get_node(pos).param2})
minetest.sound_play({pos = pos}, {name="dfcaverns_torchspine_ignite"}, true)
end
minetest.get_node_timer(pos):start(math.random(torchspine_min_delay, torchspine_max_delay))
end,
@ -140,8 +170,8 @@ minetest.register_node("df_trees:torchspine_1_lit", {
description = S("Torchspine Tip"),
_doc_items_longdesc = df_trees.doc.torchspine_desc,
_doc_items_usagehelp = df_trees.doc.torchspine_usage,
tiles = {df_trees.textures.gold_block, "dfcaverns_torchspine_1.5.png", "dfcaverns_torchspine_1_lit.png"},
groups = {oddly_breakable_by_hand = 1, subterrane_stal_align = 1, flow_through = 1, torch = 1, fall_damage_add_percent = 150, smokey = 4, df_trees_torchspine = 1},
tiles = {df_dependencies.texture_gold_block, "dfcaverns_torchspine_1.5.png", "dfcaverns_torchspine_1_lit.png"},
groups = {oddly_breakable_by_hand = 1, subterrane_stal_align = 1, flow_through = 1, torch = 1, fall_damage_add_percent = 150, smokey = 4, df_trees_torchspine = 1,pickaxey=1, building_block=1, material_stone=1,set_on_fire=3},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
@ -152,6 +182,9 @@ minetest.register_node("df_trees:torchspine_1_lit", {
type = "fixed",
fixed = stal_box_1,
},
_mcl_blast_resistance = 6,
_mcl_hardness = 2,
on_place = stal_on_place,
on_timer = function(pos)
@ -163,12 +196,21 @@ minetest.register_node("df_trees:torchspine_1_lit", {
end,
})
if looped_node_sound_modpath then
looped_node_sound.register({
node_list = {"df_trees:torchspine_1_lit"},
sound = "dfcaverns_torchspine_loop",
max_gain = 0.5,
gain_per_node = 0.05,
})
end
minetest.register_node("df_trees:torchspine_2", {
description = S("Torchspine"),
_doc_items_longdesc = df_trees.doc.torchspine_desc,
_doc_items_usagehelp = df_trees.doc.torchspine_usage,
tiles = {"dfcaverns_torchspine_1.5.png", "dfcaverns_torchspine_2.5.png", "dfcaverns_torchspine_2.png"},
groups = {oddly_breakable_by_hand = 1, subterrane_stal_align = 1, flow_through = 1, fall_damage_add_percent = 50, df_trees_torchspine = 1},
groups = {oddly_breakable_by_hand = 1, subterrane_stal_align = 1, flow_through = 1, fall_damage_add_percent = 50, df_trees_torchspine = 1,pickaxey=1, building_block=1, material_stone=1},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
@ -177,6 +219,9 @@ minetest.register_node("df_trees:torchspine_2", {
type = "fixed",
fixed = stal_box_2,
},
_mcl_blast_resistance = 6,
_mcl_hardness = 2,
drop = {
max_items = 1,
items = {
@ -194,7 +239,7 @@ minetest.register_node("df_trees:torchspine_3", {
_doc_items_longdesc = df_trees.doc.torchspine_desc,
_doc_items_usagehelp = df_trees.doc.torchspine_usage,
tiles = {"dfcaverns_torchspine_2.5.png", "dfcaverns_torchspine_3.5.png", "dfcaverns_torchspine_3.png"},
groups = {oddly_breakable_by_hand = 1, subterrane_stal_align = 1, flow_through = 1, df_trees_torchspine = 1},
groups = {oddly_breakable_by_hand = 1, subterrane_stal_align = 1, flow_through = 1, df_trees_torchspine = 1,pickaxey=1, building_block=1, material_stone=1},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
@ -203,6 +248,9 @@ minetest.register_node("df_trees:torchspine_3", {
type = "fixed",
fixed = stal_box_3,
},
_mcl_blast_resistance = 6,
_mcl_hardness = 2,
drop = {
max_items = 1,
items = {
@ -224,7 +272,7 @@ minetest.register_node("df_trees:torchspine_4", {
_doc_items_longdesc = df_trees.doc.torchspine_desc,
_doc_items_usagehelp = df_trees.doc.torchspine_usage,
tiles = {"dfcaverns_torchspine_3.5.png", "dfcaverns_torchspine_4.5.png", "dfcaverns_torchspine_4.png"},
groups = {oddly_breakable_by_hand = 1, subterrane_stal_align = 1, flow_through = 1, df_trees_torchspine = 1},
groups = {oddly_breakable_by_hand = 1, subterrane_stal_align = 1, flow_through = 1, df_trees_torchspine = 1,pickaxey=1, building_block=1, material_stone=1},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
@ -233,6 +281,9 @@ minetest.register_node("df_trees:torchspine_4", {
type = "fixed",
fixed = stal_box_4,
},
_mcl_blast_resistance = 6,
_mcl_hardness = 2,
drop = {
max_items = 1,
items = {
@ -253,7 +304,7 @@ minetest.register_node("df_trees:torchspine_ember", {
_doc_items_longdesc = df_trees.doc.torchspine_desc,
_doc_items_usagehelp = df_trees.doc.torchspine_usage,
tiles = {"dfcaverns_torchspine_0.5.png",},
groups = {oddly_breakable_by_hand = 1, subterrane_stal_align = 1, flow_through = 1},
groups = {oddly_breakable_by_hand = 1, subterrane_stal_align = 1, flow_through = 1,pickaxey=1, building_block=1, material_stone=1,set_on_fire=1},
drawtype = "nodebox",
paramtype = "light",
light_source = 2,
@ -267,6 +318,9 @@ minetest.register_node("df_trees:torchspine_ember", {
{-0.0625 + x_disp, -0.5, -0.125 + z_disp, 0.125 + x_disp, -0.375, 0.0625 + z_disp},
}
},
_mcl_blast_resistance = 10,
_mcl_hardness = 1,
on_place = stal_on_place,
on_construct = function(pos)
@ -281,6 +335,7 @@ minetest.register_node("df_trees:torchspine_ember", {
on_timer = function(pos)
minetest.swap_node(pos, {name="df_trees:torchspine_1", param2=minetest.get_node(pos).param2})
minetest.get_node_timer(pos):start(math.random(torchspine_min_delay, torchspine_max_delay))
minetest.sound_play({pos = pos}, {name="dfcaverns_torchspine_ignite"}, true)
end,
})
@ -337,7 +392,12 @@ df_trees.spawn_torchspine_vm = function(vi, area, data, data_param2, height, lit
local index = vi + area.ystride*i
data[index] = list[height-i]
data_param2[index] = param2
end
end
local pos = area:position(vi)
pos.y = pos.y+height-1
local node = minetest.get_node(pos)
minetest.get_node_timer(pos):start(math.random()*3000)
end
minetest.register_lbm({

View File

@ -7,8 +7,10 @@ minetest.register_node("df_trees:tower_cap_stem", {
_doc_items_usagehelp = df_trees.doc.tower_cap_usage,
tiles = {"dfcaverns_tower_cap.png"},
is_ground_content = false,
groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2, tower_cap = 1},
groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2, tower_cap = 1, tower_cap_trunk = 1, handy=1,axey=1, building_block=1, material_wood=1, fire_encouragement=5, fire_flammability=5},
sounds = df_trees.node_sound_tree_soft_fungus_defaults(),
_mcl_blast_resistance = 2,
_mcl_hardness = 2,
})
--cap
@ -18,8 +20,10 @@ minetest.register_node("df_trees:tower_cap", {
_doc_items_usagehelp = df_trees.doc.tower_cap_usage,
tiles = {"dfcaverns_tower_cap.png"},
is_ground_content = false,
groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2, tower_cap = 1},
groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2, tower_cap = 1, tower_cap_trunk = 1, handy=1,axey=1, building_block=1, material_wood=1, fire_encouragement=5, fire_flammability=5},
sounds = df_trees.node_sound_tree_soft_fungus_defaults(),
_mcl_blast_resistance = 2,
_mcl_hardness = 2,
})
--gills
@ -29,8 +33,8 @@ minetest.register_node("df_trees:tower_cap_gills", {
_doc_items_usagehelp = df_trees.doc.tower_cap_usage,
tiles = {"dfcaverns_tower_cap_gills.png"},
is_ground_content = false,
groups = {snappy = 3, leafdecay = 3, flammable = 2, leaves = 1, tower_cap = 1},
sounds = df_trees.sounds.leaves,
groups = {snappy = 3, leafdecay = 3, flammable = 2, leaves = 1, tower_cap = 1,handy=1, hoey=1, shearsy=1, swordy=1, deco_block=1, dig_by_piston=1, fire_encouragement=15, fire_flammability=30, compostability=30},
sounds = df_dependencies.sound_leaves(),
drawtype = "plantlike",
paramtype = "light",
drop = {
@ -45,10 +49,12 @@ minetest.register_node("df_trees:tower_cap_gills", {
}
}
},
after_place_node = df_trees.after_place_leaves,
_mcl_blast_resistance = 0.2,
_mcl_hardness = 0.2,
after_place_node = df_dependencies.after_place_leaves,
})
df_trees.register_leafdecay({
df_dependencies.register_leafdecay({
trunks = {"df_trees:tower_cap"}, -- don't need stem nodes here
leaves = {"df_trees:tower_cap_gills"},
radius = 1,
@ -58,14 +64,7 @@ df_trees.register_leafdecay({
minetest.register_craft({
output = 'df_trees:tower_cap_wood 4',
recipe = {
{'df_trees:tower_cap'},
}
})
minetest.register_craft({
output = 'df_trees:tower_cap_wood 4',
recipe = {
{'df_trees:tower_cap_stem'},
{'group:tower_cap_trunk'},
}
})
@ -77,12 +76,13 @@ minetest.register_node("df_trees:tower_cap_wood", {
place_param2 = 0,
tiles = {"dfcaverns_tower_cap_wood.png"},
is_ground_content = false,
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, wood = 1},
sounds = df_trees.sounds.wood,
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, wood = 1, handy=1,axey=1, building_block=1, material_wood=1, fire_encouragement=5, fire_flammability=20},
sounds = df_dependencies.sound_wood(),
_mcl_blast_resistance = 3,
_mcl_hardness = 2,
})
df_trees.register.all_stairs("tower_cap_wood")
df_trees.register.all_fences("tower_cap_wood", {burntime = 7})
df_dependencies.register_all_stairs_and_fences("tower_cap_wood", {burntime = 7})
minetest.register_craft({
type = "fuel",
@ -130,8 +130,10 @@ minetest.register_node("df_trees:tower_cap_sapling", {
fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 7 / 16, 4 / 16}
},
groups = {snappy = 2, dig_immediate = 3, flammable = 2,
attached_node = 1, sapling = 1, light_sensitive_fungus = 11},
sounds = df_trees.sounds.leaves,
attached_node = 1, sapling = 1, light_sensitive_fungus = 11, dig_immediate=3,dig_by_piston=1,destroy_by_lava_flow=1,deco_block=1, compostability=30},
sounds = df_dependencies.sound_leaves(),
_mcl_blast_resistance = 0.2,
_mcl_hardness = 0.2,
on_construct = function(pos)
if df_trees.tower_cap_growth_permitted(pos) then

View File

@ -17,9 +17,11 @@ minetest.register_node("df_trees:tunnel_tube", {
drawtype = "nodebox",
is_ground_content = false,
paramtype = "light",
groups = {choppy = 3, tree = 1, oddly_breakable_by_hand=1, flammable = 2},
sounds = df_trees.sounds.wood,
groups = {choppy = 3, tree = 1, oddly_breakable_by_hand=1, flammable = 2, handy=1,axey=1, building_block=1, material_wood=1, fire_encouragement=5, fire_flammability=5},
sounds = df_dependencies.sound_wood(),
on_place = minetest.rotate_node,
_mcl_blast_resistance = 2,
_mcl_hardness = 2,
node_box = {
type = "fixed",
@ -43,8 +45,8 @@ minetest.register_node("df_trees:tunnel_tube_slant_bottom", {
mesh = "tunnel_tube_slant.obj",
paramtype = "light",
drop = "df_trees:tunnel_tube",
groups = {choppy = 3, tree = 1, oddly_breakable_by_hand=1, flammable = 2},
sounds = df_trees.sounds.wood,
groups = {choppy = 3, tree = 1, oddly_breakable_by_hand=1, flammable = 2, handy=1,axey=1, building_block=1, material_wood=1, fire_encouragement=5, fire_flammability=5},
sounds = df_dependencies.sound_wood(),
on_place = minetest.rotate_node,
selection_box = {
type = "fixed",
@ -60,7 +62,8 @@ minetest.register_node("df_trees:tunnel_tube_slant_bottom", {
{-0.5, 0.0, -0.875, 0.5, 0.5, 0.125},
},
},
_mcl_blast_resistance = 2,
_mcl_hardness = 2,
})
minetest.register_node("df_trees:tunnel_tube_slant_top", {
@ -74,8 +77,8 @@ minetest.register_node("df_trees:tunnel_tube_slant_top", {
mesh = "tunnel_tube_slant_2.obj",
paramtype = "light",
drop = "df_trees:tunnel_tube",
groups = {choppy = 3, tree = 1, oddly_breakable_by_hand=1, flammable = 2},
sounds = df_trees.sounds.wood,
groups = {choppy = 3, tree = 1, oddly_breakable_by_hand=1, flammable = 2, handy=1,axey=1, building_block=1, material_wood=1, fire_encouragement=5, fire_flammability=5},
sounds = df_dependencies.sound_wood(),
on_place = minetest.rotate_node,
selection_box = {
type = "fixed",
@ -91,6 +94,8 @@ minetest.register_node("df_trees:tunnel_tube_slant_top", {
{-0.5, 0.0, -0.375, 0.5, 0.5, 0.625},
},
},
_mcl_blast_resistance = 2,
_mcl_hardness = 2,
})
minetest.register_node("df_trees:tunnel_tube_slant_full", {
@ -104,8 +109,8 @@ minetest.register_node("df_trees:tunnel_tube_slant_full", {
mesh = "tunnel_tube_slant_full.obj",
paramtype = "light",
drop = "df_trees:tunnel_tube",
groups = {choppy = 3, tree = 1, oddly_breakable_by_hand=1, flammable = 2},
sounds = df_trees.sounds.wood,
groups = {choppy = 3, tree = 1, oddly_breakable_by_hand=1, flammable = 2, handy=1,axey=1, building_block=1, material_wood=1, fire_encouragement=5, fire_flammability=5},
sounds = df_dependencies.sound_wood(),
on_place = minetest.rotate_node,
selection_box = {
type = "fixed",
@ -121,6 +126,8 @@ minetest.register_node("df_trees:tunnel_tube_slant_full", {
{-0.5, 0, -1.25, 0.5, 0.5, -0.25},
},
},
_mcl_blast_resistance = 2,
_mcl_hardness = 2,
})
--Wood
@ -133,7 +140,7 @@ minetest.register_craft({
-- Paper
minetest.register_craft({
output = df_trees.node_names.paper .. " 3",
output = df_dependencies.node_name_paper .. " 3",
type = "shapeless",
recipe = {'df_trees:tunnel_tube', 'bucket:bucket_water'},
replacements = {{"bucket:bucket_water", "bucket:bucket_empty"}},
@ -147,12 +154,13 @@ minetest.register_node("df_trees:tunnel_tube_wood", {
place_param2 = 0,
tiles = {"dfcaverns_tunnel_tube_wood_top.png", "dfcaverns_tunnel_tube_wood_top.png", "dfcaverns_tunnel_tube_wood_side.png"},
is_ground_content = false,
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, wood = 1},
sounds = df_trees.sounds.wood,
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, wood = 1, handy=1,axey=1, building_block=1, material_wood=1, fire_encouragement=5, fire_flammability=20},
sounds = df_dependencies.sound_wood(),
_mcl_blast_resistance = 10,
_mcl_hardness = 2,
})
df_trees.register.all_stairs("tunnel_tube_wood")
df_trees.register.all_fences("tunnel_tube_wood", {burntime = 9})
df_dependencies.register_all_stairs_and_fences("tunnel_tube_wood", {burntime = 9})
minetest.register_craft({
type = "fuel",
@ -172,11 +180,42 @@ minetest.register_craft({
-- TNT
-----------------------------------------------------------------------------------------------------------
local gunpowder = df_dependencies.node_name_gunpowder
local tnt_ignite_sound = df_dependencies.soundfile_tnt_ignite
local tnt_boom = df_dependencies.tnt_boom
if df_trees.config.enable_tnt then
local tnt_radius = tonumber(minetest.settings:get("tnt_radius") or 3) * 2/3
local tnt_def = {radius = tnt_radius, damage_radius = tnt_radius * 2}
local torch_item = df_trees.node_names.torch
local torch_item = df_dependencies.node_name_torch
local drop_items = {
max_items = 1,
items = {
{
items = {'df_trees:tunnel_tube_sapling'},
rarity = 2,
},
}
}
if gunpowder then
drop_items.max_items = 3
table.insert(drop_items.items, {
items = {'df_trees:tunnel_tube_sapling', gunpowder},
rarity = 2,
})
table.insert(drop_items.items, {
items = {'df_trees:tunnel_tube_sapling', gunpowder .. ' 2'},
rarity = 2,
})
end
local on_burn = function(pos)
minetest.swap_node(pos, {name = "df_trees:tunnel_tube_fruiting_body_burning"})
minetest.registered_nodes["df_trees:tunnel_tube_fruiting_body_burning"].on_construct(pos)
end
minetest.register_node("df_trees:tunnel_tube_fruiting_body", {
description = S("Tunnel Tube Fruiting Body"),
@ -185,26 +224,12 @@ if df_trees.config.enable_tnt then
tiles = {"dfcaverns_tunnel_tube.png^[multiply:#b09090"},
paramtype2 = "facedir",
is_ground_content = false,
groups = {choppy = 3, oddly_breakable_by_hand=1, flammable = 2, tnt = 1,},
sounds = df_trees.sounds.wood,
groups = {choppy = 3, oddly_breakable_by_hand=1, flammable = 2, tnt = 1, handy=1, hoey=1, shearsy=1, swordy=1, deco_block=1, dig_by_piston=1, fire_encouragement=15, fire_flammability=30},
sounds = df_dependencies.sound_wood(),
on_place = minetest.rotate_node,
drop = {
max_items = 3,
items = {
{
items = {'df_trees:tunnel_tube_sapling'},
rarity = 2,
},
{
items = {'df_trees:tunnel_tube_sapling', 'tnt:gunpowder'},
rarity = 2,
},
{
items = {'df_trees:tunnel_tube_sapling', 'tnt:gunpowder 2'},
rarity = 2,
},
},
},
drop = drop_items,
_mcl_blast_resistance = 12,
_mcl_hardness = 2,
on_punch = function(pos, node, puncher)
if puncher:get_wielded_item():get_name() == torch_item then
@ -214,25 +239,22 @@ if df_trees.config.enable_tnt then
end
end,
on_blast = function(pos, intensity)
minetest.swap_node(pos, {name="air"})
minetest.after(0.1, function()
tnt.boom(pos, tnt_def)
tnt_boom(pos, tnt_def)
end)
end,
mesecons = {effector =
{action_on =
function(pos)
tnt.boom(pos, tnt_def)
minetest.swap_node(pos, {name="air"})
tnt_boom(pos, tnt_def)
end
}
},
on_burn = function(pos)
minetest.swap_node(pos, {name = "df_trees:tunnel_tube_fruiting_body_burning"})
minetest.registered_nodes["df_trees:tunnel_tube_fruiting_body_burning"].on_construct(pos)
end,
on_ignite = function(pos, igniter)
minetest.swap_node(pos, {name = "df_trees:tunnel_tube_fruiting_body_burning"})
minetest.registered_nodes["df_trees:tunnel_tube_fruiting_body_burning"].on_construct(pos)
end,
on_burn = on_burn,
on_ignite = on_burn,
_on_burn = on_burn,
})
minetest.register_node("df_trees:tunnel_tube_fruiting_body_burning", {
@ -244,14 +266,21 @@ if df_trees.config.enable_tnt then
groups = {not_in_creative_inventory = 1,},
light_source = 5,
drop = "",
sounds = df_trees.sounds.wood,
sounds = df_dependencies.sound_wood(),
_mcl_blast_resistance = 0,
_mcl_hardness = 2,
on_timer = function(pos, elapsed)
tnt.boom(pos, tnt_def)
minetest.swap_node(pos, {name="air"})
tnt_boom(pos, tnt_def)
end,
on_blast = function(pos)
minetest.swap_node(pos, {name="air"})
minetest.after(0.1, function()
tnt_boom(pos, tnt_def)
end)
end,
-- unaffected by explosions
on_blast = function() end,
on_construct = function(pos)
minetest.sound_play("tnt_ignite", {pos = pos})
minetest.sound_play(tnt_ignite_sound, {pos = pos})
minetest.get_node_timer(pos):start(4)
end,
})
@ -263,9 +292,11 @@ else
tiles = {"dfcaverns_tunnel_tube.png^[multiply:#b09090"},
paramtype2 = "facedir",
is_ground_content = false,
groups = {choppy = 3, oddly_breakable_by_hand=1, flammable = 2},
sounds = df_trees.sounds.wood,
groups = {choppy = 3, oddly_breakable_by_hand=1, flammable = 2,handy=1, hoey=1, shearsy=1, swordy=1, deco_block=1, dig_by_piston=1, fire_encouragement=15, fire_flammability=30},
sounds = df_dependencies.sound_wood(),
on_place = minetest.rotate_node,
_mcl_blast_resistance = 12,
_mcl_hardness = 2,
drop = {
max_items = 3,
@ -307,8 +338,10 @@ minetest.register_node("df_trees:tunnel_tube_sapling", {
fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 7 / 16, 4 / 16}
},
groups = {snappy = 2, dig_immediate = 3, flammable = 2,
attached_node = 1, sapling = 1, light_sensitive_fungus = 11},
sounds = df_trees.sounds.leaves,
attached_node = 1, sapling = 1, light_sensitive_fungus = 11, dig_immediate=3,dig_by_piston=1,destroy_by_lava_flow=1,deco_block=1, compostability=30},
sounds = df_dependencies.sound_leaves(),
_mcl_blast_resistance = 10,
_mcl_hardness = 0.2,
on_construct = function(pos)
if df_trees.tunnel_tube_growth_permitted(pos) then
@ -317,6 +350,7 @@ minetest.register_node("df_trees:tunnel_tube_sapling", {
df_trees.config.tunnel_tube_delay_multiplier*df_trees.config.tree_max_growth_delay))
end
end,
on_destruct = function(pos)
minetest.get_node_timer(pos):stop()
end,