Add Tetris Arcade

This commit is contained in:
kilbith 2015-05-08 12:48:05 +02:00
parent 27652c4401
commit d15cf002d8
13 changed files with 472 additions and 147 deletions

View File

@ -1,100 +1,100 @@
computer = { }; computer = { }
computer.register = function ( name, def ) computer.register = function (name, def)
local nodename = name; local nodename = name
if (name:sub(1, 1) == ":") then name = name:sub(2); end if (name:sub(1, 1) == ":") then name = name:sub(2) end
local modname, basename = name:match("^([^:]+):(.*)"); local modname, basename = name:match("^([^:]+):(.*)")
local TEXPFX = modname.."_"..basename.."_"; local TEXPFX = modname.."_"..basename.."_"
local ONSTATE = modname..":"..basename; local ONSTATE = modname..":"..basename
local OFFSTATE = modname..":"..basename.."_off"; local OFFSTATE = modname..":"..basename.."_off"
local def = def; local def = def
minetest.register_node(ONSTATE, { minetest.register_node(ONSTATE, {
drawtype = "nodebox"; drawtype = "nodebox",
paramtype = "light"; paramtype = "light",
paramtype2 = "facedir"; paramtype2 = "facedir",
description = def.description; description = def.description,
groups = { snappy=2, choppy=2, oddly_breakable_by_hand=2 }; groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2},
tiles = { tiles = {
TEXPFX.."tp.png", TEXPFX.."tp.png",
TEXPFX.."bt.png", TEXPFX.."bt.png",
TEXPFX.."rt.png", TEXPFX.."rt.png",
TEXPFX.."lt.png", TEXPFX.."lt.png",
TEXPFX.."bk.png", TEXPFX.."bk.png",
TEXPFX.."ft.png", TEXPFX.."ft.png"
}; },
node_box = def.node_box; node_box = def.node_box,
selection_box = def.node_box; selection_box = def.node_box,
on_rightclick = function ( pos, node, clicker, itemstack) on_rightclick = function (pos, node, clicker, itemstack)
if (def.on_turn_off) then if (def.on_turn_off) then
if (def.on_turn_off(pos, node, clicker, itemstack)) then return; end if (def.on_turn_off(pos, node, clicker, itemstack)) then return end
end end
node.name = OFFSTATE; node.name = OFFSTATE
minetest.set_node(pos, node); minetest.set_node(pos, node)
end; end
}); })
minetest.register_node(OFFSTATE, { minetest.register_node(OFFSTATE, {
drawtype = "nodebox"; drawtype = "nodebox",
paramtype = "light"; paramtype = "light",
paramtype2 = "facedir"; 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},
not_in_creative_inventory=1 };
tiles = { tiles = {
(TEXPFX.."tp"..(def.tiles_off.top and "_off" or "")..".png"), (TEXPFX.."tp"..(def.tiles_off.top and "_off" or "")..".png"),
(TEXPFX.."bt"..(def.tiles_off.bottom and "_off" or "")..".png"), (TEXPFX.."bt"..(def.tiles_off.bottom and "_off" or "")..".png"),
(TEXPFX.."rt"..(def.tiles_off.right and "_off" or "")..".png"), (TEXPFX.."rt"..(def.tiles_off.right and "_off" or "")..".png"),
(TEXPFX.."lt"..(def.tiles_off.left and "_off" or "")..".png"), (TEXPFX.."lt"..(def.tiles_off.left and "_off" or "")..".png"),
(TEXPFX.."bk"..(def.tiles_off.back and "_off" or "")..".png"), (TEXPFX.."bk"..(def.tiles_off.back and "_off" or "")..".png"),
(TEXPFX.."ft"..(def.tiles_off.front and "_off" or "")..".png"), (TEXPFX.."ft"..(def.tiles_off.front and "_off" or "")..".png")
}; },
node_box = def.node_box_off or def.node_box; node_box = def.node_box_off or def.node_box,
selection_box = def.node_box_off or def.node_box; selection_box = def.node_box_off or def.node_box,
on_rightclick = function ( pos, node, clicker, itemstack) on_rightclick = function (pos, node, clicker, itemstack)
if (def.on_turn_on) then if (def.on_turn_on) then
if (def.on_turn_on(pos, node, clicker, itemstack)) then return; end if (def.on_turn_on(pos, node, clicker, itemstack)) then return end
end end
node.name = ONSTATE; node.name = ONSTATE
minetest.set_node(pos, node); minetest.set_node(pos, node)
end; end,
drop = ONSTATE; drop = ONSTATE
}); })
end end
computer.register_handheld = function ( name, def ) computer.register_handheld = function (name, def)
local nodename = name; local nodename = name
if (name:sub(1, 1) == ":") then name = name:sub(2); end if (name:sub(1, 1) == ":") then name = name:sub(2) end
local modname, basename = name:match("^([^:]+):(.*)"); local modname, basename = name:match("^([^:]+):(.*)")
local TEXPFX = modname.."_"..basename.."_inv"; local TEXPFX = modname.."_"..basename.."_inv"
local ONSTATE = modname..":"..basename; local ONSTATE = modname..":"..basename
local OFFSTATE = modname..":"..basename.."_off"; local OFFSTATE = modname..":"..basename.."_off"
local on_use = def.on_use; local on_use = def.on_use
minetest.register_craftitem(ONSTATE, { minetest.register_craftitem(ONSTATE, {
description = def.description; description = def.description,
inventory_image = TEXPFX..".png"; inventory_image = TEXPFX..".png",
wield_image = TEXPFX..".png"; wield_image = TEXPFX..".png"
}); })
end end
computer.pixelnodebox = function ( size, boxes ) computer.pixelnodebox = function (size, boxes)
local fixed = { }; local fixed = { }
local i, box; local i, box
for i, box in ipairs(boxes) do for i, box in ipairs(boxes) do
local x, y, z, w, h, l = unpack(box); local x, y, z, w, h, l = unpack(box)
fixed[#fixed + 1] = { fixed[#fixed + 1] = {
(x / size) - 0.5, (x / size) - 0.5,
(y / size) - 0.5, (y / size) - 0.5,
(z / size) - 0.5, (z / size) - 0.5,
((x + w) / size) - 0.5, ((x + w) / size) - 0.5,
((y + h) / size) - 0.5, ((y + h) / size) - 0.5,
((z + l) / size) - 0.5, ((z + l) / size) - 0.5
}; }
end end
return { return {
type = "fixed"; type = "fixed",
fixed = fixed; fixed = fixed
}; }
end end
local MODPATH = minetest.get_modpath("computer"); local MODPATH = minetest.get_modpath("computer")
dofile(MODPATH.."/computers.lua"); dofile(MODPATH.."/computers.lua")
dofile(MODPATH.."/miscitems.lua"); dofile(MODPATH.."/miscitems.lua")
dofile(MODPATH.."/recipes.lua"); dofile(MODPATH.."/recipes.lua")
dofile(MODPATH.."/tetris.lua")

