From 14506c477ac69150fd37c80e1571e80fc0ce34fc Mon Sep 17 00:00:00 2001 From: Maciej Kasatkin Date: Wed, 12 Sep 2012 09:15:04 +0200 Subject: [PATCH] Some fixes to sonic screwdriver and gold chests --- gold_chest.lua | 165 ++++++++++++++++++++++++- sonic_screwdriver.lua | 6 +- textures/technic_sonic_screwdriver.png | Bin 2013 -> 2064 bytes 3 files changed, 165 insertions(+), 6 deletions(-) diff --git a/gold_chest.lua b/gold_chest.lua index 44fb313..401015f 100644 --- a/gold_chest.lua +++ b/gold_chest.lua @@ -1,5 +1,4 @@ local chest_mark_colors = { - '', -- regular chest, without color bar '_black', '_blue', '_brown', @@ -52,15 +51,76 @@ minetest.register_craftitem("technic:gold_locked_chest", { stack_max = 99, }) +minetest.register_node("technic:gold_chest", { + description = "Gold Chest", + tiles = {"technic_gold_chest_top.png", "technic_gold_chest_top.png", "technic_gold_chest_side.png", + "technic_gold_chest_side.png", "technic_gold_chest_side.png", "technic_gold_chest_front.png"}, + paramtype2 = "facedir", + groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2}, + legacy_facedir_simple = true, + sounds = default.node_sound_wood_defaults(), + on_construct = function(pos) + local meta = minetest.env:get_meta(pos) + meta:set_string("formspec", + "invsize[12,9;]".. + "list[current_name;main;0,0;12,4;]".. + "list[current_player;main;0,5;8,4;]") + meta:set_string("infotext", "Gold Chest") + local inv = meta:get_inventory() + inv:set_size("main", 12*4) + end, + + can_dig = function(pos,player) + local meta = minetest.env:get_meta(pos); + local inv = meta:get_inventory() + return inv:is_empty("main") + end, + + on_punch = function (pos, node, puncher) + chest_punched (pos,node,puncher); + end, + + on_receive_fields = function(pos, formname, fields, sender) + local meta = minetest.env:get_meta(pos); + fields.text = fields.text or "" + meta:set_string("text", fields.text) + meta:set_string("infotext", '"'..fields.text..'"') + + meta:set_string("formspec", + "invsize[12,9;]".. + "list[current_name;main;0,0;12,4;]".. + "list[current_player;main;0,5;8,4;]") + end, + + on_metadata_inventory_move = function(pos, from_list, from_index, + to_list, to_index, count, player) + minetest.log("action", player:get_player_name().. + " moves stuff in chest at "..minetest.pos_to_string(pos)) + return minetest.node_metadata_inventory_move_allow_all( + pos, from_list, from_index, to_list, to_index, count, player) + end, + on_metadata_inventory_offer = function(pos, listname, index, stack, player) + minetest.log("action", player:get_player_name().. + " moves stuff to chest at "..minetest.pos_to_string(pos)) + return minetest.node_metadata_inventory_offer_allow_all( + pos, listname, index, stack, player) + end, + on_metadata_inventory_take = function(pos, listname, index, stack, player) + minetest.log("action", player:get_player_name().. + " takes stuff from chest at "..minetest.pos_to_string(pos)) + end, +}) + for i, state in ipairs(chest_mark_colors) do minetest.register_node("technic:gold_chest".. state, { description = "Gold Chest", tiles = {"technic_gold_chest_top.png", "technic_gold_chest_top.png", "technic_gold_chest_side.png", "technic_gold_chest_side.png", "technic_gold_chest_side.png", "technic_gold_chest_front"..state..".png"}, paramtype2 = "facedir", - groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2}, + groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2, not_in_creative_inventory=1}, legacy_facedir_simple = true, sounds = default.node_sound_wood_defaults(), + drop = "technic:gold_chest", on_construct = function(pos) local meta = minetest.env:get_meta(pos) meta:set_string("formspec", @@ -122,13 +182,112 @@ local function has_locked_chest_privilege(meta, player) return true end +minetest.register_node("technic:gold_locked_chest", { + description = "Gold Locked Chest", + tiles = {"technic_gold_chest_top.png", "technic_gold_chest_top.png", "technic_gold_chest_side.png", + "technic_gold_chest_side.png", "technic_gold_chest_side.png", "technic_gold_chest_locked.png"}, + paramtype2 = "facedir", + drop = "technic:gold_chest", + groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2}, + legacy_facedir_simple = true, + sounds = default.node_sound_wood_defaults(), + after_place_node = function(pos, placer) + local meta = minetest.env:get_meta(pos) + meta:set_string("owner", placer:get_player_name() or "") + meta:set_string("infotext", "Gold Locked Chest (owned by ".. + meta:get_string("owner")..")") + end, + on_construct = function(pos) + local meta = minetest.env:get_meta(pos) + meta:set_string("formspec", + "invsize[12,9;]".. + "list[current_name;main;0,0;12,4;]".. + "list[current_player;main;0,5;8,4;]") + meta:set_string("infotext", "Gold Locked Chest") + meta:set_string("owner", "") + local inv = meta:get_inventory() + inv:set_size("main", 12*4) + end, + can_dig = function(pos,player) + local meta = minetest.env:get_meta(pos); + local inv = meta:get_inventory() + return inv:is_empty("main") + end, + + on_punch = function (pos, node, puncher) + local meta = minetest.env:get_meta(pos); + if (has_locked_chest_privilege(meta, puncher)) then + locked_chest_punched (pos,node,puncher); + end + end, + + on_receive_fields = function(pos, formname, fields, sender) + local meta = minetest.env:get_meta(pos); + fields.text = fields.text or "" + meta:set_string("text", fields.text) + meta:set_string("infotext", '"'..fields.text..'"') + + meta:set_string("formspec", + "invsize[12,9;]".. + "list[current_name;main;0,0;12,4;]".. + "list[current_player;main;0,5;8,4;]") + end, + + allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) + local meta = minetest.env:get_meta(pos) + if not has_locked_chest_privilege(meta, player) then + minetest.log("action", player:get_player_name().. + " tried to access a locked chest belonging to ".. + meta:get_string("owner").." at ".. + minetest.pos_to_string(pos)) + return 0 + end + return count + end, + allow_metadata_inventory_put = function(pos, listname, index, stack, player) + local meta = minetest.env:get_meta(pos) + if not has_locked_chest_privilege(meta, player) then + minetest.log("action", player:get_player_name().. + " tried to access a locked chest belonging to ".. + meta:get_string("owner").." at ".. + minetest.pos_to_string(pos)) + return 0 + end + return stack:get_count() + end, + allow_metadata_inventory_take = function(pos, listname, index, stack, player) + local meta = minetest.env:get_meta(pos) + if not has_locked_chest_privilege(meta, player) then + minetest.log("action", player:get_player_name().. + " tried to access a locked chest belonging to ".. + meta:get_string("owner").." at ".. + minetest.pos_to_string(pos)) + return 0 + end + return stack:get_count() + end, + on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) + minetest.log("action", player:get_player_name().. + " moves stuff in locked chest at "..minetest.pos_to_string(pos)) + end, + on_metadata_inventory_put = function(pos, listname, index, stack, player) + minetest.log("action", player:get_player_name().. + " moves stuff to locked chest at "..minetest.pos_to_string(pos)) + end, + on_metadata_inventory_take = function(pos, listname, index, stack, player) + minetest.log("action", player:get_player_name().. + " takes stuff from locked chest at "..minetest.pos_to_string(pos)) + end, +}) + for i, state in ipairs(chest_mark_colors) do minetest.register_node("technic:gold_locked_chest".. state, { description = "Gold Locked Chest", tiles = {"technic_gold_chest_top.png", "technic_gold_chest_top.png", "technic_gold_chest_side.png", "technic_gold_chest_side.png", "technic_gold_chest_side.png", "technic_gold_chest_locked"..state..".png"}, paramtype2 = "facedir", - groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2}, + drop = "technic:gold_chest", + groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2, not_in_creative_inventory=1}, legacy_facedir_simple = true, sounds = default.node_sound_wood_defaults(), after_place_node = function(pos, placer) diff --git a/sonic_screwdriver.lua b/sonic_screwdriver.lua index f4e3913..07aa9b4 100644 --- a/sonic_screwdriver.lua +++ b/sonic_screwdriver.lua @@ -15,7 +15,7 @@ sonic_screwdriver_max_charge=15000 if charge ==0 then charge =65535 end charge=get_RE_item_load(charge,sonic_screwdriver_max_charge) if charge-100>0 then - minetest.sound_play("technic_sonic_screwdriver", {pos = pos, gain = 1.0, max_hear_distance = 10,}) + minetest.sound_play("technic_sonic_screwdriver", {pos = pos, gain = 0.5, max_hear_distance = 10,}) local n = node.param2 n = n+1 if n == 4 then n = 0 end @@ -40,8 +40,8 @@ sonic_screwdriver_max_charge=15000 minetest.register_craft({ output = "technic:sonic_screwdriver", recipe = { - {"technic:green_energy_crystal"}, - {"technic:stainless_steel_ingot"}, + {"technic:diamond"}, + {"technic:battery"}, {"technic:stainless_steel_ingot"} } }) diff --git a/textures/technic_sonic_screwdriver.png b/textures/technic_sonic_screwdriver.png index 59b78d4e59992cbd10ea08832fab4bf224f7c812..fb61d96190c7b4a23ba7395c816a72835c773389 100644 GIT binary patch delta 1962 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