diff --git a/mods/bulletin_boards/init.lua b/mods/bulletin_boards/init.lua index 13a39a2..baf0260 100644 --- a/mods/bulletin_boards/init.lua +++ b/mods/bulletin_boards/init.lua @@ -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 diff --git a/mods/color/init.lua b/mods/color/init.lua index a18f346..27f29e4 100644 --- a/mods/color/init.lua +++ b/mods/color/init.lua @@ -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) diff --git a/mods/color/stair_functions.lua b/mods/color/stair_functions.lua index eea33af..98b79c1 100644 --- a/mods/color/stair_functions.lua +++ b/mods/color/stair_functions.lua @@ -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 diff --git a/mods/furniture/decor.lua b/mods/furniture/decor.lua index b565dcc..ff1fe56 100644 --- a/mods/furniture/decor.lua +++ b/mods/furniture/decor.lua @@ -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', diff --git a/mods/furniture/init.lua b/mods/furniture/init.lua index f852921..2b1d69d 100644 --- a/mods/furniture/init.lua +++ b/mods/furniture/init.lua @@ -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. diff --git a/mods/furniture/kitchen.lua b/mods/furniture/kitchen.lua index 09e7e9f..a505a62 100644 --- a/mods/furniture/kitchen.lua +++ b/mods/furniture/kitchen.lua @@ -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', diff --git a/mods/furniture/misc.lua b/mods/furniture/misc.lua index 4066494..c64a0ba 100644 --- a/mods/furniture/misc.lua +++ b/mods/furniture/misc.lua @@ -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, }) diff --git a/mods/furniture/models/furniture_rshelf_1.obj b/mods/furniture/models/furniture_rshelf_1.obj new file mode 100644 index 0000000..6cf06d1 --- /dev/null +++ b/mods/furniture/models/furniture_rshelf_1.obj @@ -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 diff --git a/mods/furniture/models/furniture_rshelf_2.obj b/mods/furniture/models/furniture_rshelf_2.obj new file mode 100644 index 0000000..30a0f9f --- /dev/null +++ b/mods/furniture/models/furniture_rshelf_2.obj @@ -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 diff --git a/mods/furniture/models/furniture_rshelf_3.obj b/mods/furniture/models/furniture_rshelf_3.obj new file mode 100644 index 0000000..2363ec4 --- /dev/null +++ b/mods/furniture/models/furniture_rshelf_3.obj @@ -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 diff --git a/mods/furniture/models/furniture_rshelf_base_1.obj b/mods/furniture/models/furniture_rshelf_base_1.obj new file mode 100644 index 0000000..5760578 --- /dev/null +++ b/mods/furniture/models/furniture_rshelf_base_1.obj @@ -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 diff --git a/mods/furniture/models/furniture_rshelf_base_2.obj b/mods/furniture/models/furniture_rshelf_base_2.obj new file mode 100644 index 0000000..8430621 --- /dev/null +++ b/mods/furniture/models/furniture_rshelf_base_2.obj @@ -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 diff --git a/mods/furniture/retail_shelving.lua b/mods/furniture/retail_shelving.lua new file mode 100644 index 0000000..1e683cd --- /dev/null +++ b/mods/furniture/retail_shelving.lua @@ -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}, +}) diff --git a/mods/furniture/textures/furniture_cabinet_counter_1.png b/mods/furniture/textures/furniture_cabinet_counter_1.png new file mode 100644 index 0000000..e8c0920 Binary files /dev/null and b/mods/furniture/textures/furniture_cabinet_counter_1.png differ diff --git a/mods/furniture/textures/furniture_retail_shelving.png b/mods/furniture/textures/furniture_retail_shelving.png new file mode 100644 index 0000000..4353b21 Binary files /dev/null and b/mods/furniture/textures/furniture_retail_shelving.png differ diff --git a/mods/glass/init.lua b/mods/glass/init.lua new file mode 100644 index 0000000..e903c30 --- /dev/null +++ b/mods/glass/init.lua @@ -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 diff --git a/mods/glass/license.txt b/mods/glass/license.txt new file mode 100644 index 0000000..930043b --- /dev/null +++ b/mods/glass/license.txt @@ -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. + +------------------- diff --git a/mods/glass/mod.conf b/mods/glass/mod.conf new file mode 100644 index 0000000..61e6150 --- /dev/null +++ b/mods/glass/mod.conf @@ -0,0 +1 @@ +name = glass diff --git a/mods/glass/textures/glass-01.png b/mods/glass/textures/glass-01.png new file mode 100644 index 0000000..51810de Binary files /dev/null and b/mods/glass/textures/glass-01.png differ diff --git a/mods/glass/textures/glass-02.png b/mods/glass/textures/glass-02.png new file mode 100644 index 0000000..ab6451d Binary files /dev/null and b/mods/glass/textures/glass-02.png differ diff --git a/mods/glass/textures/glass-03.png b/mods/glass/textures/glass-03.png new file mode 100644 index 0000000..5961ebd Binary files /dev/null and b/mods/glass/textures/glass-03.png differ diff --git a/mods/glass/textures/glass-04.png b/mods/glass/textures/glass-04.png new file mode 100644 index 0000000..d8c9e5a Binary files /dev/null and b/mods/glass/textures/glass-04.png differ diff --git a/mods/glass/textures/glass-05.png b/mods/glass/textures/glass-05.png new file mode 100644 index 0000000..c59b7f3 Binary files /dev/null and b/mods/glass/textures/glass-05.png differ diff --git a/mods/glass/textures/glass-x2.png b/mods/glass/textures/glass-x2.png new file mode 100644 index 0000000..a9072ed Binary files /dev/null and b/mods/glass/textures/glass-x2.png differ diff --git a/mods/levels/glass.lua b/mods/levels/glass.lua index 9f8557d..d52b68f 100644 --- a/mods/levels/glass.lua +++ b/mods/levels/glass.lua @@ -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(), diff --git a/mods/levels/init.lua b/mods/levels/init.lua index 8d47045..dce61f7 100644 --- a/mods/levels/init.lua +++ b/mods/levels/init.lua @@ -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') diff --git a/mods/levels/misc.lua b/mods/levels/misc.lua new file mode 100644 index 0000000..b9ebb27 --- /dev/null +++ b/mods/levels/misc.lua @@ -0,0 +1 @@ +levels.register_basic('crate_0', 'Wooden Crate', 'wood', 0) diff --git a/mods/levels/textures/levels_crate_0.png b/mods/levels/textures/levels_crate_0.png index 4f7a330..4964b5d 100644 Binary files a/mods/levels/textures/levels_crate_0.png and b/mods/levels/textures/levels_crate_0.png differ diff --git a/mods/levels/textures/levels_glass.png b/mods/levels/textures/levels_glass.png index 74d6a02..f3d7e68 100644 Binary files a/mods/levels/textures/levels_glass.png and b/mods/levels/textures/levels_glass.png differ diff --git a/mods/levels/textures/levels_glass_detail.png b/mods/levels/textures/levels_glass_detail.png index 7eab49e..e53b1fb 100644 Binary files a/mods/levels/textures/levels_glass_detail.png and b/mods/levels/textures/levels_glass_detail.png differ diff --git a/mods/lights/functions.lua b/mods/lights/functions.lua index 9081861..ac9ddea 100644 --- a/mods/lights/functions.lua +++ b/mods/lights/functions.lua @@ -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 diff --git a/mods/lights/init.lua b/mods/lights/init.lua index 83631c4..51777a0 100644 --- a/mods/lights/init.lua +++ b/mods/lights/init.lua @@ -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') diff --git a/mods/lights/models/lights_chandelier_rod.obj b/mods/lights/models/lights_chandelier_rod.obj new file mode 100644 index 0000000..9c17ffb --- /dev/null +++ b/mods/lights/models/lights_chandelier_rod.obj @@ -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 diff --git a/mods/lights/models/lights_street_light_base.obj b/mods/lights/models/lights_street_light_base.obj new file mode 100644 index 0000000..f3d7919 --- /dev/null +++ b/mods/lights/models/lights_street_light_base.obj @@ -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 diff --git a/mods/lights/models/lights_street_light_light.obj b/mods/lights/models/lights_street_light_light.obj new file mode 100644 index 0000000..5bcbcc0 --- /dev/null +++ b/mods/lights/models/lights_street_light_light.obj @@ -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 diff --git a/mods/lights/models/lights_street_light_top.obj b/mods/lights/models/lights_street_light_top.obj new file mode 100644 index 0000000..baab420 --- /dev/null +++ b/mods/lights/models/lights_street_light_top.obj @@ -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 diff --git a/mods/lights/modern.lua b/mods/lights/modern.lua index 79fdfc1..04cfe74 100644 --- a/mods/lights/modern.lua +++ b/mods/lights/modern.lua @@ -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}, }) diff --git a/mods/lights/outdoor.lua b/mods/lights/outdoor.lua new file mode 100644 index 0000000..b40d5c3 --- /dev/null +++ b/mods/lights/outdoor.lua @@ -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 +}) diff --git a/mods/lights/textures/lights_chandelier_rod_br.png b/mods/lights/textures/lights_chandelier_rod_br.png new file mode 100644 index 0000000..b3dd7e1 Binary files /dev/null and b/mods/lights/textures/lights_chandelier_rod_br.png differ diff --git a/mods/lights/textures/lights_street_light_base.png b/mods/lights/textures/lights_street_light_base.png new file mode 100644 index 0000000..57f7c8c Binary files /dev/null and b/mods/lights/textures/lights_street_light_base.png differ diff --git a/mods/lights/textures/lights_street_light_light.png b/mods/lights/textures/lights_street_light_light.png new file mode 100644 index 0000000..fed53ea Binary files /dev/null and b/mods/lights/textures/lights_street_light_light.png differ diff --git a/mods/lights/textures/lights_street_light_top.png b/mods/lights/textures/lights_street_light_top.png new file mode 100644 index 0000000..ffd7278 Binary files /dev/null and b/mods/lights/textures/lights_street_light_top.png differ diff --git a/mods/lobby/buttons.lua b/mods/lobby/buttons.lua index 528c81e..9b6d3db 100644 --- a/mods/lobby/buttons.lua +++ b/mods/lobby/buttons.lua @@ -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 diff --git a/mods/lobby/chat_commands.lua b/mods/lobby/chat_commands.lua index f08d287..0cae114 100644 --- a/mods/lobby/chat_commands.lua +++ b/mods/lobby/chat_commands.lua @@ -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' diff --git a/mods/lobby/player_callbacks.lua b/mods/lobby/player_callbacks.lua index 66f176b..36c423a 100644 --- a/mods/lobby/player_callbacks.lua +++ b/mods/lobby/player_callbacks.lua @@ -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) diff --git a/mods/stairs/init.lua b/mods/stairs/init.lua index 53702a8..ac78696 100644 --- a/mods/stairs/init.lua +++ b/mods/stairs/init.lua @@ -35,7 +35,7 @@ end -- Register stair -- Node will be called stairs:stair_ -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_ -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_ -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_ -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}_ -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 diff --git a/mods/tasks/init.lua b/mods/tasks/init.lua index 7c3d28c..152d870 100644 --- a/mods/tasks/init.lua +++ b/mods/tasks/init.lua @@ -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') diff --git a/mods/tasks/match.lua b/mods/tasks/match.lua new file mode 100644 index 0000000..786e087 --- /dev/null +++ b/mods/tasks/match.lua @@ -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 +}) diff --git a/mods/tasks/models/tasks_card_table.obj b/mods/tasks/models/tasks_card_table.obj new file mode 100644 index 0000000..1159d87 --- /dev/null +++ b/mods/tasks/models/tasks_card_table.obj @@ -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 diff --git a/mods/tasks/textures/tasks_card_table.png b/mods/tasks/textures/tasks_card_table.png new file mode 100644 index 0000000..9797759 Binary files /dev/null and b/mods/tasks/textures/tasks_card_table.png differ diff --git a/mods/tasks/textures/tasks_playing_card.png b/mods/tasks/textures/tasks_playing_card.png new file mode 100644 index 0000000..4c8bd1c Binary files /dev/null and b/mods/tasks/textures/tasks_playing_card.png differ