From 0a6cabf24203805ca9a2db30c26259e701ab67be Mon Sep 17 00:00:00 2001
From: TenPlus1 <kinsellaja@yahoo.com>
Date: Sun, 4 Oct 2015 13:41:29 +0100
Subject: [PATCH] Added mods as pack

---
 README.md                                     |   6 +-
 hbarmor/depends.txt                           |   2 +
 hbarmor/init.lua                              | 156 ++++++
 hbarmor/textures/hbarmor_bar.png              | Bin 0 -> 80 bytes
 hbarmor/textures/hbarmor_icon.png             | Bin 0 -> 434 bytes
 hbhunger/depends.txt                          |  29 ++
 hbhunger/hunger.lua                           | 446 ++++++++++++++++++
 hbhunger/init.lua                             | 177 +++++++
 hbhunger/sounds/hbhunger_eat_generic.ogg      | Bin 0 -> 10869 bytes
 hbhunger/textures/hbhunger_bar.png            | Bin 0 -> 80 bytes
 hbhunger/textures/hbhunger_bgicon.png         | Bin 0 -> 417 bytes
 hbhunger/textures/hbhunger_icon.png           | Bin 0 -> 522 bytes
 depends.txt => hudbars/depends.txt            |   0
 init.lua => hudbars/init.lua                  |   0
 .../textures}/hudbars_bar_background.png      | Bin
 .../textures}/hudbars_bar_breath.png          | Bin
 .../textures}/hudbars_bar_health.png          | Bin
 .../textures}/hudbars_bgicon_health.png       | Bin
 .../textures}/hudbars_icon_breath.png         | Bin
 .../textures}/hudbars_icon_health.png         | Bin
 modpack.txt                                   |   0
 21 files changed, 813 insertions(+), 3 deletions(-)
 create mode 100644 hbarmor/depends.txt
 create mode 100644 hbarmor/init.lua
 create mode 100644 hbarmor/textures/hbarmor_bar.png
 create mode 100644 hbarmor/textures/hbarmor_icon.png
 create mode 100644 hbhunger/depends.txt
 create mode 100644 hbhunger/hunger.lua
 create mode 100644 hbhunger/init.lua
 create mode 100644 hbhunger/sounds/hbhunger_eat_generic.ogg
 create mode 100644 hbhunger/textures/hbhunger_bar.png
 create mode 100644 hbhunger/textures/hbhunger_bgicon.png
 create mode 100644 hbhunger/textures/hbhunger_icon.png
 rename depends.txt => hudbars/depends.txt (100%)
 rename init.lua => hudbars/init.lua (100%)
 rename {textures => hudbars/textures}/hudbars_bar_background.png (100%)
 rename {textures => hudbars/textures}/hudbars_bar_breath.png (100%)
 rename {textures => hudbars/textures}/hudbars_bar_health.png (100%)
 rename {textures => hudbars/textures}/hudbars_bgicon_health.png (100%)
 rename {textures => hudbars/textures}/hudbars_icon_breath.png (100%)
 rename {textures => hudbars/textures}/hudbars_icon_health.png (100%)
 create mode 100644 modpack.txt

diff --git a/README.md b/README.md
index 7e5de8f..739f6fd 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,5 @@
-Hudbars mod for Minetest
+Hudbars, hbhunger and hbarmor mods for Minetest
 
-This mod adds hud bars to the player's screen for health, hunger and drowning.
+These mod adds hud bars to the player's screen for health, hunger, drowning and armor levels.
 
