Added first example of mod crafter

master
bas080 2013-04-10 04:40:51 +02:00
parent 7dc9817ba6
commit 1016cfa7fb
5 changed files with 61 additions and 60 deletions

View File

@ -16,19 +16,19 @@ civilization.register_age_node({
civilization.register_age_node({
name = "Stone",
tiles = "default_cobble.png",
nodes = {"default:stone", "default:cobble"}
nodes = {"default:stone", "default:cobble", "default:desert_stone"}
})
civilization.register_age_node({
name = "Bronze",
tiles = "default_bronze_block.png",
nodes = {"default:bronze_ingot", "default:bronzeblock"}
nodes = {"default:stone_with_copper", "default:bronze_ingot", "default:bronzeblock"}
})
civilization.register_age_node({
name = "Iron",
tiles = "default_steel_block.png",
nodes = {"default:steel_ingot", "default:iron_lump", "default:steelblock"}
nodes = {"default:stone_with_iron", "default:steel_ingot", "default:iron_lump", "default:steelblock"}
})
civilization.register_age_node({
@ -36,6 +36,16 @@ civilization.register_age_node({
tiles = "default_mese_block.png",
nodes = {"default:mese", "default:mese_crystal", "default:mese_crystal_fragment"}
})
civilization.register_mod_node({
name = "Stair Crafter",
mod = "stairs",
recipe = {
{'', '', ''},
{'', '', ''}},
tiles = "default_wood.png^stairs_crafter.png",
})
--define smaller inventory abd 1x2 crafting grid
civilization.set_formspec = function(player)
player:set_inventory_formspec(

View File

@ -10,7 +10,7 @@ BY: bas080
DESCRIPTION: Civilization minetest mod aims for collaborative gameplay
VERSION: 0.5
LICENCE: WTFPL
FORUM: http://forum.minetest.net/viewtopic.php?id=4542
FORUM: http://forum.minetest.net/viewtopic.php?id=5467
Changelog
---------
@ -25,6 +25,11 @@ Changelog
* Carfting age nodes that only allow crafts of certain types of nodes belonging to that age
* Includes a function which easily allows to add new ages
0.2
* Only dirt and leaves can be dug by hand
* Factory Formspec 2.0
* Give new player one tree node
0.1
* Removes craft grid from inventory
* Reduces inventory size to 9 slots

View File

@ -2,12 +2,12 @@ civilization.register_age_node = function(def)
local node_name = "civilization:"..def.name
--craft
minetest.register_craft({
output = node_name..' 1',
recipe = {
{def.nodes[1], '', def.nodes[1]},
{'', '', ''},
{def.nodes[1], '', def.nodes[1]},
}
output = node_name..' 1',
recipe = {
{def.nodes[1], '', def.nodes[1]},
{'', '', ''},
{def.nodes[1], '', def.nodes[1]},
}
})
--node
minetest.register_node(node_name,{
@ -125,7 +125,6 @@ civilization.register_age_node = function(def)
end
crafted = minetest.get_craft_result({method = "normal", width = 3, items = tablelist})
end
if crafted then
inv:set_stack("dst", 1, crafted.item)
else
@ -137,23 +136,18 @@ civilization.register_age_node = function(def)
local tablelist = inv:get_list("recipe")
local crafted = nil
local table_dec = nil
if tablelist then
crafted,table_dec = minetest.get_craft_result({method = "normal", width = 3, items = tablelist})
end
if table_dec then
inv:set_list("recipe", table_dec.items)
else
inv:set_list("recipe", nil)
end
local tablelist = inv:get_list("recipe")
if tablelist then
crafted,table_dec = minetest.get_craft_result({method = "normal", width = 3, items = tablelist})
end
if crafted then
inv:set_stack("dst", 1, crafted.item)
else

View File

@ -1,24 +1,22 @@
--THIS API IS WIP
--IT WILL ALLOW TO MAKE A CRAFTING NODE FOR A MOD
--def
--recipe
--mod name
--formspec
--recipe
--mod name
--formspec
civilization.register_mod_node = function(def)
local node_name = "civilization:"..def.mod
--craft
minetest.register_craft({
output = 'bucket:bucket_empty 1',
recipe = {
{'default:steel_ingot', '', 'default:steel_ingot'},
{'', 'default:steel_ingot', ''},
}
output = node_name..' 1',
recipe = def.recipe,
})
--node
minetest.register_node("civilization:"..def.name,{
description = def.name.." Age",
minetest.register_node(node_name,{
description = def.name,
drawtype="normal",
tiles={def.tiles.."^civilization_factory.png"},
tiles={def.tiles},
groups={cracky=1},
on_construct = function(pos)
local meta = minetest.env:get_meta(pos)
@ -28,7 +26,7 @@ civilization.register_mod_node = function(def)
"list[current_player;main;1,0;3,3;]"..
"list[current_name;recipe;4.5,0;3,3;]"..
"list[current_name;dst;7.5,1;1,1;]")
meta:set_string("infotext", def.name.." Craft")
meta:set_string("infotext", def.name)
local inv = meta:get_inventory()
inv:set_size("recipe",3*3)
inv:set_size("dst",1)
@ -66,19 +64,16 @@ civilization.register_mod_node = function(def)
local recipe
print("inventory mode")
if tablelist then
for _,item in ipairs(tablelist) do
local name = item:get_name()
if string.find(dump(def.nodes), name) or string.find(dump(civilization.common_age_nodes), name) or name == "" then
else
inv:set_stack("dst", 1, nil)
return
end
end
crafted = minetest.get_craft_result({method = "normal", width = 3, items = tablelist})
end
if crafted then
inv:set_stack("dst", 1, crafted.item)
if not string.find(dump(crafted.item:get_name()), def.mod..":") then
inv:set_stack("dst", 1, nil)
return
else
inv:set_stack("dst", 1, crafted.item)
end
else
inv:set_stack("dst", 1, nil)
end
@ -93,19 +88,16 @@ civilization.register_mod_node = function(def)
print("inventory put")
if tablelist then
for _,item in ipairs(tablelist) do
local name = item:get_name()
if string.find(dump(def.nodes), name) or string.find(dump(civilization.common_age_nodes), name) or name == "" then
else
inv:set_stack("dst", 1, nil)
return
end
end
crafted = minetest.get_craft_result({method = "normal", width = 3, items = tablelist})
end
if crafted then
inv:set_stack("dst", 1, crafted.item)
if not string.find(dump(crafted.item:get_name()), def.mod..":") then
inv:set_stack("dst", 1, nil)
return
else
inv:set_stack("dst", 1, crafted.item)
end
else
inv:set_stack("dst", 1, nil)
end
@ -120,19 +112,16 @@ civilization.register_mod_node = function(def)
print("inventory take")
if tablelist then
for _,item in ipairs(tablelist) do
local name = item:get_name()
if string.find(dump(def.nodes), name) or string.find(dump(civilization.common_age_nodes), name) or name == "" then
else
inv:set_stack("dst", 1, nil)
return
end
end
crafted = minetest.get_craft_result({method = "normal", width = 3, items = tablelist})
end
if crafted then
inv:set_stack("dst", 1, crafted.item)
if not string.find(dump(crafted.item:get_name()), def.mod..":") then
inv:set_stack("dst", 1, nil)
return
else
inv:set_stack("dst", 1, crafted.item)
end
else
inv:set_stack("dst", 1, nil)
end
@ -142,24 +131,27 @@ civilization.register_mod_node = function(def)
local tablelist = inv:get_list("recipe")
local crafted = nil
local table_dec = nil
if tablelist then
crafted,table_dec = minetest.get_craft_result({method = "normal", width = 3, items = tablelist})
end
if table_dec then
inv:set_list("recipe", table_dec.items)
else
inv:set_list("recipe", nil)
end
local tablelist = inv:get_list("recipe")
if tablelist then
crafted,table_dec = minetest.get_craft_result({method = "normal", width = 3, items = tablelist})
end
if crafted then
if not string.find(dump(crafted.item:get_name()), def.mod..":") then
inv:set_stack("dst", 1, nil)
return
else
inv:set_stack("dst", 1, crafted.item)
end
inv:set_stack("dst", 1, crafted.item)
else
inv:set_stack("dst", 1, nil)

Binary file not shown.

After

Width:  |  Height:  |  Size: 571 B