mirror of
https://github.com/minetest-mods/mesecons.git
synced 2024-08-20 21:16:13 +02:00
58 lines
2.0 KiB
Lua
58 lines
2.0 KiB
Lua
minetest.register_node("mesecons_dispenser:dispenser", {
|
|
description = "Dispenser",
|
|
tiles = {"mesecons_dispenser_top.png" , "mesecons_dispenser_bottom.png",
|
|
"mesecons_dispenser_side.png", "mesecons_dispenser_side.png" ,
|
|
"mesecons_dispenser_side.png", "mesecons_dispenser_front.png"},
|
|
paramtype2 = "facedir",
|
|
groups = {cracky=2},
|
|
sounds = default.node_sound_stone_defaults(),
|
|
on_construct = function(pos)
|
|
local meta = minetest.env:get_meta(pos)
|
|
meta:set_string("formspec",
|
|
"size[8,7]"..
|
|
"list[current_name;main;2.5,0;3,3;]"..
|
|
"list[current_player;main;0,3;8,4;]")
|
|
local inv = meta:get_inventory()
|
|
inv:set_size("main", 3*3)
|
|
end,
|
|
mesecons = {effector={
|
|
action_on = function (pos, node)
|
|
local dir = {{x=1, y=0, z=0}}
|
|
for _ = 0, node.param2 do
|
|
dir = mesecon:rotate_rules_left(dir)
|
|
end
|
|
dir = dir[1]
|
|
local objpos = mesecon:addPosRule(pos, {x=dir.x/2, y=dir.y/2, z=dir.z/2})
|
|
--minetest.env:add_node(mesecon:addPosRule(pos, dir[1]), {name="default:wood"})
|
|
local inv = minetest.env:get_meta(pos):get_inventory()
|
|
local stacks = {}
|
|
for j = 1, 9 do
|
|
local ts = inv:get_stack("main", j)
|
|
if not ts:is_empty() then
|
|
table.insert(stacks, {stack = ts, id = j})
|
|
end
|
|
end
|
|
print(dump(stacks))
|
|
if #stacks > 0 then
|
|
local sn = math.random(1, #stacks)
|
|
local takenitem = stacks[sn].stack:take_item()
|
|
inv:set_stack("main", stacks[sn].id, stacks[sn].stack)
|
|
print(dump(takenitem:to_table()))
|
|
local obj = minetest.env:add_item(objpos, takenitem:to_table())
|
|
obj:setvelocity({ x=dir.x*5+math.random(1, 100)/50-0.5,
|
|
y=dir.y*5+math.random(1, 100)/50-0.5,
|
|
z=dir.z*5+math.random(1, 100)/50-0.5})
|
|
end
|
|
end
|
|
}},
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'mesecons_dispenser:dispenser',
|
|
recipe = {
|
|
{"default:cobble", "default:cobble", "default:cobble"},
|
|
{"default:cobble", "mesecons_materials:fiber", "default:cobble"},
|
|
{"default:cobble", "group:mesecon_conductor_craftable", "default:cobble"},
|
|
}
|
|
})
|