poikilos
9 months ago
1 changed files with 106 additions and 0 deletions
@ -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) |
||||
|
|
Loading…
Reference in new issue