369 lines
9.9 KiB
Lua
Executable File
369 lines
9.9 KiB
Lua
Executable File
-- overrides inspired by https://github.com/ThorfinnS/xocean/commit/f8627aa49abc76f271a9711d9647b0336cf0e8dd
|
|
minetest.override_item("xocean:horn", {
|
|
drop = "xocean:horn",
|
|
after_destruct = function(pos, oldnode)
|
|
minetest.set_node(pos, {name = "default:coral_brown"})
|
|
end,
|
|
})
|
|
minetest.override_item("xocean:skeleton_horn", {
|
|
drop = "xocean:skeleton_horn",
|
|
on_place = function(itemstack, placer, pointed_thing)
|
|
if pointed_thing.type ~= "node" or not placer then
|
|
return itemstack
|
|
end
|
|
|
|
local player_name = placer:get_player_name()
|
|
local pos_under = pointed_thing.under
|
|
local pos_above = pointed_thing.above
|
|
|
|
if minetest.get_node(pos_under).name ~= "default:coral_skeleton" or
|
|
minetest.get_node(pos_above).name ~= "default:water_source" then
|
|
return itemstack
|
|
end
|
|
|
|
if minetest.is_protected(pos_under, player_name) or
|
|
minetest.is_protected(pos_above, player_name) then
|
|
minetest.chat_send_player(player_name, "Node is protected")
|
|
minetest.record_protection_violation(pos_under, player_name)
|
|
return itemstack
|
|
end
|
|
|
|
minetest.set_node(pos_under, {name = "xocean:skeleton_horn"})
|
|
if not (creative and creative.is_enabled_for(player_name)) then
|
|
itemstack:take_item()
|
|
end
|
|
|
|
return itemstack
|
|
end,
|
|
after_destruct = function(pos, oldnode)
|
|
minetest.set_node(pos, {name = "default:coral_skeleton"})
|
|
end,
|
|
})
|
|
|
|
minetest.register_node(":illuna_ethereal:douglasie_leaves", {
|
|
description = "Douglasie Leaves",
|
|
drawtype = "allfaces_optional",
|
|
visual_scale = 1,
|
|
waving = 1,
|
|
tiles = {"douglasie_leaves.png"},
|
|
drop = {
|
|
max_items = 1,
|
|
items = {
|
|
{items = {"illuna_ethereal:douglasie_sapling"}, rarity = 25},
|
|
{items = {"illuna_ethereal:douglasie_leaves"}},
|
|
}
|
|
},
|
|
paramtype = "light",
|
|
is_ground_content = false,
|
|
walkable = false,
|
|
climbable = true,
|
|
groups = {snappy = 3, leafdecay = 3, flammable = 2, leaves = 1},
|
|
sounds = default.node_sound_leaves_defaults(),
|
|
after_place_node = default.after_place_leaves
|
|
})
|
|
|
|
minetest.register_node(":illuna_ethereal:douglasie_trunk", {
|
|
description = "Douglasie Trunk",
|
|
tiles = {"douglasie_trunk_top.png", "douglasie_trunk_top.png", "douglasie_trunk.png"},
|
|
is_ground_content = false,
|
|
paramtype2 = "facedir",
|
|
on_place = minetest.rotate_node,
|
|
groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2}
|
|
})
|
|
|
|
minetest.register_node(":illuna_ethereal:douglasie_wood", {
|
|
description = "Douglasie Wood Planks",
|
|
tiles = {"douglasie_wood.png"},
|
|
is_ground_content = false,
|
|
paramtype2 = "facedir",
|
|
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, wood = 1},
|
|
})
|
|
|
|
default.register_leafdecay({
|
|
trunks = {"illuna_ethereal:douglasie_trunk"},
|
|
leaves = {"illuna_ethereal:douglasie_leaves"},
|
|
radius = 3
|
|
})
|
|
|
|
minetest.override_item("default:dirt_with_grass", {groups = {crumbly = 3, soil = 1, grass = 1}})
|
|
|
|
local dirts = {
|
|
"Mesa", "Grove", "Jungle"
|
|
}
|
|
|
|
|
|
for n = 1, #dirts do
|
|
|
|
local desc = dirts[n]
|
|
local name = desc:lower()
|
|
|
|
minetest.register_node(":ethereal:"..name.."_dirt", {
|
|
description = desc.." Dirt",
|
|
tiles = {
|
|
"ethereal_grass_"..name.."_top.png",
|
|
"default_dirt.png",
|
|
"default_dirt.png^ethereal_grass_"..name.."_side.png"
|
|
},
|
|
is_ground_content = true,
|
|
groups = {crumbly = 3, soil = 1, ethereal_grass = 1},
|
|
soil = {
|
|
base = "ethereal:"..name.."_dirt",
|
|
dry = "farming:soil",
|
|
wet = "farming:soil_wet"
|
|
},
|
|
drop = "default:dirt",
|
|
sounds = default.node_sound_dirt_defaults({
|
|
footstep = {name = "default_grass_footstep", gain = 0.25},
|
|
}),
|
|
})
|
|
|
|
end
|
|
|
|
dirts = { "ethereal:jungle_dirt", "ethereal:grove_dirt", "default:dirt_with_dry_grass", "default:dirt_with_grass", "ethereal:mesa_dirt" }
|
|
-- check surrounding grass and change dirt to same colour
|
|
local grass_spread = function(pos, node)
|
|
|
|
local above = {x = pos.x, y = pos.y + 1, z = pos.z}
|
|
|
|
-- not enough light
|
|
if (minetest.get_node_light(above) or 0) < 13 then
|
|
return
|
|
end
|
|
|
|
local name = minetest.get_node(above).name
|
|
local def = minetest.registered_nodes[name]
|
|
|
|
-- water above grass
|
|
if name == "ignore" or not def or def.liquidtype ~= "none" then
|
|
return
|
|
end
|
|
|
|
local curr_max, curr_type, num = 0, ""
|
|
|
|
-- find all default and ethereal grasses in area around dirt
|
|
local positions, grasses = minetest.find_nodes_in_area(
|
|
{x = pos.x - 1, y = pos.y - 2, z = pos.z - 1},
|
|
{x = pos.x + 1, y = pos.y + 2, z = pos.z + 1}, dirts)
|
|
|
|
-- count new grass nodes
|
|
for n = 1, #dirts do
|
|
|
|
num = grasses[ dirts[n] ] or 0
|
|
|
|
if num > curr_max then
|
|
curr_max = num
|
|
curr_type = dirts[n]
|
|
end
|
|
end
|
|
|
|
-- no grass nearby, keep as dirt
|
|
if curr_type == "" then
|
|
return
|
|
end
|
|
|
|
minetest.swap_node(pos, {name = curr_type})
|
|
end
|
|
|
|
-- any grass with a block above will turn into dirt
|
|
local grass_devoid = function(pos, node)
|
|
|
|
local above = {x = pos.x, y = pos.y + 1, z = pos.z}
|
|
local name = minetest.get_node(above).name
|
|
local nodedef = minetest.registered_nodes[name]
|
|
|
|
if name ~= "ignore" and nodedef and not ((nodedef.sunlight_propagates or
|
|
nodedef.paramtype == "light") and
|
|
nodedef.liquidtype == "none") then
|
|
|
|
minetest.swap_node(pos, {name = "default:dirt"})
|
|
end
|
|
end
|
|
|
|
-- redwood trunk
|
|
minetest.register_node(":ethereal:redwood_trunk", {
|
|
description = "Redwood Trunk",
|
|
tiles = {
|
|
"redwood_trunk_top.png",
|
|
"redwood_trunk_top.png",
|
|
"redwood_trunk.png"
|
|
},
|
|
groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2},
|
|
sounds = default.node_sound_wood_defaults(),
|
|
paramtype2 = "facedir",
|
|
on_place = minetest.rotate_node,
|
|
})
|
|
|
|
-- redwood wood
|
|
minetest.register_node(":ethereal:redwood_wood", {
|
|
description = "Redwood Wood",
|
|
tiles = {"redwood_wood.png"},
|
|
is_ground_content = false,
|
|
groups = {wood = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 3},
|
|
sounds = default.node_sound_wood_defaults(),
|
|
})
|
|
|
|
minetest.register_node(":ethereal:redwood_leaves", {
|
|
description = "Redwood Leaves",
|
|
tiles = {"redwood_leaves.png"},
|
|
inventory_image = "redwood_leaves.png",
|
|
wield_image = "redwood_leaves.png",
|
|
drawtype = "allfaces_optional",
|
|
visual_scale = 1,
|
|
paramtype = "light",
|
|
walkable = false,
|
|
climbable = true,
|
|
waving = 1,
|
|
groups = {snappy = 3, leafdecay = 3, leaves = 1, flammable = 2},
|
|
drop = {
|
|
max_items = 1,
|
|
items = {
|
|
{items = {"ethereal:redwood_sapling"}, rarity = 50},
|
|
{items = {"default:stick"}, rarity = 30},
|
|
{items = {"ethereal:redwood_leaves"}}
|
|
}
|
|
},
|
|
sounds = default.node_sound_leaves_defaults(),
|
|
after_place_node = default.after_place_leaves,
|
|
})
|
|
|
|
default.register_leafdecay({
|
|
trunks = {"ethereal:redwood_trunk"},
|
|
leaves = {"ethereal:redwood_leaves"},
|
|
radius = 3
|
|
})
|
|
|
|
minetest.override_item("default:lava_source", {
|
|
on_construct = function(pos)
|
|
if pos.y >= 0 then
|
|
minetest.env:remove_node(pos)
|
|
end
|
|
end
|
|
})
|
|
|
|
minetest.override_item("default:water_source", {
|
|
on_construct = function(pos)
|
|
if (pos.y <= -4900 and pos.y >= -11000) then
|
|
minetest.env:remove_node(pos)
|
|
end
|
|
end
|
|
})
|
|
|
|
minetest.override_item("default:river_water_source", {
|
|
on_construct = function(pos)
|
|
if (pos.y <= -4900 and pos.y >= -11000) then
|
|
minetest.env:remove_node(pos)
|
|
end
|
|
end
|
|
})
|
|
|
|
local leaves = {
|
|
"default:leaves",
|
|
"default:jungleleaves",
|
|
"default:pine_needles",
|
|
"default:acacia_leaves",
|
|
"default:aspen_leaves",
|
|
"moretrees:apple_tree_leaves",
|
|
"moretrees:apple_blossoms",
|
|
"moretrees:beech_leaves",
|
|
"moretrees:oak_leaves",
|
|
"moretrees:sequoia_leaves",
|
|
"moretrees:birch_leaves",
|
|
"moretrees:spruce_leaves",
|
|
"moretrees:cedar_leaves",
|
|
"moretrees:poplar_leaves",
|
|
"moretrees:willow_leaves",
|
|
"moretrees:rubber_tree_leaves",
|
|
"moretrees:fir_leaves",
|
|
"moretrees:fir_leaves_bright",
|
|
"moretrees:jungletree_leaves_red",
|
|
"moretrees:jungletree_leaves_yellow",
|
|
"cloudlands:leaves",
|
|
"cloudlands:leaves2",
|
|
"cloudlands:leaves3",
|
|
"cloudlands:blossom_white1",
|
|
"cloudlands:blossom_white2",
|
|
"cloudlands:blossom_whitepink",
|
|
"cloudlands:blossom_whitepink_glow",
|
|
"cloudlands:blossom_red",
|
|
"cloudlands:blossom_red_glow",
|
|
"cloudlands:blossom_pink",
|
|
"cloudlands:blossom_wisteria1",
|
|
"cloudlands:blossom_wisteria2",
|
|
"cloudlands:blossom_wisteria2_glow"
|
|
}
|
|
|
|
for i = 1,33 do
|
|
local leaves = leaves[i]
|
|
minetest.override_item(leaves, {
|
|
walkable = false,
|
|
climbable = true
|
|
})
|
|
end
|
|
|
|
illuna = {}
|
|
|
|
function illuna.wikiconstruct(pos)
|
|
local meta = minetest.get_meta(pos)
|
|
minetest.add_entity({x=pos.x, y=pos.y+0.96, z=pos.z}, "illuna:wikitop")
|
|
local timer = minetest.get_node_timer(pos)
|
|
timer:start(5.0)
|
|
end
|
|
|
|
function illuna.wikidestruct(pos)
|
|
for _, obj in pairs(minetest.get_objects_inside_radius(pos, 0.96)) do
|
|
if obj and obj:get_luaentity() and
|
|
obj:get_luaentity().name == "illuna:wikitop" then
|
|
obj:remove()
|
|
break
|
|
end
|
|
end
|
|
end
|
|
|
|
minetest.override_item("wiki:wiki", {
|
|
tiles= {
|
|
"illuna_wiki_top.png",
|
|
"illuna_wiki_bottom.png",
|
|
"illuna_wiki_side.png",
|
|
"illuna_wiki_side.png",
|
|
"illuna_wiki_side.png",
|
|
"illuna_wiki_side.png",
|
|
},
|
|
on_construct = illuna.wikiconstruct,
|
|
on_destruct = illuna.wikidestruct,
|
|
light_source = 3,
|
|
})
|
|
|
|
minetest.register_entity(":illuna:wikitop", {
|
|
visual = "wielditem",
|
|
visual_size = {x=0.4, y=0.4},
|
|
collisionbox = {0},
|
|
physical = false,
|
|
automatic_rotate = math.pi * 0.15,
|
|
nametag = "Illuna Wiki",
|
|
nametag_color = "#6893c4",
|
|
textures = {"illuna:wikitop"},
|
|
glow = 6,
|
|
on_activate = function(self)
|
|
local pos = self.object:getpos()
|
|
local pos_under = {x=pos.x, y=pos.y-1, z=pos.z}
|
|
if minetest.get_node(pos_under).name ~= "wiki:wiki" then
|
|
self.object:remove()
|
|
end
|
|
end
|
|
})
|
|
|
|
minetest.register_craftitem(":illuna:wikitop", {
|
|
inventory_image = "illuna_wikitop.png",
|
|
})
|
|
|
|
minetest.register_node(":illuna:astroportal_block", {
|
|
description = "Ancient Astro Portal Block",
|
|
tiles = {"illuna_astroportal_block.png"},
|
|
is_ground_content = false,
|
|
groups = {wood = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 3},
|
|
sounds = default.node_sound_wood_defaults(),
|
|
})
|
|
|
|
minetest.register_alias("wardrobe:wardrobe", "homedecor:wardrobe")
|
|
minetest.register_alias("colored_eggs:node", "mobs:egg")
|