New furniture and task.

master
Nathan Salapat 2021-11-26 14:35:53 -06:00
parent 1ac98a2914
commit e8e9d414d6
51 changed files with 1137 additions and 47 deletions

View File

@ -368,7 +368,7 @@ local function generate_random_board(rez, count, icons)
tex[#tex+1] = ":"..math.random(1,rez-32)..","..math.random(1,rez-32)
.."="..icons[math.random(1,#icons)]
end
tex[#tex+1] = "^[resize:16x16)"
tex[#tex+1] = "^[resize:32x32)"
return table.concat(tex)
end

View File

@ -27,6 +27,7 @@ minetest.register_craftitem('color:brush', {
end
end,
on_use = function(itemstack, user, pointed_thing)
if pointed_thing.type ~= 'node' then return end
local player = user:get_player_name()
local pos = minetest.get_pointed_thing_position(pointed_thing)
local node = minetest.get_node(pos)

View File

@ -62,7 +62,7 @@ function color.register_stair(subname, images, palette, hex, worldaligntex)
paramtype = 'light',
paramtype2 = 'colorfacedir',
is_ground_content = false,
groups = {breakable=1},
groups = {breakable=1, stainable=1},
node_box = {
type = 'fixed',
fixed = {
@ -77,8 +77,6 @@ function color.register_stair(subname, images, palette, hex, worldaligntex)
return rotate_and_place(itemstack, placer, pointed_thing)
end,
on_punch = color.make_darker,
on_rightclick = color.make_lighter,
})
end
@ -113,7 +111,7 @@ function color.register_slab(subname, images, palette, hex, worldaligntex)
paramtype = 'light',
paramtype2 = 'colorfacedir',
is_ground_content = false,
groups = {breakable=1},
groups = {breakable=1, stainable=1},
node_box = {
type = 'fixed',
fixed = {-0.5, -0.5, -0.5, 0.5, 0, 0.5},
@ -150,8 +148,6 @@ function color.register_slab(subname, images, palette, hex, worldaligntex)
return rotate_and_place(itemstack, placer, pointed_thing)
end
end,
on_punch = color.make_darker,
on_rightclick = color.make_lighter,
})
end
@ -189,7 +185,7 @@ function color.register_stair_inner(subname, images, palette, hex, worldaligntex
paramtype = 'light',
paramtype2 = 'colorfacedir',
is_ground_content = false,
groups = {breakable=1},
groups = {breakable=1, stainable=1},
node_box = {
type = 'fixed',
fixed = {
@ -205,8 +201,6 @@ function color.register_stair_inner(subname, images, palette, hex, worldaligntex
return rotate_and_place(itemstack, placer, pointed_thing)
end,
on_punch = color.make_darker,
on_rightclick = color.make_lighter,
})
end
@ -245,7 +239,7 @@ function color.register_stair_outer(subname, images, palette, hex, worldaligntex
paramtype = 'light',
paramtype2 = 'colorfacedir',
is_ground_content = false,
groups = {breakable=1},
groups = {breakable=1, stainable=1},
node_box = {
type = 'fixed',
fixed = {
@ -260,8 +254,6 @@ function color.register_stair_outer(subname, images, palette, hex, worldaligntex
return rotate_and_place(itemstack, placer, pointed_thing)
end,
on_punch = color.make_darker,
on_rightclick = color.make_lighter,
})
end

View File

@ -214,6 +214,7 @@ for i in ipairs(dye_table) do
inventory_image = 'furniture_curtain_short_1.png^[multiply:'..hex,
paramtype = 'light',
paramtype2 = 'facedir',
walkable = false,
sunlight_propagates = true,
use_texture_alpha = 'clip',
selection_box = {
@ -270,6 +271,7 @@ for i in ipairs(dye_table) do
inventory_image = 'furniture_curtain_sl_1.png^[multiply:'..hex,
paramtype = 'light',
paramtype2 = 'facedir',
walkable = false,
sunlight_propagates = true,
use_texture_alpha = 'clip',
drop = 'furniture:curtain_ss_'..name..'_1',
@ -324,6 +326,7 @@ for i in ipairs(dye_table) do
inventory_image = 'furniture_curtain_sr_1.png^[multiply:'..hex,
paramtype = 'light',
paramtype2 = 'facedir',
walkable = false,
sunlight_propagates = true,
use_texture_alpha = 'clip',
drop = 'furniture:curtain_ss_'..name..'_1',
@ -378,6 +381,7 @@ for i in ipairs(dye_table) do
inventory_image = 'furniture_curtain_sc_1.png^[multiply:'..hex,
paramtype = 'light',
paramtype2 = 'facedir',
walkable = false,
sunlight_propagates = true,
use_texture_alpha = 'clip',
drop = 'furniture:curtain_ss_'..name..'_1',
@ -432,6 +436,7 @@ for i in ipairs(dye_table) do
inventory_image = 'furniture_curtain_tall_1.png^[multiply:'..hex,
paramtype = 'light',
paramtype2 = 'facedir',
walkable = false,
sunlight_propagates = true,
use_texture_alpha = 'clip',
selection_box = {
@ -488,6 +493,7 @@ for i in ipairs(dye_table) do
inventory_image = 'furniture_curtain_tl_1.png^[multiply:'..hex,
paramtype = 'light',
paramtype2 = 'facedir',
walkable = false,
sunlight_propagates = true,
use_texture_alpha = 'clip',
drop = 'furniture:curtain_tl_'..name..'_1',
@ -542,6 +548,7 @@ for i in ipairs(dye_table) do
inventory_image = 'furniture_curtain_tr_1.png^[multiply:'..hex,
paramtype = 'light',
paramtype2 = 'facedir',
walkable = false,
sunlight_propagates = true,
use_texture_alpha = 'clip',
drop = 'furniture:curtain_tl_'..name..'_1',
@ -596,6 +603,7 @@ for i in ipairs(dye_table) do
inventory_image = 'furniture_curtain_tc_1.png^[multiply:'..hex,
paramtype = 'light',
paramtype2 = 'facedir',
walkable = false,
sunlight_propagates = true,
use_texture_alpha = 'clip',
drop = 'furniture:curtain_tl_'..name..'_1',

View File

@ -99,6 +99,7 @@ dofile(minetest.get_modpath('furniture')..'/library.lua') --Books things.
dofile(minetest.get_modpath('furniture')..'/misc.lua') --Miscilanious things that don't particularly fit any single category
dofile(minetest.get_modpath('furniture')..'/office.lua') --Things you'd find in an office.
dofile(minetest.get_modpath('furniture')..'/outdoors.lua')
dofile(minetest.get_modpath('furniture')..'/retail_shelving.lua') --Shelves like you'd find in a store.
dofile(minetest.get_modpath('furniture')..'/seating.lua') --chairs, benches, stools
dofile(minetest.get_modpath('furniture')..'/storage.lua') --Chests, boxes, etc.
dofile(minetest.get_modpath('furniture')..'/tables.lua') --Not sure if I'll ever have more than one table.

View File

@ -103,6 +103,60 @@ minetest.register_node('furniture:cabinet_counter_corner_outside', {
on_punch = furniture.punch
})
minetest.register_node('furniture:cabinet_counter_1', {
description = 'Cabinet with Countertop',
drawtype = 'mesh',
mesh = 'furniture_cabinet_counter.obj',
tiles = {'furniture_cabinet_counter_1.png'},
paramtype = 'light',
paramtype2 = 'facedir',
selection_box = {
type = 'fixed',
fixed = {-.5, -.5, -.5, .5, .5, .5},
},
collision_box = {
type = 'fixed',
fixed = {-.5, -.5, -.5, .5, .5, .5},
},
groups = {breakable=1, stash=1},
})
minetest.register_node('furniture:cabinet_counter_corner_inside_1', {
description = 'Cabinet with Countertop',
drawtype = 'mesh',
mesh = 'furniture_cabinet_counter_corner_inside.obj',
tiles = {'furniture_cabinet_counter_1.png'},
paramtype = 'light',
paramtype2 = 'facedir',
selection_box = {
type = 'fixed',
fixed = {-.5, -.5, -.5, .5, .5, .5},
},
collision_box = {
type = 'fixed',
fixed = {-.5, -.5, -.5, .5, .5, .5},
},
groups = {breakable=1, stash=1},
})
minetest.register_node('furniture:cabinet_counter_corner_outside_1', {
description = 'Cabinet with Countertop',
drawtype = 'mesh',
mesh = 'furniture_cabinet_counter_corner_outside.obj',
tiles = {'furniture_cabinet_counter_1.png'},
paramtype = 'light',
paramtype2 = 'facedir',
selection_box = {
type = 'fixed',
fixed = {-.5, -.5, -.5, .5, .5, .5},
},
collision_box = {
type = 'fixed',
fixed = {-.5, -.5, -.5, .5, .5, .5},
},
groups = {breakable=1, stash=1},
})
minetest.register_node('furniture:microwave', {
description = 'Microwave',
drawtype = 'mesh',

View File

@ -71,17 +71,21 @@ minetest.register_node('furniture:railing_corner', {
paramtype2 = 'facedir',
selection_box = {
type = 'fixed',
fixed = {-.5, -.5, .4375, .5, .4375, .5625},
fixed = {{-.5, -.5, .4375, .5, .4375, .5625},
{.5625, -.5, -.5, .4375, .4375, .5625}}
},
collision_box = {
type = 'fixed',
fixed = {-.5, -.5, .4375, .5, 1, .5625},
fixed = {{-.5, -.5, .4375, .5, .4375, .5625},
{.5625, -.5, -.5, .4375, .4375, .5625}}
},
groups = {breakable=1},
after_place_node = function(pos)
local node = minetest.get_node(pos)
local new_pos = {x = pos.x, y = pos.y+1, z = pos.z}
minetest.remove_node(pos)
minetest.add_node(new_pos, {name = 'furniture:railing_corner', param2 = node.param2})
if placer:get_player_control().sneak then
local node = minetest.get_node(pos)
local new_pos = {x = pos.x, y = pos.y+1, z = pos.z}
minetest.remove_node(pos)
minetest.add_node(new_pos, {name = 'furniture:railing_corner', param2 = node.param2})
end
end,
})

View File

@ -0,0 +1,30 @@
# Blender v2.93.5 OBJ File: 'furniture.blend'
# www.blender.org
o Retail_shelf_0_Cube.045
v 0.500000 -0.500000 0.437500
v 0.500000 0.500000 0.437500
v 0.500000 -0.500000 0.500000
v 0.500000 0.500000 0.500000
v -0.500000 -0.500000 0.437500
v -0.500000 0.500000 0.437500
v -0.500000 -0.500000 0.500000
v -0.500000 0.500000 0.500000
vt 0.296875 0.734375
vt 0.296875 0.984375
vt 0.281250 0.984375
vt 0.281250 0.734375
vt 0.562500 0.734375
vt 0.562500 0.984375
vt 0.546875 0.984375
vt 0.546875 0.734375
vt 0.546875 1.000000
vt 0.296875 1.000000
vn 1.0000 0.0000 0.0000
vn -1.0000 0.0000 0.0000
vn 0.0000 0.0000 -1.0000
vn 0.0000 1.0000 0.0000
s off
f 1/1/1 2/2/1 4/3/1 3/4/1
f 7/5/2 8/6/2 6/7/2 5/8/2
f 5/8/3 6/7/3 2/2/3 1/1/3
f 8/9/4 4/10/4 2/2/4 6/7/4

View File

@ -0,0 +1,81 @@
# Blender v2.93.5 OBJ File: 'furniture.blend'
# www.blender.org
o Retail_shelf_2_Cube.042
v 0.500000 -0.500000 0.437500
v 0.500000 0.500000 0.437500
v 0.500000 -0.500000 0.500000
v 0.500000 0.500000 0.500000
v -0.500000 -0.500000 0.437500
v -0.500000 0.500000 0.437500
v -0.500000 -0.500000 0.500000
v -0.500000 0.500000 0.500000
v -0.500000 0.250000 0.437500
v -0.500000 0.125000 0.437500
v -0.500000 0.250000 -0.312500
v -0.500000 0.187500 -0.312500
v 0.500000 0.250000 0.437500
v 0.500000 0.125000 0.437500
v 0.500000 0.250000 -0.312500
v 0.500000 0.187500 -0.312500
v 0.500000 -0.375000 -0.312500
v 0.500000 -0.312500 -0.312500
v 0.500000 -0.437500 0.437500
v 0.500000 -0.312500 0.437500
v -0.500000 -0.375000 -0.312500
v -0.500000 -0.312500 -0.312500
v -0.500000 -0.437500 0.437500
v -0.500000 -0.312500 0.437500
vt 0.296875 0.734375
vt 0.296875 0.984375
vt 0.281250 0.984375
vt 0.281250 0.734375
vt 0.031250 0.328125
vt 0.281250 0.328125
vt 0.281250 0.515625
vt 0.031250 0.515625
vt 0.562500 0.734375
vt 0.562500 0.984375
vt 0.546875 0.984375
vt 0.546875 0.734375
vt 0.031250 0.531250
vt 0.281250 0.531250
vt 0.546875 1.000000
vt 0.296875 1.000000
vt 0.296875 0.515625
vt 0.312500 0.328125
vt -0.000000 0.328125
vt 0.015625 0.515625
vt -0.000000 0.328125
vt 0.031250 0.328125
vt 0.031250 0.515625
vt 0.015625 0.515625
vt 0.296875 0.515625
vt 0.281250 0.515625
vt 0.281250 0.328125
vt 0.312500 0.328125
vt 0.031250 0.531250
vt 0.281250 0.531250
vt 0.281250 0.718750
vt 0.031250 0.718750
vt 0.281250 0.718750
vt 0.031250 0.718750
vn 1.0000 0.0000 0.0000
vn 0.0000 1.0000 0.0000
vn -1.0000 0.0000 0.0000
vn 0.0000 0.0000 -1.0000
vn 0.0000 -0.9965 -0.0830
s off
f 1/1/1 2/2/1 4/3/1 3/4/1
f 9/5/2 13/6/2 15/7/2 11/8/2
f 7/9/3 8/10/3 6/11/3 5/12/3
f 5/12/4 6/11/4 2/2/4 1/1/4
f 12/13/4 11/8/4 15/7/4 16/14/4
f 8/15/2 4/16/2 2/2/2 6/11/2
f 16/17/1 15/7/1 13/6/1 14/18/1
f 10/19/3 9/5/3 11/8/3 12/20/3
f 23/21/3 24/22/3 22/23/3 21/24/3
f 17/25/1 18/26/1 20/27/1 19/28/1
f 21/29/4 22/23/4 18/26/4 17/30/4
f 24/22/2 20/27/2 18/26/2 22/23/2
f 16/14/5 14/31/5 10/32/5 12/13/5
f 17/30/5 19/33/5 23/34/5 21/29/5

View File

@ -0,0 +1,106 @@
# Blender v2.93.5 OBJ File: 'furniture.blend'
# www.blender.org
o Retail_shelf_3_Cube.046
v 0.500000 -0.500000 0.437500
v 0.500000 0.500000 0.437500
v 0.500000 -0.500000 0.500000
v 0.500000 0.500000 0.500000
v -0.500000 -0.500000 0.437500
v -0.500000 0.500000 0.437500
v -0.500000 -0.500000 0.500000
v -0.500000 0.500000 0.500000
v -0.500000 0.000000 0.437500
v -0.500000 -0.125000 0.437500
v -0.500000 0.000000 -0.312500
v -0.500000 -0.062500 -0.312500
v 0.500000 0.000000 0.437500
v 0.500000 -0.125000 0.437500
v 0.500000 0.000000 -0.312500
v 0.500000 -0.062500 -0.312500
v 0.500000 -0.437500 -0.312500
v 0.500000 -0.375000 -0.312500
v 0.500000 -0.500000 0.437500
v 0.500000 -0.375000 0.437500
v -0.500000 -0.437500 -0.312500
v -0.500000 -0.375000 -0.312500
v -0.500000 -0.500000 0.437500
v -0.500000 -0.375000 0.437500
v -0.500000 0.437500 0.437500
v -0.500000 0.312500 0.437500
v -0.500000 0.437500 -0.312500
v -0.500000 0.375000 -0.312500
v 0.500000 0.437500 0.437500
v 0.500000 0.312500 0.437500
v 0.500000 0.437500 -0.312500
v 0.500000 0.375000 -0.312500
vt 0.296875 0.734375
vt 0.296875 0.984375
vt 0.281250 0.984375
vt 0.281250 0.734375
vt 0.031250 0.328125
vt 0.281250 0.328125
vt 0.281250 0.515625
vt 0.031250 0.515625
vt 0.562500 0.734375
vt 0.562500 0.984375
vt 0.546875 0.984375
vt 0.546875 0.734375
vt 0.031250 0.531250
vt 0.281250 0.531250
vt 0.546875 1.000000
vt 0.296875 1.000000
vt 0.296875 0.515625
vt 0.312500 0.328125
vt -0.000000 0.328125
vt 0.015625 0.515625
vt 0.000000 0.328125
vt 0.031250 0.328125
vt 0.031250 0.515625
vt 0.015625 0.515625
vt 0.296875 0.515625
vt 0.281250 0.515625
vt 0.281250 0.328125
vt 0.312500 0.328125
vt 0.031250 0.531250
vt 0.281250 0.531250
vt 0.281250 0.718750
vt 0.031250 0.718750
vt 0.281250 0.718750
vt 0.031250 0.718750
vt 0.031250 0.328125
vt 0.281250 0.328125
vt 0.281250 0.515625
vt 0.031250 0.515625
vt 0.031250 0.531250
vt 0.281250 0.531250
vt 0.296875 0.515625
vt 0.312500 0.328125
vt -0.000000 0.328125
vt 0.015625 0.515625
vt 0.281250 0.718750
vt 0.031250 0.718750
vn 1.0000 0.0000 0.0000
vn 0.0000 1.0000 0.0000
vn -1.0000 0.0000 0.0000
vn 0.0000 0.0000 -1.0000
vn 0.0000 -0.9965 -0.0830
s off
f 1/1/1 2/2/1 4/3/1 3/4/1
f 9/5/2 13/6/2 15/7/2 11/8/2
f 7/9/3 8/10/3 6/11/3 5/12/3
f 5/12/4 6/11/4 2/2/4 1/1/4
f 12/13/4 11/8/4 15/7/4 16/14/4
f 8/15/2 4/16/2 2/2/2 6/11/2
f 16/17/1 15/7/1 13/6/1 14/18/1
f 10/19/3 9/5/3 11/8/3 12/20/3
f 23/21/3 24/22/3 22/23/3 21/24/3
f 17/25/1 18/26/1 20/27/1 19/28/1
f 21/29/4 22/23/4 18/26/4 17/30/4
f 24/22/2 20/27/2 18/26/2 22/23/2
f 16/14/5 14/31/5 10/32/5 12/13/5
f 17/30/5 19/33/5 23/34/5 21/29/5
f 25/35/2 29/36/2 31/37/2 27/38/2
f 28/39/4 27/38/4 31/37/4 32/40/4
f 32/41/1 31/37/1 29/36/1 30/42/1
f 26/43/3 25/35/3 27/38/3 28/44/3
f 32/40/5 30/45/5 26/46/5 28/39/5

View File

@ -0,0 +1,78 @@
# Blender v2.93.5 OBJ File: 'furniture.blend'
# www.blender.org
o Retail_shelf_base_1_Cube.041
v 0.500000 -0.500000 0.437500
v 0.500000 0.500000 0.437500
v 0.500000 -0.500000 0.500000
v 0.500000 0.500000 0.500000
v -0.500000 -0.500000 0.437500
v -0.500000 0.500000 0.437500
v -0.500000 -0.500000 0.500000
v -0.500000 0.500000 0.500000
v 0.500000 -0.500000 -0.375000
v 0.500000 -0.312500 -0.375000
v 0.500000 -0.500000 0.437500
v 0.500000 -0.312500 0.437500
v -0.500000 -0.500000 -0.375000
v -0.500000 -0.312500 -0.375000
v -0.500000 -0.500000 0.437500
v -0.500000 -0.312500 0.437500
v 0.500000 0.062500 -0.312500
v 0.500000 0.125000 -0.312500
v 0.500000 0.000000 0.437500
v 0.500000 0.125000 0.437500
v -0.500000 0.062500 -0.312500
v -0.500000 0.125000 -0.312500
v -0.500000 0.000000 0.437500
v -0.500000 0.125000 0.437500
vt 0.015625 0.734375
vt 0.015625 0.984375
vt 0.000000 0.984375
vt 0.000000 0.734375
vt 0.343750 0.250000
vt 0.296875 0.250000
vt 0.296875 0.046875
vt 0.343750 0.046875
vt 0.281250 0.734375
vt 0.281250 0.984375
vt 0.265625 0.984375
vt 0.265625 0.734375
vt -0.000000 0.046875
vt 0.046875 0.046875
vt 0.046875 0.250000
vt -0.000000 0.250000
vt 0.265625 1.000000
vt 0.015625 1.000000
vt 0.296875 0.000000
vt 0.046875 0.000000
vt 0.000000 0.328125
vt 0.031250 0.328125
vt 0.031250 0.515625
vt 0.015625 0.515625
vt 0.296875 0.515625
vt 0.281250 0.515625
vt 0.281250 0.328125
vt 0.312500 0.328125
vt 0.031250 0.531250
vt 0.281250 0.531250
vt 0.281250 0.718750
vt 0.031250 0.718750
vn 1.0000 0.0000 0.0000
vn -1.0000 0.0000 0.0000
vn 0.0000 0.0000 -1.0000
vn 0.0000 1.0000 0.0000
vn 0.0000 -0.9965 -0.0830
s off
f 1/1/1 2/2/1 4/3/1 3/4/1
f 15/5/2 16/6/2 14/7/2 13/8/2
f 7/9/2 8/10/2 6/11/2 5/12/2
f 5/12/3 6/11/3 2/2/3 1/1/3
f 9/13/1 10/14/1 12/15/1 11/16/1
f 8/17/4 4/18/4 2/2/4 6/11/4
f 13/19/3 14/7/3 10/14/3 9/20/3
f 16/6/4 12/15/4 10/14/4 14/7/4
f 23/21/2 24/22/2 22/23/2 21/24/2
f 17/25/1 18/26/1 20/27/1 19/28/1
f 21/29/3 22/23/3 18/26/3 17/30/3
f 24/22/4 20/27/4 18/26/4 22/23/4
f 17/30/5 19/31/5 23/32/5 21/29/5

View File

@ -0,0 +1,100 @@
# Blender v2.93.5 OBJ File: 'furniture.blend'
# www.blender.org
o Retail_shelf_base_2_Cube.044
v 0.500000 -0.500000 0.437500
v 0.500000 0.500000 0.437500
v 0.500000 -0.500000 0.500000
v 0.500000 0.500000 0.500000
v -0.500000 -0.500000 0.437500
v -0.500000 0.500000 0.437500
v -0.500000 -0.500000 0.500000
v -0.500000 0.500000 0.500000
v 0.500000 -0.500000 -0.375000
v 0.500000 -0.312500 -0.375000
v 0.500000 -0.500000 0.437500
v 0.500000 -0.312500 0.437500
v -0.500000 -0.500000 -0.375000
v -0.500000 -0.312500 -0.375000
v -0.500000 -0.500000 0.437500
v -0.500000 -0.312500 0.437500
v -0.500000 0.125000 0.437500
v -0.500000 -0.312500 0.437500
v -0.500000 0.125000 -0.312500
v -0.500000 -0.312500 -0.312500
v 0.500000 0.125000 0.437500
v 0.500000 -0.312500 0.437500
v 0.500000 0.125000 -0.312500
v 0.500000 -0.312500 -0.312500
v -0.437500 0.125000 -0.250000
v 0.437500 0.125000 -0.250000
v -0.437500 0.125000 0.437500
v 0.437500 0.125000 0.437500
v -0.437500 -0.312500 -0.250000
v 0.437500 -0.312500 -0.250000
v -0.437500 -0.312500 0.437500
v 0.437500 -0.312500 0.437500
vt 0.015625 0.734375
vt 0.015625 0.984375
vt 0.000000 0.984375
vt 0.000000 0.734375
vt 0.343750 0.250000
vt 0.296875 0.250000
vt 0.296875 0.046875
vt 0.343750 0.046875
vt 0.281250 0.734375
vt 0.281250 0.984375
vt 0.265625 0.984375
vt 0.265625 0.734375
vt 0.000000 0.046875
vt 0.046875 0.046875
vt 0.046875 0.250000
vt 0.000000 0.250000
vt 0.265625 1.000000
vt 0.015625 1.000000
vt 0.296875 0.000000
vt 0.046875 0.000000
vt 0.375000 0.109375
vt 0.562500 0.109375
vt 0.546875 0.125000
vt 0.375000 0.125000
vt 0.812500 -0.000000
vt 0.812500 0.109375
vt 0.562500 -0.000000
vt 0.375000 -0.000000
vt 1.000000 -0.000000
vt 1.000000 0.109375
vt 0.796875 0.125000
vt 0.578125 0.125000
vt 1.000000 0.125000
vt 0.828125 0.125000
vt 0.796875 0.250000
vt 0.578125 0.250000
vt 0.578125 0.140625
vt 0.796875 0.140625
vt 0.968750 0.250000
vt 0.968750 0.140625
vt 0.406250 0.250000
vt 0.406250 0.140625
vn 1.0000 0.0000 0.0000
vn -1.0000 0.0000 0.0000
vn 0.0000 0.0000 -1.0000
vn 0.0000 1.0000 0.0000
vn -0.0000 0.0000 1.0000
s off
f 1/1/1 2/2/1 4/3/1 3/4/1
f 15/5/2 16/6/2 14/7/2 13/8/2
f 7/9/2 8/10/2 6/11/2 5/12/2
f 5/12/3 6/11/3 2/2/3 1/1/3
f 9/13/1 10/14/1 12/15/1 11/16/1
f 8/17/4 4/18/4 2/2/4 6/11/4
f 13/19/3 14/7/3 10/14/3 9/20/3
f 16/6/4 12/15/4 10/14/4 14/7/4
f 21/21/4 23/22/4 26/23/4 28/24/4
f 20/25/3 19/26/3 23/22/3 24/27/3
f 24/27/1 23/22/1 21/21/1 22/28/1
f 18/29/2 17/30/2 19/26/2 20/25/2
f 23/22/4 19/26/4 25/31/4 26/32/4
f 19/26/4 17/30/4 27/33/4 25/34/4
f 26/35/5 25/36/5 29/37/5 30/38/5
f 28/39/2 26/35/2 30/38/2 32/40/2
f 25/36/1 27/41/1 31/42/1 29/37/1

View File

@ -0,0 +1,49 @@
minetest.register_node('furniture:retail_shelf_base_1',{
description = 'Retail Shelving Base',
drawtype = 'mesh',
mesh = 'furniture_rshelf_base_1.obj',
tiles = {'furniture_retail_shelving.png'},
paramtype = 'light',
paramtype2 = 'facedir',
groups = {breakable=1},
})
minetest.register_node('furniture:retail_shelf_base_2',{
description = 'Retail Shelving Base',
drawtype = 'mesh',
mesh = 'furniture_rshelf_base_2.obj',
tiles = {'furniture_retail_shelving.png'},
paramtype = 'light',
paramtype2 = 'facedir',
groups = {breakable=1},
})
minetest.register_node('furniture:retail_shelf_1',{
description = 'Retail Shelving',
drawtype = 'mesh',
mesh = 'furniture_rshelf_1.obj',
tiles = {'furniture_retail_shelving.png'},
paramtype = 'light',
paramtype2 = 'facedir',
groups = {breakable=1},
})
minetest.register_node('furniture:retail_shelf_2',{
description = 'Retail Shelving',
drawtype = 'mesh',
mesh = 'furniture_rshelf_2.obj',
tiles = {'furniture_retail_shelving.png'},
paramtype = 'light',
paramtype2 = 'facedir',
groups = {breakable=1},
})
minetest.register_node('furniture:retail_shelf_3',{
description = 'Retail Shelving',
drawtype = 'mesh',
mesh = 'furniture_rshelf_3.obj',
tiles = {'furniture_retail_shelving.png'},
paramtype = 'light',
paramtype2 = 'facedir',
groups = {breakable=1},
})

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

45
mods/glass/init.lua Normal file
View File

@ -0,0 +1,45 @@
local glass_table = { --name, description, texture Set img transparency to 15 before Export.
{'white', 'White', '01'},
{'grey75', 'Light Grey', '02'},
{'grey50', 'Grey', '03'},
{'grey25', 'Dark Grey', '04'},
{'black', 'Black', '05'}
}
for i in ipairs (glass_table) do
local name = glass_table[i][1]
local desc = glass_table[i][2]
local texture = glass_table[i][3]
minetest.register_node('glass:'..name..'s', {
description = desc..' Glass',
drawtype = 'nodebox',
node_box = {
type = 'fixed',
fixed = {-0.5, -0.5, -0.1, 0.5, 0.5, 0.1}
},
tiles = {'blank.png', 'blank.png', 'blank.png', 'blank.png', 'glass-'..texture..'.png', 'glass-'..texture..'.png'},
inventory_image = 'glass-'..texture..'.png',
use_texture_alpha = 'blend',
sunlight_propagates = true,
paramtype = 'light',
paramtype2 = 'facedir',
groups = {breakable=1},
})
minetest.register_node('glass:'..name..'d', {
description = desc..' Glass (Double Height)',
drawtype = 'nodebox',
node_box = {
type = 'fixed',
fixed = {-0.5, -0.5, -0.1, 0.5, 1.5, 0.1}
},
tiles = {'blank.png', 'blank.png', 'blank.png', 'blank.png', 'glass-'..texture..'.png', 'glass-'..texture..'.png'},
inventory_image = 'glass-'..texture..'.png^glass-x2.png',
use_texture_alpha = 'blend',
sunlight_propagates = true,
paramtype = 'light',
paramtype2 = 'facedir',
groups = {breakable=1},
})
end

8
mods/glass/license.txt Normal file
View File

@ -0,0 +1,8 @@
Code is licensed MIT, Media CC by SA 4.0
Copyright 2020 Nathan Salapat
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-------------------

1
mods/glass/mod.conf Normal file
View File

@ -0,0 +1 @@
name = glass

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 636 B

View File

@ -1,9 +1,9 @@
minetest.register_node("levels:glass_01", {
description = "Glass",
drawtype = "glasslike_framed",
tiles = {"levels_glass.png", "levels_glass_detail.png"},
use_texture_alpha = "clip", -- only needed for stairs API
paramtype = "light",
minetest.register_node('levels:glass_01', {
description = 'Glass',
drawtype = 'glasslike_framed',
tiles = {'levels_glass.png', 'levels_glass_detail.png'},
use_texture_alpha = 'clip', -- only needed for stairs API
paramtype = 'light',
sunlight_propagates = true,
groups = {breakable = 1},
-- sounds = default.node_sound_glass_defaults(),

View File

@ -72,6 +72,7 @@ dofile(minetest.get_modpath('levels')..'/ducts.lua')
dofile(minetest.get_modpath('levels')..'/glass.lua')
dofile(minetest.get_modpath('levels')..'/ground.lua')
dofile(minetest.get_modpath('levels')..'/metal.lua')
dofile(minetest.get_modpath('levels')..'/misc.lua')
dofile(minetest.get_modpath('levels')..'/scifi.lua')
dofile(minetest.get_modpath('levels')..'/specials.lua')
dofile(minetest.get_modpath('levels')..'/stone.lua')

1
mods/levels/misc.lua Normal file
View File

@ -0,0 +1 @@
levels.register_basic('crate_0', 'Wooden Crate', 'wood', 0)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 49 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 270 B

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 123 B

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -26,3 +26,34 @@ lights.chandelier_removal = function(pos)
local pos2 = {x=pos.x+2, y=pos.y-4, z=pos.z+2}
worldedit.replace(pos1, pos2, 'lights:source_14', 'air', false)
end
lights.drop_light = function(pos, val) --Drops a light to the ground
local i = 1
while i < 20 do
local new_pos = {x=pos.x, y=pos.y-i, z=pos.z}
local new_node = minetest.get_node(new_pos)
if new_node.name == 'air' then
i = i + 1
end
if new_node.name ~= 'air' then
if i > 2 then
i = i - 1
minetest.set_node({x=pos.x, y=pos.y-i, z=pos.z},{name='lights:source_'..val})
end
i = 21
end
end
end
lights.dropped_light_removal = function(pos) --Removes a dropped light.
local i = 1
while i < 20 do
local new_pos = {x=pos.x, y=pos.y-i, z=pos.z}
local new_node = minetest.get_node(new_pos)
if minetest.get_item_group(new_node.name, 'invisible_light') > 0 then
minetest.remove_node(new_pos)
i = 21
end
i = i + 1
end
end

View File

@ -15,6 +15,7 @@ end
dofile(minetest.get_modpath('lights')..'/functions.lua')
dofile(minetest.get_modpath('lights')..'/modern.lua')
dofile(minetest.get_modpath('lights')..'/vintage.lua')
dofile(minetest.get_modpath('lights')..'/outdoor.lua')
dofile(minetest.get_modpath('lights')..'/scifi.lua')
dofile(minetest.get_modpath('lights')..'/neon.lua')
dofile(minetest.get_modpath('lights')..'/nodes.lua')

View File

@ -0,0 +1,38 @@
# Blender v2.93.5 OBJ File: 'lights.blend'
# www.blender.org
o chandelier.001_Cube.013
v -0.031250 -0.500000 0.031250
v -0.031250 0.500000 0.031250
v -0.031250 -0.500000 -0.031250
v -0.031250 0.500000 -0.031250
v 0.031250 -0.500000 0.031250
v 0.031250 0.500000 0.031250
v 0.031250 -0.500000 -0.031250
v 0.031250 0.500000 -0.031250
vt 0.187500 -0.000000
vt 0.187500 1.000000
vt 0.125000 1.000000
vt 0.125000 -0.000000
vt 0.062500 1.000000
vt 0.062500 -0.000000
vt 0.000000 1.000000
vt 0.000000 -0.000000
vt 0.250000 -0.000000
vt 0.250000 1.000000
vt 0.187500 0.062500
vt 0.250000 0.062500
vt 0.250000 0.937500
vt 0.187500 0.937500
vn -1.0000 0.0000 0.0000
vn 0.0000 0.0000 -1.0000
vn 1.0000 0.0000 0.0000
vn 0.0000 0.0000 1.0000
vn 0.0000 -1.0000 0.0000
vn 0.0000 1.0000 0.0000
s off
f 1/1/1 2/2/1 4/3/1 3/4/1
f 3/4/2 4/3/2 8/5/2 7/6/2
f 7/6/3 8/5/3 6/7/3 5/8/3
f 5/9/4 6/10/4 2/2/4 1/1/4
f 3/11/5 7/12/5 5/9/5 1/1/5
f 8/13/6 4/14/6 2/2/6 6/10/6

View File

@ -0,0 +1,34 @@
# Blender v2.93.5 OBJ File: 'lights.blend'
# www.blender.org
o Street_light_base_Cube.014
v -0.187500 -1.000000 0.187500
v -0.187500 0.500000 0.187500
v -0.187500 -1.000000 -0.187500
v -0.187500 0.500000 -0.187500
v 0.187500 -1.000000 0.187500
v 0.187500 0.500000 0.187500
v 0.187500 -1.000000 -0.187500
v 0.187500 0.500000 -0.187500
vt 0.375000 0.000000
vt 0.375000 0.750000
vt 0.187500 0.750000
vt 0.187500 0.000000
vt -0.000000 0.750000
vt -0.000000 0.000000
vt 0.750000 0.000000
vt 0.750000 0.750000
vt 0.562500 0.750000
vt 0.562500 0.000000
vt 0.187500 0.937500
vt -0.000000 0.937500
vn -1.0000 0.0000 0.0000
vn 0.0000 0.0000 -1.0000
vn 1.0000 0.0000 0.0000
vn 0.0000 0.0000 1.0000
vn 0.0000 1.0000 0.0000
s off
f 1/1/1 2/2/1 4/3/1 3/4/1
f 3/4/2 4/3/2 8/5/2 7/6/2
f 7/7/3 8/8/3 6/9/3 5/10/3
f 5/10/4 6/9/4 2/2/4 1/1/4
f 8/5/5 4/3/5 2/11/5 6/12/5

View File

@ -0,0 +1,62 @@
# Blender v2.93.5 OBJ File: 'lights.blend'
# www.blender.org
o Street_light_light_Cube.020
v 0.093750 0.183403 0.903347
v 0.093750 0.306504 0.925053
v -0.093750 0.183403 0.903347
v -0.093750 0.306504 0.925053
v 0.093750 0.313640 0.164741
v 0.093750 0.436741 0.186447
v -0.093750 0.313640 0.164741
v -0.093750 0.436741 0.186447
v 0.156250 0.250000 0.187500
v 0.156250 0.437500 0.187500
v -0.156250 0.250000 0.187500
v -0.156250 0.437500 0.187500
v 0.156250 0.250000 -0.125000
v 0.156250 0.437500 -0.125000
v -0.156250 0.250000 -0.125000
v -0.156250 0.437500 -0.125000
vt 0.250000 0.000000
vt 0.312500 0.000000
vt 0.312500 0.375000
vt 0.250000 0.375000
vt 0.500000 0.093750
vt 0.593750 0.093750
vt 0.593750 0.250000
vt 0.500000 0.250000
vt 0.156250 0.375000
vt 0.093750 0.375000
vt 0.093750 0.000000
vt 0.156250 0.000000
vt 0.000000 0.375000
vt 0.000000 0.000000
vt 1.000000 0.250000
vt 1.000000 0.343750
vt 0.843750 0.343750
vt 0.843750 0.250000
vt 0.843750 0.093750
vt 0.843750 -0.000000
vt 1.000000 -0.000000
vt 1.000000 0.093750
vt 0.750000 0.250000
vt 0.750000 0.093750
vn -1.0000 -0.0000 -0.0000
vn 0.0000 0.0000 1.0000
vn 1.0000 0.0000 0.0000
vn 0.0000 0.9848 0.1736
vn 0.0000 -0.9848 -0.1736
vn 0.0000 1.0000 0.0000
vn 0.0000 -1.0000 0.0000
vn 0.0000 0.0000 -1.0000
s off
f 3/1/1 4/2/1 8/3/1 7/4/1
f 9/5/2 10/6/2 12/7/2 11/8/2
f 5/9/3 6/10/3 2/11/3 1/12/3
f 8/13/4 4/14/4 2/11/4 6/10/4
f 3/1/5 7/4/5 5/9/5 1/12/5
f 11/15/1 12/16/1 16/17/1 15/18/1
f 13/19/3 14/20/3 10/21/3 9/22/3
f 16/23/6 12/7/6 10/6/6 14/24/6
f 11/15/7 15/18/7 13/19/7 9/22/7
f 15/18/8 16/23/8 14/24/8 13/19/8

View File

@ -0,0 +1,34 @@
# Blender v2.93.5 OBJ File: 'lights.blend'
# www.blender.org
o Street_light_top_Cube.015
v -0.125000 -0.500000 0.125000
v -0.125000 0.500000 0.125000
v -0.125000 -0.500000 -0.125000
v -0.125000 0.500000 -0.125000
v 0.125000 -0.500000 0.125000
v 0.125000 0.500000 0.125000
v 0.125000 -0.500000 -0.125000
v 0.125000 0.500000 -0.125000
vt 0.250000 -0.000000
vt 0.250000 0.500000
vt 0.125000 0.500000
vt 0.125000 -0.000000
vt 0.000000 0.500000
vt 0.000000 -0.000000
vt 0.500000 -0.000000
vt 0.500000 0.500000
vt 0.375000 0.500000
vt 0.375000 -0.000000
vt 0.125000 0.625000
vt 0.000000 0.625000
vn -1.0000 0.0000 0.0000
vn 0.0000 0.0000 -1.0000
vn 1.0000 0.0000 0.0000
vn 0.0000 0.0000 1.0000
vn 0.0000 1.0000 0.0000
s off
f 1/1/1 2/2/1 4/3/1 3/4/1
f 3/4/2 4/3/2 8/5/2 7/6/2
f 7/7/3 8/8/3 6/9/3 5/10/3
f 5/10/4 6/9/4 2/2/4 1/1/4
f 8/5/5 4/3/5 2/11/5 6/12/5

View File

@ -104,4 +104,21 @@ minetest.register_node('lights:chandelier_1', {
groups = {breakable=1},
after_place_node = lights.chandelier_placement,
on_destruct = lights.chandelier_removal,
on_punch = lights.chandelier_placement
})
minetest.register_node('lights:chandelier_rod_br', {
description = 'Chandelier Rod (Oil Rubbed Bronze)',
drawtype = 'mesh',
mesh = 'lights_chandelier_rod.obj',
tiles = {'lights_chandelier_rod_br.png'},
paramtype = 'light',
light_source = 2,
selection_box = {type = 'fixed',
fixed = {
{-.1, -.5, -.1, .1, .5, .1},}},
collision_box = {type = 'fixed',
fixed = {
{-.1, -.5, -.1, .1, .5, .1},}},
groups = {breakable=1},
})

50
mods/lights/outdoor.lua Normal file
View File

@ -0,0 +1,50 @@
minetest.register_node('lights:street_light_base', {
description = 'Street Light Base',
drawtype = 'mesh',
mesh = 'lights_street_light_base.obj',
tiles = {'lights_street_light_base.png'},
paramtype = 'light',
selection_box = {type = 'fixed',
fixed = {
{-.2, -.5, -.2, .2, .5, .2},}},
collision_box = {type = 'fixed',
fixed = {
{-.2, -.5, -.2, .2, .5, .2},}},
groups = {breakable=1},
})
minetest.register_node('lights:street_light_top', {
description = 'Street Light top',
drawtype = 'mesh',
mesh = 'lights_street_light_top.obj',
tiles = {'lights_street_light_top.png'},
paramtype = 'light',
selection_box = {type = 'fixed',
fixed = {
{-.125, -.5, -.125, .125, .5, .125},}},
collision_box = {type = 'fixed',
fixed = {
{-.125, -.5, -.125, .125, .5, .125},}},
groups = {breakable=1},
})
minetest.register_node('lights:street_light_light', {
description = 'Street Light',
drawtype = 'mesh',
mesh = 'lights_street_light_light.obj',
tiles = {'lights_street_light_light.png'},
paramtype = 'light',
paramtype2 = 'facedir',
light_source = 14,
selection_box = {type = 'fixed',
fixed = {
{-.2, .2, -.2, .2, .5, .75},}},
collision_box = {type = 'fixed',
fixed = {
{-.2, .2, -.2, .2, .5, .75},}},
groups = {breakable=1},
on_construct = function(pos)
lights.drop_light(pos, 14)
end,
on_destruct = lights.dropped_light_removal
})

Binary file not shown.

After

Width:  |  Height:  |  Size: 814 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -3,13 +3,13 @@ local esc = minetest.formspec_escape
local function button_create(id, name, player_count, xp, pos, desc)
local formspec =
'formspec_version[3]'..
'size[12,12]'..
'size[12,8.5]'..
'field[0.5,1;5,.5;ID;ID Must not contain spaces or special characters;'..esc(id)..']'..
'field[6,1;5,.5;name;Map Name;'..esc(name)..']'..
'field[0.5,2;3,.5;player_count;Required # of Players;'..esc(player_count)..']'..
'field[4,2;3,.5;xp;Required XP;'..esc(xp)..']'..
'field[7.5,2;3,.5;pos;Spawn POS (x,y,z);'..esc(pos)..']'..
'textarea[0.5,3;10,3;desc;Description of map;'..esc(desc)..']'..
'textarea[0.5,3;10,3.5;desc;Description of map;'..esc(desc)..']'..
'button_exit[3,7;2,1;save;Submit]'..
'button_exit[6,7;2,1;discard;Unclaim]'
return formspec
@ -18,13 +18,13 @@ end
local function button_display(id, name, player_count, xp, pos, desc)
local formspec =
'formspec_version[3]'..
'size[12,6]'..
'size[12,8]'..
'textarea[0.5,1;5,2;;Map Name;'..esc(name)..']'..
'textarea[0.5,2;5,2;;Required # of Players;'..esc(player_count)..']'..
'textarea[0.5,3;5,2;;Required XP;'..esc(xp)..']'..
'textarea[0.5,4;10,3;;Description of map;'..esc(desc)..']'..
'textarea[0.5,4;11,3.5;;Description of map:;'..esc(desc)..']'..
'textarea[5,1;6,4;;;Sneak punch to visit without starting a game. Return with /spawn.\n'..
'Be sure all interested parties are standing within four nodes of the button before punching.]'
'Be sure all interested parties are standing within three nodes of the button before punching.]'
return formspec
end
@ -37,7 +37,7 @@ local button_claim =
minetest.register_node('lobby:button_0', {
description = 'Unconfigured Button',
tiles = {'lobby_button_0.png'},
groups = {breakable=1},
groups = {breakable=1, not_in_creative_inventory=1},
light_source = 5,
after_place_node = function(pos, placer)
local meta = minetest.get_meta(pos)
@ -46,7 +46,7 @@ minetest.register_node('lobby:button_0', {
meta:set_string('name', '')
meta:set_string('player_count', '')
meta:set_string('xp', '')
meta:set_string('pos', '0,0,0')
meta:set_string('pos', '')
meta:set_string('desc', '')
end,
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
@ -193,7 +193,7 @@ minetest.register_node('lobby:button_1', {
minetest.chat_send_player(puncher:get_player_name(), 'Taking you to the level.')
else
local needed_players = tonumber(meta:get_string('player_count')) or 8
local objs = minetest.get_objects_inside_radius(pos, 4)
local objs = minetest.get_objects_inside_radius(pos, 3)
local player_count = 0
local map_players = {}
for _, obj in pairs(objs) do

View File

@ -12,7 +12,7 @@ minetest.register_chatcommand('spawn', {
privs = {creative=true},
func = function (name)
local player = minetest.get_player_by_name(name)
player:set_pos({x=0, y=0, z=0})
player:set_pos({x=30000, y=-18, z=30000})
end
})
@ -35,7 +35,7 @@ minetest.register_chatcommand('lobby', {
color = {a = 255, r = 255, g = 255, b = 255}
})
player:set_properties({visual_size = {x = 1, y = 1}, collisionbox = {-0.3, 0.0, -0.3, 0.3, 1.7, 0.3}})
player:set_pos({x=0, y=0, z=0})
player:set_pos({x=30000, y=-18, z=30000})
minetest.chat_send_player(name, 'Here you are.')
player_attributes:set_string('ghost', 'false')
local player_inv = player:get_inventory()
@ -54,7 +54,7 @@ minetest.register_chatcommand('kick', {
if name == params then
local traitor = lobby.traitors[map_id]
local player = minetest.get_player_by_name(name)
player:set_pos({x=0, y=0, z=0})
player:set_pos({x=30000, y=-18, z=30000})
local player_inv = player:get_inventory()
player_inv:set_list('main', {})
lobby.game[name] = 'lobby'

View File

@ -22,10 +22,10 @@ minetest.register_on_joinplayer(function(player)
if not_builder(player) then
local player_inv = player:get_inventory()
player_inv:set_list('main', {})
player:set_pos({x=0, y=0, z=0})
player:set_pos({x=30000, y=-18, z=30000})
end
if not pro_player(player) then
player:set_pos({x=-30, y=0, z=12})
player:set_pos({x=30000, y=-18, z=30000})
minetest.show_formspec(name, 'lobby:help_1', lobby_help_1)
end
end)

View File

@ -35,7 +35,7 @@ end
-- Register stair
-- Node will be called stairs:stair_<subname>
function stairs.register_stair(subname, groups, images, sounds, worldaligntex)
function stairs.register_stair(subname, groups, images, sounds, worldaligntex, alpha)
-- Set backface culling and world-aligned textures
local stair_images = {}
for i, image in ipairs(images) do
@ -63,6 +63,7 @@ function stairs.register_stair(subname, groups, images, sounds, worldaligntex)
description = subname..' stair',
drawtype = 'nodebox',
tiles = stair_images,
use_texture_alpha = alpha,
paramtype = 'light',
paramtype2 = 'facedir',
is_ground_content = false,
@ -89,7 +90,7 @@ end
-- Register slab
-- Node will be called stairs:slab_<subname>
function stairs.register_slab(subname, groups, images, sounds, worldaligntex)
function stairs.register_slab(subname, groups, images, sounds, worldaligntex, alpha)
-- Set world-aligned textures
local slab_images = {}
for i, image in ipairs(images) do
@ -113,6 +114,7 @@ function stairs.register_slab(subname, groups, images, sounds, worldaligntex)
description = subname..' slab',
drawtype = 'nodebox',
tiles = slab_images,
use_texture_alpha = alpha,
paramtype = 'light',
paramtype2 = 'facedir',
is_ground_content = false,
@ -160,7 +162,7 @@ end
-- Register inner stair
-- Node will be called stairs:stair_inner_<subname>
function stairs.register_stair_inner(subname, groups, images, sounds, worldaligntex)
function stairs.register_stair_inner(subname, groups, images, sounds, worldaligntex, alpha)
-- Set backface culling and world-aligned textures
local stair_images = {}
for i, image in ipairs(images) do
@ -188,6 +190,7 @@ function stairs.register_stair_inner(subname, groups, images, sounds, worldalign
description = subname..' inner stair',
drawtype = 'nodebox',
tiles = stair_images,
use_texture_alpha = alpha,
paramtype = 'light',
paramtype2 = 'facedir',
is_ground_content = false,
@ -215,7 +218,7 @@ end
-- Register outer stair
-- Node will be called stairs:stair_outer_<subname>
function stairs.register_stair_outer(subname, groups, images, sounds, worldaligntex)
function stairs.register_stair_outer(subname, groups, images, sounds, worldaligntex, alpha)
-- Set backface culling and world-aligned textures
local stair_images = {}
for i, image in ipairs(images) do
@ -243,6 +246,7 @@ function stairs.register_stair_outer(subname, groups, images, sounds, worldalign
description = subname..' outer stair',
drawtype = 'nodebox',
tiles = stair_images,
use_texture_alpha = alpha,
paramtype = 'light',
paramtype2 = 'facedir',
is_ground_content = false,
@ -269,9 +273,9 @@ end
-- Stair/slab registration function.
-- Nodes will be called stairs:{stair,slab}_<subname>
function stairs.register_stair_and_slab(subname, groups, images, sounds, worldaligntex)
stairs.register_stair(subname, groups, images, sounds, worldaligntex)
stairs.register_stair_inner(subname, groups, images, sounds, worldaligntex)
stairs.register_stair_outer(subname, groups, images, sounds, worldaligntex)
stairs.register_slab(subname, groups, images, sounds, worldaligntex)
function stairs.register_stair_and_slab(subname, groups, images, sounds, worldaligntex, alpha)
stairs.register_stair(subname, groups, images, sounds, worldaligntex, alpha)
stairs.register_stair_inner(subname, groups, images, sounds, worldaligntex, alpha)
stairs.register_stair_outer(subname, groups, images, sounds, worldaligntex, alpha)
stairs.register_slab(subname, groups, images, sounds, worldaligntex, alpha)
end

View File

@ -13,6 +13,7 @@ dofile(minetest.get_modpath('tasks')..'/engine_0.lua')
dofile(minetest.get_modpath('tasks')..'/engine_1.lua')
dofile(minetest.get_modpath('tasks')..'/example.lua')
dofile(minetest.get_modpath('tasks')..'/items.lua')
dofile(minetest.get_modpath('tasks')..'/match.lua')
dofile(minetest.get_modpath('tasks')..'/rubbish.lua')
dofile(minetest.get_modpath('tasks')..'/smoke_detector.lua')
dofile(minetest.get_modpath('tasks')..'/storage_locker.lua')

82
mods/tasks/match.lua Normal file
View File

@ -0,0 +1,82 @@
for i = 1,8 do
minetest.register_craftitem('tasks:card_'..i, {
description = 'Playing Card',
inventory_image = 'tasks_playing_card.png',
stack_max = 1,
groups = {not_in_creative_inventory=1}
})
end
local function match_formspec(pname, tries, card1, card2)
local val1 = string.sub(card1, -1)
local val2 = string.sub(card2, -1)
local formspec =
'size[8,6]'..
'textarea[4.5,.25;3,1;;;Pick two matching cards.\n('..tries..' tries remaining.)]'..
'label[4.75,3;'..val1..']'..
'label[5.75,3;'..val2..']'..
'list[detached:match_card_grid_'..pname..';cards;0,0;4,4;]'..
'list[detached:match_card_slot_'..pname..';slots;4.5,2;2,1;]'
return formspec
end
local deck = {'tasks:card_1', 'tasks:card_2', 'tasks:card_3', 'tasks:card_4', 'tasks:card_5', 'tasks:card_6', 'tasks:card_7', 'tasks:card_8',
'tasks:card_1', 'tasks:card_2', 'tasks:card_3', 'tasks:card_4', 'tasks:card_5', 'tasks:card_6', 'tasks:card_7', 'tasks:card_8'}
local function shuffle_deck(table)
for i = #table, 2 , -1 do
local j = math.random(i)
table[i], table[j] = table[j], table[i]
end
return table
end
local function new_game(pos, player)
local player_attributes = player:get_meta()
local luck = player_attributes:get_int('luck')
local tries = (luck) + 6
local pname = player:get_player_name()
local meta = minetest.get_meta(pos)
local xp = meta:get_int('xp')
local grid_inv = minetest.create_detached_inventory('match_card_grid_'..pname, {})
grid_inv:set_size('cards', 16)
grid_inv:set_list('cards', shuffle_deck(deck))
local slot_inv = minetest.create_detached_inventory('match_card_slot_'..pname, {
on_put = function(inv, listname, index, stack, player)
tries = tries - 1
if tries == 0 then
new_game(pos, player)
else
local inv = minetest.get_inventory({type = 'detached', name = 'match_card_slot_'..pname})
local slot1 = inv:get_stack('slots', 1)
local slot2 = inv:get_stack('slots', 2)
local card1 = slot1:get_name()
local card2 = slot2:get_name()
minetest.show_formspec(pname, 'tasks:card_matching', match_formspec(pname, tries, card1, card2))
if card1 == card2 then
minetest.chat_send_player(pname, 'Nice work')
tasks.only_add_xp(xp, pname)
new_game(pos, player)
end
end
end,
})
slot_inv:set_size('slots', 2)
minetest.show_formspec(pname, 'tasks:card_matching', match_formspec(pname, tries, '?', '?'))
end
minetest.register_node('tasks:match', {
description = 'Matching Game',
drawtype = 'mesh',
mesh = 'tasks_card_table.obj',
tiles = {'tasks_card_table.png'},
paramtype2 = 'facedir',
groups = {breakable=1, tasks=1},
on_construct = function(pos)
local meta = minetest.get_meta(pos)
meta:set_string('infotext', 'Matching')
end,
on_rightclick = function(pos, node, clicker)
new_game(pos, clicker)
end
})

View File

@ -0,0 +1,176 @@
# Blender v2.93.5 OBJ File: 'tasks.blend'
# www.blender.org
o Card_table_Cube.003
v -0.500000 0.375000 0.500000
v -0.500000 0.437500 0.500000
v -0.500000 0.375000 -0.500000
v -0.500000 0.437500 -0.500000
v 0.500000 0.375000 0.500000
v 0.500000 0.437500 0.500000
v 0.500000 0.375000 -0.500000
v 0.500000 0.437500 -0.500000
v -0.312500 0.437500 0.250000
v -0.312500 0.468750 0.250000
v -0.312500 0.437500 0.062500
v -0.312500 0.468750 0.062500
v -0.187500 0.437500 0.250000
v -0.187500 0.468750 0.250000
v -0.187500 0.437500 0.062500
v -0.187500 0.468750 0.062500
v 0.375000 -0.500000 0.468750
v 0.375000 0.375000 0.468750
v 0.375000 -0.500000 0.375000
v 0.375000 0.375000 0.375000
v 0.468750 -0.500000 0.468750
v 0.468750 0.375000 0.468750
v 0.468750 -0.500000 0.375000
v 0.468750 0.375000 0.375000
v -0.468750 -0.500000 0.375000
v -0.468750 0.375000 0.375000
v -0.375000 -0.500000 0.375000
v -0.375000 0.375000 0.375000
v -0.468750 -0.500000 0.468750
v -0.468750 0.375000 0.468750
v -0.375000 -0.500000 0.468750
v -0.375000 0.375000 0.468750
v -0.375000 -0.500000 -0.468750
v -0.375000 0.375000 -0.468750
v -0.375000 -0.500000 -0.375000
v -0.375000 0.375000 -0.375000
v -0.468750 -0.500000 -0.468750
v -0.468750 0.375000 -0.468750
v -0.468750 -0.500000 -0.375000
v -0.468750 0.375000 -0.375000
v 0.468750 -0.500000 -0.375000
v 0.468750 0.375000 -0.375000
v 0.375000 -0.500000 -0.375000
v 0.375000 0.375000 -0.375000
v 0.468750 -0.500000 -0.468750
v 0.468750 0.375000 -0.468750
v 0.375000 -0.500000 -0.468750
v 0.375000 0.375000 -0.468750
v 0.031250 0.437500 -0.218750
v 0.031250 0.468750 -0.218750
v 0.218750 0.437500 -0.218750
v 0.218750 0.468750 -0.218750
v 0.031250 0.437500 -0.093750
v 0.031250 0.468750 -0.093750
v 0.218750 0.437500 -0.093750
v 0.218750 0.468750 -0.093750
vt 0.515625 0.000000
vt 0.515625 0.015625
vt 0.265625 0.015625
vt 0.265625 0.000000
vt 0.250000 0.015625
vt 0.265625 0.265625
vt 0.250000 0.265625
vt 0.265625 0.281250
vt 0.515625 0.265625
vt 0.515625 0.281250
vt 0.531250 0.265625
vt 0.531250 0.015625
vt -0.000000 0.265625
vt -0.000000 0.015625
vt 0.101562 0.585938
vt 0.093750 0.585938
vt 0.093750 0.539062
vt 0.101562 0.539062
vt 0.093750 0.531250
vt 0.062500 0.539062
vt 0.062500 0.531250
vt 0.054688 0.539062
vt 0.062500 0.585938
vt 0.054688 0.585938
vt 0.062500 0.593750
vt 0.093750 0.593750
vt 0.328125 0.296875
vt 0.328125 0.515625
vt 0.304688 0.515625
vt 0.304688 0.296875
vt 0.398438 0.296875
vt 0.398438 0.515625
vt 0.375000 0.515625
vt 0.375000 0.296875
vt 0.351562 0.515625
vt 0.351562 0.296875
vt 0.226562 0.296875
vt 0.226562 0.515625
vt 0.203125 0.515625
vt 0.203125 0.296875
vt 0.296875 0.296875
vt 0.296875 0.515625
vt 0.273438 0.515625
vt 0.273438 0.296875
vt 0.250000 0.515625
vt 0.250000 0.296875
vt 0.023438 0.296875
vt 0.023438 0.515625
vt 0.000000 0.515625
vt 0.000000 0.296875
vt 0.093750 0.296875
vt 0.093750 0.515625
vt 0.070312 0.515625
vt 0.070312 0.296875
vt 0.046875 0.515625
vt 0.046875 0.296875
vt 0.125000 0.296875
vt 0.125000 0.515625
vt 0.101562 0.515625
vt 0.101562 0.296875
vt 0.195312 0.296875
vt 0.195312 0.515625
vt 0.171875 0.515625
vt 0.171875 0.296875
vt 0.148438 0.515625
vt 0.148438 0.296875
vt 0.000000 0.539062
vt 0.007812 0.539062
vt 0.007812 0.585938
vt 0.000000 0.585938
vt 0.007812 0.593750
vt 0.039062 0.585938
vt 0.039062 0.593750
vt 0.046875 0.585938
vt 0.039062 0.539062
vt 0.046875 0.539062
vt 0.039062 0.531250
vt 0.007812 0.531250
vn -1.0000 0.0000 0.0000
vn 0.0000 0.0000 -1.0000
vn 1.0000 0.0000 0.0000
vn 0.0000 0.0000 1.0000
vn 0.0000 -1.0000 0.0000
vn 0.0000 1.0000 0.0000
s off
f 1/1/1 2/2/1 4/3/1 3/4/1
f 3/5/2 4/3/2 8/6/2 7/7/2
f 7/8/3 8/6/3 6/9/3 5/10/3
f 5/11/4 6/9/4 2/2/4 1/12/4
f 3/5/5 7/7/5 5/13/5 1/14/5
f 8/6/6 4/3/6 2/2/6 6/9/6
f 9/15/1 10/16/1 12/17/1 11/18/1
f 11/19/2 12/17/2 16/20/2 15/21/2
f 15/22/3 16/20/3 14/23/3 13/24/3
f 13/25/4 14/23/4 10/16/4 9/26/4
f 17/27/1 18/28/1 20/29/1 19/30/1
f 16/20/6 12/17/6 10/16/6 14/23/6
f 19/31/2 20/32/2 24/33/2 23/34/2
f 23/34/3 24/33/3 22/35/3 21/36/3
f 21/36/4 22/35/4 18/28/4 17/27/4
f 25/37/2 26/38/2 28/39/2 27/40/2
f 27/41/3 28/42/3 32/43/3 31/44/3
f 31/44/4 32/43/4 30/45/4 29/46/4
f 29/46/1 30/45/1 26/38/1 25/37/1
f 33/47/3 34/48/3 36/49/3 35/50/3
f 35/51/4 36/52/4 40/53/4 39/54/4
f 39/54/1 40/53/1 38/55/1 37/56/1
f 37/56/2 38/55/2 34/48/2 33/47/2
f 41/57/4 42/58/4 44/59/4 43/60/4
f 43/61/1 44/62/1 48/63/1 47/64/1
f 47/64/2 48/63/2 46/65/2 45/66/2
f 45/66/3 46/65/3 42/58/3 41/57/3
f 49/67/2 50/68/2 52/69/2 51/70/2
f 51/71/3 52/69/3 56/72/3 55/73/3
f 55/74/4 56/72/4 54/75/4 53/76/4
f 53/77/1 54/75/1 50/68/1 49/78/1
f 56/72/6 52/69/6 50/68/6 54/75/6

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB