diff --git a/homedecor/crafts.lua b/homedecor/crafts.lua index e7b75f17..073a3fc2 100644 --- a/homedecor/crafts.lua +++ b/homedecor/crafts.lua @@ -87,6 +87,11 @@ minetest.register_craftitem("homedecor:speaker_driver", { inventory_image = "homedecor_speaker_driver.png" }) +minetest.register_craftitem("homedecor:fan_blades", { + description = S("Fan blades"), + inventory_image = "homedecor_fan_blades.png" +}) + -- alternate crafting if mesecons is/isn't installed if not minetest.get_modpath("mesecons") then @@ -129,6 +134,15 @@ minetest.register_alias("homedecor:brass_ingot", "technic:brass_ingot") -- the actual crafts +minetest.register_craft( { + output = "homedecor:fan_blades 2", + recipe = { + { "", "homedecor:plastic_sheeting", "" }, + { "", "default:steel_ingot", "" }, + { "homedecor:plastic_sheeting", "", "homedecor:plastic_sheeting" } + }, +}) + minetest.register_craft( { output = "homedecor:steel_wire 4", recipe = { @@ -2062,9 +2076,17 @@ minetest.register_craft({ minetest.register_craft( { output = "homedecor:openframe_bookshelf", recipe = { - {"group:wood", "", "group:wood"}, - {"default:book", "default:book", "default:book"}, - {"group:wood", "", "group:wood"}, + {"group:wood", "", "group:wood"}, + {"default:book", "default:book", "default:book"}, + {"group:wood", "", "group:wood"}, + }, +}) + +minetest.register_craft( { + output = "homedecor:desk_fan", + recipe = { + {"default:steel_ingot", "homedecor:fan_blades", "homedecor:motor"}, + {"", "default:steel_ingot", ""} }, }) diff --git a/homedecor/fans.lua b/homedecor/fans.lua new file mode 100644 index 00000000..4d269f09 --- /dev/null +++ b/homedecor/fans.lua @@ -0,0 +1,85 @@ +minetest.register_entity("homedecor:mesh_desk_fan", { + collisionbox = { 0, 0, 0, 0, 0, 0 }, + visual = "mesh", + mesh = "homedecor_desk_fan.b3d", + textures = {"homedecor_desk_fan_uv.png"}, + visual_size = {x=10, y=10}, +}) + +minetest.register_node("homedecor:desk_fan", { + description = "Desk Fan", + drawtype = "nodebox", + paramtype2 = "facedir", + legacy_facedir_simple = true, + paramtype = "light", + groups = {oddly_breakable_by_hand=2}, + node_box = { + type = "fixed", + fixed = { + {-0.1875, -0.5, -0.1875, 0.1875, -0.375, 0.1875}, -- NodeBox1 + } + }, + tiles = {"homedecor_desk_fan_body.png"}, + inventory_image = "homedecor_desk_fan_inv.png", + wield_image = "homedecor_desk_fan_inv.png", + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, + } + }, + on_construct = function(pos) + local entity_remove = minetest.get_objects_inside_radius(pos, 0.1) + local meta = minetest.get_meta(pos) + meta:set_string("active", "no") + print (meta:get_string("active")) + if entity_remove[1] == nil then + minetest.add_entity({x=pos.x, y=pos.y, z=pos.z}, "homedecor:mesh_desk_fan") --+(0.0625*10) + entity_remove = minetest.get_objects_inside_radius(pos, 0.1) + if minetest.get_node(pos).param2 == 0 then --list of rad to 90 degree: 3.142/2 = 90; 3.142 = 180; 3*3.142 = 270 + entity_remove[1]:setyaw(3.142) + elseif minetest.get_node(pos).param2 == 1 then + entity_remove[1]:setyaw(3.142/2) + elseif minetest.get_node(pos).param2 == 3 then + entity_remove[1]:setyaw((-3.142/2)) + else + entity_remove[1]:setyaw(0) + end + end + end, + on_punch = function(pos) + local entity_anim = minetest.get_objects_inside_radius(pos, 0.1) + local speedy_meta = minetest.get_meta(pos) + if speedy_meta:get_string("active") == "no" then + speedy_meta:set_string("active", "yes") + print (speedy_meta:get_string("active")) + elseif speedy_meta:get_string("active") == "yes" then + speedy_meta:set_string("active", "no") + print (speedy_meta:get_string("active")) + end + + if entity_anim[1] == nil then + minetest.add_entity({x=pos.x, y=pos.y, z=pos.z}, "homedecor:mesh_desk_fan") --+(0.0625*10) + local entity_remove = minetest.get_objects_inside_radius(pos, 0.1) + if minetest.get_node(pos).param2 == 0 then --list of rad to 90 degree: 3.142/2 = 90; 3.142 = 180; 3*3.142 = 270 + entity_remove[1]:setyaw(3.142) + elseif minetest.get_node(pos).param2 == 1 then + entity_remove[1]:setyaw(3.142/2) + elseif minetest.get_node(pos).param2 == 3 then + entity_remove[1]:setyaw((-3.142/2)) + else + entity_remove[1]:setyaw(0) + end + end + local entity_anim = minetest.get_objects_inside_radius(pos, 0.1) + if minetest.get_meta(pos):get_string("active") == "no" then + entity_anim[1]:set_animation({x=0,y=0}, 1, 0) + elseif minetest.get_meta(pos):get_string("active") == "yes" then + entity_anim[1]:set_animation({x=0,y=96}, 24, 0) + end + end, + after_dig_node = function(pos) + local entity_remove = minetest.get_objects_inside_radius(pos, 0.1) + entity_remove[1]:remove() + end, +}) diff --git a/homedecor/init.lua b/homedecor/init.lua index c54add1c..3e323c4a 100644 --- a/homedecor/init.lua +++ b/homedecor/init.lua @@ -99,7 +99,10 @@ dofile(homedecor.modpath.."/furniture.lua") dofile(homedecor.modpath.."/furniture_medieval.lua") dofile(homedecor.modpath.."/furniture_bathroom.lua") dofile(homedecor.modpath.."/furniture_recipes.lua") +dofile(homedecor.modpath.."/fans.lua") dofile(homedecor.modpath.."/locked.lua") + + print("[HomeDecor] "..S("Loaded!")) diff --git a/homedecor/models/homedecor_desk_fan.b3d b/homedecor/models/homedecor_desk_fan.b3d new file mode 100644 index 00000000..d49e8b1f Binary files /dev/null and b/homedecor/models/homedecor_desk_fan.b3d differ diff --git a/homedecor/models/homedecor_desk_fan_uv.png b/homedecor/models/homedecor_desk_fan_uv.png new file mode 100644 index 00000000..b6204e54 Binary files /dev/null and b/homedecor/models/homedecor_desk_fan_uv.png differ diff --git a/homedecor/textures/homedecor_desk_fan_body.png b/homedecor/textures/homedecor_desk_fan_body.png new file mode 100644 index 00000000..6ac42e21 Binary files /dev/null and b/homedecor/textures/homedecor_desk_fan_body.png differ diff --git a/homedecor/textures/homedecor_desk_fan_inv.png b/homedecor/textures/homedecor_desk_fan_inv.png new file mode 100644 index 00000000..be2185a1 Binary files /dev/null and b/homedecor/textures/homedecor_desk_fan_inv.png differ diff --git a/homedecor/textures/homedecor_fan_blades.png b/homedecor/textures/homedecor_fan_blades.png new file mode 100644 index 00000000..f751e66d Binary files /dev/null and b/homedecor/textures/homedecor_fan_blades.png differ