@@ -16,6 +16,8 @@ local http = core.request_http_api()
16
16
local singleplayer = core .is_singleplayer ()
17
17
18
18
local reg_items = core .registered_items
19
+ local reg_nodes = core .registered_nodes
20
+ local reg_craftitems = core .registered_craftitems
19
21
local reg_tools = core .registered_tools
20
22
local reg_entities = core .registered_entities
21
23
local reg_aliases = core .registered_aliases
@@ -824,7 +826,7 @@ local function cache_recipes(item)
824
826
end
825
827
end
826
828
827
- local function get_recipes (item , data , player )
829
+ local function get_recipes (player , item )
828
830
local clean_item = reg_aliases [item ] or item
829
831
local recipes = recipes_cache [clean_item ]
830
832
local usages = usages_cache [clean_item ]
@@ -1073,7 +1075,7 @@ local function craft_stack(player, pname, data, craft_rcp)
1073
1075
end
1074
1076
end
1075
1077
1076
- local function select_item (player , name , data , _f )
1078
+ local function select_item (player , data , _f )
1077
1079
local item
1078
1080
1079
1081
for field in pairs (_f ) do
@@ -1097,7 +1099,7 @@ local function select_item(player, name, data, _f)
1097
1099
1098
1100
if item == data .query_item then return end
1099
1101
1100
- local recipes , usages = get_recipes (item , data , player )
1102
+ local recipes , usages = get_recipes (player , item )
1101
1103
if not recipes and not usages then return end
1102
1104
1103
1105
data .query_item = item
@@ -1757,14 +1759,21 @@ local function search(data)
1757
1759
local def = reg_items [item ]
1758
1760
local desc = lower (translate (data .lang_code , def and def .description )) or " "
1759
1761
local search_in = sprintf (" %s %s" , item , desc )
1760
- local to_add
1762
+ local temp , j , to_add = {}, 1
1761
1763
1762
1764
if search_filter then
1763
1765
for filter_name , values in pairs (filters ) do
1764
1766
if values then
1765
1767
local func = search_filters [filter_name ]
1766
- to_add = func (item , values ) and (search_filter == " " or
1768
+ to_add = (j > 1 and temp [item ] or j == 1 ) and
1769
+ func (item , values ) and (search_filter == " " or
1767
1770
find (search_in , search_filter , 1 , true ))
1771
+
1772
+ if to_add then
1773
+ temp [item ] = true
1774
+ end
1775
+
1776
+ j = j + 1
1768
1777
end
1769
1778
end
1770
1779
else
@@ -1804,6 +1813,16 @@ craftguide.add_search_filter("groups", function(item, groups)
1804
1813
return has_groups
1805
1814
end )
1806
1815
1816
+ craftguide .add_search_filter (" type" , function (item , drawtype )
1817
+ if drawtype == " node" then
1818
+ return reg_nodes [item ]
1819
+ elseif drawtype == " item" then
1820
+ return reg_craftitems [item ]
1821
+ elseif drawtype == " tool" then
1822
+ return reg_tools [item ]
1823
+ end
1824
+ end )
1825
+
1807
1826
--[[ As `core.get_craft_recipe` and `core.get_all_craft_recipes` do not
1808
1827
return the fuel, replacements and toolrepair recipes, we have to
1809
1828
override `core.register_craft` and do some reverse engineering.
@@ -1932,7 +1951,7 @@ local function get_init_items()
1932
1951
end
1933
1952
end
1934
1953
1935
- local function init_data (player , name )
1954
+ local function init_data (name )
1936
1955
local info = get_player_info (name )
1937
1956
1938
1957
pdata [name ] = {
@@ -1966,7 +1985,7 @@ on_mods_loaded(get_init_items)
1966
1985
1967
1986
on_joinplayer (function (player )
1968
1987
local name = player :get_player_name ()
1969
- init_data (player , name )
1988
+ init_data (name )
1970
1989
local data = pdata [name ]
1971
1990
1972
1991
if data .fs_version < MIN_FORMSPEC_VERSION then
@@ -2085,7 +2104,7 @@ on_receive_fields(function(player, formname, _f)
2085
2104
elseif _f .craft_rcp or _f .craft_usg then
2086
2105
craft_stack (player , name , data , _f .craft_rcp )
2087
2106
else
2088
- select_item (player , name , data , _f )
2107
+ select_item (player , data , _f )
2089
2108
end
2090
2109
2091
2110
return true , show_fs (player , name )
@@ -2126,7 +2145,7 @@ core.register_craftitem("craftguide:book", {
2126
2145
wield_image = PNG .book ,
2127
2146
stack_max = 1 ,
2128
2147
groups = {book = 1 },
2129
- on_use = function (itemstack , user )
2148
+ on_use = function (_ , user )
2130
2149
on_use (user )
2131
2150
end
2132
2151
})
@@ -2158,7 +2177,7 @@ core.register_node("craftguide:sign", {
2158
2177
meta :set_string (" infotext" , " Crafting Guide Sign" )
2159
2178
end ,
2160
2179
2161
- on_rightclick = function (pos , node , user , itemstack )
2180
+ on_rightclick = function (_ , _ , user )
2162
2181
on_use (user )
2163
2182
end
2164
2183
})
0 commit comments