Initial indentation pass

master
Oversword 2021-10-24 08:24:44 +01:00 committed by Buckaroo Banzai
parent 33cef9af67
commit 4b0dde6d88
58 changed files with 784 additions and 784 deletions

View File

@ -44,16 +44,16 @@ minetest.register_node("epic:additem", {
on_rotate = epic.on_rotate,
on_construct = function(pos)
local meta = minetest.get_meta(pos)
local meta = minetest.get_meta(pos)
meta:set_string("pos", minetest.pos_to_string({x=0, y=0, z=0}))
local inv = meta:get_inventory()
inv:set_size("main", 1)
update_formspec(meta, pos)
end,
update_formspec(meta, pos)
end,
on_receive_fields = function(pos, _, fields, sender)
on_receive_fields = function(pos, _, fields, sender)
local playername = sender:get_player_name()
if not sender or minetest.is_protected(pos, playername) then
-- not allowed
@ -65,8 +65,8 @@ minetest.register_node("epic:additem", {
if fields.setpos then
minetest.chat_send_player(playername, "[epic] Please punch the desired target position")
epic.punchnode_callback(sender, {
timeout = 300,
callback = function(punch_pos)
timeout = 300,
callback = function(punch_pos)
local pos_str = minetest.pos_to_string(epic.to_relative_pos(pos, vector.add(punch_pos, {x=0, y=0.5, z=0})))
meta:set_string("pos", pos_str)
minetest.chat_send_player(playername, "[epic] target position successfully set to " .. pos_str)
@ -85,7 +85,7 @@ minetest.register_node("epic:additem", {
)
end
end
end,
end,
allow_metadata_inventory_put = epic.allow_metadata_inventory_put,
allow_metadata_inventory_take = epic.allow_metadata_inventory_take,
@ -93,17 +93,17 @@ minetest.register_node("epic:additem", {
-- allow mesecons triggering
mesecons = {
effector = {
action_on = function (pos)
action_on = function (pos)
local meta = minetest.get_meta(pos)
do_add_item(pos, meta)
end
}
}
},
epic = {
on_enter = function(pos, meta, _, ctx)
on_enter = function(pos, meta, _, ctx)
do_add_item(pos, meta)
ctx.next()
end
}
end
}
})

View File

@ -65,8 +65,8 @@ minetest.register_node("epic:branch", {
groups = {cracky=3,oddly_breakable_by_hand=3,epic=1},
on_rotate = epic.on_rotate,
epic = {
on_enter = function(pos, _, player, ctx)
epic = {
on_enter = function(pos, _, player, ctx)
local node = epic.get_node(pos)
local direction = epic.get_direction(node.param2)
@ -105,13 +105,13 @@ minetest.register_node("epic:branch", {
if epic.log_executor then
minetest.log("action", "[epic::branch] on_before_node_exit player=" ..
player:get_player_name() ..
" pos=" .. minetest.pos_to_string(target_pos) ..
" node=" .. minetest.get_node(target_pos).name)
player:get_player_name() ..
" pos=" .. minetest.pos_to_string(target_pos) ..
" node=" .. minetest.get_node(target_pos).name)
end
end
end
end,
end,
on_check = function(_, _, player, ctx)
local next_called = false
@ -134,9 +134,9 @@ minetest.register_node("epic:branch", {
if nodedef.epic and nodedef.epic.on_check then
if epic.log_executor then
minetest.log("action", "[epic::branch] on_before_node_check player=" ..
player:get_player_name() ..
" pos=" .. minetest.pos_to_string(target_pos) ..
" node=" .. minetest.get_node(target_pos).name)
player:get_player_name() ..
" pos=" .. minetest.pos_to_string(target_pos) ..
" node=" .. minetest.get_node(target_pos).name)
end
nodedef.epic.on_check(target_pos, minetest.get_meta(target_pos), player, sub_ctx)
@ -159,5 +159,5 @@ minetest.register_node("epic:branch", {
end
end
end
}
}
})

View File

@ -7,7 +7,7 @@ local update_formspec = function(meta)
meta:set_string("formspec", "size[8,1;]" ..
-- col 2
"button_exit[0.1,0.5;4,1;setfn;Set function]" ..
"button_exit[4.1,0.5;4,1;showpos;Show]" ..
"button_exit[4.1,0.5;4,1;showpos;Show]" ..
"")
end
@ -19,12 +19,12 @@ minetest.register_node("epic:call", {
on_rotate = epic.on_rotate,
on_construct = function(pos)
local meta = minetest.get_meta(pos)
local meta = minetest.get_meta(pos)
meta:set_string("pos", minetest.pos_to_string({x=0, y=0, z=0}))
update_formspec(meta, pos)
end,
update_formspec(meta, pos)
end,
on_receive_fields = function(pos, _, fields, sender)
on_receive_fields = function(pos, _, fields, sender)
if not sender or minetest.is_protected(pos, sender:get_player_name()) then
-- not allowed
return
@ -35,9 +35,9 @@ minetest.register_node("epic:call", {
minetest.chat_send_player(playername, "[epic] Please punch the desired target function or epic")
epic.punchnode_callback(sender, {
nodes = {"epic:function", "epic:epic"},
timeout = 300,
timeout = 300,
check_protection = true,
callback = function(punch_pos)
callback = function(punch_pos)
local meta = minetest.get_meta(pos)
local pos_str = minetest.pos_to_string(epic.to_relative_pos(pos, punch_pos))
meta:set_string("pos", pos_str)
@ -51,18 +51,18 @@ minetest.register_node("epic:call", {
local meta = minetest.get_meta(pos)
local target_pos = minetest.string_to_pos(meta:get_string("pos"))
if target_pos then
epic.show_waypoint(
sender:get_player_name(),
epic.to_absolute_pos(pos, target_pos),
"Target position",
2
)
epic.show_waypoint(
sender:get_player_name(),
epic.to_absolute_pos(pos, target_pos),
"Target position",
2
)
end
end
end,
end,
epic = {
on_enter = function(pos, meta, player, ctx)
on_enter = function(pos, meta, player, ctx)
local target_pos_str = meta:get_string("pos")
local here_pos_str = minetest.pos_to_string({x=0, y=0, z=0})
if here_pos_str ~= target_pos_str then
@ -93,6 +93,6 @@ minetest.register_node("epic:call", {
-- recursion detected, proceed to next
ctx.next()
end
end
}
end
}
})

View File

@ -7,7 +7,7 @@ minetest.register_node("epic:check_empty_armor", {
on_rotate = epic.on_rotate,
epic = {
on_check = function(_, _, player, ctx)
on_check = function(_, _, player, ctx)
local player_name = player:get_player_name()
local player_armor_inv = minetest.get_inventory({type="detached", name=player_name.."_armor"})
@ -15,6 +15,6 @@ minetest.register_node("epic:check_empty_armor", {
ctx.next()
end
end
}
end
}
})

View File

@ -7,13 +7,13 @@ minetest.register_node("epic:check_empty_inv", {
on_rotate = epic.on_rotate,
epic = {
on_check = function(_, _, player, ctx)
on_check = function(_, _, player, ctx)
local player_inv = player:get_inventory()
if player_inv:is_empty("main") and player_inv:is_empty("craft") then
ctx.next()
end
end
}
end
}
})

View File

@ -43,33 +43,33 @@ minetest.register_node("epic:command", {
local meta = minetest.get_meta(pos)
meta:set_string("owner", placer:get_player_name())
meta:set_string("cmd", "status")
update_formspec(meta, pos)
update_formspec(meta, pos)
end,
on_receive_fields = function(pos, _, fields, sender)
local meta = minetest.get_meta(pos);
on_receive_fields = function(pos, _, fields, sender)
local meta = minetest.get_meta(pos);
if not sender or sender:get_player_name() ~= meta:get_string("owner") then
-- not allowed
return
end
if fields.save then
local cmd = fields.cmd or "status"
if fields.save then
local cmd = fields.cmd or "status"
meta:set_string("cmd", cmd)
update_formspec(meta, pos)
end
end
end,
end,
epic = {
on_enter = function(_, meta, player, ctx)
local cmd = meta:get_string("cmd")
on_enter = function(_, meta, player, ctx)
local cmd = meta:get_string("cmd")
local owner = meta:get_string("owner")
cmd = cmd:gsub("@player", player:get_player_name())
cmd = cmd:gsub("@owner", owner)
execute(cmd, owner)
ctx.next()
end
}
ctx.next()
end
}
})

View File

@ -44,27 +44,27 @@ minetest.register_node("epic:deduct_inv", {
end,
epic = {
on_check = function(_, meta, player, ctx)
on_check = function(_, meta, player, ctx)
local inv = meta:get_inventory()
local player_inv = player:get_inventory()
local success = true
local deduct_items = inv:get_list("main")
for _, deduct_item in ipairs(deduct_items) do
local deduct_items = inv:get_list("main")
for _, deduct_item in ipairs(deduct_items) do
if not player_inv:contains_item("main", deduct_item) then
success = false
break
end
end
end
if success then
for _, deduct_item in ipairs(deduct_items) do
player_inv:remove_item("main", deduct_item)
end
end
ctx.next()
end
end
}
end
}
})

View File

@ -18,46 +18,46 @@ minetest.register_node("epic:delay", {
groups = {cracky=3,oddly_breakable_by_hand=3,epic=1},
on_rotate = epic.on_rotate,
on_construct = function(pos)
local meta = minetest.get_meta(pos)
on_construct = function(pos)
local meta = minetest.get_meta(pos)
meta:set_int("delay", 5)
update_formspec(meta, pos)
end,
update_formspec(meta, pos)
end,
on_receive_fields = function(pos, _, fields, sender)
local meta = minetest.get_meta(pos);
on_receive_fields = function(pos, _, fields, sender)
local meta = minetest.get_meta(pos);
if not sender or minetest.is_protected(pos, sender:get_player_name()) then
-- not allowed
return
end
if fields.save then
local delay = tonumber(fields.delay) or 5
if fields.save then
local delay = tonumber(fields.delay) or 5
if delay < 0 then
delay = 1
end
meta:set_int("delay", delay)
update_formspec(meta, pos)
end
end
end,
end,
epic = {
on_enter = function(_, _, _, ctx)
epic = {
on_enter = function(_, _, _, ctx)
ctx.step_data.delay_start = minetest.get_us_time()
end,
on_check = function(_, meta, _, ctx)
local now = minetest.get_us_time()
local start = ctx.step_data.delay_start
end,
on_check = function(_, meta, _, ctx)
local now = minetest.get_us_time()
local start = ctx.step_data.delay_start
local delay_micros = meta:get_int("delay")*1000*1000
local diff = now - start
if diff > delay_micros then
ctx.next()
end
end
}
local diff = now - start
if diff > delay_micros then
ctx.next()
end
end
}
})

View File

@ -74,29 +74,29 @@ minetest.register_node("epic:dialogue", {
on_rotate = epic.on_rotate,
on_construct = function(pos)
local meta = minetest.get_meta(pos)
local meta = minetest.get_meta(pos)
meta:set_string("text", "Example text")
update_formspec(meta, pos)
end,
update_formspec(meta, pos)
end,
on_receive_fields = function(pos, _, fields, sender)
local meta = minetest.get_meta(pos);
on_receive_fields = function(pos, _, fields, sender)
local meta = minetest.get_meta(pos);
if not sender or minetest.is_protected(pos, sender:get_player_name()) then
-- not allowed
return
end
if fields.save then
local text = fields.text or "<no text>"
if fields.save then
local text = fields.text or "<no text>"
meta:set_string("text", text)
update_formspec(meta, pos)
end
end
end,
end,
epic = {
on_enter = function(pos, meta, player)
on_enter = function(pos, meta, player)
local player_name = player:get_player_name()
local player_dialogue = active_dialogues[player_name]
if not player_dialogue then
@ -114,7 +114,7 @@ minetest.register_node("epic:dialogue", {
-- mark dialogue as not selected yet
player_dialogue.targets[minetest.pos_to_string(pos)] = meta:get_string("text")
end,
end,
on_check = function(pos, _, player, ctx)
local player_name = player:get_player_name()
local player_dialogue = active_dialogues[player_name]
@ -144,5 +144,5 @@ minetest.register_node("epic:dialogue", {
local player_name = player:get_player_name()
active_dialogues[player_name] = nil
end
}
}
})

View File

@ -27,7 +27,7 @@ minetest.register_node("epic:epic", {
-- allow mesecons triggering
mesecons = {
effector = {
action_on = function (pos)
action_on = function (pos)
for _, player in ipairs(minetest.get_connected_players()) do
local ppos = player:get_pos()
@ -37,7 +37,7 @@ minetest.register_node("epic:epic", {
end
end
end
}
}
},
mtinfo = {

View File

@ -13,7 +13,7 @@ local update_formspec = function(meta)
"list[context;main;0,0.5;8,4;]" ..
"button_exit[0.1,5.5;4,1;setfn;Set target chest]" ..
"button_exit[4.1,5.5;4,1;showpos;Show]" ..
"button_exit[4.1,5.5;4,1;showpos;Show]" ..
"list[current_player;main;0,7;8,4;]" ..
"listring[]" ..
@ -80,9 +80,9 @@ minetest.register_node("epic:fill_chest", {
local playername = sender:get_player_name()
minetest.chat_send_player(playername, "[epic] Please punch the target chest")
epic.punchnode_callback(sender, {
timeout = 300,
timeout = 300,
check_protection = true,
callback = function(punch_pos)
callback = function(punch_pos)
local meta = minetest.get_meta(pos)
if not is_chest(meta) then
@ -104,30 +104,30 @@ minetest.register_node("epic:fill_chest", {
local meta = minetest.get_meta(pos)
local target_pos = minetest.string_to_pos(meta:get_string("pos"))
if target_pos then
epic.show_waypoint(
sender:get_player_name(),
epic.to_absolute_pos(pos, target_pos),
"Target position",
2
)
epic.show_waypoint(
sender:get_player_name(),
epic.to_absolute_pos(pos, target_pos),
"Target position",
2
)
end
end
end,
end,
-- allow mesecons triggering
mesecons = {
effector = {
action_on = function (pos)
action_on = function (pos)
local meta = minetest.get_meta(pos)
do_fill(pos, meta)
end
}
}
},
epic = {
on_enter = function(pos, meta, _, ctx)
on_enter = function(pos, meta, _, ctx)
do_fill(pos, meta)
ctx.next()
end
}
end
}
})

View File

@ -53,23 +53,23 @@ minetest.register_node("epic:filter_inv", {
end,
epic = {
on_check = function(_, meta, player, ctx)
on_check = function(_, meta, player, ctx)
local inv = meta:get_inventory()
local player_inv = player:get_inventory()
local filter_names = {}
local filter_items = inv:get_list("main")
for _, filter_item in ipairs(filter_items) do
local filter_items = inv:get_list("main")
for _, filter_item in ipairs(filter_items) do
if not filter_item:is_empty() then
filter_names[filter_item:get_name()] = true
end
end
end
filter_inventory(player_inv, "main", filter_names)
filter_inventory(player_inv, "craft", filter_names)
ctx.next()
end
}
end
}
})

View File

@ -12,17 +12,17 @@ minetest.register_node("epic:function", {
on_rotate = epic.on_rotate,
epic = {
on_enter = function(_, _, _, ctx)
ctx.next()
end
},
on_enter = function(_, _, _, ctx)
ctx.next()
end
},
on_construct = function(pos)
local meta = minetest.get_meta(pos)
update_formspec(meta, pos)
end,
on_construct = function(pos)
local meta = minetest.get_meta(pos)
update_formspec(meta, pos)
end,
on_receive_fields = function(pos, _, fields, sender)
on_receive_fields = function(pos, _, fields, sender)
if not sender then
return
end
@ -37,11 +37,11 @@ minetest.register_node("epic:function", {
return
end
if fields.execute then
if fields.execute then
local name = "function@" .. minetest.pos_to_string(pos)
epic.execute_epic(sender, pos, name)
end
epic.execute_epic(sender, pos, name)
end
end
end
})

View File

@ -26,70 +26,70 @@ minetest.register_node("epic:kill_count", {
groups = {cracky=3,oddly_breakable_by_hand=3,epic=1},
on_rotate = epic.on_rotate,
on_construct = function(pos)
local meta = minetest.get_meta(pos)
on_construct = function(pos)
local meta = minetest.get_meta(pos)
meta:set_int("kills", 5)
update_formspec(meta, pos)
end,
update_formspec(meta, pos)
end,
on_receive_fields = function(pos, _, fields, sender)
local meta = minetest.get_meta(pos);
on_receive_fields = function(pos, _, fields, sender)
local meta = minetest.get_meta(pos);
if not sender or minetest.is_protected(pos, sender:get_player_name()) then
-- not allowed
return
end
if fields.save then
local kills = tonumber(fields.kills) or 5
if fields.save then
local kills = tonumber(fields.kills) or 5
if kills < 0 then
kills = 1
end
meta:set_int("kills", kills)
update_formspec(meta, pos)
end
end
end,
end,
epic = {
on_enter = function(_, meta, player, ctx)
kill_counter[player:get_player_name()] = 0
ctx.step_data.kills = meta:get_int("kills")
epic = {
on_enter = function(_, meta, player, ctx)
kill_counter[player:get_player_name()] = 0
ctx.step_data.kills = meta:get_int("kills")
ctx.step_data.hud_kills = player:hud_add({
hud_elem_type = "text",
position = HUD_POSITION,
offset = {x = 0, y = 40},
text = "",
alignment = HUD_ALIGNMENT,
scale = {x = 100, y = 100},
number = 0x0000FF
})
ctx.step_data.hud_kills = player:hud_add({
hud_elem_type = "text",
position = HUD_POSITION,
offset = {x = 0, y = 40},
text = "",
alignment = HUD_ALIGNMENT,
scale = {x = 100, y = 100},
number = 0x0000FF
})
end,
on_check = function(_, _, player, ctx)
local count = kill_counter[player:get_player_name()]
local txt = "Kills: " .. count .. "/" .. ctx.step_data.kills
end,
on_check = function(_, _, player, ctx)
local count = kill_counter[player:get_player_name()]
local txt = "Kills: " .. count .. "/" .. ctx.step_data.kills
player:hud_change(ctx.step_data.hud_kills, "text", txt)
if count >= ctx.step_data.kills then
ctx.next()
end
end,
on_exit = function(_, _, player, ctx)
player:hud_remove(ctx.step_data.hud_kills)
end
}
player:hud_change(ctx.step_data.hud_kills, "text", txt)
if count >= ctx.step_data.kills then
ctx.next()
end
end,
on_exit = function(_, _, player, ctx)
player:hud_remove(ctx.step_data.hud_kills)
end
}
})
-- players
minetest.register_on_punchplayer(function(player, hitter, _, _, _, damage)
-- player got hit by another player
-- player got hit by another player
if not hitter or not hitter:is_player() then
return
end
return
end
local name = hitter:get_player_name()
@ -97,9 +97,9 @@ minetest.register_on_punchplayer(function(player, hitter, _, _, _, damage)
return
end
if damage >= player:get_hp() and player:get_hp() > 0 then
kill_counter[name] = kill_counter[name] + 1
end
if damage >= player:get_hp() and player:get_hp() > 0 then
kill_counter[name] = kill_counter[name] + 1
end
end)
-- mobs
minetest.register_on_mods_loaded(function()

View File

@ -16,7 +16,7 @@ local update_formspec = function(meta)
meta:set_string("formspec", "size[8,1;]" ..
-- col 2
"button_exit[0.1,0.5;4,1;setpos;Set pos]" ..
"button_exit[4.1,0.5;4,1;showpos;Show]" ..
"button_exit[4.1,0.5;4,1;showpos;Show]" ..
"")
end
@ -34,12 +34,12 @@ minetest.register_node("epic:lightning", {
on_rotate = epic.on_rotate,
on_construct = function(pos)
local meta = minetest.get_meta(pos)
local meta = minetest.get_meta(pos)
meta:set_string("pos", minetest.pos_to_string({x=0, y=0, z=0}))
update_formspec(meta, pos)
end,
update_formspec(meta, pos)
end,
on_receive_fields = function(pos, _, fields, sender)
on_receive_fields = function(pos, _, fields, sender)
if not sender or minetest.is_protected(pos, sender:get_player_name()) then
-- not allowed
return
@ -54,32 +54,32 @@ minetest.register_node("epic:lightning", {
local meta = minetest.get_meta(pos)
local target_pos = minetest.string_to_pos(meta:get_string("pos"))
if target_pos then
epic.show_waypoint(
sender:get_player_name(),
epic.to_absolute_pos(pos, target_pos),
"Target position",
2
)
epic.show_waypoint(
sender:get_player_name(),
epic.to_absolute_pos(pos, target_pos),
"Target position",
2
)
end
end
end,
end,
-- allow mesecons triggering
mesecons = {
effector = {
action_on = function (pos)
action_on = function (pos)
local meta = minetest.get_meta(pos)
do_strike(pos, meta)
end
}
}
},
epic = {
on_enter = function(pos, meta, _, ctx)
on_enter = function(pos, meta, _, ctx)
do_strike(pos, meta)
ctx.next()
end
}
end
}
})
minetest.register_on_punchnode(function(pos, _, puncher)

View File

@ -7,19 +7,19 @@ minetest.register_node("epic:lock", {
on_rotate = epic.on_rotate,
on_construct = function(pos)
local meta = minetest.get_meta(pos)
local meta = minetest.get_meta(pos)
meta:set_int("lock", 0)
end,
end,
epic = {
on_enter = function(_, meta, player, ctx)
epic = {
on_enter = function(_, meta, player, ctx)
if meta:get_int("lock") == 0 then
meta:set_int("lock", 1)
ctx.next()
else
minetest.chat_send_player(player:get_player_name(), "[epic] the section is currently occupied, please stand by...")
end
end,
end,
on_check = function(_, meta, player, ctx)
if meta:get_int("lock") == 0 then
@ -28,5 +28,5 @@ minetest.register_node("epic:lock", {
ctx.next()
end
end
}
}
})

View File

@ -40,13 +40,13 @@ minetest.register_node("epic:loop_sound", {
on_rotate = epic.on_rotate,
on_construct = function(pos)
local meta = minetest.get_meta(pos)
local meta = minetest.get_meta(pos)
meta:set_string("soundname", "")
meta:set_string("gain", "1.0")
update_formspec(meta, pos)
end,
update_formspec(meta, pos)
end,
on_receive_fields = function(pos, _, fields, sender)
on_receive_fields = function(pos, _, fields, sender)
if not sender or minetest.is_protected(pos, sender:get_player_name()) then
-- not allowed
return
@ -78,10 +78,10 @@ minetest.register_node("epic:loop_sound", {
update_formspec(meta, pos)
end,
end,
epic = {
on_enter = function(_, meta, player, ctx)
on_enter = function(_, meta, player, ctx)
if ctx.data.loop_sound_handle then
minetest.sound_stop(ctx.data.loop_sound_handle)
@ -107,8 +107,8 @@ minetest.register_node("epic:loop_sound", {
end
end
ctx.next()
end
}
end
}
})
local function cleanup(_, state)
@ -119,6 +119,6 @@ local function cleanup(_, state)
end
epic.register_hook({
on_epic_exit = cleanup,
on_epic_exit = cleanup,
on_epic_abort = cleanup
})

View File

@ -10,7 +10,7 @@ local update_formspec = function(meta)
meta:set_string("formspec", "size[8,1;]" ..
-- col 2
"button_exit[0.1,0.5;4,1;setpos;Set]" ..
"button_exit[4.1,0.5;4,1;showpos;Show]" ..
"button_exit[4.1,0.5;4,1;showpos;Show]" ..
"")
end
@ -22,12 +22,12 @@ minetest.register_node("epic:mesecon_check", {
on_rotate = epic.on_rotate,
on_construct = function(pos)
local meta = minetest.get_meta(pos)
local meta = minetest.get_meta(pos)
meta:set_string("pos", minetest.pos_to_string({x=0, y=0, z=0}))
update_formspec(meta, pos)
end,
update_formspec(meta, pos)
end,
on_receive_fields = function(pos, _, fields, sender)
on_receive_fields = function(pos, _, fields, sender)
if not sender or minetest.is_protected(pos, sender:get_player_name()) then
-- not allowed
return
@ -45,18 +45,18 @@ minetest.register_node("epic:mesecon_check", {
epic.show_waypoint(sender:get_player_name(), epic.to_absolute_pos(pos, target_pos), "Target position", 2)
end
end
end,
end,
epic = {
on_check = function(pos, meta, _, ctx)
on_check = function(pos, meta, _, ctx)
local target_pos_str = meta:get_string("pos")
local target_pos = epic.to_absolute_pos(pos, minetest.string_to_pos(target_pos_str))
local node = epic.get_node(target_pos)
if node.name == "mesecons_extrawires:mese_powered" then
ctx.next()
end
end
}
end
}
})
minetest.register_on_punchnode(function(pos, node, puncher)

View File

@ -22,50 +22,50 @@ minetest.register_node("epic:mesecon_emit", {
rules = mesecon.rules.pplate
}},
on_construct = function(pos)
local meta = minetest.get_meta(pos)
on_construct = function(pos)
local meta = minetest.get_meta(pos)
meta:set_int("delay", 1)
update_formspec(meta, pos)
end,
update_formspec(meta, pos)
end,
on_receive_fields = function(pos, _, fields, sender)
local meta = minetest.get_meta(pos);
on_receive_fields = function(pos, _, fields, sender)
local meta = minetest.get_meta(pos);
if not sender or minetest.is_protected(pos, sender:get_player_name()) then
-- not allowed
return
end
if fields.save then
local delay = tonumber(fields.delay) or 1
if delay < 0 then
delay = 1
end
if fields.save then
local delay = tonumber(fields.delay) or 1
if delay < 0 then
delay = 1
end
meta:set_int("delay", delay)
update_formspec(meta, pos)
end
meta:set_int("delay", delay)
update_formspec(meta, pos)
end
end,
end,
epic = {
on_enter = function(pos, _, _, ctx)
ctx.data.delay_start = minetest.get_us_time()
mesecon.receptor_on(pos)
epic = {
on_enter = function(pos, _, _, ctx)
ctx.data.delay_start = minetest.get_us_time()
mesecon.receptor_on(pos)
end,
on_check = function(_, meta, _, ctx)
local now = minetest.get_us_time()
local start = ctx.data.delay_start
local delay_micros = meta:get_int("delay")*1000*1000
end,
on_check = function(_, meta, _, ctx)
local now = minetest.get_us_time()
local start = ctx.data.delay_start
local delay_micros = meta:get_int("delay")*1000*1000
local diff = now - start
if diff > delay_micros then
ctx.next()
end
end,
on_exit = function(pos)
mesecon.receptor_off(pos)
end
}
local diff = now - start
if diff > delay_micros then
ctx.next()
end
end,
on_exit = function(pos)
mesecon.receptor_off(pos)
end
}
})

View File

@ -19,31 +19,31 @@ minetest.register_node("epic:message", {
on_rotate = epic.on_rotate,
on_construct = function(pos)
local meta = minetest.get_meta(pos)
local meta = minetest.get_meta(pos)
meta:set_string("text", "Hello world")
update_formspec(meta, pos)
end,
update_formspec(meta, pos)
end,
on_receive_fields = function(pos, _, fields, sender)
local meta = minetest.get_meta(pos);
on_receive_fields = function(pos, _, fields, sender)
local meta = minetest.get_meta(pos);
if not sender or minetest.is_protected(pos, sender:get_player_name()) then
-- not allowed
return
end
if fields.save then
local text = fields.text or "Hello world"
if fields.save then
local text = fields.text or "Hello world"
meta:set_string("text", text)
update_formspec(meta, pos)
end
end
end,
end,
epic = {
on_enter = function(_, meta, player, ctx)
minetest.chat_send_player(player:get_player_name(), meta:get_string("text"))
ctx.next()
end
}
on_enter = function(_, meta, player, ctx)
minetest.chat_send_player(player:get_player_name(), meta:get_string("text"))
ctx.next()
end
}
})

View File

@ -6,9 +6,9 @@ minetest.register_node("epic:nop", {
groups = {cracky=3,oddly_breakable_by_hand=3,epic=1},
on_rotate = epic.on_rotate,
epic = {
on_check = function(_, _, _, ctx)
epic = {
on_check = function(_, _, _, ctx)
ctx.next()
end
}
end
}
})

View File

@ -10,7 +10,7 @@ local update_formspec = function(meta)
meta:set_string("formspec", "size[8,1;]" ..
-- col 2
"button_exit[0.1,0.5;4,1;setfn;Set function]" ..
"button_exit[4.1,0.5;4,1;showpos;Show]" ..
"button_exit[4.1,0.5;4,1;showpos;Show]" ..
"")
end
@ -22,12 +22,12 @@ minetest.register_node("epic:on_abort", {
on_rotate = epic.on_rotate,
on_construct = function(pos)
local meta = minetest.get_meta(pos)
local meta = minetest.get_meta(pos)
meta:set_string("pos", minetest.pos_to_string({x=0, y=0, z=0}))
update_formspec(meta, pos)
end,
update_formspec(meta, pos)
end,
on_receive_fields = function(pos, _, fields, sender)
on_receive_fields = function(pos, _, fields, sender)
if not sender or minetest.is_protected(pos, sender:get_player_name()) then
-- not allowed
return
@ -42,18 +42,18 @@ minetest.register_node("epic:on_abort", {
local meta = minetest.get_meta(pos)
local target_pos = minetest.string_to_pos(meta:get_string("pos"))
if target_pos then
epic.show_waypoint(
sender:get_player_name(),
epic.to_absolute_pos(pos, target_pos),
"Target position",
10
)
epic.show_waypoint(
sender:get_player_name(),
epic.to_absolute_pos(pos, target_pos),
"Target position",
10
)
end
end
end,
end,
epic = {
on_enter = function(pos, meta, _, ctx)
on_enter = function(pos, meta, _, ctx)
local target_pos_str = meta:get_string("pos")
local here_pos_str = minetest.pos_to_string({x=0, y=0, z=0})
if here_pos_str ~= target_pos_str then
@ -67,8 +67,8 @@ minetest.register_node("epic:on_abort", {
-- recursion detected, proceed to next
ctx.next()
end
end
}
end
}
})
minetest.register_on_punchnode(function(pos, node, puncher)

View File

@ -10,7 +10,7 @@ local update_formspec = function(meta)
meta:set_string("formspec", "size[8,1;]" ..
-- col 2
"button_exit[0.1,0.5;4,1;setfn;Set function]" ..
"button_exit[4.1,0.5;4,1;showpos;Show]" ..
"button_exit[4.1,0.5;4,1;showpos;Show]" ..
"")
end
@ -22,12 +22,12 @@ minetest.register_node("epic:on_exit", {
on_rotate = epic.on_rotate,
on_construct = function(pos)
local meta = minetest.get_meta(pos)
local meta = minetest.get_meta(pos)
meta:set_string("pos", minetest.pos_to_string({x=0, y=0, z=0}))
update_formspec(meta, pos)
end,
update_formspec(meta, pos)
end,
on_receive_fields = function(pos, _, fields, sender)
on_receive_fields = function(pos, _, fields, sender)
if not sender or minetest.is_protected(pos, sender:get_player_name()) then
-- not allowed
return
@ -42,18 +42,18 @@ minetest.register_node("epic:on_exit", {
local meta = minetest.get_meta(pos)
local target_pos = minetest.string_to_pos(meta:get_string("pos"))
if target_pos then
epic.show_waypoint(
sender:get_player_name(),
epic.to_absolute_pos(pos, target_pos),
"Target position",
2
)
epic.show_waypoint(
sender:get_player_name(),
epic.to_absolute_pos(pos, target_pos),
"Target position",
2
)
end
end
end,
end,
epic = {
on_enter = function(pos, meta, _, ctx)
on_enter = function(pos, meta, _, ctx)
local target_pos_str = meta:get_string("pos")
local here_pos_str = minetest.pos_to_string({x=0, y=0, z=0})
if here_pos_str ~= target_pos_str then
@ -67,8 +67,8 @@ minetest.register_node("epic:on_exit", {
-- recursion detected, proceed to next
ctx.next()
end
end
}
end
}
})
minetest.register_on_punchnode(function(pos, node, puncher)

View File

@ -43,14 +43,14 @@ minetest.register_node("epic:play_sound", {
on_rotate = epic.on_rotate,
on_construct = function(pos)
local meta = minetest.get_meta(pos)
local meta = minetest.get_meta(pos)
meta:set_string("soundname", "")
meta:set_string("gain", "1.0")
update_formspec(meta, pos)
end,
update_formspec(meta, pos)
end,
on_receive_fields = function(pos, _, fields, sender)
on_receive_fields = function(pos, _, fields, sender)
if not sender or minetest.is_protected(pos, sender:get_player_name()) then
-- not allowed
return
@ -82,10 +82,10 @@ minetest.register_node("epic:play_sound", {
update_formspec(meta, pos)
end,
end,
epic = {
on_enter = function(_, meta, player, ctx)
on_enter = function(_, meta, player, ctx)
local soundname = meta:get_string("soundname")
local gain = tonumber( meta:get_string("gain") or "1.0" )
@ -104,6 +104,6 @@ minetest.register_node("epic:play_sound", {
end
end
ctx.next()
end
}
end
}
})

View File

@ -19,33 +19,33 @@ minetest.register_node("epic:random", {
on_rotate = epic.on_rotate,
on_construct = function(pos)
local meta = minetest.get_meta(pos)
local meta = minetest.get_meta(pos)
meta:set_int("chance", 10)
update_formspec(meta, pos)
end,
update_formspec(meta, pos)
end,
on_receive_fields = function(pos, _, fields, sender)
local meta = minetest.get_meta(pos);
local meta = minetest.get_meta(pos);
if not sender or minetest.is_protected(pos, sender:get_player_name()) then
-- not allowed
return
end
if fields.save then
local chance = tonumber(fields.chance) or 10
if fields.save then
local chance = tonumber(fields.chance) or 10
if chance <= 0 then
chance = 10
end
meta:set_int("chance", chance)
update_formspec(meta, pos)
end
end
end,
end,
epic = {
on_check = function(_, meta, _, ctx)
epic = {
on_check = function(_, meta, _, ctx)
local chance = meta:get_int("chance")
if chance <= 0 then
chance = 10
@ -55,5 +55,5 @@ minetest.register_node("epic:random", {
ctx.next()
end
end
}
}
})

View File

@ -41,14 +41,14 @@ minetest.register_node("epic:removeitem", {
on_rotate = epic.on_rotate,
on_construct = function(pos)
local meta = minetest.get_meta(pos)
local meta = minetest.get_meta(pos)
meta:set_string("pos", minetest.pos_to_string({x=0, y=0, z=0}))
meta:set_string("radius", "5")
update_formspec(meta, pos)
end,
update_formspec(meta, pos)
end,
on_receive_fields = function(pos, _, fields, sender)
on_receive_fields = function(pos, _, fields, sender)
if not sender or minetest.is_protected(pos, sender:get_player_name()) then
-- not allowed
return
@ -64,7 +64,7 @@ minetest.register_node("epic:removeitem", {
if fields.save then
meta:set_string("radius", fields.radius or "5")
update_formspec(meta, pos)
end
end
if fields.showpos then
local target_pos = minetest.string_to_pos(meta:get_string("pos"))
@ -72,23 +72,23 @@ minetest.register_node("epic:removeitem", {
epic.show_waypoint(sender:get_player_name(), epic.to_absolute_pos(pos, target_pos), "Target position", 2)
end
end
end,
end,
epic = {
on_enter = function(pos, meta, _, ctx)
on_enter = function(pos, meta, _, ctx)
do_remove(pos, meta)
ctx.next()
end
},
end
},
-- allow mesecons triggering
mesecons = {
effector = {
action_on = function (pos)
action_on = function (pos)
local meta = minetest.get_meta(pos)
do_remove(pos, meta)
end
}
}
}
})

View File

@ -2,10 +2,10 @@ local FORMNAME = "epic_review"
-- review hook to override
-- parameters:
-- pos = position of review block
-- player = player object
-- stars = star rating: 1-5, 0 if aborted
-- counter = number of reviews
-- pos = position of review block
-- player = player object
-- stars = star rating: 1-5, 0 if aborted
-- counter = number of reviews
epic.on_review = function() end
-- rate formspec for quest player
@ -64,12 +64,12 @@ local update_formspec = function(meta)
meta:set_string("rating", tostring(rating))
meta:set_string("formspec", "size[8,8;]" ..
"label[0,0.5;Visits: " .. counter .. ", Rating: " .. rating .. "]" ..
"label[0,1.5;1-Star: " .. one .. "]" ..
"label[0,2.5;2-Star: " .. two .. "]" ..
"label[0,3.5;3-Star: " .. three .. "]" ..
"label[0,4.5;4-Star: " .. four .. "]" ..
"label[0,5.5;5-Star: " .. five .. "]" ..
"label[0,0.5;Visits: " .. counter .. ", Rating: " .. rating .. "]" ..
"label[0,1.5;1-Star: " .. one .. "]" ..
"label[0,2.5;2-Star: " .. two .. "]" ..
"label[0,3.5;3-Star: " .. three .. "]" ..
"label[0,4.5;4-Star: " .. four .. "]" ..
"label[0,5.5;5-Star: " .. five .. "]" ..
"button_exit[0.1,6.5;8,1;reset;Reset]" ..
"")
end
@ -102,10 +102,10 @@ minetest.register_node("epic:review", {
on_rotate = epic.on_rotate,
on_construct = function(pos)
local meta = minetest.get_meta(pos)
local meta = minetest.get_meta(pos)
initialize_reviews(meta)
update_formspec(meta)
end,
update_formspec(meta)
end,
on_receive_fields = function(pos, _, fields, sender)
if not sender or minetest.is_protected(pos, sender:get_player_name()) then
@ -122,13 +122,13 @@ minetest.register_node("epic:review", {
end,
epic = {
on_enter = function(pos, meta, player)
epic = {
on_enter = function(pos, meta, player)
local name = player:get_player_name()
form_visited[name] = nil
meta:set_string("lastplayer", name)
show_formspec(pos, name)
end,
end,
on_check = function(_, _, player, ctx)
local name = player:get_player_name()
if form_visited[name] then
@ -140,7 +140,7 @@ minetest.register_node("epic:review", {
local name = player:get_player_name()
form_visited[name] = nil
end
}
}
})
-- callback from rate-form

View File

@ -29,15 +29,15 @@ minetest.register_node("epic:save", {
on_rotate = epic.on_rotate,
on_construct = function(pos)
local meta = minetest.get_meta(pos)
local meta = minetest.get_meta(pos)
meta:set_string("pos", minetest.pos_to_string({x=0, y=1, z=0}))
meta:set_string("topic", "My maze")
meta:set_string("name", "Level 1")
update_formspec(meta, pos)
end,
update_formspec(meta, pos)
end,
on_receive_fields = function(pos, _, fields, sender)
local meta = minetest.get_meta(pos);
on_receive_fields = function(pos, _, fields, sender)
local meta = minetest.get_meta(pos);
if not sender or minetest.is_protected(pos, sender:get_player_name()) then
-- not allowed
@ -56,16 +56,16 @@ minetest.register_node("epic:save", {
end
end
if fields.save then
if fields.save then
meta:set_string("topic", fields.topic or "My maze")
meta:set_string("name", fields.name or "Level 1")
update_formspec(meta, pos)
end
end
end,
end,
epic = {
on_enter = function(pos, meta, player, ctx)
epic = {
on_enter = function(pos, meta, player, ctx)
local playername = player:get_player_name()
local topic = meta:get_string("topic")
local name = meta:get_string("name")
@ -78,8 +78,8 @@ minetest.register_node("epic:save", {
minetest.chat_send_player(playername, "[epic] Game state '" .. topic .. "/" .. name .. "' saved!")
ctx.next()
end
}
end
}
})
minetest.register_on_punchnode(function(pos, _, puncher, _)

View File

@ -36,8 +36,8 @@ minetest.register_node("epic:send_mapblock", {
if fields.setpos then
minetest.chat_send_player(playername, "[epic] Please punch the desired target position")
epic.punchnode_callback(sender, {
timeout = 300,
callback = function(punch_pos)
timeout = 300,
callback = function(punch_pos)
local pos_str = minetest.pos_to_string(epic.to_relative_pos(pos, punch_pos))
meta:set_string("pos", pos_str)
minetest.chat_send_player(playername, "[epic] target position successfully set to " .. pos_str)
@ -53,15 +53,15 @@ minetest.register_node("epic:send_mapblock", {
end
end
end,
end,
epic = {
on_enter = function(pos, meta, player, ctx)
on_enter = function(pos, meta, player, ctx)
local rel_pos = minetest.string_to_pos(meta:get_string("pos"))
local target_pos = epic.to_absolute_pos(pos, rel_pos)
local block_pos = epic.get_mapblock_pos(target_pos)
player:send_mapblock(block_pos)
ctx.next()
end
}
end
}
})

View File

@ -27,7 +27,7 @@ minetest.register_node("epic:setclouds", {
on_rotate = epic.on_rotate,
on_construct = function(pos)
local meta = minetest.get_meta(pos)
local meta = minetest.get_meta(pos)
meta:set_int("thickness", 16)
meta:set_int("height", 120)
meta:set_string("density", "0.4")
@ -37,18 +37,18 @@ minetest.register_node("epic:setclouds", {
meta:set_int("alpha", 229)
meta:set_int("speedx", 1)
meta:set_int("speedy", 2)
update_formspec(meta, pos)
end,
update_formspec(meta, pos)
end,
on_receive_fields = function(pos, _, fields, sender)
local meta = minetest.get_meta(pos);
on_receive_fields = function(pos, _, fields, sender)
local meta = minetest.get_meta(pos);
if not sender or minetest.is_protected(pos, sender:get_player_name()) then
-- not allowed
return
end
if fields.save then
if fields.save then
meta:set_int("thickness", tonumber(fields.thickness) or 16)
meta:set_int("height", tonumber(fields.height) or 120)
meta:set_string("density", tonumber(fields.density) or 0.4)
@ -59,12 +59,12 @@ minetest.register_node("epic:setclouds", {
meta:set_int("speedx", tonumber(fields.speedx) or 1)
meta:set_int("speedy", tonumber(fields.speedy) or 2)
update_formspec(meta, pos)
end
end
end,
end,
epic = {
on_enter = function(_, meta, player, ctx)
on_enter = function(_, meta, player, ctx)
player:set_clouds({
thickness = meta:get_int("thickness"),
color = {
@ -87,6 +87,6 @@ minetest.register_node("epic:setclouds", {
}
})
ctx.next()
end
}
end
}
})

View File

@ -18,22 +18,22 @@ minetest.register_node("epic:daynightratio", {
groups = {cracky=3,oddly_breakable_by_hand=3,epic=1},
on_rotate = epic.on_rotate,
on_construct = function(pos)
local meta = minetest.get_meta(pos)
on_construct = function(pos)
local meta = minetest.get_meta(pos)
meta:set_string("ratio", "")
update_formspec(meta, pos)
end,
update_formspec(meta, pos)
end,
on_receive_fields = function(pos, _, fields, sender)
local meta = minetest.get_meta(pos);
on_receive_fields = function(pos, _, fields, sender)
local meta = minetest.get_meta(pos);
if not sender or minetest.is_protected(pos, sender:get_player_name()) then
-- not allowed
return
end
if fields.save then
local ratio = tonumber(fields.ratio)
if fields.save then
local ratio = tonumber(fields.ratio)
if not ratio then
meta:set_string("ratio", "")
elseif ratio < 0 then
@ -45,12 +45,12 @@ minetest.register_node("epic:daynightratio", {
end
update_formspec(meta, pos)
end
end
end,
end,
epic = {
on_enter = function(_, meta, player, ctx)
epic = {
on_enter = function(_, meta, player, ctx)
local ratio = meta:get_string("ratio")
if ratio == "" then
player:override_day_night_ratio(nil)
@ -59,6 +59,6 @@ minetest.register_node("epic:daynightratio", {
end
ctx.next()
end,
}
end,
}
})

View File

@ -27,30 +27,30 @@ minetest.register_node("epic:set_gravity", {
update_formspec(meta, pos)
end,
on_receive_fields = function(pos, _, fields, sender)
local meta = minetest.get_meta(pos);
on_receive_fields = function(pos, _, fields, sender)
local meta = minetest.get_meta(pos);
if not sender or minetest.is_protected(pos, sender:get_player_name()) then
-- not allowed
return
end
if fields.save then
meta:set_string("gravity", fields.gravity or "9.81")
update_formspec(meta, pos)
end
if fields.save then
meta:set_string("gravity", fields.gravity or "9.81")
update_formspec(meta, pos)
end
end,
end,
epic = {
on_enter = function(_, meta, player, ctx)
local gravity = tonumber(meta:get_string("gravity")) or 1
if use_player_monoids then
player_monoids.gravity:add_change(player, gravity, "epic:set_gravity")
else
player:set_physics_override({ gravity = gravity })
end
ctx.next()
end
}
epic = {
on_enter = function(_, meta, player, ctx)
local gravity = tonumber(meta:get_string("gravity")) or 1
if use_player_monoids then
player_monoids.gravity:add_change(player, gravity, "epic:set_gravity")
else
player:set_physics_override({ gravity = gravity })
end
ctx.next()
end
}
})

View File

@ -94,20 +94,20 @@ minetest.register_node("epic:setnode", {
end,
epic = {
on_enter = function(pos, meta, _, ctx)
on_enter = function(pos, meta, _, ctx)
do_set(pos, meta)
ctx.next()
end
},
end
},
-- allow mesecons triggering
mesecons = {
effector = {
action_on = function (pos)
action_on = function (pos)
local meta = minetest.get_meta(pos)
do_set(pos, meta)
end
}
}
}
})

View File

@ -34,14 +34,14 @@ minetest.register_node("epic:set_param2", {
on_rotate = epic.on_rotate,
on_construct = function(pos)
local meta = minetest.get_meta(pos)
local meta = minetest.get_meta(pos)
meta:set_string("pos", minetest.pos_to_string({x=0, y=0, z=0}))
meta:set_string("param2", "0")
update_formspec(meta, pos)
end,
update_formspec(meta, pos)
end,
on_receive_fields = function(pos, _, fields, sender)
on_receive_fields = function(pos, _, fields, sender)
local playername = sender:get_player_name()
if not sender or minetest.is_protected(pos, playername) then
-- not allowed
@ -63,8 +63,8 @@ minetest.register_node("epic:set_param2", {
if fields.setpos then
minetest.chat_send_player(playername, "[epic] Please punch the desired target position")
epic.punchnode_callback(sender, {
timeout = 300,
callback = function(punch_pos)
timeout = 300,
callback = function(punch_pos)
local pos_str = minetest.pos_to_string(epic.to_relative_pos(pos, punch_pos))
meta:set_string("pos", pos_str)
minetest.chat_send_player(playername, "[epic] target position successfully set to " .. pos_str)
@ -88,22 +88,22 @@ minetest.register_node("epic:set_param2", {
)
end
end
end,
end,
-- allow mesecons triggering
mesecons = {
effector = {
action_on = function (pos)
action_on = function (pos)
local meta = minetest.get_meta(pos)
do_set_param2(pos, meta)
end
}
}
},
epic = {
on_enter = function(pos, meta, _, ctx)
on_enter = function(pos, meta, _, ctx)
do_set_param2(pos, meta)
ctx.next()
end
}
end
}
})

View File

@ -18,37 +18,37 @@ minetest.register_node("epic:settimeout", {
groups = {cracky=3,oddly_breakable_by_hand=3,epic=1},
on_rotate = epic.on_rotate,
on_construct = function(pos)
local meta = minetest.get_meta(pos)
on_construct = function(pos)
local meta = minetest.get_meta(pos)
meta:set_int("timeout", 300)
update_formspec(meta, pos)
end,
update_formspec(meta, pos)
end,
on_receive_fields = function(pos, _, fields, sender)
local meta = minetest.get_meta(pos);
on_receive_fields = function(pos, _, fields, sender)
local meta = minetest.get_meta(pos);
if not sender or minetest.is_protected(pos, sender:get_player_name()) then
-- not allowed
return
end
if fields.save then
local timeout = tonumber(fields.timeout) or 5
if fields.save then
local timeout = tonumber(fields.timeout) or 5
if timeout < 0 then
timeout = 1
end
meta:set_int("timeout", timeout)
update_formspec(meta, pos)
end
end
end,
end,
epic = {
on_enter = function(_, meta, _, ctx)
epic = {
on_enter = function(_, meta, _, ctx)
local timeout = meta:get_int("timeout") or 300
ctx.settimeout(timeout)
ctx.next()
end
}
end
}
})

View File

@ -81,13 +81,13 @@ minetest.register_node("epic:spawn_mob", {
on_rotate = epic.on_rotate,
on_construct = function(pos)
local meta = minetest.get_meta(pos)
local meta = minetest.get_meta(pos)
meta:set_string("pos", minetest.pos_to_string({x=0, y=0, z=0}))
meta:set_string("mobname", "")
update_formspec(meta, pos)
end,
update_formspec(meta, pos)
end,
on_receive_fields = function(pos, _, fields, sender)
on_receive_fields = function(pos, _, fields, sender)
if not sender or minetest.is_protected(pos, sender:get_player_name()) then
-- not allowed
return
@ -115,24 +115,24 @@ minetest.register_node("epic:spawn_mob", {
epic.show_waypoint(sender:get_player_name(), epic.to_absolute_pos(pos, target_pos), "Target position", 2)
end
end
end,
end,
-- allow mesecons triggering
mesecons = {
effector = {
action_on = function (pos)
action_on = function (pos)
local meta = minetest.get_meta(pos)
do_spawn(pos, meta)
end
}
}
},
epic = {
on_enter = function(pos, meta, _, ctx)
on_enter = function(pos, meta, _, ctx)
do_spawn(pos, meta)
ctx.next()
end
}
end
}
})
minetest.register_on_punchnode(function(pos, _, puncher, _)

View File

@ -44,34 +44,34 @@ minetest.register_node("epic:stash_inv", {
end,
epic = {
on_enter = function(_, meta, player, ctx)
ctx.data.stashed_items = ctx.data.stashed_items or {}
local filter_map = {}
on_enter = function(_, meta, player, ctx)
ctx.data.stashed_items = ctx.data.stashed_items or {}
local filter_map = {}
local inv = meta:get_inventory()
local filter_items = inv:get_list("main")
local filter_items_count = 0
for _, filter_item in ipairs(filter_items) do
local node_name = filter_item:get_name()
if node_name and node_name ~= "" then
filter_items_count = filter_items_count + 1
filter_map[node_name] = true
end
end
local filter_items = inv:get_list("main")
local filter_items_count = 0
for _, filter_item in ipairs(filter_items) do
local node_name = filter_item:get_name()
if node_name and node_name ~= "" then
filter_items_count = filter_items_count + 1
filter_map[node_name] = true
end
end
local player_inv = player:get_inventory()
local filter_all = filter_items_count == 0 -- no filter means stash EVERYTHING!
local i = 1
while i <= player_inv:get_size("main") do
local stack = player_inv:get_stack("main", i)
if filter_all or filter_map[stack:get_name()] then
player_inv:set_stack("main", i, ItemStack(nil))
table.insert(ctx.data.stashed_items, stack:to_string())
end
local player_inv = player:get_inventory()
local filter_all = filter_items_count == 0 -- no filter means stash EVERYTHING!
local i = 1
while i <= player_inv:get_size("main") do
local stack = player_inv:get_stack("main", i)
if filter_all or filter_map[stack:get_name()] then
player_inv:set_stack("main", i, ItemStack(nil))
table.insert(ctx.data.stashed_items, stack:to_string())
end
i = i + 1
end
i = i + 1
end
ctx.next()
end
}
end
}
})

View File

@ -18,11 +18,11 @@ minetest.register_node("epic:stats", {
on_rotate = epic.on_rotate,
on_construct = function(pos)
local meta = minetest.get_meta(pos)
local meta = minetest.get_meta(pos)
meta:set_int("counter", 0)
meta:set_string("lastplayer", "")
update_formspec(meta)
end,
update_formspec(meta)
end,
on_receive_fields = function(pos, _, fields, sender)
if not sender or minetest.is_protected(pos, sender:get_player_name()) then
@ -39,12 +39,12 @@ minetest.register_node("epic:stats", {
end,
epic = {
on_enter = function(_, meta, player, ctx)
epic = {
on_enter = function(_, meta, player, ctx)
meta:set_int("counter", meta:get_int("counter") + 1)
meta:set_string("lastplayer", player:get_player_name())
update_formspec(meta)
ctx.next()
end
}
end
}
})

View File

@ -22,12 +22,12 @@ minetest.register_node("epic:teleport", {
on_rotate = epic.on_rotate,
on_construct = function(pos)
local meta = minetest.get_meta(pos)
local meta = minetest.get_meta(pos)
meta:set_string("pos", minetest.pos_to_string({x=0, y=0, z=0}))
update_formspec(meta, pos)
end,
update_formspec(meta, pos)
end,
on_receive_fields = function(pos, _, fields, sender)
on_receive_fields = function(pos, _, fields, sender)
if not sender or minetest.is_protected(pos, sender:get_player_name()) then
-- not allowed
return
@ -47,16 +47,16 @@ minetest.register_node("epic:teleport", {
end
end
end,
end,
epic = {
on_enter = function(pos, meta, player, ctx)
on_enter = function(pos, meta, player, ctx)
local rel_pos = minetest.string_to_pos(meta:get_string("pos"))
local target_pos = epic.to_absolute_pos(pos, rel_pos)
player:set_pos(target_pos)
ctx.next()
end
}
end
}
})
minetest.register_on_punchnode(function(pos, _, puncher, _)

View File

@ -33,13 +33,13 @@ minetest.register_node("epic:teleport_relative", {
on_rotate = epic.on_rotate,
on_construct = function(pos)
local meta = minetest.get_meta(pos)
local meta = minetest.get_meta(pos)
meta:set_string("source", minetest.pos_to_string({x=0, y=0, z=0}))
meta:set_string("target", minetest.pos_to_string({x=0, y=0, z=0}))
update_formspec(meta, pos)
end,
update_formspec(meta, pos)
end,
on_receive_fields = function(pos, _, fields, sender)
on_receive_fields = function(pos, _, fields, sender)
if not sender or minetest.is_protected(pos, sender:get_player_name()) then
-- not allowed
return
@ -71,10 +71,10 @@ minetest.register_node("epic:teleport_relative", {
end
end
end,
end,
epic = {
on_enter = function(pos, meta, player, ctx)
on_enter = function(pos, meta, player, ctx)
local source_pos = epic.to_absolute_pos(pos, minetest.string_to_pos(meta:get_string("source")))
local target_pos = epic.to_absolute_pos(pos, minetest.string_to_pos(meta:get_string("target")))
local player_pos = player:get_pos()
@ -86,8 +86,8 @@ minetest.register_node("epic:teleport_relative", {
player:set_pos(new_pos)
end
ctx.next()
end
}
end
}
})
minetest.register_on_punchnode(function(pos, _, puncher, _)

View File

@ -28,10 +28,10 @@ minetest.register_node("epic:unlock", {
on_rotate = epic.on_rotate,
on_construct = function(pos)
local meta = minetest.get_meta(pos)
local meta = minetest.get_meta(pos)
meta:set_string("pos", minetest.pos_to_string(pos))
update_formspec(meta, pos)
end,
update_formspec(meta, pos)
end,
on_receive_fields = function(pos, _, fields, sender)
if not sender or minetest.is_protected(pos, sender:get_player_name()) then
@ -53,7 +53,7 @@ minetest.register_node("epic:unlock", {
end
end
end,
end,
-- allow mesecons triggering
mesecons = {
@ -65,12 +65,12 @@ minetest.register_node("epic:unlock", {
}
},
epic = {
on_enter = function(pos, meta, _, ctx)
epic = {
on_enter = function(pos, meta, _, ctx)
do_unlock(pos, meta)
ctx.next()
end
}
end
}
})

View File

@ -8,8 +8,8 @@ minetest.register_node("epic:unstash_inv", {
on_rotate = epic.on_rotate,
epic = {
on_enter = function(_, _, player, ctx)
ctx.data.stashed_items = ctx.data.stashed_items or {}
on_enter = function(_, _, player, ctx)
ctx.data.stashed_items = ctx.data.stashed_items or {}
local player_inv = player:get_inventory()
for _, itemstr in ipairs(ctx.data.stashed_items) do
@ -20,6 +20,6 @@ minetest.register_node("epic:unstash_inv", {
end
ctx.next()
end
}
end
}
})

View File

@ -30,14 +30,14 @@ minetest.register_node("epic:waypoint", {
on_rotate = epic.on_rotate,
on_construct = function(pos)
local meta = minetest.get_meta(pos)
local meta = minetest.get_meta(pos)
meta:set_string("name", "Waypoint")
meta:set_string("pos", minetest.pos_to_string({x=0, y=0, z=0}))
meta:set_int("radius", 3)
update_formspec(meta, pos)
end,
update_formspec(meta, pos)
end,
on_receive_fields = function(pos, _, fields, sender)
on_receive_fields = function(pos, _, fields, sender)
if not sender or minetest.is_protected(pos, sender:get_player_name()) then
-- not allowed
return
@ -45,7 +45,7 @@ minetest.register_node("epic:waypoint", {
local meta = minetest.get_meta(pos);
if fields.save or fields.setpos then
if fields.save or fields.setpos then
local radius = tonumber(fields.radius) or 3
if radius < 0 then
radius = 1
@ -54,7 +54,7 @@ minetest.register_node("epic:waypoint", {
meta:set_int("radius", radius)
meta:set_string("name", fields.name or "")
update_formspec(meta, pos)
end
end
if fields.setpos then
minetest.chat_send_player(sender:get_player_name(), "[epic] Please punch the desired target position")
@ -68,10 +68,10 @@ minetest.register_node("epic:waypoint", {
end
end
end,
end,
epic = {
on_enter = function(pos, meta, player, ctx)
on_enter = function(pos, meta, player, ctx)
local target_pos = epic.to_absolute_pos(pos, minetest.string_to_pos(meta:get_string("pos")))
ctx.step_data.pos = target_pos
ctx.step_data.radius = meta:get_int("radius")
@ -88,19 +88,19 @@ minetest.register_node("epic:waypoint", {
world_pos = target_pos
})
end
end,
on_check = function(_, _, player, ctx)
end,
on_check = function(_, _, player, ctx)
local pos = player:get_pos()
if vector.distance(pos, ctx.step_data.pos) < ctx.step_data.radius then
ctx.next()
end
end,
on_exit = function(_, _, player, ctx)
end,
on_exit = function(_, _, player, ctx)
if ctx.step_data.waypoint_hud_id then
player:hud_remove(ctx.step_data.waypoint_hud_id)
end
end
}
end
}
})
minetest.register_on_punchnode(function(pos, _, puncher, _)

View File

@ -30,14 +30,14 @@ minetest.register_node("epic:waypoint_inverse", {
on_rotate = epic.on_rotate,
on_construct = function(pos)
local meta = minetest.get_meta(pos)
local meta = minetest.get_meta(pos)
meta:set_string("name", "Waypoint")
meta:set_string("pos", minetest.pos_to_string({x=0, y=0, z=0}))
meta:set_int("radius", 3)
update_formspec(meta, pos)
end,
update_formspec(meta, pos)
end,
on_receive_fields = function(pos, _, fields, sender)
on_receive_fields = function(pos, _, fields, sender)
if not sender or minetest.is_protected(pos, sender:get_player_name()) then
-- not allowed
return
@ -45,7 +45,7 @@ minetest.register_node("epic:waypoint_inverse", {
local meta = minetest.get_meta(pos);
if fields.save or fields.setpos then
if fields.save or fields.setpos then
local radius = tonumber(fields.radius) or 3
if radius < 0 then
radius = 1
@ -54,7 +54,7 @@ minetest.register_node("epic:waypoint_inverse", {
meta:set_int("radius", radius)
meta:set_string("name", fields.name or "")
update_formspec(meta, pos)
end
end
if fields.setpos then
minetest.chat_send_player(sender:get_player_name(), "[epic] Please punch the desired target position")
@ -68,10 +68,10 @@ minetest.register_node("epic:waypoint_inverse", {
end
end
end,
end,
epic = {
on_enter = function(pos, meta, player, ctx)
on_enter = function(pos, meta, player, ctx)
local target_pos = epic.to_absolute_pos(pos, minetest.string_to_pos(meta:get_string("pos")))
ctx.step_data.pos = target_pos
ctx.step_data.radius = meta:get_int("radius")
@ -86,19 +86,19 @@ minetest.register_node("epic:waypoint_inverse", {
world_pos = target_pos
})
end
end,
on_check = function(_, _, player, ctx)
end,
on_check = function(_, _, player, ctx)
local pos = player:get_pos()
if vector.distance(pos, ctx.step_data.pos) > ctx.step_data.radius then
ctx.next()
end
end,
on_exit = function(_, _, player, ctx)
end,
on_exit = function(_, _, player, ctx)
if ctx.step_data.waypoint_hud_id then
player:hud_remove(ctx.step_data.waypoint_hud_id)
end
end
}
end
}
})
minetest.register_on_punchnode(function(pos, _, puncher, _)

View File

@ -1,17 +1,17 @@
minetest.register_on_mods_loaded(function()
for name, nodedef in pairs(minetest.registered_nodes) do
if nodedef.epic and not nodedef.epic_anyone_can_place then
minetest.override_item(name, {
on_place = function(itemstack, placer, pointed_thing)
local playername = (placer and placer:get_player_name()) or ""
if not minetest.check_player_privs(playername, {epic_builder=true}) then
minetest.chat_send_player(playername, "[epic] placing this requires the 'epic_builder' priv!")
return
end
return minetest.item_place(itemstack, placer, pointed_thing)
end
})
end
end
for name, nodedef in pairs(minetest.registered_nodes) do
if nodedef.epic and not nodedef.epic_anyone_can_place then
minetest.override_item(name, {
on_place = function(itemstack, placer, pointed_thing)
local playername = (placer and placer:get_player_name()) or ""
if not minetest.check_player_privs(playername, {epic_builder=true}) then
minetest.chat_send_player(playername, "[epic] placing this requires the 'epic_builder' priv!")
return
end
return minetest.item_place(itemstack, placer, pointed_thing)
end
})
end
end
end)

View File

@ -2,14 +2,14 @@
minetest.register_chatcommand("epic_abort", {
description = "Aborts the current epic",
func = function(name)
epic.abort(name)
epic.abort(name)
end
})
minetest.register_chatcommand("epic_dump", { -- *chuckles*
description = "Dumps the current state, optionally from a given user",
privs = { epic_debug = true },
privs = { epic_debug = true },
func = function(_, params)
if params then
return true, dump(epic.state[params])

View File

@ -157,32 +157,32 @@ end
-- converts the direction from a param2
epic.get_direction = function(param2)
local direction = minetest.facedir_to_dir(param2)
if direction.x == -1 and direction.z == 0 then
return { x=0, y=0, z=1 }
elseif direction.x == 0 and direction.z == 1 then
return { x=1, y=0, z=0 }
elseif direction.x == 1 and direction.z == 0 then
return { x=0, y=0, z=-1 }
elseif direction.x == 0 and direction.z == -1 then
return { x=-1, y=0, z=0 }
else
return nil
end
local direction = minetest.facedir_to_dir(param2)
if direction.x == -1 and direction.z == 0 then
return { x=0, y=0, z=1 }
elseif direction.x == 0 and direction.z == 1 then
return { x=1, y=0, z=0 }
elseif direction.x == 1 and direction.z == 0 then
return { x=0, y=0, z=-1 }
elseif direction.x == 0 and direction.z == -1 then
return { x=-1, y=0, z=0 }
else
return nil
end
end
-- returns the position of the next epic block
epic.get_next_pos = function(pos)
local node = minetest.get_node(pos)
local direction = epic.get_direction(node.param2)
local node = minetest.get_node(pos)
local direction = epic.get_direction(node.param2)
if direction == nil then
return
end
if direction == nil then
return
end
local next_pos = vector.add(pos, direction)
local next_pos = vector.add(pos, direction)
return next_pos
return next_pos
end
-- returns a node and loads the area if needed
@ -197,19 +197,19 @@ end
-- returns true if the node has an "epic" definition
epic.is_epic = function(node)
local nodedef = minetest.registered_nodes[node.name]
return nodedef and nodedef.epic
local nodedef = minetest.registered_nodes[node.name]
return nodedef and nodedef.epic
end
-- executes an epic function
epic.execute_epic = function(player, main_pos, name)
if epic.state[player:get_player_name()] then
-- already running a function
return
end
if epic.state[player:get_player_name()] then
-- already running a function
return
end
minetest.log("action", "[epic] player " .. player:get_player_name() ..
" executes function at " .. minetest.pos_to_string(main_pos))
minetest.log("action", "[epic] player " .. player:get_player_name() ..
" executes function at " .. minetest.pos_to_string(main_pos))
local state = epic.new_state()

View File

@ -2,15 +2,15 @@
local hooks = {}
epic.register_hook = function(hook)
table.insert(hooks, hook)
table.insert(hooks, hook)
end
epic.run_hook = function(name, params)
for _, hook in ipairs(hooks) do
local fn = hook[name]
if fn and type(fn) == "function" then
fn( unpack(params) )
end
end
for _, hook in ipairs(hooks) do
local fn = hook[name]
if fn and type(fn) == "function" then
fn( unpack(params) )
end
end
end

View File

@ -13,30 +13,30 @@ local function setup(playername, name)
return
end
local player = minetest.get_player_by_name(playername)
local data = {}
local player = minetest.get_player_by_name(playername)
local data = {}
data.name = player:hud_add({
hud_elem_type = "text",
position = HUD_POSITION,
offset = {x = 0, y = 0},
text = name or "",
alignment = HUD_ALIGNMENT,
scale = {x = 100, y = 100},
number = 0x00FF00
})
data.name = player:hud_add({
hud_elem_type = "text",
position = HUD_POSITION,
offset = {x = 0, y = 0},
text = name or "",
alignment = HUD_ALIGNMENT,
scale = {x = 100, y = 100},
number = 0x00FF00
})
data.time = player:hud_add({
hud_elem_type = "text",
position = HUD_POSITION,
offset = {x = 0, y = 20},
text = "",
alignment = HUD_ALIGNMENT,
scale = {x = 100, y = 100},
number = 0x00FF00
})
data.time = player:hud_add({
hud_elem_type = "text",
position = HUD_POSITION,
offset = {x = 0, y = 20},
text = "",
alignment = HUD_ALIGNMENT,
scale = {x = 100, y = 100},
number = 0x00FF00
})
hud[playername] = data
hud[playername] = data
end
local function exit_cleanup(playername)
@ -59,40 +59,40 @@ local function exit_cleanup(playername)
end
epic.register_hook({
on_execute_epic = function(player, _, state)
setup(player:get_player_name(), state.name)
end,
on_execute_epic = function(player, _, state)
setup(player:get_player_name(), state.name)
end,
on_epic_exit = exit_cleanup,
on_epic_exit = exit_cleanup,
on_epic_abort = exit_cleanup
})
local update
update = function()
for playername, state in pairs(epic.state) do
local data = hud[playername]
local player = minetest.get_player_by_name(playername)
for playername, state in pairs(epic.state) do
local data = hud[playername]
local player = minetest.get_player_by_name(playername)
if player and data and data.time then
local color = get_color(0,255,0)
local time_str = ""
if player and data and data.time then
local color = get_color(0,255,0)
local time_str = ""
if state.time and state.time > 0 then
time_str = epic.format_time(state.time)
if state.time and state.time > 0 then
time_str = epic.format_time(state.time)
if state.time < 300 then
color = get_color(255,255,0)
elseif state.time < 60 then
color = get_color(255,0,0)
end
end
if state.time < 300 then
color = get_color(255,255,0)
elseif state.time < 60 then
color = get_color(255,0,0)
end
end
player:hud_change(data.time, "text", time_str)
player:hud_change(data.time, "number", color)
end
player:hud_change(data.time, "text", time_str)
player:hud_change(data.time, "number", color)
end
end
minetest.after(1.0, update)
end
minetest.after(1.0, update)
end
minetest.after(1.0, update)

View File

@ -114,5 +114,5 @@ if epic.log_executor then
end
if minetest.settings:get_bool("enable_epic_integration_test") then
dofile(MP.."/integration_test.lua")
dofile(MP.."/integration_test.lua")
end

View File

@ -1,43 +1,43 @@
epic.register_hook({
on_execute_epic = function(player, main_pos, state)
minetest.log("action", "[epic] on_execute_epic player=" ..
player:get_player_name() ..
" main_pos=" .. minetest.pos_to_string(main_pos) ..
" state=" .. dump(state))
end,
on_execute_epic = function(player, main_pos, state)
minetest.log("action", "[epic] on_execute_epic player=" ..
player:get_player_name() ..
" main_pos=" .. minetest.pos_to_string(main_pos) ..
" state=" .. dump(state))
end,
on_before_node_check = function(pos, player)
minetest.log("action", "[epic] on_before_node_check player=" ..
player:get_player_name() ..
" pos=" .. minetest.pos_to_string(pos) ..
" node=" .. minetest.get_node(pos).name)
end,
minetest.log("action", "[epic] on_before_node_check player=" ..
player:get_player_name() ..
" pos=" .. minetest.pos_to_string(pos) ..
" node=" .. minetest.get_node(pos).name)
end,
on_before_node_enter = function(pos, player)
minetest.log("action", "[epic] on_before_node_enter player=" ..
player:get_player_name() ..
" pos=" .. minetest.pos_to_string(pos) ..
" node=" .. minetest.get_node(pos).name)
end,
minetest.log("action", "[epic] on_before_node_enter player=" ..
player:get_player_name() ..
" pos=" .. minetest.pos_to_string(pos) ..
" node=" .. minetest.get_node(pos).name)
end,
on_before_node_exit = function(pos, player)
minetest.log("action", "[epic] on_before_node_exit player=" ..
player:get_player_name() ..
" pos=" .. minetest.pos_to_string(pos) ..
" node=" .. minetest.get_node(pos).name)
end,
on_before_node_exit = function(pos, player)
minetest.log("action", "[epic] on_before_node_exit player=" ..
player:get_player_name() ..
" pos=" .. minetest.pos_to_string(pos) ..
" node=" .. minetest.get_node(pos).name)
end,
on_epic_exit = function(playername, state)
minetest.log("action", "[epic] on_epic_exit player=" ..
playername ..
" state=" .. dump(state))
end,
on_epic_exit = function(playername, state)
minetest.log("action", "[epic] on_epic_exit player=" ..
playername ..
" state=" .. dump(state))
end,
on_epic_abort = function(playername, state, reason)
minetest.log("action", "[epic] on_epic_abort player=" ..
playername ..
" state=" .. dump(state) ..
" reason=" .. reason)
end
on_epic_abort = function(playername, state, reason)
minetest.log("action", "[epic] on_epic_abort player=" ..
playername ..
" state=" .. dump(state) ..
" reason=" .. reason)
end
})

View File

@ -13,37 +13,37 @@ local exited_normally = monitoring.counter("epic_exited", "count of normally exi
local exited_abort = monitoring.counter("epic_aborted", "count of aborted epics")
epic.register_hook({
on_execute_epic = function()
epic_starts.inc()
current_epics = current_epics + 1
current_epics_metric.set(current_epics)
end,
on_execute_epic = function()
epic_starts.inc()
current_epics = current_epics + 1
current_epics_metric.set(current_epics)
end,
on_before_node_enter = function()
executed_blocks_enter.inc()
end,
on_before_node_enter = function()
executed_blocks_enter.inc()
end,
on_before_node_check = function()
executed_blocks_check.inc()
end,
on_before_node_check = function()
executed_blocks_check.inc()
end,
on_before_node_exit = function()
executed_blocks_exit.inc()
end,
on_before_node_exit = function()
executed_blocks_exit.inc()
end,
on_epic_exit = function()
exited_normally.inc()
current_epics = current_epics - 1
current_epics_metric.set(current_epics)
end,
on_epic_exit = function()
exited_normally.inc()
current_epics = current_epics - 1
current_epics_metric.set(current_epics)
end,
on_epic_abort = function()
exited_abort.inc()
current_epics = current_epics - 1
current_epics_metric.set(current_epics)
end,
on_epic_abort = function()
exited_abort.inc()
current_epics = current_epics - 1
current_epics_metric.set(current_epics)
end,
globalstep_stats = function(stats)
time_budget.inc(stats.time)
end
globalstep_stats = function(stats)
time_budget.inc(stats.time)
end
})

View File

@ -1,15 +1,15 @@
minetest.register_privilege("epic_debug", {
description = "can call any epic function directly",
give_to_singleplayer = true
description = "can call any epic function directly",
give_to_singleplayer = true
})
minetest.register_privilege("epic_builder", {
description = "can place epic blocks",
give_to_singleplayer = true
description = "can place epic blocks",
give_to_singleplayer = true
})
minetest.register_privilege("epic_admin", {
description = "can administer any epic function",
give_to_singleplayer = true
description = "can administer any epic function",
give_to_singleplayer = true
})

View File

@ -2,51 +2,51 @@
local next_fn
minetest = {
after = function(_, fn)
next_fn = fn
end,
after = function(_, fn)
next_fn = fn
end,
get_modpath = function(name)
if name == "epic" then
return "."
else
return nil
end
end,
get_modpath = function(name)
if name == "epic" then
return "."
else
return nil
end
end,
get_worldpath = function()
return "."
end,
get_worldpath = function()
return "."
end,
register_node = function() end,
register_on_punchnode = function() end,
register_on_punchplayer = function() end,
register_on_mods_loaded = function() end,
register_on_player_receive_fields = function() end,
register_on_joinplayer = function() end,
register_on_leaveplayer = function() end,
register_on_dieplayer = function() end,
register_privilege = function() end,
register_chatcommand = function() end,
register_on_shutdown = function() end,
register_node = function() end,
register_on_punchnode = function() end,
register_on_punchplayer = function() end,
register_on_mods_loaded = function() end,
register_on_player_receive_fields = function() end,
register_on_joinplayer = function() end,
register_on_leaveplayer = function() end,
register_on_dieplayer = function() end,
register_privilege = function() end,
register_chatcommand = function() end,
register_on_shutdown = function() end,
get_connected_players = function()
return {}
end,
get_connected_players = function()
return {}
end,
global_exists = function() end,
mkdir = function() end,
global_exists = function() end,
mkdir = function() end,
get_us_time = function()
return 1000
end,
get_us_time = function()
return 1000
end,
registered_nodes = {},
registered_nodes = {},
settings = {
get_bool = function() end,
get = function() end,
}
settings = {
get_bool = function() end,
get = function() end,
}
}
screwdriver = {}

View File

@ -74,7 +74,7 @@ end)
minetest.register_chatcommand("epic_trace", {
description = "Enables or disables epic tracing",
privs = { epic_debug = true },
privs = { epic_debug = true },
func = function(name, params)
local player = minetest.get_player_by_name(name)
local meta = player:get_meta()
@ -93,6 +93,6 @@ minetest.register_chatcommand("epic_trace", {
end
else
return true, "Usage: /epic_trace on|off"
end
end
end
})

View File

@ -2,16 +2,16 @@
epic.allow_metadata_inventory_put = function(pos, _, _, stack, player)
if minetest.is_protected(pos, player:get_player_name()) then
return 0
end
return stack:get_count()
if minetest.is_protected(pos, player:get_player_name()) then
return 0
end
return stack:get_count()
end
epic.allow_metadata_inventory_take = function(pos, _, _, stack, player)
if minetest.is_protected(pos, player:get_player_name()) then
return 0
end
return stack:get_count()
if minetest.is_protected(pos, player:get_player_name()) then
return 0
end
return stack:get_count()
end

View File

@ -7,62 +7,62 @@ local punch_handler = {}
Registers a punch-configuration callback:
epic.punchnode_callback({
nodes = {"default:dirt"},
timeout = 300,
check_protection = true,
callback = function(pos, node) end
nodes = {"default:dirt"},
timeout = 300,
check_protection = true,
callback = function(pos, node) end
})
--]]
function epic.punchnode_callback(player, punchDef)
local playername = player:get_player_name()
punch_handler[playername] = punchDef
local playername = player:get_player_name()
punch_handler[playername] = punchDef
end
minetest.register_on_punchnode(function(pos, node, puncher)
local playername = puncher:get_player_name()
local punchDef = punch_handler[playername]
local punchDef = punch_handler[playername]
-- abort if no callback waiting
if not punchDef then
return
end
-- abort if no callback waiting
if not punchDef then
return
end
-- TODO: check timeout
-- TODO: check timeout
-- clear callback
punch_handler[playername] = nil
-- clear callback
punch_handler[playername] = nil
if punchDef.check_protection then
if minetest.is_protected(pos, playername) and
not minetest.check_player_privs(playername, {epic_admin=true}) then
minetest.chat_send_player(playername, "[epic] target is protected! aborting selection.")
return
end
end
if punchDef.check_protection then
if minetest.is_protected(pos, playername) and
not minetest.check_player_privs(playername, {epic_admin=true}) then
minetest.chat_send_player(playername, "[epic] target is protected! aborting selection.")
return
end
end
-- check valid nodes
local valid_node = false
-- check valid nodes
local valid_node = false
if punchDef.nodes then
-- go through list
for _, nodename in ipairs(punchDef.nodes) do
if node.name == nodename then
valid_node = true
break
end
end
else
-- all nodes valid
valid_node = true
end
if punchDef.nodes then
-- go through list
for _, nodename in ipairs(punchDef.nodes) do
if node.name == nodename then
valid_node = true
break
end
end
else
-- all nodes valid
valid_node = true
end
if not valid_node then
minetest.chat_send_player(playername, "[epic] target node invalid! valid types: " .. dump(punchDef.nodes))
return
end
if not valid_node then
minetest.chat_send_player(playername, "[epic] target node invalid! valid types: " .. dump(punchDef.nodes))
return
end
punchDef.callback(pos, node)
punchDef.callback(pos, node)
end)
-- cleanup

View File

@ -10,7 +10,7 @@ local getStateFile = function(playername)
end
epic.savegame.save = function(playername, savegame)
local file = io.open(getStateFile(playername),"w")
local file = io.open(getStateFile(playername),"w")
local json = minetest.write_json(savegame)
if file and file:write(json) and file:close() then
return