nssm_extra-cd2025/nssm_materials.lua

242 lines
5.8 KiB
Lua

-- non eatable craftitems
local function nssm_register_noneatcraftitems (name, descr)
minetest.register_craftitem(":nssm:" .. name, {
description = descr,
image = name .. ".png",
})
end
nssm_register_noneatcraftitems ("masticone_core", "Masticone Core")
nssm_register_noneatcraftitems ("berinhog_horn", "Berinhog Horn")
nssm_register_noneatcraftitems ("earth_heart", "Earth Heart")
minetest.register_craftitem(":nssm:cold_stars", {
description = "Cold Stars",
image = "cold_stars.png",
on_place = function(itemstack, placer, pointed_thing)
for i = 1, 33 do
local pos1 = minetest.get_pointed_thing_position(pointed_thing, true)
local dx = math.random(-20, 20)
local dy = math.random(-3, 20)
local dz = math.random(-20, 20)
local pos1 = {x = pos1.x + dx, y = pos1.y + dy, z = pos1.z + dz}
if not minetest.is_protected(pos1, "")
or not minetest.get_item_group(
minetest.get_node(pos1).name, "unbreakable") == 1 then
minetest.set_node(pos1, {name="nssm:cold_star"})
end
end
if not minetest.settings:get_bool("creative_mode") then
itemstack:take_item()
end
return itemstack
end
})
-- nodes
minetest.register_node(":nssm:cold_star", {
drawtype = "plantlike",
tiles = {"cold_star.png"},
light_source = 13,
walkable = false,
paramtype = "light",
pointable = false,
buildable_to = true,
sunlight_propagates = true,
groups = {not_in_creative_inventory = 1},
drop = {},
on_construct = function(pos)
minetest.get_node_timer(pos):start(400)
end,
on_timer = function(pos)
minetest.remove_node(pos)
end,
on_blast = function() end,
})
minetest.register_node(":nssm:crystal_gas", {
description = "Crystal Gas",
drawtype = "airlike",
paramtype = "light",
walkable = false,
pointable = false,
diggable = false,
buildable_to = true,
drop = "",
drowning = 2,
post_effect_color = {a = 1000, r = 1000, g = 1000, b = 1000},
groups = {flammable = 2, not_in_creative_inventory = 1},
})
minetest.register_node(":nssm:slug_crystal", {
description = "Slug Crystal",
tiles = {"slug_crystal.png"},
paramtype = "light",
drawtype = "glasslike",
drowning = 10,
damage_per_second = 1,
drop = "",
post_effect_color = {a = 1000, r = 1000, g = 1000, b = 1000},
light_source = 2,
groups = {cracky = 1, not_in_creative_inventory = 1},
})
minetest.register_node(":nssm:coldest_ice", {
description = "Coldest Ice",
tiles = {"coldest_ice.png"},
paramtype = "light",
drowning = 2,
damage_per_second = 1,
drop = "",
light_source = 3,
groups = {cracky = 1, not_in_creative_inventory = 1},
})
minetest.register_node(":nssm:mud", {
description = "Mud",
inventory_image = "mude.png",
tiles = {
{
name = "mud_animated.png",
animation = {
type = "vertical_frames", aspect_w = 16, aspect_h = 16, length = 16.0
}
}
},
walkable = false,
paramtype = "light",
pointable = true,
buildable_to = false,
drop = "",
drowning = 0,
liquid_renewable = false,
liquidtype = "source",
liquid_range = 0,
liquid_alternative_flowing = "nssm:mud",
liquid_alternative_source = "nssm:mud",
liquid_viscosity = 10,
groups = {crumbly = 1, liquid = 1},
})
-- Abms
minetest.register_abm({
nodenames = {"nssm:mud"},
neighbors = {"air"},
interval = 15,
chance = 10,
action = function(pos, node, active_object_count, active_object_count_wider)
local vec={x = 1, y = 1, z = 1}
local poslist = minetest.find_nodes_in_area(
vector.subtract(pos, vec), vector.add(pos,vec), "group:water")
if #poslist == 0 then
minetest.set_node(pos, {name="default:dirt"})
end
end
})
minetest.register_abm({
nodenames = {"nssm:crystal_gas"},
interval = 1,
chance = 4,
action = function(pos, node, active_object_count, active_object_count_wider)
minetest.set_node(pos, {name = "nssm:slug_crystal"})
end
})
minetest.register_abm({
nodenames = {"nssm:slug_crystal"},
interval = 20,
chance = 3,
action = function(pos, node, active_object_count, active_object_count_wider)
minetest.set_node(pos, {name = "air"})
end
})
-- Eggs
local function nssm_register_egg(name, descr)
minetest.register_craftitem(":nssm:" .. name, {
description = descr .. " Egg",
image = name .. "_egg.png",
on_place = function(itemstack, placer, pointed_thing)
local pos1 = minetest.get_pointed_thing_position(pointed_thing, true)
pos1.y = pos1.y + 1.5
core.after(0.1, function()
minetest.add_entity(pos1, "nssm:" .. name)
end)
if not mobs.is_creative(placer:get_player_name()) then
itemstack:take_item()
end
return itemstack
end,
})
end
function nssm_register_egg2 (name, descr) -- mobs you can"t catch
minetest.register_craftitem(":nssm:" .. name .. "_egg", {
description = descr .. " Egg",
image = name .. "_egg.png",
on_place = function(itemstack, placer, pointed_thing)
local pos1 = minetest.get_pointed_thing_position(pointed_thing, true)
pos1.y = pos1.y + 1.5
core.after(0.1, function()
minetest.add_entity(pos1, "nssm:" .. name)
end)
if not mobs.is_creative(placer:get_player_name()) then
itemstack:take_item()
end
return itemstack
end,
})
end
nssm_register_egg("albino_spider", "Albino Spider")
nssm_register_egg("chog", "Chog")
nssm_register_egg2("silversand_dragon", "Silversand Dragon")
nssm_register_egg2("tartacacia", "Tartacacia")
nssm_register_egg2("river_lord", "River Lord")
nssm_register_egg("icelizard", "Icelizard")
nssm_register_egg("kele", "Kele")
nssm_register_egg("crystal_slug", "Crystal Slug")
nssm_register_egg("berinhog", "Berinhog")
nssm_register_egg("black_scorpion", "Black Scorpion")
nssm_register_egg("pumpkid", "Pumpkid")
nssm_register_egg("salamander", "Salamander")
nssm_register_egg("flust", "Flust")
nssm_register_egg("pelagia", "Pelagia")