diff --git a/table.lua b/table.lua index bb40900..fcc259a 100644 --- a/table.lua +++ b/table.lua @@ -639,7 +639,7 @@ local function table_formspec(player) end if data.tab == 1 then - minetest.show_formspec(player, "simple_table", + minetest.show_formspec(player, "cartographer:table", fs.header(10.25, 7.375, rank, data.tab, skin) .. fs.materials(0.25, 0.1875, meta, skin) .. fs.separator(0.6875, skin.separator) .. @@ -648,7 +648,7 @@ local function table_formspec(player) fs.inv(0.25, 2.375, skin) ); elseif data.tab == 2 then - minetest.show_formspec(player, "simple_table", + minetest.show_formspec(player, "cartographer:table", fs.header(10.25, 8.25, rank, data.tab, skin) .. fs.materials(0.25, 0.1875, meta, skin) .. fs.separator(0.6875, skin.separator) .. @@ -657,7 +657,7 @@ local function table_formspec(player) fs.inv(0.25, 3.25, skin) ); elseif data.tab == 3 then - minetest.show_formspec(player, "simple_table", + minetest.show_formspec(player, "cartographer:table", fs.header(10.25, 7.375, rank, data.tab, skin) .. fs.materials(0.25, 0.1875, meta, skin) .. fs.separator(0.6875, skin.separator) .. @@ -675,9 +675,17 @@ end -- name: The formspec name -- fields: A table containing the input minetest.register_on_player_receive_fields(function(player, name, fields) - if name == "simple_table" then + if name == "cartographer:table" then local meta = minetest.get_meta(player_tables[player:get_player_name()].pos); + local rank = 1; + local name = minetest.get_node(player_tables[player:get_player_name()].pos).name; + if name == "cartographer:standard_table" then + rank = 2; + elseif name == "cartographer:advanced_table" then + rank = 3; + end + if fields["convert"] then local inv = meta:get_inventory(); local stack = inv:get_stack("input", 1); @@ -718,7 +726,7 @@ minetest.register_on_player_receive_fields(function(player, name, fields) audio.play_feedback("cartographer_write", player); end - elseif fields["copy"] then + elseif fields["copy"] and rank >= 2 then local cost = get_copy_material_cost(meta); if can_afford(cost, meta) then meta:set_int("paper", meta:get_int("paper") - cost.paper); @@ -733,17 +741,17 @@ minetest.register_on_player_receive_fields(function(player, name, fields) meta:set_int("detail", 0); elseif fields["2"] then meta:set_int("detail", 1); - elseif fields["3"] then + elseif fields["3"] and rank > 1 then meta:set_int("detail", 2); - elseif fields["4"] then + elseif fields["4"] and rank > 2 then meta:set_int("detail", 3); - elseif fields["1x"] then + elseif fields["1x"] and rank > 1 then meta:set_int("scale", SCALE_SMALL); - elseif fields["2x"] then + elseif fields["2x"] and rank > 1 then meta:set_int("scale", SCALE_MEDIUM); - elseif fields["4x"] then + elseif fields["4x"] and rank > 2 then meta:set_int("scale", SCALE_LARGE); - elseif fields["8x"] then + elseif fields["8x"] and rank > 2 then meta:set_int("scale", SCALE_HUGE); elseif fields["tab1"] then player_tables[player:get_player_name()].tab = 1; @@ -751,7 +759,7 @@ minetest.register_on_player_receive_fields(function(player, name, fields) elseif fields["tab2"] then player_tables[player:get_player_name()].tab = 2; audio.play_feedback("cartographer_turn_page", player); - elseif fields["tab3"] then + elseif fields["tab3"] and rank >= 2 then player_tables[player:get_player_name()].tab = 3; audio.play_feedback("cartographer_turn_page", player); end