1
0
mirror of https://github.com/sys4-fr/server-nalc.git synced 2025-01-11 18:40:25 +01:00

Merge branch 'mgl512-devel'

This commit is contained in:
LeMagnesium 2014-12-17 18:56:19 +01:00
commit a3a190f813
8 changed files with 286 additions and 635 deletions

View File

@ -120,7 +120,6 @@ minetest.register_craftitem(":bucket:bucket_empty", {
local liquiddef = bucket.liquids[node.name]
if liquiddef ~= nil and liquiddef.itemname ~= nil and
node.name == liquiddef.source then
minetest.setting_getbool("liquid_finite"))) then
if check_protection(pointed_thing.under,
user:get_player_name(),
"take ".. node.name) then

View File

@ -6,8 +6,6 @@
local function active_formspec(fuel_percent, item_percent)
local formspec =
"size[8,8.5]"..
default.gui_bg..
default.gui_bg_img..
default.gui_slots..
"list[current_name;src;2.75,0.5;1,1;]"..
"list[current_name;fuel;2.75,2.5;1,1;]"..
@ -24,8 +22,6 @@ end
local inactive_formspec =
"size[8,8.5]"..
default.gui_bg..
default.gui_bg_img..
default.gui_slots..
"list[current_name;src;2.75,0.5;1,1;]"..
"list[current_name;fuel;2.75,2.5;1,1;]"..
@ -138,6 +134,182 @@ minetest.register_node("default:furnace_active", {
allow_metadata_inventory_take = allow_metadata_inventory_take,
})
-- Locked Furnace thanks to kotolegokot:
local function has_locked_furnace_privilege(meta, player)
if player:get_player_name() ~= meta:get_string("owner") and player:get_player_name() ~= minetest.setting_get("name") then
return false
end
return true
end
minetest.register_node("default:furnace_locked", {
description = "Locked Furnace",
tiles = {"default_furnace_top.png", "default_furnace_bottom.png", "default_furnace_side.png",
"default_furnace_side.png", "default_furnace_side.png", "default_furnace_lock.png"},
paramtype2 = "facedir",
groups = {cracky = 2},
sounds = default.node_sound_stone_defaults(),
after_place_node = function(pos, placer)
local meta = minetest.get_meta(pos)
meta:set_string("owner", placer:get_player_name())
meta:set_string("infotext", "Locked Furnace (owned by " .. placer:get_player_name() .. ")")
end,
on_construct = function(pos)
local meta = minetest.get_meta(pos)
meta:set_string("formspec", inactive_formspec)
meta:set_string("infotext", "Locked Furnace")
local inv = meta:get_inventory()
inv:set_size("fuel", 1)
inv:set_size("src", 1)
inv:set_size("dst", 4)
end,
can_dig = can_dig,
allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
local meta = minetest.get_meta(pos)
if not has_locked_furnace_privilege(meta, player) then
minetest.log("action", player:get_player_name()..
" tried to access a locked furnace belonging to "..
meta:get_string("owner").." at "..
minetest.pos_to_string(pos) .. ".")
return 0
end
return count
end,
allow_metadata_inventory_put = function(pos, listname, index, stack, player)
local meta = minetest.get_meta(pos)
if not has_locked_furnace_privilege(meta, player) then
minetest.log("action", player:get_player_name()..
" tried to access a locked furnace belonging to "..
meta:get_string("owner").." at "..
minetest.pos_to_string(pos) .. ".")
return 0
end
return stack:get_count()
end,
allow_metadata_inventory_take = function(pos, listname, index, stack, player)
local meta = minetest.get_meta(pos)
if not has_locked_furnace_privilege(meta, player) then
minetest.log("action", player:get_player_name()..
" tried to access a locked furnace belonging to "..
meta:get_string("owner").." at "..
minetest.pos_to_string(pos) .. ".")
return 0
end
return stack:get_count()
end,
on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
minetest.log("action", player:get_player_name()..
" moves stuff in locked furnace at "..minetest.pos_to_string(pos) ..".")
end,
on_metadata_inventory_put = function(pos, listname, index, stack, player)
minetest.log("action", player:get_player_name()..
" moves stuff to locked furnace at "..minetest.pos_to_string(pos) ..".")
end,
on_metadata_inventory_take = function(pos, listname, index, stack, player)
minetest.log("action", player:get_player_name()..
" takes stuff from locked furnace at "..minetest.pos_to_string(pos) ..".")
end,
})
minetest.register_node("default:furnace_locked_active", {
description = "Locked Furnace (active)",
tiles = {
"default_furnace_top.png",
"default_furnace_bottom.png",
"default_furnace_side.png",
"default_furnace_side.png",
"default_furnace_side.png",
{
image = "default_furnace_lock_active.png",
backface_culling = false,
animation = {
type = "vertical_frames",
aspect_w = 16,
aspect_h = 16,
length = 1
},
}
},
paramtype2 = "facedir",
light_source = 9,
drop = "default:furnace_locked",
groups = {cracky = 2, not_in_creative_inventory = 1},
sounds = default.node_sound_stone_defaults(),
after_place_node = function(pos, placer)
local meta = minetest.get_meta(pos)
meta:set_string("owner", placer:get_player_name())
meta:set_string("owner", "Locked Furnace (owned by " .. player:get_player_name() .. ")")
end,
on_construct = function(pos)
local meta = minetest.get_meta(pos)
meta:set_string("formspec", inactive_formspec)
meta:set_string("infotext", "Locked Furnace");
local inv = meta:get_inventory()
inv:set_size("fuel", 1)
inv:set_size("src", 1)
inv:set_size("dst", 4)
end,
can_dig = function(pos,player)
local meta = minetest.get_meta(pos);
local inv = meta:get_inventory()
if not inv:is_empty("fuel") then
return false
elseif not inv:is_empty("dst") then
return false
elseif not inv:is_empty("src") then
return false
end
return true
end,
allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
local meta = minetest.get_meta(pos)
if not has_locked_furnace_privilege(meta, player) then
minetest.log("action", player:get_player_name()..
" tried to access a locked furnace belonging to "..
meta:get_string("owner").." at "..
minetest.pos_to_string(pos) .. ".")
return 0
end
return count
end,
allow_metadata_inventory_put = function(pos, listname, index, stack, player)
local meta = minetest.get_meta(pos)
if not has_locked_furnace_privilege(meta, player) then
minetest.log("action", player:get_player_name()..
" tried to access a locked furnace belonging to "..
meta:get_string("owner").." at "..
minetest.pos_to_string(pos) .. ".")
return 0
end
return stack:get_count()
end,
allow_metadata_inventory_take = function(pos, listname, index, stack, player)
local meta = minetest.get_meta(pos)
if not has_locked_furnace_privilege(meta, player) then
minetest.log("action", player:get_player_name()..
" tried to access a locked furnace belonging to "..
meta:get_string("owner").." at "..
minetest.pos_to_string(pos) .. ".")
return 0
end
return stack:get_count()
end,
on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
minetest.log("action", player:get_player_name()..
" moves stuff in locked furnace at "..minetest.pos_to_string(pos) .. ".")
end,
on_metadata_inventory_put = function(pos, listname, index, stack, player)
minetest.log("action", player:get_player_name()..
" moves stuff to locked furnace at "..minetest.pos_to_string(pos) .. ".")
end,
on_metadata_inventory_take = function(pos, listname, index, stack, player)
minetest.log("action", player:get_player_name()..
" takes stuff from locked furnace at "..minetest.pos_to_string(pos) .. ".")
end,
})
--
-- ABM
--
@ -281,3 +453,103 @@ minetest.register_abm({
meta:set_string("infotext", infotext)
end,
})
minetest.register_abm({
nodenames = {"default:furnace_locked","default:furnace_locked_active"},
interval = 1.0,
chance = 1,
action = function(pos, node, active_object_count, active_object_count_wider)
local meta = minetest.get_meta(pos)
for i, name in ipairs({
"fuel_totaltime",
"fuel_time",
"src_totaltime",
"src_time"
}) do
if meta:get_string(name) == "" then
meta:set_float(name, 0.0)
end
end
local inv = meta:get_inventory()
local srclist = inv:get_list("src")
local cooked = nil
if srclist then
cooked = minetest.get_craft_result({method = "cooking", width = 1, items = srclist})
end
local was_active = false
if meta:get_float("fuel_time") < meta:get_float("fuel_totaltime") then
was_active = true
meta:set_float("fuel_time", meta:get_float("fuel_time") + 1)
meta:set_float("src_time", meta:get_float("src_time") + 1)
if cooked and cooked.item and meta:get_float("src_time") >= cooked.time then
-- check if there's room for output in "dst" list
if inv:room_for_item("dst",cooked.item) then
-- Put result in "dst" list
inv:add_item("dst", cooked.item)
-- take stuff from "src" list
srcstack = inv:get_stack("src", 1)
srcstack:take_item()
inv:set_stack("src", 1, srcstack)
else
-- print("Could not insert " .. cooked.item .. ".")
end
meta:set_string("src_time", 0)
end
end
local item_percent = 0
if cooked then
item_percent = meta:get_float("src_time") * 100 / cooked.time
end
if meta:get_float("fuel_time") < meta:get_float("fuel_totaltime") then
local percent = math.floor(meta:get_float("fuel_time") /
meta:get_float("fuel_totaltime") * 100)
meta:set_string("infotext","Furnace active: " .. percent .. " % (owned by "..meta:get_string("owner") .. ")")
swap_node(pos,"default:furnace_locked_active")
meta:set_string("formspec", active_formspec(percent, item_percent))
return
end
local fuel = nil
local cooked = nil
local fuellist = inv:get_list("fuel")
local srclist = inv:get_list("src")
if srclist then
cooked = minetest.get_craft_result({method = "cooking", width = 1, items = srclist})
end
if fuellist then
fuel = minetest.get_craft_result({method = "fuel", width = 1, items = fuellist})
end
if fuel.time <= 0 then
meta:set_string("infotext","Locked Furnace is out of fuel (owned by "..meta:get_string("owner")..")")
swap_node(pos,"default:furnace_locked")
meta:set_string("formspec", inactive_formspec)
return
end
if cooked.item:is_empty() then
if was_active then
meta:set_string("infotext","Locked Furnace is empty (owned by "..meta:get_string("owner")..")")
swap_node(pos,"default:furnace_locked")
meta:set_string("formspec", inactive_formspec)
end
return
end
meta:set_string("fuel_totaltime", fuel.time)
meta:set_string("fuel_time", 0)
local stack = inv:get_stack("fuel", 1)
stack:take_item()
inv:set_stack("fuel", 1, stack)
end,
})

