From cb60338f10f77aa83c31f37dea00bf2fe12b5d04 Mon Sep 17 00:00:00 2001 From: PrairieWind Date: Sat, 5 Nov 2022 13:18:38 -0600 Subject: [PATCH] Add basic functionality to beehives Uses a temporary ABM to progress through honey levels --- mods/ITEMS/mcl_beehives/init.lua | 88 +++++++++++++++++++++++++++++++- mods/ITEMS/mcl_honey/init.lua | 1 + 2 files changed, 88 insertions(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_beehives/init.lua b/mods/ITEMS/mcl_beehives/init.lua index a9a1656fa..d2b0ee643 100644 --- a/mods/ITEMS/mcl_beehives/init.lua +++ b/mods/ITEMS/mcl_beehives/init.lua @@ -5,6 +5,34 @@ -- Variables local S = minetest.get_translator(minetest.get_current_modname()) +-- Function to allow harvesting honey and honeycomb from the beehive and bee nest. +local honey_harvest = function(pos, node, player, itemstack, pointed_thing) + local inv = player:get_inventory() + local beehive = "mcl_beehives:beehive" + + if node.name == "mcl_beehives:beehive_5" then + beehive = "mcl_beehives:beehive" + elseif node.name == "mcl_beehives:bee_nest_5" then + beehive = "mcl_beehives:bee_nest" + end + + if player:get_wielded_item():get_name() == "mcl_potions:glass_bottle" then + local honey = "mcl_honey:honey_bottle" + if inv:room_for_item("main", honey) then + node.name = beehive + minetest.set_node(pos, node) + inv:add_item("main", "mcl_honey:honey_bottle") + if not minetest.is_creative_enabled(player:get_player_name()) then + itemstack:take_item() + end + end + elseif player:get_wielded_item():get_name() == "mcl_tools:shears" then + minetest.add_item(pos, "mcl_honey:honeycomb 3") + node.name = beehive + minetest.set_node(pos, node) + end +end + -- Beehive minetest.register_node("mcl_beehives:beehive", { description = S("Beehive"), @@ -15,11 +43,43 @@ minetest.register_node("mcl_beehives:beehive", { "mcl_beehives_beehive_side.png", "mcl_beehives_beehive_front.png", }, paramtype2 = "facedir", - groups = { axey = 1, deco_block = 1, flammable = 0, fire_flammability = 5, material_wood = 1 }, + groups = { axey = 1, deco_block = 1, flammable = 0, fire_flammability = 5, material_wood = 1, beehive = 1 }, _mcl_blast_resistance = 0.6, _mcl_hardness = 0.6, }) +for l = 1, 4 do + minetest.register_node("mcl_beehives:beehive_" .. l, { + description = S("Beehive"), + _doc_items_longdesc = S("Artificial bee nest."), + tiles = { + "mcl_beehives_beehive_end.png", "mcl_beehives_beehive_end.png", + "mcl_beehives_beehive_side.png", "mcl_beehives_beehive_side.png", + "mcl_beehives_beehive_side.png", "mcl_beehives_beehive_front.png", + }, + paramtype2 = "facedir", + groups = { axey = 1, deco_block = 1, flammable = 0, fire_flammability = 5, material_wood = 1, not_in_creative_inventory = 1, beehive = 1 }, + _mcl_blast_resistance = 0.6, + _mcl_hardness = 0.6, + drops = "mcl_beehives:beehive", + }) +end + +minetest.register_node("mcl_beehives:beehive_5", { + description = S("Beehive"), + _doc_items_longdesc = S("Artificial bee nest."), + tiles = { + "mcl_beehives_beehive_end.png", "mcl_beehives_beehive_end.png", + "mcl_beehives_beehive_side.png", "mcl_beehives_beehive_side.png", + "mcl_beehives_beehive_side.png", "mcl_beehives_beehive_front_honey.png", + }, + paramtype2 = "facedir", + groups = { axey = 1, deco_block = 1, flammable = 0, fire_flammability = 5, material_wood = 1, not_in_creative_inventory = 1, beehive = 1 }, + _mcl_blast_resistance = 0.6, + _mcl_hardness = 0.6, + on_rightclick = honey_harvest, +}) + -- Bee Nest minetest.register_node("mcl_beehives:bee_nest", { description = S("Bee Nest"), @@ -45,3 +105,29 @@ minetest.register_craft({ }, }) +-- Temporary ABM to update honey levels +minetest.register_abm({ + label = "Update Beehive Honey Levels", + nodenames = "group:beehive", + interval = 500, + chance = 1, + action = function(pos, node, active_object_count, active_object_count_wider) + local beehive = "mcl_beehives:beehive" + if node.name == beehive then + node.name = beehive.."_1" + minetest.set_node(pos, node) + elseif node.name == beehive.."_1" then + node.name = beehive.."_2" + minetest.set_node(pos, node) + elseif node.name == beehive.."_2" then + node.name = beehive.."_3" + minetest.set_node(pos, node) + elseif node.name == beehive.."_3" then + node.name = beehive.."_4" + minetest.set_node(pos, node) + elseif node.name == beehive.."_4" then + node.name = beehive.."_5" + minetest.set_node(pos, node) + end + end, +}) diff --git a/mods/ITEMS/mcl_honey/init.lua b/mods/ITEMS/mcl_honey/init.lua index 576a5459f..0300eb7b9 100644 --- a/mods/ITEMS/mcl_honey/init.lua +++ b/mods/ITEMS/mcl_honey/init.lua @@ -47,6 +47,7 @@ minetest.register_node("mcl_honey:honey_block", { "mcl_honey_block_side.png", "mcl_honey_block_side.png", }, groups = { handy = 1, deco_block = 1 }, + paramtype2 = "facedir", _mcl_blast_resistance = 0, _mcl_hardness = 0, })