Compare commits
	
		
			13 Commits
		
	
	
		
			2021-02-25
			...
			2021-03-26
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					e7995ce981 | ||
| 
						 | 
					0fdc8557b3 | ||
| 
						 | 
					40cfabb38a | ||
| 
						 | 
					44542cb6a9 | ||
| 
						 | 
					eeec27f60b | ||
| 
						 | 
					bef62eef1e | ||
| 
						 | 
					18ac518389 | ||
| 
						 | 
					0e4687e236 | ||
| 
						 | 
					0e8a213185 | ||
| 
						 | 
					3b5b6adfda | ||
| 
						 | 
					9cc6f90778 | ||
| 
						 | 
					90da464add | ||
| 
						 | 
					cc0887cfb4 | 
@@ -1,21 +0,0 @@
 | 
			
		||||
unused_args = false
 | 
			
		||||
allow_defined_top = true
 | 
			
		||||
max_comment_line_length = 999
 | 
			
		||||
 | 
			
		||||
read_globals = {
 | 
			
		||||
	"DIR_DELIM",
 | 
			
		||||
	"minetest", "core",
 | 
			
		||||
	"unpack",
 | 
			
		||||
	"dump",
 | 
			
		||||
	table = { fields = { "copy", "getn" } },
 | 
			
		||||
	"vector", "nodeupdate",
 | 
			
		||||
	"VoxelManip", "VoxelArea",
 | 
			
		||||
	"PseudoRandom", "ItemStack",
 | 
			
		||||
	"default",
 | 
			
		||||
	"unifieddyes",
 | 
			
		||||
	"screwdriver",
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
globals = {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -1,38 +0,0 @@
 | 
			
		||||
version 0.2.3:
 | 
			
		||||
  - Added animated router front
 | 
			
		||||
  - Added all crafts for new items
 | 
			
		||||
 | 
			
		||||
version 0.2.2:
 | 
			
		||||
  - Added printer
 | 
			
		||||
  - Added server
 | 
			
		||||
 | 
			
		||||
version 0.2.1:
 | 
			
		||||
  - Added modern tower pc
 | 
			
		||||
  - Added wifi router
 | 
			
		||||
  - Added flatscreen LCD and keyboard
 | 
			
		||||
 | 
			
		||||
Version 0.2.0:
 | 
			
		||||
  - Added recipes.
 | 
			
		||||
  - Partly re-written.
 | 
			
		||||
  - Removed original baby tower (seemed out of place).
 | 
			
		||||
  - You can now turn devices on and off by right-clicking.
 | 
			
		||||
  - Mod is now on github.
 | 
			
		||||
 | 
			
		||||
Version 0.1.4:
 | 
			
		||||
  - Added Admiral 64 & 128 (Commodore 64 & 128 lookalikes)
 | 
			
		||||
 | 
			
		||||
Version 0.1.3:
 | 
			
		||||
  - Added SX Spectre (Sinclair ZX Spectrum lookalike)
 | 
			
		||||
  - Added Pony SlayStation 2 (Sony PlayStation lookalike)
 | 
			
		||||
  - Minor fixes to textures.
 | 
			
		||||
 | 
			
		||||
Version 0.1.2:
 | 
			
		||||
  - Nodes now use the node box as selection box.
 | 
			
		||||
  - Added Pony SlayStation (Sony PlayStation lookalike)
 | 
			
		||||
  - Added Pony Vanio (Sony VAIO lookalike...err...just a generic laptop)
 | 
			
		||||
 | 
			
		||||
Version 0.1.1:
 | 
			
		||||
  - Added SheFriend SOO (Amiga 500 lookalike)
 | 
			
		||||
 | 
			
		||||
Version 0.1.0:
 | 
			
		||||
  - Initial Version only a baby tower.
 | 
			
		||||
@@ -1,43 +0,0 @@
 | 
			
		||||
 | 
			
		||||
Decorative Computers Mod for Minetest
 | 
			
		||||
by Diego Martínez <kaeza@users.sf.net>
 | 
			
		||||
 | 
			
		||||
How to install:
 | 
			
		||||
Unzip the archive an place it in minetest-base-directory/mods/minetest/
 | 
			
		||||
if you have a windows client or a linux run-in-place client. If you have
 | 
			
		||||
a linux system-wide instalation place it in ~/.minetest/mods/minetest/.
 | 
			
		||||
If you want to install this mod only in one world create the folder
 | 
			
		||||
worldmods/ in your worlddirectory.
 | 
			
		||||
For further information or help see:
 | 
			
		||||
http://wiki.minetest.com/wiki/Installing_Mods
 | 
			
		||||
 | 
			
		||||
How to use the mod:
 | 
			
		||||
For now just use creative mode or the `/give' or `/giveme' chat commands
 | 
			
		||||
 to get the items.
 | 
			
		||||
 | 
			
		||||
These are the items currently defined by this mod:
 | 
			
		||||
 | 
			
		||||
computer:printer (printer scanner combo)
 | 
			
		||||
computer:server (rack server)
 | 
			
		||||
computer:tower (modern type)
 | 
			
		||||
computer:monitor (LCD with keyboard)
 | 
			
		||||
computer:router (wifi type)
 | 
			
		||||
computer:babytower
 | 
			
		||||
computer:shefriendSOO
 | 
			
		||||
computer:slaystation
 | 
			
		||||
computer:vanio
 | 
			
		||||
computer:spectre
 | 
			
		||||
computer:slaystation2
 | 
			
		||||
computer:admiral64
 | 
			
		||||
computer:admiral128
 | 
			
		||||
 | 
			
		||||
There's also a `computer:computer' alias to `computer:babytower'.
 | 
			
		||||
 | 
			
		||||
Thanks to all the people in the forums and the #minetest IRC channel for
 | 
			
		||||
 their support and suggestions; in no particular order:
 | 
			
		||||
  OldCoder, Josh, tonyka, VanessaE, davidpace, Jordach, and all the other
 | 
			
		||||
  sirs/madammes that I forgot to mention (sorry, please remind me if it
 | 
			
		||||
  was you ;) ). 
 | 
			
		||||
 | 
			
		||||
See also:
 | 
			
		||||
http://minetest.net/
 | 
			
		||||
@@ -1,29 +0,0 @@
 | 
			
		||||
 | 
			
		||||
TO-DO List:
 | 
			
		||||
 | 
			
		||||
- New Nodes:
 | 
			
		||||
 | 
			
		||||
  - Computers:
 | 
			
		||||
    - Mainframe (well me have a rackserver now)
 | 
			
		||||
    - My Computer :P
 | 
			
		||||
 | 
			
		||||
  - Peripherals:
 | 
			
		||||
    - Scanner ( well we have a printer/scanner combo now)
 | 
			
		||||
 | 
			
		||||
  - Consoles:
 | 
			
		||||
    - NES
 | 
			
		||||
    - SNES
 | 
			
		||||
    - DC
 | 
			
		||||
 | 
			
		||||
  - Handhelds
 | 
			
		||||
    - GB/C
 | 
			
		||||
    - GBA
 | 
			
		||||
    - Calculator
 | 
			
		||||
    - Smartphone
 | 
			
		||||
 | 
			
		||||
- Animated screens
 | 
			
		||||
 | 
			
		||||
- Implement some kind of games (take code from `tetris' mod?). [It would be
 | 
			
		||||
   nice if Minetest provided a "canvas" GUI widget :)].
 | 
			
		||||
 | 
			
		||||
- Get more suggestions :)
 | 
			
		||||
@@ -1,339 +0,0 @@
 | 
			
		||||
local S = minetest.get_translator("computer")
 | 
			
		||||
 | 
			
		||||
-- Amiga 500 lookalike
 | 
			
		||||
