Merge branch 'master' of https://git.tchncs.de/Illuna-Minetest/steel into HEAD
|
@ -1,6 +0,0 @@
|
||||||
default
|
|
||||||
darkage?
|
|
||||||
streets?
|
|
||||||
homedecor?
|
|
||||||
protector?
|
|
||||||
node_ownership?
|
|
322
steel/init.lua
|
@ -1,322 +0,0 @@
|
||||||
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 4',
|
|
||||||
recipe = {
|
|
||||||
{'darkage:iron_stick', 'default:steel_ingot', 'darkage:iron_stick'},
|
|
||||||
{'darkage:iron_stick', 'default:steel_ingot', 'darkage:iron_stick'},
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
|
|
||||||
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'},
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Before Width: | Height: | Size: 164 KiB |
|
@ -1,15 +0,0 @@
|
||||||
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")
|
|
Before Width: | Height: | Size: 398 B |
Before Width: | Height: | Size: 761 B |
Before Width: | Height: | Size: 696 B |
Before Width: | Height: | Size: 509 B |
Before Width: | Height: | Size: 785 B |
Before Width: | Height: | Size: 3.3 KiB |
Before Width: | Height: | Size: 3.0 KiB |
Before Width: | Height: | Size: 374 B |
Before Width: | Height: | Size: 911 B |
Before Width: | Height: | Size: 745 B |