Optimize code, allfaces leaves by default, leaves walkable by default

master
TenPlus1 2016-01-21 14:59:28 +00:00
parent bd0fae584c
commit 87031b6051
17 changed files with 187 additions and 135 deletions

View File

@ -6,7 +6,7 @@ minetest.register_node("ethereal:crystal_spike", {
inventory_image = "crystal_spike.png", inventory_image = "crystal_spike.png",
wield_image = "crystal_spike.png", wield_image = "crystal_spike.png",
paramtype = "light", paramtype = "light",
light_source = default.LIGHT_MAX - 7, light_source = 7,
sunlight_propagates = true, sunlight_propagates = true,
walkable = false, walkable = false,
damage_per_second = 1, damage_per_second = 1,
@ -38,7 +38,7 @@ minetest.register_craft({
minetest.register_node("ethereal:crystal_block", { minetest.register_node("ethereal:crystal_block", {
description = "Crystal Block", description = "Crystal Block",
tiles = {"crystal_block.png"}, tiles = {"crystal_block.png"},
light_source = default.LIGHT_MAX - 5, light_source = 9,
is_ground_content = false, is_ground_content = false,
groups = {cracky = 1, level = 2, puts_out_fire = 1}, groups = {cracky = 1, level = 2, puts_out_fire = 1},
sounds = default.node_sound_glass_defaults(), sounds = default.node_sound_glass_defaults(),
@ -152,28 +152,33 @@ minetest.register_tool("ethereal:shovel_crystal", {
on_use = function(itemstack, user, pointed_thing) on_use = function(itemstack, user, pointed_thing)
if pointed_thing.type ~= "node" then return end if pointed_thing.type ~= "node" then
return
end
-- Check if node protected -- Check if node protected
if not minetest.is_protected(pointed_thing.under, user:get_player_name()) then if minetest.is_protected(pointed_thing.under, user:get_player_name()) then
return
end
local pos = pointed_thing.under local pos = pointed_thing.under
local nn = minetest.get_node_or_nil(pos) local nn = minetest.get_node(pos).name
if nn then nn = nn.name else return end
-- Is node dirt, sand or gravel -- Is node dirt, sand or gravel
if minetest.get_item_group(nn, "crumbly") > 0 then if minetest.get_item_group(nn, "crumbly") > 0 then
local inv = user:get_inventory() local inv = user:get_inventory()
minetest.remove_node(pointed_thing.under) minetest.remove_node(pointed_thing.under)
nodeupdate(pos)
nodeupdate(pos)
inv:add_item("main", {name = nn})
itemstack:add_wear(65535 / 100) -- 111 uses inv:add_item("main", {name = nn})
minetest.sound_play("default_dirt_footstep", {pos = pos, gain = 0.35}) itemstack:add_wear(65535 / 100) -- 111 uses
return itemstack
end minetest.sound_play("default_dirt_footstep", {pos = pos, gain = 0.35})
return itemstack
end end
end, end,
}) })

View File

@ -36,15 +36,14 @@ minetest.register_craft({
cooktime = 3, cooktime = 3,
}) })
local dirt = {} local dirts = {
dirt.type = { "Bamboo", "Jungle", "Grove", "Prairie", "Cold",
{"Bamboo"}, {"Jungle"}, {"Grove"}, {"Prairie"}, {"Cold"}, "Crystal", "Mushroom", "Fiery", "Gray"
{"Crystal"}, {"Mushroom"}, {"Fiery"}, {"Gray"},
} }
for _, row in pairs(dirt.type) do for n = 1, #dirts do
local desc = row[1] local desc = dirts[n]
local name = desc:lower() local name = desc:lower()
minetest.register_node("ethereal:"..name.."_dirt", { minetest.register_node("ethereal:"..name.."_dirt", {
@ -80,31 +79,34 @@ minetest.register_abm({
chance = 2, chance = 2,
catch_up = false, catch_up = false,
action = function(pos, node) action = function(pos, node)
local count_grasses = {} local count_grasses = {}
local curr_max = 0 local curr_max = 0
local curr_type = "ethereal:green_dirt" -- fallback local curr_type = "ethereal:green_dirt" -- fallback
local positions = minetest.find_nodes_in_area_under_air( local positions = minetest.find_nodes_in_area(
{x = (pos.x - 2), y = (pos.y - 1), z = (pos.z - 2)}, {x = (pos.x - 1), y = (pos.y - 2), z = (pos.z - 1)},
{x = (pos.x + 2), y = (pos.y + 1), z = (pos.z + 2)}, {x = (pos.x + 1), y = (pos.y + 2), z = (pos.z + 1)},
"group:ethereal_grass") "group:ethereal_grass")
local n
-- count new grass nodes -- count new grass nodes
for _,p in pairs(positions) do for _,p in pairs(positions) do
n = minetest.get_node_or_nil(p)
if n and n.name then local n = minetest.get_node(p).name
count_grasses[n.name] = (count_grasses[n.name] or 0) + 1
-- we found a grass type with more than current max count_grasses[n] = (count_grasses[n] or 0) + 1
if count_grasses[n.name] > curr_max then
curr_max = count_grasses[n.name] -- we found a grass type with more than current max
curr_type = n.name if count_grasses[n] > curr_max then
end curr_max = count_grasses[n]
curr_type = n
end end
end end
minetest.swap_node(pos, {name = curr_type}) minetest.swap_node(pos, {name = curr_type})
end end
}) })
-- make dirt with dry grass spreads like ethereal grasses -- have dirt with dry grass spreads like ethereal grasses
minetest.override_item("default:dirt_with_dry_grass", { minetest.override_item("default:dirt_with_dry_grass", {
groups = {crumbly = 3, soil = 1, ethereal_grass = 1}, groups = {crumbly = 3, soil = 1, ethereal_grass = 1},
}) })
@ -116,21 +118,25 @@ minetest.register_abm({
chance = 20, chance = 20,
catch_up = false, catch_up = false,
action = function(pos, node) action = function(pos, node)
local name = minetest.get_node({ local name = minetest.get_node({
x = pos.x, x = pos.x,
y = pos.y + 1, y = pos.y + 1,
z = pos.z z = pos.z
}).name }).name
local nodedef = minetest.registered_nodes[name] local nodedef = minetest.registered_nodes[name]
if name ~= "ignore" and nodedef and not ((nodedef.sunlight_propagates or
nodedef.paramtype == "light") and if name ~= "ignore" and nodedef
nodedef.liquidtype == "none") then and not ((nodedef.sunlight_propagates or nodedef.paramtype == "light")
and nodedef.liquidtype == "none") then
minetest.swap_node(pos, {name = "default:dirt"}) minetest.swap_node(pos, {name = "default:dirt"})
end end
end end
}) })
-- If Baked Clay mod not active, make Red and Orange nodes -- If Baked Clay mod not active, make Red, Orange and Grey nodes
if not minetest.get_modpath("bakedclay") then if not minetest.get_modpath("bakedclay") then
minetest.register_node(":bakedclay:red", { minetest.register_node(":bakedclay:red", {

View File

@ -1,4 +1,4 @@
-- Vines -- vines
minetest.register_node("ethereal:vine", { minetest.register_node("ethereal:vine", {
description = "Vine", description = "Vine",
drawtype = "signlike", drawtype = "signlike",
@ -106,8 +106,6 @@ minetest.register_craft({
output = "ethereal:glostone", output = "ethereal:glostone",
recipe = { recipe = {
{"default:torch", "default:stone", "dye:yellow"}, {"default:torch", "default:stone", "dye:yellow"},
{"", "", ""},
{"", "", ""},
} }
}) })
@ -287,15 +285,17 @@ minetest.register_tool("ethereal:light_staff", {
return return
end end
local node = minetest.get_node_or_nil(pos) local node = minetest.get_node(pos).name
if node then node = node.name else return end
if node == "default:stone" if node == "default:stone"
or node == "default:desert_stone" then or node == "default:desert_stone" then
minetest.swap_node(pos, {name="ethereal:glostone"})
minetest.swap_node(pos, {name = "ethereal:glostone"})
if not minetest.setting_getbool("creative_mode") then if not minetest.setting_getbool("creative_mode") then
itemstack:add_wear(65535 / 149) -- 150 uses itemstack:add_wear(65535 / 149) -- 150 uses
end end
return itemstack return itemstack
end end
@ -319,13 +319,13 @@ minetest.register_on_generated(function(minp, maxp)
end end
local bpos local bpos
local coal = minetest.find_nodes_in_area_under_air(minp, maxp, "default:stone_with_coal")
for key, pos in pairs(minetest.find_nodes_in_area_under_air(minp, maxp, "default:stone_with_coal")) do for n = 1, #coal do
bpos = {x = pos.x, y = pos.y + 1, z = pos.z } bpos = {x = coal[n].x, y = coal[n].y + 1, z = coal[n].z }
if math.random(1, 2) == 1 if math.random(1, 2) == 1 then
and minetest.get_node(bpos).name == "air" then
if bpos.y > -3000 and bpos.y < -2000 then if bpos.y > -3000 and bpos.y < -2000 then
minetest.swap_node(bpos, {name = "ethereal:illumishroom3"}) minetest.swap_node(bpos, {name = "ethereal:illumishroom3"})

View File

@ -15,29 +15,31 @@ local fences = {
for _, row in pairs(fences) do for _, row in pairs(fences) do
minetest.register_node("ethereal:fence_"..row[1], { minetest.register_node("ethereal:fence_"..row[1], {
description = row[2].." Fence", description = row[2].." Fence",
drawtype = "fencelike", drawtype = "fencelike",
is_ground_content = false, is_ground_content = false,
tiles = {row[3]}, tiles = {row[3]},
inventory_image = "default_fence_overlay.png^"..row[3].."^default_fence_overlay.png^[makealpha:255,126,126", inventory_image = "default_fence_overlay.png^" .. row[3]
wield_image = "default_fence_overlay.png^"..row[3].."^default_fence_overlay.png^[makealpha:255,126,126", .. "^default_fence_overlay.png^[makealpha:255,126,126",
paramtype = "light", wield_image = "default_fence_overlay.png^" .. row[3]
sunlight_propagates = true, .. "^default_fence_overlay.png^[makealpha:255,126,126",
selection_box = { paramtype = "light",
type = "fixed", sunlight_propagates = true,
fixed = {-1/7, -1/2, -1/7, 1/7, 1/2, 1/7}, selection_box = {
}, type = "fixed",
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, fixed = {-1/7, -1/2, -1/7, 1/7, 1/2, 1/7},
sounds = default.node_sound_wood_defaults(), },
}) groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
sounds = default.node_sound_wood_defaults(),
})
minetest.register_craft({ minetest.register_craft({
output = "ethereal:fence_"..row[1].." 4", output = "ethereal:fence_"..row[1].." 4",
recipe = { recipe = {
{row[4], "group:stick", row[4]}, {row[4], "group:stick", row[4]},
{row[4], "group:stick", row[4]}, {row[4], "group:stick", row[4]},
} }
}) })
end end

View File

@ -87,10 +87,11 @@ minetest.register_craftitem("ethereal:fishing_rod_baited", {
liquids_pointable = true, liquids_pointable = true,
on_use = function (itemstack, user, pointed_thing) on_use = function (itemstack, user, pointed_thing)
if pointed_thing.type ~= "node" then return end if pointed_thing.type ~= "node" then
return
end
local node = minetest.get_node_or_nil(pointed_thing.under) local node = minetest.get_node(pointed_thing.under).name
if node then node = node.name else return end
if (node == "default:water_source" if (node == "default:water_source"
or node == "default:river_water_source") or node == "default:river_water_source")
@ -100,7 +101,9 @@ minetest.register_craftitem("ethereal:fishing_rod_baited", {
local inv = user:get_inventory() local inv = user:get_inventory()
if inv:room_for_item("main", {name = type}) then if inv:room_for_item("main", {name = type}) then
inv:add_item("main", {name = type}) inv:add_item("main", {name = type})
return {name = "ethereal:fishing_rod"} return {name = "ethereal:fishing_rod"}
else else
minetest.chat_send_player(user:get_player_name(), minetest.chat_send_player(user:get_player_name(),

View File

@ -90,9 +90,7 @@ minetest.register_abm({
return return
end end
if minetest.get_node(seedling).name == "air" then minetest.swap_node(seedling, {name = node.name})
minetest.swap_node(seedling, {name = node.name})
end
end end
end, end,
}) })

View File

@ -26,6 +26,7 @@ function gate_rightclick(pos, node)
end end
node.name = split[1] .. "_" .. split[2] .. "_" .. name node.name = split[1] .. "_" .. split[2] .. "_" .. name
minetest.swap_node(pos, node) minetest.swap_node(pos, node)
minetest.sound_play("doors_door_"..sound, { minetest.sound_play("doors_door_"..sound, {
@ -60,7 +61,10 @@ minetest.register_node("ethereal:fencegate_"..row[1].."_open", {
sunlight_propagates = true, sunlight_propagates = true,
is_ground_content = false, is_ground_content = false,
walkable = true, walkable = true,
groups = {snappy = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, not_in_inventory = 1}, groups = {
snappy = 1, choppy = 2, oddly_breakable_by_hand = 2,
flammable = 2, not_in_inventory = 1
},
drop = "ethereal:fencegate_"..row[1].."_closed", drop = "ethereal:fencegate_"..row[1].."_closed",
drawtype = "nodebox", drawtype = "nodebox",
node_box = { node_box = {
@ -93,8 +97,10 @@ minetest.register_alias("ethereal:"..row[1].."gate_open", "ethereal:fencegate_".
minetest.register_node("ethereal:fencegate_"..row[1].."_closed", { minetest.register_node("ethereal:fencegate_"..row[1].."_closed", {
description = row[2].." Gate", description = row[2].." Gate",
tiles = {row[3]}, tiles = {row[3]},
inventory_image = "default_gate_overlay.png^"..row[3].."^default_gate_overlay.png^[makealpha:255,126,126", inventory_image = "default_gate_overlay.png^" .. row[3]
wield_image = "default_gate_overlay.png^"..row[3].."^default_gate_overlay.png^[makealpha:255,126,126", .. "^default_gate_overlay.png^[makealpha:255,126,126",
wield_image = "default_gate_overlay.png^" .. row[3]
.. "^default_gate_overlay.png^[makealpha:255,126,126",
paramtype = "light", paramtype = "light",
paramtype2 = "facedir", paramtype2 = "facedir",
sunlight_propagates = true, sunlight_propagates = true,

View File

@ -1,6 +1,6 @@
--[[ --[[
Minetest Ethereal Mod 1.19 (13th December 2015) Minetest Ethereal Mod 1.19 (21st January 2016)
Created by ChinChow Created by ChinChow
@ -9,7 +9,8 @@
]] ]]
ethereal = {} ethereal = {}
ethereal.leaftype = 0 -- 0 for 2D plantlike, 1 for 3D allfaces ethereal.leaftype = 1 -- 0 for 2D plantlike, 1 for 3D allfaces
ethereal.leafwalk = true -- true for walkable leaves, false to fall through
-- Set following to 1 to enable biome or 0 to disable -- Set following to 1 to enable biome or 0 to disable
ethereal.glacier = 1 -- Ice glaciers with snow ethereal.glacier = 1 -- Ice glaciers with snow

View File

@ -16,7 +16,7 @@ minetest.register_node("ethereal:acacia_leaves", {
inventory_image = "moretrees_acacia_leaves.png", inventory_image = "moretrees_acacia_leaves.png",
wield_image = "moretrees_acacia_leaves.png", wield_image = "moretrees_acacia_leaves.png",
paramtype = "light", paramtype = "light",
walkable = false, walkable = ethereal.leafwalk,
visual_scale = 1.2, visual_scale = 1.2,
waving = 1, waving = 1,
groups = {snappy = 3, leafdecay = 3, leaves = 1, flammable = 2}, groups = {snappy = 3, leafdecay = 3, leaves = 1, flammable = 2},
@ -37,7 +37,7 @@ minetest.override_item("default:acacia_leaves", {
inventory_image = "moretrees_acacia_leaves.png", inventory_image = "moretrees_acacia_leaves.png",
wield_image = "moretrees_acacia_leaves.png", wield_image = "moretrees_acacia_leaves.png",
visual_scale = 1.2, visual_scale = 1.2,
walkable = false, walkable = ethereal.leafwalk,
drop = { drop = {
max_items = 1, max_items = 1,
items = { items = {
@ -57,7 +57,7 @@ minetest.register_node("ethereal:willow_twig", {
inventory_image = "willow_twig.png", inventory_image = "willow_twig.png",
wield_image = "willow_twig.png", wield_image = "willow_twig.png",
paramtype = "light", paramtype = "light",
walkable = false, walkable = ethereal.leafwalk,
visual_scale = 1.2, visual_scale = 1.2,
waving = 1, waving = 1,
groups = {snappy = 3, leafdecay = 3, leaves = 1, flammable = 2}, groups = {snappy = 3, leafdecay = 3, leaves = 1, flammable = 2},
@ -81,7 +81,7 @@ minetest.register_node("ethereal:redwood_leaves", {
inventory_image = "redwood_leaves.png", inventory_image = "redwood_leaves.png",
wield_image = "redwood_leaves.png", wield_image = "redwood_leaves.png",
paramtype = "light", paramtype = "light",
walkable = false, walkable = ethereal.leafwalk,
waving = 1, waving = 1,
groups = {snappy = 3, leafdecay = 3, leaves = 1, flammable = 2}, groups = {snappy = 3, leafdecay = 3, leaves = 1, flammable = 2},
drop = { drop = {
@ -101,7 +101,7 @@ minetest.override_item("default:leaves", {
visual_scale = 1.2, visual_scale = 1.2,
inventory_image = "default_leaves.png", inventory_image = "default_leaves.png",
wield_image = "default_leaves.png", wield_image = "default_leaves.png",
walkable = false, walkable = ethereal.leafwalk,
drop = { drop = {
max_items = 1, max_items = 1,
items = { items = {
@ -120,7 +120,7 @@ minetest.register_node("ethereal:orange_leaves", {
inventory_image = "orange_leaves.png", inventory_image = "orange_leaves.png",
wield_image = "orange_leaves.png", wield_image = "orange_leaves.png",
paramtype = "light", paramtype = "light",
walkable = false, walkable = ethereal.leafwalk,
waving = 1, waving = 1,
groups = {snappy = 3, leafdecay = 3, leaves = 1, flammable = 2}, groups = {snappy = 3, leafdecay = 3, leaves = 1, flammable = 2},
drop = { drop = {
@ -140,7 +140,7 @@ minetest.override_item("default:jungleleaves", {
visual_scale = 1.2, visual_scale = 1.2,
inventory_image = "default_jungleleaves.png", inventory_image = "default_jungleleaves.png",
wield_image = "default_jungleleaves.png", wield_image = "default_jungleleaves.png",
walkable = false, walkable = ethereal.leafwalk,
drop = { drop = {
max_items = 1, max_items = 1,
items = { items = {
@ -159,7 +159,7 @@ minetest.register_node("ethereal:bananaleaves", {
inventory_image = "banana_leaf.png", inventory_image = "banana_leaf.png",
wield_image = "banana_leaf.png", wield_image = "banana_leaf.png",
paramtype = "light", paramtype = "light",
walkable = false, walkable = ethereal.leafwalk,
waving = 1, waving = 1,
groups = {snappy = 3, leafdecay = 3, leaves = 1, flammable = 2}, groups = {snappy = 3, leafdecay = 3, leaves = 1, flammable = 2},
drop = { drop = {
@ -182,7 +182,7 @@ minetest.register_node("ethereal:yellowleaves", {
inventory_image = "yellow_leaves.png", inventory_image = "yellow_leaves.png",
wield_image = "yellow_leaves.png", wield_image = "yellow_leaves.png",
paramtype = "light", paramtype = "light",
walkable = false, walkable = ethereal.leafwalk,
waving = 1, waving = 1,
groups = {snappy = 3, leafdecay = 3, leaves = 1}, groups = {snappy = 3, leafdecay = 3, leaves = 1},
drop = { drop = {
@ -208,7 +208,7 @@ minetest.register_node("ethereal:palmleaves", {
inventory_image = "moretrees_palm_leaves.png", inventory_image = "moretrees_palm_leaves.png",
wield_image = "moretrees_palm_leaves.png", wield_image = "moretrees_palm_leaves.png",
paramtype = "light", paramtype = "light",
walkable = false, walkable = ethereal.leafwalk,
waving = 1, waving = 1,
groups = {snappy = 3, leafdecay = 3, leaves = 1, flammable = 2}, groups = {snappy = 3, leafdecay = 3, leaves = 1, flammable = 2},
drop = { drop = {
@ -231,7 +231,7 @@ minetest.register_node("ethereal:birch_leaves", {
inventory_image = "moretrees_birch_leaves.png", inventory_image = "moretrees_birch_leaves.png",
wield_image = "moretrees_birch_leaves.png", wield_image = "moretrees_birch_leaves.png",
paramtype = "light", paramtype = "light",
walkable = false, walkable = ethereal.leafwalk,
waving = 1, waving = 1,
groups = {snappy = 3, leafdecay = 3, leaves = 1, flammable = 2}, groups = {snappy = 3, leafdecay = 3, leaves = 1, flammable = 2},
drop = { drop = {
@ -252,7 +252,7 @@ minetest.override_item("default:pine_needles", {
tiles = {"pine_leaves.png"}, tiles = {"pine_leaves.png"},
inventory_image = "pine_leaves.png", inventory_image = "pine_leaves.png",
wield_image = "pine_leaves.png", wield_image = "pine_leaves.png",
walkable = false, walkable = ethereal.leafwalk,
drop = { drop = {
max_items = 1, max_items = 1,
items = { items = {
@ -273,7 +273,7 @@ minetest.register_node("ethereal:frost_leaves", {
inventory_image = "ethereal_frost_leaves.png", inventory_image = "ethereal_frost_leaves.png",
wield_image = "ethereal_frost_leaves.png", wield_image = "ethereal_frost_leaves.png",
paramtype = "light", paramtype = "light",
walkable = false, walkable = ethereal.leafwalk,
waving = 1, waving = 1,
groups = {snappy = 3, leafdecay = 3, leaves = 1, puts_out_fire = 1}, groups = {snappy = 3, leafdecay = 3, leaves = 1, puts_out_fire = 1},
drop = { drop = {
@ -347,7 +347,7 @@ minetest.register_node("ethereal:bamboo_leaves", {
inventory_image = "bamboo_leaves.png", inventory_image = "bamboo_leaves.png",
wield_image = "bamboo_leaves.png", wield_image = "bamboo_leaves.png",
paramtype = "light", paramtype = "light",
walkable = false, walkable = ethereal.leafwalk,
waving = 1, waving = 1,
groups = {snappy = 3, leafdecay = 3, leaves = 1, flammable = 2}, groups = {snappy = 3, leafdecay = 3, leaves = 1, flammable = 2},
drop = { drop = {

View File

@ -59,14 +59,16 @@ minetest.register_abm({
action = function(pos, node) action = function(pos, node)
if minetest.get_node_light(pos, nil) > 14 then if minetest.get_node_light(pos, nil) > 14 then
minetest.remove_node(pos) minetest.remove_node(pos)
return return
end end
local random = { local random = {
x = pos.x + math.random(-2,2), x = pos.x + math.random(-2, 2),
y = pos.y + math.random(-1,1), y = pos.y + math.random(-1, 1),
z = pos.z + math.random(-2,2) z = pos.z + math.random(-2, 2)
} }
local random_node = minetest.get_node_or_nil(random) local random_node = minetest.get_node_or_nil(random)

View File

@ -14,6 +14,7 @@ minetest.register_abm({
local high = 4 local high = 4
pos.y = pos.y - 1 pos.y = pos.y - 1
local nod = minetest.get_node_or_nil(pos) local nod = minetest.get_node_or_nil(pos)
if not nod if not nod
@ -23,10 +24,11 @@ minetest.register_abm({
end end
if node.name == "ethereal:bamboo" then if node.name == "ethereal:bamboo" then
high = 8 -- was 5 high = 8
end end
pos.y = pos.y + 1 pos.y = pos.y + 1
local height = 0 local height = 0
while height < high while height < high
@ -40,8 +42,10 @@ minetest.register_abm({
if nod if nod
and nod.name == "air" and nod.name == "air"
and height < high then and height < high then
if node.name == "ethereal:bamboo" if node.name == "ethereal:bamboo"
and height == (high - 1) then and height == (high - 1) then
ethereal.add_tree({ ethereal.add_tree({
x = pos.x, x = pos.x,
y = oripos, y = oripos,

View File

@ -17,8 +17,7 @@ minetest.register_node("ethereal:fire_flower", {
fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5}, fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5},
}, },
on_punch = function(pos, node, puncher) on_punch = function(pos, node, puncher)
--local item = puncher:get_wielded_item()
--local itemname = item:get_name()
puncher:punch(puncher, 1.0, { puncher:punch(puncher, 1.0, {
full_punch_interval = 1.0, full_punch_interval = 1.0,
damage_groups = {fleshy = 2} damage_groups = {fleshy = 2}
@ -151,8 +150,9 @@ minetest.register_node("ethereal:crystalgrass", {
-- Define Moss Types (Has grass textures on all sides) -- Define Moss Types (Has grass textures on all sides)
function ethereal.add_moss(typ, descr, texture, receipe_item) function ethereal.add_moss(typ, descr, texture, receipe_item)
minetest.register_node("ethereal:"..typ.."_moss", {
description = descr.." Moss", minetest.register_node("ethereal:" .. typ .. "_moss", {
description = descr .. " Moss",
tiles = {texture}, tiles = {texture},
groups = {crumbly = 3}, groups = {crumbly = 3},
sounds = default.node_sound_dirt_defaults() sounds = default.node_sound_dirt_defaults()
@ -170,7 +170,7 @@ ethereal.add_moss( "fiery", "Fiery", "ethereal_grass_fiery_top.png", "ethereal:d
ethereal.add_moss( "gray", "Gray", "ethereal_grass_gray_top.png", "ethereal:snowygrass") ethereal.add_moss( "gray", "Gray", "ethereal_grass_gray_top.png", "ethereal:snowygrass")
ethereal.add_moss( "green", "Green", "default_grass.png", "default:jungleleaves") ethereal.add_moss( "green", "Green", "default_grass.png", "default:jungleleaves")
-- apple -- fix apples hanging in sky when no tree around
minetest.override_item("default:apple", { minetest.override_item("default:apple", {
drop = "default:apple", drop = "default:apple",
}) })
@ -341,7 +341,7 @@ minetest.register_node("ethereal:bamboo", {
type = "fixed", type = "fixed",
fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3} fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3}
}, },
groups = {choppy = 3, oddly_breakable_by_hand = 1, flammable = 2, tree = 1}, -- added tree groups = {choppy = 3, oddly_breakable_by_hand = 1, flammable = 2, tree = 1},
sounds = default.node_sound_leaves_defaults(), sounds = default.node_sound_leaves_defaults(),
after_dig_node = function(pos, node, metadata, digger) after_dig_node = function(pos, node, metadata, digger)
default.dig_up(pos, node, digger) default.dig_up(pos, node, digger)
@ -364,13 +364,10 @@ minetest.register_node("ethereal:bamboo_sprout", {
paramtype = "light", paramtype = "light",
sunlight_propagates = true, sunlight_propagates = true,
walkable = false, walkable = false,
--buildable_to = true,
--groups = {snappy = 3, flora = 1, attached_node = 1, flammable = 2},
groups = { groups = {
snappy = 3, attached_node = 1, flammable = 2, snappy = 3, attached_node = 1, flammable = 2,
dig_immediate = 3, ethereal_sapling = 1 dig_immediate = 3, ethereal_sapling = 1
}, },
--sounds = default.node_sound_leaves_defaults(),
sounds = default.node_sound_defaults(), sounds = default.node_sound_defaults(),
selection_box = { selection_box = {
type = "fixed", type = "fixed",
@ -462,7 +459,7 @@ for _,items in pairs({
{"default:ice", "default:snow"}, {"default:ice", "default:snow"},
{"ethereal:dry_dirt", "default:desert_sand"}, {"ethereal:dry_dirt", "default:desert_sand"},
}) do }) do
local a,b = unpack(items) local a, b = unpack(items)
minetest.register_craft({ minetest.register_craft({
output = b.." 5", output = b.." 5",
recipe = { recipe = {
@ -531,7 +528,7 @@ minetest.register_node("ethereal:candle", {
}, },
}, },
paramtype = "light", paramtype = "light",
light_source = default.LIGHT_MAX - 3, light_source = 11,
sunlight_propagates = true, sunlight_propagates = true,
walkable = false, walkable = false,
groups = {dig_immediate = 3, attached_node = 1}, groups = {dig_immediate = 3, attached_node = 1},
@ -543,7 +540,7 @@ minetest.register_node("ethereal:candle", {
}) })
minetest.register_craft({ minetest.register_craft({
output = "ethereal:candle 6", output = "ethereal:candle 4",
recipe = { recipe = {
{"","farming:cotton"}, {"","farming:cotton"},
{"","ethereal:palm_wax"}, {"","ethereal:palm_wax"},

View File

@ -57,8 +57,11 @@ local path = minetest.get_modpath("ethereal").."/schematics/"
ethereal.grow_sapling = function (pos, node) ethereal.grow_sapling = function (pos, node)
local under = minetest.get_node_or_nil({x = pos.x, y = pos.y - 1, z = pos.z}) local under = minetest.get_node({
if under then under = under.name else return end x = pos.x,
y = pos.y - 1,
z = pos.z
}).name
-- Check if Sapling is growing on correct substrate -- Check if Sapling is growing on correct substrate
if node.name == "ethereal:yellow_tree_sapling" if node.name == "ethereal:yellow_tree_sapling"
@ -139,13 +142,15 @@ minetest.register_craftitem("ethereal:tree_tool", {
description = "Tree Tool", description = "Tree Tool",
inventory_image = "default_stick.png", inventory_image = "default_stick.png",
on_use = function(itemstack, user, pointed_thing) on_use = function(itemstack, user, pointed_thing)
if not pointed_thing if not pointed_thing
or pointed_thing.type ~= "node" then or pointed_thing.type ~= "node" then
return return
end end
local pos = pointed_thing.under local pos = pointed_thing.under
local nod = minetest.get_node_or_nil(pos) local nod = minetest.get_node(pos)
if not nod then return end
ethereal.grow_sapling(pos, nod) ethereal.grow_sapling(pos, nod)
end, end,
}) })

View File

@ -138,11 +138,11 @@ minetest.register_ore({
clust_scarcity = 10*10*10, clust_scarcity = 10*10*10,
clust_num_ores = 24, clust_num_ores = 24,
clust_size = 4, clust_size = 4,
y_max = -14, y_max = -12,
y_min = -100, y_min = -100,
}) })
-- randomly generate coral or seaweed and have seaweed grow up to 10 high -- randomly generate coral or seaweed and have seaweed grow up to 14 high
minetest.register_abm({ minetest.register_abm({
nodenames = {"ethereal:sandy"}, nodenames = {"ethereal:sandy"},
neighbors = {"group:water"}, neighbors = {"group:water"},
@ -152,29 +152,42 @@ minetest.register_abm({
action = function(pos, node) action = function(pos, node)
local sel = math.random(1, 5) local sel = math.random(1, 5)
if sel == 1
or node.name == "ethereal:seaweed" then
local height = 0
while (minetest.get_node(pos).name == "ethereal:seaweed" pos.y = pos.y + 1
or minetest.get_node(pos).name == "ethereal:sandy")
and height < 14 do local nod = minetest.get_node(pos).name
if nod == "default:water_source"
and sel > 1 then
if minetest.get_node(pos).name == "default:water_source" then
minetest.swap_node(pos, {name = "ethereal:coral" .. sel})
end
return
end
if nod == "ethereal:seaweed"
or sel == 1 then
local height = 0
local high = 14
while height < high
and minetest.get_node(pos).name == "ethereal:seaweed" do
height = height + 1 height = height + 1
pos.y = pos.y + 1 pos.y = pos.y + 1
end end
if height < 14 if pos.y < 1
and pos.y < 0 and height < high
and minetest.get_node(pos).name == "default:water_source" then and minetest.get_node(pos).name == "default:water_source" then
minetest.swap_node(pos, {name = "ethereal:seaweed"}) minetest.swap_node(pos, {name = "ethereal:seaweed"})
end end
else
pos.y = pos.y + 1
if minetest.get_node(pos).name == "default:water_source" then
minetest.swap_node(pos, {name = "ethereal:coral"..sel})
end
end end
end, end,
}) })

Binary file not shown.

Before

Width:  |  Height:  |  Size: 444 B

After

Width:  |  Height:  |  Size: 421 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 444 B

View File

@ -89,6 +89,7 @@ minetest.register_abm({
action = function(pos, node) action = function(pos, node)
local water_node = "default:water" local water_node = "default:water"
if pos.y > 2 then if pos.y > 2 then
water_node = "default:river_water" water_node = "default:river_water"
end end
@ -98,8 +99,10 @@ minetest.register_abm({
or node.name == "ethereal:icebrick" or node.name == "ethereal:icebrick"
or node.name == "ethereal:snowbrick" then or node.name == "ethereal:snowbrick" then
minetest.swap_node(pos, {name = water_node.."_source"}) minetest.swap_node(pos, {name = water_node.."_source"})
elseif node.name == "default:snow" then elseif node.name == "default:snow" then
minetest.swap_node(pos, {name = water_node.."_flowing"}) minetest.swap_node(pos, {name = water_node.."_flowing"})
elseif node.name == "default:dirt_with_snow" then elseif node.name == "default:dirt_with_snow" then
minetest.swap_node(pos, {name = "default:dirt_with_grass"}) minetest.swap_node(pos, {name = "default:dirt_with_grass"})
end end
@ -116,6 +119,7 @@ minetest.register_abm({
chance = 2, chance = 2,
catch_up = false, catch_up = false,
action = function(pos, node) action = function(pos, node)
if node == "ethereal:dry_dirt" then if node == "ethereal:dry_dirt" then
minetest.swap_node(pos, {name = "default:dirt"}) minetest.swap_node(pos, {name = "default:dirt"})
else else
@ -132,20 +136,26 @@ minetest.register_abm({
chance = 1, chance = 1,
catch_up = false, catch_up = false,
action = function(pos, node) action = function(pos, node)
local num = #minetest.find_nodes_in_area( 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},
{x = pos.x + 1, y = pos.y, z = pos.z}, {x = pos.x + 1, y = pos.y, z = pos.z},
{"group:water"}) {"group:water"})
num = num + #minetest.find_nodes_in_area( 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},
{x = pos.x, y = pos.y, z = pos.z + 1}, {x = pos.x, y = pos.y, z = pos.z + 1},
{"group:water"}) {"group:water"})
num = num + #minetest.find_nodes_in_area( 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},
{x = pos.x, y = pos.y + 1, z = pos.z}, {x = pos.x, y = pos.y + 1, z = pos.z},
{"group:water"}) {"group:water"})
if num > 0 then if num > 0 then
minetest.swap_node(pos, {name = "default:water_flowing"}) minetest.swap_node(pos, {name = "default:water_flowing"})
minetest.add_item(pos, {name = node.name}) minetest.add_item(pos, {name = node.name})
end end
end, end,