item_eat particles, don't put lava on the server, Hunger small fixes
parent
59f8ef3376
commit
b89936fef9
|
@ -501,6 +501,28 @@ end
|
|||
function core.item_eat(hp_change, replace_with_item)
|
||||
return function(itemstack, user, pointed_thing) -- closure
|
||||
if user then
|
||||
local pos = user:getpos()
|
||||
pos.y = pos.y + 1.5
|
||||
local itemname = itemstack:get_name()
|
||||
local texture = minetest.registered_items[itemname].inventory_image
|
||||
minetest.add_item(pos, drop)
|
||||
minetest.add_particlespawner({
|
||||
amount = 10,
|
||||
time = 0.1,
|
||||
minpos = {x = pos.x, y = pos.y, z = pos.z},
|
||||
maxpos = {x = pos.x, y = pos.y, z = pos.z},
|
||||
minvel = {x = -1, y = 1, z = -1},
|
||||
maxvel = {x = 1, y = 2, z = 1},
|
||||
minacc = {x = 0, y = -5, z = 0},
|
||||
maxacc = {x = 0, y = -9, z = 0},
|
||||
minexptime = 1,
|
||||
maxexptime = 1,
|
||||
minsize = 1,
|
||||
maxsize = 2,
|
||||
collisiondetection = true,
|
||||
vertical = false,
|
||||
texture = texture,
|
||||
})
|
||||
return core.do_item_eat(hp_change, replace_with_item, itemstack, user, pointed_thing)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -237,11 +237,11 @@ function execute_actions(dtime)
|
|||
local nactions = mesecon.to_update
|
||||
mesecon.to_update = {}
|
||||
for _,i in ipairs(nactions) do
|
||||
node = minetest.get_node(i.pos)
|
||||
local node = minetest.get_node(i.pos)
|
||||
if node.name=="ignore" then
|
||||
add_action(i.pos, i.action, i.rname)
|
||||
else
|
||||
effector = mesecon:get_effector(node.name)
|
||||
local effector = mesecon:get_effector(node.name)
|
||||
if i.action == "on" then
|
||||
if effector and effector.action_on then
|
||||
effector.action_on(i.pos, node, i.rname)
|
||||
|
|
|
@ -85,7 +85,7 @@ function mesecon:mvps_push(pos, dir, maximum) -- pos: pos of mvps; dir: directio
|
|||
|
||||
-- add nodes
|
||||
for _, n in ipairs(nodes) do
|
||||
np = mesecon:addPosRule(n.pos, dir)
|
||||
local np = mesecon:addPosRule(n.pos, dir)
|
||||
minetest.add_node(np, n.node)
|
||||
minetest.get_meta(np):from_table(n.meta)
|
||||
end
|
||||
|
@ -104,8 +104,8 @@ function mesecon:mvps_push(pos, dir, maximum) -- pos: pos of mvps; dir: directio
|
|||
end
|
||||
|
||||
function mesecon:mvps_pull_single(pos, dir) -- pos: pos of mvps; direction: direction of pull (matches push direction for sticky pistons)
|
||||
np = mesecon:addPosRule(pos, dir)
|
||||
nn = minetest.get_node(np)
|
||||
local np = mesecon:addPosRule(pos, dir)
|
||||
local nn = minetest.get_node(np)
|
||||
|
||||
if ((not minetest.registered_nodes[nn.name]) --unregistered node
|
||||
or minetest.registered_nodes[nn.name].liquidtype == "none") --non-liquid node
|
||||
|
|
|
@ -55,12 +55,12 @@ piston_get_direction = function (dir, node)
|
|||
end
|
||||
|
||||
local piston_remove_pusher = function (pos, node)
|
||||
pistonspec = minetest.registered_nodes[node.name].mesecons_piston
|
||||
local pistonspec = minetest.registered_nodes[node.name].mesecons_piston
|
||||
if pushername == pistonspec.pusher then --make sure there actually is a pusher (for compatibility reasons mainly)
|
||||
return
|
||||
end
|
||||
|
||||
dir = piston_get_direction(pistonspec.dir, node)
|
||||
local dir = piston_get_direction(pistonspec.dir, node)
|
||||
local pusherpos = mesecon:addPosRule(pos, dir)
|
||||
local pushername = minetest.get_node(pusherpos).name
|
||||
|
||||
|
@ -98,9 +98,9 @@ local piston_off = function (pos, node)
|
|||
piston_remove_pusher (pos, node)
|
||||
|
||||
if pistonspec.sticky then
|
||||
dir = piston_get_direction(pistonspec.dir, node)
|
||||
pullpos = mesecon:addPosRule(pos, dir)
|
||||
stack = mesecon:mvps_pull_single(pullpos, dir)
|
||||
local dir = piston_get_direction(pistonspec.dir, node)
|
||||
local pullpos = mesecon:addPosRule(pos, dir)
|
||||
local stack = mesecon:mvps_pull_single(pullpos, dir)
|
||||
mesecon:mvps_process_stack(pos, dir, stack)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -31,7 +31,7 @@ minetest.register_node("default:chest", {
|
|||
tiles = {"default_chest_top.png", "default_chest_top.png", "default_chest_side.png",
|
||||
"default_chest_side.png", "default_chest_side.png", "default_chest_front.png"},
|
||||
paramtype2 = "facedir",
|
||||
groups = {choppy = 2, oddly_breakable_by_hand = 2, decorative = 1},
|
||||
groups = {choppy = 2, oddly_breakable_by_hand = 2},
|
||||
legacy_facedir_simple = true,
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
on_construct = function(pos)
|
||||
|
@ -49,7 +49,7 @@ minetest.register_node("default:chest", {
|
|||
"list[current_name;main;0.01,3.39;9,3;]"..
|
||||
"list[current_player;main;0.01,7.4;9,3;9]"..
|
||||
"list[current_player;main;0,10.61;9,1;]")
|
||||
meta:set_string("infotext", "Large Chest 1")
|
||||
meta:set_string("infotext", "Large Chest")
|
||||
minetest.swap_node(p, {name="default:chest_left", param2=param2})
|
||||
local m = minetest.get_meta(p)
|
||||
m:set_string("formspec",
|
||||
|
@ -61,7 +61,7 @@ minetest.register_node("default:chest", {
|
|||
"list[current_name;main;0.01,0.4;9,3;]"..
|
||||
"list[current_player;main;0.01,7.4;9,3;9]"..
|
||||
"list[current_player;main;0,10.61;9,1;]")
|
||||
m:set_string("infotext", "Large Chest 2")
|
||||
m:set_string("infotext", "Large Chest")
|
||||
elseif minetest.get_node(get_chest_neighborpos(pos, param2, "left")).name == "default:chest" then
|
||||
minetest.set_node(pos, {name="default:chest_left",param2=param2})
|
||||
local p = get_chest_neighborpos(pos, param2, "left")
|
||||
|
@ -74,7 +74,7 @@ minetest.register_node("default:chest", {
|
|||
"list[current_name;main;0.01,0.4;9,3;]"..
|
||||
"list[current_player;main;0.01,7.4;9,3;9]"..
|
||||
"list[current_player;main;0,10.61;9,1;]")
|
||||
meta:set_string("infotext", "Large Chest 3")
|
||||
meta:set_string("infotext", "Large Chest")
|
||||
minetest.swap_node(p, {name="default:chest_right", param2=param2})
|
||||
local m = minetest.get_meta(p)
|
||||
m:set_string("formspec",
|
||||
|
@ -86,7 +86,7 @@ minetest.register_node("default:chest", {
|
|||
"list[current_name;main;0.01,3.39;9,3;]"..
|
||||
"list[current_player;main;0.01,7.4;9,3;9]"..
|
||||
"list[current_player;main;0,10.61;9,1;]")
|
||||
m:set_string("infotext", "Large Chest 4")
|
||||
m:set_string("infotext", "Large Chest")
|
||||
else
|
||||
meta:set_string("formspec",
|
||||
"size[9,8.75]"..
|
||||
|
|
|
@ -1116,6 +1116,13 @@ minetest.register_node("default:lava_source", {
|
|||
damage_per_second = 4 * 2,
|
||||
post_effect_color = {a = 191, r = 255, g = 64, b = 0},
|
||||
groups = {lava = 3, liquid = 2, igniter = 1, not_in_creative_inventory = 1},
|
||||
on_construct = function(pos)
|
||||
if minetest.is_singleplayer() ~= true then
|
||||
if pos.y >= 1 then
|
||||
minetest.env:remove_node(pos)
|
||||
end
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
minetest.register_node("default:lava_flowing", {
|
||||
|
|
|
@ -96,7 +96,7 @@ minetest.register_node("fences:fence_wood", {
|
|||
tiles = {"default_wood.png"},
|
||||
inventory_image = "fences_fence.png",
|
||||
paramtype = "light",
|
||||
groups = {snappy = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, fences=1, decorative = 1},
|
||||
groups = {snappy = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, fences = 1},
|
||||
drop = 'fences:fence_wood',
|
||||
sunlight_propagates = true,
|
||||
drawtype = "nodebox",
|
||||
|
@ -666,7 +666,7 @@ minetest.register_node("fences:fencegate", {
|
|||
}
|
||||
},
|
||||
on_construct = function(pos)
|
||||
me2 = minetest.get_node(pos)
|
||||
local me2 = minetest.get_node(pos)
|
||||
meta2 = minetest.get_meta(pos)
|
||||
meta2:set_int("state", 0)
|
||||
state2 = 0
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
-- global values
|
||||
hud.registered_items = {}
|
||||
hud.damage_events = {}
|
||||
|
@ -62,7 +61,7 @@ function hud.register(name, def)
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
-- no error so far, return success
|
||||
return true
|
||||
end
|
||||
|
@ -107,7 +106,7 @@ function hud.swap_statbar(player, item1, item2)
|
|||
player:hud_change(bg1.id, "offset", def2.offset)
|
||||
if pos_swap == true then
|
||||
player:hud_change(bg1.id, "position", def2.position)
|
||||
end
|
||||
end
|
||||
end
|
||||
if bg2 ~= nil and bg2.id then
|
||||
player:hud_change(bg2.id, "offset", def1.offset)
|
||||
|
@ -128,7 +127,7 @@ function hud.change_item(player, name, def)
|
|||
local i_name = player:get_player_name().."_"..name
|
||||
local elem = hud_id[i_name]
|
||||
if not elem then
|
||||
throw_error("Given HUD element " .. dump(name) .. " does not exist".." hääää")
|
||||
throw_error("Given HUD element " .. dump(name) .. " does not exist")
|
||||
return false
|
||||
end
|
||||
|
||||
|
@ -161,7 +160,7 @@ function hud.change_item(player, name, def)
|
|||
player:hud_change(bg.id, "number", def.max)
|
||||
bg.max = def.max
|
||||
bg.number = def.max
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -239,10 +238,10 @@ minetest.register_on_joinplayer(function(player)
|
|||
end)
|
||||
|
||||
function hud.player_event(player, event)
|
||||
if not player then return end -- ADDED
|
||||
if not player then return end
|
||||
|
||||
--needed for first update called by on_join
|
||||
minetest.after(0, function(player) -- ADDED (player)
|
||||
minetest.after(0.1, function(player)
|
||||
if event == "health_changed" then
|
||||
for _,v in pairs(hud.damage_events) do
|
||||
if v.func then
|
||||
|
@ -262,7 +261,7 @@ function hud.player_event(player, event)
|
|||
if event == "hud_changed" then--called when flags changed
|
||||
|
||||
end
|
||||
end, player) -- ADDED , player)
|
||||
end, player)
|
||||
end
|
||||
|
||||
core.register_playerevent(hud.player_event)
|
||||
core.register_playerevent(hud.player_event)
|
||||
|
|
|
@ -1,17 +1,10 @@
|
|||
HUD_IW_MAX = 8
|
||||
HUD_IW_TICK = 0.4
|
||||
if minetest.is_singleplayer() == true then
|
||||
HUD_IW_TICK = 0.2
|
||||
end
|
||||
|
||||
HUD_SB_SIZE = {x = 24, y = 24}
|
||||
|
||||
HUD_HEALTH_POS = {x = 0.5,y = 1}
|
||||
HUD_HEALTH_POS = {x = 0.5, y = 1}
|
||||
HUD_HEALTH_OFFSET = {x = -248, y = -93}
|
||||
HUD_AIR_POS = {x = 0.5, y = 1}
|
||||
HUD_AIR_OFFSET = {x = 6, y = -93}
|
||||
HUD_AIR_OFFSET = {x = 6, y = -124}
|
||||
HUD_HUNGER_POS = {x = 0.5, y = 1}
|
||||
HUD_HUNGER_OFFSET = {x = 6, y = -124}
|
||||
HUD_HUNGER_OFFSET = {x = 6, y = -93}
|
||||
HUD_ARMOR_POS = {x = 0.5, y = 1}
|
||||
HUD_ARMOR_OFFSET = {x = -248, y = -124}
|
||||
|
||||
|
@ -32,12 +25,6 @@ local damage_enabled = minetest.settings:get_bool("enable_damage")
|
|||
hud.show_hunger = minetest.get_modpath("hunger") ~= nil
|
||||
hud.show_armor = minetest.get_modpath("3d_armor") ~= nil
|
||||
|
||||
-- check if some settings are invalid
|
||||
local enable_hunger = minetest.settings:get_bool("hud_hunger_enable")
|
||||
if (enable_hunger == true) and not hud.show_hunger then
|
||||
hud.notify_hunger(5)
|
||||
end
|
||||
|
||||
if damage_enabled ~= true then
|
||||
hud.show_armor = false
|
||||
return
|
||||
|
@ -75,7 +62,7 @@ hud.register("air", {
|
|||
{
|
||||
type = "breath",
|
||||
func = function(player)
|
||||
if not player then return end -- ADDED
|
||||
if not player then return end
|
||||
local air = player:get_breath() or 11
|
||||
if air > 10 then
|
||||
air = 0
|
||||
|
@ -104,9 +91,9 @@ hud.register("hunger", {
|
|||
position = HUD_HUNGER_POS,
|
||||
size = HUD_SB_SIZE,
|
||||
text = "hud_hunger_fg.png",
|
||||
number = 0,
|
||||
number = 20,
|
||||
alignment = {x = -1, y = -1},
|
||||
offset = HUD_HUNGER_OFFSET,
|
||||
background = "hud_hunger_bg.png",
|
||||
max = 0,
|
||||
max = 20,
|
||||
})
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
|
||||
hud = {}
|
||||
|
||||
local path = minetest.get_modpath("hud")
|
||||
|
||||
dofile(path .. "/api.lua")
|
||||
dofile(path .. "/builtin.lua")
|
||||
dofile(path .. "/legacy.lua")
|
||||
dofile(path .. "/legacy.lua")
|
||||
|
|
|
@ -33,41 +33,3 @@ if hud.show_armor then
|
|||
hud.change_item(player, "armor", {number = armor_lvl})
|
||||
end
|
||||
end
|
||||
|
||||
function hud.notify_hunger(delay, use)
|
||||
local txt_part = "enable"
|
||||
if use then
|
||||
txt_part = "use"
|
||||
end
|
||||
minetest.after(delay, function()
|
||||
minetest.chat_send_all("#Better HUD: You can't " .. txt_part .. " hunger without the \"hunger\" mod")
|
||||
minetest.chat_send_all(" Enable it or download it from \"https://github.com/BlockMen/hunger\"")
|
||||
end)
|
||||
end
|
||||
|
||||
-- Hunger related functions
|
||||
if not hud.show_hunger then
|
||||
function hud.set_hunger()
|
||||
hud.notify_hunger(1, true)
|
||||
end
|
||||
|
||||
function hud.get_hunger()
|
||||
hud.notify_hunger(1, true)
|
||||
end
|
||||
|
||||
function hud.item_eat(hp_change, replace_with_item)
|
||||
return function(itemstack, user, pointed_thing)
|
||||
hud.notify_hunger(1, true)
|
||||
local func = minetest.item_eat(hp_change, replace_with_item)
|
||||
return func(itemstack, user, pointed_thing)
|
||||
end
|
||||
end
|
||||
|
||||
function hud.save_hunger()
|
||||
hud.notify_hunger(1, true)
|
||||
end
|
||||
|
||||
function hud.load_hunger(player)
|
||||
hud.notify_hunger(1, true)
|
||||
end
|
||||
end
|
Binary file not shown.
Before Width: | Height: | Size: 84 B |
|
@ -1,4 +1,3 @@
|
|||
|
||||
local register_food = hunger.register_food
|
||||
|
||||
register_food("default:apple", 2)
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
-- read/write
|
||||
function hunger.read(player)
|
||||
local inv = player:get_inventory()
|
||||
|
@ -259,7 +258,7 @@ function hunger.item_eat(hunger_change, replace_with_item, poisen, heal, sound)
|
|||
|
||||
-- eating sound
|
||||
sound = sound or "hunger_eat"
|
||||
minetest.sound_play(sound, {to_player = name, gain = 0.7})
|
||||
minetest.sound_play(sound, {to_player = name, gain = 0.5})
|
||||
|
||||
if replace_with_item then
|
||||
if itemstack:is_empty() then
|
||||
|
|
|
@ -6,9 +6,9 @@ HUNGER_TICK = 600 -- time in seconds after that 1 hunger point is taken
|
|||
HUNGER_HEALTH_TICK = 4 -- time in seconds after player gets healed/damaged
|
||||
HUNGER_MOVE_TICK = 0.5 -- time in seconds after the movement is checked
|
||||
|
||||
HUNGER_EXHAUST_DIG = 3 -- exhaustion increased this value after digged node
|
||||
HUNGER_EXHAUST_DIG = 2 -- exhaustion increased this value after digged node
|
||||
HUNGER_EXHAUST_PLACE = 1 -- exhaustion increased this value after placed
|
||||
HUNGER_EXHAUST_MOVE = 1.5 -- exhaustion increased this value if player movement detected
|
||||
HUNGER_EXHAUST_MOVE = 2 -- exhaustion increased this value if player movement detected
|
||||
HUNGER_EXHAUST_LVL = 160 -- at what exhaustion player saturation gets lowered
|
||||
|
||||
HUNGER_HEAL = 1 -- number of HP player gets healed after HUNGER_HEALTH_TICK
|
||||
|
@ -47,7 +47,7 @@ if minetest.settings:get_bool("enable_damage") then
|
|||
lvl = 20
|
||||
end
|
||||
|
||||
hud.swap_statbar(player, "hunger", "air")
|
||||
-- hud.swap_statbar(player, "hunger", "air")
|
||||
hud.change_item(player, "hunger", {number = lvl, max = 20})
|
||||
end)
|
||||
end)
|
||||
|
|
|
@ -99,7 +99,7 @@ minetest.register_node("itemframes:frame",{
|
|||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
sunlight_propagates = true,
|
||||
groups = { choppy = 2,dig_immediate=2, decorative = 1 },
|
||||
groups = {choppy = 2, dig_immediate = 2},
|
||||
legacy_wallmounted = true,
|
||||
sounds = default.node_sound_defaults(),
|
||||
after_place_node = function(pos, placer, itemstack)
|
||||
|
|
|
@ -25,7 +25,7 @@ mobs:register_mob("mobs_monster:skeleton", {
|
|||
armor = 100,
|
||||
knock_back = 1,
|
||||
light_damage = 1,
|
||||
lava_damage = 10,
|
||||
lava_damage = 5,
|
||||
damage = 1,
|
||||
reach = 2,
|
||||
attack_type = "dogfight",
|
||||
|
|
|
@ -589,7 +589,7 @@ function mob_class:do_stay_near()
|
|||
z = target.z - pos.z
|
||||
}
|
||||
|
||||
yaw = (atan(vec.z / vec.x) + pi / 2) - self.rotate
|
||||
local yaw = (atan(vec.z / vec.x) + pi / 2) - self.rotate
|
||||
|
||||
if target.x > pos.x then
|
||||
yaw = yaw + pi
|
||||
|
|
|
@ -98,7 +98,7 @@ end)
|
|||
|
||||
potions.register_potion("Regen", "purple", 35,
|
||||
function(itemstack, user, pointed_thing)
|
||||
regen_I = true
|
||||
local regen_I = true
|
||||
minetest.chat_send_player(user:get_player_name(), "Regeneration I for 35 seconds")
|
||||
if regen_II == true then
|
||||
local regen
|
||||
|
@ -116,12 +116,12 @@ function(itemstack, user, pointed_thing)
|
|||
end,
|
||||
|
||||
function(itemstack, user, pointed_thing)
|
||||
regen_I = false
|
||||
local regen_I = false
|
||||
end)
|
||||
|
||||
potions.register_potion("Regen II", "purple", 30,
|
||||
function(itemstack, user, pointed_thing)
|
||||
regen_II = true
|
||||
local regen_II = true
|
||||
minetest.chat_send_player(user:get_player_name(), "Regeneration II for 30 seconds")
|
||||
if regen_II == true then
|
||||
local regen
|
||||
|
@ -139,7 +139,7 @@ function(itemstack, user, pointed_thing)
|
|||
end,
|
||||
|
||||
function(itemstack, user, pointed_thing)
|
||||
regen_II = false
|
||||
local regen_II = false
|
||||
end)
|
||||
|
||||
potions.register_potion("Harming", "red", 1,
|
||||
|
|
|
@ -80,8 +80,9 @@ function pane(node, desc, dropitem, recipeitem, color)
|
|||
tiles = {"xpanes_top_"..node..""..color..".png", "xpanes_top_"..node..""..color..".png", texture},
|
||||
paramtype = "light",
|
||||
use_texture_alpha = true,
|
||||
groups = {snappy = 2, cracky=3, oddly_breakable_by_hand = 3, decorative = 1},
|
||||
groups = {snappy = 2, crack = 3, oddly_breakable_by_hand = 3},
|
||||
drop = dropitem,
|
||||
sounds = default.node_sound_glass_defaults(),
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = take
|
||||
|
@ -102,8 +103,10 @@ function pane(node, desc, dropitem, recipeitem, color)
|
|||
wield_image = "xpanes_pane_"..node..""..color..".png",
|
||||
node_placement_prediction = "",
|
||||
on_construct = update_pane,
|
||||
groups = {snappy = 2, crack = 3, oddly_breakable_by_hand = 3},
|
||||
drop = "",
|
||||
groups = {decorative = 1}
|
||||
sounds = default.node_sound_glass_defaults()
|
||||
|
||||
})
|
||||
|
||||
minetest.register_on_placenode(update_nearby)
|
||||
|
@ -137,4 +140,4 @@ pane("glass", "Glass Pane Purple", "", "default:glass_purple", "_purple")
|
|||
|
||||
|
||||
-- Iron
|
||||
pane("iron", "Iron Fence", "xpanes:pane_iron", "default:steel_ingot", "")
|
||||
pane("iron", "Iron Fence", "xpanes:pane_iron", "default:steel_ingot", "")
|
||||
|
|
Loading…
Reference in New Issue