X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=hive.lua;h=c942c18b38c02cff247040b65d44a1d299e2a6ed;hb=c514fe233e1c3e90711f71da1c5839bf2ddb24cf;hp=de6c84e66dc74772fb48e920ddb83e49afef8a95;hpb=b56c002a97c28e6f2acafc969336537e4d00b27b;p=xdecor.git diff --git a/hive.lua b/hive.lua index de6c84e..c942c18 100644 --- a/hive.lua +++ b/hive.lua @@ -2,28 +2,23 @@ local hive = {} function hive.construct(pos) local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() local xbg = default.gui_bg..default.gui_bg_img..default.gui_slots - meta:set_string("formspec", "size[8,5;]"..xbg.. - "label[1.35,0;Bees are making honey\nwith pollen around...]".. - "image[0.2,-0.1;1,1;flowers_dandelion_white.png]".. - "image[7,0.1;1,1;flowers_viola.png]".. - "image[6,0;1,1;xdecor_bee.png]".. - "list[current_name;honey;5,0;1,1;]".. - "list[current_player;main;0,1.35;8,4;]") + local formspec = [[ size[8,5;] + label[1.35,0;Bees are making honey] + label[1.35,0.5;with pollen around...] + image[6,0;1,1;hive_bee.png] + image[5,0;1,1;hive_layout.png] + list[context;honey;5,0;1,1;] + list[current_player;main;0,1.35;8,4;] ]] + ..xbg..default.get_hotbar_bg(0,1.35) + + meta:set_string("formspec", formspec) meta:set_string("infotext", "Artificial Hive") - local inv = meta:get_inventory() inv:set_size("honey", 1) end -function hive.dig(pos, _) - local meta = minetest.get_meta(pos) - local inv = meta:get_inventory() - - if not inv:is_empty("honey") then return false end - return true -end - xdecor.register("hive", { description = "Artificial Hive", tiles = { @@ -31,34 +26,32 @@ xdecor.register("hive", { "xdecor_hive_side.png", "xdecor_hive_side.png", "xdecor_hive_side.png", "xdecor_hive_front.png" }, - groups = {snappy=3, flammable=1}, + groups = {choppy=3, oddly_breakable_by_hand=2, flammable=1}, on_construct = hive.construct, - can_dig = hive.dig, - on_punch = function(_, _, puncher, _) - local health = puncher:get_hp() - puncher:set_hp(health - 4) + can_dig = function(pos, _) + return minetest.get_meta(pos):get_inventory():is_empty("honey") end, - allow_metadata_inventory_put = function(_, listname, _, stack, _) - if listname == "honey" then return 0 end - return stack:get_count() - end + on_punch = function(_, _, puncher) + puncher:set_hp(puncher:get_hp()-4) + end, + allow_metadata_inventory_put = function() return 0 end }) minetest.register_abm({ nodenames = {"xdecor:hive"}, - interval = 10, chance = 5, + interval = 30, chance = 10, action = function(pos, _, _, _) - local meta = minetest.get_meta(pos) - local inv = meta:get_inventory() + local inv = minetest.get_meta(pos):get_inventory() local honeystack = inv:get_stack("honey", 1) local honey = honeystack:get_count() - local radius = 8 + local radius = 4 local minp = vector.add(pos, -radius) local maxp = vector.add(pos, radius) local flowers = minetest.find_nodes_in_area(minp, maxp, "group:flower") - if #flowers >= 4 and honey < 16 then - inv:add_item("honey", "xdecor:honey") end + if #flowers >= 2 and honey < 16 then + inv:add_item("honey", "xdecor:honey") + end end })