computer.register("computer:shefriendSOO", {
 | 
			
		||||
	description = S("SheFriendSOO"),
 | 
			
		||||
	tiles_off = { front=true },
 | 
			
		||||
	node_box = computer.pixelnodebox(32, {
 | 
			
		||||
		-- X   Y   Z   W   H   L
 | 
			
		||||
		{  0,  0, 17, 32, 32, 12 },   -- Monitor Screen
 | 
			
		||||
		{  3,  3, 29, 26, 26,  3 },   -- Monitor Tube
 | 
			
		||||
		{  0,  0,  0, 32,  4, 17 }   -- Keyboard
 | 
			
		||||
	})
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
-- Some generic laptop
 | 
			
		||||
minetest.register_node("computer:vanio", {
 | 
			
		||||
	drawtype = "mesh",
 | 
			
		||||
	mesh = "computer_laptop.obj",
 | 
			
		||||
	description = S("Pony Vanio"),
 | 
			
		||||
	inventory_image = "computer_laptop_inv.png",
 | 
			
		||||
	tiles = {"computer_laptop.png"},
 | 
			
		||||
	paramtype = "light",
 | 
			
		||||
	paramtype2 = "facedir",
 | 
			
		||||
	light_source = 4,
 | 
			
		||||
	groups = {snappy=3},
 | 
			
		||||
	walkable = false,
 | 
			
		||||
	selection_box = {
 | 
			
		||||
		type = "fixed",
 | 
			
		||||
		fixed = {-0.35, -0.5, -0.35, 0.35, 0.05, 0.35},
 | 
			
		||||
	},
 | 
			
		||||
	on_rightclick = function(pos, node, clicker, itemstack)
 | 
			
		||||
		node.name = "computer:vanio_off"
 | 
			
		||||
		minetest.set_node(pos, node)
 | 
			
		||||
		return itemstack
 | 
			
		||||
	end
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_node("computer:vanio_off", {
 | 
			
		||||
	drawtype = "mesh",
 | 
			
		||||
	mesh = "computer_laptop_closed.obj",
 | 
			
		||||
	tiles = {"computer_laptop.png"},
 | 
			
		||||
	paramtype = "light",
 | 
			
		||||
	paramtype2 = "facedir",
 | 
			
		||||
	groups = {snappy=3, not_in_creative_inventory=1},
 | 
			
		||||
	walkable = false,
 | 
			
		||||
	selection_box = {
 | 
			
		||||
		type = "fixed",
 | 
			
		||||
		fixed = {-0.35, -0.5, -0.35, 0.35, -0.4, 0.25},
 | 
			
		||||
	},
 | 
			
		||||
	drop = "computer:vanio",
 | 
			
		||||
	on_rightclick = function(pos, node, clicker, itemstack)
 | 
			
		||||
		node.name = "computer:vanio"
 | 
			
		||||
		minetest.set_node(pos, node)
 | 
			
		||||
		return itemstack
 | 
			
		||||
	end
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
-- Sony PlayStation lookalike
 | 
			
		||||
computer.register("computer:slaystation", {
 | 
			
		||||
	description = S("Pony SlayStation"),
 | 
			
		||||
	inventory_image = "computer_ps1_inv.png",
 | 
			
		||||
	tiles_off = { top=true },
 | 
			
		||||
	node_box = computer.pixelnodebox(32, {
 | 
			
		||||
		-- X   Y   Z   W   H   L
 | 
			
		||||
		{  0,  0, 11, 32,  6, 21 },   -- Console
 | 
			
		||||
		{  1,  0,  1,  4,  2,  9 },   -- Controller 1 L Grip
 | 
			
		||||
		{ 10,  0,  1,  4,  2,  9 },   -- Controller 1 R Grip
 | 
			
		||||
		{  5,  0,  4,  5,  2,  5 },   -- Controller 1 Center
 | 
			
		||||
		{ 18,  0,  1,  4,  2,  9 },   -- Controller 2 L Grip
 | 
			
		||||
		{ 27,  0,  1,  4,  2,  9 },   -- Controller 2 R Grip
 | 
			
		||||
		{ 22,  0,  4,  5,  2,  5 }   -- Controller 2 Center
 | 
			
		||||
	})
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
-- Sony PlayStation 2 lookalike
 | 
			
		||||
computer.register("computer:slaystation2", {
 | 
			
		||||
	description = S("Pony SlayStation 2"),
 | 
			
		||||
	inventory_image = "computer_ps2_inv.png",
 | 
			
		||||
	tiles_off = { front=true },
 | 
			
		||||
	node_box = computer.pixelnodebox(32, {
 | 
			
		||||
		-- X   Y   Z   W   H   L
 | 
			
		||||
		{  2,  2, 11, 28,  3, 19 },   -- Console (Upper part)
 | 
			
		||||
		{  2,  0, 11, 26,  2, 19 },   -- Console (Lower part)
 | 
			
		||||
		{  1,  0,  1,  4,  2,  9 },   -- Controller 1 L Grip
 | 
			
		||||
		{ 10,  0,  1,  4,  2,  9 },   -- Controller 1 R Grip
 | 
			
		||||
		{  5,  0,  1,  5,  2,  8 },   -- Controller 1 Center
 | 
			
		||||
		{ 18,  0,  1,  4,  2,  9 },   -- Controller 2 L Grip
 | 
			
		||||
		{ 27,  0,  1,  4,  2,  9 },   -- Controller 2 R Grip
 | 
			
		||||
		{ 22,  0,  1,  5,  2,  8 }   -- Controller 2 Center
 | 
			
		||||
	})
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
-- Sinclair ZX Spectrum lookalike
 | 
			
		||||
computer.register("computer:specter", {
 | 
			
		||||
	description = S("SX Specter"),
 | 
			
		||||
	inventory_image = "computer_specter_inv.png",
 | 
			
		||||
	tiles_off = { },
 | 
			
		||||
	node_box = computer.pixelnodebox(32, {
 | 
			
		||||
		-- X   Y   Z   W   H   L
 | 
			
		||||
		{  3,  0,  0, 26,  4, 17 },   -- Keyboard
 | 
			
		||||
		{ 18,  0, 18, 12,  6, 14 }   -- Tape Player
 | 
			
		||||
	})
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
-- Nintendo Wii lookalike
 | 
			
		||||
computer.register("computer:wee", {
 | 
			
		||||
	description = S("Nientiendo Wee"),
 | 
			
		||||
	inventory_image = "computer_wii_inv.png",
 | 
			
		||||
	tiles_off = { front=true },
 | 
			
		||||
	node_box = computer.pixelnodebox(32, {
 | 
			
		||||
		-- X   Y   Z   W   H   L
 | 
			
		||||
		{ 11,  0,  3, 10,  6, 26 },   -- Base
 | 
			
		||||
		{ 12,  6,  4,  8, 22, 24 }   -- Top
 | 
			
		||||
	})
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
-- Apple iPad lookalike
 | 
			
		||||
minetest.register_node("computer:piepad", {
 | 
			
		||||
	description = S("Snapple Piepad"),
 | 
			
		||||
	drawtype = "signlike",
 | 
			
		||||
	tiles = {"computer_piepad_inv.png"},
 | 
			
		||||
	inventory_image = "computer_piepad_inv.png",
 | 
			
		||||
	wield_image = "computer_piepad_inv.png",
 | 
			
		||||
	paramtype = "light",
 | 
			
		||||
	paramtype2 = "wallmounted",
 | 
			
		||||
	light_source = 8,
 | 
			
		||||
	walkable = false,
 | 
			
		||||
	groups = {oddly_breakable_by_hand=2},
 | 
			
		||||
	selection_box = {type = "wallmounted"},
 | 
			
		||||
	sounds = default.node_sound_wood_defaults()
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
-- Commodore 64 lookalike
 | 
			
		||||
computer.register("computer:admiral64", {
 | 
			
		||||
	description = S("Admiral64"),
 | 
			
		||||
	inventory_image = "computer_ad64_inv.png",
 | 
			
		||||
	tiles_off = { },
 | 
			
		||||
	node_box = computer.pixelnodebox(32, {
 | 
			
		||||
		-- X   Y   Z   W   H   L
 | 
			
		||||
		{  0,  0,  0, 32,  4, 18 }   -- Keyboard
 | 
			
		||||
	})
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
-- Commodore 128 lookalike
 | 
			
		||||
computer.register("computer:admiral128", {
 | 
			
		||||
	description = S("Admiral128"),
 | 
			
		||||
	inventory_image = "computer_ad128_inv.png",
 | 
			
		||||
	tiles_off = { },
 | 
			
		||||
	node_box = computer.pixelnodebox(32, {
 | 
			
		||||
		-- X   Y   Z   W   H   L
 | 
			
		||||
		{  0,  0,  0, 32,  4, 27 }   -- Keyboard
 | 
			
		||||
	})
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
-- XBox lookalike
 | 
			
		||||
computer.register("computer:hueg_box", {
 | 
			
		||||
	description = S("HUEG Box"),
 | 
			
		||||
	tiles_off = { },
 | 
			
		||||
	node_box = computer.pixelnodebox(16, {
 | 
			
		||||
		-- X   Y   Z   W   H   L
 | 
			
		||||
		{  0,  0,  7, 16,  6, 9 },   -- Console
 | 
			
		||||
		{  2,  0,  1, 11,  3, 6 },   -- Controller
 | 
			
		||||
		{  2,  0,  0,  2,  3, 1 },
 | 
			
		||||
		{ 11,  0,  0,  2,  3, 1 },
 | 
			
		||||
	})
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
-- Generic Flat Screen LCD (16x9) with keyboard
 | 
			
		||||
local mo_sbox = {
 | 
			
		||||
	type = "fixed",
 | 
			
		||||
	fixed = { -0.5, -0.5, -0.43, 0.5, 0.2, 0.25 }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
minetest.register_node("computer:monitor", {
 | 
			
		||||
	description = S("Monitor and keyboard"),
 | 
			
		||||
	inventory_image = "computer_monitor_inv.png",
 | 
			
		||||
	drawtype = "mesh",
 | 
			
		||||
	mesh = "computer_monitor.obj",
 | 
			
		||||
	tiles = {"computer_black.png", "monitor_plastic.png", "computer_black.png", "monitor_plastic.png"},
 | 
			
		||||
	paramtype = "light",
 | 
			
		||||
	paramtype2 = "facedir",
 | 
			
		||||
	walkable = false,
 | 
			
		||||
	groups = {snappy=3},
 | 
			
		||||
	selection_box = mo_sbox,
 | 
			
		||||
	on_rightclick = function(pos, node, clicker, itemstack)
 | 
			
		||||
		node.name = "computer:monitor_on"
 | 
			
		||||
		minetest.set_node(pos, node)
 | 
			
		||||
		return itemstack
 | 
			
		||||
	end
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_node("computer:monitor_on", {
 | 
			
		||||
	drawtype = "mesh",
 | 
			
		||||
	mesh = "computer_monitor.obj",
 | 
			
		||||
	tiles = {"monitor_display.png^[transformFX", "monitor_plastic.png", "computer_black.png", "monitor_plastic.png"},
 | 
			
		||||
	paramtype = "light",
 | 
			
		||||
	paramtype2 = "facedir",
 | 
			
		||||
	light_source = 9,
 | 
			
		||||
	walkable = false,
 | 
			
		||||
	groups = {snappy=3, not_in_creative_inventory=1},
 | 
			
		||||
	selection_box = mo_sbox,
 | 
			
		||||
	drop = "computer:monitor",
 | 
			
		||||
	on_rightclick = function(pos, node, clicker, itemstack)
 | 
			
		||||
		node.name = "computer:monitor"
 | 
			
		||||
		minetest.set_node(pos, node)
 | 
			
		||||
		return itemstack
 | 
			
		||||
	end
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_alias("computer:monitor_bios", "computer:monitor")
 | 
			
		||||
minetest.register_alias("computer:monitor_loading", "computer:monitor")
 | 
			
		||||
minetest.register_alias("computer:monitor_login", "computer:monitor")
 | 
			
		||||
minetest.register_alias("computer:monitor_desktop", "computer:monitor")
 | 
			
		||||
 | 
			
		||||
--WIFI Router (linksys look-a-like)
 | 
			
		||||
minetest.register_node("computer:router", {
 | 
			
		||||
	description = S("WIFI Router"),
 | 
			
		||||
	inventory_image = "computer_router_inv.png",
 | 
			
		||||
	tiles = {
 | 
			
		||||
		"computer_router_t.png",
 | 
			
		||||
		"computer_router_bt.png",
 | 
			
		||||
		"computer_router_l.png",
 | 
			
		||||
		"computer_router_r.png",
 | 
			
		||||
		"computer_router_b.png",
 | 
			
		||||
		{
 | 
			
		||||
			name = "computer_router_f_animated.png",
 | 
			
		||||
			animation = {type="vertical_frames", aspect_w=32, aspect_h=32, length=1.0}
 | 
			
		||||
		},
 | 
			
		||||
	}, --"computer_router_f.png"},
 | 
			
		||||
	paramtype = "light",
 | 
			
		||||
	paramtype2 = "facedir",
 | 
			
		||||
	walkable = false,
 | 
			
		||||
	groups = {snappy=3},
 | 
			
		||||
	sound = default.node_sound_wood_defaults(),
 | 
			
		||||
	drawtype = "nodebox",
 | 
			
		||||
	node_box = {
 | 
			
		||||
		type = "fixed",
 | 
			
		||||
		fixed = {
 | 
			
		||||
			{-0.25, -0.5, -0.0625, 0.25, -0.375, 0.3125},
 | 
			
		||||
			{-0.1875, -0.4375, 0.3125, -0.125, -0.1875, 0.375},
 | 
			
		||||
			{0.125, -0.4375, 0.3125, 0.1875, -0.1875, 0.375},
 | 
			
		||||
			{-0.0625, -0.4375, 0.3125, 0.0625, -0.25, 0.375}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
local pct_cbox = {
 | 
			
		||||
	type = "fixed",
 | 
			
		||||
	fixed = { -0.1875, -0.5, -0.36, 0.1875, 0.34, 0.46 }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
--Modern PC Tower
 | 
			
		||||
minetest.register_node("computer:tower", {
 | 
			
		||||
	description = S("Computer Tower"),
 | 
			
		||||
	inventory_image = "computer_tower_inv.png",
 | 
			
		||||
	drawtype = "mesh",
 | 
			
		||||
	mesh = "computer_tower.obj",
 | 
			
		||||
	tiles = {"computer_tower.png"},
 | 
			
		||||
	paramtype = "light",
 | 
			
		||||
	paramtype2 = "facedir",
 | 
			
		||||
	groups = {snappy=3},
 | 
			
		||||
	sound = default.node_sound_wood_defaults(),
 | 
			
		||||
	selection_box = pct_cbox,
 | 
			
		||||
	collision_box = pct_cbox
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_alias("computer:tower_on", "computer:tower")
 | 
			
		||||
 | 
			
		||||
--Rack Server
 | 
			
		||||
minetest.register_node("computer:server", {
 | 
			
		||||
	drawtype = "nodebox",
 | 
			
		||||
	description = S("Rack Server"),
 | 
			
		||||
	tiles = {
 | 
			
		||||
		'computer_server_t.png',
 | 
			
		||||
		'computer_server_bt.png',
 | 
			
		||||
		'computer_server_l.png',
 | 
			
		||||
		'computer_server_r.png',
 | 
			
		||||
		'computer_server_bt.png',
 | 
			
		||||
		'computer_server_f_off.png'
 | 
			
		||||
	},
 | 
			
		||||
	inventory_image = "computer_server_inv.png",
 | 
			
		||||
	paramtype = "light",
 | 
			
		||||
	paramtype2 = "facedir",
 | 
			
		||||
	groups = {snappy=3},
 | 
			
		||||
	selection_box = {
 | 
			
		||||
		type = "fixed",
 | 
			
		||||
		fixed = {-0.5, -0.5, -0.25, 0.5, 1.125, 0.4375}
 | 
			
		||||
	},
 | 
			
		||||
	node_box = {
 | 
			
		||||
		type = "fixed",
 | 
			
		||||
		fixed = {-0.5, -0.5, -0.25, 0.5, 1.125, 0.4375}
 | 
			
		||||
	},
 | 
			
		||||
	sounds = default.node_sound_wood_defaults(),
 | 
			
		||||
	on_rightclick = function(pos, node, clicker, itemstack)
 | 
			
		||||
		node.name = "computer:server_on"
 | 
			
		||||
		minetest.set_node(pos, node)
 | 
			
		||||
		return itemstack
 | 
			
		||||
	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(),
 | 
			
		||||
					S("Not enough vertical space to place a server!" ))
 | 
			
		||||
			return itemstack
 | 
			
		||||
		end
 | 
			
		||||
		return minetest.item_place(itemstack, placer, pointed_thing)
 | 
			
		||||
	end
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_node("computer:server_on", {
 | 
			
		||||
	drawtype = "nodebox",
 | 
			
		||||
	tiles = {
 | 
			
		||||
		'computer_server_t.png',
 | 
			
		||||
		'computer_server_bt.png',
 | 
			
		||||
		'computer_server_l.png',
 | 
			
		||||
		'computer_server_r.png',
 | 
			
		||||
		'computer_server_bt.png',
 | 
			
		||||
		'computer_server_f_on.png',
 | 
			
		||||
	},
 | 
			
		||||
	inventory_image = "computer_server_inv.png",
 | 
			
		||||
	paramtype = "light",
 | 
			
		||||
	paramtype2 = "facedir",
 | 
			
		||||
	groups = {snappy=3,not_in_creative_inventory=1},
 | 
			
		||||
	selection_box = {
 | 
			
		||||
		type = "fixed",
 | 
			
		||||
		fixed = {-0.5, -0.5, -0.25, 0.5, 1.125, 0.4375}
 | 
			
		||||
	},
 | 
			
		||||
	node_box = {
 | 
			
		||||
		type = "fixed",
 | 
			
		||||
		fixed = {-0.5, -0.5, -0.25, 0.5, 1.125, 0.4375}
 | 
			
		||||
	},
 | 
			
		||||
	sounds = default.node_sound_wood_defaults(),
 | 
			
		||||
	drop = 'computer:server',
 | 
			
		||||
	on_rightclick = function(pos, node, clicker, itemstack)
 | 
			
		||||
		node.name = "computer:server"
 | 
			
		||||
		minetest.set_node(pos, node)
 | 
			
		||||
		return itemstack
 | 
			
		||||
	end
 | 
			
		||||
})
 | 
			
		||||
@@ -1,98 +0,0 @@
 | 
			
		||||
computer = {}
 | 
			
		||||
 | 
			
		||||
computer.register = function (name, def)
 | 
			
		||||
	if (name:sub(1, 1) == ":") then name = name:sub(2) end
 | 
			
		||||
	local modname, basename = name:match("^([^:]+):(.*)")
 | 
			
		||||
	local TEXPFX = modname.."_"..basename.."_"
 | 
			
		||||
	local ONSTATE = modname..":"..basename
 | 
			
		||||
	local OFFSTATE = modname..":"..basename.."_off"
 | 
			
		||||
	local cdef = table.copy(def)
 | 
			
		||||
	minetest.register_node(ONSTATE, {
 | 
			
		||||
		drawtype = "nodebox",
 | 
			
		||||
		paramtype = "light",
 | 
			
		||||
		paramtype2 = "facedir",
 | 
			
		||||
		description = cdef.description,
 | 
			
		||||
		inventory_image = cdef.inventory_image,
 | 
			
		||||
		groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2},
 | 
			
		||||
		tiles = {
 | 
			
		||||
			TEXPFX.."tp.png",
 | 
			
		||||
			TEXPFX.."bt.png",
 | 
			
		||||
			TEXPFX.."rt.png",
 | 
			
		||||
			TEXPFX.."lt.png",
 | 
			
		||||
			TEXPFX.."bk.png",
 | 
			
		||||
			TEXPFX.."ft.png"
 | 
			
		||||
		},
 | 
			
		||||
		node_box = cdef.node_box,
 | 
			
		||||
		selection_box = cdef.node_box,
 | 
			
		||||
		on_rightclick = function (pos, node, clicker, itemstack)
 | 
			
		||||
			if cdef.on_turn_off and cdef.on_turn_off(pos, node, clicker, itemstack) then
 | 
			
		||||
				return itemstack
 | 
			
		||||
			end
 | 
			
		||||
			node.name = OFFSTATE
 | 
			
		||||
			minetest.set_node(pos, node)
 | 
			
		||||
			return itemstack
 | 
			
		||||
		end
 | 
			
		||||
	})
 | 
			
		||||
	minetest.register_node(OFFSTATE, {
 | 
			
		||||
		drawtype = "nodebox",
 | 
			
		||||
		paramtype = "light",
 | 
			
		||||
		paramtype2 = "facedir",
 | 
			
		||||
		groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2, not_in_creative_inventory=1},
 | 
			
		||||
		tiles = {
 | 
			
		||||
			(TEXPFX.."tp"..(cdef.tiles_off.top    and "_off" or "")..".png"),
 | 
			
		||||
			(TEXPFX.."bt"..(cdef.tiles_off.bottom and "_off" or "")..".png"),
 | 
			
		||||
			(TEXPFX.."rt"..(cdef.tiles_off.right  and "_off" or "")..".png"),
 | 
			
		||||
			(TEXPFX.."lt"..(cdef.tiles_off.left   and "_off" or "")..".png"),
 | 
			
		||||
			(TEXPFX.."bk"..(cdef.tiles_off.back   and "_off" or "")..".png"),
 | 
			
		||||
			(TEXPFX.."ft"..(cdef.tiles_off.front  and "_off" or "")..".png")
 | 
			
		||||
		},
 | 
			
		||||
		node_box = cdef.node_box_off or cdef.node_box,
 | 
			
		||||
		selection_box = cdef.node_box_off or cdef.node_box,
 | 
			
		||||
		on_rightclick = function (pos, node, clicker, itemstack)
 | 
			
		||||
			if cdef.on_turn_on and cdef.on_turn_on(pos, node, clicker, itemstack) then
 | 
			
		||||
				return itemstack
 | 
			
		||||
			end
 | 
			
		||||
			node.name = ONSTATE
 | 
			
		||||
			minetest.set_node(pos, node)
 | 
			
		||||
			return itemstack
 | 
			
		||||
		end,
 | 
			
		||||
		drop = ONSTATE
 | 
			
		||||
	})
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
computer.register_handheld = function (name, def)
 | 
			
		||||
	if (name:sub(1, 1) == ":") then name = name:sub(2) end
 | 
			
		||||
	local modname, basename = name:match("^([^:]+):(.*)")
 | 
			
		||||
	local TEXPFX = modname.."_"..basename.."_inv"
 | 
			
		||||
	local ONSTATE = modname..":"..basename
 | 
			
		||||
	minetest.register_craftitem(ONSTATE, {
 | 
			
		||||
		description = def.description,
 | 
			
		||||
		inventory_image = TEXPFX..".png",
 | 
			
		||||
		wield_image = TEXPFX..".png"
 | 
			
		||||
	})
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
computer.pixelnodebox = function (size, boxes)
 | 
			
		||||
	local fixed = { }
 | 
			
		||||
	for _, box in ipairs(boxes) do
 | 
			
		||||
		local x, y, z, w, h, l = unpack(box)
 | 
			
		||||
		fixed[#fixed + 1] = {
 | 
			
		||||
			(x / size) - 0.5,
 | 
			
		||||
			(y / size) - 0.5,
 | 
			
		||||
			(z / size) - 0.5,
 | 
			
		||||
			((x + w) / size) - 0.5,
 | 
			
		||||
			((y + h) / size) - 0.5,
 | 
			
		||||
			((z + l) / size) - 0.5
 | 
			
		||||
		}
 | 
			
		||||
	end
 | 
			
		||||
	return {
 | 
			
		||||
		type = "fixed",
 | 
			
		||||
		fixed = fixed
 | 
			
		||||
	}
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
local MODPATH = minetest.get_modpath("computer")
 | 
			
		||||
dofile(MODPATH.."/computers.lua")
 | 
			
		||||
dofile(MODPATH.."/printers.lua")
 | 
			
		||||
dofile(MODPATH.."/recipes.lua")
 | 
			
		||||
dofile(MODPATH.."/tetris.lua")
 | 
			
		||||
@@ -1,35 +0,0 @@
 | 
			
		||||
# textdomain: computer
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
### computers.lua ###
 | 
			
		||||
 | 
			
		||||
Admiral128=Admiral 128
 | 
			
		||||
Admiral64=Admiral 64
 | 
			
		||||
Computer Tower=Computerturm
 | 
			
		||||
HUEG Box=YBOX
 | 
			
		||||
Monitor and keyboard=Bildschirm und Tastatur
 | 
			
		||||
Nientiendo Wee=Tinnendo iiW
 | 
			
		||||
Not enough vertical space to place a server!=Es gibt nicht genug vertikalen Platz, um einen Server zu platzieren!
 | 
			
		||||
Pony SlayStation=Pony Slaystation
 | 
			
		||||
Pony SlayStation 2=Pony Slaystation 2
 | 
			
		||||
Pony Vanio=Pony Oiva
 | 
			
		||||
Rack Server=Serverschrank
 | 
			
		||||
SX Specter=Z Inspektor
 | 
			
		||||
SheFriendSOO=Freundin S00
 | 
			
		||||
Snapple Piepad=Apfel-Ei-Pat
 | 
			
		||||
WIFI Router=WiFi-Router
 | 
			
		||||
 | 
			
		||||
### printers.lua ###
 | 
			
		||||
 | 
			
		||||
3D Printer ("bedflinger")=3D Drucker ("Bettschubser")
 | 
			
		||||
Printer-Scanner Combo=Multifunktionsdrucker
 | 
			
		||||
 | 
			
		||||
### tetris.lua ###
 | 
			
		||||
 | 
			
		||||
L=L
 | 
			
		||||
New Game=Neues Spiel
 | 
			
		||||
Next...=Nächster…
 | 
			
		||||
No room for place the Arcade!=Kein Platz, um den Arkadeautomaten zu platzieren!
 | 
			
		||||
R=R
 | 
			
		||||
Score: =Punktzahl: 
 | 
			
		||||
Tetris Arcade=Tetris-Arkadeautomat
 | 
			
		||||
@@ -1,35 +0,0 @@
 | 
			
		||||
# textdomain: computer
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
### computers.lua ###
 | 
			
		||||
 | 
			
		||||
Admiral128=
 | 
			
		||||
Admiral64=
 | 
			
		||||
Computer Tower=Torre de ordenador
 | 
			
		||||
HUEG Box=
 | 
			
		||||
Monitor and keyboard=Monitor y teclado
 | 
			
		||||
Nientiendo Wee=
 | 
			
		||||
Not enough vertical space to place a server!=¡No hay suficiente espacio para colocar un servidor!
 | 
			
		||||
Pony SlayStation=
 | 
			
		||||
Pony SlayStation 2=
 | 
			
		||||
Pony Vanio=
 | 
			
		||||
Rack Server=Servidor en rack
 | 
			
		||||
SX Specter=
 | 
			
		||||
SheFriendSOO=
 | 
			
		||||
Snapple Piepad=
 | 
			
		||||
WIFI Router=Enrutador WIFI
 | 
			
		||||
 | 
			
		||||
### printers.lua ###
 | 
			
		||||
 | 
			
		||||
3D Printer ("bedflinger")=
 | 
			
		||||
Printer-Scanner Combo=Impresora y escáner combinados
 | 
			
		||||
 | 
			
		||||
### tetris.lua ###
 | 
			
		||||
 | 
			
		||||
L=
 | 
			
		||||
New Game=Juego Nuevo
 | 
			
		||||
Next...=
 | 
			
		||||
No room for place the Arcade!=¡No hay lugar para colocar el arcade!
 | 
			
		||||
R=
 | 
			
		||||
Score: =
 | 
			
		||||
Tetris Arcade=Arcade Tetris
 | 
			
		||||
@@ -1,35 +0,0 @@
 | 
			
		||||
# textdomain: computer
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
### computers.lua ###
 | 
			
		||||
 | 
			
		||||
Admiral128=
 | 
			
		||||
Admiral64=
 | 
			
		||||
Computer Tower=Ordinateur (tour)
 | 
			
		||||
HUEG Box=
 | 
			
		||||
Monitor and keyboard=Écran et clavier
 | 
			
		||||
Nientiendo Wee=
 | 
			
		||||
Not enough vertical space to place a server!=Pas assez d'espace vertical pour placer un serveur !
 | 
			
		||||
Pony SlayStation=
 | 
			
		||||
Pony SlayStation 2=
 | 
			
		||||
Pony Vanio=
 | 
			
		||||
Rack Server=Serveur en rack
 | 
			
		||||
SX Specter=
 | 
			
		||||
SheFriendSOO=
 | 
			
		||||
Snapple Piepad=
 | 
			
		||||
WIFI Router=Routeur WiFi
 | 
			
		||||
 | 
			
		||||
### printers.lua ###
 | 
			
		||||
 | 
			
		||||
3D Printer ("bedflinger")=
 | 
			
		||||
Printer-Scanner Combo=Imprimante multi-fonction
 | 
			
		||||
 | 
			
		||||
### tetris.lua ###
 | 
			
		||||
 | 
			
		||||
L=G
 | 
			
		||||
New Game=Nouveau Jeu
 | 
			
		||||
Next...=Suivant…
 | 
			
		||||
No room for place the Arcade!=Pas assez de place pour placer la borne d'arcade !
 | 
			
		||||
R=D
 | 
			
		||||
Score: =Score : 
 | 
			
		||||
Tetris Arcade=Borne Tetris
 | 
			
		||||
@@ -1,35 +0,0 @@
 | 
			
		||||
# textdomain: computer
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
### computers.lua ###
 | 
			
		||||
 | 
			
		||||
Admiral128=
 | 
			
		||||
Admiral64=
 | 
			
		||||
Computer Tower=
 | 
			
		||||
HUEG Box=
 | 
			
		||||
Monitor and keyboard=
 | 
			
		||||
Nientiendo Wee=
 | 
			
		||||
Not enough vertical space to place a server!=Non c'è abbastanza spazio verticale per mettere un frigorifero!
 | 
			
		||||
Pony SlayStation=
 | 
			
		||||
Pony SlayStation 2=
 | 
			
		||||
Pony Vanio=
 | 
			
		||||
Rack Server=
 | 
			
		||||
SX Specter=
 | 
			
		||||
SheFriendSOO=
 | 
			
		||||
Snapple Piepad=
 | 
			
		||||
WIFI Router=
 | 
			
		||||
 | 
			
		||||
### printers.lua ###
 | 
			
		||||
 | 
			
		||||
3D Printer ("bedflinger")=
 | 
			
		||||
Printer-Scanner Combo=
 | 
			
		||||
 | 
			
		||||
### tetris.lua ###
 | 
			
		||||
 | 
			
		||||
L=
 | 
			
		||||
New Game=
 | 
			
		||||
Next...=
 | 
			
		||||
No room for place the Arcade!=
 | 
			
		||||
R=
 | 
			
		||||
Score: =
 | 
			
		||||
Tetris Arcade=
 | 
			
		||||
@@ -1,35 +0,0 @@
 | 
			
		||||
# textdomain: computer
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
### computers.lua ###
 | 
			
		||||
 | 
			
		||||
Admiral128=
 | 
			
		||||
Admiral64=
 | 
			
		||||
Computer Tower=Sistem Unit
 | 
			
		||||
HUEG Box=
 | 
			
		||||
Monitor and keyboard=Monitor dan Papan Kekunci
 | 
			
		||||
Nientiendo Wee=
 | 
			
		||||
Not enough vertical space to place a server!=Tidak cukup ruang menegak untuk letak rak pelayan!
 | 
			
		||||
Pony SlayStation=
 | 
			
		||||
Pony SlayStation 2=
 | 
			
		||||
Pony Vanio=
 | 
			
		||||
Rack Server=Rak Pelayan
 | 
			
		||||
SX Specter=
 | 
			
		||||
SheFriendSOO=
 | 
			
		||||
Snapple Piepad=
 | 
			
		||||
WIFI Router=Penghala WIFI
 | 
			
		||||
 | 
			
		||||
### printers.lua ###
 | 
			
		||||
 | 
			
		||||
3D Printer ("bedflinger")=
 | 
			
		||||
Printer-Scanner Combo=Pencetak Semua Dalam Satu
 | 
			
		||||
 | 
			
		||||
### tetris.lua ###
 | 
			
		||||
 | 
			
		||||
L=
 | 
			
		||||
New Game=Main Baru
 | 
			
		||||
Next...=Seterusnya...
 | 
			
		||||
No room for place the Arcade!=Tiada ruang untuk letak Arked!
 | 
			
		||||
R=
 | 
			
		||||
Score: =Markah:
 | 
			
		||||
Tetris Arcade=Arked Tetris
 | 
			
		||||
@@ -1,35 +0,0 @@
 | 
			
		||||
# textdomain: computer
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
### computers.lua ###
 | 
			
		||||
 | 
			
		||||
Admiral128=
 | 
			
		||||
Admiral64=
 | 
			
		||||
Computer Tower=Gabinete do Computador
 | 
			
		||||
HUEG Box=
 | 
			
		||||
Monitor and keyboard=Tela e teclado
 | 
			
		||||
Nientiendo Wee=
 | 
			
		||||
Not enough vertical space to place a server!=Sem espaço vertical suficiente para colocar um servidor.
 | 
			
		||||
Pony SlayStation=
 | 
			
		||||
Pony SlayStation 2=
 | 
			
		||||
Pony Vanio=
 | 
			
		||||
Rack Server=Rack para Servidor
 | 
			
		||||
SX Specter=
 | 
			
		||||
SheFriendSOO=
 | 
			
		||||
Snapple Piepad=
 | 
			
		||||
WIFI Router=Roteador WIFI
 | 
			
		||||
 | 
			
		||||
### printers.lua ###
 | 
			
		||||
 | 
			
		||||
3D Printer ("bedflinger")=
 | 
			
		||||
Printer-Scanner Combo=Tudo em Um Impressora-Scaner
 | 
			
		||||
 | 
			
		||||
### tetris.lua ###
 | 
			
		||||
 | 
			
		||||
L=
 | 
			
		||||
New Game=Novo Jogo
 | 
			
		||||
Next...=
 | 
			
		||||
No room for place the Arcade!=Sem espaço para colocar o Fliperama!
 | 
			
		||||
R=
 | 
			
		||||
Score: =
 | 
			
		||||
Tetris Arcade=Fliperama Tetris
 | 
			
		||||
@@ -1,35 +0,0 @@
 | 
			
		||||
# textdomain: computer
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
### computers.lua ###
 | 
			
		||||
 | 
			
		||||
Admiral128=
 | 
			
		||||
Admiral64=
 | 
			
		||||
Computer Tower=Gabinete do Computador
 | 
			
		||||
HUEG Box=
 | 
			
		||||
Monitor and keyboard=Tela e teclado
 | 
			
		||||
Nientiendo Wee=
 | 
			
		||||
Not enough vertical space to place a server!=Sem espaço vertical suficiente para colocar um servidor.
 | 
			
		||||
Pony SlayStation=
 | 
			
		||||
Pony SlayStation 2=
 | 
			
		||||
Pony Vanio=
 | 
			
		||||
Rack Server=Rack para Servidor
 | 
			
		||||
SX Specter=
 | 
			
		||||
SheFriendSOO=
 | 
			
		||||
Snapple Piepad=
 | 
			
		||||
WIFI Router=Roteador WIFI
 | 
			
		||||
 | 
			
		||||
### printers.lua ###
 | 
			
		||||
 | 
			
		||||
3D Printer ("bedflinger")=
 | 
			
		||||
Printer-Scanner Combo=Tudo em Um Impressora-Scaner
 | 
			
		||||
 | 
			
		||||
### tetris.lua ###
 | 
			
		||||
 | 
			
		||||
L=
 | 
			
		||||
New Game=Novo Jogo
 | 
			
		||||
Next...=
 | 
			
		||||
No room for place the Arcade!=Sem espaço para colocar o Fliperama!
 | 
			
		||||
R=
 | 
			
		||||
Score: =
 | 
			
		||||
Tetris Arcade=Fliperama Tetris
 | 
			
		||||
@@ -1,35 +0,0 @@
 | 
			
		||||
# textdomain: computer
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
### computers.lua ###
 | 
			
		||||
 | 
			
		||||
Admiral128=
 | 
			
		||||
Admiral64=
 | 
			
		||||
Computer Tower=Системный блок
 | 
			
		||||
HUEG Box=
 | 
			
		||||
Monitor and keyboard=Монитор и клавиатура
 | 
			
		||||
Nientiendo Wee=
 | 
			
		||||
Not enough vertical space to place a server!=Недостаточно вертикального пространства для размещения сервера!
 | 
			
		||||
Pony SlayStation=
 | 
			
		||||
Pony SlayStation 2=
 | 
			
		||||
Pony Vanio=
 | 
			
		||||
Rack Server=Стоечный сервер
 | 
			
		||||
SX Specter=
 | 
			
		||||
SheFriendSOO=
 | 
			
		||||
Snapple Piepad=
 | 
			
		||||
WIFI Router=WIFI-роутер
 | 
			
		||||
 | 
			
		||||
### printers.lua ###
 | 
			
		||||
 | 
			
		||||
3D Printer ("bedflinger")=
 | 
			
		||||
Printer-Scanner Combo=МФУ
 | 
			
		||||
 | 
			
		||||
### tetris.lua ###
 | 
			
		||||
 | 
			
		||||
L=
 | 
			
		||||
New Game=Новая игра
 | 
			
		||||
Next...=Далее...
 | 
			
		||||
No room for place the Arcade!=Недостаточно места для размещения игрового автомата!
 | 
			
		||||
R=
 | 
			
		||||
Score: =Счёт: 
 | 
			
		||||
Tetris Arcade=Игровой автомат Тетрис
 | 
			
		||||
@@ -1,35 +0,0 @@
 | 
			
		||||
# textdomain: computer
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
### computers.lua ###
 | 
			
		||||
 | 
			
		||||
Admiral128=
 | 
			
		||||
Admiral64=
 | 
			
		||||
Computer Tower=计算机箱
 | 
			
		||||
HUEG Box=
 | 
			
		||||
Monitor and keyboard=显示器和键盘
 | 
			
		||||
Nientiendo Wee=
 | 
			
		||||
Not enough vertical space to place a server!=高度不足,无法放置服务器!
 | 
			
		||||
Pony SlayStation=
 | 
			
		||||
Pony SlayStation 2=
 | 
			
		||||
Pony Vanio=
 | 
			
		||||
Rack Server=机架式服务器
 | 
			
		||||
SX Specter=
 | 
			
		||||
SheFriendSOO=
 | 
			
		||||
Snapple Piepad=
 | 
			
		||||
WIFI Router=无线路由器
 | 
			
		||||
 | 
			
		||||
### printers.lua ###
 | 
			
		||||
 | 
			
		||||
3D Printer ("bedflinger")=
 | 
			
		||||
Printer-Scanner Combo=打印扫描一体机
 | 
			
		||||
 | 
			
		||||
### tetris.lua ###
 | 
			
		||||
 | 
			
		||||
L=
 | 
			
		||||
New Game=新游戏
 | 
			
		||||
Next...=下一个。。。
 | 
			
		||||
No room for place the Arcade!=没有地方放游戏机!
 | 
			
		||||
R=
 | 
			
		||||
Score: =分数:
 | 
			
		||||
Tetris Arcade=俄罗斯方块游戏机
 | 
			
		||||
@@ -1,35 +0,0 @@
 | 
			
		||||
# textdomain: computer
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
### computers.lua ###
 | 
			
		||||
 | 
			
		||||
Admiral128=
 | 
			
		||||
Admiral64=
 | 
			
		||||
Computer Tower=
 | 
			
		||||
HUEG Box=
 | 
			
		||||
Monitor and keyboard=
 | 
			
		||||
Nientiendo Wee=
 | 
			
		||||
Not enough vertical space to place a server!=
 | 
			
		||||
Pony SlayStation=
 | 
			
		||||
Pony SlayStation 2=
 | 
			
		||||
Pony Vanio=
 | 
			
		||||
Rack Server=
 | 
			
		||||
SX Specter=
 | 
			
		||||
SheFriendSOO=
 | 
			
		||||
Snapple Piepad=
 | 
			
		||||
WIFI Router=
 | 
			
		||||
 | 
			
		||||
### printers.lua ###
 | 
			
		||||
 | 
			
		||||
3D Printer ("bedflinger")=
 | 
			
		||||
Printer-Scanner Combo=
 | 
			
		||||
 | 
			
		||||
### tetris.lua ###
 | 
			
		||||
 | 
			
		||||
L=
 | 
			
		||||
New Game=
 | 
			
		||||
Next...=
 | 
			
		||||
No room for place the Arcade!=
 | 
			
		||||
R=
 | 
			
		||||
Score: =
 | 
			
		||||
Tetris Arcade=
 | 
			
		||||
@@ -1,3 +0,0 @@
 | 
			
		||||
name = computer
 | 
			
		||||
depends = default, basic_materials, unifieddyes
 | 
			
		||||
optional_depends = screwdriver
 | 
			
		||||
@@ -1,119 +0,0 @@
 | 
			
		||||
v -0.34 0.023 0.335
 | 
			
		||||
v -0.34 0.013 0.362
 | 
			
		||||
v 0.332 0.023 0.335
 | 
			
		||||
v 0.332 -0.433 0.183
 | 
			
		||||
v 0.332 0.013 0.363
 | 
			
		||||
v -0.34 -0.5 -0.313
 | 
			
		||||
v -0.34 -0.433 -0.313
 | 
			
		||||
v 0.332 -0.5 -0.313
 | 
			
		||||
v -0.34 -0.5 0.183
 | 
			
		||||
v 0.332 -0.5 0.183
 | 
			
		||||
v -0.34 -0.433 0.183
 | 
			
		||||
v -0.34 -0.433 0.21
 | 
			
		||||
v 0.332 -0.433 0.21
 | 
			
		||||
v 0.332 -0.5 0.21
 | 
			
		||||
v -0.34 -0.5 0.21
 | 
			
		||||
v -0.32 -0.418 0.195
 | 
			
		||||
v -0.32 -0.001 0.334
 | 
			
		||||
v 0.312 -0.418 0.195
 | 
			
		||||
v -0.34 -0.433 -0.159
 | 
			
		||||
v 0.332 -0.433 -0.313
 | 
			
		||||
v 0.312 -0.001 0.334
 | 
			
		||||
v 0.332 -0.433 -0.159
 | 
			
		||||
vt 0.683 0.005
 | 
			
		||||
vt 0.683 0.021
 | 
			
		||||
vt 0.31 0.005
 | 
			
		||||
vt 0.044 0.009
 | 
			
		||||
vt 0.31 0.021
 | 
			
		||||
vt 0.753 0.12
 | 
			
		||||
vt 0.81 0.12
 | 
			
		||||
vt 0.753 0.598
 | 
			
		||||
vt 0.857 0.982
 | 
			
		||||
vt 0.746 0.982
 | 
			
		||||
vt 0.857 0.831
 | 
			
		||||
vt 0.948 0.009
 | 
			
		||||
vt 0.878 0.982
 | 
			
		||||
vt 0.878 0.831
 | 
			
		||||
vt 0.984 0.982
 | 
			
		||||
vt 0.863 0.831
 | 
			
		||||
vt 0.863 0.982
 | 
			
		||||
vt 0.728 0.491
 | 
			
		||||
vt 0.728 0.99
 | 
			
		||||
vt 0.011 0.491
 | 
			
		||||
vt 0.832 0.13
 | 
			
		||||
vt 0.982 0.13
 | 
			
		||||
vt 0.832 0.79
 | 
			
		||||
vt 0.758 0.755
 | 
			
		||||
vt 0.758 0.813
 | 
			
		||||
vt 0.756 0.753
 | 
			
		||||
vt 0.799 0.813
 | 
			
		||||
vt 0.756 0.815
 | 
			
		||||
vt 0.799 0.755
 | 
			
		||||
vt 0.8 0.815
 | 
			
		||||
vt 0.708 0.114
 | 
			
		||||
vt 0.708 0.471
 | 
			
		||||
vt 0.006 0.114
 | 
			
		||||
vt 0.346 0.099
 | 
			
		||||
vt 0.497 0.033
 | 
			
		||||
vt 0.497 0.099
 | 
			
		||||
vt 0.991 0.099
 | 
			
		||||
vt 0.838 0.033
 | 
			
		||||
vt 0.991 0.033
 | 
			
		||||
vt 0.008 0.009
 | 
			
		||||
vt 0.013 0.023
 | 
			
		||||
vt 0.984 0.01
 | 
			
		||||
vt 0.943 0.023
 | 
			
		||||
vt 0.049 0.023
 | 
			
		||||
vt 0.81 0.598
 | 
			
		||||
vt 0.746 0.831
 | 
			
		||||
vt 0.984 0.831
 | 
			
		||||
vt 0.011 0.99
 | 
			
		||||
vt 0.982 0.79
 | 
			
		||||
vt 0.8 0.753
 | 
			
		||||
vt 0.006 0.471
 | 
			
		||||
vt 0.008 0.099
 | 
			
		||||
vt 0.008 0.033
 | 
			
		||||
vt 0.498 0.099
 | 
			
		||||
vt 0.498 0.033
 | 
			
		||||
vt 0.979 0.024
 | 
			
		||||
s off
 | 
			
		||||
f 1/1 2/2 3/3
 | 
			
		||||
f 4/4 3/3 5/5
 | 
			
		||||
f 6/6 7/7 8/8
 | 
			
		||||
f 9/9 6/10 10/11
 | 
			
		||||
f 1/1 11/12 2/2
 | 
			
		||||
f 12/13 13/14 2/15
 | 
			
		||||
f 13/14 12/13 14/16
 | 
			
		||||
f 9/9 10/11 15/17
 | 
			
		||||
f 16/18 17/19 18/20
 | 
			
		||||
f 7/21 19/22 20/23
 | 
			
		||||
f 21/24 17/25 3/26
 | 
			
		||||
f 16/27 1/28 17/25
 | 
			
		||||
f 18/29 21/24 3/26
 | 
			
		||||
f 16/27 18/29 11/30
 | 
			
		||||
f 19/31 11/32 22/33
 | 
			
		||||
f 22/34 8/35 20/36
 | 
			
		||||
f 6/37 19/38 7/39
 | 
			
		||||
f 10/40 4/4 14/41
 | 
			
		||||
f 11/12 9/42 12/43
 | 
			
		||||
f 2/2 5/5 3/3
 | 
			
		||||
f 13/44 4/4 5/5
 | 
			
		||||
f 7/7 20/45 8/8
 | 
			
		||||
f 6/10 8/46 10/11
 | 
			
		||||
f 11/12 12/43 2/2
 | 
			
		||||
f 13/14 5/47 2/15
 | 
			
		||||
f 12/13 15/17 14/16
 | 
			
		||||
f 10/11 14/16 15/17
 | 
			
		||||
f 17/19 21/48 18/20
 | 
			
		||||
f 19/22 22/49 20/23
 | 
			
		||||
f 17/25 1/28 3/26
 | 
			
		||||
f 11/30 1/28 16/27
 | 
			
		||||
f 4/50 18/29 3/26
 | 
			
		||||
f 18/29 4/50 11/30
 | 
			
		||||
f 11/32 4/51 22/33
 | 
			
		||||
f 4/52 10/53 8/35
 | 
			
		||||
f 22/34 4/52 8/35
 | 
			
		||||
f 9/54 11/55 6/37
 | 
			
		||||
f 11/55 19/38 6/37
 | 
			
		||||
f 4/4 13/44 14/41
 | 
			
		||||
f 9/42 15/56 12/43
 | 
			
		||||
@@ -1,133 +0,0 @@
 | 
			
		||||
v 0.332 -0.433 0.183
 | 
			
		||||
v -0.34 -0.5 -0.313
 | 
			
		||||
v -0.34 -0.433 -0.313
 | 
			
		||||
v 0.332 -0.5 -0.313
 | 
			
		||||
v -0.34 -0.5 0.183
 | 
			
		||||
v 0.332 -0.5 0.183
 | 
			
		||||
v -0.34 -0.433 0.183
 | 
			
		||||
v -0.34 -0.433 0.21
 | 
			
		||||
v 0.332 -0.433 0.21
 | 
			
		||||
v 0.332 -0.5 0.21
 | 
			
		||||
v -0.34 -0.5 0.21
 | 
			
		||||
v -0.34 -0.433 -0.159
 | 
			
		||||
v 0.332 -0.433 -0.313
 | 
			
		||||
v 0.332 -0.433 -0.159
 | 
			
		||||
v -0.339 -0.432 -0.313
 | 
			
		||||
v -0.339 -0.401 -0.312
 | 
			
		||||
v 0.331 -0.432 -0.313
 | 
			
		||||
v 0.331 -0.432 0.207
 | 
			
		||||
v 0.331 -0.401 -0.312
 | 
			
		||||
v -0.339 -0.432 0.207
 | 
			
		||||
v -0.339 -0.405 0.197
 | 
			
		||||
v 0.331 -0.405 0.197
 | 
			
		||||
v -0.319 -0.425 0.187
 | 
			
		||||
v -0.319 -0.425 -0.288
 | 
			
		||||
v 0.311 -0.425 0.187
 | 
			
		||||
v 0.311 -0.425 -0.288
 | 
			
		||||
vt 0.753 0.12
 | 
			
		||||
vt 0.81 0.12
 | 
			
		||||
vt 0.753 0.598
 | 
			
		||||
vt 0.857 0.982
 | 
			
		||||
vt 0.746 0.982
 | 
			
		||||
vt 0.857 0.831
 | 
			
		||||
vt 0.878 0.831
 | 
			
		||||
vt 0.878 0.982
 | 
			
		||||
vt 0.863 0.831
 | 
			
		||||
vt 0.863 0.982
 | 
			
		||||
vt 0.858 0.829
 | 
			
		||||
vt 0.886 0.829
 | 
			
		||||
vt 0.858 0.95
 | 
			
		||||
vt 0.936 0.853
 | 
			
		||||
vt 0.936 0.923
 | 
			
		||||
vt 0.798 0.853
 | 
			
		||||
vt 0.346 0.099
 | 
			
		||||
vt 0.497 0.033
 | 
			
		||||
vt 0.497 0.099
 | 
			
		||||
vt 0.991 0.099
 | 
			
		||||
vt 0.838 0.033
 | 
			
		||||
vt 0.991 0.033
 | 
			
		||||
vt 0.008 0.009
 | 
			
		||||
vt 0.044 0.009
 | 
			
		||||
vt 0.013 0.023
 | 
			
		||||
vt 0.948 0.009
 | 
			
		||||
vt 0.984 0.01
 | 
			
		||||
vt 0.943 0.023
 | 
			
		||||
vt 0.81 0.598
 | 
			
		||||
vt 0.746 0.831
 | 
			
		||||
vt 0.886 0.95
 | 
			
		||||
vt 0.912 0.963
 | 
			
		||||
vt 0.786 0.838
 | 
			
		||||
vt 0.886 0.908
 | 
			
		||||
vt 0.922 0.84
 | 
			
		||||
vt 0.798 0.923
 | 
			
		||||
vt 0.008 0.099
 | 
			
		||||
vt 0.008 0.033
 | 
			
		||||
vt 0.498 0.099
 | 
			
		||||
vt 0.498 0.033
 | 
			
		||||
vt 0.049 0.023
 | 
			
		||||
vt 0.979 0.024
 | 
			
		||||
vt 0.683 0.005
 | 
			
		||||
vt 0.683 0.021
 | 
			
		||||
vt 0.31 0.005
 | 
			
		||||
vt 0.31 0.021
 | 
			
		||||
vt 0.984 0.982
 | 
			
		||||
vt 0.922 0.868
 | 
			
		||||
vt 0.922 0.952
 | 
			
		||||
vt 0.802 0.868
 | 
			
		||||
vt 0.758 0.755
 | 
			
		||||
vt 0.758 0.813
 | 
			
		||||
vt 0.756 0.753
 | 
			
		||||
vt 0.799 0.813
 | 
			
		||||
vt 0.756 0.815
 | 
			
		||||
vt 0.799 0.755
 | 
			
		||||
vt 0.8 0.815
 | 
			
		||||
vt 0.984 0.831
 | 
			
		||||
vt 0.802 0.952
 | 
			
		||||
vt 0.8 0.753
 | 
			
		||||
vt 0.896 0.949
 | 
			
		||||
vt 0.904 0.849
 | 
			
		||||
vt 0.888 0.925
 | 
			
		||||
vt 0.811 0.85
 | 
			
		||||
s off
 | 
			
		||||
f 2/1 3/2 4/3
 | 
			
		||||
f 5/4 2/5 6/6
 | 
			
		||||
f 9/7 8/8 10/9
 | 
			
		||||
f 5/4 6/6 11/10
 | 
			
		||||
f 3/11 12/12 13/13
 | 
			
		||||
f 12/14 7/15 14/16
 | 
			
		||||
f 14/17 4/18 13/19
 | 
			
		||||
f 2/20 12/21 3/22
 | 
			
		||||
f 6/23 1/24 10/25
 | 
			
		||||
f 7/26 5/27 8/28
 | 
			
		||||
f 3/2 13/29 4/3
 | 
			
		||||
f 2/5 4/30 6/6
 | 
			
		||||
f 8/8 11/10 10/9
 | 
			
		||||
f 6/6 10/9 11/10
 | 
			
		||||
f 12/12 14/31 13/13
 | 
			
		||||
f 8/32 9/33 1/34 7/35
 | 
			
		||||
f 7/15 1/36 14/16
 | 
			
		||||
f 1/37 6/38 4/18
 | 
			
		||||
f 14/17 1/37 4/18
 | 
			
		||||
f 5/39 7/40 2/20
 | 
			
		||||
f 7/40 12/21 2/20
 | 
			
		||||
f 1/24 9/41 10/25
 | 
			
		||||
f 5/27 11/42 8/28
 | 
			
		||||
f 15/43 16/44 17/45
 | 
			
		||||
f 18/24 17/45 19/46
 | 
			
		||||
f 15/43 20/26 16/44
 | 
			
		||||
f 21/8 22/7 16/47
 | 
			
		||||
f 23/48 24/49 25/50
 | 
			
		||||
f 26/51 24/52 17/53
 | 
			
		||||
f 23/54 15/55 24/52
 | 
			
		||||
f 25/56 26/51 17/53
 | 
			
		||||
f 23/54 25/56 20/57
 | 
			
		||||
f 16/44 19/46 17/45
 | 
			
		||||
f 22/41 18/24 19/46
 | 
			
		||||
f 20/26 21/28 16/44
 | 
			
		||||
f 22/7 19/58 16/47
 | 
			
		||||
f 24/49 26/59 25/50
 | 
			
		||||
f 24/52 15/55 17/53
 | 
			
		||||
f 20/57 15/55 23/54
 | 
			
		||||
f 18/60 25/56 17/53
 | 
			
		||||
f 25/56 18/60 20/57
 | 
			
		||||
f 21/61 20/62 18/63 22/64
 | 
			
		||||
@@ -1,28 +0,0 @@
 | 
			
		||||
v -0.183 -0.5 0.45
 | 
			
		||||
v -0.183 -0.5 -0.35
 | 
			
		||||
v 0.183 -0.5 -0.35
 | 
			
		||||
v 0.183 -0.5 0.45
 | 
			
		||||
v -0.183 0.336 0.45
 | 
			
		||||
v 0.183 0.336 0.45
 | 
			
		||||
v 0.183 0.336 -0.35
 | 
			
		||||
v -0.183 0.336 -0.35
 | 
			
		||||
vt 1 0.75
 | 
			
		||||
vt 0.5 0.75
 | 
			
		||||
vt 0.5 0.5
 | 
			
		||||
vt 1 0.5
 | 
			
		||||
vt 0.5 1
 | 
			
		||||
vt 1 1
 | 
			
		||||
vt 0.5 0
 | 
			
		||||
vt 0 0.5
 | 
			
		||||
vt 0 0
 | 
			
		||||
vt 0.25 1
 | 
			
		||||
vt 0.25 0.5
 | 
			
		||||
vt 1 0
 | 
			
		||||
vt 0 1
 | 
			
		||||
s off
 | 
			
		||||
f 1/1 2/2 3/3 4/4
 | 
			
		||||
f 5/5 6/2 7/1 8/6
 | 
			
		||||
f 1/7 5/3 8/8 2/9
 | 
			
		||||
f 2/3 8/5 7/10 3/11
 | 
			
		||||
f 3/12 7/4 6/3 4/7
 | 
			
		||||
f 5/13 1/8 4/11 6/10
 | 
			
		||||
@@ -1,136 +0,0 @@
 | 
			
		||||
v -0.45 1.3 -0.45
 | 
			
		||||
v -0.45 1.3 -0.5
 | 
			
		||||
v 0.45 1.3 -0.5
 | 
			
		||||
v 0.45 1.3 -0.45
 | 
			
		||||
v -0.45 1.5 -0.45
 | 
			
		||||
v -0.45 1.5 -0.5
 | 
			
		||||
v 0.45 1.5 -0.5
 | 
			
		||||
v 0.45 1.5 -0.45
 | 
			
		||||
v 0.45 -0.495 -0.5
 | 
			
		||||
v 0.45 0.305 -0.5
 | 
			
		||||
v -0.45 -0.495 -0.5
 | 
			
		||||
v -0.45 0.305 -0.5
 | 
			
		||||
v 0.45 -0.498 0.5
 | 
			
		||||
v 0.45 -0.498 -0.5
 | 
			
		||||
v 0.5 -0.498 -0.5
 | 
			
		||||
v 0.5 -0.498 0.5
 | 
			
		||||
v 0.45 1.499 0.5
 | 
			
		||||
v 0.45 1.499 -0.5
 | 
			
		||||
v 0.5 1.499 -0.5
 | 
			
		||||
v 0.5 1.499 0.5
 | 
			
		||||
v 0.5 -0.5 -0.5
 | 
			
		||||
v 0.5 -0.5 0.5
 | 
			
		||||
v -0.5 -0.5 0.5
 | 
			
		||||
v -0.5 -0.5 -0.5
 | 
			
		||||
v 0.5 1.5 -0.5
 | 
			
		||||
v -0.5 1.5 -0.5
 | 
			
		||||
v -0.5 1.5 0.5
 | 
			
		||||
v 0.5 1.5 0.5
 | 
			
		||||
v -0.5 -0.498 0.5
 | 
			
		||||
v -0.5 -0.498 -0.5
 | 
			
		||||
v -0.45 -0.498 -0.5
 | 
			
		||||
v -0.45 -0.498 0.5
 | 
			
		||||
v -0.5 1.499 0.5
 | 
			
		||||
v -0.5 1.499 -0.5
 | 
			
		||||
v -0.45 1.499 -0.5
 | 
			
		||||
v -0.45 1.499 0.5
 | 
			
		||||
v 0.45 0.305 -0.5
 | 
			
		||||
v 0.45 0.474 -0.137
 | 
			
		||||
v -0.45 0.305 -0.5
 | 
			
		||||
v -0.45 0.474 -0.137
 | 
			
		||||
v 0.45 0.473 -0.138
 | 
			
		||||
v 0.45 0.614 -0.087
 | 
			
		||||
v -0.45 0.473 -0.138
 | 
			
		||||
v -0.45 0.614 -0.087
 | 
			
		||||
v 0.45 0.611 -0.085
 | 
			
		||||
v 0.45 1.399 0.054
 | 
			
		||||
v -0.45 0.611 -0.085
 | 
			
		||||
v -0.45 1.399 0.054
 | 
			
		||||
v 0.45 1.395 0.055
 | 
			
		||||
v 0.45 1.495 0.055
 | 
			
		||||
v -0.45 1.395 0.055
 | 
			
		||||
v -0.45 1.495 0.055
 | 
			
		||||
vt 0.25 0.745
 | 
			
		||||
vt 0.25 0.516
 | 
			
		||||
vt 0.495 0.516
 | 
			
		||||
vt 0.495 0.745
 | 
			
		||||
vt 0.5 0.745
 | 
			
		||||
vt 0.25 0.745
 | 
			
		||||
vt 0.25 0.693
 | 
			
		||||
vt 0.5 0.693
 | 
			
		||||
vt 0.245 1
 | 
			
		||||
vt 0 1
 | 
			
		||||
vt 0 0.926
 | 
			
		||||
vt 0.245 0.926
 | 
			
		||||
vt 0 0.985
 | 
			
		||||
vt 0.246 0.985
 | 
			
		||||
vt 0.247 1
 | 
			
		||||
vt 0.255 0.396
 | 
			
		||||
vt 0.255 0.252
 | 
			
		||||
vt 0.49 0.252
 | 
			
		||||
vt 0.49 0.396
 | 
			
		||||
vt 0.747 0.252
 | 
			
		||||
vt 1.001 0.252
 | 
			
		||||
vt 1 0.749
 | 
			
		||||
vt 0.748 0.749
 | 
			
		||||
vt 0.971 0.251
 | 
			
		||||
vt 0.999 0.251
 | 
			
		||||
vt 1 0.749
 | 
			
		||||
vt 0.972 0.749
 | 
			
		||||
vt 0.25 0.75
 | 
			
		||||
vt 0 0.75
 | 
			
		||||
vt 0.001 0.252
 | 
			
		||||
vt 0.25 0.252
 | 
			
		||||
vt 0.742 0.745
 | 
			
		||||
vt 0.501 0.745
 | 
			
		||||
vt 0.501 0.255
 | 
			
		||||
vt 0.742 0.255
 | 
			
		||||
vt 0.952 0.253
 | 
			
		||||
vt 1 0.253
 | 
			
		||||
vt 1 0.749
 | 
			
		||||
vt 0.952 0.749
 | 
			
		||||
vt 1 0.749
 | 
			
		||||
vt 0.745 0.749
 | 
			
		||||
vt 0.745 0.251
 | 
			
		||||
vt 1.001 0.251
 | 
			
		||||
vt 0.256 0.485
 | 
			
		||||
vt 0.255 0.402
 | 
			
		||||
vt 0.495 0.401
 | 
			
		||||
vt 0.495 0.485
 | 
			
		||||
vt 0.261 0.516
 | 
			
		||||
vt 0.261 0.485
 | 
			
		||||
vt 0.494 0.485
 | 
			
		||||
vt 0.494 0.516
 | 
			
		||||
vt 0 0.745
 | 
			
		||||
vt 0 0.703
 | 
			
		||||
vt 0.246 0.704
 | 
			
		||||
vt 0.246 0.745
 | 
			
		||||
vt 0.25 0.25
 | 
			
		||||
vt 0 0.25
 | 
			
		||||
vt 0 0
 | 
			
		||||
vt 0.25 0
 | 
			
		||||
vt 0.25 0.75
 | 
			
		||||
vt 0.25 1
 | 
			
		||||
vt 0 0.75
 | 
			
		||||
vt 1 0.25
 | 
			
		||||
vt 1 0.75
 | 
			
		||||
vt 0.75 0.75
 | 
			
		||||
vt 0.75 0.25
 | 
			
		||||
s off
 | 
			
		||||
f 46/1 45/2 47/3 48/4
 | 
			
		||||
f 6/5 7/6 3/7 2/8
 | 
			
		||||
f 8/9 5/10 1/11 4/12
 | 
			
		||||
f 1/10 2/13 3/14 4/15
 | 
			
		||||
f 10/16 9/17 11/18 12/19
 | 
			
		||||
f 17/20 18/21 14/22 13/23
 | 
			
		||||
f 18/24 19/25 15/26 14/27
 | 
			
		||||
f 19/28 20/29 16/30 15/31
 | 
			
		||||
f 33/32 34/33 30/34 29/35
 | 
			
		||||
f 34/36 35/37 31/38 30/39
 | 
			
		||||
f 35/40 36/41 32/42 31/43
 | 
			
		||||
f 38/44 37/45 39/46 40/47
 | 
			
		||||
f 42/48 41/49 43/50 44/51
 | 
			
		||||
f 50/52 49/53 51/54 52/55
 | 
			
		||||
f 21/56 22/57 23/58 24/59
 | 
			
		||||
f 25/60 26/61 27/10 28/62
 | 
			
		||||
f 22/63 28/64 27/65 23/66
 | 
			
		||||
@@ -1,61 +0,0 @@
 | 
			
		||||
-- Printers of some kind or another
 | 
			
		||||
 | 
			
		||||
local S = minetest.get_translator("computer")
 | 
			
		||||
 | 
			
		||||
minetest.register_node("computer:printer", {
 | 
			
		||||
	description = S("Printer-Scanner Combo"),
 | 
			
		||||
	inventory_image = "computer_printer_inv.png",
 | 
			
		||||
	tiles = {"computer_printer_t.png","computer_printer_bt.png","computer_printer_l.png",
 | 
			
		||||
			"computer_printer_r.png","computer_printer_b.png","computer_printer_f.png"},
 | 
			
		||||
	paramtype = "light",
 | 
			
		||||
	paramtype2 = "facedir",
 | 
			
		||||
	walkable = true,
 | 
			
		||||
	groups = {snappy=3},
 | 
			
		||||
	sound = default.node_sound_wood_defaults(),
 | 
			
		||||
	drawtype = "nodebox",
 | 
			
		||||
	node_box = {
 | 
			
		||||
		type = "fixed",
 | 
			
		||||
		fixed = {
 | 
			
		||||
			{-0.4375, -0.3125, -0.125, 0.4375, -0.0625, 0.375},
 | 
			
		||||
			{-0.4375, -0.5, -0.125, 0.4375, -0.4375, 0.375},
 | 
			
		||||
			{-0.4375, -0.5, -0.125, -0.25, -0.0625, 0.375},
 | 
			
		||||
			{0.25, -0.5, -0.125, 0.4375, -0.0625, 0.375},
 | 
			
		||||
			{-0.4375, -0.5, -0.0625, 0.4375, -0.0625, 0.375},
 | 
			
		||||
			{-0.375, -0.4375, 0.25, 0.375, -0.0625, 0.4375},
 | 
			
		||||
			{-0.25, -0.25, 0.4375, 0.25, 0.0625, 0.5},
 | 
			
		||||
			{-0.25, -0.481132, -0.3125, 0.25, -0.4375, 0}
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
-- "bedflinger" style 3D Printer (Prusa i3 or equivalent)
 | 
			
		||||
 | 
			
		||||
local cbox = {
 | 
			
		||||
	type = "fixed",
 | 
			
		||||
	fixed = {-0.25, -0.25, -0.5, 0.3, 0.3, 0.25 }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
minetest.register_node("computer:3dprinter_bedflinger", {
 | 
			
		||||
	description = S('3D Printer ("bedflinger")'),
 | 
			
		||||
	inventory_image = "computer_3dprinter_bedflinger_inv.png",
 | 
			
		||||
	tiles = {
 | 
			
		||||
		{ name = "computer_3dprinter_bedflinger.png", color = 0xffffffff },
 | 
			
		||||
		"computer_3dprinter_filament.png"
 | 
			
		||||
	},
 | 
			
		||||
	paramtype = "light",
 | 
			
		||||
	walkable = true,
 | 
			
		||||
	groups = {snappy=3, ud_param2_colorable = 1},
 | 
			
		||||
	sound = default.node_sound_wood_defaults(),
 | 
			
		||||
	drawtype = "mesh",
 | 
			
		||||
	mesh = "computer_3dprinter_bedflinger.obj",
 | 
			
		||||
	paramtype2 = "colorwallmounted",
 | 
			
		||||
	palette = "unifieddyes_palette_colorwallmounted.png",
 | 
			
		||||
	selection_box = cbox,
 | 
			
		||||
	collision_box = cbox,
 | 
			
		||||
	after_place_node = function(pos, placer, itemstack, pointed_thing)
 | 
			
		||||
		unifieddyes.fix_rotation_nsew(pos, placer, itemstack, pointed_thing)
 | 
			
		||||
	end,
 | 
			
		||||
	on_dig = unifieddyes.on_dig,
 | 
			
		||||
	on_rotate = unifieddyes.fix_after_screwdriver_nsew,
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
@@ -1,141 +0,0 @@
 | 
			
		||||
-- Copyright (C) 2012-2013 Diego Martínez <kaeza@users.sf.net>
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = "computer:shefriendSOO",
 | 
			
		||||
	recipe = {
 | 
			
		||||
		{ "basic_materials:plastic_sheet", "basic_materials:plastic_sheet", "basic_materials:plastic_sheet" },
 | 
			
		||||
		{ "basic_materials:plastic_sheet", "default:glass", "basic_materials:plastic_sheet" },
 | 
			
		||||
		{ "basic_materials:plastic_sheet", "group:wood", "basic_materials:plastic_sheet" }
 | 
			
		||||
	}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = "computer:slaystation",
 | 
			
		||||
	recipe = {
 | 
			
		||||
		{ "basic_materials:plastic_sheet", "basic_materials:plastic_sheet", "basic_materials:plastic_sheet" },
 | 
			
		||||
		{ "basic_materials:plastic_sheet", "group:wood", "basic_materials:plastic_sheet" }
 | 
			
		||||
	}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = "computer:vanio",
 | 
			
		||||
	recipe = {
 | 
			
		||||
		{ "basic_materials:plastic_sheet", "", "" },
 | 
			
		||||
		{ "default:glass", "", "" },
 | 
			
		||||
		{ "basic_materials:plastic_sheet", "basic_materials:plastic_sheet", "basic_materials:plastic_sheet" }
 | 
			
		||||
	}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = "computer:specter",
 | 
			
		||||
	recipe = {
 | 
			
		||||
		{ "", "", "basic_materials:plastic_sheet" },
 | 
			
		||||
		{ "basic_materials:plastic_sheet", "basic_materials:plastic_sheet", "basic_materials:plastic_sheet" },
 | 
			
		||||
		{ "basic_materials:plastic_sheet", "basic_materials:plastic_sheet", "basic_materials:plastic_sheet" }
 | 
			
		||||
	}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = "computer:slaystation2",
 | 
			
		||||
	recipe = {
 | 
			
		||||
		{ "basic_materials:plastic_sheet", "basic_materials:plastic_sheet", "basic_materials:plastic_sheet" },
 | 
			
		||||
		{ "basic_materials:plastic_sheet", "default:steel_ingot", "basic_materials:plastic_sheet" }
 | 
			
		||||
	}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = "computer:admiral64",
 | 
			
		||||
	recipe = {
 | 
			
		||||
		{ "basic_materials:plastic_sheet", "basic_materials:plastic_sheet", "basic_materials:plastic_sheet" },
 | 
			
		||||
		{ "group:wood", "group:wood", "group:wood" }
 | 
			
		||||
	}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = "computer:admiral128",
 | 
			
		||||
	recipe = {
 | 
			
		||||
		{ "basic_materials:plastic_sheet", "basic_materials:plastic_sheet", "basic_materials:plastic_sheet" },
 | 
			
		||||
		{ "default:steel_ingot", "default:steel_ingot", "default:steel_ingot" }
 | 
			
		||||
	}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = "computer:wee",
 | 
			
		||||
	recipe = {
 | 
			
		||||
		{ "basic_materials:plastic_sheet", "basic_materials:plastic_sheet", "basic_materials:plastic_sheet" },
 | 
			
		||||
		{ "basic_materials:plastic_sheet", "default:copper_ingot", "basic_materials:plastic_sheet" }
 | 
			
		||||
	}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = "computer:piepad",
 | 
			
		||||
	recipe = {
 | 
			
		||||
		{ "basic_materials:plastic_sheet", "basic_materials:plastic_sheet", "basic_materials:plastic_sheet" },
 | 
			
		||||
		{ "basic_materials:plastic_sheet", "default:glass", "basic_materials:plastic_sheet" }
 | 
			
		||||
	}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
--new stuff
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = "computer:monitor",
 | 
			
		||||
	recipe = {
 | 
			
		||||
		{ "basic_materials:plastic_sheet", "default:glass","" },
 | 
			
		||||
		{ "basic_materials:plastic_sheet", "default:glass","" },
 | 
			
		||||
		{ "basic_materials:plastic_sheet", "default:mese_crystal_fragment", "basic_materials:plastic_sheet" }
 | 
			
		||||
	}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = "computer:router",
 | 
			
		||||
	recipe = {
 | 
			
		||||
		{ "default:steel_ingot","","" },
 | 
			
		||||
		{ "default:steel_ingot" ,"basic_materials:plastic_sheet", "basic_materials:plastic_sheet" },
 | 
			
		||||
		{ "default:mese_crystal_fragment","basic_materials:plastic_sheet", "basic_materials:plastic_sheet"  }
 | 
			
		||||
	}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = "computer:tower",
 | 
			
		||||
	recipe = {
 | 
			
		||||
		{ "basic_materials:plastic_sheet", "default:steel_ingot", "basic_materials:plastic_sheet" },
 | 
			
		||||
		{ "basic_materials:plastic_sheet", "default:mese_crystal", "basic_materials:plastic_sheet" },
 | 
			
		||||
		{ "basic_materials:plastic_sheet", "default:steel_ingot", "basic_materials:plastic_sheet" }
 | 
			
		||||
	}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = "computer:printer",
 | 
			
		||||
	recipe = {
 | 
			
		||||
		{ "basic_materials:plastic_sheet", "default:steel_ingot","" },
 | 
			
		||||
		{ "basic_materials:plastic_sheet", "default:mese_crystal", "basic_materials:plastic_sheet" },
 | 
			
		||||
		{ "basic_materials:plastic_sheet", "default:coal_lump", "basic_materials:plastic_sheet" }
 | 
			
		||||
	}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = "computer:printer",
 | 
			
		||||
	recipe = {
 | 
			
		||||
		{ "basic_materials:plastic_sheet", "default:steel_ingot","" },
 | 
			
		||||
		{ "basic_materials:plastic_sheet", "default:mese_crystal", "basic_materials:plastic_sheet" },
 | 
			
		||||
		{ "basic_materials:plastic_sheet", "dye:black", "basic_materials:plastic_sheet", }
 | 
			
		||||
	}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_craft({
 | 
			
		||||
	output = "computer:server",
 | 
			
		||||
	recipe = {
 | 
			
		||||
		{ "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 = {
 | 
			
		||||
		{ "basic_materials:plastic_sheet", "basic_materials:energy_crystal_simple", "basic_materials:plastic_sheet", },
 | 
			
		||||
		{ "dye:black", "default:glass", "dye:black" },
 | 
			
		||||
		{ "basic_materials:plastic_sheet", "basic_materials:energy_crystal_simple", "basic_materials:plastic_sheet" }
 | 
			
		||||
	}
 | 
			
		||||
})
 | 
			
		||||
@@ -1,290 +0,0 @@
 | 
			
		||||
local S = minetest.get_translator("computer")
 | 
			
		||||
 | 
			
		||||
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;"..minetest.formspec_escape(S("L")).."]"
 | 
			
		||||
	.."button[4.2,4.5;0.6,0.6;down;v]"
 | 
			
		||||
	.."button[4.2,5.3;0.6,0.6;drop;V]"
 | 
			
		||||
	.."button[4.8,4.5;0.6,0.6;rotateright;"..minetest.formspec_escape(S("R")).."]"
 | 
			
		||||
	.."button[5.4,4.5;0.6,0.6;right;>]"
 | 
			
		||||
	.."button[3.5,3;2,2;new;"..minetest.formspec_escape(S("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(p)
 | 
			
		||||
		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(p)
 | 
			
		||||
		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)
 | 
			
		||||
		elseif t then
 | 
			
		||||
			key(fields)
 | 
			
		||||
		end
 | 
			
		||||
	elseif t then
 | 
			
		||||
		run = tick()
 | 
			
		||||
	end
 | 
			
		||||
 | 
			
		||||
	if t 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;"..S("Next...").."]label[3.8,2.7;"..S("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
 | 
			
		||||
 | 
			
		||||
minetest.register_node("computer:tetris_arcade", {
 | 
			
		||||
	description=S("Tetris Arcade"),
 | 
			
		||||
	drawtype = "mesh",
 | 
			
		||||
	mesh = "tetris_arcade.obj",
 | 
			
		||||
	tiles = {"tetris_arcade.png"},
 | 
			
		||||
	paramtype = "light",
 | 
			
		||||
	paramtype2 = "facedir",
 | 
			
		||||
	groups = {snappy=3},
 | 
			
		||||
	on_rotate = minetest.get_modpath("screwdriver") and screwdriver.rotate_simple or nil,
 | 
			
		||||
	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;"..minetest.formspec_escape(S("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.is_protected(pos, placer:get_player_name()) or
 | 
			
		||||
			minetest.is_protected({x=pos.x, y=pos.y+1, z=pos.z}, placer:get_player_name()) then
 | 
			
		||||
			return itemstack
 | 
			
		||||
		end
 | 
			
		||||
		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(), S("No room for place the Arcade!"))
 | 
			
		||||
			return itemstack
 | 
			
		||||
		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()
 | 
			
		||||
		return itemstack
 | 
			
		||||
	end
 | 
			
		||||
})
 | 
			
		||||
| 
		 Before Width: | Height: | Size: 2.5 KiB  | 
| 
		 Before Width: | Height: | Size: 3.0 KiB  | 
| 
		 Before Width: | Height: | Size: 216 B  | 
| 
		 Before Width: | Height: | Size: 2.3 KiB  | 
| 
		 Before Width: | Height: | Size: 2.2 KiB  | 
| 
		 Before Width: | Height: | Size: 105 B  | 
| 
		 Before Width: | Height: | Size: 115 B  | 
| 
		 Before Width: | Height: | Size: 105 B  | 
| 
		 Before Width: | Height: | Size: 107 B  | 
| 
		 Before Width: | Height: | Size: 109 B  | 
| 
		 Before Width: | Height: | Size: 261 B  | 
| 
		 Before Width: | Height: | Size: 103 B  | 
| 
		 Before Width: | Height: | Size: 113 B  | 
| 
		 Before Width: | Height: | Size: 103 B  | 
| 
		 Before Width: | Height: | Size: 106 B  | 
| 
		 Before Width: | Height: | Size: 107 B  | 
| 
		 Before Width: | Height: | Size: 235 B  | 
| 
		 Before Width: | Height: | Size: 67 B  | 
| 
		 Before Width: | Height: | Size: 98 B  | 
| 
		 Before Width: | Height: | Size: 118 B  | 
| 
		 Before Width: | Height: | Size: 123 B  | 
| 
		 Before Width: | Height: | Size: 102 B  | 
| 
		 Before Width: | Height: | Size: 98 B  | 
| 
		 Before Width: | Height: | Size: 76 B  | 
| 
		 Before Width: | Height: | Size: 89 B  | 
| 
		 Before Width: | Height: | Size: 98 B  | 
| 
		 Before Width: | Height: | Size: 80 B  | 
| 
		 Before Width: | Height: | Size: 80 B  | 
| 
		 Before Width: | Height: | Size: 153 B  | 
| 
		 Before Width: | Height: | Size: 8.3 KiB  | 
| 
		 Before Width: | Height: | Size: 2.6 KiB  | 
| 
		 Before Width: | Height: | Size: 106 B  | 
| 
		 Before Width: | Height: | Size: 2.6 KiB  | 
| 
		 Before Width: | Height: | Size: 101 B  | 
| 
		 Before Width: | Height: | Size: 187 B  | 
| 
		 Before Width: | Height: | Size: 115 B  | 
| 
		 Before Width: | Height: | Size: 168 B  | 
| 
		 Before Width: | Height: | Size: 153 B  | 
| 
		 Before Width: | Height: | Size: 163 B  | 
| 
		 Before Width: | Height: | Size: 2.4 KiB  | 
| 
		 Before Width: | Height: | Size: 157 B  | 
| 
		 Before Width: | Height: | Size: 155 B  | 
| 
		 Before Width: | Height: | Size: 196 B  | 
| 
		 Before Width: | Height: | Size: 2.3 KiB  | 
| 
		 Before Width: | Height: | Size: 2.3 KiB  | 
| 
		 Before Width: | Height: | Size: 98 B  | 
| 
		 Before Width: | Height: | Size: 252 B  | 
| 
		 Before Width: | Height: | Size: 153 B  | 
| 
		 Before Width: | Height: | Size: 1.0 KiB  | 
| 
		 Before Width: | Height: | Size: 2.3 KiB  | 
| 
		 Before Width: | Height: | Size: 1.9 KiB  | 
| 
		 Before Width: | Height: | Size: 211 B  | 
| 
		 Before Width: | Height: | Size: 207 B  | 
| 
		 Before Width: | Height: | Size: 143 B  | 
| 
		 Before Width: | Height: | Size: 67 B  | 
| 
		 Before Width: | Height: | Size: 1.2 KiB  | 
| 
		 Before Width: | Height: | Size: 2.2 KiB  | 
| 
		 Before Width: | Height: | Size: 3.5 KiB  | 
| 
		 Before Width: | Height: | Size: 127 B  | 
| 
		 Before Width: | Height: | Size: 127 B  | 
| 
		 Before Width: | Height: | Size: 67 B  | 
| 
		 Before Width: | Height: | Size: 97 B  | 
| 
		 Before Width: | Height: | Size: 108 B  | 
| 
		 Before Width: | Height: | Size: 170 B  | 
| 
		 Before Width: | Height: | Size: 117 B  | 
| 
		 Before Width: | Height: | Size: 117 B  | 
| 
		 Before Width: | Height: | Size: 121 B  | 
| 
		 Before Width: | Height: | Size: 205 B  | 
| 
		 Before Width: | Height: | Size: 230 B  | 
| 
		 Before Width: | Height: | Size: 165 B  | 
| 
		 Before Width: | Height: | Size: 144 B  | 
| 
		 Before Width: | Height: | Size: 122 B  | 
| 
		 Before Width: | Height: | Size: 110 B  | 
| 
		 Before Width: | Height: | Size: 103 B  |