X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=nodes.lua;h=0e5bea2ad53f88bb1a6c31d8968494cf482cf914;hb=beeda8cb9becef5811808ddaa0d2525a147076cb;hp=32e21d2d940be38cb085e8a887d6b35816b36d4b;hpb=f1b7d8f107b0b52b608da4a7f827f0d147e9245c;p=xdecor.git diff --git a/nodes.lua b/nodes.lua index 32e21d2..0e5bea2 100644 --- a/nodes.lua +++ b/nodes.lua @@ -48,12 +48,21 @@ xdecor.register_pane("wood_frame", "Wood Frame", { xdecor.register("baricade", { description = "Baricade", drawtype = "plantlike", - walkable = false, + paramtype2 = "facedir", inventory_image = "xdecor_baricade.png", tiles = {"xdecor_baricade.png"}, groups = {choppy=2, oddly_breakable_by_hand=1, flammable=2}, damage_per_second = 4, - selection_box = xdecor.nodebox.slab_y(0.3) + selection_box = xdecor.nodebox.slab_y(0.3), + collision_box = xdecor.pixelbox(2, {{0, 0, 1, 2, 2, 0}}) +}) + +xdecor.register("barrel", { + description = "Barrel", + tiles = {"xdecor_barrel_top.png", "xdecor_barrel_top.png", "xdecor_barrel_sides.png"}, + on_place = minetest.rotate_node, + groups = {choppy=2, oddly_breakable_by_hand=1, flammable=2}, + sounds = default.node_sound_wood_defaults() }) function xdecor.register_storage(name, desc, def) @@ -70,11 +79,6 @@ function xdecor.register_storage(name, desc, def) }) end -xdecor.register_storage("barrel", "Barrel", { - tiles = {"xdecor_barrel_top.png", "xdecor_barrel_sides.png"}, - on_place = minetest.rotate_node -}) - xdecor.register_storage("cabinet", "Wooden Cabinet", { on_rotate = screwdriver.rotate_simple, tiles = {"xdecor_cabinet_sides.png", "xdecor_cabinet_sides.png", @@ -140,6 +144,7 @@ xdecor.register("chair", { on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) pos.y = pos.y + 0 -- Sitting position. xdecor.sit(pos, node, clicker, pointed_thing) + return itemstack end }) @@ -156,7 +161,7 @@ xdecor.register("cobweb", { liquid_range = 0, walkable = false, selection_box = {type = "regular"}, - groups = {dig_immediate=3, liquid=3, flammable=3}, + groups = {snappy=3, liquid=3, flammable=3}, sounds = default.node_sound_leaves_defaults() }) @@ -171,8 +176,9 @@ for _, c in pairs({"red"}) do -- Add more curtains colors simply here. paramtype2 = "wallmounted", groups = {dig_immediate=3, flammable=3}, selection_box = {type="wallmounted"}, - on_rightclick = function(pos, node) + on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) minetest.set_node(pos, {name="xdecor:curtain_open_"..c, param2=node.param2}) + return itemstack end }) @@ -184,8 +190,9 @@ for _, c in pairs({"red"}) do -- Add more curtains colors simply here. groups = {dig_immediate=3, flammable=3, not_in_creative_inventory=1}, selection_box = {type="wallmounted"}, drop = "xdecor:curtain_"..c, - on_rightclick = function(pos, node) + on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) minetest.set_node(pos, {name="xdecor:curtain_"..c, param2=node.param2}) + return itemstack end }) @@ -202,7 +209,12 @@ xdecor.register("cushion", { groups = {snappy=3, flammable=3, fall_damage_add_percent=-50}, on_place = minetest.rotate_node, node_box = xdecor.nodebox.slab_y(0.5), - can_dig = xdecor.sit_dig + can_dig = xdecor.sit_dig, + on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) + pos.y = pos.y + 0 -- Sitting position. + xdecor.sit(pos, node, clicker, pointed_thing) + return itemstack + end }) xdecor.register("cushion_block", { @@ -281,7 +293,7 @@ xdecor.register("ivy", { drawtype = "signlike", walkable = false, climbable = true, - groups = {dig_immediate=3, flammable=3, plant=1}, + groups = {snappy=3, flora=1, attached_node=1, plant=1, flammable=3}, paramtype2 = "wallmounted", selection_box = {type="wallmounted"}, tiles = {"xdecor_ivy.png"}, @@ -298,7 +310,7 @@ xdecor.register("lantern", { wield_image = "xdecor_lantern_inv.png", paramtype2 = "wallmounted", walkable = false, - groups = {dig_immediate=3, attached_node=1}, + groups = {snappy=3, attached_node=1}, tiles = {{name = "xdecor_lantern.png", animation = {type="vertical_frames", length=1.5}}}, selection_box = xdecor.pixelbox(16, {{4, 0, 4, 8, 16, 8}}) }) @@ -318,7 +330,7 @@ for _, f in pairs({"dandelion_white", "dandelion_yellow", "geranium", xdecor.register("potted_"..f, { description = "Potted "..f:gsub("%f[%w]%l", string.upper):gsub("_", " "), walkable = false, - groups = {dig_immediate=3, flammable=3, plant=1, flower=1}, + groups = {snappy=3, flammable=3, plant=1, flower=1}, tiles = {"xdecor_"..f.."_pot.png"}, inventory_image = "xdecor_"..f.."_pot.png", drawtype = "plantlike", @@ -346,16 +358,26 @@ xdecor.register("painting_1", { inventory_image = "xdecor_painting_empty.png", wield_image = "xdecor_painting_empty.png", paramtype2 = "wallmounted", - wield_image = "xdecor_painting_empty.png", sunlight_propagates = true, groups = {choppy=3, oddly_breakable_by_hand=2, flammable=2, attached_node=1}, sounds = default.node_sound_wood_defaults(), node_box = painting_box, - on_construct = function(pos) - local node = minetest.get_node(pos) - local random = math.random(4) - if random == 1 then return end - minetest.set_node(pos, {name="xdecor:painting_"..random, param2=node.param2}) + node_placement_prediction = "", + on_place = function(itemstack, placer, pointed_thing) + local player_name = placer:get_player_name() + local pos = pointed_thing.above + + if not minetest.is_protected(pos, player_name) then + local num = math.random(4) + local dir = minetest.dir_to_wallmounted(placer:get_look_dir()) + minetest.set_node(pos, {name="xdecor:painting_"..num, param2=dir}) + else + minetest.chat_send_player(player_name, "This area is protected") + end + if not minetest.setting_getbool("creative_mode") then + itemstack:take_item() + end + return itemstack end }) @@ -425,20 +447,22 @@ xdecor.register("tatami", { tiles = {"xdecor_tatami.png"}, wield_image = "xdecor_tatami.png", groups = {snappy=3, flammable=3}, + sunlight_propagates = true, node_box = xdecor.nodebox.slab_y(0.0625) }) xdecor.register("trampoline", { description = "Trampoline", - tiles = {"xdecor_trampoline.png", "xdecor_trampoline_sides.png"}, - groups = {snappy=3, flammable=3, fall_damage_add_percent=-80, bouncy=90}, - node_box = xdecor.nodebox.slab_y(0.5) + tiles = {"xdecor_trampoline.png", "mailbox_blank16.png", "xdecor_trampoline_sides.png"}, + groups = {cracky=3, oddly_breakable_by_hand=1, fall_damage_add_percent=-80, bouncy=90}, + node_box = xdecor.nodebox.slab_y(0.5), + sounds = {footstep = {name="xdecor_bouncy", gain=0.8}} }) xdecor.register("tv", { description = "Television", light_source = 11, - groups = {snappy=3}, + groups = {cracky=3, oddly_breakable_by_hand=2}, on_rotate = screwdriver.rotate_simple, tiles = {"xdecor_television_left.png^[transformR270", "xdecor_television_left.png^[transformR90", @@ -451,6 +475,7 @@ xdecor.register("tv", { xdecor.register("woodframed_glass", { description = "Wood Framed Glass", drawtype = "glasslike_framed", + sunlight_propagates = true, tiles = {"xdecor_woodframed_glass.png", "xdecor_woodframed_glass_detail.png"}, groups = {cracky=2, oddly_breakable_by_hand=1}, sounds = default.node_sound_glass_defaults()