added some home decor stuff :D thanks Vanessa E.
|
@ -0,0 +1,488 @@
|
|||
|
||||
|
||||
minetest.register_node("default:refrigerator", {
|
||||
drawtype = "nodebox",
|
||||
description = "Refrigerator",
|
||||
tiles = {
|
||||
'homedecor_refrigerator.png',
|
||||
'homedecor_refrigerator_bottom.png',
|
||||
'homedecor_refrigerator.png',
|
||||
'homedecor_refrigerator.png',
|
||||
'homedecor_refrigerator_back.png',
|
||||
'homedecor_refrigerator_front.png'
|
||||
},
|
||||
sunlight_propagates = false,
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
walkable = true,
|
||||
groups = { snappy = 3 },
|
||||
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = { -0.5, -0.5, -0.5, 0.5, 1.5, 0.5 }
|
||||
},
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = { -0.5, -0.5, -0.5, 0.5, 1.5, 0.5 }
|
||||
},
|
||||
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
on_construct = function(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("formspec",
|
||||
"size[10,10]"..
|
||||
"list[current_name;main;0,0;10,5;]"..
|
||||
"list[current_player;main;1,6;8,4;]")
|
||||
meta:set_string("infotext", "Refrigerator")
|
||||
local inv = meta:get_inventory()
|
||||
inv:set_size("main",50)
|
||||
end,
|
||||
|
||||
on_place = function(itemstack, placer, pointed_thing)
|
||||
local pos = pointed_thing.above
|
||||
if minetest.get_node({x=pos.x, y=pos.y+1, z=pos.z}).name ~= "air" then
|
||||
minetest.chat_send_player( placer:get_player_name(), 'Not enough vertical space to place a refrigerator!' )
|
||||
return
|
||||
end
|
||||
return minetest.item_place(itemstack, placer, pointed_thing)
|
||||
end,
|
||||
|
||||
can_dig = function(pos,player)
|
||||
local meta = minetest.get_meta(pos);
|
||||
local inv = meta:get_inventory()
|
||||
return inv:is_empty("main")
|
||||
end,
|
||||
on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
|
||||
minetest.log("action", "%s moves stuff in refrigerator at %s":format(
|
||||
player:get_player_name(),
|
||||
minetest.pos_to_string(pos)
|
||||
))
|
||||
end,
|
||||
on_metadata_inventory_put = function(pos, listname, index, stack, player)
|
||||
minetest.log("action", "%s moves stuff to refrigerator at %s":format(
|
||||
player:get_player_name(),
|
||||
minetest.pos_to_string(pos)
|
||||
))
|
||||
end,
|
||||
on_metadata_inventory_take = function(pos, listname, index, stack, player)
|
||||
minetest.log("action", "%s takes stuff from refrigerator at %s":format(
|
||||
player:get_player_name(),
|
||||
minetest.pos_to_string(pos)
|
||||
))
|
||||
end,
|
||||
})
|
||||
|
||||
minetest.register_node("default:ceiling_paint", {
|
||||
description = "Textured Ceiling Paint",
|
||||
drawtype = 'signlike',
|
||||
tiles = { 'homedecor_ceiling_paint.png' },
|
||||
inventory_image = 'homedecor_ceiling_paint_roller.png',
|
||||
wield_image = 'homedecor_ceiling_paint_roller.png',
|
||||
sunlight_propagates = true,
|
||||
paramtype = 'light',
|
||||
walkable = false,
|
||||
groups = { snappy = 3 },
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
selection_box = { type = "wallmounted", },
|
||||
})
|
||||
|
||||
minetest.register_node("default:kitchen_cabinet", {
|
||||
description = desc,
|
||||
tiles = { 'homedecor_kitchen_cabinet_top_granite.png',
|
||||
'homedecor_kitchen_cabinet_bottom.png',
|
||||
'homedecor_kitchen_cabinet_sides.png',
|
||||
'homedecor_kitchen_cabinet_sides.png',
|
||||
'homedecor_kitchen_cabinet_sides.png',
|
||||
'homedecor_kitchen_cabinet_front.png'},
|
||||
sunlight_propagates = false,
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
walkable = true,
|
||||
groups = { snappy = 3 },
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
on_construct = function(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("formspec",
|
||||
"size[8,8]"..
|
||||
"list[current_name;main;0,0;8,3;]"..
|
||||
"list[current_player;main;0,4;8,4;]")
|
||||
meta:set_string("infotext", "Kitchen Cabinet")
|
||||
local inv = meta:get_inventory()
|
||||
inv:set_size("main", 24)
|
||||
end,
|
||||
can_dig = function(pos,player)
|
||||
local meta = minetest.get_meta(pos);
|
||||
local inv = meta:get_inventory()
|
||||
return inv:is_empty("main")
|
||||
end,
|
||||
on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
|
||||
minetest.log("action", "%s moves stuff in kitchen cabinet at %s":format(
|
||||
player:get_player_name(),
|
||||
minetest.pos_to_string(pos)
|
||||
))
|
||||
end,
|
||||
on_metadata_inventory_put = function(pos, listname, index, stack, player)
|
||||
minetest.log("action", "%s moves stuff to kitchen cabinet at %s":format(
|
||||
player:get_player_name(),
|
||||
minetest.pos_to_string(pos)
|
||||
))
|
||||
end,
|
||||
on_metadata_inventory_take = function(pos, listname, index, stack, player)
|
||||
minetest.log("action", "%s takes stuff from kitchen cabinet at %s":format(
|
||||
player:get_player_name(),
|
||||
minetest.pos_to_string(pos)
|
||||
))
|
||||
end,
|
||||
})
|
||||
end
|
||||
|
||||
minetest.register_node("default:kitchen_cabinet_half", {
|
||||
drawtype="nodebox",
|
||||
description = 'Half-height Kitchen Cabinet (on ceiling)',
|
||||
tiles = { 'homedecor_kitchen_cabinet_sides.png',
|
||||
'homedecor_kitchen_cabinet_bottom.png',
|
||||
'homedecor_kitchen_cabinet_sides.png',
|
||||
'homedecor_kitchen_cabinet_sides.png',
|
||||
'homedecor_kitchen_cabinet_sides.png',
|
||||
'homedecor_kitchen_cabinet_front_half.png'},
|
||||
sunlight_propagates = false,
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
walkable = true,
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = { -0.5, 0, -0.5, 0.5, 0.5, 0.5 }
|
||||
},
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = { -0.5, 0, -0.5, 0.5, 0.5, 0.5 }
|
||||
},
|
||||
groups = { snappy = 3 },
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
on_construct = function(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("formspec",
|
||||
"size[8,7]"..
|
||||
"list[current_name;main;1,0;6,2;]"..
|
||||
"list[current_player;main;0,3;8,4;]")
|
||||
meta:set_string("infotext", "Kitchen Cabinet")
|
||||
local inv = meta:get_inventory()
|
||||
inv:set_size("main", 12)
|
||||
end,
|
||||
can_dig = function(pos,player)
|
||||
local meta = minetest.get_meta(pos);
|
||||
local inv = meta:get_inventory()
|
||||
return inv:is_empty("main")
|
||||
end,
|
||||
on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
|
||||
minetest.log("action", "%s moves stuff in kitchen cabinet at %s":format(
|
||||
player:get_player_name(),
|
||||
minetest.pos_to_string(pos)
|
||||
))
|
||||
end,
|
||||
on_metadata_inventory_put = function(pos, listname, index, stack, player)
|
||||
minetest.log("action", "%s moves stuff to kitchen cabinet at %s":format(
|
||||
player:get_player_name(),
|
||||
minetest.pos_to_string(pos)
|
||||
))
|
||||
end,
|
||||
on_metadata_inventory_take = function(pos, listname, index, stack, player)
|
||||
minetest.log("action", "%s takes stuff from kitchen cabinet at %s":format(
|
||||
player:get_player_name(),
|
||||
minetest.pos_to_string(pos)
|
||||
))
|
||||
end,
|
||||
})
|
||||
|
||||
minetest.register_node("default:toilet", {
|
||||
description = "Toilet",
|
||||
tiles = { "default_marble.png" },
|
||||
drawtype = "nodebox",
|
||||
sunlight_propagates = false,
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{ -0.20, -0.50, -0.20, 0.20, -0.45, 0.50, },
|
||||
{ -0.10, -0.45, -0.10, 0.10, 0.00, 0.50, },
|
||||
{ -0.30, -0.20, -0.30, 0.30, 0.00, 0.35, },
|
||||
{ -0.25, 0.00, -0.25, 0.25, 0.05, 0.25, },
|
||||
{ -0.30, 0.00, 0.30, 0.30, 0.40, 0.50, },
|
||||
{ -0.05, 0.40, 0.35, 0.05, 0.45, 0.45, },
|
||||
},
|
||||
},
|
||||
drop = "default:toilet",
|
||||
groups = {cracky=3,},
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
on_punch = function (pos, node, puncher)
|
||||
node.name = "default:toilet_open"
|
||||
minetest.set_node(pos, node)
|
||||
end,
|
||||
})
|
||||
|
||||
minetest.register_node("default:toilet_open", {
|
||||
tiles = {
|
||||
"fdefault_toilet.png",
|
||||
"default_marble.png"
|
||||
},
|
||||
drawtype = "nodebox",
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{ -0.20, -0.50, -0.20, 0.20, -0.45, 0.50, },
|
||||
{ -0.10, -0.45, -0.10, 0.10, -0.20, 0.50, },
|
||||
{ -0.10, -0.20, 0.30, 0.10, 0.00, 0.50, },
|
||||
{ -0.30, -0.20, 0.10, 0.30, 0.00, 0.35, },
|
||||
{ -0.30, -0.20, -0.30, -0.10, -0.15, 0.10, },
|
||||
{ -0.10, -0.20, -0.30, 0.10, -0.15, -0.10, },
|
||||
{ 0.10, -0.20, -0.30, 0.30, -0.15, 0.10, },
|
||||
{ -0.30, -0.15, -0.30, -0.20, 0.00, 0.10, },
|
||||
{ -0.20, -0.15, -0.30, 0.20, 0.00, -0.20, },
|
||||
{ 0.20, -0.15, -0.30, 0.30, 0.00, 0.10, },
|
||||
{ -0.25, 0.00, 0.20, 0.25, 0.50, 0.25, },
|
||||
{ -0.30, 0.00, 0.30, 0.30, 0.40, 0.50, },
|
||||
},
|
||||
},
|
||||
drop = "default:toilet",
|
||||
groups = {cracky = 3,},
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
on_punch = function (pos, node, puncher)
|
||||
node.name = "default:toilet"
|
||||
minetest.set_node(pos, node)
|
||||
minetest.sound_play("homedecor_toilet_flush", {
|
||||
pos=pos,
|
||||
max_hear_distance = 5,
|
||||
gain = 1,
|
||||
})
|
||||
end,
|
||||
})
|
||||
|
||||
minetest.register_node("default:speaker", {
|
||||
description = "Large Stereo Speaker",
|
||||
tiles = { 'homedecor_speaker.png',
|
||||
'homedecor_speaker.png',
|
||||
'homedecor_speaker.png',
|
||||
'homedecor_speaker.png',
|
||||
'homedecor_speaker_back.png',
|
||||
'homedecor_speaker_front.png'},
|
||||
sunlight_propagates = false,
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
walkable = true,
|
||||
groups = { snappy = 3 },
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
})
|
||||
|
||||
minetest.register_node("default:stereo", {
|
||||
description = "Stereo Receiver",
|
||||
tiles = { 'homedecor_stereo_top.png',
|
||||
'homedecor_stereo_bottom.png',
|
||||
'homedecor_stereo_right.png',
|
||||
'homedecor_stereo_left.png',
|
||||
'homedecor_stereo_back.png',
|
||||
'homedecor_stereo_front.png'},
|
||||
sunlight_propagates = false,
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
walkable = true,
|
||||
groups = { snappy = 3 },
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
on_rightclick = function ( pos, node, clicker, itemstack)
|
||||
node.name = "default:stereo_on";
|
||||
minetest.set_node(pos, node);
|
||||
nodeupdate(pos)
|
||||
end
|
||||
})
|
||||
|
||||
minetest.register_node("default:stereo_on", {
|
||||
tiles = { 'homedecor_stereo_top.png',
|
||||
'homedecor_stereo_bottom.png',
|
||||
'homedecor_stereo_right.png',
|
||||
'homedecor_stereo_left.png',
|
||||
'homedecor_stereo_back.png',
|
||||
'homedecor_stereo_front_on.png'},
|
||||
sunlight_propagates = false,
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
drop = "default:stereo"
|
||||
walkable = true,
|
||||
groups = { snappy = 3 },
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
on_rightclick = function ( pos, node, clicker, itemstack)
|
||||
node.name = "default:stereo";
|
||||
minetest.set_node(pos, node);
|
||||
nodeupdate(pos)
|
||||
end
|
||||
})
|
||||
|
||||
minetest.register_node("default:dvd_vcr", {
|
||||
description = "DVD and VCR",
|
||||
drawtype = "nodebox",
|
||||
tiles = {
|
||||
"homedecor_dvdvcr_top.png",
|
||||
"homedecor_dvdvcr_bottom.png",
|
||||
"homedecor_dvdvcr_sides.png",
|
||||
"homedecor_dvdvcr_sides.png^[transformFX",
|
||||
"homedecor_dvdvcr_back.png",
|
||||
"homedecor_dvdvcr_front.png",
|
||||
},
|
||||
inventory_image = "homedecor_dvdvcr_inv.png",
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-0.3125, -0.5, -0.25, 0.3125, -0.375, 0.1875},
|
||||
{-0.25, -0.5, -0.25, 0.25, -0.1875, 0.125},
|
||||
}
|
||||
},
|
||||
groups = { snappy = 3 },
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
})
|
||||
|
||||
minetest.register_node("default:nightstand", {
|
||||
drawtype = "nodebox",
|
||||
description = "Nightstand with Two Drawers",
|
||||
tiles = { 'default_junglewood.png',
|
||||
'default_junglewood.png',
|
||||
'default_junglewood.png',
|
||||
'default_junglewood.png',
|
||||
'default_junglewood.png',
|
||||
'default_nightstand.png'},
|
||||
sunlight_propagates = false,
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
walkable = true,
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{ -8/16, -8/16, -30/64, 8/16, 8/16, 8/16 }, -- main body
|
||||
{ -7/16, 1/16, -32/64, 7/16, 7/16, -29/64 }, -- top drawer face
|
||||
{ -7/16, -7/16, -32/64, 7/16, -1/16, -29/64 }, -- bottom drawer face
|
||||
|
||||
}
|
||||
},
|
||||
groups = { snappy = 3 },
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
on_construct = function(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("formspec",
|
||||
"size[8,7]"..
|
||||
"list[current_name;main;0,0;8,2;]"..
|
||||
"list[current_player;main;0,3;8,4;]")
|
||||
meta:set_string("infotext", "Two-drawer Nightstand")
|
||||
local inv = meta:get_inventory()
|
||||
inv:set_size("main", 16)
|
||||
end,
|
||||
can_dig = function(pos,player)
|
||||
local meta = minetest.get_meta(pos);
|
||||
local inv = meta:get_inventory()
|
||||
return inv:is_empty("main")
|
||||
end,
|
||||
on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
|
||||
minetest.log("action", "%s moves stuff in nightstand at %s":format(
|
||||
player:get_player_name(),
|
||||
minetest.pos_to_string(pos)
|
||||
))
|
||||
end,
|
||||
on_metadata_inventory_put = function(pos, listname, index, stack, player)
|
||||
minetest.log("action", "%s moves stuff to nightstand at %s":format(
|
||||
player:get_player_name(),
|
||||
minetest.pos_to_string(pos)
|
||||
))
|
||||
end,
|
||||
on_metadata_inventory_take = function(pos, listname, index, stack, player)
|
||||
minetest.log("action", "%s takes stuff from nightstand at %s":format(
|
||||
player:get_player_name(),
|
||||
minetest.pos_to_string(pos)
|
||||
))
|
||||
end,
|
||||
})
|
||||
|
||||
-----------------------------------------------------------
|
||||
-------------------------crafting--------------------------
|
||||
-----------------------------------------------------------
|
||||
|
||||
minetest.register_craft( {
|
||||
type = "shapeless",
|
||||
output = "default:ceiling_paint 50",
|
||||
recipe = {
|
||||
"default:dye_white",
|
||||
"defauly:dye_white",
|
||||
"default:sand",
|
||||
"default:bucket_water",
|
||||
},
|
||||
replacements = { { "default:bucket_water","default:bucket_empty" } }
|
||||
})
|
||||
|
||||
minetest.register_craft( {
|
||||
output = "default:stereo",
|
||||
recipe = {
|
||||
{ "default:plastic_sheeting", "default:plastic_sheeting", "default:plastic_sheeting" },
|
||||
{ "default:plastic_sheeting", "default:mese_crystal_fragment", "default:plastic_sheeting" },
|
||||
{ "default:steel_ingot", "default:plastic_sheeting", "default:steel_ingot" },
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft( {
|
||||
output = 'default:speaker 4',
|
||||
recipe = {
|
||||
{ "wool:black", "group:wood", "group:wood" },
|
||||
{ "wool:black", "default:copper_ingot", "group:wood" },
|
||||
{ "wool:black", "group:wood", "group:wood" },
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = 'default:refrigerator 2',
|
||||
recipe = {
|
||||
{"default:steel_ingot", "default:plastic_sheeting", "default:steel_ingot", },
|
||||
{"default:steel_ingot", "default:bucket_water", "default:steel_ingot", },
|
||||
{"default:steel_ingot", "default:mese_crystal_fragment", "default:steel_ingot", },
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = 'default:kitchen_cabinet 2',
|
||||
recipe = {
|
||||
{"group:stone", "group:stone", "group:stone", },
|
||||
{"group:wood", "group:stick", "group:wood", },
|
||||
{"group:wood", "group:stick", "group:wood", },
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "shapeless",
|
||||
output = "default:kitchen_cabinet_half 2",
|
||||
recipe = { "default:kitchen_cabinet" }
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:dvd_vcr",
|
||||
recipe = {
|
||||
{"default:plastic_sheeting", "default:plastic_sheeting", "default:plastic_sheeting", },
|
||||
{"default:plastic_sheeting", "default:mese_crystal_fragment", "default:plastic_sheeting", },
|
||||
{"default:plastic_sheeting", "default:steel_ingot", "default:copper_ingot", },
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:toilet",
|
||||
recipe = {
|
||||
{"", "", "default:bucket_water"},
|
||||
{ "default:marble","default:marble", "default:marble" },
|
||||
{ "", "default:bucket_empty", "" },
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = 'default:nightstand 4',
|
||||
recipe = {
|
||||
{"default:slab_junglewood", "default:slab_junglewoodg", "default:slab_junglewood", },
|
||||
{"default:junglewood", "group:stick", "default:junglewoodg", },
|
||||
{"default:junglewood", "group:stick", "default:junglewood", },
|
||||
},
|
||||
})
|
|
@ -64,6 +64,7 @@ dofile(minetest.get_modpath("default").."/disco_floor.lua")
|
|||
dofile(minetest.get_modpath("default").."/glasses.lua")
|
||||
dofile(minetest.get_modpath("default").."/rum.lua")
|
||||
dofile(minetest.get_modpath("default").."/spawn.lua")
|
||||
dofile(minetest.get_modpath("default").."/homedecor.lua")
|
||||
dofile(minetest.get_modpath("default").."/selahserver.lua")
|
||||
dofile(minetest.get_modpath("default").."/death_msg.lua")
|
||||
dofile(minetest.get_modpath("default").."/signs.lua")
|
||||
|
|
|
@ -20,6 +20,14 @@ minetest.register_node("default:stone", {
|
|||
sounds = default.node_sound_stone_defaults(),
|
||||
})
|
||||
|
||||
minetest.register_node("default:marble", {
|
||||
description = "Marble",
|
||||
tiles = {"default_marble.png"},
|
||||
is_ground_content = true,
|
||||
groups = {cracky=2, stone=1},
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
})
|
||||
|
||||
minetest.register_node("default:desert_stone", {
|
||||
description = "Desert Stone",
|
||||
tiles = {"default_desert_stone.png"},
|
||||
|
@ -1311,6 +1319,158 @@ minetest.register_node("default:furnace_active", {
|
|||
end,
|
||||
})
|
||||
|
||||
minetest.register_node("default:oven", {
|
||||
description = "Furnace",
|
||||
tiles = {
|
||||
"homedecor_oven_top.png",
|
||||
"default_coal_block.png",
|
||||
"homedecor_oven_side.png",
|
||||
"homedecor_oven_side.png",
|
||||
"homedecor_oven_side.png",
|
||||
"homedecor_oven_front",
|
||||
},
|
||||
paramtype2 = "facedir",
|
||||
groups = {cracky=2},
|
||||
legacy_facedir_simple = true,
|
||||
is_ground_content = false,
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
on_construct = function(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("formspec", default.furnace_inactive_formspec)
|
||||
meta:set_string("infotext", "Oven")
|
||||
local inv = meta:get_inventory()
|
||||
inv:set_size("fuel", 1)
|
||||
inv:set_size("src", 1)
|
||||
inv:set_size("dst", 4)
|
||||
end,
|
||||
can_dig = function(pos,player)
|
||||
local meta = minetest.get_meta(pos);
|
||||
local inv = meta:get_inventory()
|
||||
if not inv:is_empty("fuel") then
|
||||
return false
|
||||
elseif not inv:is_empty("dst") then
|
||||
return false
|
||||
elseif not inv:is_empty("src") then
|
||||
return false
|
||||
end
|
||||
return true
|
||||
end,
|
||||
allow_metadata_inventory_put = function(pos, listname, index, stack, player)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local inv = meta:get_inventory()
|
||||
if listname == "fuel" then
|
||||
if minetest.get_craft_result({method="fuel",width=1,items={stack}}).time ~= 0 then
|
||||
if inv:is_empty("src") then
|
||||
meta:set_string("infotext","Oven is empty")
|
||||
end
|
||||
return stack:get_count()
|
||||
else
|
||||
return 0
|
||||
end
|
||||
elseif listname == "src" then
|
||||
return stack:get_count()
|
||||
elseif listname == "dst" then
|
||||
return 0
|
||||
end
|
||||
end,
|
||||
allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local inv = meta:get_inventory()
|
||||
local stack = inv:get_stack(from_list, from_index)
|
||||
if to_list == "fuel" then
|
||||
if minetest.get_craft_result({method="fuel",width=1,items={stack}}).time ~= 0 then
|
||||
if inv:is_empty("src") then
|
||||
meta:set_string("infotext","Oven is empty")
|
||||
end
|
||||
return count
|
||||
else
|
||||
return 0
|
||||
end
|
||||
elseif to_list == "src" then
|
||||
return count
|
||||
elseif to_list == "dst" then
|
||||
return 0
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
minetest.register_node("default:oven_active", {
|
||||
description = "Furnace",
|
||||
tiles = {
|
||||
"homedecor_oven_top.png",
|
||||
"default_coal_block.png",
|
||||
"homedecor_oven_side.png",
|
||||
"homedecor_oven_side.png",
|
||||
"homedecor_oven_side.png",
|
||||
"homedecor_oven_front_active",
|
||||
},
|
||||
paramtype2 = "facedir",
|
||||
light_source = 8,
|
||||
drop = "default:oven",
|
||||
groups = {cracky=2, not_in_creative_inventory=1,hot=1},
|
||||
legacy_facedir_simple = true,
|
||||
is_ground_content = false,
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
on_construct = function(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("formspec", default.furnace_inactive_formspec)
|
||||
meta:set_string("infotext", "Oven");
|
||||
local inv = meta:get_inventory()
|
||||
inv:set_size("fuel", 1)
|
||||
inv:set_size("src", 1)
|
||||
inv:set_size("dst", 4)
|
||||
end,
|
||||
can_dig = function(pos,player)
|
||||
local meta = minetest.get_meta(pos);
|
||||
local inv = meta:get_inventory()
|
||||
if not inv:is_empty("fuel") then
|
||||
return false
|
||||
elseif not inv:is_empty("dst") then
|
||||
return false
|
||||
elseif not inv:is_empty("src") then
|
||||
return false
|
||||
end
|
||||
return true
|
||||
end,
|
||||
allow_metadata_inventory_put = function(pos, listname, index, stack, player)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local inv = meta:get_inventory()
|
||||
if listname == "fuel" then
|
||||
if minetest.get_craft_result({method="fuel",width=1,items={stack}}).time ~= 0 then
|
||||
if inv:is_empty("src") then
|
||||
meta:set_string("infotext","Oven is empty")
|
||||
end
|
||||
return stack:get_count()
|
||||
else
|
||||
return 0
|
||||
end
|
||||
elseif listname == "src" then
|
||||
return stack:get_count()
|
||||
elseif listname == "dst" then
|
||||
return 0
|
||||
end
|
||||
end,
|
||||
allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local inv = meta:get_inventory()
|
||||
local stack = inv:get_stack(from_list, from_index)
|
||||
if to_list == "fuel" then
|
||||
if minetest.get_craft_result({method="fuel",width=1,items={stack}}).time ~= 0 then
|
||||
if inv:is_empty("src") then
|
||||
meta:set_string("infotext","Oven is empty")
|
||||
end
|
||||
return count
|
||||
else
|
||||
return 0
|
||||
end
|
||||
elseif to_list == "src" then
|
||||
return count
|
||||
elseif to_list == "dst" then
|
||||
return 0
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
local function swap_node(pos,name)
|
||||
local node = minetest.get_node(pos)
|
||||
if node.name == name then
|
||||
|
@ -1412,6 +1572,98 @@ minetest.register_abm({
|
|||
end,
|
||||
})
|
||||
|
||||
minetest.register_abm({
|
||||
nodenames = {"default:oven","default:oven_active"},
|
||||
interval = 1.0,
|
||||
chance = 1,
|
||||
action = function(pos, node, active_object_count, active_object_count_wider)
|
||||
local meta = minetest.get_meta(pos)
|
||||
for i, name in ipairs({
|
||||
"fuel_totaltime",
|
||||
"fuel_time",
|
||||
"src_totaltime",
|
||||
"src_time"
|
||||
}) do
|
||||
if meta:get_string(name) == "" then
|
||||
meta:set_float(name, 0.0)
|
||||
end
|
||||
end
|
||||
|
||||
local inv = meta:get_inventory()
|
||||
|
||||
local srclist = inv:get_list("src")
|
||||
local cooked = nil
|
||||
local aftercooked
|
||||
|
||||
if srclist then
|
||||
cooked, aftercooked = minetest.get_craft_result({method = "cooking", width = 1, items = srclist})
|
||||
end
|
||||
|
||||
local was_active = false
|
||||
|
||||
if meta:get_float("fuel_time") < meta:get_float("fuel_totaltime") then
|
||||
was_active = true
|
||||
meta:set_float("fuel_time", meta:get_float("fuel_time") + 1)
|
||||
meta:set_float("src_time", meta:get_float("src_time") + 1)
|
||||
if cooked and cooked.item and meta:get_float("src_time") >= cooked.time then
|
||||
-- check if there's room for output in "dst" list
|
||||
if inv:room_for_item("dst",cooked.item) then
|
||||
-- Put result in "dst" list
|
||||
inv:add_item("dst", cooked.item)
|
||||
-- take stuff from "src" list
|
||||
inv:set_stack("src", 1, aftercooked.items[1])
|
||||
else
|
||||
--print("Could not insert '"..cooked.item:to_string().."'")
|
||||
end
|
||||
meta:set_string("src_time", 0)
|
||||
end
|
||||
end
|
||||
|
||||
if meta:get_float("fuel_time") < meta:get_float("fuel_totaltime") then
|
||||
local percent = math.floor(meta:get_float("fuel_time") /
|
||||
meta:get_float("fuel_totaltime") * 100)
|
||||
meta:set_string("infotext","Oven active: "..percent.."%")
|
||||
swap_node(pos,"default:oven_active")
|
||||
meta:set_string("formspec",default.get_furnace_active_formspec(pos, percent))
|
||||
return
|
||||
end
|
||||
|
||||
local fuel = nil
|
||||
local afterfuel
|
||||
local cooked = nil
|
||||
local fuellist = inv:get_list("fuel")
|
||||
local srclist = inv:get_list("src")
|
||||
|
||||
if srclist then
|
||||
cooked = minetest.get_craft_result({method = "cooking", width = 1, items = srclist})
|
||||
end
|
||||
if fuellist then
|
||||
fuel, afterfuel = minetest.get_craft_result({method = "fuel", width = 1, items = fuellist})
|
||||
end
|
||||
|
||||
if not fuel or fuel.time <= 0 then
|
||||
meta:set_string("infotext","Oven out of fuel")
|
||||
swap_node(pos,"default:oven")
|
||||
meta:set_string("formspec", default.furnace_inactive_formspec)
|
||||
return
|
||||
end
|
||||
|
||||
if cooked.item:is_empty() then
|
||||
if was_active then
|
||||
meta:set_string("infotext","Oven is empty")
|
||||
swap_node(pos,"default:oven")
|
||||
meta:set_string("formspec", default.furnace_inactive_formspec)
|
||||
end
|
||||
return
|
||||
end
|
||||
|
||||
meta:set_string("fuel_totaltime", fuel.time)
|
||||
meta:set_string("fuel_time", 0)
|
||||
|
||||
inv:set_stack("fuel", 1, afterfuel.items[1])
|
||||
end,
|
||||
})
|
||||
|
||||
minetest.register_node("default:cobble", {
|
||||
description = "Cobblestone",
|
||||
tiles = {"default_cobble.png"},
|
||||
|
|
After Width: | Height: | Size: 478 B |
After Width: | Height: | Size: 451 B |
After Width: | Height: | Size: 638 B |
After Width: | Height: | Size: 330 B |
After Width: | Height: | Size: 330 B |
After Width: | Height: | Size: 243 B |
After Width: | Height: | Size: 336 B |
After Width: | Height: | Size: 297 B |
After Width: | Height: | Size: 238 B |
After Width: | Height: | Size: 853 B |
After Width: | Height: | Size: 315 B |
After Width: | Height: | Size: 363 B |
After Width: | Height: | Size: 304 B |
After Width: | Height: | Size: 258 B |
After Width: | Height: | Size: 303 B |
After Width: | Height: | Size: 366 B |
After Width: | Height: | Size: 358 B |
After Width: | Height: | Size: 351 B |
After Width: | Height: | Size: 278 B |
After Width: | Height: | Size: 170 B |
After Width: | Height: | Size: 438 B |
After Width: | Height: | Size: 186 B |
After Width: | Height: | Size: 170 B |
After Width: | Height: | Size: 409 B |
After Width: | Height: | Size: 467 B |
After Width: | Height: | Size: 144 B |
After Width: | Height: | Size: 144 B |
After Width: | Height: | Size: 138 B |
After Width: | Height: | Size: 398 B |
|
@ -64,24 +64,18 @@ end
|
|||
minetest.register_craft({
|
||||
output = "default:plasma_tv",
|
||||
recipe = {
|
||||
{'group:glass', 'default:coal_lump', 'group:glass'},
|
||||
{'default:steel_ingot', 'default:copper_ingot', 'default:steel_ingot'},
|
||||
{'group:glass', 'group:glass', 'group:glass'},
|
||||
{'group:glass', 'default:dye_black', 'group:glass'},
|
||||
{'default:steel_ingot', 'default:mese_crystal_fragment', 'default:steel_ingot'},
|
||||
{'group:glass', 'group:glass', 'group:glass'},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "shapeless",
|
||||
output = "default:plasma_tv",
|
||||
recipe = {'homedecor:television', 'homedecor:television'},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:stand",
|
||||
output = "default:tv_stand",
|
||||
recipe = {
|
||||
{'', '', ''},
|
||||
{'', 'default:steel_ingot', ''},
|
||||
{'group:stick', 'default:coal_lump', 'group:stick'},
|
||||
{'', '', ''},
|
||||
{'default:plastic_sheeting', 'default:plastic_sheeting', 'default:dye_black'},
|
||||
{'default:steel_ingot', 'default:steel_ingot', ''},
|
||||
}
|
||||
})
|
||||
|
||||
|
|