sync with Technic's UI

This commit is contained in:
RealBadAngel 2013-03-03 16:28:24 +01:00
parent 2fa07f5c30
commit adac1aedc4
36 changed files with 121 additions and 62 deletions

@ -1,11 +1,13 @@
-- override minetest.register_craft
crafts_table ={}
crafts_table_count=0
UI_recipes_hook=true
-- override minetest.register_craft
local minetest_register_craft = minetest.register_craft
minetest.register_craft = function (options)
minetest_register_craft(options)
register_craft(options)
if options.type=="alloy" or options.type=="grinding" then return end
minetest_register_craft(options)
end
-- register_craft

@ -36,13 +36,14 @@ end)
-- register_on_joinplayer
minetest.register_on_joinplayer(function(player)
local player_name = player:get_player_name()
table.insert(unified_inventory.players, player_name)
unified_inventory.players[player_name]={}
unified_inventory.players[player_name]["sound_volume"]=minetest.setting_get("sound_volume")*10
unified_inventory.current_index[player_name] = 1
unified_inventory.filtered_items_list[player_name] = {}
unified_inventory.filtered_items_list[player_name] = unified_inventory.items_list
unified_inventory.filtered_items_list_size[player_name]=unified_inventory.items_list_size
unified_inventory.activefilter[player_name]=""
unified_inventory.apply_filter(player_name, "")
unified_inventory.apply_filter(player, "")
unified_inventory.alternate[player_name] = 1
unified_inventory.current_item[player_name] =nil
unified_inventory.set_inventory_formspec(player,unified_inventory.get_formspec(player, unified_inventory.default))
@ -53,7 +54,11 @@ local inv = minetest.create_detached_inventory(player:get_player_name().."craftr
return 0
end,
allow_take = function(inv, listname, index, stack, player)
if minetest.setting_getbool("creative_mode") then
return stack:get_count()
else
return 0
end
end,
allow_move = function(inv, from_list, from_index, to_list, to_index, count, player)
return 0
@ -73,6 +78,7 @@ unified_inventory.refill = minetest.create_detached_inventory(player_name.."refi
end,
on_put = function(inv, listname, index, stack, player)
inv:set_stack(listname, index, ItemStack(stack:get_name().." "..stack:get_stack_max()))
minetest.sound_play("electricity", {to_player=player_name, gain = 1.0})
end,
})
unified_inventory.refill:set_size("main", 1)
@ -89,6 +95,8 @@ unified_inventory.trash = minetest.create_detached_inventory("trash", {
end,
on_put = function(inv, listname, index, stack, player)
inv:set_stack(listname, index, nil)
local player_name=player:get_player_name()
minetest.sound_play("trash", {to_player=player_name, gain = 1.0})
end,
})
unified_inventory.trash:set_size("main", 1)
@ -118,24 +126,59 @@ unified_inventory.get_formspec = function(player,page)
-- player inventory
formspec = formspec .. "list[current_player;main;0,4.5;8,4;]"
-- backgrounds
formspec = formspec .. "background[-0.19,-0.2,;14.38,10.55;ui_form_bg.png]"
if page=="craft" then
formspec = formspec .. "background[0.12,1.05,;7.8,7.4;ui_crafting_form.png]"
end
if page=="craftguide" then
formspec = formspec .. "background[0.12,1.05,;7.8,7.4;ui_craftguide_form.png]"
end
if page=="misc" then
formspec = formspec .. "background[0.12,1.05,;7.8,7.4;ui_misc_form.png]"
end
if page=="bags" then
formspec = formspec .. "background[0.12,1.05,;7.8,7.4;ui_bags_main_form.png]"
end
for i=1,4 do
if page=="bag"..i then
local slots = player:get_inventory():get_stack(page, 1):get_definition().groups.bagslots
if slots == 8 then
formspec = formspec .. "background[0.12,1.05,;7.8,7.4;ui_bags_sm_form.png]"
elseif slots == 16 then
formspec = formspec .. "background[0.12,1.05,;7.8,7.4;ui_bags_med_form.png]"
elseif slots == 24 then
formspec = formspec .. "background[0.12,1.05,;7.8,7.4;ui_bags_lg_form.png]"
end
end
end
-- main buttons
formspec = formspec .. "button[0,9;1.8,.5;craft;Craft]"
formspec = formspec .. "button[1.6,9;1.8,.5;craftguide;Craft Guide]"
formspec = formspec .. "button[3.2,9;1.8,.5;bags;Bags]"
formspec = formspec .. "button[4.8,9;1.8,.5;misc;Misc.]"
local start_x=0
formspec = formspec .. "image_button["..(start_x+.65*0)..",9;.8,.8;ui_craft_icon.png;craft;]"
formspec = formspec .. "image_button["..(start_x+.65*1)..",9;.8,.8;ui_craftguide_icon.png;craftguide;]"
formspec = formspec .. "image_button["..(start_x+.65*2)..",9;.8,.8;ui_bags_icon.png;bags;]"
formspec = formspec .. "image_button["..(start_x+.65*3)..",9;.8,.8;ui_sethome_icon.png;home_gui_set;]"
formspec = formspec .. "image_button["..(start_x+.65*4)..",9;.8,.8;ui_gohome_icon.png;home_gui_go;]"
if minetest.setting_getbool("creative_mode") then
formspec = formspec .. "image_button["..(start_x+.65*5)..",9;.8,.8;ui_sun_icon.png;misc_set_day;]"
formspec = formspec .. "image_button["..(start_x+.65*6)..",9;.8,.8;ui_moon_icon.png;misc_set_night;]"
formspec = formspec .. "image_button["..(start_x+.65*7)..",9;.8,.8;ui_trash_icon.png;clear_inv;]"
end
--controls to flip items pages
local start_x=9.2
formspec = formspec .. "button["..(start_x+.6*0)..",9;.8,.5;start_list;|<]"
formspec = formspec .. "button["..(start_x+.6*1)..",9;.8,.5;rewind3;<<]"
formspec = formspec .. "button["..(start_x+.6*2)..",9;.8,.5;rewind1;<]"
formspec = formspec .. "button["..(start_x+.6*3)..",9;.8,.5;forward1;>]"
formspec = formspec .. "button["..(start_x+.6*4)..",9;.8,.5;forward3;>>]"
formspec = formspec .. "button["..(start_x+.6*5)..",9;.8,.5;end_list;>|]"
start_x=9.2
formspec = formspec .. "image_button["..(start_x+.6*0)..",9;.8,.8;ui_skip_backward_icon.png;start_list;]"
formspec = formspec .. "image_button["..(start_x+.6*1)..",9;.8,.8;ui_doubleleft_icon.png;rewind3;]"
formspec = formspec .. "image_button["..(start_x+.6*2)..",9;.8,.8;ui_left_icon.png;rewind1;]"
formspec = formspec .. "image_button["..(start_x+.6*3)..",9;.8,.8;ui_right_icon.png;forward1;]"
formspec = formspec .. "image_button["..(start_x+.6*4)..",9;.8,.8;ui_doubleright_icon.png;forward3;]"
formspec = formspec .. "image_button["..(start_x+.6*5)..",9;.8,.8;ui_skip_forward_icon.png;end_list;]"
-- search box
formspec = formspec .. "field[9.195,8.325;3,1;searchbox;;]"
formspec = formspec .. "button[12,8;1.2,1;searchbutton;Search]"
formspec = formspec .. "field[9.5,8.325;3,1;searchbox;;]"
formspec = formspec .. "image_button[12.2,8.1;.8,.8;ui_search_icon.png;searchbutton;]"
-- craft page
if page=="craft" then
@ -215,23 +258,6 @@ unified_inventory.get_formspec = function(player,page)
end
end
-- Miscellaneous
if page=="misc" then
formspec = formspec.."label[0,0;Miscellaneous]"
formspec=formspec.."button[0,1;2,0.5;home_gui_set;Set Home]"
formspec=formspec.."button_exit[2,1;2,0.5;home_gui_go;Go Home]"
local home = homepos[player_name]
if home ~= nil then
formspec = formspec
formspec=formspec.."label[4,.9;Home set to:]"
formspec=formspec.."label[5.7,.9;("..math.floor(home.x)..","..math.floor(home.y)..","..math.floor(home.z)..")]"
end
if minetest.setting_getbool("creative_mode") then
formspec=formspec.."button[0,2;2,0.5;misc_set_day;Set Day]"
formspec=formspec.."button[2,2;2,0.5;misc_set_night;Set Night]"
end
end
--Items list
local list_index=unified_inventory.current_index[player_name]
local page=math.floor(list_index / (80) + 1)
@ -261,21 +287,19 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
-- main buttons
if fields.craft then
unified_inventory.set_inventory_formspec(player, unified_inventory.get_formspec(player,"craft"))
minetest.sound_play("click", {to_player=player_name, gain = 0.1})
return
end
if fields.craftguide then
unified_inventory.set_inventory_formspec(player, unified_inventory.get_formspec(player,"craftguide"))
minetest.sound_play("click", {to_player=player_name, gain = 0.1})
return
end
if fields.bags then
unified_inventory.set_inventory_formspec(player, unified_inventory.get_formspec(player,"bags"))
return
end
if fields.misc then
unified_inventory.set_inventory_formspec(player, unified_inventory.get_formspec(player,"misc"))
minetest.sound_play("click", {to_player=player_name, gain = 0.1})
return
end
@ -287,21 +311,28 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
page = "bags"
end
unified_inventory.set_inventory_formspec(player, unified_inventory.get_formspec(player,page))
minetest.sound_play("click", {to_player=player_name, gain = 0.1})
return
end
end
-- Miscellaneous
if fields.home_gui_set then
unified_inventory.set_inventory_formspec(player, unified_inventory.get_formspec(player,"misc"))
unified_inventory.set_home(player, player:getpos())
local home = homepos[player_name]
if home ~= nil then
minetest.sound_play("dingdong", {to_player=player_name, gain = 1.0})
minetest.chat_send_player(player_name, "Home position set to: "..math.floor(home.x)..","..math.floor(home.y)..","..math.floor(home.z))
end
end
if fields.home_gui_go then
unified_inventory.set_inventory_formspec(player, unified_inventory.get_formspec(player,"craft"))
minetest.sound_play("teleport", {to_player=player_name, gain = 1.0})
unified_inventory.go_home(player)
end
if fields.misc_set_day then
if minetest.get_player_privs(player_name).settime==true then
minetest.sound_play("birds", {to_player=player_name, gain = 1.0})
minetest.env:set_timeofday((6000 % 24000) / 24000)
minetest.chat_send_player(player_name, "Time of day set to 6am")
else
@ -310,6 +341,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
end
if fields.misc_set_night then
if minetest.get_player_privs(player_name).settime==true then
minetest.sound_play("owl", {to_player=player_name, gain = 1.0})
minetest.env:set_timeofday((21000 % 24000) / 24000)
minetest.chat_send_player(player_name, "Time of day set to 9pm")
else
@ -317,27 +349,40 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
end
end
if fields.clear_inv then
local inventory = {}
player:get_inventory():set_list("main", inventory)
minetest.chat_send_player(player_name, 'Inventory Cleared!')
minetest.sound_play("trash_all", {to_player=player_name, gain = 1.0})
end
-- Inventory page controls
local start=math.floor(unified_inventory.current_index[player_name]/80 +1 )
local start_i=start
local pagemax = math.floor((unified_inventory.filtered_items_list_size[player_name]-1) / (80) + 1)
if fields.start_list then
minetest.sound_play("paperflip1", {to_player=player_name, gain = 1.0})
start_i = 1
end
if fields.rewind1 then
minetest.sound_play("paperflip1", {to_player=player_name, gain = 1.0})
start_i = start_i - 1
end
if fields.forward1 then
minetest.sound_play("paperflip1", {to_player=player_name, gain = 1.0})
start_i = start_i + 1
end
if fields.rewind3 then
minetest.sound_play("paperflip1", {to_player=player_name, gain = 1.0})
start_i = start_i - 3
end
if fields.forward3 then
minetest.sound_play("paperflip1", {to_player=player_name, gain = 1.0})
start_i = start_i + 3
end
if fields.end_list then
minetest.sound_play("paperflip1", {to_player=player_name, gain = 1.0})
start_i = pagemax
end
if start_i < 1 then
@ -357,6 +402,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
for i=0,80,1 do
local button="item_button"..list_index
if fields[button] then
minetest.sound_play("click", {to_player=player_name, gain = 0.1})
if minetest.setting_getbool("creative_mode")==false then
unified_inventory.set_inventory_formspec(player, unified_inventory.get_formspec(player,"craftguide"))
page="craftguide"
@ -381,13 +427,15 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
list_index=list_index+1
end
if fields.searchbutton then
unified_inventory.apply_filter(player_name, fields.searchbox)
if fields.searchbutton or fields.searchbox then
unified_inventory.apply_filter(player, fields.searchbox)
unified_inventory.set_inventory_formspec(player, unified_inventory.get_formspec(player,unified_inventory.current_page[player_name]))
minetest.sound_play("paperflip2", {to_player=player_name, gain = 1.0})
end
-- alternate button
if fields.alternate then
minetest.sound_play("click", {to_player=player_name, gain = 0.1})
local item_name=unified_inventory.current_item[player_name]
if item_name then
local alternates = 0
@ -432,7 +480,8 @@ load_home() -- run it now
-- set_home
unified_inventory.set_home = function(player, pos)
homepos[player:get_player_name()] = pos
local player_name=player:get_player_name()
homepos[player_name] = pos
-- save the home data from the table to the file
local output = io.open(unified_inventory.home_filename..".home", "w")
for k, v in pairs(homepos) do
@ -452,9 +501,17 @@ unified_inventory.go_home = function(player)
end
--apply filter to the inventory list (create filtered copy of full one)
unified_inventory.apply_filter = function(player_name,filter)
unified_inventory.apply_filter = function(player,filter)
local player_name = player:get_player_name()
local size=0
local str_temp1=string.lower(filter)
if str_temp1 ~= "" then
for i=1,str_temp1:len(),1 do
if string.byte(str_temp1,i) == 91 then
str_temp1=""
end
end
end
local str_temp2
local str_temp3
unified_inventory.filtered_items_list[player_name]={}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

(image error) Size: 4.5 KiB

Binary file not shown.

After

(image error) Size: 11 KiB

Binary file not shown.

After

(image error) Size: 8.1 KiB

Binary file not shown.

After

(image error) Size: 9.8 KiB

Binary file not shown.

After

(image error) Size: 8.4 KiB

Binary file not shown.

After

(image error) Size: 3.1 KiB

Binary file not shown.

After

(image error) Size: 10 KiB

Binary file not shown.

After

(image error) Size: 3.2 KiB

Binary file not shown.

After

(image error) Size: 10 KiB

Binary file not shown.

After

(image error) Size: 2.3 KiB

Binary file not shown.

After

(image error) Size: 2.3 KiB

Binary file not shown.

After

(image error) Size: 6.3 KiB

Binary file not shown.

After

(image error) Size: 2.9 KiB

Binary file not shown.

After

(image error) Size: 2.8 KiB

Binary file not shown.

After

(image error) Size: 2.0 KiB

Binary file not shown.

After

(image error) Size: 6.9 KiB

Binary file not shown.

After

(image error) Size: 4.3 KiB

Binary file not shown.

After

(image error) Size: 1.9 KiB

Binary file not shown.

After

(image error) Size: 3.3 KiB

Binary file not shown.

After

(image error) Size: 2.9 KiB

Binary file not shown.

After

(image error) Size: 2.8 KiB

Binary file not shown.

After

(image error) Size: 2.8 KiB

Binary file not shown.

After

(image error) Size: 5.3 KiB

Binary file not shown.

After

(image error) Size: 4.3 KiB