Externalize common functions and protect inventories

This commit is contained in:
ShadowNinja
2013-11-27 12:28:56 -05:00
parent 76a8acbe5b
commit 0809dd747e
17 changed files with 162 additions and 298 deletions

View File

@ -74,17 +74,22 @@ minetest.register_node("technic:constructor_mk1_off", {
local inv = meta:get_inventory()
return inv:is_empty("slot1")
end,
allow_metadata_inventory_put = technic.machine_inventory_put,
allow_metadata_inventory_take = technic.machine_inventory_take,
allow_metadata_inventory_move = technic.machine_inventory_move,
})
minetest.register_node("technic:constructor_mk1_on", {
description = "Constructor MK1",
tile_images = {"technic_constructor_mk1_top_on.png","technic_constructor_mk1_bottom_on.png","technic_constructor_mk1_side2_on.png","technic_constructor_mk1_side1_on.png",
"technic_constructor_back.png","technic_constructor_front_on.png"},
is_ground_content = true,
paramtype2 = "facedir",
groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2,mesecon = 2,not_in_creative_inventory=1},
mesecons= {effector={action_off=mk1_off}},
sounds = default.node_sound_stone_defaults(),
allow_metadata_inventory_put = technic.machine_inventory_put,
allow_metadata_inventory_take = technic.machine_inventory_take,
allow_metadata_inventory_move = technic.machine_inventory_move,
})
@ -147,13 +152,15 @@ minetest.register_node("technic:constructor_mk2_off", {
inv:set_size("slot1", 1)
inv:set_size("slot2", 1)
end,
can_dig = function(pos,player)
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
if inv:is_empty("slot1")==false or inv:is_empty("slot2")==false then return false end
return true
end,
end,
allow_metadata_inventory_put = technic.machine_inventory_put,
allow_metadata_inventory_take = technic.machine_inventory_take,
allow_metadata_inventory_move = technic.machine_inventory_move,
})
minetest.register_node("technic:constructor_mk2_on", {
@ -163,8 +170,11 @@ minetest.register_node("technic:constructor_mk2_on", {
is_ground_content = true,
paramtype2 = "facedir",
groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2, mesecon = 2, not_in_creative_inventory=1},
mesecons= {effector={action_off=mk2_off}},
mesecons = {effector={action_off=mk2_off}},
sounds = default.node_sound_stone_defaults(),
allow_metadata_inventory_put = technic.machine_inventory_put,
allow_metadata_inventory_take = technic.machine_inventory_take,
allow_metadata_inventory_move = technic.machine_inventory_move,
})
@ -224,10 +234,9 @@ minetest.register_node("technic:constructor_mk3_off", {
description = "Constructor MK3",
tile_images = {"technic_constructor_mk3_top_off.png","technic_constructor_mk3_bottom_off.png","technic_constructor_mk3_side2_off.png","technic_constructor_mk3_side1_off.png",
"technic_constructor_back.png","technic_constructor_front_off.png"},
is_ground_content = true,
paramtype2 = "facedir",
groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2, mesecon = 2},
mesecons= {effector={action_on=mk3_on}},
mesecons = {effector={action_on=mk3_on}},
sounds = default.node_sound_stone_defaults(),
on_construct = function(pos)
local meta = minetest.get_meta(pos)
@ -258,6 +267,9 @@ minetest.register_node("technic:constructor_mk3_off", {
if inv:is_empty("slot1")==false or inv:is_empty("slot2")==false or inv:is_empty("slot3")==false or inv:is_empty("slot4")==false then return false end
return true
end,
allow_metadata_inventory_put = technic.machine_inventory_put,
allow_metadata_inventory_take = technic.machine_inventory_take,
allow_metadata_inventory_move = technic.machine_inventory_move,
})
minetest.register_node("technic:constructor_mk3_on", {
@ -267,8 +279,11 @@ minetest.register_node("technic:constructor_mk3_on", {
is_ground_content = true,
paramtype2 = "facedir",
groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2, mesecon = 2,not_in_creative_inventory=1},
mesecons= {effector={action_off=mk3_off}},
mesecons = {effector={action_off=mk3_off}},
sounds = default.node_sound_stone_defaults(),
allow_metadata_inventory_put = technic.machine_inventory_put,
allow_metadata_inventory_take = technic.machine_inventory_take,
allow_metadata_inventory_move = technic.machine_inventory_move,
})

View File

@ -1,7 +1,3 @@
minetest.register_craftitem("technic:injector", {
description = "Injector",
stack_max = 99,
})
minetest.register_craft({
output = 'technic:injector 1',
@ -39,15 +35,17 @@ minetest.register_node("technic:injector", {
return inv:is_empty("main")
end,
on_receive_fields = function(pos, formanme, fields, sender)
local meta = minetest.env:get_meta(pos)
local mode=meta:get_string("mode")
if fields.mode then
if mode=="single items" then mode="whole stacks"
else mode="single items"
local meta = minetest.env:get_meta(pos)
local mode=meta:get_string("mode")
if fields.mode then
if mode == "single items" then
mode = "whole stacks"
else
mode = "single items"
end
meta:set_string("mode", mode)
end
local mode=meta:set_string("mode",mode)
end
meta:set_string("formspec",
meta:set_string("formspec",
"invsize[8,9;]"..
"label[0,0;Injector]"..
"button[0,1;.8,.8;mode;]"..
@ -55,13 +53,15 @@ minetest.register_node("technic:injector", {
"list[current_name;main;0,2;8,2;]"..
"list[current_player;main;0,5;8,4;]")
end,
allow_metadata_inventory_put = technic.machine_inventory_put,
allow_metadata_inventory_take = technic.machine_inventory_take,
allow_metadata_inventory_move = technic.machine_inventory_move,
})
minetest.register_abm({
nodenames = {"technic:injector"},
interval = 1,
chance = 1,
action = function(pos, node, active_object_count, active_object_count_wider)
local pos1={}
pos1.x = pos.x