minetest-mod-squaresville/nodes.lua

627 lines
21 KiB
Lua

-- Squaresville nodes.lua
-- Copyright Duane Robertson (duane@duanerobertson.com), 2017
-- Distributed under the LGPLv2.1 (https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html)
local newnode
local light_max = default.light_max or 10
local node = squaresville.node
local darkening = 0
if squaresville.desolation > 0 then
darkening = 100
end
newnode = squaresville.clone_node("default:stone")
newnode.diggable = false
newnode.groups = {}
minetest.register_node("squaresville:bedrock", newnode)
minetest.register_node('squaresville:road', {
description = 'Road',
tiles = {'squaresville_tarmac.png'},
sounds = default.node_sound_stone_defaults(),
groups = {cracky = 2, level = 1},
is_ground_content = false,
})
newnode = squaresville.clone_node('squaresville:road')
newnode.tiles = {'squaresville_tarmac.png^[brighten'}
minetest.register_node('squaresville:road_white', newnode)
minetest.register_node('squaresville:road_broken', {
description = 'Road',
tiles = {'squaresville_tarmac.png^squaresville_broken_3.png'},
paramtype = 'light',
drawtype = 'nodebox',
node_box = { type = 'fixed',
fixed = {
{0.5, 0.3, 0.5, -0.5, -0.5, -0.5}
},
is_ground_content = false,
},
sounds = default.node_sound_stone_defaults(),
groups = {cracky = 2, level = 1},
})
minetest.register_node('squaresville:road_yellow_line', {
description = 'Road',
tiles = {'squaresville_tarmac_yellow_line.png'},
paramtype2 = 'facedir',
sounds = default.node_sound_stone_defaults(),
groups = {cracky = 2, level = 1},
is_ground_content = false,
})
--minetest.register_node('squaresville:concrete', {
-- description = 'Concrete',
-- tiles = {'default_stone.png'},
-- groups = {cracky = 3, level=1, stone = 1},
-- drop = 'default:cobble',
-- sounds = default.node_sound_stone_defaults(),
-- is_ground_content = false,
--})
newnode = squaresville.clone_node('default:stone')
newnode.description = 'Concrete'
newnode.is_ground_content = false
newnode.drop = 'default:cobble'
minetest.register_node('squaresville:concrete', newnode)
newnode = squaresville.clone_node('squaresville:concrete')
newnode.tiles = {'default_stone.png^squaresville_broken_3_low.png'}
minetest.register_node('squaresville:concrete_broken', newnode)
newnode = squaresville.clone_node('squaresville:concrete')
newnode.tiles = {'default_stone.png^[colorize:#964B00:40'}
minetest.register_node('squaresville:concrete2', newnode)
newnode = squaresville.clone_node('squaresville:concrete')
newnode.tiles = {'default_stone.png^[colorize:#FF0000:20'}
minetest.register_node('squaresville:concrete3', newnode)
newnode = squaresville.clone_node('squaresville:concrete')
newnode.tiles = {'default_stone.png^[colorize:#4682B4:10'}
minetest.register_node('squaresville:concrete4', newnode)
newnode = squaresville.clone_node('squaresville:concrete')
newnode.tiles = {'default_stone.png^[colorize:#000000:40'}
minetest.register_node('squaresville:concrete5', newnode)
newnode = squaresville.clone_node('squaresville:concrete_broken')
newnode.tiles = {'default_stone.png^[colorize:#964B00:40^squaresville_broken_3_low.png'}
minetest.register_node('squaresville:concrete2_broken', newnode)
newnode = squaresville.clone_node('squaresville:concrete_broken')
newnode.tiles = {'default_stone.png^[colorize:#FF0000:20^squaresville_broken_3_low.png'}
minetest.register_node('squaresville:concrete3_broken', newnode)
newnode = squaresville.clone_node('squaresville:concrete_broken')
newnode.tiles = {'default_stone.png^[colorize:#4682B4:10^squaresville_broken_3_low.png'}
minetest.register_node('squaresville:concrete4_broken', newnode)
newnode = squaresville.clone_node('squaresville:concrete_broken')
newnode.tiles = {'default_stone.png^[colorize:#000000:40^squaresville_broken_3_low.png'}
minetest.register_node('squaresville:concrete5_broken', newnode)
minetest.register_node('squaresville:light_panel', {
description = 'Light Panel',
tiles = {'default_sandstone.png'},
light_source = 14,
paramtype = 'light',
paramtype2 = 'facedir',
drawtype = 'nodebox',
node_box = { type = 'fixed',
fixed = {
{-0.5, -0.5, -0.5, 0.5, -0.48, 0.5},
} },
groups = {cracky = 3, level=1, oddly_breakable_by_hand = 1},
drop = 'squaresville:light_panel_broken',
on_place = minetest.rotate_and_place,
sounds = default.node_sound_stone_defaults(),
is_ground_content = false,
})
newnode = squaresville.clone_node('squaresville:light_panel')
newnode.light_source = 0
minetest.register_node("squaresville:light_panel_broken", newnode)
-- ice, thin -- transparent
minetest.register_node('squaresville:thin_ice', {
description = 'Thin Ice',
tiles = {'caverealms_thin_ice.png'},
is_ground_content = true,
groups = {cracky=3},
sounds = default.node_sound_glass_defaults(),
use_texture_alpha = true,
light_source = 1,
drawtype = 'glasslike',
sunlight_propagates = true,
freezemelt = 'default:water_source',
paramtype = 'light',
})
minetest.register_node('squaresville:plate_glass', {
description = 'Plate Glass',
drawtype = 'glasslike',
paramtype = 'light',
sunlight_propagates = true,
tiles = {'squaresville_plate_glass.png'},
light_source = 1,
use_texture_alpha = true,
is_ground_content = false,
groups = {cracky = 3, level=2},
sounds = default.node_sound_stone_defaults(),
is_ground_content = false,
})
newnode = squaresville.clone_node('squaresville:plate_glass')
newnode.tiles = {'squaresville_plate_glass_broken.png'}
newnode.walkable = false
minetest.register_node('squaresville:plate_glass_broken', newnode)
minetest.register_alias('squaresville:glass_broken', 'squaresville:plate_glass_broken')
minetest.register_node('squaresville:floor_ceiling', {
description = 'Floor/Ceiling',
tiles = {'squaresville_floor.png^[colorize:#000000:'..darkening, 'squaresville_ceiling.png', 'default_stone.png'},
paramtype2 = 'facedir',
groups = {cracky = 3, level=1, flammable = 3},
drop = 'default:cobble',
drop = {
max_items = 3,
items = {
{
items = {'default:cobble',},
rarity = 1,
},
{
items = {'default:copper_ingot',},
rarity = 6,
},
},
},
sounds = default.node_sound_stone_defaults(),
is_ground_content = false,
})
newnode = squaresville.clone_node('squaresville:floor_ceiling')
newnode.tiles = {'squaresville_floor.png^[colorize:#000000:'..darkening..'^squaresville_broken_3.png', 'squaresville_ceiling.png^squaresville_broken_3.png', 'default_stone.png^squaresville_broken_3.png'}
minetest.register_node('squaresville:floor_ceiling_broken', newnode)
minetest.register_node('squaresville:roof', {
description = 'Roof',
tiles = {'squaresville_tarmac.png', 'squaresville_ceiling.png', 'default_stone.png'},
paramtype2 = 'facedir',
groups = {cracky = 3, level=1, flammable = 3},
drop = 'default:cobble',
sounds = default.node_sound_stone_defaults(),
is_ground_content = false,
})
minetest.register_node('squaresville:roof_broken', {
description = 'Roof',
tiles = {'squaresville_tarmac.png^squaresville_broken_3.png', 'squaresville_ceiling.png^squaresville_broken_3.png', 'default_stone.png'},
paramtype = 'light',
paramtype2 = 'facedir',
drawtype = 'nodebox',
drop = 'default:cobble',
node_box = { type = 'fixed',
fixed = {
{0.5, 0.3, 0.5, -0.5, -0.5, -0.5}
}
},
sounds = default.node_sound_stone_defaults(),
groups = {cracky = 3, level=1, flammable = 3},
is_ground_content = false,
})
minetest.register_node('squaresville:sidewalk', {
description = 'Sidewalk',
tiles = {'squaresville_sidewalk.png'},
groups = {cracky = 3, level=1, stone = 1},
drop = 'default:cobble',
sounds = default.node_sound_stone_defaults(),
is_ground_content = false,
})
newnode = squaresville.clone_node('squaresville:sidewalk')
newnode.tiles = {'squaresville_sidewalk.png^squaresville_broken_3.png'}
minetest.register_node('squaresville:sidewalk_broken', newnode)
minetest.register_node('squaresville:gargoyle', {
description = 'Concrete',
tiles = {'default_stone.png^[colorize:#000000:60'},
paramtype = 'light',
paramtype2 = 'facedir',
drawtype = 'nodebox',
node_box = { type = 'fixed',
fixed = {
{0.2, 0.23, -0.17, -0.1, -0.5, 0.17}, -- body f
{-0.1, -0.07, -0.17, -0.27, -0.5, 0.17}, -- body r
{0.17, 0.5, -0.07, 0, 0.23, 0.07}, -- head
{0.27, 0.2, 0.1, 0.13, -0.5, 0.23}, -- leg fl
{0.27, 0.2, -0.23, 0.13, -0.5, -0.1}, -- leg fr
{0.03, -0.1, 0.17, -0.2, -0.5, 0.27}, -- leg rl
{0.03, -0.1, -0.27, -0.2, -0.5, -0.17}, -- leg rl
{-0.1, 0.23, -0.4, -0.17, 0.13, 0.4}, -- wing u
{-0.1, 0.13, -0.3, -0.17, 0.03, 0.3}, -- wing u
} },
groups = {cracky = 3, level=1, stone = 1},
drop = 'default:cobble',
on_place = minetest.rotate_and_place,
sounds = default.node_sound_stone_defaults(),
})
minetest.register_node("squaresville:plaster", {
description = "Plaster",
tiles = {"default_desert_stone.png^[colorize:#8C8175:225"},
sounds = default.node_sound_stone_defaults(),
groups = {cracky = 3, level = 0, flammable = 2, oddly_breakable_by_hand = 1},
})
newnode = squaresville.clone_node("squaresville:plaster")
newnode.tiles = {"(default_desert_stone.png^[colorize:#8C8175:225)^squaresville_broken_3_low.png"}
minetest.register_node("squaresville:plaster_broken", newnode)
newnode = squaresville.clone_node("stairs:stair_stone")
newnode.description = "Concrete Stair"
newnode.groups.flammable = 3
newnode.drop = "stairs:stair_stone"
minetest.register_node("squaresville:concrete_stair", newnode)
minetest.register_node("squaresville:carpet", {
description = "Carpet",
tiles = {"wool_blue.png", "default_stone.png", "default_stone.png"},
sounds = default.node_sound_stone_defaults(),
groups = {cracky = 2, level = 1},
})
minetest.register_alias("squaresville:carpet_broken", "default:stone")
newnode = squaresville.clone_node("default:glass")
newnode.description = "Glowing Crystal"
--newnode.tiles = {"squaresville_plate_glass.png^colorize:#FFFF00,150",}
newnode.tiles = {"squaresville_crystal.png",}
newnode.light_source = 10
minetest.register_node("squaresville:crystal_glow", newnode)
if minetest.registered_items['underworlds:glowing_fungal_stone'] then
minetest.register_alias("squaresville:glowing_fungal_stone", 'underworlds:glowing_fungal_stone')
minetest.register_alias("squaresville:glowing_fungus", 'underworlds:glowing_fungus')
else
-- Glowing fungal stone provides an eerie light.
minetest.register_node("squaresville:glowing_fungal_stone", {
description = "Glowing Fungal Stone",
tiles = {"default_stone.png^vmg_glowing_fungal.png",},
is_ground_content = true,
light_source = light_max - 4,
groups = {cracky=3, stone=1},
drop = {items={ {items={"default:cobble"},}, {items={"squaresville:glowing_fungus",},},},},
sounds = default.node_sound_stone_defaults(),
})
-- Glowing fungus grows underground.
minetest.register_craftitem("squaresville:glowing_fungus", {
description = "Glowing Fungus",
drawtype = "plantlike",
paramtype = "light",
tiles = {"vmg_glowing_fungus.png"},
inventory_image = "vmg_glowing_fungus.png",
groups = {dig_immediate = 3},
})
end
minetest.register_node("squaresville:wet_fungus", {
description = "Leaves",
--drawtype = "allfaces_optional",
--waving = 1,
tiles = {"wet_fungus_2.png"},
--special_tiles = {"wet_fungus_2.png"},
--paramtype = "light",
--is_ground_content = false,
groups = {snappy = 3},
drop = '',
sounds = default.node_sound_leaves_defaults(),
})
-- Polluted dirt
newnode = squaresville.clone_node("default:dirt")
newnode.description = "Polluted Dirt"
newnode.tiles = {"default_dirt.png^[colorize:#100020:100"}
newnode.groups.soil = 0
minetest.register_node("squaresville:polluted_dirt", newnode)
-- Bare branches
minetest.register_node('squaresville:sticks_default', {
description = 'Sticks',
drawtype = 'allfaces_optional',
waving = 1,
visual_scale = 1.3,
tiles = {'squaresville_dry_twigs.png'},
paramtype = 'light',
is_ground_content = false,
drop = 'default:stick 2',
groups = {snappy = 3, leafdecay = 3, flammable = 2, leaves = 1},
})
-- Black leaves
newnode = squaresville.clone_node("default:leaves")
newnode.description = "Blackened Leaves"
newnode.tiles = {"default_leaves.png^[colorize:#100020:200"}
newnode.special_tiles = {"default_leaves_simple.png^[colorize:#100020:200"}
newnode.groups = {snappy = 3, flammable = 2}
minetest.register_node("squaresville:leaves_black", newnode)
newnode = squaresville.clone_node("default:water_source")
newnode.description = "Poisonous Water"
newnode.groups.poison = 3
--newnode.light_source = 6
newnode.liquid_alternative_flowing = "squaresville:water_poison_flowing"
newnode.liquid_alternative_source = "squaresville:water_poison_source"
newnode.post_effect_color = {a = 103, r = 108, g = 128, b = 64}
--newnode.special_tiles[1].name = "squaresville_water_poison_source_animated.png"
newnode.tiles[1].name = "squaresville_water_poison_source_animated.png"
minetest.register_node("squaresville:water_poison_source", newnode)
newnode = squaresville.clone_node("default:water_flowing")
newnode.description = "Poisonous Water"
newnode.groups.poison = 3
--newnode.light_source = 6
newnode.liquid_alternative_flowing = "squaresville:water_poison_flowing"
newnode.liquid_alternative_source = "squaresville:water_poison_source"
newnode.post_effect_color = {a = 103, r = 108, g = 128, b = 64}
--newnode.special_tiles[1].name = "squaresville_water_poison_flowing_animated.png"
newnode.tiles[1] = "squaresville_water_poison.png"
minetest.register_node("squaresville:water_poison_flowing", newnode)
minetest.register_node("squaresville:basalt", {
description = "Basalt",
tiles = {"squaresville_basalt.png"},
is_ground_content = true,
groups = {cracky=1, level=2},
sounds = default.node_sound_stone_defaults({
footstep = {name="default_stone_footstep", gain=0.25},
}),
})
minetest.register_alias('squaresville:basalt_raw', 'squaresville:basalt')
minetest.register_node("squaresville:granite", {
description = "Granite",
tiles = {"squaresville_granite.png"},
is_ground_content = true,
groups = {cracky=1, level=3},
sounds = default.node_sound_stone_defaults({
footstep = {name="default_stone_footstep", gain=0.25},
}),
})
minetest.register_alias('squaresville:granite_raw', 'squaresville:granite')
newnode = squaresville.clone_node("default:stone")
newnode.tiles = {'squaresville_cracked_stone.png'}
minetest.register_node('squaresville:cracked_stone', newnode)
minetest.register_ore({
ore_type = "scatter",
ore = "default:lava_source",
wherein = "squaresville:cracked_stone",
clust_scarcity = 10 * 10 * 10,
clust_num_ores = 1,
clust_size = 1,
y_min = 1,
y_max = 10,
})
newnode = squaresville.clone_node("default:dry_shrub")
newnode.tiles = {'squaresville_black_shrub.png'}
minetest.register_node('squaresville:blackened_shrub', newnode)
do
local size_name = 1
for size = 1, 4 do
local name = 'squaresville:stone_spike_'..size_name
minetest.register_node(name, {
description = "Stone Spike",
tiles = {"squaresville_spike_1.png"},
inventory_image = "squaresville_spike_1.png",
wield_image = "squaresville_spike_1.png",
is_ground_content = true,
groups = {cracky=3},
sounds = default.node_sound_stone_defaults(),
--light_source = 3,
paramtype = "light",
drawtype = "plantlike",
walkable = true,
buildable_to = true,
visual_scale = size,
selection_box = {
type = "fixed",
fixed = {-0.3*size, -0.5, -0.3*size, 0.3*size, -5/16, 0.3*size},
}
})
size_name = size_name + 1
end
end
minetest.register_node('squaresville:fur_tree', {
description = "Fur Fronds",
tiles = {"squaresville_fur_frond.png"},
inventory_image = "squaresville_fur_frond.png",
wield_image = "squaresville_fur_frond.png",
is_ground_content = true,
groups = {choppy=3},
sounds = default.node_sound_wood_defaults(),
paramtype = "light",
drawtype = "plantlike",
walkable = false,
buildable_to = true,
--visual_scale = 2,
selection_box = {
type = "fixed",
fixed = {-0.1, -0.5, -0.1, 0.1, 0.5, 0.1},
}
})
newnode = squaresville.clone_node("default:dirt_with_grass")
newnode.groups.spreading_dirt_type = nil
newnode.tiles = {"squaresville_odd_grass_1.png", "default_dirt.png",
{name = "default_dirt.png^squaresville_odd_grass_1.png",
tileable_vertical = false}}
minetest.register_node('squaresville:dirt_with_odd_grass', newnode)
minetest.register_node("squaresville:strange_plant_1", {
description = "Strange Plant",
drawtype = "plantlike",
waving = 1,
tiles = {"squaresville_strange_plant_1.png"},
paramtype = "light",
sunlight_propagates = true,
walkable = false,
buildable_to = true,
groups = { snappy = 3, flower = 1, flora = 1, attached_node = 1, },
sounds = default.node_sound_leaves_defaults(),
selection_box = {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5},
},
})
minetest.register_node("squaresville:strange_plant_2", {
description = "Strange Plant",
drawtype = "plantlike",
waving = 1,
tiles = {"squaresville_strange_plant_2.png"},
paramtype = "light",
sunlight_propagates = true,
walkable = false,
buildable_to = true,
groups = { snappy = 3, flora = 1, attached_node = 1, },
sounds = default.node_sound_leaves_defaults(),
selection_box = {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5},
},
})
--minetest.register_node("squaresville:cords", {
-- description = "Mushy Cords",
-- tiles = {"squaresville_cords_top.png", "squaresville_cords_top.png", "squaresville_cords.png"},
-- paramtype2 = "facedir",
-- is_ground_content = false,
-- groups = {tree = 1, fleshy = 2},
-- sounds = default.node_sound_leaves_defaults(),
-- on_place = minetest.rotate_node
--})
--
--
--newnode = squaresville.clone_node("default:water_source")
--newnode.description = "Water"
--newnode.drop = "default:water_source"
--newnode.pointable = true
--newnode.liquid_range = 0
--newnode.liquid_viscosity = 1
--newnode.liquid_renewable = false
--newnode.liquid_alternative_flowing = "chaos:weightless_water"
--newnode.liquid_alternative_source = "chaos:weightless_water"
--newnode.diggable = true
--newnode.buildable_to = false
--newnode.walkable = true
--newnode.groups = {}
--minetest.register_node("squaresville:pustule", newnode)
--
--if bucket and bucket.liquids then
-- bucket.liquids['squaresville:pustule'] = {
-- source = 'squaresville:pustule',
-- flowing = 'squaresville:pustule',
-- itemname = 'bucket:bucket_water',
-- }
--end
newnode = squaresville.clone_node('air')
newnode.light_source = 14
minetest.register_node('squaresville:bright_air', newnode)
minetest.register_node("squaresville:streetlight", {
description = "Streetlight",
tiles = {"squaresville_streetlight.png", 'squaresville_streetlight_bottom.png', 'squaresville_streetlight.png'},
paramtype = "light",
light_source = 14,
paramtype2 = "facedir",
drawtype = "nodebox",
node_box = { type = "fixed",
fixed = {
{0.1, 2.5, -0.1, -0.1, -0.5, 0.1},
{0.05, 2.5, -0.5, -0.05, 2.4, -0.1},
{0.1, 2.5, -0.7, -0.1, 2.35, -0.5},
} },
groups = {cracky = 2, level=2},
sounds = default.node_sound_stone_defaults(),
on_place = minetest.rotate_and_place,
})
newnode = squaresville.clone_node("squaresville:streetlight")
newnode.light_source = 0
minetest.register_node("squaresville:streetlight_broken", newnode)
minetest.register_node("squaresville:beacon_1", {
description = "Aircraft Beacon",
tiles = {"squaresville_beacon_1.png"},
paramtype = "light",
light_source = 14,
paramtype2 = "facedir",
drawtype = "nodebox",
node_box = { type = "fixed",
fixed = {
{-0.05, -0.5, -0.05, 0.05, 0.3, 0.05},
{-0.15, 0.3, -0.15, 0.15, 0.5, 0.15},
} },
groups = {cracky = 2, level=2},
on_place = minetest.rotate_and_place,
sounds = default.node_sound_stone_defaults(),
})
newnode = squaresville.clone_node('default:apple')
newnode.tiles = {'squaresville_orange.png'}
newnode.inventory_image = "squaresville_orange.png"
newnode.description = 'Orange'
minetest.register_node('squaresville:orange', newnode)
newnode = squaresville.clone_node('default:apple')
newnode.tiles = {'squaresville_pear.png'}
newnode.inventory_image = "squaresville_pear.png"
newnode.description = 'Pear'
minetest.register_node('squaresville:pear', newnode)
for _, leaf in pairs({'default:leaves', 'default:pine_needles'}) do
local num = 1
for _, color in pairs({'FF0000', 'FFFF00', '00FF00'}) do
local newnode = squaresville.clone_node(leaf)
newnode.tiles = {newnode.tiles[1] .. '^[colorize:#' .. color .. ':15'}
local new_leaf_name = leaf:gsub('default', 'squaresville') .. '_alt_' .. num
minetest.register_node(new_leaf_name, newnode)
num = num + 1
end
end
newnode = squaresville.clone_node("default:leaves")
newnode.description = "Cherry Blossoms"
newnode.tiles = {"squaresville_leaves_cherry.png"}
newnode.special_tiles = {"squaresville_leaves_cherry.png"}
newnode.groups = {snappy = 3, flammable = 2}
minetest.register_node("squaresville:leaves_cherry", newnode)