forked from mtcontrib/chesttools
added swap all/filter all commands
This commit is contained in:
parent
6994e82f4c
commit
0ce03c5083
29
init.lua
29
init.lua
@ -116,9 +116,10 @@ chesttools.on_receive_fields = function(pos, formname, fields, player)
|
|||||||
|
|
||||||
local player_inv = player:get_inventory();
|
local player_inv = player:get_inventory();
|
||||||
local chest_inv = meta:get_inventory();
|
local chest_inv = meta:get_inventory();
|
||||||
|
|
||||||
if( fields.drop_all ) then
|
if( fields.drop_all ) then
|
||||||
for i,v in ipairs( player_inv:get_list( inv_list )) do
|
for i,v in ipairs( player_inv:get_list( inv_list ) or {}) do
|
||||||
if( chest_inv:room_for_item('main', v)) then
|
if( chest_inv and chest_inv:room_for_item('main', v)) then
|
||||||
local leftover = chest_inv:add_item( 'main', v );
|
local leftover = chest_inv:add_item( 'main', v );
|
||||||
player_inv:remove_item( inv_list, v );
|
player_inv:remove_item( inv_list, v );
|
||||||
if( leftover and not( leftover:is_empty() )) then
|
if( leftover and not( leftover:is_empty() )) then
|
||||||
@ -127,7 +128,7 @@ chesttools.on_receive_fields = function(pos, formname, fields, player)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
elseif( fields.take_all ) then
|
elseif( fields.take_all ) then
|
||||||
for i,v in ipairs( chest_inv:get_list( 'main' )) do
|
for i,v in ipairs( chest_inv:get_list( 'main' ) or {}) do
|
||||||
if( player_inv:room_for_item( inv_list, v)) then
|
if( player_inv:room_for_item( inv_list, v)) then
|
||||||
local leftover = player_inv:add_item( inv_list, v );
|
local leftover = player_inv:add_item( inv_list, v );
|
||||||
chest_inv:remove_item( 'main', v );
|
chest_inv:remove_item( 'main', v );
|
||||||
@ -136,8 +137,26 @@ chesttools.on_receive_fields = function(pos, formname, fields, player)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
-- TODO: swap_all, filter_all
|
|
||||||
-- TODO: buttons for those combined operations
|
elseif( fields.swap_all ) then
|
||||||
|
for i,v in ipairs( player_inv:get_list( inv_list ) or {}) do
|
||||||
|
if( chest_inv ) then
|
||||||
|
local tmp = player_inv:get_stack( inv_list, i );
|
||||||
|
player_inv:set_stack( inv_list, i, chest_inv:get_stack( 'main', i ));
|
||||||
|
chest_inv:set_stack( 'main', i, v );
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
elseif( fields.filter_all ) then
|
||||||
|
for i,v in ipairs( player_inv:get_list( inv_list ) or {}) do
|
||||||
|
if( chest_inv and chest_inv:room_for_item('main', v) and chest_inv:contains_item( 'main', v:get_name())) then
|
||||||
|
local leftover = chest_inv:add_item( 'main', v );
|
||||||
|
player_inv:remove_item( inv_list, v );
|
||||||
|
if( leftover and not( leftover:is_empty() )) then
|
||||||
|
player_inv:add_item( inv_list, v );
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user