Compare commits

..

No commits in common. "master" and "20200603-1302" have entirely different histories.

1350 changed files with 114347 additions and 87152 deletions

View File

@ -1,11 +0,0 @@
name: luacheck
on: [push, pull_request]
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- uses: Roang-zero1/factorio-mod-luacheck@master
with:
luacheckrc_url: ""

View File

@ -1,43 +1,28 @@
unused_args = false
globals = {
"homedecor",
"homedecor_lighting",
"homedecor_windows_and_treatments",
"homedecor_roofing",
"homedecor_misc",
"homedecor_exterior",
"homedecor_electrical",
"homedecor_cobweb",
"lavalamp",
"lrfurn",
"signs_lib",
"homedecor_doors_and_gates",
-- mod-deps
"armor"
}
allow_defined_top = true
read_globals = {
"DIR_DELIM",
"minetest", "core",
"vector", "ItemStack",
"dump",
"unpack",
"dump",
table = { fields = { "copy", "getn" } },
"vector", "nodeupdate",
"VoxelManip", "VoxelArea",
"PseudoRandom", "ItemStack",
"intllib",
"default",
"stairsplus",
"signs_lib",
"beds",
"technic",
"mesecon",
"unifieddyes",
"creative",
"homedecor_i18n",
}
-- Stdlib
string = {fields = {"split", "trim"}},
table = {fields = {"copy", "getn"}},
globals = {
"armor",
}
-- mod-deps
"default",
"unifieddyes",
"player_api",
"screwdriver",
"hopper",
"mesecon",
"skins",
"stairsplus",
"creative",
"doors",
"i3",
"xcompat",
}

8
README Normal file
View File

@ -0,0 +1,8 @@
This is what I consider to be a fairly feature-filled home decor modpack.
See the forum thread at
https://forum.minetest.net/viewtopic.php?f=11&t=2041 for details about
this modpack.
Dependencies: unifieddyes and a Minetest engine build newer than 2017-01-23.
Recommends: signs_lib, windmill, moreblocks, unified_inventory.

View File

