Start adding crafting recipes to everything with the new crafting system and fix some things with armor
This commit is contained in:
parent
d7b63ec912
commit
dc8674b93f
|
@ -1,2 +1,3 @@
|
||||||
default
|
default
|
||||||
|
crafting
|
||||||
achievements
|
achievements
|
||||||
|
|
|
@ -6,24 +6,44 @@
|
||||||
armor = {}
|
armor = {}
|
||||||
|
|
||||||
armor.player_skin = "character.png"
|
armor.player_skin = "character.png"
|
||||||
armor.update_time = 1
|
|
||||||
|
|
||||||
armor.materials = {
|
armor.materials = {
|
||||||
-- material craftitem % description
|
-- material craftitem % description
|
||||||
{"wood", "group:planks", 15, "Wooden"},
|
{"wood", "group:planks", 15, "Wooden"},
|
||||||
{"steel", "default:ingot_steel", 30, "Steel"},
|
{"steel", "default:ingot_steel", 30, "Steel"},
|
||||||
{"chainmail", "armor:chainmail_sheet", 45, "Chainmail"},
|
{"chainmail", "armor:chainmail_sheet", 45, "Chainmail"},
|
||||||
{"carbonsteel", "default:ingot_carbonsteel", 60, "Carbonsteel"},
|
{"carbonsteel", "default:ingot_carbonsteel", 60, "Carbonsteel"},
|
||||||
}
|
}
|
||||||
|
|
||||||
armor.slots = {"helmet", "chestplate", "boots"}
|
-- Usable slots
|
||||||
|
|
||||||
local form_armor = default.ui.get_page("default:2part")
|
armor.slots = {"helmet", "chestplate", "boots"}
|
||||||
default.ui.register_page("armor:armor", form_armor)
|
|
||||||
|
|
||||||
local enable_drop = minetest.setting_getbool("drop_items_on_die") or false
|
local enable_drop = minetest.setting_getbool("drop_items_on_die") or false
|
||||||
|
|
||||||
local armor_timer = 10
|
-- Timer
|
||||||
|
|
||||||
|
local timer_interval = 1
|
||||||
|
local timer = 10
|
||||||
|
|
||||||
|
-- Formspec
|
||||||
|
|
||||||
|
local form_armor = default.ui.get_page("default:2part")
|
||||||
|
|
||||||
|
form_armor = form_armor .. "list[current_player;main;0.25,4.75;8,4;]"
|
||||||
|
form_armor = form_armor .. default.ui.get_hotbar_itemslot_bg(0.25, 4.75, 8, 1)
|
||||||
|
form_armor = form_armor .. default.ui.get_itemslot_bg(0.25, 5.75, 8, 3)
|
||||||
|
form_armor = form_armor .. "listring[current_player;main]"
|
||||||
|
|
||||||
|
form_armor = form_armor .. "label[3.25,1;Helmet]"
|
||||||
|
form_armor = form_armor .. "label[3.25,2;Chestplate]"
|
||||||
|
form_armor = form_armor .. "label[3.25,3;Boots]"
|
||||||
|
|
||||||
|
form_armor = form_armor .. "list[current_player;armor;2.25,0.75;1,3;]"
|
||||||
|
form_armor = form_armor .. "listring[current_player;armor]"
|
||||||
|
form_armor = form_armor .. default.ui.get_itemslot_bg(2.25, 0.75, 1, 3)
|
||||||
|
|
||||||
|
default.ui.register_page("armor:armor", form_armor)
|
||||||
|
|
||||||
function armor.is_armor(itemname)
|
function armor.is_armor(itemname)
|
||||||
local item = minetest.registered_items[itemname]
|
local item = minetest.registered_items[itemname]
|
||||||
|
@ -57,9 +77,10 @@ function armor.get_texture(player, base)
|
||||||
|
|
||||||
local image = base
|
local image = base
|
||||||
|
|
||||||
for _, slot in ipairs(armor.slots) do
|
for slot_index, slot in ipairs(armor.slots) do
|
||||||
local itemstack = inv:get_stack("armor_"..slot, 1)
|
local itemstack = inv:get_stack("armor", slot_index)
|
||||||
local itemname = itemstack:get_name()
|
local itemname = itemstack:get_name()
|
||||||
|
|
||||||
if armor.is_armor(itemname) and armor.is_slot(itemname, slot) then
|
if armor.is_armor(itemname) and armor.is_slot(itemname, slot) then
|
||||||
local item = minetest.registered_items[itemname]
|
local item = minetest.registered_items[itemname]
|
||||||
local mat = armor.materials[item.groups.armor_material][1]
|
local mat = armor.materials[item.groups.armor_material][1]
|
||||||
|
@ -68,7 +89,7 @@ function armor.get_texture(player, base)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- print("[armor] Got armor texture: " .. image)
|
-- print("[armor] Got armor texture: " .. image)
|
||||||
|
|
||||||
return image
|
return image
|
||||||
end
|
end
|
||||||
|
@ -81,8 +102,8 @@ function armor.get_groups(player)
|
||||||
|
|
||||||
local inv = player:get_inventory()
|
local inv = player:get_inventory()
|
||||||
|
|
||||||
for _, slot in ipairs(armor.slots) do
|
for slot_index, slot in ipairs(armor.slots) do
|
||||||
local itemstack = inv:get_stack("armor_"..slot, 1)
|
local itemstack = inv:get_stack("armor", slot_index)
|
||||||
local itemname = itemstack:get_name()
|
local itemname = itemstack:get_name()
|
||||||
|
|
||||||
if armor.is_armor(itemname) then
|
if armor.is_armor(itemname) then
|
||||||
|
@ -96,9 +117,11 @@ function armor.get_groups(player)
|
||||||
if match_mat == nil then
|
if match_mat == nil then
|
||||||
match_mat = mat
|
match_mat = mat
|
||||||
end
|
end
|
||||||
|
|
||||||
if mat == match_mat then
|
if mat == match_mat then
|
||||||
match_amt = match_amt + 1
|
match_amt = match_amt + 1
|
||||||
end
|
end
|
||||||
|
|
||||||
break
|
break
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -106,7 +129,9 @@ function armor.get_groups(player)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if match_amt == #armor.slots then -- if full set of same armor material, then boost armor by 10%
|
-- If full set of same armor material, then boost armor by 10%
|
||||||
|
|
||||||
|
if match_amt == #armor.slots then
|
||||||
groups.fleshy = groups.fleshy - 10
|
groups.fleshy = groups.fleshy - 10
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -118,10 +143,8 @@ end
|
||||||
function armor.init(player)
|
function armor.init(player)
|
||||||
local inv = player:get_inventory()
|
local inv = player:get_inventory()
|
||||||
|
|
||||||
for _, slot in ipairs(armor.slots) do
|
if inv:get_size("armor") ~= 3 then
|
||||||
if inv:get_size("armor_"..slot) ~= 1 then
|
inv:set_size("armor", 3)
|
||||||
inv:set_size("armor_"..slot, 1)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -143,13 +166,13 @@ local function on_joinplayer(player)
|
||||||
armor.init(player)
|
armor.init(player)
|
||||||
end
|
end
|
||||||
|
|
||||||
local function on_die(player)
|
local function on_dieplayer(player)
|
||||||
local pos = player:getpos()
|
local pos = player:getpos()
|
||||||
|
|
||||||
local inv = player:get_inventory()
|
local inv = player:get_inventory()
|
||||||
|
|
||||||
for _, slot in ipairs(armor.slots) do
|
for slot_index, slot in ipairs(armor.slots) do
|
||||||
local item = inv:get_stack("armor_"..slot, 1)
|
local item = inv:get_stack("armor", slot_index)
|
||||||
|
|
||||||
local rpos = {
|
local rpos = {
|
||||||
x = pos.x + math.random(-0.2, 0.2),
|
x = pos.x + math.random(-0.2, 0.2),
|
||||||
|
@ -165,7 +188,7 @@ local function on_die(player)
|
||||||
x = math.random(-0.3, 0.3),
|
x = math.random(-0.3, 0.3),
|
||||||
y = 3,
|
y = 3,
|
||||||
z = math.random(-0.3, 0.3),
|
z = math.random(-0.3, 0.3),
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
|
|
||||||
item:clear()
|
item:clear()
|
||||||
|
@ -173,53 +196,73 @@ local function on_die(player)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local function step(dtime)
|
local function on_globalstep(dtime)
|
||||||
armor_timer = armor_timer + dtime
|
timer = timer + dtime
|
||||||
|
|
||||||
if armor_timer > armor.update_time then
|
if timer < timer_interval then
|
||||||
for _, player in pairs(minetest.get_connected_players()) do
|
return
|
||||||
armor.update(player)
|
end
|
||||||
end
|
|
||||||
armor_timer = 0
|
timer = 0
|
||||||
|
|
||||||
|
for _, player in pairs(minetest.get_connected_players()) do
|
||||||
|
armor.update(player)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if enable_drop then
|
||||||
|
minetest.register_on_dieplayer(on_dieplayer)
|
||||||
|
end
|
||||||
|
|
||||||
|
minetest.register_on_newplayer(on_newplayer)
|
||||||
|
minetest.register_on_joinplayer(on_joinplayer)
|
||||||
|
|
||||||
|
minetest.register_globalstep(on_globalstep)
|
||||||
|
|
||||||
|
-- Chainmail
|
||||||
|
|
||||||
minetest.register_craftitem(
|
minetest.register_craftitem(
|
||||||
"armor:chainmail_sheet",
|
"armor:chainmail_sheet",
|
||||||
{
|
{
|
||||||
description = "Chainmail sheet",
|
description = "Chainmail Sheet",
|
||||||
|
|
||||||
inventory_image = "armor_chainmail.png",
|
inventory_image = "armor_chainmail.png",
|
||||||
wield_image = "armor_chainmail.png",
|
wield_image = "armor_chainmail.png",
|
||||||
|
|
||||||
stack_max = 20,
|
stack_max = 20,
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_craft(
|
crafting.register_craft(
|
||||||
{
|
{
|
||||||
output = "armor:chainmail_sheet 3",
|
output = "armor:chainmail_sheet 3",
|
||||||
recipe = {
|
items = {
|
||||||
{"default:ingot_steel", "", "default:ingot_steel"},
|
"default:ingot_steel 5",
|
||||||
{"", "default:ingot_steel", ""},
|
|
||||||
{"default:ingot_steel", "", "default:ingot_steel"},
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
-- Armor pieces
|
||||||
|
|
||||||
for mat_index, _ in ipairs(armor.materials) do
|
for mat_index, _ in ipairs(armor.materials) do
|
||||||
local def = armor.materials[mat_index]
|
local def = armor.materials[mat_index]
|
||||||
local mat = def[1]
|
local mat = def[1]
|
||||||
|
|
||||||
local armor_def = math.floor(def[3] / #armor.slots)
|
local armor_def = math.floor(def[3] / #armor.slots)
|
||||||
-- print("Material " .. mat .. ": " .. armor_def)
|
-- print("Material " .. mat .. ": " .. armor_def)
|
||||||
|
|
||||||
for _, slot in ipairs(armor.slots) do
|
for _, slot in ipairs(armor.slots) do
|
||||||
minetest.register_craftitem(
|
local slot_pretty = slot:gsub(
|
||||||
"armor:"..slot.."_"..mat,
|
"(%a)([%w_']*)",
|
||||||
{
|
function(first, rest)
|
||||||
description = def[4].." "..slot,
|
return first:upper() .. rest:lower()
|
||||||
|
end)
|
||||||
|
|
||||||
inventory_image = "armor_"..slot.."_"..mat.."_inventory.png",
|
minetest.register_craftitem(
|
||||||
wield_image = "armor_"..slot.."_"..mat.."_inventory.png",
|
"armor:" .. slot .. "_" .. mat,
|
||||||
|
{
|
||||||
|
description = def[4] .. " " .. slot_pretty,
|
||||||
|
|
||||||
|
inventory_image = "armor_" .. slot .. "_" .. mat .. "_inventory.png",
|
||||||
|
wield_image = "armor_" .. slot .. "_" .. mat .. "_inventory.png",
|
||||||
|
|
||||||
groups = {
|
groups = {
|
||||||
is_armor = 1,
|
is_armor = 1,
|
||||||
|
@ -228,72 +271,34 @@ for mat_index, _ in ipairs(armor.materials) do
|
||||||
},
|
},
|
||||||
|
|
||||||
stack_max = 1,
|
stack_max = 1,
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
|
|
||||||
local n = def[2]
|
crafting.register_craft(
|
||||||
|
{
|
||||||
|
output = "armor:helmet_" .. mat,
|
||||||
|
items = {
|
||||||
|
def[2] .. " 5",
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
minetest.register_craft(
|
crafting.register_craft(
|
||||||
{
|
{
|
||||||
output = "armor:helmet_"..mat,
|
output = "armor:chestplate_" .. mat,
|
||||||
recipe = {
|
items = {
|
||||||
{n, n, n},
|
def[2] .. " 8",
|
||||||
{n, "", n},
|
|
||||||
{"", "", ""},
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
minetest.register_craft(
|
|
||||||
|
crafting.register_craft(
|
||||||
{
|
{
|
||||||
output = "armor:chestplate_"..mat,
|
output = "armor:boots_" .. mat,
|
||||||
recipe = {
|
items = {
|
||||||
{n, "", n},
|
def[2] .. " 6",
|
||||||
{n, n, n},
|
|
||||||
{n, n, n},
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
minetest.register_craft(
|
|
||||||
{
|
|
||||||
output = "armor:boots_"..mat,
|
|
||||||
recipe = {
|
|
||||||
{"", "", ""},
|
|
||||||
{n, "", n},
|
|
||||||
{n, "", n},
|
|
||||||
}
|
|
||||||
})
|
|
||||||
end
|
end
|
||||||
|
|
||||||
minetest.register_on_newplayer(on_newplayer)
|
|
||||||
minetest.register_on_joinplayer(on_joinplayer)
|
|
||||||
|
|
||||||
if enable_drop then
|
|
||||||
minetest.register_on_dieplayer(on_die)
|
|
||||||
end
|
|
||||||
|
|
||||||
minetest.register_globalstep(step)
|
|
||||||
|
|
||||||
local form_armor = default.ui.get_page("default:2part")
|
|
||||||
form_armor = form_armor .. "list[current_player;main;0.25,4.75;8,4;]"
|
|
||||||
form_armor = form_armor .. default.ui.get_hotbar_itemslot_bg(0.25, 4.75, 8, 1)
|
|
||||||
form_armor = form_armor .. default.ui.get_itemslot_bg(0.25, 5.75, 8, 3)
|
|
||||||
form_armor = form_armor .. "listring[current_player;main]"
|
|
||||||
|
|
||||||
form_armor = form_armor .. "label[3.25,3;Boots]"
|
|
||||||
form_armor = form_armor .. "list[current_player;armor_boots;2.25,2.75;1,1;]"
|
|
||||||
form_armor = form_armor .. "listring[current_player;armor_boots]"
|
|
||||||
form_armor = form_armor .. default.ui.get_itemslot_bg(2.25, 2.75, 1, 1)
|
|
||||||
|
|
||||||
form_armor = form_armor .. "label[3.25,2;Chestplate]"
|
|
||||||
form_armor = form_armor .. "list[current_player;armor_chestplate;2.25,1.75;1,1;]"
|
|
||||||
form_armor = form_armor .. "listring[current_player;armor_chestplate]"
|
|
||||||
form_armor = form_armor .. default.ui.get_itemslot_bg(2.25, 1.75, 1, 1)
|
|
||||||
|
|
||||||
form_armor = form_armor .. "label[3.25,1;Helmet]"
|
|
||||||
form_armor = form_armor .. "list[current_player;armor_helmet;2.25,0.75;1,1;]"
|
|
||||||
form_armor = form_armor .. "listring[current_player;armor_helmet]"
|
|
||||||
form_armor = form_armor .. default.ui.get_itemslot_bg(2.25, 0.75, 1, 1)
|
|
||||||
|
|
||||||
default.ui.register_page("armor:armor", form_armor)
|
|
||||||
|
|
||||||
-- Achievements
|
-- Achievements
|
||||||
|
|
||||||
achievements.register_achievement(
|
achievements.register_achievement(
|
||||||
|
@ -303,15 +308,15 @@ achievements.register_achievement(
|
||||||
description = "Craft a piece of armor",
|
description = "Craft a piece of armor",
|
||||||
times = 1,
|
times = 1,
|
||||||
craftitem = "group:is_armor",
|
craftitem = "group:is_armor",
|
||||||
})
|
})
|
||||||
|
|
||||||
achievements.register_achievement(
|
achievements.register_achievement(
|
||||||
"warrior",
|
"warrior",
|
||||||
{
|
{
|
||||||
title = "Warrior",
|
title = "Warrior",
|
||||||
description = "Craft 10 piece of armor",
|
description = "Craft 10 pieces of armor",
|
||||||
times = 10,
|
times = 10,
|
||||||
craftitem = "group:is_armor",
|
craftitem = "group:is_armor",
|
||||||
})
|
})
|
||||||
|
|
||||||
default.log("mod:armor", "loaded")
|
default.log("mod:armor", "loaded")
|
||||||
|
|
|
@ -189,8 +189,8 @@ crafting.register_craft(
|
||||||
{
|
{
|
||||||
output = "default:dust_carbonsteel",
|
output = "default:dust_carbonsteel",
|
||||||
items = {
|
items = {
|
||||||
"default:lump_coal",
|
"default:lump_coal 2",
|
||||||
"default:lump_iron 2",
|
"default:lump_iron 3",
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -1,2 +1,3 @@
|
||||||
default
|
default
|
||||||
|
crafting
|
||||||
achievements
|
achievements
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
door = {}
|
door = {}
|
||||||
|
|
||||||
-- Registers a door
|
-- Registers a door
|
||||||
|
|
||||||
function door.register_door(name, def)
|
function door.register_door(name, def)
|
||||||
def.groups.not_in_creative_inventory = 1
|
def.groups.not_in_creative_inventory = 1
|
||||||
|
|
||||||
|
@ -30,8 +31,8 @@ function door.register_door(name, def)
|
||||||
if not def.sound_open_door then
|
if not def.sound_open_door then
|
||||||
def.sound_open_door = "door_open"
|
def.sound_open_door = "door_open"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
minetest.register_craftitem(
|
minetest.register_craftitem(
|
||||||
name, {
|
name, {
|
||||||
description = def.description,
|
description = def.description,
|
||||||
|
@ -40,58 +41,59 @@ function door.register_door(name, def)
|
||||||
groups = def.groups,
|
groups = def.groups,
|
||||||
|
|
||||||
on_place = function(itemstack, placer, pointed_thing)
|
on_place = function(itemstack, placer, pointed_thing)
|
||||||
if not pointed_thing.type == "node" then
|
if not pointed_thing.type == "node" then
|
||||||
return itemstack
|
return itemstack
|
||||||
end
|
end
|
||||||
|
|
||||||
local ptu = pointed_thing.under
|
local ptu = pointed_thing.under
|
||||||
local nu = minetest.get_node(ptu)
|
local nu = minetest.get_node(ptu)
|
||||||
if minetest.registered_nodes[nu.name].on_rightclick then
|
if minetest.registered_nodes[nu.name].on_rightclick then
|
||||||
return minetest.registered_nodes[nu.name].on_rightclick(ptu, nu, placer, itemstack)
|
return minetest.registered_nodes[nu.name].on_rightclick(
|
||||||
end
|
ptu, nu, placer, itemstack)
|
||||||
|
end
|
||||||
|
|
||||||
local pt = pointed_thing.above
|
local pt = pointed_thing.above
|
||||||
local pt2 = {x=pt.x, y=pt.y, z=pt.z}
|
local pt2 = {x=pt.x, y=pt.y, z=pt.z}
|
||||||
pt2.y = pt2.y+1
|
pt2.y = pt2.y+1
|
||||||
if
|
if
|
||||||
not minetest.registered_nodes[minetest.get_node(pt).name].buildable_to or
|
not minetest.registered_nodes[minetest.get_node(pt).name].buildable_to or
|
||||||
not minetest.registered_nodes[minetest.get_node(pt2).name].buildable_to or
|
not minetest.registered_nodes[minetest.get_node(pt2).name].buildable_to or
|
||||||
not placer or
|
not placer or
|
||||||
not placer:is_player()
|
not placer:is_player()
|
||||||
then
|
then
|
||||||
return itemstack
|
return itemstack
|
||||||
end
|
end
|
||||||
|
|
||||||
local p2 = minetest.dir_to_facedir(placer:get_look_dir())
|
local p2 = minetest.dir_to_facedir(placer:get_look_dir())
|
||||||
local pt3 = {x=pt.x, y=pt.y, z=pt.z}
|
local pt3 = {x=pt.x, y=pt.y, z=pt.z}
|
||||||
if p2 == 0 then
|
if p2 == 0 then
|
||||||
pt3.x = pt3.x-1
|
pt3.x = pt3.x-1
|
||||||
elseif p2 == 1 then
|
elseif p2 == 1 then
|
||||||
pt3.z = pt3.z+1
|
pt3.z = pt3.z+1
|
||||||
elseif p2 == 2 then
|
elseif p2 == 2 then
|
||||||
pt3.x = pt3.x+1
|
pt3.x = pt3.x+1
|
||||||
elseif p2 == 3 then
|
elseif p2 == 3 then
|
||||||
pt3.z = pt3.z-1
|
pt3.z = pt3.z-1
|
||||||
end
|
end
|
||||||
if minetest.get_item_group(minetest.get_node(pt3).name, "door") == 0 then
|
if minetest.get_item_group(minetest.get_node(pt3).name, "door") == 0 then
|
||||||
minetest.set_node(pt, {name=name.."_b_1", param2=p2})
|
minetest.set_node(pt, {name=name.."_b_1", param2=p2})
|
||||||
minetest.set_node(pt2, {name=name.."_t_1", param2=p2})
|
minetest.set_node(pt2, {name=name.."_t_1", param2=p2})
|
||||||
else
|
else
|
||||||
minetest.set_node(pt, {name=name.."_b_2", param2=p2})
|
minetest.set_node(pt, {name=name.."_b_2", param2=p2})
|
||||||
minetest.set_node(pt2, {name=name.."_t_2", param2=p2})
|
minetest.set_node(pt2, {name=name.."_t_2", param2=p2})
|
||||||
minetest.get_meta(pt):set_int("right", 1)
|
minetest.get_meta(pt):set_int("right", 1)
|
||||||
minetest.get_meta(pt2):set_int("right", 1)
|
minetest.get_meta(pt2):set_int("right", 1)
|
||||||
end
|
end
|
||||||
|
|
||||||
itemstack:take_item()
|
itemstack:take_item()
|
||||||
|
|
||||||
return itemstack
|
return itemstack
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
|
|
||||||
local tt = def.tiles_top
|
local tt = def.tiles_top
|
||||||
local tb = def.tiles_bottom
|
local tb = def.tiles_bottom
|
||||||
|
|
||||||
local function after_dig_node(pos, name, digger)
|
local function after_dig_node(pos, name, digger)
|
||||||
local node = minetest.get_node(pos)
|
local node = minetest.get_node(pos)
|
||||||
if node.name == name then
|
if node.name == name then
|
||||||
|
@ -106,23 +108,35 @@ function door.register_door(name, def)
|
||||||
end
|
end
|
||||||
local p2 = minetest.get_node(pos).param2
|
local p2 = minetest.get_node(pos).param2
|
||||||
p2 = params[p2+1]
|
p2 = params[p2+1]
|
||||||
|
|
||||||
minetest.swap_node(pos, {name=replace_dir, param2=p2})
|
minetest.swap_node(pos, {name=replace_dir, param2=p2})
|
||||||
|
|
||||||
pos.y = pos.y-dir
|
pos.y = pos.y-dir
|
||||||
minetest.swap_node(pos, {name=replace, param2=p2})
|
minetest.swap_node(pos, {name=replace, param2=p2})
|
||||||
|
|
||||||
local snd_1 = def.sound_close_door
|
local snd_1 = def.sound_close_door
|
||||||
local snd_2 = def.sound_open_door
|
local snd_2 = def.sound_open_door
|
||||||
if params[1] == 3 then
|
if params[1] == 3 then
|
||||||
snd_1 = def.sound_open_door
|
snd_1 = def.sound_open_door
|
||||||
snd_2 = def.sound_close_door
|
snd_2 = def.sound_close_door
|
||||||
end
|
end
|
||||||
|
|
||||||
if minetest.get_meta(pos):get_int("right") ~= 0 then
|
if minetest.get_meta(pos):get_int("right") ~= 0 then
|
||||||
minetest.sound_play(snd_1, {pos = pos, gain = 0.8, max_hear_distance = 10})
|
minetest.sound_play(
|
||||||
|
snd_1,
|
||||||
|
{
|
||||||
|
pos = pos,
|
||||||
|
gain = 0.8,
|
||||||
|
max_hear_distance = 10
|
||||||
|
})
|
||||||
else
|
else
|
||||||
minetest.sound_play(snd_2, {pos = pos, gain = 0.8, max_hear_distance = 10})
|
minetest.sound_play(
|
||||||
|
snd_2,
|
||||||
|
{
|
||||||
|
pos = pos,
|
||||||
|
gain = 0.8,
|
||||||
|
max_hear_distance = 10
|
||||||
|
})
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -151,22 +165,22 @@ function door.register_door(name, def)
|
||||||
fixed = def.selection_box_bottom
|
fixed = def.selection_box_bottom
|
||||||
},
|
},
|
||||||
groups = def.groups,
|
groups = def.groups,
|
||||||
|
|
||||||
after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
||||||
pos.y = pos.y+1
|
pos.y = pos.y+1
|
||||||
after_dig_node(pos, name.."_t_1", digger)
|
after_dig_node(pos, name.."_t_1", digger)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
on_rightclick = function(pos, node, clicker)
|
on_rightclick = function(pos, node, clicker)
|
||||||
if check_player_priv(pos, clicker) then
|
if check_player_priv(pos, clicker) then
|
||||||
on_rightclick(pos, 1, name.."_t_1", name.."_b_2", name.."_t_2", {1,2,3,0})
|
on_rightclick(pos, 1, name.."_t_1", name.."_b_2", name.."_t_2", {1,2,3,0})
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
|
||||||
can_dig = check_player_priv,
|
can_dig = check_player_priv,
|
||||||
sounds = def.sounds,
|
sounds = def.sounds,
|
||||||
sunlight_propagates = def.sunlight
|
sunlight_propagates = def.sunlight
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_node(
|
minetest.register_node(
|
||||||
name.."_t_1",
|
name.."_t_1",
|
||||||
|
@ -185,22 +199,22 @@ function door.register_door(name, def)
|
||||||
fixed = def.selection_box_top
|
fixed = def.selection_box_top
|
||||||
},
|
},
|
||||||
groups = def.groups,
|
groups = def.groups,
|
||||||
|
|
||||||
after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
||||||
pos.y = pos.y-1
|
pos.y = pos.y-1
|
||||||
after_dig_node(pos, name.."_b_1", digger)
|
after_dig_node(pos, name.."_b_1", digger)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
on_rightclick = function(pos, node, clicker)
|
on_rightclick = function(pos, node, clicker)
|
||||||
if check_player_priv(pos, clicker) then
|
if check_player_priv(pos, clicker) then
|
||||||
on_rightclick(pos, -1, name.."_b_1", name.."_t_2", name.."_b_2", {1,2,3,0})
|
on_rightclick(pos, -1, name.."_b_1", name.."_t_2", name.."_b_2", {1,2,3,0})
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
|
||||||
can_dig = check_player_priv,
|
can_dig = check_player_priv,
|
||||||
sounds = def.sounds,
|
sounds = def.sounds,
|
||||||
sunlight_propagates = def.sunlight,
|
sunlight_propagates = def.sunlight,
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_node(
|
minetest.register_node(
|
||||||
name.."_b_2",
|
name.."_b_2",
|
||||||
|
@ -219,22 +233,22 @@ function door.register_door(name, def)
|
||||||
fixed = def.selection_box_bottom
|
fixed = def.selection_box_bottom
|
||||||
},
|
},
|
||||||
groups = def.groups,
|
groups = def.groups,
|
||||||
|
|
||||||
after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
||||||
pos.y = pos.y+1
|
pos.y = pos.y+1
|
||||||
after_dig_node(pos, name.."_t_2", digger)
|
after_dig_node(pos, name.."_t_2", digger)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
on_rightclick = function(pos, node, clicker)
|
on_rightclick = function(pos, node, clicker)
|
||||||
if check_player_priv(pos, clicker) then
|
if check_player_priv(pos, clicker) then
|
||||||
on_rightclick(pos, 1, name.."_t_2", name.."_b_1", name.."_t_1", {3,0,1,2})
|
on_rightclick(pos, 1, name.."_t_2", name.."_b_1", name.."_t_1", {3,0,1,2})
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
|
||||||
can_dig = check_player_priv,
|
can_dig = check_player_priv,
|
||||||
sounds = def.sounds,
|
sounds = def.sounds,
|
||||||
sunlight_propagates = def.sunlight
|
sunlight_propagates = def.sunlight
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_node(
|
minetest.register_node(
|
||||||
name.."_t_2",
|
name.."_t_2",
|
||||||
|
@ -253,22 +267,22 @@ function door.register_door(name, def)
|
||||||
fixed = def.selection_box_top
|
fixed = def.selection_box_top
|
||||||
},
|
},
|
||||||
groups = def.groups,
|
groups = def.groups,
|
||||||
|
|
||||||
after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
||||||
pos.y = pos.y-1
|
pos.y = pos.y-1
|
||||||
after_dig_node(pos, name.."_b_2", digger)
|
after_dig_node(pos, name.."_b_2", digger)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
on_rightclick = function(pos, node, clicker)
|
on_rightclick = function(pos, node, clicker)
|
||||||
if check_player_priv(pos, clicker) then
|
if check_player_priv(pos, clicker) then
|
||||||
on_rightclick(pos, -1, name.."_b_2", name.."_t_1", name.."_b_1", {3,0,1,2})
|
on_rightclick(pos, -1, name.."_b_2", name.."_t_1", name.."_b_1", {3,0,1,2})
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
|
||||||
can_dig = check_player_priv,
|
can_dig = check_player_priv,
|
||||||
sounds = def.sounds,
|
sounds = def.sounds,
|
||||||
sunlight_propagates = def.sunlight
|
sunlight_propagates = def.sunlight
|
||||||
})
|
})
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -282,17 +296,17 @@ door.register_door(
|
||||||
tiles_bottom = {"door_wood_b.png", "door_brown.png"},
|
tiles_bottom = {"door_wood_b.png", "door_brown.png"},
|
||||||
sounds = default.node_sound_wood_defaults(),
|
sounds = default.node_sound_wood_defaults(),
|
||||||
sunlight = false,
|
sunlight = false,
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_craft(
|
crafting.register_craft(
|
||||||
{
|
{
|
||||||
output = "door:door_wood",
|
output = "door:door_wood",
|
||||||
recipe = {
|
items = {
|
||||||
{"default:fiber", "default:glass", "default:fiber"},
|
"default:fiber 6",
|
||||||
{"default:stick", "default:stick", "default:stick"},
|
"default:stick 7",
|
||||||
{"default:fiber", "group:planks", "default:fiber"},
|
"group:planks 2",
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
door.register_door(
|
door.register_door(
|
||||||
"door:door_stone",
|
"door:door_stone",
|
||||||
|
@ -304,17 +318,17 @@ door.register_door(
|
||||||
tiles_bottom = {"door_stone_b.png", "door_brown.png"},
|
tiles_bottom = {"door_stone_b.png", "door_brown.png"},
|
||||||
sounds = default.node_sound_stone_defaults(),
|
sounds = default.node_sound_stone_defaults(),
|
||||||
sunlight = false,
|
sunlight = false,
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_craft(
|
crafting.register_craft(
|
||||||
{
|
{
|
||||||
output = "door:door_stone",
|
output = "door:door_stone",
|
||||||
recipe = {
|
items = {
|
||||||
{"default:fiber", "default:glass", "default:fiber"},
|
"default:fiber 6",
|
||||||
{"default:stick", "default:stick", "default:stick"},
|
"default:stick 7",
|
||||||
{"default:fiber", "group:stone", "default:fiber"},
|
"group:stone 2",
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
-- Achievements
|
-- Achievements
|
||||||
|
|
||||||
|
@ -325,6 +339,6 @@ achievements.register_achievement(
|
||||||
description = "Craft a door",
|
description = "Craft a door",
|
||||||
times = 1,
|
times = 1,
|
||||||
craftitem = "group:door",
|
craftitem = "group:door",
|
||||||
})
|
})
|
||||||
|
|
||||||
default.log("mod:door", "loaded")
|
default.log("mod:door", "loaded")
|
||||||
|
|
|
@ -1,23 +1,30 @@
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Crafts and items
|
||||||
|
--
|
||||||
|
|
||||||
|
-- Items
|
||||||
|
|
||||||
minetest.register_craftitem(
|
minetest.register_craftitem(
|
||||||
"farming:cotton",
|
"farming:cotton",
|
||||||
{
|
{
|
||||||
description = "Cotton",
|
description = "Cotton",
|
||||||
inventory_image = "farming_cotton.png"
|
inventory_image = "farming_cotton.png"
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_craftitem(
|
minetest.register_craftitem(
|
||||||
"farming:wheat",
|
"farming:wheat",
|
||||||
{
|
{
|
||||||
description = "Wheat",
|
description = "Wheat",
|
||||||
inventory_image = "farming_wheat.png"
|
inventory_image = "farming_wheat.png"
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_craftitem(
|
minetest.register_craftitem(
|
||||||
"farming:flour",
|
"farming:flour",
|
||||||
{
|
{
|
||||||
description = "Flour",
|
description = "Flour",
|
||||||
inventory_image = "farming_flour.png"
|
inventory_image = "farming_flour.png"
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_craftitem(
|
minetest.register_craftitem(
|
||||||
"farming:bread",
|
"farming:bread",
|
||||||
|
@ -25,25 +32,27 @@ minetest.register_craftitem(
|
||||||
description = "Bread",
|
description = "Bread",
|
||||||
inventory_image = "farming_bread.png",
|
inventory_image = "farming_bread.png",
|
||||||
on_use = minetest.item_eat({hp = 4, sat = 40})
|
on_use = minetest.item_eat({hp = 4, sat = 40})
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_craft(
|
-- Craft recipes
|
||||||
|
|
||||||
|
crafting.register_craft(
|
||||||
{
|
{
|
||||||
output = "farming:flour",
|
output = "farming:flour",
|
||||||
recipe = {
|
items = {
|
||||||
{"farming:wheat", "farming:wheat"},
|
"farming:wheat 4",
|
||||||
{"farming:wheat", "farming:wheat"},
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_craft(
|
crafting.register_craft(
|
||||||
{
|
{
|
||||||
output = "farming:cotton_bale 2",
|
output = "farming:cotton_bale 2",
|
||||||
recipe = {
|
items = {
|
||||||
{"farming:cotton", "farming:cotton"},
|
"farming:cotton 2",
|
||||||
{"farming:cotton", "farming:cotton"},
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
-- Cooking
|
||||||
|
|
||||||
minetest.register_craft(
|
minetest.register_craft(
|
||||||
{
|
{
|
||||||
|
@ -51,6 +60,6 @@ minetest.register_craft(
|
||||||
output = "farming:bread",
|
output = "farming:bread",
|
||||||
recipe = "farming:flour",
|
recipe = "farming:flour",
|
||||||
cooktime = 15,
|
cooktime = 15,
|
||||||
})
|
})
|
||||||
|
|
||||||
default.log("craft", "loaded")
|
default.log("craft", "loaded")
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
default
|
default
|
||||||
weather
|
weather
|
||||||
|
crafting
|
||||||
achievements
|
achievements
|
||||||
|
|
Loading…
Reference in New Issue