diff options
author | HybridDog <adresse_test@t-online.de> | 2015-08-16 16:40:49 +0200 |
---|---|---|
committer | HybridDog <adresse_test@t-online.de> | 2015-08-16 16:40:49 +0200 |
commit | babe4380acf1fcd89c3658e72ded9942fbec21bf (patch) | |
tree | 520cc5dca9ad76d016f5519c1034257024408a4e /callbacks.lua | |
parent | 570d2cb162bd6d38fddd56f2eade7cc59dfd0f9d (diff) |
disallow repairing tools using the 'to craft grid', allow it to put items of specific groups and (maybe) make it keep the meta of items, remove unused elseif, change a bit translation and use table.concat at one place because I read somewhere that it's faster than ..
Diffstat (limited to 'callbacks.lua')
-rw-r--r-- | callbacks.lua | 78 |
1 files changed, 41 insertions, 37 deletions
diff --git a/callbacks.lua b/callbacks.lua index 3a41c32..c0f9d04 100644 --- a/callbacks.lua +++ b/callbacks.lua @@ -1,7 +1,9 @@ local function default_refill(stack) stack:set_count(stack:get_stack_max()) local itemdef = minetest.registered_items[stack:get_name()] - if itemdef and (itemdef.wear_represents or "mechanical_wear") == "mechanical_wear" and stack:get_wear() ~= 0 then + if itemdef + and (itemdef.wear_represents or "mechanical_wear") == "mechanical_wear" + and stack:get_wear() ~= 0 then stack:set_wear(0) end return stack @@ -52,7 +54,8 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) local player_name = player:get_player_name() -- always take new search text, even if not searching on it yet - if fields.searchbox ~= nil and fields.searchbox ~= unified_inventory.current_searchbox[player_name] then + if fields.searchbox + and fields.searchbox ~= unified_inventory.current_searchbox[player_name] then unified_inventory.current_searchbox[player_name] = fields.searchbox unified_inventory.set_inventory_formspec(player, unified_inventory.current_page[player_name]) end @@ -98,7 +101,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) if start_i > pagemax then start_i = pagemax end - if not (start_i == start) then + if start_i ~= start then minetest.sound_play("paperflip1", {to_player=player_name, gain = 1.0}) unified_inventory.current_index[player_name] = (start_i - 1) * unified_inventory.items_per_page + 1 @@ -106,7 +109,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) unified_inventory.current_page[player_name]) end - local clicked_item = nil + local clicked_item for name, value in pairs(fields) do if string.sub(name, 1, 12) == "item_button_" then local new_dir, mangled_item = string.match(name, "^item_button_([a-z]+)_(.*)$") @@ -116,7 +119,8 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) unified_inventory.apply_filter(player, clicked_item, new_dir) return end - if new_dir == "recipe" or new_dir == "usage" then + if new_dir == "recipe" + or new_dir == "usage" then unified_inventory.current_craft_direction[player_name] = new_dir end break @@ -126,22 +130,20 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) minetest.sound_play("click", {to_player=player_name, gain = 0.1}) local page = unified_inventory.current_page[player_name] - if not unified_inventory.is_creative(player_name) then + local player_creative = unified_inventory.is_creative(player_name) + if not player_creative then page = "craftguide" end if page == "craftguide" then unified_inventory.current_item[player_name] = clicked_item unified_inventory.alternate[player_name] = 1 - unified_inventory.set_inventory_formspec(player, - "craftguide") - else - if unified_inventory.is_creative(player_name) then - local inv = player:get_inventory() - local stack = ItemStack(clicked_item) - stack:set_count(stack:get_stack_max()) - if inv:room_for_item("main", stack) then - inv:add_item("main", stack) - end + unified_inventory.set_inventory_formspec(player, "craftguide") + elseif player_creative then + local inv = player:get_inventory() + local stack = ItemStack(clicked_item) + stack:set_count(stack:get_stack_max()) + if inv:room_for_item("main", stack) then + inv:add_item("main", stack) end end end @@ -156,27 +158,29 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) 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 - local alternate = unified_inventory.alternate[player_name] - local crafts = unified_inventory.crafts_for[unified_inventory.current_craft_direction[player_name]][item_name] - if crafts ~= nil then - alternates = #crafts - end - if alternates > 1 then - alternate = alternate + 1 - if alternate > alternates then - alternate = 1 - end - unified_inventory.alternate[player_name] = alternate - unified_inventory.set_inventory_formspec(player, - unified_inventory.current_page[player_name]) - end - end + if not fields.alternate then + return end + minetest.sound_play("click", + {to_player=player_name, gain = 0.1}) + local item_name = unified_inventory.current_item[player_name] + if not item_name then + return + end + local crafts = unified_inventory.crafts_for[unified_inventory.current_craft_direction[player_name]][item_name] + if not crafts then + return + end + local alternates = #crafts + if alternates <= 1 then + return + end + local alternate = unified_inventory.alternate[player_name] + 1 + if alternate > alternates then + alternate = 1 + end + unified_inventory.alternate[player_name] = alternate + unified_inventory.set_inventory_formspec(player, + unified_inventory.current_page[player_name]) end) |