Skip to content
Snippets Groups Projects
Commit f360f9ed authored by Milan's avatar Milan
Browse files

hello gitlab

parents
No related branches found
No related tags found
No related merge requests found
Pipeline #
default
streets?
homedecor?
protector?
node_ownership?
init.lua 0 → 100644
dofile(minetest.get_modpath("steel").."/rust.lua")
if minetest.setting_getbool("creative_mode") and not minetest.get_modpath("unified_inventory") then
steel_expect_infinite_stacks = true
else
steel_expect_infinite_stacks = false
end
function steel_node_is_owned(pos, placer)
local ownername = false
if type(IsPlayerNodeOwner) == "function" then -- node_ownership mod
if HasOwner(pos, placer) then -- returns true if the node is owned
if not IsPlayerNodeOwner(pos, placer:get_player_name()) then
if type(getLastOwner) == "function" then -- ...is an old version
ownername = getLastOwner(pos)
elseif type(GetNodeOwnerName) == "function" then -- ...is a recent version
ownername = GetNodeOwnerName(pos)
else
ownername = "someone"
end
end
end
elseif type(isprotect)=="function" then -- glomie's protection mod
if not isprotect(5, pos, placer) then
ownername = "someone"
end
elseif type(protector)=="table" and type(protector.can_dig)=="function" then -- Zeg9's protection mod
if not protector.can_dig(5, pos, placer) then
ownername = "someone"
end
end
if ownername ~= false then
minetest.chat_send_player( placer:get_player_name(), ("Sorry, %s owns that spot."):format(ownername) )
return true
else
return false
end
end
function steel_rotate_and_place(itemstack, placer, pointed_thing)
local node = minetest.get_node(pointed_thing.under)
if not minetest.registered_nodes[node.name] or not minetest.registered_nodes[node.name].on_rightclick then
if steel_node_is_owned(pointed_thing.above, placer) then
return itemstack
end
local above = pointed_thing.above
local under = pointed_thing.under
local pitch = placer:get_look_pitch()
local node = minetest.get_node(above)
local fdir = minetest.dir_to_facedir(placer:get_look_dir())
local wield_name = itemstack:get_name()
if node.name ~= "air" then return end
local iswall = (above.x ~= under.x) or (above.z ~= under.z)
local isceiling = (above.x == under.x) and (above.z == under.z) and (pitch > 0)
if iswall then
local dirs = { 2, 3, 0, 1 }
minetest.add_node(above, {name = wield_name.."_wall", param2 = dirs[fdir+1] }) -- place wall variant
elseif isceiling then
minetest.add_node(above, {name = wield_name.."_wall", param2 = 19 }) -- place wall variant on ceiling
else
minetest.add_node(above, {name = wield_name }) -- place regular variant
end
if not steel_expect_infinite_stacks then
itemstack:take_item()
return itemstack
end
else
minetest.registered_nodes[node.name].on_rightclick(pointed_thing.under, node, placer, itemstack)
end
end
minetest.register_node("steel:plate_soft", {
description = "Soft steel plate",
tiles = {"steelplatesoft.png"},
is_ground_content = true,
groups = {cracky=2},
sounds = default.node_sound_stone_defaults(),
})
minetest.register_node("steel:plate_hard", {
description = "Hardened steel plate",
tiles = {"steelplatehard.png"},
is_ground_content = true,
groups = {cracky=1},
sounds = default.node_sound_stone_defaults(),
})
minetest.register_node("steel:plate_rusted", {
description = "Rusted steel plate",
tiles = {"steel_rusted.png"},
is_ground_content = true,
groups = {cracky=1,choppy=1},
sounds = default.node_sound_stone_defaults(),
})
if minetest.registered_nodes["streets:steel_support"] then
minetest.register_alias("steel:strut","streets:steel_support")
else
minetest.register_node("steel:strut", {
drawtype = "glasslike",
description = "Strut",
tiles = {"strut.png"},
is_ground_content = true,
paramtype= "light",
groups = {choppy=1,cracky=1},
sounds = default.node_sound_stone_defaults(),
})
minetest.register_alias("streets:steel_support","steel:strut")
end
minetest.register_node("steel:grate_soft", {
description = "Soft Steel Grate",
drawtype = "fencelike",
tiles = {"worldgratesoft.png"},
inventory_image = "gratesoft.png",
wield_image = "gratesoft.png",
paramtype = "light",
is_ground_content = true,
selection_box = {
type = "fixed",
fixed = {-1/7, -1/2, -1/7, 1/7, 1/2, 1/7},
},
groups = {cracky=2,choppy=2},
sounds = default.node_sound_wood_defaults(),
})
minetest.register_node("steel:grate_hard", {
description = "Hardened Steel Grate",
drawtype = "fencelike",
tiles = {"worldgratehard.png"},
inventory_image = "gratehard.png",
wield_image = "gratehard.png",
paramtype = "light",
is_ground_content = true,
selection_box = {
type = "fixed",
fixed = {-1/7, -1/2, -1/7, 1/7, 1/2, 1/7},
},
groups = {cracky=1,choppy=1},
sounds = default.node_sound_wood_defaults(),
})
minetest.register_node("steel:roofing", {
description = "Corrugated steel roofing",
drawtype = "raillike",
tiles = {"corrugated_steel.png"},
inventory_image = "corrugated_steel.png",
wield_image = "corrugated_steel.png",
paramtype = "light",
is_ground_content = true,
walkable = true,
selection_box = {
type = "fixed",
-- but how to specify the dimensions for curved and sideways rails?
fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2},
},
groups = {bendy=2,snappy=1,dig_immediate=2},
on_place = function(itemstack, placer, pointed_thing)
steel_rotate_and_place(itemstack, placer, pointed_thing)
return itemstack
end
})
minetest.register_node("steel:roofing_wall", {
description = "Corrugated steel wall",
drawtype = "nodebox",
tiles = {"corrugated_steel.png"},
inventory_image = "corrugated_steel.png",
wield_image = "corrugated_steel.png",
paramtype = "light",
paramtype2 = "facedir",
is_ground_content = true,
walkable = true,
groups = {bendy=2,snappy=1,dig_immediate=2, not_in_creative_inventory=1},
drop = "steel:roofing",
on_place = function(itemstack, placer, pointed_thing)
steel_rotate_and_place(itemstack, placer, pointed_thing)
return itemstack
end,
node_box = {
type = "fixed",
fixed = { -0.5, -0.5, -0.48, 0.5, 0.5, -0.48 }
},
selection_box = {
type = "fixed",
fixed = { -0.5, -0.5, -0.5, 0.5, 0.5, -0.4 }
},
})
if homedecor_register_slope and homedecor_register_roof then
homedecor_register_slope("steel", "roofing",
"steel:roofing",
{bendy=2,snappy=1,dig_immediate=2},
{"corrugated_steel.png"},
"Corrugated steel roofing"
)
homedecor_register_roof("steel", "roofing",
{bendy=2,snappy=1,dig_immediate=2},
{"corrugated_steel.png"},
"Corrugated steel roofing"
)
end
--steel scrap are only used to recover ingots
minetest.register_craftitem("steel:scrap", {
description = "Steel scraps",
inventory_image = "scrap.png",
})
--recipes
minetest.register_craft({
output = 'steel:plate_soft 2',
recipe = {
{'default:steelblock', 'default:steelblock'},
{'default:steelblock', 'default:steelblock'},
}
})
minetest.register_craft({
type = "cooking",
output = "steel:plate_hard",
recipe = "steel:plate_soft",
})
minetest.register_craft({
output = 'steel:grate_soft 3',
recipe = {
{'default:steel_ingot', '', 'default:steel_ingot'},
{'default:steel_ingot', '', 'default:steel_ingot'},
}
})
minetest.register_craft({
type = "cooking",
output = "steel:grate_hard",
recipe = "steel:grate_soft",
})
-- only register this craft if streets is not loaded
if not minetest.registered_nodes["streets:steel_support"] then
minetest.register_craft({
output = 'steel:strut 5',
recipe = {
{'default:steel_ingot', '', 'default:steel_ingot'},
{'', 'default:steel_ingot', ''},
{'default:steel_ingot', '', 'default:steel_ingot'},
}
})
end
minetest.register_craft({
output = 'steel:roofing 6',
recipe = {
{'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'},
}
})
--remelting recipes
minetest.register_craft({
output = 'steel:scrap 2',
recipe = {
{'steel:strut'},
}
})
minetest.register_craft({
output = 'steel:scrap 2',
recipe = {
{'steel:grate_soft'},
}
})
minetest.register_craft({
output = 'steel:scrap 2',
recipe = {
{'steel:grate_hard'},
}
})
minetest.register_craft({
output = 'steel:scrap',
recipe = {
{'steel:roofing'},
}
})
minetest.register_craft({
output = 'steel:scrap 4',
recipe = {
{'steel:plate_soft'},
}
})
minetest.register_craft({
output = 'steel:scrap 4',
recipe = {
{'steel:plate_hard'},
}
})
minetest.register_craft({
output = 'default:iron_lump',
recipe = {
{'steel:scrap', 'steel:scrap'},
}
})
recipes.png

164 KiB

rust.lua 0 → 100644
local function moss(input, output)
minetest.register_abm({
nodenames = {input},
neighbors = {"group:water"},
interval = 50,
chance = 20,
action = function(pos)
if not minetest.find_node_near(pos, 3, output) then
minetest.add_node(pos, {name=output})
end
end,
})
end
moss("steel:plate_soft", "steel:plate_rusted")
textures/corrugated_steel.png

398 B

textures/gratehard.png

761 B

textures/gratesoft.png

696 B

textures/scrap.png

509 B

textures/steel_rusted.png

785 B

textures/steelplatehard.png

3.32 KiB

textures/steelplatesoft.png

3.04 KiB

textures/strut.png

374 B

textures/worldgratehard.png

911 B

textures/worldgratesoft.png

745 B

0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment