diff --git a/Bucket_Game-branches/clarify-food-api-vs-200327.patch b/Bucket_Game-branches/clarify-food-api-vs-200327.patch new file mode 100644 index 0000000..ad475c9 --- /dev/null +++ b/Bucket_Game-branches/clarify-food-api-vs-200327.patch @@ -0,0 +1,106 @@ +diff -ru ./EnlivenMinetest/Bucket_Game-base/clarify-food-api-vs-200327/mods/coderfood/unified_foods/hunger.lua ./EnlivenMinetest/Bucket_Game-branches/clarify-food-api-vs-200327/mods/coderfood/unified_foods/hunger.lua +--- ./EnlivenMinetest/Bucket_Game-base/clarify-food-api-vs-200327/mods/coderfood/unified_foods/hunger.lua 2020-03-15 08:22:10.234929597 -0400 ++++ ./EnlivenMinetest/Bucket_Game-branches/clarify-food-api-vs-200327/mods/coderfood/unified_foods/hunger.lua 2020-03-15 08:22:10.275928404 -0400 +@@ -1,5 +1,6 @@ + local modname = minetest.get_current_modname() + local modpath = minetest.get_modpath (modname) ++-- NOTE: 30 indicates 10 more beyond the visible bar is allowed. + + local enable_wonder = minetest.setting_getbool ("enable_wonder") + unified_hunger = {} +@@ -49,14 +50,37 @@ + hb.init_hudbar(player, "satiation", unified_hunger.get_hunger(player)) + end + ++local function pull_hunger(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 ++ unified_hunger.hunger[name] = hgp - 1 ++ return true ++end ++ ++local function push_hunger(player) ++ local inv = player:get_inventory() ++ local name = player:get_player_name() ++ local value = unified_hunger.hunger[name] ++ if not inv or not value then return nil end ++ inv:set_stack("hunger", 1, ItemStack({name = ":", count = value + 1})) ++ return true ++end ++ + -- Keep these for backwards compatibility + + function unified_hunger.save_hunger(player) +- unified_hunger.set_hunger(player) ++ push_hunger(player) + end + + function unified_hunger.load_hunger(player) +- unified_hunger.get_hunger(player) ++ pull_hunger(player) + end + + -- Poison player +@@ -213,45 +237,35 @@ + end + + unified_hunger.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 ++ pull_hunger(player) ++ return unified_hunger.hunger[name] + end + +-unified_hunger.set_hunger = function(player) +- local inv = player:get_inventory() ++unified_hunger.set_hunger = function(player, value) + local name = player:get_player_name() +- local value = unified_hunger.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 ++ unified_hunger.hunger[name] = value ++ return push_hunger(player) + end + ++ ++ + minetest.register_on_joinplayer(function(player) + local name = player:get_player_name() + local inv = player:get_inventory() + inv:set_size("hunger", 1) +- unified_hunger.hunger[name] = unified_hunger.get_hunger(player) ++ pull_hunger(player) -- Load hunger[name] (and ensure non-nil). + unified_hunger.hunger_out[name] = unified_hunger.hunger[name] + unified_hunger.exhaustion[name] = 0 + custom_hud(player) +- unified_hunger.set_hunger(player) ++ push_hunger(player) -- Save the now non-nil value. + end) + + minetest.register_on_respawnplayer(function(player) + -- reset hunger (and save) + local name = player:get_player_name() +- unified_hunger.hunger[name] = 20 +- unified_hunger.set_hunger(player) ++ unified_hunger.set_hunger(player, 20) + unified_hunger.exhaustion[name] = 0 + end) +