Compare commits

...

10 Commits

Author SHA1 Message Date
tenplus1
7599ae9864 cobble stair fix for flux's stairplus mod 2024-12-30 08:04:59 +00:00
tenplus1
6bd48f4acf add pond schematic and chance node 2024-12-29 15:33:00 +00:00
tenplus1
b8daffa1ac revert coral path 2024-12-21 08:11:22 +00:00
tenplus1
bba292b317 tweak 2024-12-18 12:58:45 +00:00
tenplus1
c43a9834ea tweak coral path 2024-12-18 07:56:08 +00:00
tenplus1
a5403839fb add stone spikes under caves biome. 2024-12-16 09:08:34 +00:00
tenplus1
caa41b322c tweak schematics 2024-12-07 18:25:33 +00:00
tenplus1
19e889c9b8 add deep sea vent, tweak lbm, add recipe 2024-12-07 11:38:12 +00:00
tenplus1
977914837c replace water drop abm with on_flood 2024-12-05 13:21:51 +00:00
tenplus1
8ffacbfb59 change desert stone spike to desert cobble 2024-12-03 14:24:00 +00:00
28 changed files with 326 additions and 126 deletions

View File

@ -19,7 +19,7 @@ TODO:
#### Lucky Blocks
It provides 65 new lucky blocks if the mod is detected.
It provides 66 new lucky blocks if the mod is detected.
## Technical info
-----------------
@ -110,6 +110,7 @@ who helped make this mod bigger and better throughout it's release :)
the new layout for compatibility if wanted.
- Update settings.
- Candles use [multiply for colour.
- Add desert stone spikes to caves biome, and stone spikes underneath.
### 1.31
- Fix fishing biome checks

View File

@ -13,6 +13,15 @@ local function register_decoration(enabled, def)
minetest.register_decoration(def)
end
-- ponds
register_decoration(ethereal.mesa, {
place_on = {"group:bakedclay"},
sidelen = 32, fill_ratio = 0.003, y_min = 18, y_max = 72,
biomes = {"mesa"},
decoration = {"ethereal:pond"},
spawn_by = "group:bakedclay", num_spawn_by = 8})
-- thin ice
register_decoration(ethereal.frost, {
@ -431,7 +440,7 @@ if minetest.get_modpath("butterflies") then
"butterflies:butterfly_white", "butterflies:butterfly_red",
"butterflies:butterfly_violet"
},
run_at_every_load = true,
run_at_every_load = false,
action = function(pos) minetest.get_node_timer(pos):start(5) end
})
@ -455,7 +464,7 @@ if minetest.get_modpath("fireflies") then
minetest.register_lbm({
name = ":fireflies:firefly_timer",
nodenames = {"fireflies:firefly", "fireflies:hidden_firefly"},
run_at_every_load = true,
run_at_every_load = false,
action = function(pos) minetest.get_node_timer(pos):start(5) end
})

View File

