summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBlockMen <nmuelll@web.de>2013-06-28 23:03:54 +0200
committerBlockMen <nmuelll@web.de>2013-06-28 23:03:54 +0200
commita22a08f06d7ee3221883649ad420548c3d85a162 (patch)
tree64e851661ca8d25f48c2c9b572bdefc7fc190ad8
parentd3e8f7134aacacca5c5980ff108f576f7b1f4bd0 (diff)
Update to 0.2
-rw-r--r--README.txt10
-rw-r--r--changelog.txt7
-rw-r--r--hud.conf.example38
-rw-r--r--hunger.lua6
-rw-r--r--init.lua73
5 files changed, 103 insertions, 31 deletions
diff --git a/README.txt b/README.txt
index fcfd25f..2a58f71 100644
--- a/README.txt
+++ b/README.txt
@@ -1,6 +1,6 @@
Minetest mod "Better HUD"
=========================
-version: 0.1 Beta
+version: 0.2 Beta
License of source code: WTFPL
-----------------------------
@@ -35,3 +35,11 @@ This mod changes the HUD of Minetest. It adds a costum crosshair, a improved hea
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.
+
+Hunger:
+This mod adds hunger to the game. You can disable this by setting "HUD_HUNGER_ENABLE = false" in "hud.conf".
+
+Currently only apples and bread from farmin is supported. One apple fills up the hunger bar by 1 bread, 1 bread (from farming) 2 breads in bar.
diff --git a/changelog.txt b/changelog.txt
new file mode 100644
index 0000000..71c43c2
--- /dev/null
+++ b/changelog.txt
@@ -0,0 +1,7 @@
+0.2 Beta
+--------
+
+- added support of costum config files
+- you can eat max. 50% more than before (although it isnt shown in hunger bar)
+- you get healed with 8 breads and more (in hunger bar) now
+- a bread (from farming) == 2 breads in hunger bar \ No newline at end of file
diff --git a/hud.conf.example b/hud.conf.example
new file mode 100644
index 0000000..bb4a927
--- /dev/null
+++ b/hud.conf.example
@@ -0,0 +1,38 @@
+--##Better HUD example config file##
+------------------------------------
+-- This example moves the health bar in the top left corner and the hunger bar in the top right corner
+
+
+--
+-- general settings
+--
+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
+
+
+--
+-- crosshair
+--
+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
+
+--
+-- health bar
+--
+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_OFFSET = {x=-175,y=30} --offset in pixel
+
+--
+-- breath bar
+-- \ No newline at end of file
diff --git a/hunger.lua b/hunger.lua
index 9e0f7ff..36f2ddd 100644
--- a/hunger.lua
+++ b/hunger.lua
@@ -1,10 +1,12 @@
function hud.item_eat(hunger_change, replace_with_item)
+ minetest.chat_send_all("eat")
return function(itemstack, user, pointed_thing)
if itemstack:take_item() ~= nil then
local h = tonumber(hud.hunger[user:get_player_name()])
h=h+hunger_change
- if h>20 then h=20 end
+ if h>30 then h=30 end
hud.hunger[user:get_player_name()]=h
+ hud.save_hunger(user)
itemstack:add_item(replace_with_item) -- note: replace_with_item is optional
--sound:eat
end
@@ -30,5 +32,5 @@ end
overwrite("default:apple", 2, true)
if minetest.get_modpath("farming") ~= nil then
- overwrite("farming:bread", 6, false)
+ overwrite("farming:bread", 4, false)
end
diff --git a/init.lua b/init.lua
index d4a7506..ceda859 100644
--- a/init.lua
+++ b/init.lua
@@ -8,65 +8,77 @@ local air_hud = {}
local SAVE_INTERVAL = 0.5*60--currently useless
-local ENABLE_HUNGER = minetest.setting_getbool("enable_damage") -- set to false if no hunger wanted
-local NO_HUNGER_TIME = 300 --=5min (so 1h playing == hunger)
+--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}
+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}
+
+--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
--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 = false})
+ player:hud_set_flags({crosshair = false, hotbar = true, healthbar = false, wielditem = true, breathbar = DISABLE_DROWNING})
end
+
local function costum_hud(player)
--crosshair
player:hud_add({
hud_elem_type = "image",
text = "hud_cross.png",
- position = {x=0.5, y=0.5},
+ position = HUD_CROSSHAIR_POS,
scale = {x=1, y=1},
})
-if minetest.setting_getbool("enable_damage") then
---hunger
+ if minetest.setting_getbool("enable_damage") then
+ --hunger
player:hud_add({
hud_elem_type = "statbar",
- position = {x=0.5,y=1},
+ position = HUD_HUNGER_POS,
scale = {x=1, y=1},
text = "hud_hunger_bg.png",
number = 20,
alignment = {x=-1,y=-1},
- offset = {x=15,y=-60},
+ offset = HUD_HUNGER_OFFSET,
})
hunger_hud[player:get_player_name()] = player:hud_add({
hud_elem_type = "statbar",
- position = {x=0.5,y=1},
+ position = HUD_HUNGER_POS,
scale = {x=1, y=1},
text = "hud_hunger_fg.png",
number = 20,
alignment = {x=-1,y=-1},
- offset = {x=15,y=-60},
+ offset = HUD_HUNGER_OFFSET,
})
---health
+ --health
player:hud_add({
hud_elem_type = "statbar",
- position = {x=0.5,y=1},
+ position = HUD_HEALTH_POS,
scale = {x=1, y=1},
text = "hud_heart_bg.png",
number = 20,
alignment = {x=-1,y=-1},
- offset = {x=-175,y=-60},
+ offset = HUD_HEALTH_OFFSET,
})
health_hud[player:get_player_name()] = player:hud_add({
hud_elem_type = "statbar",
- position = {x=0.5,y=1},
+ position = HUD_HEALTH_POS,
scale = {x=1, y=1},
text = "hud_heart_fg.png",
number = player:get_hp(),
alignment = {x=-1,y=-1},
- offset = {x=-175,y=-60},
+ offset = HUD_HEALTH_OFFSET,
})
-end
+ end
end
@@ -75,11 +87,13 @@ local function update_hud(player)
--health
player:hud_change(health_hud[player:get_player_name()], "number", player:get_hp())
--hunger
- player:hud_change(hunger_hud[player:get_player_name()], "number", hud.hunger[player:get_player_name()])
+ local h = tonumber(hud.hunger[player:get_player_name()])
+ if h>20 then h=20 end
+ player:hud_change(hunger_hud[player:get_player_name()], "number", h)
end
-local function save_hunger(player)
+function hud.save_hunger(player)
local file = io.open(minetest.get_worldpath().."/hud_"..player:get_player_name().."_hunger", "w+")
if file then
file:write(hud.hunger[player:get_player_name()])
@@ -89,7 +103,7 @@ end
local function timer(interval, player)
if interval > 0 then
- save_hunger(player)
+ hud.save_hunger(player)
minetest.after(interval, timer, interval, player)
end
end
@@ -113,43 +127,46 @@ minetest.register_on_joinplayer(function(player)
hud.hunger[player:get_player_name()] = 20
end
minetest.after(0.5, function()
- save_hunger(player)
+ hud.save_hunger(player)
hide_builtin(player)
costum_hud(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
for _,player in ipairs(minetest.get_connected_players()) do
local h = tonumber(hud.hunger[player:get_player_name()])
- if ENABLE_HUNGER and timer > 4 then
- if h>=18 then
+ if HUD_ENABLE_HUNGER and timer > 4 then
+ if h>=16 then
player:set_hp(player:get_hp()+1)
elseif h==1 and minetest.setting_getbool("enable_damage") then
if player:get_hp()-1 >= 1 then player:set_hp(player:get_hp()-1) end
end
end
- if ENABLE_HUNGER and timer2>NO_HUNGER_TIME then
- --local h = tonumber(hunger[player:get_player_name()])
+ if HUD_ENABLE_HUNGER and timer2>HUD_HUNGER_TICK then
if h>1 then
h=h-1
hud.hunger[player:get_player_name()]=h
- save_hunger(player)
+ hud.save_hunger(player)
end
end
update_hud(player)
end
if timer>4 then timer=0 end
- if timer2>NO_HUNGER_TIME then timer2=0 end
+ if timer2>HUD_HUNGER_TICK then timer2=0 end
end)
end
end)
-if ENABLE_HUNGER then dofile(minetest.get_modpath("hud").."/hunger.lua") end
-dofile(minetest.get_modpath("hud").."/no_drowning.lua")
+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