Compare commits
10 Commits
f7e59bafe5
...
7599ae9864
Author | SHA1 | Date | |
---|---|---|---|
|
7599ae9864 | ||
|
6bd48f4acf | ||
|
b8daffa1ac | ||
|
bba292b317 | ||
|
c43a9834ea | ||
|
a5403839fb | ||
|
caa41b322c | ||
|
19e889c9b8 | ||
|
977914837c | ||
|
8ffacbfb59 |
@ -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
|
||||
|
13
decor.lua
13
decor.lua
@ -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
|
||||
})
|
||||
|
20
dirt.lua
20
dirt.lua
@ -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()
|
||||
})
|
||||
|
@ -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"}},
|
||||
|
2
ores.lua
2
ores.lua
@ -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
|
||||
|
||||
|
@ -38,11 +38,11 @@ ethereal.bambootree = {
|
||||
_,_,_,
|
||||
|
||||
_,B,_,
|
||||
_,b,_,
|
||||
_,b,_,
|
||||
_,b,_,
|
||||
_,b,_,
|
||||
_,b,_,
|
||||
_,B,_,
|
||||
_,B,_,
|
||||
_,B,_,
|
||||
_,B,_,
|
||||
_,B,_,
|
||||
_,b,_,
|
||||
_,b,_,
|
||||
_,b,_,
|
||||
|
@ -46,9 +46,9 @@ ethereal.bananatree = {
|
||||
_,_,_,_,_,_,_,
|
||||
|
||||
_,_,_,T,_,_,_,
|
||||
_,_,_,t,_,_,_,
|
||||
_,_,_,t,_,_,_,
|
||||
_,_,_,t,_,_,_,
|
||||
_,_,_,T,_,_,_,
|
||||
_,_,_,T,_,_,_,
|
||||
_,_,_,T,_,_,_,
|
||||
_,_,b,t,b,_,_,
|
||||
_,_,B,t,B,_,_,
|
||||
_,L,L,L,L,L,_,
|
||||
|
@ -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,_,
|
||||
|
@ -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,_,
|
||||
|
@ -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,
|
||||
|
48
schematics/desertstone_under_spike.lua
Normal file
48
schematics/desertstone_under_spike.lua
Normal 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,_,
|
||||
_,_,_,
|
||||
_,_,_,
|
||||
_,_,_,
|
||||
|
||||
}
|
||||
}
|
@ -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,_,_,_,
|
||||
|
@ -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,
|
||||
|
@ -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,_,_,_,
|
||||
|
@ -33,8 +33,8 @@ ethereal.mushroomtwo = {
|
||||
_,M,_,
|
||||
|
||||
_,T,_,
|
||||
_,t,_,
|
||||
_,t,_,
|
||||
_,T,_,
|
||||
_,T,_,
|
||||
_,t,_,
|
||||
_,t,_,
|
||||
_,t,_,
|
||||
|
@ -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,_,
|
||||
|
@ -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,_,
|
||||
|
@ -58,8 +58,8 @@ ethereal.palmtree = {
|
||||
_,_,_,_,_,_,_,_,_,
|
||||
|
||||
_,_,_,_,M,_,_,_,_,
|
||||
_,_,_,_,T,_,_,_,_,
|
||||
_,_,_,_,T,_,_,_,_,
|
||||
_,_,_,_,M,_,_,_,_,
|
||||
_,_,_,_,M,_,_,_,_,
|
||||
_,_,_,_,T,t,_,_,_,
|
||||
_,_,_,_,_,T,_,_,_,
|
||||
_,_,l,_,_,T,_,_,l,
|
||||
|
@ -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
95
schematics/pond.lua
Normal 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
|
||||
})
|
@ -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,_,_,_,
|
||||
|
@ -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,_,_,_,_,_,_,_,
|
||||
_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,
|
||||
_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,
|
||||
_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,
|
||||
|
@ -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,
|
||||
|
@ -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,_,
|
||||
|
@ -101,8 +101,8 @@ ethereal.yellowtree = {
|
||||
_,_,_,_,M,_,_,_,_,
|
||||
_,_,_,_,M,_,_,_,_,
|
||||
_,_,_,_,M,_,_,_,_,
|
||||
_,_,_,T,T,_,_,_,_,
|
||||
_,_,_,_,T,_,_,_,_,
|
||||
_,_,_,T,M,_,_,_,_,
|
||||
_,_,_,_,M,_,_,_,_,
|
||||
_,_,_,_,T,T,_,_,_,
|
||||
_,_,_,_,T,_,_,_,_,
|
||||
_,_,_,T,T,_,_,_,_,
|
||||
|
43
schems.lua
43
schems.lua
@ -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
|
||||
|
20
sealife.lua
20
sealife.lua
@ -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)})
|
||||
|
57
water.lua
57
water.lua
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user