diff --git a/mods/sfinv/README.md b/mods/sfinv/README.md new file mode 100644 index 0000000..ecc63bf --- /dev/null +++ b/mods/sfinv/README.md @@ -0,0 +1,82 @@ +# Simple Fast Inventory + +A cleaner, simpler, solution to having an advanced inventory in Minetest. +Formspec style based on the creative inventory. + +Written by rubenwardy. +License: WTFPL + +## Aims + +* Unified Inventory compatible. +* Themable. +* Clean API. + +# API + +## Formspec Parser + +sfinv has a variable based parser. Here is the formspec of the crafting tab: + + {{ layout }} + list[current_player;craft;1.75,0.5;3,3;] + list[current_player;craftpreview;5.75,1.5;1,1;] + image[4.75,1.5;1,1;gui_furnace_arrow_bg.png^[transformR270] + listring[current_player;main] + listring[current_player;craft] + image[0,4.25;1,1;gui_hb_bg.png] + image[1,4.25;1,1;gui_hb_bg.png] + image[2,4.25;1,1;gui_hb_bg.png] + image[3,4.25;1,1;gui_hb_bg.png] + image[4,4.25;1,1;gui_hb_bg.png] + image[5,4.25;1,1;gui_hb_bg.png] + image[6,4.25;1,1;gui_hb_bg.png] + image[7,4.25;1,1;gui_hb_bg.png] + +`{{ layout }}` will be replaced by the following: + + size[8,8.6] + bgcolor[#080808BB;true] + background[5,5;1,1;gui_formbg.png;true] + {{ nav }} + listcolors[#00000069;#5A5A5A;#141318;#30434C;#FFF] + list[current_player;main;0,4.25;8,1;] + list[current_player;main;0,5.5;8,3;8] + +and `{{ nav }}` will be replaced by something like the following: + + tabheader[0,0;tabs;Crafting,Page 1, Page 2;1] + +Only two levels of variable parsing is guaranteed to succeed, as only two +passes are done. + +Here is another example, this time a page with no inventory: + + size[8,8.6] + bgcolor[#080808BB;true] + background[5,5;1,1;gui_formbg.png;true] + {{ nav }} + textlist[0,0;7.85,8.5;help;one,two,three] + +The following variables are provided by the API: + +* `name` - name of the player viewing +* `nav` - the navigation, probably a tabset +* `layout` - a default layout which has the players inventory at the bottom. + + +## sfinv.register_page + +sfinv.register_page(name, def) + +def is a table containing: + +* `title(player, context)` - human readable page name (required) +* `get(player, context)` - returns a formspec string. See formspec variables. (required) +* `is_in_nav(player, context)` - return true if it appears in tab header +* `on_player_receive_fields(player, context, fields)` - on formspec submit + +planned: + +* `on_enter(player, context)` - when coming to this page from another +* `on_leave(player, context)` - when leaving this page to go to another diff --git a/mods/sfinv/api.lua b/mods/sfinv/api.lua index bf71860..3982fda 100644 --- a/mods/sfinv/api.lua +++ b/mods/sfinv/api.lua @@ -81,31 +81,6 @@ function sfinv.set(player, context) local fs = sfinv.get(player, context) print(fs) player:set_inventory_formspec(fs) - - --[[local tmp = [ [ - size[8,8.6] - image[4.06,3.4;0.8,0.8;creative_trash_icon.png] - list[current_player;main;0,4.7;8,1;] - list[current_player;main;0,5.85;8,3;8] - list[detached:creative_trash;main;4,3.3;1,1;] - tablecolumns[color;text;color;text] - tableoptions[background=#00000000;highlight=#00000000;border=false] - button[5.4,3.2;0.8,0.9;creative_prev;<] - button[7.25,3.2;0.8,0.9;creative_next;>] - button[2.1,3.4;0.8,0.5;search;?] - button[2.75,3.4;0.8,0.5;clear;X] - tooltip[search;Search] - tooltip[clear;Reset] - listring[current_player;main] - ] ] .. - "field[0.3,3.5;2.2,1;filter;;".. filter .."]".. - "listring[detached:creative_".. player_name ..";main]".. - "tabheader[0,0;tabs;Crafting,All,Nodes,Tools,Items;".. tostring(tab_id) ..";true;false]".. - "list[detached:creative_".. player_name ..";main;0,0;8,3;".. tostring(start_i) .."]".. - "table[6.05,3.35;1.15,0.5;pagenum;#FFFF00,".. tostring(pagenum) ..",#FFFFFF,/ ".. tostring(pagemax) .."]".. - default.get_hotbar_bg(0,4.7).. - default.gui_bg .. default.gui_bg_img .. default.gui_slots - ]]-- end minetest.register_on_joinplayer(function(player)