alpha 3: wiki

master
root 2022-04-18 22:50:38 +02:00
parent 6865c07542
commit db2105dc61
44 changed files with 491 additions and 42 deletions

View File

@ -30,6 +30,7 @@ globals = {
"treez",
"wield3d",
"mapgenz",
"wikiz"
}
read_globals = {

View File

@ -263,7 +263,7 @@ function bedz.register_bed(name, def)
paramtype2 = "facedir",
is_ground_content = false,
stack_max = 1,
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 3, bed = 1},
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 3, bed = 1, deco = 1},
sounds = sound.wood(),
selection_box = {
type = "fixed",

View File

@ -11,7 +11,7 @@ bedz.register_bed("simple_bed", {
},
inventory_image = "bedz_simple_bed_inv.png",
recipe = {
{"group:wood_planks", "",
{"group:planks", "",
"group:stick"},{"group:stick", "", ""},
{"", "", ""},
}

View File

@ -10,7 +10,7 @@ minetest.register_tool("bucketz:bucket", {
inventory_image = "bucketz.png",
stack_max = 1,
liquids_pointable = true,
groups = { disable_repair = 1 },
groups = {bucket = 1, disable_repair = 1, vessel = 1},
on_use = function(itemstack, user, pointed_thing)
-- Must be pointing to node
if pointed_thing.type ~= "node" then
@ -28,3 +28,13 @@ minetest.register_tool("bucketz:bucket", {
end
end,
})
minetest.register_craft({
output = "bucketz:bucket",
type = "shaped",
recipe = {
{"", "",
""},{"nodez:iron_ingot", "", ""},
{"", "", ""},
}
})

View File

@ -5,11 +5,12 @@ local S = minetest.get_translator(modname)
minetest.register_node("chestz:chest", {
description = S("Chest"),
tiles ={"chestz_chest.png^[sheet:2x2:0,0", "chestz_chest.png^[sheet:2x2:0,0",
"chestz_chest.png^[sheet:2x2:1,0", "chestz_chest.png^[sheet:2x2:1,0",
"chestz_chest.png^[sheet:2x2:1,0", "chestz_chest.png^[sheet:2x2:0,1"},
inventory_image = "chestz_chest_inv.png",
tiles ={"chestz_chest_top.png", "chestz_chest_top.png",
"chestz_chest_side.png", "chestz_chest_side.png",
"chestz_chest_side.png", "chestz_chest_front.png"},
paramtype2 = "facedir",
groups = {dig_immediate=2,choppy=3},
groups = {dig_immediate=2, choppy=3, vessel=1},
is_ground_content = false,
on_construct = function(pos)
local meta = minetest.get_meta(pos)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 751 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 666 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 692 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 577 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 639 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 624 B

View File

@ -110,6 +110,8 @@ function decoz.register_chair(name, def)
minetest.register_node(chair_name, {
description = S(def.description),
inventory_image = def.inventory_image or "",
wield_image = def.wield_image or inventory_image,
tiles = def.tiles,
drawtype = "nodebox",
paramtype = "light",
@ -176,6 +178,8 @@ function decoz.register_table(name, def)
minetest.register_node(table_name, {
description = S(def.description),
inventory_image = def.inventory_image or "",
wield_image = def.wield_image or inventory_image,
tiles = def.tiles,
drawtype = "nodebox",
paramtype = "light",

View File

@ -1,5 +1,6 @@
decoz.register_chair("simple_chair", {
description = "Simple Chair",
inventory_image = "decoz_simple_chair_inv.png",
tiles = {
"treez_apple_tree_wood.png",
"treez_apple_tree_wood.png",

View File

@ -1,5 +1,6 @@
decoz.register_table("simple_table", {
description = "Simple Table",
inventory_image = "decoz_simple_table_inv.png",
tiles = {
"treez_apple_tree_wood.png",
"treez_apple_tree_wood.png",
@ -19,7 +20,7 @@ decoz.register_table("simple_table", {
{-0.4375, -0.5, -0.4375, 0.4375, 0.5, 0.4375},
},
recipe = {
{"group:wood_planks","group:wood_planks",
{"group:planks","group:planks",
"group:stick"},{"group:stick", "", ""},
{"", "", ""},
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 565 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 535 B

View File

@ -141,7 +141,7 @@ function doorz.register_door(name, def)
tiles = def.tiles,
use_texture_alpha = "clip",
is_ground_content = false,
groups = {choppy = 2, door = 1},
groups = {choppy = 2, door = 1, deco =1},
stack_max = 1,
buildable_to = false,
sounds = sound.wood(),

View File

@ -81,7 +81,9 @@ farmz.hoe_use = function(itemstack, user, pointed_thing)
end
function farmz.register_hoe(name, def)
local hoe_name = def.modname..":"..name
minetest.register_tool(hoe_name, {
description = def.description,
inventory_image = def.inventory_image,
@ -89,9 +91,17 @@ function farmz.register_hoe(name, def)
on_use = function(itemstack, user, pointed_thing)
return farmz.hoe_use(itemstack, user, pointed_thing)
end,
groups = def.groups,
groups = {hoe = 1, tool = 4},
sound = {breaks = "default_tool_breaks"},
})
if def.recipe then
minetest.register_craft({
output = hoe_name,
type = "shaped",
recipe = def.recipe
})
end
end
function farmz.register_seed(modname, name, description, product_name, grow_time, sprout)
@ -259,7 +269,7 @@ function farmz.register_plant(name, def)
minetest.register_craftitem(craft_name, {
description = S(def.craft.description),
inventory_image = def.modname.."_"..def.craft.name..".png",
groups = {flour = 1},
groups = def.craft.groups,
})
local recipe = {}

View File

@ -3,5 +3,10 @@ local S = ...
farmz.register_hoe("steel_Hoe" ,{
modname = "farmz",
description = S("Steel Hoe"),
inventory_image = "farmz_hoe_steel.png"
inventory_image = "farmz_hoe_steel.png",
recipe = {
{"", "nodez:iron_ingot",
""},{"treez:stick", "", ""},
{"", "", ""},
}
})

View File

@ -10,6 +10,7 @@ farmz.register_plant("wheat", {
description = "Flour",
input_amount = 4,
output_amount = 1,
groups = {food = 1}
},
only_register_sprout = false,
})

View File

@ -354,7 +354,7 @@ minetest.register_node("furnz:furnace", {
"furnz_furnace_side.png", "furnz_furnace_front.png"
},
paramtype2 = "facedir",
groups = {cracky=2},
groups = {cracky=2, deco=1, tool=1},
legacy_facedir_simple = true,
is_ground_content = false,
sounds = sound.stone(),

View File

@ -2,6 +2,7 @@ helper = {}
helper.vector = {}
helper.nodebox = {}
helper.table = {}
helper.string = {}
function helper.in_group(pos, group)
local node = minetest.get_node_or_nil(pos)
@ -154,3 +155,17 @@ function helper.table_deepcopy(t) -- deep-copy a table
return target
end
--Strings
function helper.string.split(inputstr, sep)
if sep == nil then
sep = "%s"
end
local t = {}
for str in string.gmatch(inputstr, "([^"..sep.."]+)") do
table.insert(t, str)
end
return t
end

Binary file not shown.

After

Width:  |  Height:  |  Size: 671 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 552 B

View File

@ -59,12 +59,13 @@ minetest.register_node("nodez:dirt_with_snow", {
minetest.register_node("nodez:clay", {
description = S("Clay"),
tiles ={"nodez_clay.png"},
groups = {crumbly=2},
groups = {crumbly=2, pottery =1},
sounds = sound.dirt(),
})
minetest.register_craftitem("nodez:clay_lump", {
description = S("Clay Lump"),
groups = {pottery =1},
inventory_image = "nodez_clay_lump.png"
})
@ -93,7 +94,8 @@ minetest.register_craft({
minetest.register_craftitem("nodez:clay_brick", {
description = S("Clay Brick"),
inventory_image = "nodez_clay_brick.png"
inventory_image = "nodez_clay_brick.png",
groups = {pottery=1, build=1},
})
minetest.register_craft({
@ -106,8 +108,8 @@ minetest.register_craft({
minetest.register_node("nodez:clay_bricks", {
description = S("Clay Bricks"),
tiles ={"nodez_clay_bricks.png"},
groups = {crumbly=2},
sounds = sound.dirt(),
groups = {cracky = 3, pottery =1, build=1},
sounds = sound.stone(),
})
minetest.register_craft({
@ -124,7 +126,7 @@ minetest.register_craft({
minetest.register_node("nodez:adobe", {
description = S("Adobe"),
tiles ={"nodez_adobe.png"},
groups = {crumbly=2},
groups = {crumbly=2, pottery=1, build=1},
sounds = sound.dirt(),
})

View File

@ -3,12 +3,13 @@ local S = ...
minetest.register_node("nodez:ruby_ore", {
description = S("Ruby Ore"),
tiles = {"nodez_stone.png^nodez_ruby_ore.png"},
groups = {cracky = 1},
groups = {cracky=1, ore=1},
drop = "nodez:ruby",
sounds = sound:stone(),
})
minetest.register_craftitem("nodez:ruby", {
description = S("Ruby"),
groups = {gem=1, ore=1},
inventory_image = "nodez_ruby.png",
})

View File

@ -14,6 +14,7 @@ Dirt with Snow=Tierra con nieve
Flowing Water=Corriente de agua
Flowing River Water=Corriente de agua de río
Flowing Lava=Corriente de lava
Glass=Vidrio
Gravel=Gravilla
Ice=Hielo
Iron Ingot=Lingote de hierro

View File

@ -3,7 +3,7 @@ local S = ...
minetest.register_node("nodez:mese_ore", {
description = S("Mese Ore"),
tiles = {"nodez_stone.png^nodez_mese_ore.png"},
groups = {cracky = 1},
groups = {cracky=1, ore=1},
drop = "nodez:mese_crystal 3",
sounds = sound:stone(),
})
@ -11,4 +11,5 @@ minetest.register_node("nodez:mese_ore", {
minetest.register_craftitem("nodez:mese_crystal", {
description = S("Mese Crystal"),
inventory_image = "nodez_mese_crystal.png",
groups = {gem=1, ore=1},
})

View File

@ -5,7 +5,7 @@ local S = ...
minetest.register_node("nodez:coal_ore", {
description = S("Coal Ore"),
tiles = {"nodez_stone.png^nodez_coal_ore.png"},
groups = {cracky = 3},
groups = {cracky=3, ore=1},
drop = "nodez:coal_lump 4",
sounds = sound.stone(),
})
@ -13,7 +13,7 @@ minetest.register_node("nodez:coal_ore", {
minetest.register_craftitem("nodez:coal_lump", {
description = S("Coal Lump"),
inventory_image = "nodez_coal_lump.png",
groups = {coal = 1, flammable = 1}
groups = {coal=1, flammable=1, ore=1}
})
minetest.register_craft({
@ -27,13 +27,14 @@ minetest.register_craft({
minetest.register_node("nodez:iron_ore", {
description = S("Iron Ore"),
tiles = {"nodez_stone.png^nodez_iron_ore.png"},
groups = {cracky = 2},
groups = {cracky=2, ore=1},
drop = "nodez:iron_lump 3",
sounds = sound.stone(),
})
minetest.register_craftitem("nodez:iron_lump", {
description = S("Iron Lump"),
groups = {ore=1},
inventory_image = "nodez_iron_lump.png"
})

View File

@ -3,21 +3,21 @@ local S = ...
minetest.register_node("nodez:sand", {
description = S("Sand"),
tiles ={"nodez_sand.png"},
groups = {crumbly=3, sand=1},
groups = {crumbly=3, sand=1, build=1},
sounds = sound.sand()
})
minetest.register_node("nodez:desert_sand", {
description = S("Desert Sand"),
tiles ={"nodez_desert_sand.png"},
groups = {crumbly=3, sand=1},
groups = {crumbly=3, sand=1, build=1},
sounds = sound.sand()
})
minetest.register_node("nodez:sandstone", {
description = S("Sandstone"),
tiles ={"nodez_sandstone.png"},
groups = {crumbly=3, sandstone=1},
groups = {crumbly=3, sandstone=1, stone =1, build=1},
sounds = sound.stone()
})
@ -33,7 +33,7 @@ minetest.register_node("nodez:glass", {
paramtype2 = "glasslikeliquidlevel",
sunlight_propagates = true,
is_ground_content = false,
groups = {cracky= 3, glass= 1},
groups = {cracky=3, glass=1, deco=1, build=1},
oddly_breakable_by_hand = 3,
sounds = sound.glass()
})

View File

@ -3,7 +3,7 @@ local S = ...
minetest.register_node("nodez:stone", {
description = S("Stone"),
tiles = {"nodez_stone.png"},
groups = {cracky=3, stone=1},
groups = {cracky=3, stone=1, build=1},
sounds = sound.stone(),
})
@ -11,7 +11,7 @@ minetest.register_node("nodez:cobble", {
description = S("Cobblestone"),
tiles ={"nodez_cobble.png"},
is_ground_content = false,
groups = {cracky=3, stone=1},
groups = {cracky=3, stone=1,build=1},
sounds = sound.stone(),
})
@ -19,14 +19,14 @@ minetest.register_node("nodez:mossycobble", {
description = S("Mossy Cobblestone"),
tiles ={"nodez_cobble.png^(nodez_moss.png^[makealpha:50,50,50)"},
is_ground_content = false,
groups = {cracky=3, stone=1},
groups = {cracky=3, stone=1, build=1},
sounds = sound.stone(),
})
minetest.register_node("nodez:gravel", {
description = S("Gravel"),
tiles ={"nodez_gravel.png"},
groups = {crumbly=2},
groups = {crumbly=2, build=1},
sounds = sound.gravel(),
drop = {
max_items = 1,
@ -46,5 +46,6 @@ minetest.register_node("nodez:gravel", {
minetest.register_craftitem("nodez:silex", {
description = S("Silex"),
groups = {silex=1, ore=1},
inventory_image = "nodez_silex.png"
})

View File

@ -359,6 +359,7 @@ end)
-- Sign nodes
minetest.register_node("signs:sign", {
description = S"Sign",
inventory_image = "signs_wood_inv.png",
tiles = {"signs_wood.png"},
drawtype = "nodebox",
paramtype = "light",
@ -403,7 +404,7 @@ minetest.register_node("signs:wall_sign", {
minetest.register_craft({
output = "signs:sign 3",
recipe = {
{"group:wood_planks", "",
{"group:planks", "",
"group:stick"},{"", "", ""},
{"", "", ""},
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 567 B

View File

@ -5,8 +5,10 @@ function stairz.register_stair(subname, recipeitem, groups, images, description)
local stairs_name = modname..":stair_" .. subname
groups.stair = 1
groups.build = 1
minetest.register_node(stairs_name, {
description = S(description),
drawtype = "nodebox",
tiles = images,
@ -23,7 +25,7 @@ function stairz.register_stair(subname, recipeitem, groups, images, description)
},
})
minetest.register_craft({
output = stairs_name,
output = stairs_name.." 6",
type = "shaped",
recipe = {
{recipeitem, "",
@ -39,6 +41,7 @@ function stairz.register_slab(subname, recipeitem, groups, images, description)
local slab_name = modname..":slab_" .. subname
groups.slab = 1
groups.build = 1
minetest.register_node(slab_name, {
description = S(description),
@ -57,7 +60,7 @@ function stairz.register_slab(subname, recipeitem, groups, images, description)
},
})
minetest.register_craft({
output = slab_name,
output = slab_name.." 4",
type = "shaped",
recipe = {
{"", "",

View File

@ -4,21 +4,38 @@ S = ...
-- Axes (dig choppy)
--
--Stone --also can pick
minetest.register_tool("toolz:axe_stone", {
description = S("Stone Axe"),
inventory_image = "toolz_stoneaxe.png",
groups = {axe = 1, weapon=1, tool = 2},
tool_capabilities = {
max_drop_level=0,
groupcaps={
choppy={times={[2]=1.00, [3]=0.60}, uses=60, maxlevel=0},
cracky={times={[1]=8.00, [2]=4, [3]=2}, uses=20, maxlevel=0},
crumbly={times={[1]=4.00, [2]=2, [3]=1}, uses=30, maxlevel=0}
},
damage_groups = {fleshy=3},
},
})
minetest.register_craft({
output = "toolz:axe_stone",
type = "shaped",
recipe = {
{"nodez:silex", "nodez:silex",
""},{"treez:stick", "", ""},
{"", "", ""},
}
})
--Steel --more versatile
minetest.register_tool("toolz:axe_steel", {
description = S("Iron Axe"),
inventory_image = "toolz_ironaxe.png",
groups = {axe = 2, weapon=3, tool = 2},
tool_capabilities = {
max_drop_level=1,
groupcaps={
@ -27,3 +44,13 @@ minetest.register_tool("toolz:axe_steel", {
damage_groups = {fleshy=5},
},
})
minetest.register_craft({
output = "toolz:axe_steel",
type = "shaped",
recipe = {
{"nodez:iron_ingot", "nodez:iron_ingot",
""},{"treez:stick", "", ""},
{"", "", ""},
}
})

View File

@ -4,6 +4,7 @@ S = ...
minetest.register_tool("toolz:pick_mese", {
description = S("Mese Pickaxe"),
inventory_image = "toolz_mesepick.png",
groups = {pickaxe = 2, tool = 1},
tool_capabilities = {
full_punch_interval = 1.0,
max_drop_level=3,
@ -18,6 +19,16 @@ minetest.register_tool("toolz:pick_mese", {
},
})
minetest.register_craft({
output = "toolz:pick_mese",
type = "shaped",
recipe = {
{"nodez:mese_crystal", "nodez:mese_crystal",
"nodez:mese_crystal"},{"", "", ""},
{"", "", ""},
}
})
--
-- Pickaxes: Dig cracky
--
@ -25,6 +36,7 @@ minetest.register_tool("toolz:pick_mese", {
minetest.register_tool("toolz:pick_steel", {
description = S("Iron Pickaxe"),
inventory_image = "toolz_ironpick.png",
groups = {pickaxe = 1, tool = 4},
tool_capabilities = {
max_drop_level=1,
groupcaps={
@ -33,3 +45,13 @@ minetest.register_tool("toolz:pick_steel", {
damage_groups = {fleshy=2},
},
})
minetest.register_craft({
output = "toolz:pick_steel",
type = "shaped",
recipe = {
{"nodez:iron_ingot", "nodez:iron_ingot",
"treez:stick"},{"", "", ""},
{"", "", ""},
}
})

View File

@ -7,6 +7,7 @@ S = ...
minetest.register_tool("toolz:shovel_steel", {
description = S("Iron Shovel"),
inventory_image = "toolz_ironshovel.png",
groups = {shovel = 1, tool = 3},
tool_capabilities = {
max_drop_level=1,
groupcaps={
@ -15,6 +16,14 @@ minetest.register_tool("toolz:shovel_steel", {
},
})
minetest.register_craft({
output = "toolz:shovel_steel",
type = "shaped",
recipe = {
{"nodez:iron_ingot", "",
"treez:stick"},{"", "", ""},
{"", "", ""},
}
})

View File

@ -7,6 +7,7 @@ S = ...
minetest.register_tool("toolz:sword_steel", {
description = S("Iron Sword"),
inventory_image = "toolz_ironsword.png",
groups = {sword = 1, weapon = 4},
tool_capabilities = {
full_punch_interval = 1.0,
max_drop_level=1,
@ -14,6 +15,16 @@ minetest.register_tool("toolz:sword_steel", {
}
})
minetest.register_craft({
output = "toolz:sword_steel",
type = "shaped",
recipe = {
{"", "nodez:iron_ingot",
"nodez:iron_ingot"},{"", "", ""},
{"", "", ""},
}
})
-- Fire/Ice sword: Deal damage to non-fleshy damage groups
minetest.register_tool("toolz:sword_fire", {
description = S("Fire Sword"),
@ -28,6 +39,7 @@ minetest.register_tool("toolz:sword_fire", {
minetest.register_tool("toolz:sword_ice", {
description = S("Ice Sword"),
inventory_image = "toolz_icesword.png",
groups = {sword = 1, weapon = 2},
tool_capabilities = {
full_punch_interval = 1.0,
max_drop_level=0,
@ -41,9 +53,20 @@ minetest.register_tool("toolz:sword_ice", {
minetest.register_tool("toolz:dagger_steel", {
description = S("Iron Dagger"),
inventory_image = "toolz_irondagger.png",
groups = {dagger = 1, weapon = 2},
tool_capabilities = {
full_punch_interval = 0.5,
max_drop_level=0,
damage_groups = {fleshy=2},
}
})
minetest.register_craft({
output = "toolz:dagger_steel",
type = "shaped",
recipe = {
{"", "",
"nodez:iron_ingot"},{"", "", ""},
{"", "", ""},
}
})

View File

@ -43,7 +43,7 @@ minetest.register_node("torchz:torch", {
walkable = false,
liquids_pointable = false,
light_source = 12,
groups = {choppy=2, dig_immediate=3, flammable=1, attached_node=1, torch=1},
groups = {choppy=2, dig_immediate=3, flammable=1, attached_node=1, torch=1, deco=1, tool=1},
drop = "torchz:torch",
selection_box = {
type = "wallmounted",

View File

@ -29,7 +29,7 @@ function treez.register_tree(name, def)
fixed = def.fruit.selection_box
},
groups = {fleshy = 3, dig_immediate = 3, flammable = 2,
leafdecay = 3, leafdecay_drop = 1},
leafdecay = 3, leafdecay_drop = 1, food=1},
sounds = sound.leaves(),
on_use = function(itemstack, user, pointed_thing)
@ -73,8 +73,13 @@ function treez.register_tree(name, def)
end,
})
local output = craft_fruit_name
if def.fruit.craft.output_no then
output = output .. " ".. tostring(def.fruit.craft.output_no)
end
minetest.register_craft({
output = craft_fruit_name,
output = output,
type = "shapeless",
recipe = {fruit_name},
})
@ -118,7 +123,10 @@ function treez.register_tree(name, def)
tiles = {
"treez_"..name.."_trunk_top.png",
"treez_"..name.."_trunk_top.png",
"treez_"..name.."_trunk.png"
"treez_"..name.."_trunk.png",
"treez_"..name.."_trunk.png",
"treez_"..name.."_trunk.png",
"treez_"..name.."_trunk.png",
},
groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2},
paramtype2 = "facedir",
@ -134,7 +142,7 @@ function treez.register_tree(name, def)
paramtype2 = "facedir",
place_param2 = 0,
is_ground_content = false,
groups = {wood = 1, wood_planks = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 3},
groups = {wood = 1, planks = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 3, build=1},
sounds = sound.wood(),
})

View File

@ -48,7 +48,7 @@ treez.register_tree("cherry_tree", {
}
})
--Oak Tree
--Chestnut Tree
treez.register_tree("chestnut_tree", {
description = "Chestnut Tree",
fruit = {
@ -62,7 +62,8 @@ treez.register_tree("chestnut_tree", {
name= "chestnut",
description = "Chestnut",
hp = 2,
hunger = 3
hunger = 3,
output_no = 3,
}
},
deco = {

276
mods/wikiz/init.lua Normal file
View File

@ -0,0 +1,276 @@
wikiz = {}
local modname = minetest.get_current_modname()
local S = minetest.get_translator(modname)
local craft_items = minetest.registered_items
local function render_crafts(crafts, page_no)
local render = ""
local row = 1
local col = 0
--Pagination
local items_count = #crafts
local items_per_page = 24
local total_pages = math.floor((items_count + items_per_page - 1) / items_per_page)
local item_start = (page_no * items_per_page) - (items_per_page - 1)
local item_end = math.min(item_start + items_per_page - 1, items_count)
--local total_crafts = #crafts
for i = item_start, item_end do
local craft = crafts[i]
render = render .. "item_image_button["..tostring(col)..","..tostring(row)..";1,1;"..craft.name
..";"..craft.name..";]"
col = col + 1
if col == 8 then
col = 0
row = row + 1
end
end
--NavPag
if total_pages > 1 then
if page_no > 1 then
render = render .."button[2,4;1,1;btn_previous_craft;<<]"
end
render = render .."label[3.25,4.25;"..tostring(page_no).." / "..tostring(total_pages).."]"
if page_no < total_pages then
render = render .."button[4,4;1,1;btn_next_craft;>>]"
end
end
return render
end
local function create_inv_cube(tiles)
local inv_cube = "[inventorycube"
local tile_top, tile_left, tile_right
tile_top = tiles[1]
if tiles[3] then
tile_right = tiles[3]
else
tile_right = tile_top
end
if tiles[6] then
tile_left = tiles[6]
else
tile_left = tile_top
end
inv_cube = inv_cube.."{"..tile_top.."{"..tile_left.."{"..tile_right
return inv_cube
end
local function render_recipes(item_name, recipe_no)
local render = ""
local row = 0
local col = 0
local row_offset = 6
local col_offset = 3
local recipes = minetest.get_all_craft_recipes(item_name)
if recipes then
local recipe = recipes[recipe_no]
local items = recipe.items
local label_row_offset = -0.5
--Type of recipe, "normal, "cooking" or fuel
local type = recipe.type
local type_img
if type == "normal" then
type_img = "hand.png"
elseif type == "cooking" then
type_img = "furnz_furnace_front_active.png"
else --fuel
type_img = ""
end
render = render .."image["..tostring(col+col_offset-2)..","..tostring(row+row_offset)..";1,1;"
..type_img.."]"
--Width; 0=shapeless, 3=shaped
local width = recipe.width
local width_str
if type == "cooking" then
width_str = "cooking"
elseif width == 0 then
width_str = "unordered"
elseif width == 3 then
width_str = "ordered"
else
width_str = "unordered"
end
render = render .."label["..tostring(col+col_offset-2)..","..tostring(row+row_offset+1)
..";"..S(width_str).."]"
--Output
local output = helper.string.split(recipe.output)
local output_no = output[2] or 1
render = render
.."image["..tostring(col+col_offset+2)..","..tostring(row+row_offset+0.5)..";1,1;right_arrow.png]"
local output_img
local itemtype = craft_items[item_name].type
local drawtype = craft_items[item_name].drawtype
if (itemtype == "node") and (drawtype=="normal") then
output_img = create_inv_cube(craft_items[item_name].tiles)
else
output_img = craft_items[item_name].inventory_image
end
if not(output_img == "") then
render = render .."image["..tostring(col+col_offset+3)..","..tostring(row+row_offset+0.5)..";1,1;"..output_img
.."]"
else
render = render .."label["..tostring(col+col_offset+3)..","..tostring(row+row_offset+0.75)..";"..item_name
.."]"
end
if output_no then
render = render .."label["..tostring(col+col_offset+3+0.25)..","..tostring(row+row_offset+0.5+1)
..";"..tostring(output_no).."]"
end
--Recipe Items
for i= 1, 4 do
local item = items[i]
local element_render, prefix, name
if not item then
prefix = "empty"
else
prefix = string.sub(item, 1, 6)
name = string.sub(item, 7, string.len(item))
end
if prefix == "empty" then
if not(type=="cooking") and not(width_str == "unordered") then
element_render = "textarea["..tostring(col+col_offset+0.375)..","..tostring(row+row_offset+0.25)
..";1,1;;"..S(prefix)..";]"
else
element_render = ""
end
elseif prefix == "group:" then
element_render = "textarea["..tostring(col+col_offset+0.25)..","..tostring(row+row_offset)..";1,1;;"
..S(prefix).."\n"..S(name)..";]"
else
local desc = craft_items[item].description or ""
if craft_items[item].type == "node" and craft_items[item].drawtype=="normal" then
local node_img = create_inv_cube(craft_items[item].tiles)
element_render = "image["..tostring(col+col_offset)..","..tostring(row+row_offset)..";1,1;"
.. node_img.."]"
element_render = element_render.."textarea["..tostring(col+col_offset+0.25)..","
..tostring(row+row_offset+label_row_offset)..";1,0.5;;"..desc..";]"
else
element_render = "image["..tostring(col+col_offset)..","..tostring(row+row_offset)..";1,1;"
..(craft_items[item].inventory_image or "blank.png").."]"
element_render = element_render.."textarea["..tostring(col+col_offset+0.25)..","
..tostring(row+row_offset+label_row_offset)..";1,0.5;;"..desc..";]"
end
end
render = render..element_render
col = col + 1
if col == 2 then
label_row_offset = label_row_offset + 1.5
row = row + 1
col = 0
end
end
--Nav bar
local recipe_count = #recipes
if recipe_count > 1 then
if recipe_no > 1 then
render = render .."button["..tostring(col_offset-3)..","..tostring(row_offset+1.5)
..";1,1;btn_previous_recipe;<<]"
end
render = render .."label["..tostring(col_offset-2)..","..tostring(row_offset+1.625)
..";"..tostring(recipe_no).." / "..tostring(recipe_count).."]"
if recipe_no < recipe_count then
render = render .."button["..tostring(col_offset-1.5)..","..tostring(row_offset+1.5)
..";1,1;btn_next_recipe;>>]"
end
end
end
return render
end
local function create_form(player)
local context = sfinv.get_or_create_context(player)
return [[
image_button[0,0;1,1;;btn_build;]]..S("Build")..[[;;]
image_button[1,0;1,1;;btn_deco;]]..S("Deco")..[[;;]
image_button[2,0;1,1;;btn_food;]]..S("Food")..[[;;]
image_button[3,0;1,1;;btn_ore;]]..S("Ores")..[[;;]
image_button[4,0;1,1;;btn_pottery;]]..S("Pottery")..[[;;]
image_button[5,0;1,1;;btn_tool;]]..S("Tools")..[[;;]
image_button[6,0;1,1;;btn_vessel;]]..S("Vessels")..[[;;]
image_button[7,0;1,1;;btn_weapon;]]..S("Weapons")..[[;;]
]]..(context.recipes or "")..[[
]]..(context.crafts or "")..[[
]]
end
local function get_crafts(group)
local crafts = {}
--minetest.get_all_craft_recipes(query_item)
for name, def in pairs(craft_items) do
if minetest.get_item_group(name, group) > 0 then
local recipe = minetest.get_all_craft_recipes(name)
crafts[#crafts+1] = {name = name, def = def, recipe = recipe}
end
end
return crafts
end
sfinv.register_page("wiki", {
title = S("Wiki"),
get = function(self, player, context)
local _context = sfinv.get_or_create_context(player)
--_context.craft_page = 1
sfinv.set_context(player, _context)
return sfinv.make_formspec(player, context, create_form(player), false)
end,
on_player_receive_fields = function(self, player, context, fields)
if not fields then
return
end
local _context = sfinv.get_or_create_context(player)
for key, value in pairs(fields) do
local prefix = string.sub(key, 1, 4)
if prefix == "quit" then
return
end
if not(prefix=="btn_") then
_context.item_name = key
_context.recipe_no = 1
_context.recipes = render_recipes(_context.item_name, _context.recipe_no)
else
if fields.btn_previous_recipe or fields.btn_next_recipe then
if fields.btn_previous_recipe then
_context.recipe_no = _context.recipe_no - 1
else
_context.recipe_no = _context.recipe_no + 1
end
_context.recipes = render_recipes(_context.item_name, _context.recipe_no)
else
local group
if not _context.craft_page then
_context.craft_page = 1
end
if fields.btn_previous_craft or fields.btn_next_craft then
if fields.btn_previous_craft then
_context.craft_page = _context.craft_page - 1
else
_context.craft_page = _context.craft_page + 1
end
group = _context.group
else
group = string.sub(key, 5, string.len(key))
_context.group = group
_context.craft_page = 1
end
local crafts = get_crafts(group)
if crafts then
_context.crafts = render_crafts(crafts, _context.craft_page)
end
end
end
end
--minetest.chat_send_all(tostring(_context.craft_page))
sfinv.set_context(player, _context)
sfinv.set_page(player, "wiki")
end,
})

View File

@ -0,0 +1,20 @@
# textdomain: wikiz
Build=Construir
cooking=hornear
Deco=Deco
dirt=tierra
empty=vacío
Food=Comida
group:=grupo:
ordered=ordenado
Ores=Mineral
planks=tablas de madera
Pottery=Alfarería
sand=arena
stick=palo
stone=piedra
Tools=Herra.
unordered=desordenado
Vessels=Envases
water=agua
Weapons=Armas

3
mods/wikiz/mod.conf Normal file
View File

@ -0,0 +1,3 @@
name = wikiz
description = Craft Wiki
depends = sfinv