1
1
craftguide = {}
2
2
3
+ local CORE_VERSION = core .get_version ().string
4
+ CORE_VERSION = CORE_VERSION :match (" [^%-]*" ):gsub (" %." , " " )
5
+ CORE_VERSION = tonumber (CORE_VERSION )
6
+
3
7
-- Caches
4
8
local pdata = {}
5
9
local init_items = {}
@@ -28,13 +32,22 @@ local on_joinplayer = core.register_on_joinplayer
28
32
local get_all_recipes = core .get_all_craft_recipes
29
33
local register_command = core .register_chatcommand
30
34
local get_player_by_name = core .get_player_by_name
35
+ local slz , dslz = core .serialize , core .deserialize
31
36
local on_mods_loaded = core .register_on_mods_loaded
32
37
local on_leaveplayer = core .register_on_leaveplayer
33
- local serialize , deserialize = core .serialize , core .deserialize
34
38
local on_receive_fields = core .register_on_player_receive_fields
35
39
36
40
local ESC = core .formspec_escape
37
- local S = core .get_translator (" craftguide" )
41
+ local S = CORE_VERSION >= 500 and core .get_translator (" craftguide" ) or
42
+ function (...)
43
+ local args = {... }
44
+ local i = 1
45
+
46
+ return args [1 ]:gsub (" @%d+" , function ()
47
+ i = i + 1
48
+ return args [i ]
49
+ end )
50
+ end
38
51
39
52
local maxn , sort , concat , copy , insert =
40
53
table.maxn , table.sort , table.concat , table .copy , table.insert
@@ -55,10 +68,6 @@ local WH_LIMIT = 8
55
68
local XOFFSET = sfinv_only and 3.83 or 4.66
56
69
local YOFFSET = sfinv_only and 6 or 6.6
57
70
58
- local CORE_VERSION = core .get_version ().string
59
- CORE_VERSION = match (CORE_VERSION , " [^%-]*" ):gsub (" %." , " " )
60
- CORE_VERSION = tonumber (CORE_VERSION )
61
-
62
71
craftguide .background = " craftguide_bg_full.png#10"
63
72
64
73
local PNG = {
@@ -550,8 +559,9 @@ local function get_output_fs(fs, L)
550
559
local tooltip = custom_recipe and custom_recipe .description or
551
560
L .shapeless and S (" Shapeless" ) or S (" Cooking" )
552
561
553
- fs [# fs + 1 ] = fmt (" tooltip[%f,%f;%f,%f;%s]" ,
554
- pos_x , pos_y , 0.5 , 0.5 , ESC (tooltip ))
562
+ if CORE_VERSION >= 500 then
563
+ fs [# fs + 1 ] = fmt (FMT .tooltip , pos_x , pos_y , 0.5 , 0.5 , ESC (tooltip ))
564
+ end
555
565
end
556
566
557
567
local arrow_X = L .rightest + (L .s_btn_size or 1.1 )
@@ -862,25 +872,6 @@ local function search(data)
862
872
data .items = filtered_list
863
873
end
864
874
865
- local function init_data (name )
866
- pdata [name ] = {
867
- filter = " " ,
868
- pagenum = 1 ,
869
- items = init_items ,
870
- items_raw = init_items ,
871
- }
872
- end
873
-
874
- local function reset_data (data )
875
- data .filter = " "
876
- data .pagenum = 1
877
- data .rnum = 1
878
- data .query_item = nil
879
- data .show_usages = nil
880
- data .recipes = nil
881
- data .items = data .items_raw
882
- end
883
-
884
875
local old_register_alias = core .register_alias
885
876
886
877
core .register_alias = function (old , new )
@@ -1006,7 +997,31 @@ local function get_init_items()
1006
997
sort (init_items )
1007
998
end
1008
999
1009
- on_mods_loaded (get_init_items )
1000
+ local function init_data (name )
1001
+ local items = CORE_VERSION >= 500 and init_items or
1002
+ (# init_items == 0 and get_init_items () or init_items )
1003
+
1004
+ pdata [name ] = {
1005
+ filter = " " ,
1006
+ pagenum = 1 ,
1007
+ items = items ,
1008
+ items_raw = items ,
1009
+ }
1010
+ end
1011
+
1012
+ local function reset_data (data )
1013
+ data .filter = " "
1014
+ data .pagenum = 1
1015
+ data .rnum = 1
1016
+ data .query_item = nil
1017
+ data .show_usages = nil
1018
+ data .recipes = nil
1019
+ data .items = data .items_raw
1020
+ end
1021
+
1022
+ if CORE_VERSION >= 500 then
1023
+ on_mods_loaded (get_init_items )
1024
+ end
1010
1025
1011
1026
on_joinplayer (function (player )
1012
1027
local name = player :get_player_name ()
@@ -1419,12 +1434,17 @@ if progressive_mode then
1419
1434
on_joinplayer (function (player )
1420
1435
PLAYERS = get_players ()
1421
1436
1422
- local meta = player :get_meta ()
1423
1437
local name = player :get_player_name ()
1424
1438
local data = pdata [name ]
1425
1439
1426
- data .inv_items = deserialize (meta :get_string (" inv_items" )) or {}
1427
- data .known_recipes = deserialize (meta :get_string (" known_recipes" )) or 0
1440
+ if CORE_VERSION >= 500 then
1441
+ local meta = player :get_meta ()
1442
+ data .inv_items = dslz (meta :get_string (" inv_items" )) or {}
1443
+ data .known_recipes = dslz (meta :get_string (" known_recipes" )) or 0
1444
+ else
1445
+ data .inv_items = dslz (player :get_attribute (" inv_items" )) or {}
1446
+ data .known_recipes = dslz (player :get_attribute (" known_recipes" )) or 0
1447
+ end
1428
1448
1429
1449
data .hud = {
1430
1450
bg = player :hud_add ({
@@ -1459,13 +1479,22 @@ if progressive_mode then
1459
1479
}
1460
1480
1461
1481
local function save_meta (player )
1462
- local meta = player : get_meta ()
1482
+ local meta
1463
1483
local name = player :get_player_name ()
1464
1484
local data = pdata [name ]
1465
1485
1486
+ if CORE_VERSION >= 500 then
1487
+ meta = player :get_meta ()
1488
+ end
1489
+
1466
1490
for i = 1 , # to_save do
1467
1491
local meta_name = to_save [i ]
1468
- meta :set_string (meta_name , serialize (data [meta_name ]))
1492
+
1493
+ if CORE_VERSION >= 500 then
1494
+ meta :set_string (meta_name , slz (data [meta_name ]))
1495
+ else
1496
+ player :set_attribute (meta_name , slz (data [meta_name ]))
1497
+ end
1469
1498
end
1470
1499
end
1471
1500
0 commit comments