View File

@ -11,8 +11,9 @@ LAVA_VISC = 3 -- Slower movement in lava.
LIGHT_MAX = 14 -- 15 is reserved for sunlight.
-- GUI related stuff:
gui_slots = "listcolors[#606060AA;#808080;#101010;#202020;#FFF]"
default.gui_bg = "bgcolor[#080808BB;true]"
default.gui_bg_img = "background[5,5;1,1;gui_formbg.png;true]"
default.gui_slots = "listcolors[#606060AA;#808080;#101010;#202020;#FFF]"
function default.get_hotbar_bg(x,y)
local out = ""
@ -22,8 +23,8 @@ function default.get_hotbar_bg(x,y)
return out
end
gui_suvival_form = "size[8,8.5]"..
gui_slots ..
default.gui_suvival_form = "size[8,8.5]"..
default.gui_slots ..
"list[current_player;main; 0, 4.25; 8, 4; ]" ..
"list[current_player;craft; 1.75, 0.5; 3, 3; ]" ..
"list[current_player;craftpreview; 5.75, 1.5; 1, 1; ]" ..

View File

@ -1,7 +1,5 @@
-- mods/default/nodes.lua
gui_slots = "listcolors[#606060AA;#808080;#101010;#202020;#FFF]"
minetest.register_node("default:stone", {
description = "Stone",
tiles = {"default_stone.png"},
@ -581,7 +579,7 @@ minetest.register_node("default:papyrus", {
default.bookshelf_formspec =
"size[8,7;]" ..
gui_slots ..
default.gui_slots ..
"list[context;books;0, 0.3;8,2;]" ..
"list[current_player;main;0,2.85;8,4;]" ..
default.get_hotbar_bg(0, 2.85) ..
@ -1189,7 +1187,7 @@ minetest.register_node("default:sign_wall", {
default.chest_formspec =
"size[8,9]" ..
gui_slots ..
default.gui_slots ..
"list[current_name;main;0,0.3;8,4;]" ..
"list[current_player;main;0,4.85;8,4;]" ..
default.get_hotbar_bg(0, 4.85) ..
@ -1199,7 +1197,7 @@ function default.get_locked_chest_formspec(pos)
local spos = pos.x .. "," .. pos.y .. "," .. pos.z
local formspec =
"size[8,9]" ..
gui_slots ..
default.gui_slots ..
"list[nodemeta:".. spos .. ";main;0,0.3;8,4;]" ..
"list[current_player;main;0,4.85;8,4;]" ..
default.get_hotbar_bg(0, 4.85) ..
@ -1324,403 +1322,6 @@ minetest.register_node("default:chest_locked", {
end,
})
-- Locked Furnace thanks to kotolegokot:
local function has_locked_furnace_privilege(meta, player)
if player:get_player_name() ~= meta:get_string("owner") and player:get_player_name() ~= minetest.setting_get("name") then
return false
end
return true
end
minetest.register_node("default:furnace_locked", {
description = "Locked Furnace",
tiles = {"default_furnace_top.png", "default_furnace_bottom.png", "default_furnace_side.png",
"default_furnace_side.png", "default_furnace_side.png", "default_furnace_lock.png"},
paramtype2 = "facedir",
groups = {cracky = 2},
sounds = default.node_sound_stone_defaults(),
after_place_node = function(pos, placer)
local meta = minetest.get_meta(pos)
meta:set_string("owner", placer:get_player_name())
meta:set_string("infotext", "Locked Furnace (owned by " .. placer:get_player_name() .. ")")
end,
on_construct = function(pos)
local meta = minetest.get_meta(pos)
meta:set_string("formspec", default.furnace_inactive_formspec)
meta:set_string("infotext", "Locked Furnace")
local inv = meta:get_inventory()
inv:set_size("fuel", 1)
inv:set_size("src", 1)
inv:set_size("dst", 4)
end,
can_dig = function(pos,player)
local meta = minetest.get_meta(pos);
local inv = meta:get_inventory()
if not inv:is_empty("fuel") then
return false
elseif not inv:is_empty("dst") then
return false
elseif not inv:is_empty("src") then
return false
end
return true
end,
allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
local meta = minetest.get_meta(pos)
if not has_locked_furnace_privilege(meta, player) then
minetest.log("action", player:get_player_name()..
" tried to access a locked furnace belonging to "..
meta:get_string("owner").." at "..
minetest.pos_to_string(pos) .. ".")
return 0
end
return count
end,
allow_metadata_inventory_put = function(pos, listname, index, stack, player)
local meta = minetest.get_meta(pos)
if not has_locked_furnace_privilege(meta, player) then
minetest.log("action", player:get_player_name()..
" tried to access a locked furnace belonging to "..
meta:get_string("owner").." at "..
minetest.pos_to_string(pos) .. ".")
return 0
end
return stack:get_count()
end,
allow_metadata_inventory_take = function(pos, listname, index, stack, player)
local meta = minetest.get_meta(pos)
if not has_locked_furnace_privilege(meta, player) then
minetest.log("action", player:get_player_name()..
" tried to access a locked furnace belonging to "..
meta:get_string("owner").." at "..
minetest.pos_to_string(pos) .. ".")
return 0
end
return stack:get_count()
end,
on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
minetest.log("action", player:get_player_name()..
" moves stuff in locked furnace at "..minetest.pos_to_string(pos) ..".")
end,
on_metadata_inventory_put = function(pos, listname, index, stack, player)
minetest.log("action", player:get_player_name()..
" moves stuff to locked furnace at "..minetest.pos_to_string(pos) ..".")
end,
on_metadata_inventory_take = function(pos, listname, index, stack, player)
minetest.log("action", player:get_player_name()..
" takes stuff from locked furnace at "..minetest.pos_to_string(pos) ..".")
end,
})
minetest.register_node("default:furnace_locked_active", {
description = "Locked Furnace (active)",
tiles = {
"default_furnace_top.png",
"default_furnace_bottom.png",
"default_furnace_side.png",
"default_furnace_side.png",
"default_furnace_side.png",
{
image = "default_furnace_lock_active.png",
backface_culling = false,
animation = {
type = "vertical_frames",
aspect_w = 16,
aspect_h = 16,
length = 1
},
}
},
paramtype2 = "facedir",
light_source = 9,
drop = "default:furnace_locked",
groups = {cracky = 2, not_in_creative_inventory = 1},
sounds = default.node_sound_stone_defaults(),
after_place_node = function(pos, placer)
local meta = minetest.get_meta(pos)
meta:set_string("owner", placer:get_player_name())
meta:set_string("owner", "Locked Furnace (owned by " .. player:get_player_name() .. ")")
end,
on_construct = function(pos)
local meta = minetest.get_meta(pos)
meta:set_string("formspec", default.furnace_inactive_formspec)
meta:set_string("infotext", "Locked Furnace");
local inv = meta:get_inventory()
inv:set_size("fuel", 1)
inv:set_size("src", 1)
inv:set_size("dst", 4)
end,
can_dig = function(pos,player)
local meta = minetest.get_meta(pos);
local inv = meta:get_inventory()
if not inv:is_empty("fuel") then
return false
elseif not inv:is_empty("dst") then
return false
elseif not inv:is_empty("src") then
return false
end
return true
end,
allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
local meta = minetest.get_meta(pos)
if not has_locked_furnace_privilege(meta, player) then
minetest.log("action", player:get_player_name()..
" tried to access a locked furnace belonging to "..
meta:get_string("owner").." at "..
minetest.pos_to_string(pos) .. ".")
return 0
end
return count
end,
allow_metadata_inventory_put = function(pos, listname, index, stack, player)
local meta = minetest.get_meta(pos)
if not has_locked_furnace_privilege(meta, player) then
minetest.log("action", player:get_player_name()..
" tried to access a locked furnace belonging to "..
meta:get_string("owner").." at "..
minetest.pos_to_string(pos) .. ".")
return 0
end
return stack:get_count()
end,
allow_metadata_inventory_take = function(pos, listname, index, stack, player)
local meta = minetest.get_meta(pos)
if not has_locked_furnace_privilege(meta, player) then
minetest.log("action", player:get_player_name()..
" tried to access a locked furnace belonging to "..
meta:get_string("owner").." at "..
minetest.pos_to_string(pos) .. ".")
return 0
end
return stack:get_count()
end,
on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
minetest.log("action", player:get_player_name()..
" moves stuff in locked furnace at "..minetest.pos_to_string(pos) .. ".")
end,
on_metadata_inventory_put = function(pos, listname, index, stack, player)
minetest.log("action", player:get_player_name()..
" moves stuff to locked furnace at "..minetest.pos_to_string(pos) .. ".")
end,
on_metadata_inventory_take = function(pos, listname, index, stack, player)
minetest.log("action", player:get_player_name()..
" takes stuff from locked furnace at "..minetest.pos_to_string(pos) .. ".")
end,
})
minetest.register_abm({
nodenames = {"default:furnace_locked","default:furnace_locked_active"},
interval = 1.0,
chance = 1,
action = function(pos, node, active_object_count, active_object_count_wider)
local meta = minetest.get_meta(pos)
for i, name in ipairs({
"fuel_totaltime",
"fuel_time",
"src_totaltime",
"src_time"
}) do
if meta:get_string(name) == "" then
meta:set_float(name, 0.0)
end
end
local inv = meta:get_inventory()
local srclist = inv:get_list("src")
local cooked = nil
if srclist then
cooked = minetest.get_craft_result({method = "cooking", width = 1, items = srclist})
end
local was_active = false
if meta:get_float("fuel_time") < meta:get_float("fuel_totaltime") then
was_active = true
meta:set_float("fuel_time", meta:get_float("fuel_time") + 1)
meta:set_float("src_time", meta:get_float("src_time") + 1)
if cooked and cooked.item and meta:get_float("src_time") >= cooked.time then
-- check if there's room for output in "dst" list
if inv:room_for_item("dst",cooked.item) then
-- Put result in "dst" list
inv:add_item("dst", cooked.item)
-- take stuff from "src" list
srcstack = inv:get_stack("src", 1)
srcstack:take_item()
inv:set_stack("src", 1, srcstack)
else
-- print("Could not insert " .. cooked.item .. ".")
end
meta:set_string("src_time", 0)
end
end
local item_percent = 0
if cooked then
item_percent = meta:get_float("src_time")/cooked.time
end
if meta:get_float("fuel_time") < meta:get_float("fuel_totaltime") then
local percent = math.floor(meta:get_float("fuel_time") /
meta:get_float("fuel_totaltime") * 100)
meta:set_string("infotext","Furnace active: " .. percent .. " % (owned by "..meta:get_string("owner") .. ")")
swap_node(pos,"default:furnace_locked_active")
meta:set_string("formspec",
"invsize[8,8.5;]" .. gui_slots ..
"image[2.75,1.5;1,1;default_furnace_fire_bg.png^[lowpart:" ..
(100-percent)..":default_furnace_fire_fg.png]" ..
"image[3.75,1.5;1,1;gui_furnace_arrow_bg.png^[lowpart:" ..
(item_percent * 100)..":gui_furnace_arrow_fg.png^[transformR270]" ..
"list[current_name;src;2.75, 0.5;1,1;]" ..
"list[current_name;fuel;2.75,2.5;1,1;]" ..
"list[current_name;dst;4.75, 0.96;2,2;]" ..
"list[current_player;main;0,4.25;8,4;]" ..
default.get_hotbar_bg(0, 4.25) ..
default.get_hotbar_bg(0, 5.25))
return
end
local fuel = nil
local cooked = nil
local fuellist = inv:get_list("fuel")
local srclist = inv:get_list("src")
if srclist then
cooked = minetest.get_craft_result({method = "cooking", width = 1, items = srclist})
end
if fuellist then
fuel = minetest.get_craft_result({method = "fuel", width = 1, items = fuellist})
end
if fuel.time <= 0 then
meta:set_string("infotext","Locked Furnace is out of fuel (owned by "..meta:get_string("owner")..")")
swap_node(pos,"default:furnace_locked")
meta:set_string("formspec", default.furnace_inactive_formspec)
return
end
if cooked.item:is_empty() then
if was_active then
meta:set_string("infotext","Locked Furnace is empty (owned by "..meta:get_string("owner")..")")
swap_node(pos,"default:furnace_locked")
meta:set_string("formspec", default.furnace_inactive_formspec)
end
return
end
meta:set_string("fuel_totaltime", fuel.time)
meta:set_string("fuel_time", 0)
local stack = inv:get_stack("fuel", 1)
stack:take_item()
inv:set_stack("fuel", 1, stack)
end,
})
function swap_node(pos, name)
local node = minetest.get_node(pos)
if node.name == name then
return
end
node.name = name
minetest.swap_node(pos, node)
end
minetest.register_abm({
nodenames = {"default:furnace","default:furnace_active"},
interval = 1.0,
chance = 1,
action = function(pos, node, active_object_count, active_object_count_wider)
local meta = minetest.get_meta(pos)
for i, name in ipairs({
"fuel_totaltime",
"fuel_time",
"src_totaltime",
"src_time"
}) do
if meta:get_string(name) == "" then
meta:set_float(name, 0.0)
end
end
local inv = meta:get_inventory()
local srclist = inv:get_list("src")
local cooked = nil
local aftercooked
if srclist then
cooked, aftercooked = minetest.get_craft_result({method = "cooking", width = 1, items = srclist})
end
local was_active = false
if meta:get_float("fuel_time") < meta:get_float("fuel_totaltime") then
was_active = true
meta:set_float("fuel_time", meta:get_float("fuel_time") + 1)
meta:set_float("src_time", meta:get_float("src_time") + 1)
if cooked and cooked.item and meta:get_float("src_time") >= cooked.time then
-- check if there"s room for output in "dst" list
if inv:room_for_item("dst",cooked.item) then
-- Put result in "dst" list
inv:add_item("dst", cooked.item)
-- take stuff from "src" list
inv:set_stack("src", 1, aftercooked.items[1])
else
--print("Could not insert ""..cooked.item:to_string()..""")
end
meta:set_string("src_time", 0)
end
end
if meta:get_float("fuel_time") < meta:get_float("fuel_totaltime") then
local percent = math.floor(meta:get_float("fuel_time") /
meta:get_float("fuel_totaltime") * 100)
meta:set_string("infotext","Furnace active: "..percent.."%")
swap_node(pos,"default:furnace_active")
meta:set_string("formspec", default.get_furnace_active_formspec(pos, percent))
return
end
local fuel = nil
local afterfuel
local cooked = nil
local fuellist = inv:get_list("fuel")
local srclist = inv:get_list("src")
if srclist then
cooked = minetest.get_craft_result({method = "cooking", width = 1, items = srclist})
end
if fuellist then
fuel, afterfuel = minetest.get_craft_result({method = "fuel", width = 1, items = fuellist})
end
if not fuel or fuel.time <= 0 then
meta:set_string("infotext","Furnace is out of fuel")
swap_node(pos,"default:furnace")
meta:set_string("formspec", default.furnace_inactive_formspec)
return
end
if cooked.item:is_empty() then
if was_active then
meta:set_string("infotext","Furnace is empty")
swap_node(pos,"default:furnace")
meta:set_string("formspec", default.furnace_inactive_formspec)
end
return
end
meta:set_string("fuel_totaltime", fuel.time)
meta:set_string("fuel_time", 0)
inv:set_stack("fuel", 1, afterfuel.items[1])
end,
})
minetest.register_node("default:cobble", {
description = "Cobblestone",
tiles = {"default_cobble.png"},

View File

@ -147,7 +147,7 @@ minetest.register_on_joinplayer(function(player)
if minetest.setting_getbool("creative_mode") then
-- creative.set_creative_formspec(player, 0, 1)
else
player:set_inventory_formspec(gui_suvival_form)
player:set_inventory_formspec(default.gui_suvival_form)
end
minetest.after(0.5,function()
player:hud_set_hotbar_image("gui_hotbar.png")

View File

@ -1,4 +1,5 @@
-- minetest/fire/init.lua
fire = {}
minetest.register_node("fire:basic_flame", {
description = "Fire",

View File

@ -1,100 +0,0 @@
print (" ---- Overrider christmas_craft = true! ---- ")
minetest.after(0, function()
minetest.register_node(":default:dirt_with_grass", {
description = "Dirt with Grass",
tiles = {"snow.png", "default_dirt.png", "grass_w_snow_side.png"},
is_ground_content = true,
groups = {crumbly=3,soil=1},
drop = {
max_items = 3, items = {
{items = {'default:dirt'}, rarity = 0,},
{items = {'christmas_craft:snowball'}, rarity = 0,},
{items = {'snow:snowball_entity'}, rarity = 2,},
}},
sounds = default.node_sound_dirt_defaults({
footstep = {name="default_grass_footstep", gain=0.4},
}),
})
-- remplace leaves (normal)
minetest.register_node(":default:leaves", {
description = "Leaves",
drawtype = "nodebox",
visual_scale = 1.3,
tiles = {"snow.png", "christmas_craft_leaves_top.png", "christmas_craft_leaves_side.png"},
paramtype = "light",
walkable = false,
groups = {snappy=3, leafdecay=3, flammable=2, leaves=1},
drop = {
max_items = 1,
items = {
{
-- player will get sapling with 1/40 chance
items = {'default:sapling'},
rarity = 40,
},
{
-- player will get leaves only if he get no saplings,
-- this is because max_items is 1
items = {'default:leaves'},
}
}
},
sounds = default.node_sound_leaves_defaults(),
node_box = {
type = "fixed",
fixed = {
{-0.5, -0.5, -0.5, 0.5, 0.5, 0.5},
},
},
selection_box = {
type = "fixed",
fixed = {
{-0.5, -0.5, -0.5, 0.5, 0.5, 0.5},
},
},
})
-- remplace jungleleaves
minetest.register_node(":default:jungletree_leaves", {
description = "Leaves",
drawtype = "nodebox",
visual_scale = 1.3,
tiles = {"snow.png", "christmas_craft_leaves_top.png", "christmas_craft_leaves_side.png"},
paramtype = "light",
walkable = false,
groups = {snappy=3, leafdecay=3, flammable=2, leaves=1},
drop = {
max_items = 1,
items = {
{
-- player will get sapling with 1/40 chance
items = {'moretrees:jungletree_sapling'},
rarity = 40,
},
{
-- player will get leaves only if he get no saplings,
-- this is because max_items is 1
items = {'moretrees:jungletree_leaves_green'},
}
}
},
sounds = default.node_sound_leaves_defaults(),
node_box = {
type = "fixed",
fixed = {
{-0.5, -0.5, -0.5, 0.5, 0.5, 0.5},
},
},
selection_box = {
type = "fixed",
fixed = {
{-0.5, -0.5, -0.5, 0.5, 0.5, 0.5},
},
},
})
end)
print (" ---- Overrider christmas_craft [OK] ---- ")

View File

@ -1,123 +0,0 @@
--[[
Sprint mod for Minetest by GunshipPenguin
To the extent possible under law, the author(s)
have dedicated all copyright and related and neighboring rights
to this software to the public domain worldwide. This software is
distributed without any warranty.
]]
local players = {}
local staminaHud = {}
minetest.register_on_joinplayer(function(player)
playerName = player:get_player_name()
players[playerName] = {
sprinting = false,
timeOut = 0,
stamina = SPRINT_STAMINA,
epressed = false,
hud = player:hud_add({
hud_elem_type = "statbar",
position = {x=0.5,y=1},
size = {x=24, y=24},
text = "stamina.png",
number = 20,
alignment = {x=0,y=1},
offset = {x=-320, y=-186},
}
),
}
end)
minetest.register_on_leaveplayer(function(player)
playerName = player:get_player_name()
players[playerName] = nil
end)
minetest.register_globalstep(function(dtime)
--Get the gametime
local gameTime = minetest.get_gametime()
--Loop through all connected players
for playerName,playerInfo in pairs(players) do
local player = minetest.get_player_by_name(playerName)
if player ~= nil then
--Check if they are pressing the e key
players[playerName]["epressed"] = player:get_player_control()["aux1"]
--Stop sprinting if the player is pressing the LMB or RMB
if player:get_player_control()["LMB"] or player:get_player_control()["RMB"] then
setSprinting(playerName, false)
playerInfo["timeOut"] = 3
end
--If the player is sprinting, create particles behind him/her
if playerInfo["sprinting"] == true and gameTime % 0.1 == 0 then
local numParticles = math.random(1, 2)
local playerPos = player:getpos()
local playerNode = minetest.get_node({x=playerPos["x"], y=playerPos["y"]-1, z=playerPos["z"]})
if playerNode["name"] ~= "air" then
for i=1, numParticles, 1 do
minetest.add_particle({
pos = {x=playerPos["x"]+math.random(-1,1)*math.random()/2,y=playerPos["y"]+0.1,z=playerPos["z"]+math.random(-1,1)*math.random()/2},
vel = {x=0, y=5, z=0},
acc = {x=0, y=-13, z=0},
expirationtime = math.random(),
size = math.random()+0.5,
collisiondetection = true,
vertical = false,
texture = "default_dirt.png",
})
end
end
end
--Adjust player states
if players[playerName]["epressed"] == true and playerInfo["timeOut"] == 0 then --Stopped
setSprinting(playerName, true)
elseif players[playerName]["epressed"] == false then
setSprinting(playerName, false)
end
if playerInfo["timeOut"] > 0 then
playerInfo["timeOut"] = playerInfo["timeOut"] - dtime
if playerInfo["timeOut"] < 0 then
playerInfo["timeOut"] = 0
end
else
--Lower the player's stamina by dtime if he/she is sprinting and set his/her state to 0 if stamina is zero
if playerInfo["sprinting"] == true then
playerInfo["stamina"] = playerInfo["stamina"] - dtime
if playerInfo["stamina"] <= 0 then
playerInfo["stamina"] = 0
setSprinting(playerName, false)
minetest.chat_send_player(playerName, "Your sprint stamina has run out")
playerInfo["timeOut"] = 1
end
end
end
--Increase player's stamina if he/she is not sprinting and his/her stamina is less than SPRINT_STAMINA
if playerInfo["sprinting"] == false and playerInfo["stamina"] < SPRINT_STAMINA then
playerInfo["stamina"] = playerInfo["stamina"] + dtime
end
--Update the players's hud sprint stamina bar
local numBars = (playerInfo["stamina"]/SPRINT_STAMINA)*20
player:hud_change(playerInfo["hud"], "number", numBars)
end
end
end)
function setSprinting(playerName, sprinting) --Sets the state of a player (0=stopped/moving, 1=sprinting)
local player = minetest.get_player_by_name(playerName)
if players[playerName] then
players[playerName]["sprinting"] = sprinting
if sprinting == true then
player:set_physics_override({speed=SPRINT_SPEED,jump=SPRINT_JUMP})
elseif sprinting == false then
player:set_physics_override({speed=1.0,jump=1.0})
end
return true
end
return false
end