diff --git a/README.txt b/README.txt index 39efab0..69a5173 100644 --- a/README.txt +++ b/README.txt @@ -1,12 +1,9 @@ Minetest mod "Better HUD" ========================= -version: 0.3 Beta +version: 0.4 Beta License of source code: WTFPL ----------------------------- -- "Disable Drowning" [no_drowning], PilzAdam - -everything else: (c) Copyright BlockMen (2013) @@ -14,9 +11,10 @@ License of textures: -------------------- hud_heart_fg.png - celeron55 (CC BY-SA 3.0), modified by BlockMen hud_heart_bg.png - celeron55 (CC BY-SA 3.0), modified by BlockMen -hud_hunger_fg.png - PilzAdam(WTFPL), modified by BlockMen -hud_hunger_bg.png - PilzAdam(WTFPL), modified by BlockMen +hud_hunger_fg.png - PilzAdam (WTFPL), modified by BlockMen +hud_hunger_bg.png - PilzAdam (WTFPL), modified by BlockMen wieldhand.png (from character.png) - Jordach (CC BY-SA 3.0), modified by BlockMen +hud_air_fg.png - kaeza (WTFPL), modified by BlockMen everything else is WTFPL: (c) Copyright BlockMen (2013) @@ -31,13 +29,11 @@ http://sam.zoy.org/wtfpl/COPYING for more details. Using the mod: -------------- -This mod changes the HUD of Minetest. It adds a costum crosshair, a improved health bar and a more fancy inventory bar. +This mod changes the HUD of Minetest. It adds a costum crosshair, a improved health bar, breath bar and a more fancy inventory bar. Also it adds hunger to the game and and hunger bar to the HUD. -Furthermore it disables the current way of drowning (credits go to PilzAdam) and it will have an LUA-based drowing next versions. - -You can create a "hud.conf" to costumize the positions of health and hunger bar. Take a look at "hud.conf.example" to get more infos. +You can create a "hud.conf" to costumize the positions of health, hunger and breath bar. Take a look at "hud.conf.example" to get more infos. Hunger: This mod adds hunger to the game. You can disable this by setting "HUD_HUNGER_ENABLE = false" in "hud.conf". diff --git a/changelog.txt b/changelog.txt index aac6544..5ec8593 100644 --- a/changelog.txt +++ b/changelog.txt @@ -23,3 +23,7 @@ ---------- - added fancy borders of hud inventory bar (only for screenheight <= 1280) +0.4 Beta +---------- +- enabled drowning + diff --git a/hud.conf.example b/hud.conf.example index fc8d6eb..dcaa6ae 100644 --- a/hud.conf.example +++ b/hud.conf.example @@ -9,8 +9,6 @@ HUD_ENABLE_HUNGER = true --enables/disables hunger HUD_HUNGER_TICK = 300 --sets time for loosing 1/2 bread (of 10) (in seconds) -HUD_DISABLE_DROWNING = true --needed for costum breath bar postion - HUD_ENABLE_FANCY_INVBAR = true --enables/disables fancy hud inventory border(s) @@ -21,20 +19,23 @@ HUD_CROSSHAIR_POS = {x=0.5, y=0.5} --recommended to be 0.5,0.5 (centered) --!NOTICE!-- --- >>if damage is disabled neither health bar nor hunger bar is shown +-- >>if damage is disabled neither health bar nor hunger bar or breath bar is shown -- -- health bar -- -HUD_HEALTH_POS = {x=0,y=0} --min 0, max 1 +HUD_HEALTH_POS = {x=0,y=0} --min 0, max 1 HUD_HEALTH_OFFSET = {x=5,y=30} --offset in pixel -- -- hunger bar -- -HUD_HUNGER_POS = {x=1,y=0} --min 0, max 1 +HUD_HUNGER_POS = {x=1,y=0} --min 0, max 1 HUD_HUNGER_OFFSET = {x=-175,y=30} --offset in pixel -- -- breath bar --- \ No newline at end of file +-- +HUD_AIR_POS = {x=0.5,y=1} --min 0, max 1 +HUD_AIR_OFFSET = {x=15,y=-75} --offset in pixel + diff --git a/init.lua b/init.lua index 00d65e1..6ef7cdb 100644 --- a/init.lua +++ b/init.lua @@ -3,14 +3,12 @@ hud = {} local health_hud = {} hud.hunger = {} local hunger_hud = {} -hud.air = {} local air_hud = {} local inv_hud = {} local SAVE_INTERVAL = 0.5*60--currently useless --default settings -HUD_DISABLE_DROWNING = true HUD_ENABLE_HUNGER = minetest.setting_getbool("enable_damage") HUD_HUNGER_TICK = 300 HUD_CROSSHAIR_POS = {x=0.5, y=0.5} @@ -18,18 +16,23 @@ HUD_HEALTH_POS = {x=0.5,y=1} HUD_HEALTH_OFFSET = {x=-175,y=-60} HUD_HUNGER_POS = {x=0.5,y=1} HUD_HUNGER_OFFSET = {x=15,y=-60} +HUD_AIR_POS = {x=0.5,y=1} +HUD_AIR_OFFSET = {x=15,y=-75} HUD_ENABLE_FANCY_INVBAR = true HUD_INVBAR_POS = {x=0.5,y=1} HUD_INVBAR_OFFSET = {x=0,y=-16} --load costum settings local set = io.open(minetest.get_modpath("hud").."/hud.conf", "r") -if set then dofile(minetest.get_modpath("hud").."/hud.conf") end +if set then + dofile(minetest.get_modpath("hud").."/hud.conf") + set:close() +end --minetest.after(SAVE_INTERVAL, timer, SAVE_INTERVAL) local function hide_builtin(player) - player:hud_set_flags({crosshair = false, hotbar = true, healthbar = false, wielditem = true, breathbar = HUD_DISABLE_DROWNING}) + player:hud_set_flags({crosshair = false, hotbar = true, healthbar = false, wielditem = true, breathbar = false}) end @@ -102,6 +105,17 @@ local function costum_hud(player) alignment = {x=-1,y=-1}, offset = HUD_HEALTH_OFFSET, }) + + --air + air_hud[player:get_player_name()] = player:hud_add({ + hud_elem_type = "statbar", + position = HUD_AIR_POS, + scale = {x=1, y=1}, + text = "hud_air_fg.png", + number = 20, + alignment = {x=-1,y=-1}, + offset = HUD_AIR_OFFSET, + }) end end @@ -116,15 +130,22 @@ local function update_hud(player) player:hud_change(hunger_hud[player:get_player_name()], "number", h) end -local function update_inv(player) - if inv_hud[player:get_player_name()] ~= nil then player:hud_remove(inv_hud[player:get_player_name()]) end - inv_hud[player:get_player_name()] = player:hud_add({ - hud_elem_type = "image", - text = "hud_inv_border.png", - position = HUD_INVBAR_POS, - scale = {x=1, y=1}, - offset = {x=-127+36*(player:get_wield_index()-1),y=-18}, - }) +local function update_fast(player) +--air + local air = player:get_breath()*2 + if player:get_breath() >= 11 then air = 0 end + player:hud_change(air_hud[player:get_player_name()], "number", air) +--hotbar + if HUD_ENABLE_FANCY_INVBAR then + if inv_hud[player:get_player_name()] ~= nil then player:hud_remove(inv_hud[player:get_player_name()]) end + inv_hud[player:get_player_name()] = player:hud_add({ + hud_elem_type = "image", + text = "hud_inv_border.png", + position = HUD_INVBAR_POS, + scale = {x=1, y=1}, + offset = {x=-127+36*(player:get_wield_index()-1),y=-18}, + }) + end end @@ -168,19 +189,15 @@ minetest.register_on_joinplayer(function(player) end) end) -local tick = 0 local timer = 0 local timer2 = 0 minetest.after(2.5, function() if minetest.setting_getbool("enable_damage") then minetest.register_globalstep(function(dtime) - tick = tick + dtime - --if tick<0.5 then return end - --tick = 0 - timer = timer + dtime - timer2 = timer2 + dtime + timer = timer + dtime + timer2 = timer2 + dtime for _,player in ipairs(minetest.get_connected_players()) do - if HUD_ENABLE_FANCY_INVBAR then update_inv(player) end + update_fast(player) local h = tonumber(hud.hunger[player:get_player_name()]) if HUD_ENABLE_HUNGER and timer > 4 then if h>=16 then @@ -205,4 +222,3 @@ end end) if HUD_ENABLE_HUNGER then dofile(minetest.get_modpath("hud").."/hunger.lua") end -if HUD_DISABLE_DROWNING then dofile(minetest.get_modpath("hud").."/no_drowning.lua") end diff --git a/no_drowning.lua b/no_drowning.lua deleted file mode 100644 index f7b3149..0000000 --- a/no_drowning.lua +++ /dev/null @@ -1,15 +0,0 @@ -local function drwn_overwrite(name) - local table = minetest.registered_nodes[name] - local table2 = {} - for i,v in pairs(table) do - table2[i] = v - end - table2.drowning = false - table2.hud_drowning = true - minetest.register_node(":"..name, table2) -end - -drwn_overwrite("default:water_source") -drwn_overwrite("default:water_flowing") -drwn_overwrite("default:lava_source") -drwn_overwrite("default:lava_flowing") diff --git a/textures/hud_air_fg.png b/textures/hud_air_fg.png new file mode 100644 index 0000000..b62c9b0 Binary files /dev/null and b/textures/hud_air_fg.png differ