View File

@ -0,0 +1,34 @@
# Blender v2.72 (sub 0) OBJ File: ''
# www.blender.org
mtllib vending_machine.mtl
o Cube
v 0.499998 -0.499998 -0.499998
v 0.499998 -0.499998 0.499998
v -0.499998 -0.499998 0.499998
v -0.499998 -0.499998 -0.499998
v 0.499998 1.499994 -0.499998
v 0.499998 1.499994 0.499998
v -0.499998 1.499994 0.499998
v -0.499998 1.499994 -0.499998
vt 0.250050 0.250050
vt 0.000100 0.250050
vt 0.000100 0.000100
vt 0.250050 0.000100
vt 0.250050 0.749950
vt 0.250050 0.999900
vt 0.000100 0.999900
vt 0.000100 0.749950
vt 0.999900 0.250049
vt 0.999900 0.749949
vt 0.749950 0.749950
vt 0.749950 0.250050
vt 0.500000 0.749950
vt 0.500000 0.250050
usemtl Material
s off
f 1/1 2/2 3/3 4/4
f 5/5 8/6 7/7 6/8
f 1/1 5/5 6/8 2/2
f 2/9 6/10 7/11 3/12
f 3/12 7/11 8/13 4/14
f 5/5 1/1 4/14 8/13