@ -1,28 +0,0 @@
# Minetest Homedecor Modpack
[![ContentDB](https://content.minetest.net/packages/VanessaE/homedecor_modpack/shields/downloads/)](https://content.minetest.net/packages/VanessaE/homedecor_modpack/)
A fairly feature-filled home decor modpack that is game agnostic.
## About
first class support for:
* Minetest Game
* Farlands Reloaded
* Hades
* Mineclone2, Mineclone5
## Links
* [Github](https://github.com/mt-mods/homedecor_modpack)
* [Contentdb](https://content.minetest.net/packages/VanessaE/homedecor_modpack/)
* [Forums](https://forum.minetest.net/viewtopic.php?f=11&t=2041)
# Setup
required:
* [Unifieddyes](https://github.com/mt-mods/unifieddyes)
* [Basic Materials](https://github.com/mt-mods/basic_materials)
* [xcompat](https://github.com/mt-mods/xcompat)

19
bower.json Normal file
View File

@ -0,0 +1,19 @@
{
"name": "homedecor_modpack",
"description": "This mod adds a whole bunch of new items to Minetest suitable for decorating inside and outside a home.",
"keywords": [
"building",
"cosmetic",
"homedecor modpack",
"homedecor_modpack"
],
"homepage": "http://daconcepts.com/vanessa/hobbies/minetest/homedecor-crafting-guide/homedecor-craft-guide.html",
"project": "https://github.com/minetest-mods/homedecor_modpack",
"forum": "http://forum.minetest.net/viewtopic.php?f=11&t=2041",
"screenshots": [
"http://daconcepts.com/vanessa/hobbies/minetest/screenshots/homedecor1.png"
],
"authors": [
"VanessaE"
]
}

View File

@ -1,4 +1,4 @@
local S = minetest.get_translator("building_blocks")
local S = homedecor.gettext
if minetest.get_modpath("moreblocks") or minetest.get_modpath("stairs") then
minetest.register_alias("building_blocks:slab_tar", "stairs:slab_Tar")
@ -8,9 +8,16 @@ if minetest.get_modpath("moreblocks") or minetest.get_modpath("stairs") then
end
if minetest.get_modpath("moreblocks") then
minetest.register_alias_force("moreblocks:tar", "building_blocks:Tar")
stairsplus:register_alias_all("building_blocks", "tar", "building_blocks", "Tar")
stairsplus:register_alias_all("building_blocks", "marble", "building_blocks", "Marble")
for _, i in ipairs(stairsplus.shapes_list) do
local class = i[1]
local cut = i[2]
minetest.unregister_item("moreblocks:"..class.."tar"..cut)
minetest.register_alias("moreblocks:"..class.."tar"..cut, "building_blocks:"..class.."tar"..cut)
end
minetest.unregister_item("moreblocks:tar")
minetest.register_alias("moreblocks:tar", "building_blocks:Tar")
stairsplus:register_alias_all("moreblocks", "tar", "building_blocks", "Tar")
if minetest.get_modpath("gloopblocks") then
@ -33,11 +40,8 @@ if not minetest.get_modpath("technic") then
description = S("Granite"),
tiles = { "technic_granite.png" },
is_ground_content = true,
groups = {cracky=1, dig_stone=2, pickaxey=5},
_mcl_hardness=1.6,
_sound_def = {
key = "node_sound_stone_defaults",
},
groups = {cracky=1},
sounds = default.node_sound_stone_defaults(),
})
minetest.register_craft({
output = "technic:granite 9",

View File

@ -0,0 +1,5 @@
default
homedecor_common
moreblocks?
gloopblocks?
stairs?

View File

@ -1,3 +1,4 @@
local S = homedecor.gettext
local modpath = minetest.get_modpath("building_blocks")
dofile(modpath.."/alias.lua")

View File

@ -1,20 +0,0 @@
# textdomain: building_blocks
Granite=Granit
Grate=Rost
Streak Free Glass=Schlierenfreies Glas
Wood Framed Glass=Holzrahmenglas
Adobe=Adobe
Fake Grass=Falsches Gras
Hardwood=Hartholz
Roof block=Dachblock
Tar=Teer
Marble=Marmor
Brobble Spread=Ziesterboden
Gravel Spread=Kiesboden
Tarmac Spread=Asphaltboden
Terrycloth towel=Frottiertuch
Chess board tiling=Schachbrettkacheln
Fireplace=Kamin
Small bundle of sticks=Kleines Bündel Stöcke
Tar base=Teerbase
Tar Knife=Teermesser

View File

@ -1,20 +0,0 @@
# textdomain: building_blocks
Granite=Granito
Grate=Reja
Streak Free Glass=Vídrio sin rayas
Wood Framed Glass=Vídrio enmarcado en madera
Adobe=Adobe
Fake Grass=Hierba falsa
Hardwood=Madera dura
Roof block=Bloque de techo
Tar=Alquitrán
Marble=Mármol
Brobble Spread=Mezcla de Ladroquines
Gravel Spread=Mezcla de gravilla
Tarmac Spread=Mezcla de asfalto
Terrycloth towel=Toalla
Chess board tiling=Azulejos de ajedrez
Fireplace=Chimenea
Small bundle of sticks=Manojo de palitos
Tar base=Base de alquitrán
Tar Knife=Cuchillo de alquitrán

View File

@ -1,20 +0,0 @@
# textdomain: building_blocks
Granite=Granit
Grate=Grille
Streak Free Glass=Verre anti-rayures
Wood Framed Glass=Verre encadré de bois
Adobe=Pisé
Fake Grass=Herbe synthétique
Hardwood=Bois dur (feuillu)
Roof block=Bloc de toit
Tar=Goudron
Marble=Marbre
Brobble Spread=Tapis rouge
Gravel Spread=Tapis de gravier
Tarmac Spread=Tapis de goudron
Terrycloth towel=Serviette éponge
Chess board tiling=Pavage en échiquier
Fireplace=Cheminée
Small bundle of sticks=Petit fagot de brindilles
Tar base=Pâte de goudron
Tar Knife=Couteau à goudron

View File

@ -1,20 +0,0 @@
# textdomain: building_blocks
Granite=Granit
Grate=Jeriji
Streak Free Glass=Kaca Bebas Calar
Wood Framed Glass=Kaca Berbingkai Kayu
Adobe=Adob
Fake Grass=Rumput Tiruan
Hardwood=Kayu Keras
Roof block=Blok Bumbung
Tar=Tar
Marble=Marmar
Brobble Spread=Sebaran Batu Merah
Gravel Spread=Sebaran Kelikir
Tarmac Spread=Sebaran Tar
Terrycloth towel=Kain Tuala
Chess board tiling=Jubin Papan Catur
Fireplace=Pendiangan
Small bundle of sticks=Seberkas Kecil Serpihan Kayu
Tar base=Campuran Tar
Tar Knife=Pisau Tar

View File

@ -1,20 +0,0 @@
# textdomain: building_blocks
Granite=Granito
Grate=Grelha
Streak Free Glass=Vidro Sem Riscos
Wood Framed Glass=Vidro com Bordas de Madeira
Adobe=Argila
Fake Grass=Grama Falsa
Hardwood=Madeira
Roof block=Bloco de telhado
Tar=Alcatrão
Marble=Mármore
Brobble Spread=Calçado
Gravel Spread=Espalhamento de Cascalho
Tarmac Spread=Espalhamento das Estradas
Terrycloth towel=Toalha de Roupinha
Chess board tiling=Revestimento de xadrez
Fireplace=Lareira
Small bundle of sticks=Pequeno amontoado de gravetos
Tar base=Base para alcatrão
Tar Knife=Faca de Alcatrão

View File

@ -1,20 +0,0 @@
# textdomain: building_blocks
Granite=Granito
Grate=Grelha
Streak Free Glass=Vidro Sem Riscos
Wood Framed Glass=Vidro com Bordas de Madeira
Adobe=Argila
Fake Grass=Grama Falsa
Hardwood=Madeira
Roof block=Bloco de telhado
Tar=Alcatrão
Marble=Mármore
Brobble Spread=Calçado
Gravel Spread=Espalhamento de Cascalho
Tarmac Spread=Espalhamento das Estradas
Terrycloth towel=Toalha de Roupinha
Chess board tiling=Revestimento de xadrez
Fireplace=Lareira
Small bundle of sticks=Pequeno amontoado de gravetos
Tar base=Base para alcatrão
Tar Knife=Faca de Alcatrão

View File

@ -1,20 +0,0 @@
# textdomain: building_blocks
Granite=Гранит
Grate=Каминная решётка
Streak Free Glass=Стекло без стыков
Wood Framed Glass=Деревянное окно
Adobe=Саман
Fake Grass=Псевдо трава
Hardwood=Твёрдая древесина
Roof block=Кровельный блок
Tar=Смола
Marble=Мрамор
Brobble Spread=Настил кирпичного булыжника
Gravel Spread=Настил гравия
Tarmac Spread=Покрытие гудронной смолой
Terrycloth towel=Махровое полотенце
Chess board tiling=Шахматная плитка
Fireplace=Камин
Small bundle of sticks=Небольшая связка палок
Tar base=Смоляная основа
Tar Knife=Смоляной нож

View File

@ -1,20 +0,0 @@
# textdomain: building_blocks
Granite=花岗岩
Grate=磨碎
Streak Free Glass=无条纹玻璃
Wood Framed Glass=木框玻璃
Adobe=土砖
Fake Grass=塑料草
Hardwood=硬木
Roof block=天台
Tar=焦油
Marble=大理石
Brobble Spread=石砖路面
Gravel Spread=碎石路面
Tarmac Spread=柏油路面
Terrycloth towel=毛巾
Chess board tiling=棋盘铺贴
Fireplace=壁炉
Small bundle of sticks=小捆棍子
Tar base=焦油基
Tar Knife=焦油刀

View File

@ -1,20 +0,0 @@
# textdomain: building_blocks
Granite=
Grate=
Streak Free Glass=
Wood Framed Glass=
Adobe=
Fake Grass=
Hardwood=
Roof block=
Tar=
Marble=
Brobble Spread=
Gravel Spread=
Tarmac Spread=
Terrycloth towel=
Chess board tiling=
Fireplace=
Small bundle of sticks=
Tar base=
Tar Knife=

View File

@ -1,3 +0,0 @@
name = building_blocks
depends = homedecor_common
optional_depends = moreblocks, gloopblocks, stairs, default

View File

@ -1,29 +1,39 @@
local S = minetest.get_translator("building_blocks")
local S = homedecor.gettext
local stairs_groups_names = {"cracky","choppy","flammable","crumbly","snappy"}
local function building_blocks_stairs(nodename, def)
if def.groups and (def.groups.crumbly or def.groups.oddly_breakable_by_hand) then
def.groups["handy"]=1
def._mcl_hardness=0.6
elseif def.groups and (def.groups.snappy or def.groups.choppy) then
def.groups["axey"]=5
def._mcl_hardness=1.6
elseif def.groups and (def.groups.cracky or def.groups.crumbly) then
def.groups["pickaxey"]=5
def._mcl_hardness=1.6
end
def.is_ground_content = def.is_ground_content == true
minetest.register_node(nodename, def)
if minetest.get_modpath("moreblocks") then
if minetest.get_modpath("moreblocks") or minetest.get_modpath("stairs") then
local mod, name = nodename:match("(.*):(.*)")
stairsplus:register_all(mod, name, nodename, def)
minetest.register_alias(mod .. ":slab_" .. name, "stairs:slab_" .. name)
minetest.register_alias(mod .. ":stair_" .. name, "stairs:stair_" .. name)
local stairs_groups = {}
for _, groupname in ipairs(stairs_groups_names) do
stairs_groups[groupname] = def.groups[groupname]
end
minetest.register_alias("stairs:slab_" .. name, mod .. ":slab_" .. name)
minetest.register_alias("stairs:stair_" .. name, mod .. ":stair_" .. name)
minetest.register_alias("stairs:stair_inner_" .. name, mod .. ":stair_" .. name .. "_inner")
minetest.register_alias("stairs:stair_outer_" .. name, mod .. ":stair_" .. name .. "_outer")
if minetest.get_modpath("moreblocks") then
stairsplus:register_all(
mod,
name,
nodename,
{
description = def.description,
tiles = def.tiles,
groups = stairs_groups,
sounds = def.sounds,
}
)
else
stairs.register_stair_and_slab(name,nodename,
stairs_groups,
def.tiles,
("%s Stair"):format(def.description),
("%s Slab"):format(def.description),
def.sounds
)
end
end
end
@ -33,12 +43,9 @@ building_blocks_stairs("building_blocks:grate", {
tiles = {"building_blocks_grate.png"},
paramtype = "light",
sunlight_propagates = true,
is_ground_content = false,
use_texture_alpha = "clip",
groups = {cracky=1, dig_generic=3},
_sound_def = {
key = "node_sound_metal_defaults",
},
is_ground_content = true,
groups = {cracky=1},
sounds = default.node_sound_metal_defaults(),
})
building_blocks_stairs("building_blocks:smoothglass", {
drawtype = "glasslike",
@ -46,12 +53,9 @@ building_blocks_stairs("building_blocks:smoothglass", {
tiles = {"building_blocks_sglass.png"},
paramtype = "light",
sunlight_propagates = true,
is_ground_content = false,
use_texture_alpha = "clip",
is_ground_content = true,
groups = {snappy=3,cracky=3,oddly_breakable_by_hand=3},
_sound_def = {
key = "node_sound_glass_defaults",
},
sounds = default.node_sound_glass_defaults(),
})
building_blocks_stairs("building_blocks:woodglass", {
drawtype = "glasslike",
@ -59,72 +63,54 @@ building_blocks_stairs("building_blocks:woodglass", {
tiles = {"building_blocks_wglass.png"},
paramtype = "light",
sunlight_propagates = true,
is_ground_content = false,
use_texture_alpha = "clip",
is_ground_content = true,
groups = {snappy=3,cracky=3,oddly_breakable_by_hand=3},
_sound_def = {
key = "node_sound_glass_defaults",
},
sounds = default.node_sound_glass_defaults(),
})
building_blocks_stairs("building_blocks:Adobe", {
tiles = {"building_blocks_Adobe.png"},
description = S("Adobe"),
is_ground_content = false,
groups = {crumbly=3, dig_stone=2},
_sound_def = {
key = "node_sound_stone_defaults",
},
is_ground_content = true,
groups = {crumbly=3},
sounds = default.node_sound_stone_defaults(),
})
local grasstex = {
homedecor.textures.grass.top,
homedecor.textures.grass.dirt,
homedecor.textures.grass.side
}
building_blocks_stairs("building_blocks:fakegrass", {
tiles = grasstex,
tiles = {"default_grass.png", "default_dirt.png", "default_dirt.png^default_grass_side.png"},
description = S("Fake Grass"),
is_ground_content = false,
groups = {crumbly=3, dig_sand=3},
_sound_def = {
key = "node_sound_dirt_defaults",
},
is_ground_content = true,
groups = {crumbly=3},
sounds = default.node_sound_dirt_defaults({
footstep = {name="default_grass_footstep", gain=0.4},
}),
})
building_blocks_stairs("building_blocks:hardwood", {
tiles = {"building_blocks_hardwood.png"},
is_ground_content = false,
is_ground_content = true,
description = S("Hardwood"),
groups = {choppy=1,flammable=1, dig_tree=1},
_sound_def = {
key = "node_sound_wood_defaults",
},
groups = {choppy=1,flammable=1},
sounds = default.node_sound_wood_defaults(),
})
building_blocks_stairs("building_blocks:Roofing", {
tiles = {"building_blocks_Roofing.png"},
is_ground_content = false,
is_ground_content = true,
description = S("Roof block"),
groups = {snappy=3, dig_generic=4},
_sound_def = {
key = "node_sound_stone_defaults",
},
groups = {snappy=3},
sounds = default.node_sound_stone_defaults(),
})
building_blocks_stairs("building_blocks:Tar", {
description = S("Tar"),
tiles = {"building_blocks_tar.png"},
is_ground_content = false,
groups = {crumbly=1, tar_block = 1, dig_generic=4},
_sound_def = {
key = "node_sound_stone_defaults",
},
is_ground_content = true,
groups = {crumbly=1, tar_block = 1},
sounds = default.node_sound_stone_defaults(),
})
building_blocks_stairs("building_blocks:Marble", {
description = S("Marble"),
tiles = {"building_blocks_marble.png"},
is_ground_content = false,
groups = {cracky=3, marble = 1, dig_stone=2},
_sound_def = {
key = "node_sound_stone_defaults",
},
is_ground_content = true,
groups = {cracky=3, marble = 1},
sounds = default.node_sound_stone_defaults(),
})
minetest.register_node("building_blocks:brobble_spread", {
@ -138,36 +124,34 @@ minetest.register_node("building_blocks:brobble_spread", {
walkable = false,
selection_box = {
type = "fixed",
-- but how to specify the dimensions for curved and sideways rails?
fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2},
-- but how to specify the dimensions for curved and sideways rails?
fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2},
},
sunlight_propagates = true,
is_ground_content = false,
groups = {crumbly=3, dig_generic=4, handy=1},
_mcl_hardness=0.6
is_ground_content = true,
groups = {crumbly=3},
})
if not minetest.get_modpath("moreblocks") or not minetest.get_modpath("gloopblocks") then
local graveltex = homedecor.textures.gravel
minetest.register_node("building_blocks:gravel_spread", {
drawtype = "raillike",
description = S("Gravel Spread"),
tiles = {graveltex},
tiles = {"default_gravel.png"},
inventory_image = "building_blocks_gravel_spread_inv.png",
paramtype = "light",
walkable = false,
selection_box = {
type = "fixed",
-- but how to specify the dimensions for curved and sideways rails?
fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2},
-- but how to specify the dimensions for curved and sideways rails?
fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2},
},
sunlight_propagates = true,
is_ground_content = false,
groups = {crumbly=2, dig_generic=4, handy=1},
_mcl_hardness=0.6,
_sound_def = {
key = "node_sound_dirt_defaults",
},
is_ground_content = true,
groups = {crumbly=2},
sounds = default.node_sound_dirt_defaults({
footstep = {name="default_gravel_footstep", gain=0.5},
dug = {name="default_gravel_footstep", gain=1.0},
}),
})
end
@ -180,16 +164,13 @@ minetest.register_node("building_blocks:Tarmac_spread", {
walkable = false,
selection_box = {
type = "fixed",
-- but how to specify the dimensions for curved and sideways rails?
fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2},
-- but how to specify the dimensions for curved and sideways rails?
fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2},
},
sunlight_propagates = true,
is_ground_content = false,
groups = {cracky=3, dig_generic=4, pickaxey=5},
_mcl_hardness=1.6,
_sound_def = {
key = "node_sound_dirt_defaults",
},
is_ground_content = true,
groups = {cracky=3},
sounds = default.node_sound_dirt_defaults(),
})
minetest.register_node("building_blocks:terrycloth_towel", {
drawtype = "raillike",
@ -200,13 +181,12 @@ minetest.register_node("building_blocks:terrycloth_towel", {
walkable = false,
selection_box = {
type = "fixed",
-- but how to specify the dimensions for curved and sideways rails?
fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2},
-- but how to specify the dimensions for curved and sideways rails?
fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2},
},
sunlight_propagates = true,
is_ground_content = false,
groups = {crumbly=3, dig_generic=4, handy=1},
_mcl_hardness=0.6
is_ground_content = true,
groups = {crumbly=3},
})
minetest.register_node("building_blocks:BWtile", {
@ -228,9 +208,8 @@ minetest.register_node("building_blocks:BWtile", {
fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2},
},
sunlight_propagates = true,
is_ground_content = false,
groups = {crumbly=3, dig_generic=4, handy=1},
_mcl_hardness=0.6
is_ground_content = true,
groups = {crumbly=3},
})
minetest.register_node("building_blocks:Fireplace", {
@ -243,12 +222,9 @@ minetest.register_node("building_blocks:Fireplace", {
},
paramtype = "light",
paramtype2 = "facedir",
light_source = minetest.LIGHT_MAX,
light_source = default.LIGHT_MAX,
sunlight_propagates = true,
is_ground_content = false,
groups = {cracky=2, dig_generic=4, pickaxey=5},
_mcl_hardness=1.6,
_sound_def = {
key = "node_sound_stone_defaults",
},
is_ground_content = true,
groups = {cracky=2},
sounds = default.node_sound_stone_defaults(),
})

View File

@ -1,4 +1,4 @@
local S = minetest.get_translator("building_blocks")
local S = homedecor.gettext
minetest.register_craftitem("building_blocks:sticks", {
description = S("Small bundle of sticks"),

View File

@ -1,4 +1,4 @@
local materials = homedecor.materials
local S = homedecor.gettext
if minetest.get_modpath("moreblocks") then
minetest.register_craft({
@ -22,15 +22,15 @@ end
minetest.register_craft({
output = 'building_blocks:Adobe 3',
recipe = {
{materials.sand},
{materials.clay_lump},
{"default:sand"},
{"default:clay"},
{"group:stick"},
}
})
minetest.register_craft({
output = 'building_blocks:brobble_spread 4',
recipe = {
{materials.brick, materials.cobble, materials.brick},
{"default:brick", "default:cobble", "default:brick"},
}
})
minetest.register_craft({
@ -43,21 +43,21 @@ minetest.register_craft({
minetest.register_craft({
output = 'building_blocks:fakegrass 2',
recipe = {
{'group:leaves'},
{materials.dirt},
{'default:leaves'},
{"default:dirt"},
}
})
minetest.register_craft({
output = 'building_blocks:Fireplace 1',
recipe = {
{materials.steel_ingot, "building_blocks:sticks", materials.steel_ingot},
{"default:steel_ingot", "building_blocks:sticks", "default:steel_ingot"},
}
})
minetest.register_craft({
output = 'building_blocks:grate 1',
recipe = {
{materials.steel_ingot, materials.steel_ingot},
{materials.glass_block, materials.glass_block},
{"default:steel_ingot", "default:steel_ingot"},
{"default:glass", "default:glass"},
}
})
@ -65,27 +65,25 @@ if not minetest.get_modpath("moreblocks") or not minetest.get_modpath("gloopbloc
minetest.register_craft({
output = 'building_blocks:gravel_spread 4',
recipe = {
{materials.gravel, materials.gravel, materials.gravel},
{"default:gravel", "default:gravel", "default:gravel"},
}
})
end
if minetest.get_modpath("default") then
minetest.register_craft({
output = 'building_blocks:hardwood 2',
recipe = {
{"default:wood", "default:junglewood"},
{"default:junglewood", "default:wood"},
}
})
minetest.register_craft({
output = 'building_blocks:hardwood 2',
recipe = {
{"default:junglewood", "default:wood"},
{"default:wood", "default:junglewood"},
}
})
end
minetest.register_craft({
output = 'building_blocks:hardwood 2',
recipe = {
{"default:wood", "default:junglewood"},
{"default:junglewood", "default:wood"},
}
})
minetest.register_craft({
output = 'building_blocks:hardwood 2',
recipe = {
{"default:junglewood", "default:wood"},
{"default:wood", "default:junglewood"},
}
})
minetest.register_craft({
output = 'building_blocks:knife 1',
recipe = {
@ -96,9 +94,9 @@ minetest.register_craft({
minetest.register_craft({
output = "building_blocks:Marble 9",
recipe = {
{materials.clay_lump, "group:tar_block", materials.clay_lump},
{"group:tar_block",materials.clay_lump, "group:tar_block"},
{materials.clay_lump, "group:tar_block",materials.clay_lump},
{"default:clay", "group:tar_block", "default:clay"},
{"group:tar_block","default:clay", "group:tar_block"},
{"default:clay", "group:tar_block","default:clay"},
}
})
minetest.register_craft({
@ -117,15 +115,15 @@ minetest.register_craft({
minetest.register_craft({
output = 'building_blocks:tar_base 4',
recipe = {
{materials.coal_lump, materials.gravel},
{materials.gravel, materials.coal_lump}
{"default:coal_lump", "default:gravel"},
{"default:gravel", "default:coal_lump"}
}
})
minetest.register_craft({
output = 'building_blocks:tar_base 4',
recipe = {
{materials.gravel, materials.coal_lump},
{materials.coal_lump, materials.gravel}
{"default:gravel", "default:coal_lump"},
{"default:coal_lump", "default:gravel"}
}
})
minetest.register_craft({
@ -143,15 +141,15 @@ minetest.register_craft({
minetest.register_craft({
output = 'building_blocks:woodglass 1',
recipe = {
{"group:wood"},
{materials.glass_block},
{"default:wood"},
{"default:glass"},
}
})
minetest.register_craft({
type = "cooking",
output = "building_blocks:smoothglass",
recipe = materials.glass_block
recipe = "default:glass"
})
minetest.register_craft({
type = "cooking",

Binary file not shown.

Before

Width:  |  Height:  |  Size: 256 B

After

Width:  |  Height:  |  Size: 260 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 514 B

After

Width:  |  Height:  |  Size: 568 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 320 B

After

Width:  |  Height:  |  Size: 324 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 340 B

After

Width:  |  Height:  |  Size: 381 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.2 KiB

After

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.2 KiB

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 151 B

After

Width:  |  Height:  |  Size: 195 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 252 B

After

Width:  |  Height:  |  Size: 261 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 532 B

After

Width:  |  Height:  |  Size: 581 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 242 B

After

Width:  |  Height:  |  Size: 302 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.2 KiB

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 285 B

After

Width:  |  Height:  |  Size: 286 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 176 B

After

Width:  |  Height:  |  Size: 177 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 370 B

After

Width:  |  Height:  |  Size: 450 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 272 B

After

Width:  |  Height:  |  Size: 280 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 118 B

After

Width:  |  Height:  |  Size: 261 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 362 B

After

Width:  |  Height:  |  Size: 409 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.0 KiB

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 498 B

After

Width:  |  Height:  |  Size: 502 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 751 B

After

Width:  |  Height:  |  Size: 766 B

38
computer/CHANGES.txt Normal file
View File

@ -0,0 +1,38 @@
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.

43
computer/README.txt Normal file
View File

@ -0,0 +1,43 @@

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/

29
computer/TODO.txt Normal file
View File

@ -0,0 +1,29 @@
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 :)

331
computer/computers.lua Normal file
View File

@ -0,0 +1,331 @@
local S = homedecor.gettext
-- Amiga 500 lookalike
computer.register("computer:shefriendSOO", {
description = "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 = "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 = "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 = "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 = "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 = "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 = "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 = "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 = "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 = "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
})

4
computer/depends.txt Normal file
View File

@ -0,0 +1,4 @@
default
homedecor_common
basic_materials
unifieddyes

99
computer/init.lua Normal file
View File

@ -0,0 +1,99 @@
computer = {}
screwdriver = screwdriver or {}
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")

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,124 @@
# Blender v2.69 (sub 0) OBJ File: ''
# www.blender.org
mtllib computer_laptop.mtl
o Cube.001
v -0.340277 0.022636 0.335290
v -0.340277 0.013075 0.362499
v 0.332320 0.022636 0.335292
v 0.332320 -0.432772 0.182772
v 0.332320 0.013075 0.362501
v -0.340276 -0.499994 -0.312651
v -0.340276 -0.432772 -0.312651
v 0.332321 -0.499994 -0.312650
v -0.340277 -0.499994 0.182771
v 0.332320 -0.499994 0.182772
v -0.340277 -0.432772 0.182771
v -0.340278 -0.432772 0.209979
v 0.332320 -0.432772 0.209981
v 0.332320 -0.499994 0.209981
v -0.340278 -0.499994 0.209979
v -0.319957 -0.417924 0.194820
v -0.319957 -0.001053 0.334433
v 0.312000 -0.417925 0.194821
v -0.340277 -0.432772 -0.159321
v 0.332321 -0.432772 -0.312650
v 0.311999 -0.001054 0.334434
v 0.332321 -0.432772 -0.159320
vt 0.682604 0.005242
vt 0.682603 0.021207
vt 0.310265 0.005245
vt 0.044426 0.009206
vt 0.310266 0.021211
vt 0.753340 0.119988
vt 0.810356 0.119988
vt 0.753340 0.597765
vt 0.856851 0.982221
vt 0.745750 0.982220
vt 0.856851 0.831387
vt 0.948453 0.009205
vt 0.878028 0.982221
vt 0.878028 0.831387
vt 0.983700 0.982221
vt 0.862953 0.831387
vt 0.862953 0.982221
vt 0.728292 0.490807
vt 0.728292 0.989869
vt 0.010900 0.490807
vt 0.831643 0.129995
vt 0.982007 0.129995
vt 0.831643 0.789586
vt 0.758249 0.754841
vt 0.758228 0.812823
vt 0.756060 0.752868
vt 0.798519 0.812617
vt 0.756052 0.814797
vt 0.798577 0.754909
vt 0.800285 0.814587
vt 0.707729 0.114386
vt 0.707729 0.471212
vt 0.006162 0.114385
vt 0.345650 0.099088
vt 0.497058 0.032709
vt 0.497058 0.099088
vt 0.990661 0.099453
vt 0.838275 0.032645
vt 0.990661 0.032645
vt 0.007709 0.008663
vt 0.012705 0.022873
vt 0.983559 0.009737
vt 0.943457 0.023414
vt 0.049421 0.023416
vt 0.810356 0.597766
vt 0.745750 0.831387
vt 0.983700 0.831387
vt 0.010900 0.989869
vt 0.982007 0.789586
vt 0.800332 0.752938
vt 0.006162 0.471212
vt 0.007844 0.099088
vt 0.007844 0.032709
vt 0.498289 0.099453
vt 0.498289 0.032646
vt 0.978563 0.023946
usemtl Material.001
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

View File

@ -0,0 +1,138 @@
# Blender v2.69 (sub 0) OBJ File: ''
# www.blender.org
mtllib computer_laptop_closed.mtl
o Cube.001
v 0.332320 -0.432772 0.182772
v -0.340276 -0.499994 -0.312651
v -0.340276 -0.432772 -0.312651
v 0.332321 -0.499994 -0.312650
v -0.340277 -0.499994 0.182771
v 0.332320 -0.499994 0.182772
v -0.340277 -0.432772 0.182771
v -0.340278 -0.432772 0.209979
v 0.332320 -0.432772 0.209981
v 0.332320 -0.499994 0.209981
v -0.340278 -0.499994 0.209979
v -0.340277 -0.432772 -0.159321
v 0.332321 -0.432772 -0.312650
v 0.332321 -0.432772 -0.159320
v -0.339100 -0.432290 -0.312591
v -0.339100 -0.401111 -0.312123
v 0.331143 -0.432288 -0.312592
v 0.331143 -0.432434 0.206702
v 0.331143 -0.401109 -0.312123
v -0.339100 -0.432435 0.206702
v -0.339101 -0.404537 0.197368
v 0.331143 -0.404535 0.197367
v -0.318852 -0.425175 0.187344
v -0.318852 -0.425042 -0.288007
v 0.310895 -0.425173 0.187344
v 0.310894 -0.425040 -0.288006
vt 0.753340 0.119988
vt 0.810356 0.119988
vt 0.753340 0.597765
vt 0.856851 0.982221
vt 0.745750 0.982220
vt 0.856851 0.831387
vt 0.878028 0.831387
vt 0.878028 0.982221
vt 0.862953 0.831387
vt 0.862953 0.982221
vt 0.858063 0.829423
vt 0.885587 0.829423
vt 0.858063 0.950158
vt 0.935597 0.852882
vt 0.935597 0.922715
vt 0.798294 0.852882
vt 0.345650 0.099088
vt 0.497058 0.032709
vt 0.497058 0.099088
vt 0.990661 0.099453
vt 0.838275 0.032645
vt 0.990661 0.032645
vt 0.007709 0.008663
vt 0.044426 0.009206
vt 0.012705 0.022873
vt 0.948453 0.009205
vt 0.983559 0.009737
vt 0.943457 0.023414
vt 0.810356 0.597766
vt 0.745750 0.831387
vt 0.885587 0.950158
vt 0.912135 0.962581
vt 0.785835 0.838012
vt 0.886333 0.908011
vt 0.922048 0.840165
vt 0.798294 0.922715
vt 0.007844 0.099088
vt 0.007844 0.032709
vt 0.498289 0.099453
vt 0.498289 0.032646
vt 0.049421 0.023416
vt 0.978563 0.023946
vt 0.682604 0.005242
vt 0.682603 0.021207
vt 0.310265 0.005245
vt 0.310266 0.021211
vt 0.983700 0.982221
vt 0.922420 0.868181
vt 0.922420 0.951695
vt 0.802372 0.868181
vt 0.758249 0.754841
vt 0.758228 0.812823
vt 0.756060 0.752868
vt 0.798519 0.812617
vt 0.756052 0.814797
vt 0.798577 0.754909
vt 0.800285 0.814587
vt 0.983700 0.831387
vt 0.802372 0.951695
vt 0.800332 0.752938
vt 0.896350 0.948981
vt 0.903598 0.848845
vt 0.888354 0.925385
vt 0.811076 0.850308
usemtl Material.001
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

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,33 @@
# Blender v2.72 (sub 0) OBJ File: ''
# www.blender.org
mtllib computer_tower.mtl
o Cube.001
v -0.182508 -0.499998 0.450000
v -0.182508 -0.499998 -0.349946
v 0.182508 -0.499998 -0.349946
v 0.182508 -0.499998 0.450000
v -0.182508 0.335734 0.450000
v 0.182508 0.335734 0.450000
v 0.182508 0.335734 -0.349946
v -0.182508 0.335734 -0.349947
vt 0.999994 0.750017
vt 0.500006 0.749983
vt 0.500002 0.499996
vt 0.999997 0.500009
vt 0.499989 0.999941
vt 0.999986 0.999931
vt 0.500005 0.000003
vt 0.000007 0.500002
vt -0.000003 0.000003
vt 0.250005 0.999991
vt 0.250005 0.499995
vt 0.999993 0.000002
vt 0.000017 0.999997
usemtl Material.001
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

View File

@ -0,0 +1,143 @@
# Blender v2.66 (sub 1) OBJ File: ''
# www.blender.org
mtllib tetris_arcade.mtl
o Cube.001
v -0.450000 1.299500 -0.450000
v -0.450000 1.299500 -0.500000
v 0.450000 1.299500 -0.500000
v 0.450000 1.299500 -0.450000
v -0.450000 1.499500 -0.450000
v -0.450000 1.499500 -0.500000
v 0.450000 1.499500 -0.500000
v 0.450000 1.499500 -0.450000
v 0.450000 -0.495000 -0.500000
v 0.450000 0.305000 -0.500001
v -0.450000 -0.495000 -0.499999
v -0.450000 0.305000 -0.500000
v 0.450000 -0.498500 0.500000
v 0.450000 -0.498500 -0.500000
v 0.500000 -0.498500 -0.500000
v 0.500000 -0.498500 0.500000
v 0.450000 1.498500 0.500000
v 0.450000 1.498500 -0.500000
v 0.500000 1.498500 -0.500000
v 0.500000 1.498500 0.500000
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
v -0.500000 -0.498500 0.500000
v -0.500000 -0.498500 -0.500000
v -0.450000 -0.498500 -0.500000
v -0.450000 -0.498500 0.500000
v -0.500000 1.498500 0.500000
v -0.500000 1.498500 -0.500000
v -0.450000 1.498500 -0.500000
v -0.450000 1.498500 0.500000
v 0.450000 0.304976 -0.499762
v 0.450000 0.474024 -0.137239
v -0.450000 0.304976 -0.499761
v -0.450000 0.474024 -0.137238
v 0.450000 0.472946 -0.138083
v 0.450000 0.613900 -0.086780
v -0.450000 0.472946 -0.138082
v -0.450000 0.613900 -0.086779
v 0.450000 0.610884 -0.085130
v 0.450000 1.398731 0.053788
v -0.450000 0.610884 -0.085130
v -0.450000 1.398731 0.053789
v 0.450000 1.395000 0.055138
v 0.450000 1.495000 0.055138
v -0.450000 1.395000 0.055138
v -0.450000 1.495000 0.055138
vt 0.250108 0.745030
vt 0.250224 0.516409
vt 0.494888 0.516008
vt 0.495027 0.744660
vt 0.500090 0.744658
vt 0.250080 0.744698
vt 0.250023 0.693307
vt 0.500163 0.693337
vt 0.244872 0.999900
vt 0.000100 0.999900
vt 0.000100 0.925965
vt 0.244701 0.925965
vt -0.000234 0.985285
vt 0.246386 0.985398
vt 0.246568 0.999900
vt 0.254685 0.396330
vt 0.255312 0.252326
vt 0.489851 0.252497
vt 0.489923 0.396494
vt 0.746604 0.251526
vt 1.000599 0.251553
vt 1.000481 0.749319
vt 0.748216 0.749150
vt 0.971448 0.251053
vt 0.999396 0.251108
vt 1.000262 0.749144
vt 0.972149 0.748806
vt 0.250110 0.749633
vt 0.000464 0.749633
vt 0.001279 0.251648
vt 0.250023 0.251690
vt 0.742499 0.744632
vt 0.500700 0.744632
vt 0.500700 0.255368
vt 0.742499 0.255368
vt 0.951737 0.252687
vt 0.999900 0.252686
vt 0.999900 0.748679
vt 0.951737 0.748679
vt 1.000029 0.749233
vt 0.744529 0.749104
vt 0.745177 0.251367
vt 1.001019 0.251067
vt 0.255742 0.485017
vt 0.255492 0.401623
vt 0.494936 0.401277
vt 0.495186 0.485021
vt 0.260753 0.515705
vt 0.260629 0.484664
vt 0.494387 0.484878
vt 0.494282 0.515673
vt -0.000037 0.745106
vt 0.000017 0.703328
vt 0.245542 0.703882
vt 0.245632 0.745399
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.749950
vt 0.999900 0.250049
vt 0.999900 0.749949
vt 0.749950 0.749950
vt 0.749950 0.250050
usemtl Material.001
s off
f 46/1 45/2 47/3 48/4
usemtl Material.001_tetris_arcade.png
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
usemtl Material.001_NONE
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

61
computer/printers.lua Normal file
View File

@ -0,0 +1,61 @@
-- Printers of some kind or another
local S = homedecor.gettext
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,
})

141
computer/recipes.lua Normal file
View File

@ -0,0 +1,141 @@
-- 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", "basic_materials:plastic_sheet", },
{ "dye:black", "default:glass", "dye:black" },
{ "basic_materials:plastic_sheet", "basic_materials:energy_crystal", "basic_materials:plastic_sheet" }
}
})

290
computer/tetris.lua Normal file
View File

@ -0,0 +1,290 @@
local S = homedecor.gettext
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 = screwdriver.rotate_simple,
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
})

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 216 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 313 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 313 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 315 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 315 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 483 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 321 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 313 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 415 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 331 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 315 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 461 B

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: 122 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 129 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: 88 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 130 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 220 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 207 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 170 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 154 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 166 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 183 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 182 B

Some files were not shown because too many files have changed in this diff Show More