-Mod created by Wuzzy and edited by TenPlus1 for Xanadu server
\ No newline at end of file
+Mods created by Wuzzy and edited by TenPlus1 for Xanadu server
\ No newline at end of file
diff --git a/hbarmor/depends.txt b/hbarmor/depends.txt
new file mode 100644
index 0000000..579f7fb
--- /dev/null
+++ b/hbarmor/depends.txt
@@ -0,0 +1,2 @@
+hudbars
+3d_armor
diff --git a/hbarmor/init.lua b/hbarmor/init.lua
new file mode 100644
index 0000000..7a3cd74
--- /dev/null
+++ b/hbarmor/init.lua
@@ -0,0 +1,156 @@
+hbarmor = {}
+
+-- HUD statbar values
+hbarmor.armor = {}
+
+-- Stores if player's HUD bar has been initialized so far.
+hbarmor.player_active = {}
+
+-- HUD item ids
+local armor_hud = {}
+
+hbarmor.tick = 1 -- 0.1
+
+-- If true, the armor bar is hidden when the player does not wear any armor
+hbarmor.autohide = true
+
+local enable_damage = minetest.setting_getbool("enable_damage")
+
+--[[load custom settings
+local set = io.open(minetest.get_modpath("hbarmor").."/hbarmor.conf", "r")
+if set then 
+	dofile(minetest.get_modpath("hbarmor").."/hbarmor.conf")
+	set:close()
+end--]]
+
+local must_hide = function(playername, arm)
+	return ((not armor.def[playername].count or armor.def[playername].count == 0) and arm == 0)
+end
+
+local arm_printable = function(arm)
+	return math.ceil(math.floor(arm + 0.5))
+end
+
+local function custom_hud(player)
+	local name = player:get_player_name()
+
+	if enable_damage then
+		local ret = hbarmor.get_armor(player)
+		if ret == false then
+			minetest.log("error", "[hbarmor] Call to hbarmor.get_armor in custom_hud returned with false!")
+		end
+		local arm = tonumber(hbarmor.armor[name])
+		if not arm then arm = 0 end
+		local hide
+		if hbarmor.autohide then
+			hide = must_hide(name, arm)
+		else
+			hide = false
+		end
+		hb.init_hudbar(player, "armor", arm_printable(arm), nil, hide)
+	end
+end
+
+--register and define armor HUD bar
+hb.register_hudbar("armor", 0xFFFFFF, "Armor",
+	{ icon = "hbarmor_icon.png", bar = "hbarmor_bar.png" }, 0, 100, hbarmor.autohide, "%s: %d%%")
+
+--dofile(minetest.get_modpath("hbarmor").."/armor.lua")
+-- START armor.lua file
+
+minetest.after(0, function()
+	if not armor.def then
+		minetest.after(2,minetest.chat_send_all,
+			"#Better HUD: Please update your version of 3darmor")
+		HUD_SHOW_ARMOR = false
+	end
+end)
+
+function hbarmor.get_armor(player)
+	if not player or not armor.def then
+		return false
+	end
+	local name = player:get_player_name()
+	local def = armor.def[name] or nil
+	if def and def.state and def.count then
+		hbarmor.set_armor(name, def.state, def.count)
+	else
+		return false
+	end
+	return true
+end
+
+function hbarmor.set_armor(player_name, ges_state, items)
+	local max_items = 4
+	if items == 5 then 
+		max_items = items
+	end
+	local max = max_items * 65535
+	local lvl = max - ges_state
+	lvl = lvl / max
+	if ges_state == 0 and items == 0 then
+		lvl = 0
+	end
+
+	hbarmor.armor[player_name] = lvl * (items * (100 / max_items))
+
+end
+
+-- END armor.lua
+
+-- update hud elemtens if value has changed
+local function update_hud(player)
+	local name = player:get_player_name()
+ --armor
+	local arm = tonumber(hbarmor.armor[name])
+	if not arm then
+		arm = 0
+		hbarmor.armor[name] = 0
+	end
+	if hbarmor.autohide then
+		-- hide armor bar completely when there is none
+		if must_hide(name, arm) then
+			hb.hide_hudbar(player, "armor")
+		else
+			hb.change_hudbar(player, "armor", arm_printable(arm))
+			hb.unhide_hudbar(player, "armor")
+		end
+	else
+		hb.change_hudbar(player, "armor", arm_printable(arm))
+	end
+end
+
+minetest.register_on_joinplayer(function(player)
+	local name = player:get_player_name()
+	custom_hud(player)
+	hbarmor.player_active[name] = true
+end)
+
+minetest.register_on_leaveplayer(function(player)
+	local name = player:get_player_name()
+	hbarmor.player_active[name] = false
+end)
+
+local main_timer = 0
+--local timer = 0
+minetest.register_globalstep(function(dtime)
+	main_timer = main_timer + dtime
+--	timer = timer + dtime
+	if main_timer > hbarmor.tick then -- or timer > 4 then
+		if enable_damage then
+			if main_timer > hbarmor.tick then main_timer = 0 end
+			for _,player in ipairs(minetest.get_connected_players()) do
+				local name = player:get_player_name()
+				if hbarmor.player_active[name] == true then
+					local ret = hbarmor.get_armor(player)
+					if ret == false then
+						minetest.log("error", "[hbarmor] Call to hbarmor.get_armor in globalstep returned with false!")
+					end
+					-- update all hud elements
+					update_hud(player)
+				end
+			end
+		end
+	end
+--	if timer > 4 then timer = 0 end
+end)
diff --git a/hbarmor/textures/hbarmor_bar.png b/hbarmor/textures/hbarmor_bar.png
new file mode 100644
index 0000000000000000000000000000000000000000..5c3654c6bf0bdf366069141ced1994ffe5c57dbf
GIT binary patch
literal 80
zcmeAS@N?(olHy`uVBq!ia0vp^Oh7Ea!3HF4R;=3sq{Ka4978y+C%<|B{{Q&{KyZYC
dmH9LSLo+ASncZ?Czkx~^JYD@<);T3K0RRXU7a{-v

literal 0
HcmV?d00001

diff --git a/hbarmor/textures/hbarmor_icon.png b/hbarmor/textures/hbarmor_icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..164ab1072a632e0ea6a4a2329c642f9cd154b2c1
GIT binary patch
literal 434
zcmV;j0ZsmiP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0004bNkl<ZILpP8
zO>PrG5QV?)X^%4*JB|{T+#o_+B^%^58)QyIt`H$1AAnmRu|!!IIUq$gmS?)Vs(Xe7
zIO4|+i!6An+SFI?sb8DE?|F<YkCfXDub(~T^6L8D&Zw?&MS-LQ#?Us+{nC6kHE%vF
zeg|A$UH8u~E~v^9&6$(B##zh9n;V{-o?@-V6$M-G;m0BKSA=n015j5LL4<7x#FY5f
zG&J4=a8gzKBLG-qSguwKoudaPbxoHNs)`SR&$qXX#^b{PQN>wHObLLLGnx{EoKaPb
zG4x$`_!S!ODF*{Yl^{aSnVb@$iilu~0#Q8-__|(Gl_fC*G)6RMBt}#Oi4o@<zHRpd
z=Ci5!vRsn8jt~MOLgPItC1MD~5a@o+^V!rKEYhdN0&6X8+Y&_(5!$9<P?l^qo5Mxg
zxd3?i_I*DoOC&~)hC@b^3GH^vyH_vFgMgh@cXt4sou6}be9UIO{&$u4IoVbF*UW#)
c{P*AZ9nV$D=aWGH761SM07*qoM6N<$f^u%W`~Uy|

literal 0
HcmV?d00001

diff --git a/hbhunger/depends.txt b/hbhunger/depends.txt
new file mode 100644
index 0000000..11cedaf
--- /dev/null
+++ b/hbhunger/depends.txt
@@ -0,0 +1,29 @@
+hudbars
+default?
+animalmaterials?
+bucket?
+bushes?
+bushes_classic?
+cooking?
+creatures?
+docfarming?
+dwarves?
+ethereal?
+farming?
+farming_plus?
+ferns?
+fishing?
+fruit?
+glooptest?
+jkanimals?
+jkfarming?
+jkwine?
+kpgmobs?
+mobfcooking?
+mobs?
+moretrees?
+mtfoods?
+mush45?
+mushroom?
+seaplants?
+bakedclay?
\ No newline at end of file
diff --git a/hbhunger/hunger.lua b/hbhunger/hunger.lua
new file mode 100644
index 0000000..be955a4
--- /dev/null
+++ b/hbhunger/hunger.lua
@@ -0,0 +1,446 @@
+-- Keep these for backwards compatibility
+function hbhunger.save_hunger(player)
+	hbhunger.set_hunger(player)
+end
+function hbhunger.load_hunger(player)
+	hbhunger.get_hunger(player)
+end
+
+-- Poison player
+local function poisenp(tick, time, time_left, player)
+	time_left = time_left + tick
+	if time_left < time then
+		minetest.after(tick, poisenp, tick, time, time_left, player)
+	else
+		--reset hud image
+	end
+	if player:get_hp()-1 > 0 then
+		player:set_hp(player:get_hp()-1)
+	end
+	
+end
+
+function hbhunger.item_eat(hunger_change, replace_with_item, poisen, heal)
+	return function(itemstack, user, pointed_thing)
+		if itemstack:take_item() ~= nil and user ~= nil then
+			local name = user:get_player_name()
+			local h = tonumber(hbhunger.hunger[name])
+			local hp = user:get_hp()
+			minetest.sound_play({
+				name = "hbhunger_eat_generic",
+				gain = 1
+			}, {
+				pos = user:getpos(),
+				max_hear_distance = 16
+			})
+
+			-- Saturation
+			if h < 30 and hunger_change then
+				h = h + hunger_change
+				if h > 30 then h = 30 end
+				hbhunger.hunger[name] = h
+				hbhunger.set_hunger(user)
+			end
+			-- Healing
+			if hp < 20 and heal then
+				hp = hp + heal
+				if hp > 20 then hp = 20 end
+				user:set_hp(hp)
+			end
+			-- Poison
+			if poisen then
+				--set hud-img
+				poisenp(1.0, poisen, 0, user)
+			end
+
+			if replace_with_item then
+				if itemstack:is_empty() then
+					itemstack:add_item(replace_with_item)
+				else
+					local inv = user:get_inventory()
+					if inv:room_for_item("main", {name = replace_with_item}) then
+						inv:add_item("main", replace_with_item)
+					else
+						local pos = user:getpos()
+						pos.y = math.floor(pos.y + 0.5)
+						core.add_item(pos, replace_with_item)
+					end
+				end
+			end
+
+		end
+		return itemstack
+	end
+end
+
+local function overwrite(name, hunger_change, replace_with_item, poisen, heal)
+	local tab = minetest.registered_items[name]
+	if tab == nil then return end
+	tab.on_use = hbhunger.item_eat(hunger_change, replace_with_item, poisen, heal)
+	minetest.registered_items[name] = tab
+end
+
+if minetest.get_modpath("default") ~= nil then
+	overwrite("default:apple", 2)
+end
+if minetest.get_modpath("farming") ~= nil then
+	overwrite("farming:bread", 4)
+end
+if minetest.get_modpath("flowers") ~= nil then
+	overwrite("flowers:mushroom_brown", 2)
+	overwrite("flowers:mushroom_red", 0, "", 6)
+end
+
+if minetest.get_modpath("mobs") ~= nil then
+	if mobs.mod ~= nil and mobs.mod == "redo" then
+		overwrite("mobs:cheese", 4)
+		overwrite("mobs:meat", 8)
+		overwrite("mobs:meat_raw", 4)
+		overwrite("mobs:rat_cooked", 4)
+		overwrite("mobs:honey", 2)
+		overwrite("mobs:pork_raw", 3, "", 3)
+		overwrite("mobs:pork_cooked", 8)
+		overwrite("mobs:chicken_cooked", 6)
+		overwrite("mobs:chicken_raw", 2, "", 3)
+		overwrite("mobs:chicken_egg_fried", 2)
+		if minetest.get_modpath("bucket") then 
+			overwrite("mobs:bucket_milk", 3, "bucket:bucket_empty")
+		end
+	else
+		overwrite("mobs:meat", 6)
+		overwrite("mobs:meat_raw", 3)
+		overwrite("mobs:rat_cooked", 5)
+	end
+end
+
+if minetest.get_modpath("moretrees") ~= nil then
+	overwrite("moretrees:coconut_milk", 1)
+	overwrite("moretrees:raw_coconut", 2)
+	overwrite("moretrees:acorn_muffin", 3)
+	overwrite("moretrees:spruce_nuts", 1)
+	overwrite("moretrees:pine_nuts", 1)
+	overwrite("moretrees:fir_nuts", 1)
+end
+
+if minetest.get_modpath("dwarves") ~= nil then
+	overwrite("dwarves:beer", 2)
+	overwrite("dwarves:apple_cider", 1)
+	overwrite("dwarves:midus", 2)
+	overwrite("dwarves:tequila", 2)
+	overwrite("dwarves:tequila_with_lime", 2)
+	overwrite("dwarves:sake", 2)
+end
+
+if minetest.get_modpath("animalmaterials") ~= nil then
+	overwrite("animalmaterials:milk", 2)
+	overwrite("animalmaterials:meat_raw", 3)
+	overwrite("animalmaterials:meat_pork", 3)
+	overwrite("animalmaterials:meat_beef", 3)
+	overwrite("animalmaterials:meat_chicken", 3)
+	overwrite("animalmaterials:meat_lamb", 3)
+	overwrite("animalmaterials:meat_venison", 3)
+	overwrite("animalmaterials:meat_undead", 3, "", 3)
+	overwrite("animalmaterials:meat_toxic", 3, "", 5)
+	overwrite("animalmaterials:meat_ostrich", 3)
+	overwrite("animalmaterials:fish_bluewhite", 2)
+	overwrite("animalmaterials:fish_clownfish", 2)
+end
+
+if minetest.get_modpath("fishing") ~= nil then
+	overwrite("fishing:fish_raw", 2)
+	overwrite("fishing:fish_cooked", 5)
+	overwrite("fishing:sushi", 6)
+	overwrite("fishing:shark", 4)
+	overwrite("fishing:shark_cooked", 8)
+	overwrite("fishing:pike", 4)
+	overwrite("fishing:pike_cooked", 8)
+end
+
+if minetest.get_modpath("glooptest") ~= nil then
+	overwrite("glooptest:kalite_lump", 1)
+end
+
+if minetest.get_modpath("bushes") ~= nil then
+	overwrite("bushes:sugar", 1)
+	overwrite("bushes:strawberry", 2)
+	overwrite("bushes:berry_pie_raw", 3)
+	overwrite("bushes:berry_pie_cooked", 4)
+	overwrite("bushes:basket_pies", 15)
+end
+
+if minetest.get_modpath("bushes_classic") then
+	-- bushes_classic mod, as found in the plantlife modpack
+	local berries = {
+		"strawberry",
+		"blackberry",
+		"blueberry",
+		"raspberry",
+		"gooseberry",
+		"mixed_berry"}
+	for _, berry in ipairs(berries) do
+		if berry ~= "mixed_berry" then
+			overwrite("bushes:"..berry, 1)
+		end
+		overwrite("bushes:"..berry.."_pie_raw", 2)
+		overwrite("bushes:"..berry.."_pie_cooked", 5)
+		overwrite("bushes:basket_"..berry, 15)
+	end
+end
+
+if minetest.get_modpath("mushroom") ~= nil then
+	overwrite("mushroom:brown", 1)
+	overwrite("mushroom:red", 1, "", 3)
+	-- mushroom potions: red = strong poison, brown = light restorative
+	if minetest.get_modpath("vessels") then
+		overwrite("mushroom:brown_essence", 1, "vessels:glass_bottle", nil, 4)
+		overwrite("mushroom:poison", 1, "vessels:glass_bottle", 10)
+	end
+end
+
+if minetest.get_modpath("docfarming") ~= nil then
+	overwrite("docfarming:carrot", 3)
+	overwrite("docfarming:cucumber", 2)
+	overwrite("docfarming:corn", 3)
+	overwrite("docfarming:potato", 4)
+	overwrite("docfarming:bakedpotato", 5)
+	overwrite("docfarming:raspberry", 3)
+end
+
+if minetest.get_modpath("farming_plus") ~= nil then
+	overwrite("farming_plus:carrot_item", 3)
+	overwrite("farming_plus:banana", 2)
+	overwrite("farming_plus:orange_item", 2)
+	overwrite("farming:pumpkin_bread", 4)
+	overwrite("farming_plus:strawberry_item", 2)
+	overwrite("farming_plus:tomato_item", 2)
+	overwrite("farming_plus:potato_item", 4)
+	overwrite("farming_plus:rhubarb_item", 2)
+end
+
+if minetest.get_modpath("mtfoods") ~= nil then
+	overwrite("mtfoods:dandelion_milk", 1)
+	overwrite("mtfoods:sugar", 1)
+	overwrite("mtfoods:short_bread", 4)
+	overwrite("mtfoods:cream", 1)
+	overwrite("mtfoods:chocolate", 2)
+	overwrite("mtfoods:cupcake", 2)
+	overwrite("mtfoods:strawberry_shortcake", 2)
+	overwrite("mtfoods:cake", 3)
+	overwrite("mtfoods:chocolate_cake", 3)
+	overwrite("mtfoods:carrot_cake", 3)
+	overwrite("mtfoods:pie_crust", 3)
+	overwrite("mtfoods:apple_pie", 3)
+	overwrite("mtfoods:rhubarb_pie", 2)
+	overwrite("mtfoods:banana_pie", 3)
+	overwrite("mtfoods:pumpkin_pie", 3)
+	overwrite("mtfoods:cookies", 2)
+	overwrite("mtfoods:mlt_burger", 5)
+	overwrite("mtfoods:potato_slices", 2)
+	overwrite("mtfoods:potato_chips", 3)
+	--mtfoods:medicine
+	overwrite("mtfoods:casserole", 3)
+	overwrite("mtfoods:glass_flute", 2)
+	overwrite("mtfoods:orange_juice", 2)
+	overwrite("mtfoods:apple_juice", 2)
+	overwrite("mtfoods:apple_cider", 2)
+	overwrite("mtfoods:cider_rack", 2)
+end
+
+if minetest.get_modpath("fruit") ~= nil then
+	overwrite("fruit:apple", 2)
+	overwrite("fruit:pear", 2)
+	overwrite("fruit:bananna", 3)
+	overwrite("fruit:orange", 2)
+end
+
+if minetest.get_modpath("mush45") ~= nil then
+	overwrite("mush45:meal", 4)
+end
+
+if minetest.get_modpath("seaplants") ~= nil then
+	overwrite("seaplants:kelpgreen", 1)
+	overwrite("seaplants:kelpbrown", 1)
+	overwrite("seaplants:seagrassgreen", 1)
+	overwrite("seaplants:seagrassred", 1)
+	overwrite("seaplants:seasaladmix", 6)
+	overwrite("seaplants:kelpgreensalad", 1)
+	overwrite("seaplants:kelpbrownsalad", 1)
+	overwrite("seaplants:seagrassgreensalad", 1)
+	overwrite("seaplants:seagrassgreensalad", 1)
+end
+
+if minetest.get_modpath("mobfcooking") ~= nil then
+	overwrite("mobfcooking:cooked_pork", 6)
+	overwrite("mobfcooking:cooked_ostrich", 6)
+	overwrite("mobfcooking:cooked_beef", 6)
+	overwrite("mobfcooking:cooked_chicken", 6)
+	overwrite("mobfcooking:cooked_lamb", 6)
+	overwrite("mobfcooking:cooked_venison", 6)
+	overwrite("mobfcooking:cooked_fish", 6)
+end
+
+if minetest.get_modpath("creatures") ~= nil then
+	overwrite("creatures:meat", 6)
+	overwrite("creatures:flesh", 3)
+	overwrite("creatures:rotten_flesh", 3, "", 3)
+end
+
+if minetest.get_modpath("ethereal") then
+	overwrite("ethereal:strawberry", 1)
+	overwrite("ethereal:banana", 4)
+	overwrite("ethereal:pine_nuts", 1)
+	overwrite("ethereal:bamboo_sprout", 0, "", 3)
+	overwrite("ethereal:fern_tubers", 1)
+	overwrite("ethereal:banana_bread", 7)
+	overwrite("ethereal:mushroom_plant", 2)
+	overwrite("ethereal:coconut_slice", 2)
+	overwrite("ethereal:golden_apple", 4, "", nil, 10)
+	overwrite("ethereal:wild_onion_plant", 2)
+	overwrite("ethereal:mushroom_soup", 5, "ethereal:bowl")
+--	overwrite("ethereal:mushroom_soup_cooked", 6, "ethereal:bowl")
+	overwrite("ethereal:hearty_stew", 10, "ethereal:bowl")
+--	overwrite("ethereal:hearty_stew_cooked", 10, "ethereal:bowl")
+	if minetest.get_modpath("bucket") then
+		overwrite("ethereal:bucket_cactus", 2, "bucket:bucket_empty")
+	end
+	overwrite("ethereal:fish_raw", 2)
+	overwrite("ethereal:fish_cooked", 5)
+	overwrite("ethereal:seaweed", 1)
+	overwrite("ethereal:yellowleaves", 1, "", nil, 1)
+	overwrite("ethereal:sashimi", 4)
+	overwrite("ethereal:orange", 2)
+end
+
+if minetest.get_modpath("farming") and farming.mod == "redo" then
+	overwrite("farming:bread", 6)
+	overwrite("farming:potato", 1)
+	overwrite("farming:baked_potato", 6)
+	overwrite("farming:cucumber", 4)
+	overwrite("farming:tomato", 4)
+	overwrite("farming:carrot", 3)
+	overwrite("farming:carrot_gold", 6, "", nil, 8)
+	overwrite("farming:corn", 3)
+	overwrite("farming:corn_cob", 5)
+	overwrite("farming:melon_slice", 2)
+	overwrite("farming:pumpkin_slice", 1)
+	overwrite("farming:pumpkin_bread", 9)
+	overwrite("farming:coffee_cup", 2, "farming:drinking_cup")
+	overwrite("farming:coffee_cup_hot", 3, "farming:drinking_cup", nil, 2)
+	overwrite("farming:cookie", 2)
+	overwrite("farming:chocolate_dark", 3)
+	overwrite("farming:donut", 4)
+	overwrite("farming:donut_chocolate", 6)
+	overwrite("farming:donut_apple", 6)
+	overwrite("farming:raspberries", 1)
+	overwrite("farming:blueberries", 1)
+	overwrite("farming:muffin_blueberry", 4)
+	if minetest.get_modpath("vessels") then
+		overwrite("farming:smoothie_raspberry", 2, "vessels:drinking_glass")
+	end
+	overwrite("farming:rhubarb", 1)
+	overwrite("farming:rhubarb_pie", 6)
+	overwrite("farming:beans", 1)
+end
+
+if minetest.get_modpath("kpgmobs") ~= nil then
+	overwrite("kpgmobs:uley", 3)
+	overwrite("kpgmobs:meat", 6)
+	overwrite("kpgmobs:rat_cooked", 5)
+	overwrite("kpgmobs:med_cooked", 4)
+	if minetest.get_modpath("bucket") then
+		overwrite("kpgmobs:bucket_milk", 4, "bucket:bucket_empty")
+	end
+end
+
+if minetest.get_modpath("jkfarming") ~= nil then
+	overwrite("jkfarming:carrot", 3)
+	overwrite("jkfarming:corn", 3)
+	overwrite("jkfarming:melon_part", 2)
+	overwrite("jkfarming:cake", 3)
+end
+
+if minetest.get_modpath("jkanimals") ~= nil then
+	overwrite("jkanimals:meat", 6)
+end
+
+if minetest.get_modpath("jkwine") ~= nil then
+	overwrite("jkwine:grapes", 2)
+	overwrite("jkwine:winebottle", 1)
+end
+
+if minetest.get_modpath("cooking") ~= nil then
+	overwrite("cooking:meat_beef_cooked", 4)
+	overwrite("cooking:fish_bluewhite_cooked", 3)
+	overwrite("cooking:fish_clownfish_cooked", 1)
+	overwrite("cooking:meat_chicken_cooked", 2)
+	overwrite("cooking:meat_cooked", 2)
+	overwrite("cooking:meat_pork_cooked", 3)
+	overwrite("cooking:meat_toxic_cooked", -3)
+	overwrite("cooking:meat_venison_cooked", 3)
+	overwrite("cooking:meat_undead_cooked", 1)
+end
+
+-- ferns mod of plantlife_modpack
+if minetest.get_modpath("ferns") ~= nil then
+	overwrite("ferns:fiddlehead", 1, "", 1)
+	overwrite("ferns:fiddlehead_roasted", 3)
+	overwrite("ferns:ferntuber_roasted", 3)
+	overwrite("ferns:horsetail_01", 1)
+end
+
+-- Xanadu server only
+if minetest.get_modpath("xanadu") then
+	overwrite("xanadu:cinnamon_roll", 4)
+	overwrite("xanadu:pumpkin_pie", 10)
+	overwrite("xanadu:french_toast", 2)
+	overwrite("xanadu:icecream_strawberry", 3)
+	overwrite("xanadu:icecream_melon", 4)
+	overwrite("xanadu:milkshake_strawberry", 3, "vessels:drinking_glass")
+	overwrite("xanadu:milkshake_banana", 4, "vessels:drinking_glass")
+	overwrite("xanadu:iced_coffee", 3, "vessels:drinking_glass")
+	overwrite("xanadu:pizza_slice", 3)
+	overwrite("xanadu:cupcake", 4)
+	overwrite("xanadu:juice_apple", 4, "vessels:drinking_glass")
+	overwrite("xanadu:juice_coconut", 4, "vessels:drinking_glass")
+	overwrite("xanadu:juice_orange", 4, "vessels:drinking_glass")
+	overwrite("xanadu:juice_cactus", 2, "vessels:drinking_glass")
+	overwrite("xanadu:hotchocolate", 6, "bucket:bucket_empty")
+	overwrite("xanadu:milk_chocolate", 3)
+	overwrite("xanadu:chocolate_donut", 3)
+	overwrite("xanadu:bacon", 4)
+	overwrite("xanadu:burger", 7)
+	overwrite("xanadu:fries", 6)
+	overwrite("xanadu:potato_salad", 8, "ethereal:bowl", nil, 2)
+end
+
+-- player-action based hunger changes
+function hbhunger.handle_node_actions(pos, oldnode, player, ext)
+	if not player or not player:is_player() then
+		return
+	end
+	local name = player:get_player_name()
+	local exhaus = hbhunger.exhaustion[name]
+	if exhaus == nil then return end
+	local new = HUNGER_EXHAUST_PLACE
+	-- placenode event
+	if not ext then
+		new = HUNGER_EXHAUST_DIG
+	end
+	-- assume its send by main timer when movement detected
+	if not pos and not oldnode then
+		new = HUNGER_EXHAUST_MOVE
+	end
+	exhaus = exhaus + new
+	if exhaus > HUNGER_EXHAUST_LVL then
+		exhaus = 0
+		local h = tonumber(hbhunger.hunger[name])
+		h = h - 1
+		if h < 0 then h = 0 end
+		hbhunger.hunger[name] = h
+		hbhunger.set_hunger(player)
+	end
+	hbhunger.exhaustion[name] = exhaus
+end
+
+minetest.register_on_placenode(hbhunger.handle_node_actions)
+minetest.register_on_dignode(hbhunger.handle_node_actions)
diff --git a/hbhunger/init.lua b/hbhunger/init.lua
new file mode 100644
index 0000000..bcfc677
--- /dev/null
+++ b/hbhunger/init.lua
@@ -0,0 +1,177 @@
+-- if damage enabled
+if minetest.setting_getbool("enable_damage") then
+
+hbhunger = {}
+
+-- HUD statbar values
+hbhunger.hunger = {}
+hbhunger.hunger_out = {}
+
+-- HUD item ids
+local hunger_hud = {}
+
+HUNGER_HUD_TICK = 0.5 -- 0.1
+
+--Some hunger settings
+hbhunger.exhaustion = {} -- Exhaustion is experimental!
+
+HUNGER_HUNGER_TICK = 600 -- time in seconds after that 1 hunger point is taken (600)
+HUNGER_EXHAUST_DIG = 3  -- exhaustion increased this value after digged node
+HUNGER_EXHAUST_PLACE = 1 -- exhaustion increased this value after placed
+HUNGER_EXHAUST_MOVE = 0.3 -- exhaustion increased this value if player movement detected
+HUNGER_EXHAUST_LVL = 160 -- at what exhaustion player satiation gets lowerd
+
+
+--[[load custom settings
+local set = io.open(minetest.get_modpath("hbhunger").."/hbhunger.conf", "r")
+if set then 
+	dofile(minetest.get_modpath("hbhunger").."/hbhunger.conf")
+	set:close()
+end--]]
+
+local function custom_hud(player)
+	hb.init_hudbar(player, "satiation", hbhunger.get_hunger(player))
+end
+
+dofile(minetest.get_modpath("hbhunger").."/hunger.lua")
+
+-- register satiation hudbar
+hb.register_hudbar(
+	"satiation", 0xFFFFFF, "Satiation",
+	{
+		icon = "hbhunger_icon.png",
+		bgicon = "hbhunger_bgicon.png",
+		bar = "hbhunger_bar.png"
+	},
+	20, 30, false
+)
+
+-- update hud elemtents if value has changed
+local function update_hud(player)
+	local name = player:get_player_name()
+	local h_out = tonumber(hbhunger.hunger_out[name])
+	local h = tonumber(hbhunger.hunger[name])
+	if h_out ~= h then
+		hbhunger.hunger_out[name] = h
+		hb.change_hudbar(player, "satiation", h)
+	end
+end
+
+hbhunger.get_hunger = function(player)
+	local inv = player:get_inventory()
+	if not inv then return nil end
+	local hgp = inv:get_stack("hunger", 1):get_count()
+	if hgp == 0 then
+		hgp = 21
+		inv:set_stack("hunger", 1, ItemStack({name = ":", count = hgp}))
+	else
+		hgp = hgp
+	end
+	return hgp - 1
+end
+
+hbhunger.set_hunger = function(player)
+	local inv = player:get_inventory()
+	local name = player:get_player_name()
+	local value = hbhunger.hunger[name]
+	if not inv  or not value then return nil end
+	if value > 30 then value = 30 end
+	if value < 0 then value = 0 end
+	inv:set_stack("hunger", 1, ItemStack({name = ":", count = value + 1}))
+	return true
+end
+
+minetest.register_on_joinplayer(function(player)
+	local name = player:get_player_name()
+	local inv = player:get_inventory()
+	inv:set_size("hunger", 1)
+	hbhunger.hunger[name] = hbhunger.get_hunger(player)
+	hbhunger.hunger_out[name] = hbhunger.hunger[name]
+	hbhunger.exhaustion[name] = 0
+	custom_hud(player)
+	hbhunger.set_hunger(player)
+end)
+
+minetest.register_on_respawnplayer(function(player)
+	-- reset hunger (and save)
+	local name = player:get_player_name()
+	hbhunger.hunger[name] = 20
+	hbhunger.set_hunger(player)
+	hbhunger.exhaustion[name] = 0
+end)
+
+local main_timer = 0
+local timer = 0
+local timer2 = 0
+
+minetest.register_globalstep(function(dtime)
+
+	main_timer = main_timer + dtime
+	timer = timer + dtime
+	timer2 = timer2 + dtime
+
+	if main_timer > HUNGER_HUD_TICK
+	or timer > 4
+	or timer2 > HUNGER_HUNGER_TICK then
+
+		if main_timer > HUNGER_HUD_TICK then
+			main_timer = 0
+		end
+
+		for _,player in ipairs(minetest.get_connected_players()) do
+
+			local name = player:get_player_name()
+			local h = tonumber(hbhunger.hunger[name])
+			local hp = player:get_hp()
+
+			if timer > 4 then
+
+				-- heal player by 1 hp if not dead and satiation is > 15
+				if h > 15
+				and hp > 0
+				and player:get_breath() > 0 then
+					player:set_hp(hp + 1)
+				-- or damage player by 1 hp if satiation is < 2
+				elseif h <= 1 then
+					if hp - 1 >= 0 then
+						player:set_hp(hp - 1)
+					end
+				end
+			end
+
+			-- lower satiation by 1 point after xx seconds
+			if timer2 > HUNGER_HUNGER_TICK then
+					if h > 0 then
+					h = h - 1
+					hbhunger.hunger[name] = h
+					hbhunger.set_hunger(player)
+				end
+			end
+
+			-- update hud elements
+			update_hud(player)
+
+			-- Determine if player is walking
+			local controls = player:get_player_control()
+			if controls.up
+			or controls.down
+			or controls.left
+			or controls.right then
+				hbhunger.handle_node_actions(nil, nil, player)
+			end
+
+		end
+
+	end
+
+	if timer > 4 then
+		timer = 0
+	end
+
+	if timer2 > HUNGER_HUNGER_TICK then
+		timer2 = 0
+	end
+
+end)
+
+end -- end if damage enabled
diff --git a/hbhunger/sounds/hbhunger_eat_generic.ogg b/hbhunger/sounds/hbhunger_eat_generic.ogg
new file mode 100644
index 0000000000000000000000000000000000000000..490fa6f1e5c30af74760f81a2bfc904b5c552a76
GIT binary patch
literal 10869
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
Nb}pee3IN4L`yXExt$zRj

literal 0
HcmV?d00001

diff --git a/hbhunger/textures/hbhunger_bar.png b/hbhunger/textures/hbhunger_bar.png
new file mode 100644
index 0000000000000000000000000000000000000000..c94bf528cffed7708a4150a498020dd3fbef492a
GIT binary patch
literal 80
zcmeAS@N?(olHy`uVBq!ia0vp^Oh7Ea!3HF4R;=3sq{Ka4978y+C)-Rs_hEh`5Ogwf
cu}x!Suzkzq*Q+o09;k%D)78&qol`;+0I)9<Qvd(}

literal 0
HcmV?d00001

diff --git a/hbhunger/textures/hbhunger_bgicon.png b/hbhunger/textures/hbhunger_bgicon.png
new file mode 100644
index 0000000000000000000000000000000000000000..07e21e7be47ebfe19f972382f6ea5a086a33cbfc
GIT binary patch
literal 417
zcmV;S0bc%zP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000id
z000id0mpBsWB>pGQ%OWYRCt`Nlf7=jFcd~Z)s4q-V#j}S9N(Bo9uNaUNQ_8GOc{AB
z-maBG`8vgdma0<eaJK7nKVM%L0E%aL>hS*v&hyhZwANsZfiVWoIXLI2s_N})-8TUd
zjUfaO5kd%1O2HU|rfFcUg;ENPvG<1pBD&Od4Jjq8wTLldwOXO?dsu5Bgg{xAQ?fA&
z_WS*8yWNh)7?foR&N<q)#d5g>5y3eJB7(IRbzSGHX|2bcfQT;6IdIP5z0X~xln_Ed
zN(t{hy!V*u7-N@P!PPkj=Nw{;xm#6LIh9fhA%u(&0=I$>BFd4Sb1=q0YmKI9Af<#c
z2Gf8i02IYA470=GaOt`(Prq&3%x%}(!$fqwdxhO@hZrMbjOe-!lkg`V?!kF}D%R^Y
zQc6fEVX;^s#)y;>Hk%FlzQ@Bw8iwKJ(MJBpU4rBB`1&Wov!Ce`d<6U`HGiA|00000
LNkvXXu0mjf5NEV}

literal 0
HcmV?d00001

diff --git a/hbhunger/textures/hbhunger_icon.png b/hbhunger/textures/hbhunger_icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..a5cc2a12339c1fcba9e605fb5cae51aabcefb60c
GIT binary patch
literal 522
zcmV+l0`>igP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00009a7bBm000id
z000id0mpBsWB>pGyh%hsRCt`NlfP?IVHAd+ivNL21xFVL|C0n#xP+i^QAlWqIyfi|
zNJ(|Dv}V%5Hsp#oVkM*!2m~Z0v~q__BmSVx<s(!}5Hi%oxF{s)>u^J9O+YXXFK0RD
zIWOP$9wae|CK~=f0DpR6MD-+cW1&hnQ0XQr+Wh>pZv<fO(F<0QSx3!vRJ((A(&&8_
zz0IIn61}kaH5OnT`jrH#UPIm@YOkSh&P8<|BkwjU+vuegx+=`jI{_SRSySI@S9{xY
zXk!L#CeYq}boAtc%nI5~qt-I=GN=+qg(z~PsGg*E;=nlc8?&esN1yJZP8NA-RJBq0
zdRRX!p^q7~8$+)n$c@rJ4LEK*LXCOU&LVFfRV-ADp^XUIw9uP43Lc=~AqrBc97U%A
z1LGi*L;e!-XVJEe>IwADLRAaxBv4?74{TPENeux5e{O2973m*1$T%o?iuPB~-Xhx1
zqUJJcrcv`2GHc-ylSjtk_{=X1%2(7bphE|J$)kh(urY^PIn>IBGQ&k<bKp-e@S}7|
z-6HC~LSJ2U=%Vg()O~hYo#Eg}4)i&7Zd@Y&rZWy?tn>c_nDm%_0}w4oO^A8-asU7T
M07*qoM6N<$g3~bI<p2Nx

literal 0
HcmV?d00001

diff --git a/depends.txt b/hudbars/depends.txt
similarity index 100%
rename from depends.txt
rename to hudbars/depends.txt
diff --git a/init.lua b/hudbars/init.lua
similarity index 100%
rename from init.lua
rename to hudbars/init.lua
diff --git a/textures/hudbars_bar_background.png b/hudbars/textures/hudbars_bar_background.png
similarity index 100%
rename from textures/hudbars_bar_background.png
rename to hudbars/textures/hudbars_bar_background.png
diff --git a/textures/hudbars_bar_breath.png b/hudbars/textures/hudbars_bar_breath.png
similarity index 100%
rename from textures/hudbars_bar_breath.png
rename to hudbars/textures/hudbars_bar_breath.png
diff --git a/textures/hudbars_bar_health.png b/hudbars/textures/hudbars_bar_health.png
similarity index 100%
rename from textures/hudbars_bar_health.png
rename to hudbars/textures/hudbars_bar_health.png
diff --git a/textures/hudbars_bgicon_health.png b/hudbars/textures/hudbars_bgicon_health.png
similarity index 100%
rename from textures/hudbars_bgicon_health.png
rename to hudbars/textures/hudbars_bgicon_health.png
diff --git a/textures/hudbars_icon_breath.png b/hudbars/textures/hudbars_icon_breath.png
similarity index 100%
rename from textures/hudbars_icon_breath.png
rename to hudbars/textures/hudbars_icon_breath.png
diff --git a/textures/hudbars_icon_health.png b/hudbars/textures/hudbars_icon_health.png
similarity index 100%
rename from textures/hudbars_icon_health.png
rename to hudbars/textures/hudbars_icon_health.png
diff --git a/modpack.txt b/modpack.txt
new file mode 100644
index 0000000..e69de29
-- 
GitLab