mirror of
https://github.com/minetest-mods/mesecons.git
synced 2024-11-18 08:00:37 +01:00
Add dispenser
This commit is contained in:
parent
6efe579f68
commit
1711cbcbd8
1
mesecons_dispenser/depends.txt
Normal file
1
mesecons_dispenser/depends.txt
Normal file
@ -0,0 +1 @@
|
||||
default
|
57
mesecons_dispenser/init.lua
Normal file
57
mesecons_dispenser/init.lua
Normal file
@ -0,0 +1,57 @@
|
||||
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"},
|
||||
}
|
||||
})
|
BIN
mesecons_textures/textures/mesecons_dispenser_bottom.png
Normal file
BIN
mesecons_textures/textures/mesecons_dispenser_bottom.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 731 B |
BIN
mesecons_textures/textures/mesecons_dispenser_front.png
Normal file
BIN
mesecons_textures/textures/mesecons_dispenser_front.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 827 B |
BIN
mesecons_textures/textures/mesecons_dispenser_side.png
Normal file
BIN
mesecons_textures/textures/mesecons_dispenser_side.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 731 B |
BIN
mesecons_textures/textures/mesecons_dispenser_top.png
Normal file
BIN
mesecons_textures/textures/mesecons_dispenser_top.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 731 B |
Loading…
Reference in New Issue
Block a user