From f10facf7cda0c7c1d5dc7f2815ed61090f5d0cfa Mon Sep 17 00:00:00 2001 From: Zemtzov7 <72821250+zmv7@users.noreply.github.com> Date: Mon, 29 Aug 2022 20:55:38 +0500 Subject: [PATCH] Create init.lua --- init.lua | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 init.lua diff --git a/init.lua b/init.lua new file mode 100644 index 0000000..8e3e791 --- /dev/null +++ b/init.lua @@ -0,0 +1,63 @@ +local function FE(text) + return core.formspec_escape(text) +end +local function get_fs(name, witem,index) + local start = index - 1 or 0 + local meta = witem:get_meta() + if not meta then return end + local toolcaps = witem:get_tool_capabilities() + if not toolcaps then return end + local descr = meta:get("description") or witem:get_description() + local color = meta:get_string("color",'') + local count_meta = meta:get_string("count_meta") + local full_punch_interval = dump(toolcaps.full_punch_interval,'') + local max_drop_level = dump(toolcaps.max_drop_level,'') + local groupcaps = FE(core.serialize(toolcaps.groupcaps)) + local damage_groups = FE(core.serialize(toolcaps.damage_groups)) + + local fs = "size[10.2,12]" .. +"list[current_player;main;9,0.1;1,1;"..start.."]" .. +"field[0.4,0.6;3,1;description;Description;"..descr.."]" .. +"field_close_on_enter[description;false]" .. +"field[0.4,1.6;3,1;color;Color;"..color.."]" .. +"field_close_on_enter[color;false]" .. +"field[0.4,2.6;3,1;count_meta;Count_meta;"..count_meta.."]" .. +"field_close_on_enter[count_meta;false]" .. +"field[3.4,0.6;2.5,1;full_punch_interval;Full punch interval;"..full_punch_interval.."]" .. +"field_close_on_enter[full_punch_interval;false]" .. +"field[3.4,1.6;2.5,1;max_drop_level;Max drop level;"..max_drop_level.."]" .. +"field_close_on_enter[max_drop_level;false]" .. +"textarea[0.4,3.5;10,4.8;groupcaps;Groupcaps;"..groupcaps.."]" .. +"textarea[0.4,7.9;10,4.8;damage_groups;Damage groups;"..damage_groups.."]" .. +"button[3.1,2.3;2.2,1;apply;Apply]" + core.show_formspec(name,"itemeditor",fs) +end + +core.register_privilege("itemedit","Allows to use item editor") +core.register_chatcommand("itemedit",{ + description = "Modify a wielded item", + privs = {itemedit=true}, + func = function(name,param) + local player = core.get_player_by_name(name) + if not player then return false, "No Player" end + local witem = player:get_wielded_item() + local index = player:get_wield_index() + if not witem then return false, "Error getting wielded item" end + if witem:get_name() == "" then return false, "Please take item in hand" end + get_fs(name,witem,index) +end}) + +core.register_on_player_receive_fields(function(player, formname, fields) + if formname ~= "itemeditor" then return end + local name = player:get_player_name() + if not name then return end + local witem = player:get_wielded_item() + local meta = witem:get_meta() + if fields.apply then + meta:set_string("description",fields.description) + meta:set_string("color",fields.color) + meta:set_string("count_meta",fields.count_meta) + meta:set_tool_capabilities({full_punch_interval=fields.full_punch_interval,max_drop_level=fields.max_drop_level,groupcaps=core.deserialize(fields.groupcaps),damage_groups=core.deserialize(fields.damage_groups)}) + player:set_wielded_item(witem) + end +end)