new setting 'protect_beehive' to avoid honey plundering

master
root 2022-06-24 13:42:51 +02:00
parent a30028f1f8
commit a47472e2fb
14 changed files with 293 additions and 252 deletions

View File

@ -1,48 +1,58 @@
local S = ...
petz.set_infotext_behive = function(meta, honey_count, bee_count)
local total_bees = meta:get_int("total_bees") or petz.settings.max_bees_behive
meta:set_string("infotext", S("Honey")..": "..tostring(honey_count) .." | "..S("Bees Inside")..": "..tostring(bee_count).." | "..S("Total Bees")..": "..tostring(total_bees))
petz.set_infotext_beehive = function(meta, honey_count, bee_count)
local total_bees = meta:get_int("total_bees") or petz.settings.max_bees_beehive
local infotext = S("Honey")..": "..tostring(honey_count).." | "..S("Bees Inside")..": "..tostring(bee_count).." | "
..S("Total Bees")..": "..tostring(total_bees)
if petz.settings.protect_beehive then
local owner_name = meta:get_string("owner")
if owner_name == "" then
owner_name = S("Unknown")
end
infotext = infotext .. " | " .. S("Owner") .. ": ".. owner_name
end
meta:set_string("infotext", infotext)
end
petz.decrease_total_bee_count = function(pos)
local meta = minetest.get_meta(pos)
local total_bees = meta:get_int("total_bees") or petz.settings.max_bees_behive
local total_bees = meta:get_int("total_bees") or petz.settings.max_bees_beehive
total_bees = total_bees - 1
meta:set_int("total_bees", total_bees)
end
petz.behive_exists = function(self)
local behive_exists
if self.behive then
local node = minetest.get_node_or_nil(self.behive)
petz.beehive_exists = function(self)
local beehive_exists
if self.beehive then
local node = minetest.get_node_or_nil(self.beehive)
if node and node.name == "petz:beehive" then
behive_exists = true
beehive_exists = true
else
behive_exists = false
beehive_exists = false
end
else
behive_exists = false
beehive_exists = false
end
if behive_exists then
if beehive_exists then
return true
else
self.behive = nil
self.beehive = nil
return false
end
end
petz.get_behive_stats = function(pos)
petz.get_beehive_stats = function(pos)
if not(pos) then
return
end
local meta = minetest.get_meta(pos)
local honey_count = meta:get_int("honey_count") or 0
local bee_count = meta:get_int("bee_count") or 0
return meta, honey_count, bee_count
local honey_count = meta:get_int("honey_count")
local bee_count = meta:get_int("bee_count")
local owner = meta:get_string("owner")
return meta, honey_count, bee_count, owner
end
petz.spawn_bee_pos = function(pos) --Check a pos close to a behive to spawn a bee
petz.spawn_bee_pos = function(pos) --Check a pos close to a beehive to spawn a bee
local pos_1 = {
x = pos.x - 1,
y = pos.y - 1,
@ -60,3 +70,177 @@ petz.spawn_bee_pos = function(pos) --Check a pos close to a behive to spawn a be
return nil
end
end
--Beehive
minetest.register_node("petz:beehive", {
description = S("Beehive"),
tiles = {"petz_beehive.png"},
is_ground_content = false,
groups = {snappy = 2, choppy = 2, oddly_breakable_by_hand = 3,
flammable = 3, wool = 1},
sounds = default.node_sound_defaults(),
drop = {},
on_construct = function(pos)
local meta = minetest.get_meta(pos)
local drops = {
{name = "petz:honeycomb", chance = 1, min = 1, max= 6},
}
meta:set_string("drops", minetest.serialize(drops))
local timer = minetest.get_node_timer(pos)
timer:start(2.0) -- in seconds
local honey_count = petz.settings.initial_honey_beehive
meta:set_int("honey_count", honey_count)
local bee_count = petz.settings.max_bees_beehive
meta:set_int("total_bees", bee_count)
meta:set_int("bee_count", bee_count)
petz.set_infotext_beehive(meta, honey_count, bee_count)
end,
after_place_node = function(pos, placer, itemstack, pointed_thing)
local meta = minetest.get_meta(pos)
local honey_count
local bee_count
if placer:is_player() then
honey_count = 0
bee_count = 0
if petz.settings.protect_beehive then
meta:set_string("owner", placer:get_player_name())
end
minetest.after(petz.settings.worker_bee_delay, function()
local node =minetest.get_node_or_nil(pos)
if not(node and node.name == "petz:beehive") then
return
end
meta = minetest.get_meta(pos)
local total_bees = meta:get_int("total_bees") or petz.settings.max_bees_beehive
if total_bees < petz.settings.max_bees_beehive then
bee_count = meta:get_int("bee_count")
bee_count = bee_count + 1
total_bees = total_bees + 1
meta:set_int('bee_count', bee_count)
meta:set_int('total_bees', total_bees)
honey_count = meta:get_int('honey_count')
petz.set_infotext_beehive(meta, honey_count, bee_count)
end
end, pos)
else
honey_count = petz.settings.initial_honey_beehive
bee_count = petz.settings.max_bees_beehive
end
meta:set_int("honey_count", honey_count)
meta:set_int("bee_count", bee_count)
meta:set_int("total_bees", bee_count)
petz.set_infotext_beehive(meta, honey_count, bee_count)
end,
on_destruct = function(pos)
minetest.add_entity(pos, "petz:queen_bee")
kitz.node_drop_items(pos)
end,
on_timer = function(pos)
local meta, honey_count, bee_count, owner = petz.get_beehive_stats(pos)
if bee_count > 0 then --if bee inside
local tpos = {
x = pos. x,
y = pos.y - 4,
z = pos.z,
}
local ray = minetest.raycast(pos, tpos, false, false) --check if fire/torch (igniter) below
local igniter_below = false
for thing in ray do
if thing.type == "node" then
local node_name = minetest.get_node(thing.under).name
--minetest.chat_send_player("singleplayer", node_name)
if minetest.get_item_group(node_name, "igniter") >0 or minetest.get_item_group(node_name, "torch") > 0 then
igniter_below = true
--minetest.chat_send_player("singleplayer", S("igniter"))
break
end
end
end
local bee_outing_ratio
if igniter_below == false then
bee_outing_ratio = petz.settings.bee_outing_ratio
else
bee_outing_ratio = 1
end
if math.random(1, bee_outing_ratio) == 1 then --opportunitty to go out
local spawn_bee_pos = petz.spawn_bee_pos(pos)
if spawn_bee_pos then
local bee = minetest.add_entity(spawn_bee_pos, "petz:bee")
local bee_entity = bee:get_luaentity()
bee_entity.beehive = kitz.remember(bee_entity, "beehive", pos)
bee_count = bee_count - 1
meta:set_int("bee_count", bee_count)
petz.set_infotext_beehive(meta, honey_count, bee_count)
end
end
end
return true
end,
on_rightclick = function(pos, node, player, itemstack, pointed_thing)
local wielded_item = player:get_wielded_item()
local wielded_item_name = wielded_item:get_name()
local meta, honey_count, bee_count, owner = petz.get_beehive_stats(pos)
local player_name = player:get_player_name()
if petz.settings.protect_beehive then
local owner_name = meta:get_string("owner")
if not(owner_name == "") and (owner_name ~= player_name) then
minetest.chat_send_player(player_name, S("This beehive belongs to").." "..owner_name)
return
end
end
if wielded_item_name == "vessels:glass_bottle" then
if honey_count > 0 then
local inv = player:get_inventory()
if inv:room_for_item("main", "petz:honey_bottle") then
local itemstack_name = itemstack:get_name()
local stack = ItemStack("petz:honey_bottle 1")
if (itemstack_name == "petz:honey_bottle" or itemstack_name == "") and (itemstack:get_count() < itemstack:get_stack_max()) then
itemstack:add_item(stack)
else
inv:add_item("main", stack)
end
itemstack:take_item()
honey_count = honey_count - 1
meta:set_int("honey_count", honey_count)
petz.set_infotext_beehive(meta, honey_count, bee_count)
return itemstack
else
minetest.chat_send_player(player_name, S("No room in your inventory for the honey bottle."))
end
else
minetest.chat_send_player(player_name, S("No honey in the beehive."))
end
elseif wielded_item_name == "petz:bee_set" then
local total_bees = meta:get_int("total_bees") or petz.settings.max_bees_beehive
if total_bees < petz.settings.max_bees_beehive then
bee_count = bee_count + 1
total_bees = total_bees + 1
meta:set_int("bee_count", bee_count)
meta:set_int("total_bees", total_bees)
petz.set_infotext_beehive(meta, honey_count, bee_count)
itemstack:take_item()
return itemstack
else
minetest.chat_send_player(player_name, S("This beehive already has").." "
..tostring(petz.settings.max_bees_beehive).." "..S("bees inside."))
end
end
end,
})
minetest.register_craft({
type = "shaped",
output = "petz:beehive",
recipe = {
{"petz:honeycomb", "petz:honeycomb", "petz:honeycomb"},
{"petz:honeycomb", "petz:queen_bee_set", "petz:honeycomb"},
{"petz:honeycomb", "petz:honeycomb", "petz:honeycomb"},
}
})

View File

@ -127,10 +127,10 @@ petz.capture = function(self, clicker, put_in_inventory)
minetest.add_item(clicker:get_pos(), new_stack)
end
end
if self.type == "bee" and self.behive then
petz.decrease_total_bee_count(self.behive)
local meta, honey_count, bee_count = petz.get_behive_stats(self.behive)
petz.set_infotext_behive(meta, honey_count, bee_count)
if self.type == "bee" and self.beehive then
petz.decrease_total_bee_count(self.beehive)
local meta, honey_count, bee_count, owner = petz.get_beehive_stats(self.beehive)
petz.set_infotext_beehive(meta, honey_count, bee_count)
end
petz.remove_tamed_by_owner(self, false)
kitz.remove_mob(self)

View File

@ -8,7 +8,10 @@ petz.dyn_prop = {
anthill_founded = {type= "boolean", default = false},
back_home = {type= "boolean", default = false},
beaver_oil_applied = {type= "boolean", default = false},
--DELETE THIS BLOCK IN A FUTURE UPDATE -- behive changed to beehive>>>
behive = {type= "pos", default = nil},
--<
beehive = {type= "pos", default = nil},
brushed = {type= "boolean", default = false},
captured = {type= "boolean", default = false},
child = {type= "boolean", default = false},
@ -152,7 +155,7 @@ petz.load_vars = function(self)
petz.calculate_sleep_times(self)
end
petz.insert_tamed_by_owner(self)
petz.cleanup_prop(self) --Reset some vars
petz.cleanup_prop(self) --Reset some vars
end
function petz.set_initial_properties(self, staticdata, dtime_s)
@ -160,14 +163,6 @@ function petz.set_initial_properties(self, staticdata, dtime_s)
local static_data_table = minetest.deserialize(staticdata)
local captured_mob = false
local baby_born = false
--TO DELETE IN FUTURE VERSIONS-->
local static_table_name
if static_data_table and static_data_table["memory"] then
static_table_name = "memory"
else
static_table_name = "fields"
end
--<
if static_data_table and static_data_table[static_table_name] and static_data_table[static_table_name]["captured"] then
captured_mob = true
elseif static_data_table and static_data_table["baby_born"] then
@ -322,11 +317,11 @@ function petz.set_initial_properties(self, staticdata, dtime_s)
petz.colorize(self, self.colorized)
end
end
--DELETE THIS BLOCK IN THE NEXT UPDATE -- FOR COMPATIBIITY PURPOSES FOR OLD CHICKENS ONLY>>>
if self.type == "chicken" then
self.is_baby = kitz.remember(self, "is_baby", true)
self.texture_no = kitz.remember(self, "texture_no", 1)
petz.set_properties(self, {textures = {self.textures[1]}})
--<<<
--DELETE THIS BLOCK IN A FUTURE UPDATE -- behive changed to beehive>>>
if self.behive then
self.beehive = kitz.remember(self, "beehive", self.behive)
self.behive = nil
end
--<<<
if self.horseshoes and not captured_mob then

View File

@ -63,22 +63,22 @@ function petz.lq_search_flower(self, tpos)
kitz.queue_low(self, func)
end
function petz.hq_gotobehive(self, prty, pos)
function petz.hq_gotobeehive(self, prty, pos)
local func = function()
if not(self.pollen) or not(self.behive) then
if not(self.pollen) or not(self.beehive) then
return true
end
kitz.animate(self, "fly")
petz.lq_search_behive(self)
petz.lq_search_beehive(self)
end
kitz.queue_high(self, func, prty)
end
function petz.lq_search_behive(self)
function petz.lq_search_beehive(self)
local func = function()
local tpos
if self.behive then
tpos = self.behive
if self.beehive then
tpos = self.beehive
else
return true
end
@ -89,14 +89,14 @@ function petz.lq_search_behive(self)
petz.set_velocity(self, {x= 0.0, y= y_distance, z= 0.0})
end
if kitz.drive_to_pos(self, tpos, 1.5, 6.28, 1.01) then
if petz.behive_exists(self) then
if petz.beehive_exists(self) then
kitz.remove_mob(self)
local meta, honey_count, bee_count = petz.get_behive_stats(self.behive)
local meta, honey_count, bee_count, owner = petz.get_beehive_stats(self.beehive)
bee_count = bee_count + 1
meta:set_int("bee_count", bee_count)
honey_count = honey_count + 1
meta:set_int("honey_count", honey_count)
petz.set_infotext_behive(meta, honey_count, bee_count)
petz.set_infotext_beehive(meta, honey_count, bee_count)
self.pollen = false
end
end
@ -104,23 +104,24 @@ function petz.lq_search_behive(self)
kitz.queue_low(self, func)
end
function petz.hq_approach_behive(self, pos, prty)
function petz.hq_approach_beehive(self, pos, prty)
local func = function()
if math.abs(pos.x - self.behive.x) <= (self.view_range / 2) or math.abs(pos.z - self.behive.z) <= (self.view_range / 2) then
kitz.clear_queue_low(self)
kitz.clear_queue_high(self)
return true
if math.abs(pos.x - self.beehive.x) <= (self.view_range / 2)
or math.abs(pos.z - self.beehive.z) <= (self.view_range / 2) then
kitz.clear_queue_low(self)
kitz.clear_queue_high(self)
return true
end
petz.lq_approach_behive(self)
petz.lq_approach_beehive(self)
end
kitz.queue_high(self, func, prty)
end
function petz.lq_approach_behive(self)
function petz.lq_approach_beehive(self)
local func = function()
local tpos
if self.behive then
tpos = self.behive
if self.beehive then
tpos = self.beehive
else
return true
end

View File

@ -9,28 +9,28 @@ function petz.bee_brain(self)
self.object:set_acceleration({x=0, y=0, z=0})
local behive_exists = petz.behive_exists(self)
local beehive_exists = petz.beehive_exists(self)
local meta, honey_count, bee_count
if behive_exists then
meta, honey_count, bee_count = petz.get_behive_stats(self.behive)
if beehive_exists then
meta, honey_count, bee_count, owner = petz.get_beehive_stats(self.beehive)
end
if (self.hp <= 0) or (not(self.queen) and not(petz.behive_exists(self))) then
if behive_exists then --decrease the total bee count
petz.decrease_total_bee_count(self.behive)
petz.set_infotext_behive(meta, honey_count, bee_count)
if (self.hp <= 0) or (not(self.queen) and not(petz.beehive_exists(self))) then
if beehive_exists then --decrease the total bee count
petz.decrease_total_bee_count(self.beehive)
petz.set_infotext_beehive(meta, honey_count, bee_count)
end
petz.on_die(self) -- Die Behaviour
return
elseif (petz.is_night() and not(self.queen)) then --all the bees sleep in their beehive
if behive_exists then
if beehive_exists then
bee_count = bee_count + 1
meta:set_int("bee_count", bee_count)
if self.pollen and (honey_count < petz.settings.max_honey_behive) then
if self.pollen and (honey_count < petz.settings.max_honey_beehive) then
honey_count = honey_count + 1
meta:set_int("honey_count", honey_count)
end
petz.set_infotext_behive(meta, honey_count, bee_count)
petz.set_infotext_beehive(meta, honey_count, bee_count)
kitz.remove_mob(self)
return
end
@ -54,8 +54,8 @@ function petz.bee_brain(self)
end
--search for flowers
if prty < 20 and behive_exists then
if not(self.queen) and not(self.pollen) and (honey_count < petz.settings.max_honey_behive) then
if prty < 20 and beehive_exists then
if not(self.queen) and not(self.pollen) and (honey_count < petz.settings.max_honey_beehive) then
local view_range = self.view_range
local nearby_flowers = minetest.find_nodes_in_area(
{x = pos.x - view_range, y = pos.y - view_range, z = pos.z - view_range},
@ -69,23 +69,24 @@ function petz.bee_brain(self)
end
end
--search for the bee behive when pollen
if prty < 18 and behive_exists then
if not(self.queen) and self.pollen and (honey_count < petz.settings.max_honey_behive) then
if vector.distance(pos, self.behive) <= self.view_range then
petz.hq_gotobehive(self, 18, pos)
--search for the bee beehive when pollen
if prty < 18 and beehive_exists then
if not(self.queen) and self.pollen and (honey_count < petz.settings.max_honey_beehive) then
if vector.distance(pos, self.beehive) <= self.view_range then
petz.hq_gotobeehive(self, 18, pos)
return
end
end
end
--stay close behive
if prty < 15 and behive_exists then
--stay close beehive
if prty < 15 and beehive_exists then
if not(self.queen) then
--minetest.chat_send_player("singleplayer", "testx")
if math.abs(pos.x - self.behive.x) > self.view_range and math.abs(pos.z - self.behive.z) > self.view_range then
petz.hq_approach_behive(self, pos, 15)
return
if math.abs(pos.x - self.beehive.x) > self.view_range
and math.abs(pos.z - self.beehive.z) > self.view_range then
petz.hq_approach_beehive(self, pos, 15)
return
end
end
end

View File

@ -437,7 +437,7 @@ max_bees_behive = 3 (by default)
- Outing rate: A "bee_outing_ratio=1" means that a bee inmediatelly go out the behive for pollen
bee_outing_ratio = 20 (by default)
Note: Take into account that if there are flowers close the behive a bee will go to them to collect pollen and inmediatelly will return back to the behive. If you want to see bees flying surrounding the behive, the behive should be full of honey so the bees can go for a walk far away. Also bees remain inside the behive at night.
- Initial honey behive: It indicates the initial honey amount on a created behive.
- Initial honey beehive: It indicates the initial honey amount on a created behive.
initial_honey_behive = 3 (by default)
### Bonemeal

View File

@ -143,7 +143,7 @@ No room in your inventory for the egg.=Não há espaço no seu inventário para
No room in your inventory for the honey bottle.=Você não tem espaço no seu inventário para o pote de mel.
No room in your inventory to buy it.=Você não tem espaço no seu inventário para o pote de mel.
No room in your inventory to capture it.=Não há espaço em seu inventário para capturá-lo.
No honey in the behive.=Não há mel na colmeia.
No honey in the beehive.=Não há mel na colmeia.
Muted=Silenciado
Not brushed=Não escovado
One-Pony Open Wagon=Vagão Aberto de um Pónei
@ -223,7 +223,8 @@ The wolf turn into puppy.=O lobo virou um cachorro.
There are still=Ainda há
There's already a bird on top.=Já tem um pássaro no topo.
There's already a kitty in the basket.=Já tem um gatinho dentro.
This behive already has=Esta colmeia já tem
This beehive already has=Esta colmeia já tem
This beehive belongs to=Esta colmeia pertence a
This animal is already pregnant.=Este animal já está grávido.
This animal is already rut.=Este animal já está em cio.
This animal has already been milked.=Este animal já foi ordenhado.
@ -238,6 +239,7 @@ Tropicalfish=Peixe tropical
turn into=tornou-se
Turtle=Tortuga
Turtle Shell=Carapaça de tartaruga
Unknown=Desconhecido
use to throw=usar para lançar
Vanilla Wool=Lã de baunilha
Warrior Ant=Formiga guerreira

View File

@ -143,7 +143,7 @@ No room in your inventory for the egg.=Kein Platz im Inventar für das Ei.
No room in your inventory for the honey bottle.=Kein Platz im Inventar für das Honigglas.
No room in your inventory to buy it.=In Ihrem Inventar ist kein Platz, um es zu kaufen.
No room in your inventory to capture it.=Kein Platz im Inventar, um es zu fangen.
No honey in the behive.=Kein Honig für den Bienenstock.
No honey in the beehive.=Kein Honig für den Bienenstock.
Muted=Stumm
Not brushed=Nicht gebürstet
One-Pony Open Wagon=Ein-Pony-Open-Wagen
@ -223,7 +223,8 @@ The wolf turn into puppy.=Der Wolf wird zu einem Hündchen.
There are still=Es gibt immer noch
There's already a bird on top.=Da ist schon ein Vogel.
There's already a kitty in the basket.=Da ist schon ein Kätzchen im Korb.
This behive already has=Dieser Bienenstock hat bereits
This beehive already has=Dieser Bienenstock hat bereits
This beehive belongs to=Dieser Bienenstock gehört zu
This animal is already pregnant.=Dieses Tier ist schon trächtig.
This animal is already rut.=Dieses Tier ist schon brünftig.
This animal has already been milked.=Dieses Tier wurde schon gemolken.
@ -238,6 +239,7 @@ Tropicalfish=Tropenfisch
turn into=verwandeln zu
Turtle=Schildkröte
Turtle Shell=Schildkrötenpanzer
Unknown=Unbekannt
use to throw=benutzen zum Werfen
Vanilla Wool=Vanillewolle
Warrior Ant=Kriegerameise

View File

@ -143,7 +143,7 @@ No room in your inventory for the egg.=No hay sitio en tu inventario para el hue
No room in your inventory for the honey bottle.=No hay sitio en tu inventario para el tarro de miel.
No room in your inventory to buy it.=No hay espacio en tu inventario para comprarlo.
No room in your inventory to capture it.=No hay espacio en tu inventario para capturarlo.
No honey in the behive.=No hay miel en la colmena.
No honey in the beehive.=No hay miel en la colmena.
Muted=Silenciado
Not brushed=No cepillado
One-Pony Open Wagon=Carromato abierto para poni
@ -223,7 +223,8 @@ The wolf turn into puppy.=El lobo se ha convertido en cachorrito.
There are still=Todavía faltan
There's already a bird on top.=Ya hay un pájaro encima.
There's already a kitty in the basket.=Ya hay un gatito dentro.
This behive already has=Esta colmena ya tiene
This beehive already has=Esta colmena ya tiene
This beehive belongs to=Esta colmena pertenece
This animal is already pregnant.=Este animal ya está preñado.
This animal is already rut.=Este animal ya está en celo.
This animal has already been milked.=Este animal ya ha sido ordeñado.
@ -238,6 +239,7 @@ Tropicalfish=Pez tropical
turn into=se convirtió
Turtle=Tortuga
Turtle Shell=Caparazón de tortuga
Unknown=Desconocido
use to throw=úsala para lanzar
Vanilla Wool=Lana vainilla
Warrior Ant=Hormiga guerrero

View File

@ -143,7 +143,7 @@ No room in your inventory for the egg.=Pas de place dans l'inventaire pour l'œu
No room in your inventory for the honey bottle.=Pas de place dans l'inventaire pour la bouteille de miel.
No room in your inventory to buy it.=Pas de place dans votre inventaire pour l'acheter.
No room in your inventory to capture it.=Pas de place dans votre inventaire pour le saisir.
No honey in the behive.=Pas de miel dans la ruche.
No honey in the beehive.=Pas de miel dans la ruche.
Muted=Muet
Not brushed=Non brossé
One-Pony Open Wagon=Wagon ouvert à un seul poney
@ -223,7 +223,8 @@ The wolf turn into puppy.=Le loup est devenu un chien.
There are still=Il y a encore
There's already a bird on top.=Il y a déjà un oiseau dessus.
There's already a kitty in the basket.=Il y a déjà un chaton dans le panier.
This behive already has=Ce nid d'abeille à déjà
This beehive already has=Ce nid d'abeille à déjà
This beehive belongs to=Cette nid d'abeille appartient à
This animal is already pregnant.=Animal déjà enceinte.
This animal is already rut.=Animal déjà en rut.
This animal has already been milked.=Animal déjà trait.
@ -238,6 +239,7 @@ Tropicalfish=Poisson tropical
turn into=est devenu
Turtle=Tortue
Turtle Shell=Caparace de tortue
Unknown=Inconnu
use to throw=utiliser pour lancer
Vanilla Wool=Laine vanille
Warrior Ant=Fourmi guerrière

View File

@ -143,7 +143,7 @@ No room in your inventory for the egg.=В вашем инвентаре нет
No room in your inventory for the honey bottle.=В вашем инвентаре нет места для баночки меда.
No room in your inventory to buy it.=No room in your inventory to buy it.
No room in your inventory to capture it.=No room in your inventory to capture it.
No honey in the behive.=Мёда больше нет в улье!
No honey in the beehive.=Мёда больше нет в улье!
Muted=Приглушённый
Not brushed=Не причёсанный
One-Pony Open Wagon=Открытый вагон для одного пони
@ -223,7 +223,8 @@ The wolf turn into puppy.=Волк превращается в щенка.
There are still=Они все еще пропали без вести.
There's already a bird on top.=Там уже птица наверху.
There's already a kitty in the basket.=There's already a kitty in the basket.
This behive already has=Улей уже есть.
This beehive already has=Улей уже есть.
This beehive belongs to=Этот улей принадлежит
This animal is already pregnant.=Это животное уже беременно.
This animal is already rut.=Это животное и так уже не в себе.
This animal has already been milked.=Это животное уже доилось.
@ -238,6 +239,7 @@ Tropicalfish=Тропические рыбы
turn into=превращаться в
Turtle=Черепаха
Turtle Shell=Панцирь черепахи
Unknown=Неизвестно
Vanilla Wool=Ванильная шерсть
use to throw=для того чтобы бросить
Warrior Ant=Муравей Воитель

View File

@ -348,162 +348,6 @@ minetest.register_craft({
}
})
--Beehive
minetest.register_node("petz:beehive", {
description = S("Beehive"),
tiles = {"petz_beehive.png"},
is_ground_content = false,
groups = {snappy = 2, choppy = 2, oddly_breakable_by_hand = 3,
flammable = 3, wool = 1},
sounds = default.node_sound_defaults(),
drop = {},
on_construct = function(pos)
local meta = minetest.get_meta(pos)
local drops = {
{name = "petz:honeycomb", chance = 1, min = 1, max= 6},
}
meta:set_string("drops", minetest.serialize(drops))
local timer = minetest.get_node_timer(pos)
timer:start(2.0) -- in seconds
local honey_count = petz.settings.initial_honey_behive
meta:set_int("honey_count", honey_count)
local bee_count = petz.settings.max_bees_behive
meta:set_int("total_bees", bee_count)
meta:set_int("bee_count", bee_count)
petz.set_infotext_behive(meta, honey_count, bee_count)
end,
after_place_node = function(pos, placer, itemstack, pointed_thing)
local meta = minetest.get_meta(pos)
local honey_count
local bee_count
if placer:is_player() then
honey_count = 0
bee_count = 0
minetest.after(petz.settings.worker_bee_delay, function()
local node =minetest.get_node_or_nil(pos)
if not(node and node.name == "petz:beehive") then
return
end
meta = minetest.get_meta(pos)
local total_bees = meta:get_int("total_bees") or petz.settings.max_bees_behive
if total_bees < petz.settings.max_bees_behive then
bee_count = meta:get_int("bee_count")
bee_count = bee_count + 1
total_bees = total_bees + 1
meta:set_int('bee_count', bee_count)
meta:set_int('total_bees', total_bees)
honey_count = meta:get_int('honey_count')
petz.set_infotext_behive(meta, honey_count, bee_count)
end
end, pos)
else
honey_count = petz.settings.initial_honey_behive
bee_count = petz.settings.max_bees_behive
end
meta:set_int("honey_count", honey_count)
meta:set_int("bee_count", bee_count)
meta:set_int("total_bees", bee_count)
petz.set_infotext_behive(meta, honey_count, bee_count)
end,
on_destruct = function(pos)
minetest.add_entity(pos, "petz:queen_bee")
kitz.node_drop_items(pos)
end,
on_timer = function(pos)
local meta, honey_count, bee_count = petz.get_behive_stats(pos)
if bee_count > 0 then --if bee inside
local tpos = {
x = pos. x,
y = pos.y - 4,
z = pos.z,
}
local ray = minetest.raycast(pos, tpos, false, false) --check if fire/torch (igniter) below
local igniter_below = false
for thing in ray do
if thing.type == "node" then
local node_name = minetest.get_node(thing.under).name
--minetest.chat_send_player("singleplayer", node_name)
if minetest.get_item_group(node_name, "igniter") >0 or minetest.get_item_group(node_name, "torch") > 0 then
igniter_below = true
--minetest.chat_send_player("singleplayer", S("igniter"))
break
end
end
end
local bee_outing_ratio
if igniter_below == false then
bee_outing_ratio = petz.settings.bee_outing_ratio
else
bee_outing_ratio = 1
end
if math.random(1, bee_outing_ratio) == 1 then --opportunitty to go out
local spawn_bee_pos = petz.spawn_bee_pos(pos)
if spawn_bee_pos then
local bee = minetest.add_entity(spawn_bee_pos, "petz:bee")
local bee_entity = bee:get_luaentity()
bee_entity.behive = kitz.remember(bee_entity, "behive", pos)
bee_count = bee_count - 1
meta:set_int("bee_count", bee_count)
petz.set_infotext_behive(meta, honey_count, bee_count)
end
end
end
return true
end,
on_rightclick = function(pos, node, player, itemstack, pointed_thing)
local wielded_item = player:get_wielded_item()
local wielded_item_name = wielded_item:get_name()
local meta, honey_count, bee_count = petz.get_behive_stats(pos)
local player_name = player:get_player_name()
if wielded_item_name == "vessels:glass_bottle" then
if honey_count > 0 then
local inv = player:get_inventory()
if inv:room_for_item("main", "petz:honey_bottle") then
local itemstack_name = itemstack:get_name()
local stack = ItemStack("petz:honey_bottle 1")
if (itemstack_name == "petz:honey_bottle" or itemstack_name == "") and (itemstack:get_count() < itemstack:get_stack_max()) then
itemstack:add_item(stack)
else
inv:add_item("main", stack)
end
itemstack:take_item()
honey_count = honey_count - 1
meta:set_int("honey_count", honey_count)
petz.set_infotext_behive(meta, honey_count, bee_count)
return itemstack
else
minetest.chat_send_player(player_name, S("No room in your inventory for the honey bottle."))
end
else
minetest.chat_send_player(player_name, S("No honey in the behive."))
end
elseif wielded_item_name == "petz:bee_set" then
local total_bees = meta:get_int("total_bees") or petz.settings.max_bees_behive
if total_bees < petz.settings.max_bees_behive then
bee_count = bee_count + 1
total_bees = total_bees + 1
meta:set_int("bee_count", bee_count)
meta:set_int("total_bees", total_bees)
petz.set_infotext_behive(meta, honey_count, bee_count)
itemstack:take_item()
return itemstack
else
minetest.chat_send_player(player_name, S("This behive already has").." "..tostring(petz.settings.max_bees_behive).." "..S("bees inside."))
end
end
end,
})
minetest.register_craft({
type = "shaped",
output = "petz:beehive",
recipe = {
{"petz:honeycomb", "petz:honeycomb", "petz:honeycomb"},
{"petz:honeycomb", "petz:queen_bee_set", "petz:honeycomb"},
{"petz:honeycomb", "petz:honeycomb", "petz:honeycomb"},
}
})
--Halloween Update
if minetest.get_modpath("farming") ~= nil and farming.mod == "redo" then

View File

@ -166,15 +166,16 @@ herding_members_distance = 5
herding_shepherd_distance = 5
#Bee stuff
initial_honey_behive = 3
max_honey_behive = 10
max_bees_behive = 3
#bees_outing_rate=1 means that a bee inmediatelly go out the behive for pollen
initial_honey_beehive = 3
max_honey_beehive = 10
max_bees_beehive = 3
protect_beehive = false
#bees_outing_rate=1 means that a bee inmediatelly go out the beehive for pollen
bee_outing_ratio = 20
#The time between a Beehive is created by a pger and a worker bee is automatically created
worker_bee_delay = 300
#behive_spawn_chance = 0.6
#max_behives_in_area = 3
#beehive_spawn_chance = 0.6
#max_beehives_in_area = 3
#Lycanthropy stuff
lycanthropy = true

View File

@ -390,17 +390,17 @@ local settings_def = {
},
--Bee Stuff
{
name = "initial_honey_behive",
name = "initial_honey_beehive",
type = "number",
default = 3,
},
{
name = "max_honey_behive",
name = "max_honey_beehive",
type = "number",
default = 10,
},
{
name = "max_bees_behive",
name = "max_bees_beehive",
type = "number",
default = 3,
},
@ -414,6 +414,11 @@ local settings_def = {
type = "number",
default = 300,
},
{
name = "protect_beehive",
type = "boolean",
default = false,
},
--Weapons
{
name = "pumpkin_grenade_damage",