View File

@ -3,132 +3,141 @@
-- License is WTFPL (see README.txt). -- License is WTFPL (see README.txt).
minetest.register_craft({ minetest.register_craft({
output = "computer:shefriendSOO"; output = "computer:shefriendSOO",
recipe = { recipe = {
{ "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", }, { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" },
{ "homedecor:plastic_sheeting", "default:glass", "homedecor:plastic_sheeting", }, { "homedecor:plastic_sheeting", "default:glass", "homedecor:plastic_sheeting" },
{ "homedecor:plastic_sheeting", "default:wood", "homedecor:plastic_sheeting", }, { "homedecor:plastic_sheeting", "default:wood", "homedecor:plastic_sheeting" }
}; }
}); })
minetest.register_craft({ minetest.register_craft({
output = "computer:slaystation"; output = "computer:slaystation",
recipe = { recipe = {
{ "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", }, { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" },
{ "homedecor:plastic_sheeting", "default:wood", "homedecor:plastic_sheeting", }, { "homedecor:plastic_sheeting", "default:wood", "homedecor:plastic_sheeting" }
}; }
}); })
minetest.register_craft({ minetest.register_craft({
output = "computer:vanio"; output = "computer:vanio",
recipe = { recipe = {
{ "homedecor:plastic_sheeting", "", "", }, { "homedecor:plastic_sheeting", "", "" },
{ "default:glass", "", "" }, { "default:glass", "", "" },
{ "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", }, { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" }
}; }
}); })
minetest.register_craft({ minetest.register_craft({
output = "computer:specter"; output = "computer:specter",
recipe = { recipe = {
{ "", "", "homedecor:plastic_sheeting", }, { "", "", "homedecor:plastic_sheeting" },
{ "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", }, { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" },
{ "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", }, { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" }
}; }
}); })
minetest.register_craft({ minetest.register_craft({
output = "computer:slaystation2"; output = "computer:slaystation2",
recipe = { recipe = {
{ "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", }, { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" },
{ "homedecor:plastic_sheeting", "default:steel_ingot", "homedecor:plastic_sheeting", }, { "homedecor:plastic_sheeting", "default:steel_ingot", "homedecor:plastic_sheeting" }
}; }
}); })
minetest.register_craft({ minetest.register_craft({
output = "computer:admiral64"; output = "computer:admiral64",
recipe = { recipe = {
{ "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", }, { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" },
{ "default:wood", "default:wood", "default:wood", }, { "default:wood", "default:wood", "default:wood" }
}; }
}); })
minetest.register_craft({ minetest.register_craft({
output = "computer:admiral128"; output = "computer:admiral128",
recipe = { recipe = {
{ "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", }, { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" },
{ "default:steel_ingot", "default:steel_ingot", "default:steel_ingot", }, { "default:steel_ingot", "default:steel_ingot", "default:steel_ingot" }
}; }
}); })
minetest.register_craft({ minetest.register_craft({
output = "computer:wee"; output = "computer:wee",
recipe = { recipe = {
{ "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", }, { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" },
{ "homedecor:plastic_sheeting", "default:copper_ingot", "homedecor:plastic_sheeting", }, { "homedecor:plastic_sheeting", "default:copper_ingot", "homedecor:plastic_sheeting" }
}; }
}); })
minetest.register_craft({ minetest.register_craft({
output = "computer:piepad"; output = "computer:piepad",
recipe = { recipe = {
{ "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", }, { "homedecor:plastic_sheeting", "homedecor:plastic_sheeting", "homedecor:plastic_sheeting" },
{ "homedecor:plastic_sheeting", "default:glass", "homedecor:plastic_sheeting", }, { "homedecor:plastic_sheeting", "default:glass", "homedecor:plastic_sheeting" }
}; }
}); })
--new stuff --new stuff
minetest.register_craft({ minetest.register_craft({
output = "computer:monitor"; output = "computer:monitor",
recipe = { recipe = {
{ "homedecor:plastic_sheeting", "default:glass","", }, { "homedecor:plastic_sheeting", "default:glass","" },
{ "homedecor:plastic_sheeting", "default:glass","", }, { "homedecor:plastic_sheeting", "default:glass","" },
{ "homedecor:plastic_sheeting", "default:mese_crystal_fragment", "homedecor:plastic_sheeting", }, { "homedecor:plastic_sheeting", "default:mese_crystal_fragment", "homedecor:plastic_sheeting" }
}; }
}); })
minetest.register_craft({ minetest.register_craft({
output = "computer:router"; output = "computer:router",
recipe = { recipe = {
{ "default:steel_ingot","","", }, { "default:steel_ingot","","" },
{ "default:steel_ingot" ,"homedecor:plastic_sheeting", "homedecor:plastic_sheeting", }, { "default:steel_ingot" ,"homedecor:plastic_sheeting", "homedecor:plastic_sheeting" },
{ "default:mese_crystal_fragment","homedecor:plastic_sheeting", "homedecor:plastic_sheeting", }, { "default:mese_crystal_fragment","homedecor:plastic_sheeting", "homedecor:plastic_sheeting" }
}; }
}); })
minetest.register_craft({ minetest.register_craft({
output = "computer:tower"; output = "computer:tower",
recipe = { recipe = {
{ "homedecor:plastic_sheeting", "default:steel_ingot", "homedecor:plastic_sheeting", }, { "homedecor:plastic_sheeting", "default:steel_ingot", "homedecor:plastic_sheeting" },
{ "homedecor:plastic_sheeting", "default:mese_crystal", "homedecor:plastic_sheeting", }, { "homedecor:plastic_sheeting", "default:mese_crystal", "homedecor:plastic_sheeting" },
{ "homedecor:plastic_sheeting", "default:steel_ingot", "homedecor:plastic_sheeting", }, { "homedecor:plastic_sheeting", "default:steel_ingot", "homedecor:plastic_sheeting" }
}; }
}); })
minetest.register_craft({ minetest.register_craft({
output = "computer:printer"; output = "computer:printer",
recipe = { recipe = {
{ "homedecor:plastic_sheeting", "default:steel_ingot","", }, { "homedecor:plastic_sheeting", "default:steel_ingot","" },
{ "homedecor:plastic_sheeting", "default:mese_crystal", "homedecor:plastic_sheeting", }, { "homedecor:plastic_sheeting", "default:mese_crystal", "homedecor:plastic_sheeting" },
{ "homedecor:plastic_sheeting", "default:coal_lump", "homedecor:plastic_sheeting", }, { "homedecor:plastic_sheeting", "default:coal_lump", "homedecor:plastic_sheeting" }
}; }
}); })
minetest.register_craft({ minetest.register_craft({
output = "computer:printer"; output = "computer:printer",
recipe = { recipe = {
{ "homedecor:plastic_sheeting", "default:steel_ingot","", }, { "homedecor:plastic_sheeting", "default:steel_ingot","" },
{ "homedecor:plastic_sheeting", "default:mese_crystal", "homedecor:plastic_sheeting", }, { "homedecor:plastic_sheeting", "default:mese_crystal", "homedecor:plastic_sheeting" },
{ "homedecor:plastic_sheeting", "dye:black", "homedecor:plastic_sheeting", }, { "homedecor:plastic_sheeting", "dye:black", "homedecor:plastic_sheeting", }
}; }
}); })
minetest.register_craft({ minetest.register_craft({
output = "computer:server"; output = "computer:server",
recipe = { recipe = {
{ "computer:tower", "computer:tower", "computer:tower", }, { "computer:tower", "computer:tower", "computer:tower", },
{ "computer:tower", "computer:tower", "computer:tower", }, { "computer:tower", "computer:tower", "computer:tower" },
{ "computer:tower", "computer:tower", "computer:tower", }, { "computer:tower", "computer:tower", "computer:tower" }
}; }
}); })
minetest.register_craft({
output = "computer:tetris_arcade",
recipe = {
{ "homedecor:plastic_sheeting", "homedecor:power_crystal", "homedecor:plastic_sheeting", },
{ "dye:black", "default:glass", "dye:black" },
{ "homedecor:plastic_sheeting", "homedecor:power_crystal", "homedecor:plastic_sheeting" }
}
})

282
computer/tetris.lua Normal file
View File

@ -0,0 +1,282 @@
local shapes = {
{ { x = {0, 1, 0, 1}, y = {0, 0, 1, 1} } },
{ { x = {1, 1, 1, 1}, y = {0, 1, 2, 3} },
{ x = {0, 1, 2, 3}, y = {1, 1, 1, 1} } },
{ { x = {0, 0, 1, 1}, y = {0, 1, 1, 2} },
{ x = {1, 2, 0, 1}, y = {0, 0, 1, 1} } },
{ { x = {1, 0, 1, 0}, y = {0, 1, 1, 2} },
{ x = {0, 1, 1, 2}, y = {0, 0, 1, 1} } },
{ { x = {1, 2, 1, 1}, y = {0, 0, 1, 2} },
{ x = {0, 1, 2, 2}, y = {1, 1, 1, 2} },
{ x = {1, 1, 0, 1}, y = {0, 1, 2, 2} },
{ x = {0, 0, 1, 2}, y = {0, 1, 1, 1} } },
{ { x = {1, 1, 1, 2}, y = {0, 1, 2, 2} },
{ x = {0, 1, 2, 0}, y = {1, 1, 1, 2} },
{ x = {0, 1, 1, 1}, y = {0, 0, 1, 2} },
{ x = {0, 1, 2, 2}, y = {1, 1, 1, 0} } },
{ { x = {1, 0, 1, 2}, y = {0, 1, 1, 1} },
{ x = {1, 1, 1, 2}, y = {0, 1, 2, 1} },
{ x = {0, 1, 2, 1}, y = {1, 1, 1, 2} },
{ x = {0, 1, 1, 1}, y = {1, 0, 1, 2} } } }
local colors = { "computer_cyan.png", "computer_magenta.png", "computer_red.png",
"computer_blue.png", "computer_green.png", "computer_orange.png", "computer_yellow.png" }
local background = "image[0,0;3.55,6.66;computer_black.png]"
local buttons = "button[3,4.5;0.6,0.6;left;◄]"
.."button[3.6,4.5;0.6,0.6;rotateleft;L]"
.."button[4.2,4.5;0.6,0.6;down;V]"
.."button[4.2,5.3;0.6,0.6;drop;▼]"
.."button[4.8,4.5;0.6,0.6;rotateright;R]"
.."button[5.4,4.5;0.6,0.6;right;►]"
.."button[3.5,3;2,2;new;New Game]"
local formsize = "size[5.9,5.7]"
local boardx, boardy = 0, 0
local sizex, sizey, size = 0.29, 0.29, 0.31
local comma = ","
local semi = ";"
local close = "]"
local concat = table.concat
local insert = table.insert
local draw_shape = function(id, x, y, rot, posx, posy)
local d = shapes[id][rot]
local scr = {}
local ins = #scr
for i=1,4 do
local tmp = { "image[",
(d.x[i]+x)*sizex+posx, comma,
(d.y[i]+y)*sizey+posy, semi,
size, comma, size, semi,
colors[id], close }
ins = ins + 1
scr[ins] = concat(tmp)
end
return concat(scr)
end
local function step(pos, fields)
local meta = minetest.get_meta(pos)
local t = minetest.deserialize(meta:get_string("tetris"))
local function new_game(pos)
local nex = math.random(7)
t = {
board = {},
boardstring = "",
previewstring = draw_shape(nex, 0, 0, 1, 4, 1),
score = 0,
cur = math.random(7),
nex = nex,
x=4, y=0, rot=1
}
local timer = minetest.get_node_timer(pos)
timer:set(0.3, 0)
end
local function update_boardstring()
local scr = {}
local ins = #scr
for i, line in pairs(t.board) do
for _, tile in pairs(line) do
local tmp = { "image[",
tile[1]*sizex+boardx, comma,
i*sizey+boardy, semi,
size, comma, size, semi,
colors[tile[2]], close }
ins = ins + 1
scr[ins] = concat(tmp)
end
end
t.boardstring = concat(scr)
end
local function add()
local d = shapes[t.cur][t.rot]
for i=1,4 do
local l = d.y[i] + t.y
if not t.board[l] then t.board[l] = {} end
insert(t.board[l], {d.x[i] + t.x, t.cur})
end
end
local function scroll(l)
for i=l, 1, -1 do
t.board[i] = t.board[i-1] or {}
end
end
local function check_lines()
for i, line in pairs(t.board) do
if #line >= 10 then
scroll(i)
t.score = t.score + 20
end
end
end
local function check_position(x, y, rot)
local d = shapes[t.cur][rot]
for i=1,4 do
local cx, cy = d.x[i]+x, d.y[i]+y
if cx < 0 or cx > 9 or cy < 0 or cy > 19 then
return false
end
for _, tile in pairs(t.board[ cy ] or {}) do
if tile[1] == cx then return false end
end
end
return true
end
local function stuck()
if check_position(t.x, t.y+1, t.rot) then return false end
return true
end
local function tick()
if stuck() then
if t.y <= 0 then
return false end
add()
check_lines()
update_boardstring()
t.cur, t.nex = t.nex, math.random(7)
t.x, t.y, t.rot = 4, 0, 1
t.previewstring = draw_shape(t.nex, 0, 0, 1, 4.1, 0.6)
else
t.y = t.y + 1
end
return true
end
local function move(dx, dy)
local newx, newy = t.x+dx, t.y+dy
if not check_position(newx, newy, t.rot) then return end
t.x, t.y = newx, newy
end
local function rotate(dr)
local no = #(shapes[t.cur])
local newrot = (t.rot+dr) % no
if newrot<1 then newrot = newrot+no end
if not check_position(t.x, t.y, newrot) then return end
t.rot = newrot
end
local function key()
if fields.left then
move(-1, 0)
end
if fields.rotateleft then
rotate(-1)
end
if fields.down then
t.score = t.score + 1
move(0, 1)
end
if fields.drop then
while not stuck() do
t.score = t.score + 2
move(0, 1)
end
end
if fields.rotateright then
rotate(1)
end
if fields.right then
move(1, 0)
end
end
local run = true
if fields then
if fields.new then
new_game(pos)
else
key(fields)
end
else
run = tick()
end
if t ~= nil then
local scr = { formsize, background,
t.boardstring, t.previewstring,
draw_shape(t.cur, t.x, t.y, t.rot, boardx, boardy),
"label[3.8,0.1;Next...]label[3.8,2.7;Score: ",
t.score, close, buttons }
meta:set_string("formspec", concat(scr)
..default.gui_bg..default.gui_bg_img..default.gui_slots)
meta:set_string("tetris", minetest.serialize(t))
end
return run
end
local arcade = {
description="Tetris Arcade",
drawtype = "mesh",
mesh = "tetris_arcade.obj",
tiles = {"tetris_arcade.png"},
paramtype = "light",
paramtype2 = "facedir",
groups = {snappy=3},
selection_box = {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, 1.5, 0.5}
},
collision_box = {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, 1.5, 0.5}
},
on_construct = function(pos)
local meta = minetest.get_meta(pos)
meta:set_string("formspec", formsize.."button[2,2.5;2,2;new;New Game]"
..default.gui_bg..default.gui_bg_img..default.gui_slots)
end,
on_timer = function(pos)
return step(pos, nil)
end,
on_receive_fields = function(pos, formanme, fields, sender)
step(pos, fields)
end,
on_place = function(itemstack, placer, pointed_thing)
local pos = pointed_thing.above
if minetest.get_node({x=pos.x, y=pos.y+1, z=pos.z}).name ~= "air" then
minetest.chat_send_player(placer:get_player_name(), "No room for place the Arcade!")
return end
local dir = placer:get_look_dir()
local node = {name="computer:tetris_arcade", param1=0, param2 = minetest.dir_to_facedir(dir)}
minetest.set_node(pos, node)
itemstack:take_item()
end
}
minetest.register_node("computer:tetris_arcade", arcade)

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB