init
This commit is contained in:
parent
4be7546c64
commit
13b8421714
|
@ -0,0 +1,32 @@
|
||||||
|
local count={}
|
||||||
|
local times={}
|
||||||
|
local total=0
|
||||||
|
local nabm=0
|
||||||
|
minetest.register_on_mods_loaded(function()
|
||||||
|
|
||||||
|
for k,v in pairs(minetest.registered_abms) do
|
||||||
|
local n=v.label
|
||||||
|
local olda=v.action
|
||||||
|
minetest.registered_abms[k].action=function(pos, node, aoc, aocw)
|
||||||
|
local t1=os.clock()
|
||||||
|
local r=olda(pos, node, aoc, aocw)
|
||||||
|
times[n]=os.clock()-t1
|
||||||
|
if not count[n] then count[n] = 0 end
|
||||||
|
count[n]=count[n]+1
|
||||||
|
total=total+times[n]
|
||||||
|
nabm=nabm+1
|
||||||
|
return r
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
minetest.register_chatcommand("abmp",{privs={debug=true},
|
||||||
|
description="Give an overview of the registered abms and how long they each take",
|
||||||
|
func=function(p)
|
||||||
|
table.sort(count)
|
||||||
|
table.sort(times)
|
||||||
|
minetest.chat_send_player(p,"counts:"..dump(count))
|
||||||
|
minetest.chat_send_player(p,"times:"..dump(times))
|
||||||
|
minetest.chat_send_player(p,"total abm time last interval:"..dump(total))
|
||||||
|
minetest.chat_send_player(p,"total abms registered:"..dump(#times))
|
||||||
|
end})
|
|
@ -0,0 +1,32 @@
|
||||||
|
-- This probably needs some hack to be loaded first.
|
||||||
|
-- It seems to be working at least to a degree though.
|
||||||
|
-- unlike abms globalsteps don't have a label attached
|
||||||
|
-- to them so unless we overwrite so the register
|
||||||
|
-- function we will have no idea where we're coming from.
|
||||||
|
|
||||||
|
local times={}
|
||||||
|
local total=0
|
||||||
|
local ngs=0
|
||||||
|
|
||||||
|
local oldgs=minetest.register_globalstep
|
||||||
|
function minetest.register_globalstep(func)
|
||||||
|
local n=debug.getinfo(2).short_src
|
||||||
|
ngs=ngs+1
|
||||||
|
oldgs(function(dtime)
|
||||||
|
local t1=os.clock()
|
||||||
|
local r=func(dtime)
|
||||||
|
times[n]=os.clock()-t1
|
||||||
|
total=total+times[n]
|
||||||
|
return r
|
||||||
|
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
|
minetest.register_chatcommand("gsp",{privs={debug=true},
|
||||||
|
description="Give an overview of the registered globalsteps and how long they each take",
|
||||||
|
func=function(p)
|
||||||
|
table.sort(times)
|
||||||
|
minetest.chat_send_player(p,"times:"..dump(times))
|
||||||
|
minetest.chat_send_player(p,"total globalstep time last interval:"..dump(total))
|
||||||
|
minetest.chat_send_player(p,"total globalsteps registered:"..dump(ngs))
|
||||||
|
end})
|
|
@ -0,0 +1 @@
|
||||||
|
depends=mcl_init
|
|
@ -0,0 +1,150 @@
|
||||||
|
local F = minetest.formspec_escape
|
||||||
|
|
||||||
|
-- Create a detached inventory
|
||||||
|
local inv_everything = minetest.create_detached_inventory("everything", {
|
||||||
|
allow_move = function(inv, from_list, from_index, to_list, to_index, count, player)
|
||||||
|
return 0
|
||||||
|
end,
|
||||||
|
allow_put = function(inv, listname, index, stack, player)
|
||||||
|
return 0
|
||||||
|
end,
|
||||||
|
allow_take = function(inv, listname, index, stack, player)
|
||||||
|
return -1
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
local inv_trash = minetest.create_detached_inventory("trash", {
|
||||||
|
allow_take = function(inv, listname, index, stack, player)
|
||||||
|
return 0
|
||||||
|
end,
|
||||||
|
allow_move = function(inv, from_list, from_index, to_list, to_index, count, player)
|
||||||
|
return 0
|
||||||
|
end,
|
||||||
|
on_put = function(inv, listname, index, stack, player)
|
||||||
|
inv:set_list("main", {})
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
inv_trash:set_size("main", 1)
|
||||||
|
|
||||||
|
local max_page = 1
|
||||||
|
|
||||||
|
local function get_chest_formspec(page)
|
||||||
|
local start = 0 + (page-1)*32
|
||||||
|
return "size[9,8.75]"..
|
||||||
|
"label[0,0;"..minetest.formspec_escape(minetest.colorize("#313131", "Goddess Chest")).."]"..
|
||||||
|
"list[detached:everything;main;0,0.5;9,3;"..start.."]"..
|
||||||
|
mcl_formspec.get_itemslot_bg(0,0.5,9,3)..
|
||||||
|
"button[0,3.5;1,1;mcl_chest_of_everything_prev;"..F("<").."]"..
|
||||||
|
"button[1,3.5;1,1;mcl_chest_of_everything_next;"..F(">").."]"..
|
||||||
|
"label[2,3.5;"..F("Page: "..page).."]"..
|
||||||
|
"list[current_player;main;0,4.5;9,3;9]"..
|
||||||
|
mcl_formspec.get_itemslot_bg(0,4.5,9,3)..
|
||||||
|
"list[current_player;main;0,7.74;9,1;]"..
|
||||||
|
mcl_formspec.get_itemslot_bg(0,7.74,9,1)..
|
||||||
|
"listring[detached:everything;main]"..
|
||||||
|
"listring[current_player;main]"
|
||||||
|
end
|
||||||
|
|
||||||
|
minetest.register_node("mcl_chest_of_everything:chest", {
|
||||||
|
description = "Chest of Everything" .. "\n" ..
|
||||||
|
"Grants access to all items",
|
||||||
|
tiles ={"chest_of_everything_chest.png^[sheet:2x2:0,0", "chest_of_everything_chest.png^[sheet:2x2:0,0",
|
||||||
|
"chest_of_everything_chest.png^[sheet:2x2:1,0", "chest_of_everything_chest.png^[sheet:2x2:1,0",
|
||||||
|
"chest_of_everything_chest.png^[sheet:2x2:1,0", "chest_of_everything_chest.png^[sheet:2x2:0,1"},
|
||||||
|
paramtype2 = "facedir",
|
||||||
|
groups = {dig_immediate=2,choppy=3},
|
||||||
|
is_ground_content = false,
|
||||||
|
on_construct = function(pos)
|
||||||
|
local meta = minetest.get_meta(pos)
|
||||||
|
meta:set_string("infotext", "Chest of Everything")
|
||||||
|
meta:set_int("page", 1)
|
||||||
|
meta:set_string("formspec", get_chest_formspec(1))
|
||||||
|
end,
|
||||||
|
on_receive_fields = function(pos, formname, fields, sender)
|
||||||
|
if formname == "" then
|
||||||
|
local meta = minetest.get_meta(pos)
|
||||||
|
local page = meta:get_int("page")
|
||||||
|
if fields.mcl_chest_of_everything_prev then
|
||||||
|
page = page - 1
|
||||||
|
elseif fields.mcl_chest_of_everything_next then
|
||||||
|
page = page + 1
|
||||||
|
end
|
||||||
|
if page < 1 then
|
||||||
|
page = 1
|
||||||
|
end
|
||||||
|
if page > max_page then
|
||||||
|
page = max_page
|
||||||
|
end
|
||||||
|
meta:set_int("page", page)
|
||||||
|
meta:set_string("formspec", get_chest_formspec(page))
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_on_mods_loaded(function()
|
||||||
|
local items = {}
|
||||||
|
for itemstring,_ in pairs(minetest.registered_items) do
|
||||||
|
if itemstring ~= "" and itemstring ~= "unknown" and itemstring ~= "ignore" then
|
||||||
|
local g=minetest.get_item_group(itemstring, "not_in_creative_inventory")
|
||||||
|
if g == 0 then
|
||||||
|
table.insert(items, itemstring)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
--[[ Sort items in this order:
|
||||||
|
* Chest of Everything
|
||||||
|
* Test tools
|
||||||
|
* Other tools
|
||||||
|
* Craftitems
|
||||||
|
* Other items
|
||||||
|
* Dummy items
|
||||||
|
* not in creative inv items]]
|
||||||
|
|
||||||
|
local function compare(item1, item2)
|
||||||
|
local def1 = minetest.registered_items[item1]
|
||||||
|
local def2 = minetest.registered_items[item2]
|
||||||
|
local tool1 = def1.type == "tool"
|
||||||
|
local tool2 = def2.type == "tool"
|
||||||
|
local testtool1 = minetest.get_item_group(item1, "testtool") == 1
|
||||||
|
local testtool2 = minetest.get_item_group(item2, "testtool") == 1
|
||||||
|
local dummy1 = minetest.get_item_group(item1, "dummy") == 1
|
||||||
|
local dummy2 = minetest.get_item_group(item2, "dummy") == 1
|
||||||
|
local craftitem1 = def1.type == "craft"
|
||||||
|
local craftitem2 = def2.type == "craft"
|
||||||
|
local nici1=minetest.get_item_group(item1, "not_in_creative_inventory")
|
||||||
|
local nici2=minetest.get_item_group(item2, "not_in_creative_inventory")
|
||||||
|
|
||||||
|
if item1 == "mcl_chest_of_everything:chest" then
|
||||||
|
return true
|
||||||
|
elseif item2 == "mcl_chest_of_everything:chest" then
|
||||||
|
return false
|
||||||
|
elseif dummy1 and not dummy2 then
|
||||||
|
return false
|
||||||
|
elseif not dummy1 and dummy2 then
|
||||||
|
return true
|
||||||
|
elseif testtool1 and not testtool2 then
|
||||||
|
return true
|
||||||
|
elseif not testtool1 and testtool2 then
|
||||||
|
return false
|
||||||
|
elseif tool1 and not tool2 then
|
||||||
|
return true
|
||||||
|
elseif not tool1 and tool2 then
|
||||||
|
return false
|
||||||
|
elseif craftitem1 and not craftitem2 then
|
||||||
|
return true
|
||||||
|
elseif not craftitem1 and craftitem2 then
|
||||||
|
return false
|
||||||
|
elseif nici1 and not nici2 then
|
||||||
|
return true
|
||||||
|
elseif not nici1 and nici2 then
|
||||||
|
return false
|
||||||
|
else
|
||||||
|
return item1 < item2
|
||||||
|
end
|
||||||
|
end
|
||||||
|
table.sort(items, compare)
|
||||||
|
inv_everything:set_size("main", #items)
|
||||||
|
max_page = math.ceil(#items / 32)
|
||||||
|
for i=1, #items do
|
||||||
|
inv_everything:add_item("main", items[i].." 1337")
|
||||||
|
end
|
||||||
|
end)
|
Binary file not shown.
After Width: | Height: | Size: 210 B |
|
@ -0,0 +1,58 @@
|
||||||
|
local S = minetest.get_translator("mcl_burning")
|
||||||
|
|
||||||
|
minetest.register_chatcommand("biome", {
|
||||||
|
params = "",
|
||||||
|
description = "Gets current biome",
|
||||||
|
privs = {debug = true},
|
||||||
|
func = function(name)
|
||||||
|
local player=minetest.get_player_by_name(name)
|
||||||
|
local biome=minetest.get_biome_data(player:get_pos())
|
||||||
|
local bname = minetest.get_biome_name(biome.biome)
|
||||||
|
minetest.chat_send_player(name,bname.. " " ..dump(biome))
|
||||||
|
end
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_chatcommand("burn", {
|
||||||
|
params = S("<playername> <duration> <reason>"),
|
||||||
|
description = S("Sets a player on fire for the given amount of seconds with the given reason."),
|
||||||
|
privs = { debug = true },
|
||||||
|
func = function(name, params)
|
||||||
|
local playername, duration, reason = params:match("^(.+) (.+) (.+)$")
|
||||||
|
if not (playername and duration and reason) then
|
||||||
|
return false, S("Error: Parameter missing.")
|
||||||
|
end
|
||||||
|
local player = minetest.get_player_by_name(playername)
|
||||||
|
if not player then
|
||||||
|
return false, S(
|
||||||
|
"Error: Player “@1” not found.",
|
||||||
|
playername
|
||||||
|
)
|
||||||
|
end
|
||||||
|
local duration_number = tonumber(duration)
|
||||||
|
-- Lua numbers are truthy
|
||||||
|
-- NaN is not equal to NaN
|
||||||
|
if not duration_number or (duration_number ~= duration_number) then
|
||||||
|
return false, S(
|
||||||
|
"Error: Duration “@1” is not a number.",
|
||||||
|
duration
|
||||||
|
)
|
||||||
|
end
|
||||||
|
if duration_number < 0 then
|
||||||
|
return false, S(
|
||||||
|
"Error: Duration “@1” is negative.",
|
||||||
|
duration
|
||||||
|
)
|
||||||
|
end
|
||||||
|
mcl_burning.set_on_fire(
|
||||||
|
player,
|
||||||
|
duration_number,
|
||||||
|
reason
|
||||||
|
)
|
||||||
|
return true, S(
|
||||||
|
"Set @1 on fire for @2s for the following reason: @3",
|
||||||
|
playername,
|
||||||
|
duration,
|
||||||
|
reason
|
||||||
|
)
|
||||||
|
end,
|
||||||
|
})
|
|
@ -0,0 +1,2 @@
|
||||||
|
name = mcl_devtest
|
||||||
|
author = cora
|
Loading…
Reference in New Issue