@ -1,6 +1,8 @@
local S = minetest.get_translator("ethereal")
local math_random = math.random
-- override default dirt (to stop caves cutting away dirt)
minetest.override_item("default:dirt", {is_ground_content = ethereal.cavedirt})
@ -64,7 +66,7 @@ end
-- flower spread, also crystal and fire flower regeneration
local flower_spread = function(pos, node)
local function flower_spread(pos, node)
if (minetest.get_node_light(pos) or 0) < 13 then return end
@ -83,7 +85,7 @@ local flower_spread = function(pos, node)
if #grass > 4
and not minetest.find_node_near(pos, 4, {"ethereal:crystal_spike"}) then
pos = grass[math.random(#grass)]
pos = grass[math_random(#grass)]
pos.y = pos.y - 1
@ -105,7 +107,7 @@ local flower_spread = function(pos, node)
if #grass > 8
and not minetest.find_node_near(pos, 4, {"ethereal:fire_flower"}) then
pos = grass[math.random(#grass)]
pos = grass[math_random(#grass)]
pos.y = pos.y - 1
@ -137,7 +139,7 @@ local flower_spread = function(pos, node)
if #seedling > 0 then
pos = seedling[math.random(#seedling)]
pos = seedling[math_random(#seedling)]
pos.y = pos.y + 1
@ -149,7 +151,7 @@ end
-- grow papyrus up to 4 high and bamboo up to 8 high
local grow_papyrus = function(pos, node)
local function grow_papyrus(pos, node)
local oripos = pos.y
local high = 4
@ -234,7 +236,7 @@ if not minetest.get_modpath("bakedclay") then
minetest.register_node(":bakedclay:red", {
description = S("Red Baked Clay"),
tiles = {"baked_clay_red.png"},
groups = {cracky = 3},
groups = {cracky = 3, bakedclay = 1},
is_ground_content = ethereal.cavedirt,
sounds = default.node_sound_stone_defaults()
})
@ -242,7 +244,7 @@ if not minetest.get_modpath("bakedclay") then
minetest.register_node(":bakedclay:orange", {
description = S("Orange Baked Clay"),
tiles = {"baked_clay_orange.png"},
groups = {cracky = 3},
groups = {cracky = 3, bakedclay = 1},
is_ground_content = ethereal.cavedirt,
sounds = default.node_sound_stone_defaults()
})
@ -250,7 +252,7 @@ if not minetest.get_modpath("bakedclay") then
minetest.register_node(":bakedclay:grey", {
description = S("Grey Baked Clay"),
tiles = {"baked_clay_grey.png"},
groups = {cracky = 3},
groups = {cracky = 3, bakedclay = 1},
is_ground_content = ethereal.cavedirt,
sounds = default.node_sound_stone_defaults()
})
@ -258,7 +260,7 @@ if not minetest.get_modpath("bakedclay") then
minetest.register_node(":bakedclay:brown", {
description = S("Brown Baked Clay"),
tiles = {"baked_clay_brown.png"},
groups = {cracky = 3},
groups = {cracky = 3, bakedclay = 1},
is_ground_content = ethereal.cavedirt,
sounds = default.node_sound_stone_defaults()
})

View File

@ -14,6 +14,7 @@ lucky_block:add_schematics({
{"basandrabush", ethereal.basandrabush, {x = 1, y = 0, z = 1}},
{"mushroomone", ethereal.mushroomone, {x = 4, y = 0, z = 4}},
{"mushroomtwo", ethereal.mushroomtwo, {x = 1, y = 0, z = 1}},
{"underspike", ethereal.desertstone_under_spike, {x = 1, y = 0, z = 1}},
})
-- add lucky blocks
@ -62,6 +63,7 @@ lucky_block:add_blocks({
{"dro", {"ethereal:shovel_crystal"}},
{"dro", {"ethereal:fishing_rod_baited"}},
{"exp"},
{"sch", "underspike", 0, false},
{"dro", {"ethereal:fire_dust"}, 2},
{"exp", 4},
{"dro", {"ethereal:crystal_gilly_staff"}},

View File

@ -68,7 +68,7 @@ add_ore("default:stone_with_copper", "default:desert_stone", 9*9*9, 5, 3, -31000
-- Coral Sand
add_ore("ethereal:sandy", "default:sand", 10*10*10, 24, 4, -100, -10)
add_ore("ethereal:sandy", "default:sand", 10*10*10, 24, 4, -45, -10)
-- Etherium

View File

@ -38,11 +38,11 @@ ethereal.bambootree = {
_,_,_,
_,B,_,
_,b,_,
_,b,_,
_,b,_,
_,b,_,
_,b,_,
_,B,_,
_,B,_,
_,B,_,
_,B,_,
_,B,_,
_,b,_,
_,b,_,
_,b,_,

View File

@ -46,9 +46,9 @@ ethereal.bananatree = {
_,_,_,_,_,_,_,
_,_,_,T,_,_,_,
_,_,_,t,_,_,_,
_,_,_,t,_,_,_,
_,_,_,t,_,_,_,
_,_,_,T,_,_,_,
_,_,_,T,_,_,_,
_,_,_,T,_,_,_,
_,_,b,t,b,_,_,
_,_,B,t,B,_,_,
_,L,L,L,L,L,_,

View File

@ -54,7 +54,7 @@ ethereal.bigtree = {
_,_,t,T,M,T,t,_,_,
_,_,_,T,M,T,_,_,_,
_,_,_,T,T,T,_,_,_,
_,_,_,T,M,T,_,_,_,
_,_,_,T,T,T,_,_,_,
L,L,L,L,T,L,L,L,L,
_,L,L,L,T,L,L,L,_,

View File

@ -33,9 +33,9 @@ ethereal.birchtree = {
_,_,L,_,_,
_,_,T,_,_,
_,_,t,_,_,
_,_,t,_,_,
L,L,t,L,L,
_,_,T,_,_,
_,_,T,_,_,
L,L,T,L,L,
L,L,t,L,L,
_,L,t,L,_,
_,L,L,L,_,

View File

@ -1,9 +1,14 @@
-- simple fix for Flux's stairsplus mod as it breaks compatibility
local nodname = minetest.get_modpath("stairsplus")
and "default:stair_desert_cobble_outer" or "stairs:stair_outer_desert_cobble"
local _ = {name = "air", param1 = 0}
local ds = {name = "default:desert_stone", param1 = 255, param2 = 0}
local s0 = {name = "stairs:stair_outer_desert_stone", param1 = 255, param2 = 0}
local s2 = {name = "stairs:stair_outer_desert_stone", param1 = 255, param2 = 2}
local s3 = {name = "stairs:stair_outer_desert_stone", param1 = 255, param2 = 3}
local dc = {name = "default:desert_cobble", param1 = 255, param2 = 0}
local s0 = {name = nodname, param1 = 255, param2 = 0}
local s2 = {name = nodname, param1 = 255, param2 = 2}
local s3 = {name = nodname, param1 = 255, param2 = 3}
local et = {name = "ethereal:etherium_ore", param1 = 128}
ethereal.desertstone_spike = {
@ -17,7 +22,7 @@ ethereal.desertstone_spike = {
data = {
et, ds,
ds, s0,
dc, s0,
s3, _,
ds, ds,

View File

@ -0,0 +1,48 @@
local _ = {name = "air", param1 = 000}
local S = {name = "default:stone", param1 = 255}
local s = {name = "default:stone", param1 = 127}
local C = {name = "default:cobble", param1 = 255}
local c = {name = "default:cobble", param1 = 127}
ethereal.desertstone_under_spike = {
size = {x = 3, y = 8, z = 3},
yslice_prob = {
{ypos = 3, prob = 127},
{ypos = 5, prob = 127},
{ypos = 6, prob = 127},
},
data = {
C,S,C,
C,S,C,
_,S,_,
_,S,_,
_,C,_,
_,_,_,
_,_,_,
_,_,_,
S,S,S,
S,S,S,
S,S,S,
_,S,_,
_,S,_,
_,S,_,
_,S,_,
_,C,_,
C,S,C,
C,S,C,
_,S,_,
_,S,_,
_,C,_,
_,_,_,
_,_,_,
_,_,_,
}
}

View File

@ -9,12 +9,12 @@ ethereal.frosttrees = {
size = {x = 8, y = 19, z = 8},
yslice_prob = {
{ypos = 1, prob = 127}, -- trunk
{ypos = 2, prob = 127},
{ypos = 2, prob = 127}, -- trunk
{ypos = 3, prob = 127},
{ypos = 4, prob = 127},
{ypos = 5, prob = 127},
{ypos = 6, prob = 127},
{ypos = 7, prob = 127},
{ypos = 13, prob = 127}, -- leaves
{ypos = 15, prob = 127}
},
@ -82,8 +82,8 @@ ethereal.frosttrees = {
_,_,_,_,_,_,_,_,
_,_,_,T,T,_,_,_,
_,_,_,t,t,_,_,_,
_,_,_,t,t,_,_,_,
_,_,_,T,T,_,_,_,
_,_,_,T,T,_,_,_,
_,_,_,t,t,_,_,_,
_,_,_,t,t,_,_,_,
_,_,_,t,t,_,_,_,
@ -102,8 +102,8 @@ ethereal.frosttrees = {
_,_,_,l,l,_,_,_,
_,_,_,T,T,_,_,_,
_,_,_,t,t,_,_,_,
_,_,_,t,t,_,_,_,
_,_,_,T,T,_,_,_,
_,_,_,T,T,_,_,_,
_,_,_,t,t,_,_,_,
_,_,_,t,t,_,_,_,
_,_,_,t,t,_,_,_,

View File

@ -36,9 +36,9 @@ ethereal.lemontree = {
_,L,L,L,_,
_,_,T,_,_,
_,_,t,_,_,
_,_,t,_,_,
l,e,t,l,l,
_,_,T,_,_,
_,_,T,_,_,
l,e,T,l,l,
L,L,t,L,l,
l,L,t,L,L,
L,L,L,l,L,

View File

@ -10,8 +10,8 @@ ethereal.mushroomone = {
size = {x = 8, y = 11, z = 8},
yslice_prob = {
{ypos = 1, prob = 127},
{ypos = 2, prob = 127},
{ypos = 3, prob = 127},
{ypos = 4, prob = 127},
{ypos = 7, prob = 127}
},
@ -54,8 +54,8 @@ ethereal.mushroomone = {
_,_,_,M,M,_,_,_,
_,_,_,T,T,_,_,_,
_,_,_,t,t,_,_,_,
_,_,_,t,t,_,_,_,
_,_,_,T,T,_,_,_,
_,_,_,T,T,_,_,_,
_,_,_,t,t,_,_,_,
_,_,_,t,t,_,_,_,
_,_,_,t,t,_,_,_,
@ -66,8 +66,8 @@ ethereal.mushroomone = {
_,_,M,M,M,M,_,_,
_,_,_,T,T,_,_,_,
_,_,_,t,t,_,_,_,
_,_,_,t,t,_,_,_,
_,_,_,T,T,_,_,_,
_,_,_,T,T,_,_,_,
_,_,_,t,t,_,_,_,
_,_,_,t,t,_,_,_,
_,_,_,t,t,_,_,_,

View File

@ -33,8 +33,8 @@ ethereal.mushroomtwo = {
_,M,_,
_,T,_,
_,t,_,
_,t,_,
_,T,_,
_,T,_,
_,t,_,
_,t,_,
_,t,_,

View File

@ -10,7 +10,7 @@ ethereal.olivetree = {
size = {x = 8, y = 9, z = 7},
yslice_prob = {
{ypos = 1, prob = 127},
{ypos = 2, prob = 127},
},
data = {
@ -46,8 +46,8 @@ ethereal.olivetree = {
_,_,_,_,_,_,_,_,
_,_,_,T,T,_,_,_,
_,_,_,t,t,_,_,_,
_,_,_,t,t,_,_,_,
_,_,_,T,T,_,_,_,
_,_,_,T,T,_,_,_,
_,_,L,t,t,_,_,_,
_,o,L,t,t,t,L,_,
_,L,L,t,t,L,o,_,

View File

@ -27,8 +27,8 @@ ethereal.orangetree = {
_,_,L,_,_,
_,_,T,_,_,
_,_,t,_,_,
_,_,t,_,_,
_,_,T,_,_,
_,_,T,_,_,
L,L,t,L,L,
L,T,L,T,L,
_,L,L,L,_,

View File

@ -58,8 +58,8 @@ ethereal.palmtree = {
_,_,_,_,_,_,_,_,_,
_,_,_,_,M,_,_,_,_,
_,_,_,_,T,_,_,_,_,
_,_,_,_,T,_,_,_,_,
_,_,_,_,M,_,_,_,_,
_,_,_,_,M,_,_,_,_,
_,_,_,_,T,t,_,_,_,
_,_,_,_,_,T,_,_,_,
_,_,l,_,_,T,_,_,l,

View File

@ -43,9 +43,9 @@ ethereal.pinetree = {
_,_,_,_,_,_,_,
_,_,_,T,_,_,_,
_,_,_,t,_,_,_,
_,_,L,t,L,_,_,
L,L,L,t,L,L,L,
_,_,_,T,_,_,_,
_,_,L,T,L,_,_,
L,L,L,T,L,L,L,
_,_,L,t,L,_,_,
_,L,L,t,L,L,_,
_,_,L,t,L,_,_,

95
schematics/pond.lua Normal file
View File

@ -0,0 +1,95 @@
local _ = {name = "air", param1 = 0}
local a = {name = "air", param1 = 255, force_place = true}
local w = {name = "default:river_water_source", param1 = 255, force_place = true}
local C = {name = "default:clay", param1 = 255, force_place = true}
local D = {name = "default:dirt", param1 = 255, force_place = true}
local M = {name = "default:mossycobble", param1 = 127, force_place = true}
local e = {name = "ethereal:bush2", param1 = 127, force_place = true}
local f = {name = "default:fern_1", param1 = 127, force_place = true}
local g = {name = "default:fern_2", param1 = 127, force_place = true}
local h = {name = "default:fern_3", param1 = 127, force_place = true}
local i = {name = "default:grass_4", param1 = 127, force_place = true}
ethereal.pond = {
size = {x = 12, y = 4, z = 15},
data = {
_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,D,D,D,D,_,_,_,_, _,_,_,_,f,g,i,f,e,_,_,_,
_,_,_,_,a,a,a,a,_,_,_,_,
_,_,_,_,_,C,C,_,_,_,_,_, _,_,D,D,M,w,w,D,M,_,_,_, _,_,f,g,a,a,a,a,a,a,_,_,
_,_,a,a,a,a,a,a,a,_,_,_,
_,_,_,C,C,C,C,C,_,_,_,_, _,M,D,w,w,w,w,w,D,D,_,_, _,_,f,a,a,a,a,a,g,i,_,_,
_,a,a,a,a,a,a,a,a,a,_,_,
_,_,_,C,C,C,C,C,C,C,_,_, _,D,D,w,w,w,w,w,w,w,M,_, e,i,a,a,a,a,a,a,a,a,_,_,
a,a,a,a,a,a,a,a,a,a,a,_,
_,_,_,C,C,C,C,C,C,C,_,_, M,D,M,w,w,w,w,w,w,w,D,_, _,f,a,a,a,a,a,a,a,a,g,_,
a,a,a,a,a,a,a,a,a,a,a,_,
_,_,C,C,C,C,C,C,C,C,_,_, D,D,w,w,w,w,w,w,w,w,D,D, e,i,a,a,a,a,a,a,a,a,h,i,
a,a,a,a,a,a,a,a,a,a,a,a,
_,C,C,C,C,C,C,C,C,C,C,_, D,w,w,w,w,w,w,w,w,w,w,D, h,a,a,a,a,a,a,a,a,a,a,f,
a,a,a,a,a,a,a,a,a,a,a,a,
_,C,C,C,C,C,C,C,C,C,C,_, D,w,w,w,w,w,w,w,w,w,w,M, g,a,a,a,a,a,a,a,a,a,a,_,
a,a,a,a,a,a,a,a,a,a,a,a,
_,C,C,C,C,C,C,C,C,C,C,_, D,w,w,w,w,w,w,w,w,w,w,D, f,a,a,a,a,a,a,a,a,a,a,i,
a,a,a,a,a,a,a,a,a,a,a,a,
_,_,C,C,C,C,C,C,C,C,_,_, _,D,w,w,w,w,w,w,w,w,D,M, i,f,a,a,a,a,a,a,a,a,g,_,
a,a,a,a,a,a,a,a,a,a,a,a,
_,_,C,C,C,C,C,C,C,C,_,_, _,D,w,w,w,w,w,w,w,w,D,_, _,i,a,a,a,a,a,a,a,a,a,_,
_,a,a,a,a,a,a,a,a,a,a,_,
_,_,C,C,C,C,C,C,C,_,_,_, D,D,w,w,w,w,w,w,w,D,D,_, g,h,a,a,a,a,a,a,a,a,f,i,
a,a,a,a,a,a,a,a,a,a,a,_,
_,_,C,C,C,C,C,C,_,_,_,_, D,D,w,w,w,w,w,w,D,D,_,_, _,e,g,a,a,a,a,a,a,g,e,_,
a,a,a,a,a,a,a,a,a,a,_,_,
_,_,_,C,C,C,C,_,_,_,_,_, _,M,D,w,w,w,w,D,M,_,_,_, _,_,i,a,a,a,a,a,a,a,_,_,
_,a,a,a,a,a,a,a,a,_,_,_,
_,_,_,_,_,_,_,_,_,_,_,_, _,_,D,D,D,D,D,D,D,_,_,_, _,_,e,f,i,g,g,i,h,_,_,_,
_,_,a,a,a,a,a,a,a,_,_,_,
}
}
minetest.register_node("ethereal:pond", {
paramtype = "light",
sunlight_propagetes = true,
walkable = false, pointable = false, diggable = false, floodable = false,
drawtype = "airlike",
drops = "",
groups = {not_in_creative_inventory = 1},
on_blast = function() end,
})
local math_random = math.random
local replace_with = {
"air", "air", "air", "air", "default:dry_grass_2", "default:dry_shrub",
"default:grass_2", "default:fern_1", "air", "air", "default:dry_shrub"}
minetest.register_abm({
label = "Ethereal pond",
nodenames = {"ethereal:pond"},
interval = 5,
chance = 1,
action = function(pos, node)
minetest.swap_node(pos, {name = replace_with[math_random(#replace_with)]})
local radius = 7
pos.y = pos.y - 1
local num = #minetest.find_nodes_in_area(
{x = pos.x - radius, y = pos.y, z = pos.z - radius},
{x = pos.x + radius, y = pos.y, z = pos.z + radius}, "group:bakedclay")
if num > 200 then
pos.y = pos.y - 1
minetest.place_schematic(pos, ethereal.pond, "random", nil, false,
"place_center_x, place_center_z")
end
end
})

View File

@ -86,8 +86,8 @@ ethereal.redwood_small_tree = {
_,_,_,T,T,T,_,_,_,
_,_,_,T,T,T,_,_,_,
_,_,_,t,t,t,_,_,_,
_,_,_,t,t,t,_,_,_,
_,_,_,T,T,T,_,_,_,
_,_,_,T,T,T,_,_,_,
_,_,_,t,t,t,_,_,_,
_,_,_,t,t,t,_,_,_,
_,_,_,t,t,t,_,_,_,
@ -108,8 +108,8 @@ ethereal.redwood_small_tree = {
_,_,_,T,T,T,_,_,_,
_,_,_,T,T,T,_,_,_,
_,_,_,t,t,t,_,_,_,
_,_,_,t,t,t,_,_,_,
_,_,_,T,T,T,_,_,_,
_,_,_,T,T,T,_,_,_,
_,_,_,t,t,t,_,_,_,
_,_,_,t,t,t,_,_,_,
_,_,_,t,t,t,_,_,_,
@ -130,8 +130,8 @@ ethereal.redwood_small_tree = {
_,_,_,T,T,T,_,_,_,
_,_,_,T,T,T,_,_,_,
_,_,_,t,t,t,_,_,_,
_,_,_,t,t,t,_,_,_,
_,_,_,T,T,T,_,_,_,
_,_,_,T,T,T,_,_,_,
_,_,_,t,t,t,_,_,_,
_,_,_,t,t,t,_,_,_,
_,_,_,t,t,t,_,_,_,

View File

@ -157,7 +157,7 @@ ethereal.redwood_tree = {
_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,
_,_,_,_,_,T,T,T,T,T,_,_,_,_,_,
_,_,_,_,_,_,t,t,_,_,_,_,_,_,_,
_,_,_,_,_,_,T,T,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,
@ -191,9 +191,9 @@ ethereal.redwood_tree = {
_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,
_,_,_,_,_,T,T,T,T,T,_,_,_,_,_,
_,_,_,_,_,t,t,t,t,t,_,_,_,_,_,
_,_,_,_,_,_,t,t,t,_,_,_,_,_,_,
_,_,_,_,_,_,t,t,t,_,_,_,_,_,_,
_,_,_,_,_,T,T,T,T,T,_,_,_,_,_,
_,_,_,_,_,_,T,T,T,_,_,_,_,_,_,
_,_,_,_,_,_,T,T,T,_,_,_,_,_,_,
_,_,_,_,_,_,t,t,t,_,_,_,_,_,_,
_,_,_,_,_,_,t,t,t,_,_,_,_,_,_,
_,_,_,_,_,_,t,t,t,_,_,_,_,_,_,
@ -225,9 +225,9 @@ ethereal.redwood_tree = {
_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,
_,_,_,_,T,T,T,T,T,T,T,_,_,_,_,
_,_,_,_,t,t,t,t,t,t,_,_,_,_,_,
_,_,_,_,_,t,t,t,t,t,_,_,_,_,_,
_,_,_,_,_,t,t,t,t,t,_,_,_,_,_,
_,_,_,_,T,T,T,T,T,T,_,_,_,_,_,
_,_,_,_,_,T,T,T,T,T,_,_,_,_,_,
_,_,_,_,_,T,T,T,T,T,_,_,_,_,_,
_,_,_,_,_,t,t,t,t,t,_,_,_,_,_,
_,_,_,_,_,t,t,t,t,t,_,_,_,_,_,
_,_,_,_,_,t,t,t,t,t,_,_,_,_,_,
@ -259,9 +259,9 @@ ethereal.redwood_tree = {
_,_,_,_,_,_,_,L,_,_,_,_,_,_,_,
_,_,_,_,T,T,T,T,T,T,T,_,_,_,_,
_,_,_,_,t,t,t,t,t,t,t,_,_,_,_,
_,_,_,_,t,t,t,t,t,t,t,_,_,_,_,
_,_,_,_,_,t,t,t,t,t,_,_,_,_,_,
_,_,_,_,T,T,T,T,T,T,T,_,_,_,_,
_,_,_,_,T,T,T,T,T,T,T,_,_,_,_,
_,_,_,_,_,T,T,T,T,T,_,_,_,_,_,
_,_,_,_,_,t,t,t,t,t,_,_,_,_,_,
_,_,_,_,_,t,t,t,t,t,_,_,_,_,_,
_,_,_,_,_,t,t,t,t,t,_,_,_,_,_,
@ -293,9 +293,9 @@ ethereal.redwood_tree = {
_,_,_,_,_,_,L,L,L,_,_,_,_,_,_,
_,_,_,_,T,T,T,T,T,T,T,_,_,_,_,
_,_,_,_,t,t,t,t,t,t,t,_,_,_,_,
_,_,_,_,_,t,t,t,t,t,t,_,_,_,_,
_,_,_,_,_,t,t,t,t,t,_,_,_,_,_,
_,_,_,_,T,T,T,T,T,T,T,_,_,_,_,
_,_,_,_,_,T,T,T,T,T,T,_,_,_,_,
_,_,_,_,_,T,T,T,T,T,_,_,_,_,_,
_,_,_,_,_,t,t,t,t,t,_,_,_,_,_,
_,_,_,_,_,t,t,t,t,t,_,_,_,_,_,
_,_,_,_,_,t,t,t,t,t,_,_,_,_,_,
@ -327,7 +327,7 @@ ethereal.redwood_tree = {
_,_,_,_,_,_,_,L,L,_,_,_,_,_,_,
_,_,_,_,_,T,T,T,T,T,_,_,_,_,_,
_,_,_,_,_,t,t,t,t,t,_,_,_,_,_,
_,_,_,_,_,T,T,T,T,T,_,_,_,_,_,
_,_,_,_,_,t,t,t,t,t,_,_,_,_,_,
_,_,_,_,_,_,t,t,t,_,_,_,_,_,_,
_,_,_,_,_,_,t,t,t,_,_,_,_,_,_,
@ -361,8 +361,8 @@ ethereal.redwood_tree = {
_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,
_,_,_,_,_,T,T,T,T,T,_,_,_,_,_,
_,_,_,_,_,_,t,t,t,_,_,_,_,_,_,
_,_,_,_,_,_,_,t,_,_,_,_,_,_,_,
_,_,_,_,_,_,T,T,T,_,_,_,_,_,_,
_,_,_,_,_,_,_,T,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,
_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,

View File

@ -51,10 +51,10 @@ _,P,P,P,P,P,P,P,P,
_,_,P,P,P,P,P,P,_,
_,_,_,_,T,_,_,_,_,
_,_,_,_,t,_,_,_,_,
_,_,_,_,t,_,_,_,_,
_,_,P,P,t,t,P,_,_,
_,P,P,t,t,t,t,P,P,
_,_,_,_,T,_,_,_,_,
_,_,_,_,T,_,_,_,_,
_,_,P,P,T,t,P,_,_,
_,P,P,t,T,t,t,P,P,
_,P,P,t,_,t,P,t,P,
P,P,P,t,P,t,P,t,P,
P,P,t,P,P,P,P,t,P,

View File

@ -44,7 +44,7 @@ ethereal.vinetree = {
_,_,_,T,_,_,_,
_,_,_,T,_,_,_,
u,_,_,t,_,_,_,
u,_,_,T,_,_,_,
u,L,_,L,_,L,_,
u,L,L,L,L,L,_,
_,L,L,L,L,L,_,

View File

@ -101,8 +101,8 @@ ethereal.yellowtree = {
_,_,_,_,M,_,_,_,_,
_,_,_,_,M,_,_,_,_,
_,_,_,_,M,_,_,_,_,
_,_,_,T,T,_,_,_,_,
_,_,_,_,T,_,_,_,_,
_,_,_,T,M,_,_,_,_,
_,_,_,_,M,_,_,_,_,
_,_,_,_,T,T,_,_,_,
_,_,_,_,T,_,_,_,_,
_,_,_,T,T,_,_,_,_,

View File

@ -31,6 +31,8 @@ dofile(path .. "lemon_tree.lua")
dofile(path .. "olive_tree.lua")
dofile(path .. "basandra_bush.lua")
dofile(path .. "desertstone_spike.lua")
dofile(path .. "desertstone_under_spike.lua")
dofile(path .. "pond.lua")
-- register decoration helper
@ -55,12 +57,21 @@ local old = minetest.settings:get_bool("ethereal.old_biomes")
register_decoration(minetest.get_modpath("stairs") and ethereal.caves, {
place_on = "default:desert_stone",
fill_ratio = 0.01, y_min = 5, y_max = 42,
sidelen = 16, fill_ratio = 0.01, y_min = 5, y_max = 42,
biomes = {"caves"},
schematic = ethereal.desertstone_spike,
spawn_by = "default:desert_stone", num_spawn_by = 8,
flags = "place_center_x, place_center_z, force_placement", rotation = "random"})
-- desertstone under spike
register_decoration(ethereal.caves, {
place_on = "default:stone",
sidelen = 16, fill_ratio = 0.01, y_min = 5, y_max = 42,
biomes = {"caves"},
schematic = ethereal.desertstone_under_spike,
flags = "place_center_x, place_center_z, all_floors", rotation = "random"})
-- igloo
register_decoration(ethereal.glacier, {
@ -495,3 +506,33 @@ if ethereal.logs == 1 then
rotation = "random",
spawn_by = "ethereal:grove_dirt", num_spawn_by = 8})
end
-- deep see fumerole / vent
register_decoration(minetest.get_modpath("nether") and 1, {
name = "nether:fumarole",
place_on = {"default:sand"},
sidelen = 16, y_min = -192, y_max = -45,
fill_ratio = 0.0001,
schematic = {
size = {x = 1, y = 2, z = 2},
data = {
{name = "default:lava_source", param1 = 255, force_place = true},
{name = "nether:fumarole", param1 = 255, force_place = true},
{name = "default:sand", param1 = 192, force_place = true},
{name = "ethereal:sandy", param1 = 192, force_place = true},
}
},
place_offset_y = -1,
spawn_by = {"default:water_source"}, num_spawn_by = 8})
if minetest.get_modpath("nether") then
minetest.register_lbm({
name = ":nether:extra_fumarole_timer",
nodenames = {"nether:fumarole"},
run_at_every_load = false,
action = function(pos) minetest.get_node_timer(pos):start(10) end
})
end

View File

@ -1,6 +1,9 @@
local S = minetest.get_translator("ethereal")
-- local math functions
local math_floor, math_max, math_random = math.floor, math.max, math.random
-- Seaweed
minetest.register_node("ethereal:seaweed", {
@ -94,7 +97,7 @@ minetest.register_node("ethereal:seaweed_rooted", {
on_dig = function(pos, node, digger)
local p2 = node.param2 or 16
local num = math.max(1, math.floor(p2 / 16))
local num = math_max(1, math_floor(p2 / 16))
local inv = digger and digger:get_inventory()
if not inv then return end
@ -300,6 +303,15 @@ minetest.register_node("ethereal:sandy", {
sounds = default.node_sound_sand_defaults()
})
minetest.register_craft({
output = "ethereal:sandy",
recipe = {
{"ethereal:slime_mold", "ethereal:slime_mold", "ethereal:slime_mold"},
{"ethereal:slime_mold", "group:sand", "ethereal:slime_mold"},
{"ethereal:slime_mold", "ethereal:slime_mold", "ethereal:slime_mold"},
}
})
-- randomly generate coral or seaweed and have seaweed grow up to 14 high
if ethereal.sealife == 1 then
@ -318,7 +330,7 @@ if ethereal.sealife == 1 then
if node.name == "ethereal:seaweed_rooted" then
local p2 = node.param2 or 16
local height = math.max(1, math.floor(p2 / 16))
local height = math_max(1, math_floor(p2 / 16))
if height > 13 then return end
@ -336,7 +348,7 @@ if ethereal.sealife == 1 then
return
end
local sel = math.random(6)
local sel = math_random(6)
local pos_up = {x = pos.x, y = pos.y + 1, z = pos.z}
local nod = minetest.get_node(pos_up).name
@ -344,7 +356,7 @@ if ethereal.sealife == 1 then
if sel == 1 then
local height = math.random(1, 6)
local height = math_random(6)
minetest.set_node(pos, {name = "ethereal:seaweed_rooted",
param2 = (height * 16)})

View File

@ -3,6 +3,8 @@ local S = minetest.get_translator("ethereal")
-- Thin Ice
local math_random = math.random
minetest.register_node("ethereal:thin_ice", {
description = S("Thin Ice"),
tiles = {"default_ice.png^[opacity:80"},
@ -24,7 +26,7 @@ minetest.register_node("ethereal:thin_ice", {
on_walk_over = function(pos, node, player)
if math.random(50) == 13 then -- ice breaks if player unlucky
if math_random(50) == 13 then -- ice breaks if player unlucky
minetest.sound_play("default_ice_dug",
{pos = pos, gain = 0.5, pitch = 1.4, max_hear_distance = 5}, true)
@ -167,47 +169,30 @@ minetest.register_abm({
end
})
-- when enabled, drop torches that are touching water
-- when enabled, override torches so they drop when touching water
if ethereal.torchdrop == true and not minetest.get_modpath("real_torch") then
minetest.register_abm({
label = "Ethereal drop torch",
nodenames = {"default:torch", "default:torch_wall", "default:torch_ceiling"},
neighbors = {"group:water"},
interval = 5,
chance = 1,
catch_up = false,
local function on_flood(pos, oldnode, newnode)
action = function(pos, node)
minetest.add_item(pos, ItemStack("default:torch 1"))
local num = #minetest.find_nodes_in_area(
{x = pos.x - 1, y = pos.y, z = pos.z},
{x = pos.x + 1, y = pos.y, z = pos.z}, {"group:water"})
local def = minetest.registered_items[newnode.name]
if num == 0 then
if def and def.groups and def.groups.water and def.groups.water > 0 then
num = num + #minetest.find_nodes_in_area(
{x = pos.x, y = pos.y, z = pos.z - 1},
{x = pos.x, y = pos.y, z = pos.z + 1}, {"group:water"})
end
if num == 0 then
num = num + #minetest.find_nodes_in_area(
{x = pos.x, y = pos.y + 1, z = pos.z},
{x = pos.x, y = pos.y + 1, z = pos.z}, {"group:water"})
end
if num > 0 then
minetest.set_node(pos, {name = "air"})
minetest.sound_play("fire_extinguish_flame",
{pos = pos, gain = 0.2, max_hear_distance = 10}, true)
minetest.add_item(pos, {name = "default:torch"})
end
minetest.sound_play("default_cool_lava",
{pos = pos, max_hear_distance = 10, gain = 0.1}, true)
end
})
return false -- remove node
end
local function torch_override(name)
minetest.override_item("default:" .. name, {on_flood = on_flood})
end
torch_override("torch")
torch_override("torch_wall")
torch_override("torch_ceiling")
end