195 lines
7.2 KiB
Lua
195 lines
7.2 KiB
Lua
|
|
--
|
|
-- Admin Tool
|
|
--
|
|
local function clear_objects(itemstack, placer, pointed_thing)
|
|
local pos = placer:get_pos()
|
|
for _, obj in pairs(minetest.get_objects_inside_radius(pos, 3)) do
|
|
if not obj:is_player() then
|
|
obj:remove()
|
|
end
|
|
end
|
|
end
|
|
|
|
local function remove_node(itemstack, placer, pointed_thing)
|
|
if minetest.check_player_privs(placer:get_player_name(), "creative") then
|
|
if pointed_thing.type == "node" then
|
|
local pos = pointed_thing.under
|
|
minetest.remove_node(pos)
|
|
tubelib2.del_mem(pos)
|
|
techage.del_mem(pos)
|
|
minetest.get_meta(pos):from_table(nil)
|
|
end
|
|
else
|
|
minetest.chat_send_player(placer:get_player_name(), "You don't have 'creative' privs!")
|
|
end
|
|
end
|
|
|
|
minetest.register_node("myblocks:mytool1", {
|
|
description = "Admin Tool1",
|
|
inventory_image = "myblocks_tool.png",
|
|
wield_image = "myblocks_tool.png",
|
|
use_texture_alpha = myblocks.CLIP,
|
|
liquids_pointable = true,
|
|
groups = {cracky=1, book=1},
|
|
on_use = remove_node,
|
|
on_place = clear_objects,
|
|
on_secondary_use = clear_objects,
|
|
node_placement_prediction = "",
|
|
stack_max = 1,
|
|
})
|
|
|
|
|
|
local function read_data(itemstack, placer, pointed_thing)
|
|
if minetest.check_player_privs(placer:get_player_name(), "superminer") then
|
|
if pointed_thing.type == "node" then
|
|
local pos = pointed_thing.under
|
|
local mem = techage.get_mem(pos)
|
|
local tl2 = tubelib2.get_mem(pos)
|
|
local nvm = techage.get_nvm(pos)
|
|
local meta = minetest.get_meta(pos)
|
|
local node = minetest.get_node(pos)
|
|
if node.name == "protector:protect" or node.name == "protector:protect2" then
|
|
local owner = meta:get_string("owner")
|
|
local members = meta:get_string("members")
|
|
if members ~= "" then
|
|
local names = {}
|
|
for _,s in ipairs(string.split(members, " ")) do
|
|
names[s] = true
|
|
end
|
|
sections.protect_area(pos, placer:get_player_name(), owner, names)
|
|
else
|
|
sections.protect_area(pos, placer:get_player_name(), owner)
|
|
end
|
|
minetest.remove_node(pos)
|
|
return
|
|
end
|
|
--minetest.swap_node(pos, node) was soll das hier?
|
|
local ndef = minetest.registered_nodes[node.name] or minetest.registered_items[node.name] or minetest.registered_craftitems[node.name]
|
|
local number = techage and techage.get_node_number(pos)
|
|
local tdata
|
|
if number then
|
|
tdata = techage.get_node_info(number) or {}
|
|
print(number, dump(tdata))
|
|
tdata.number = number
|
|
--tdata = "nope"
|
|
else
|
|
tdata = "nope"
|
|
end
|
|
minetest.chat_send_player(placer:get_player_name(), "#############################################")
|
|
minetest.chat_send_player(placer:get_player_name(), "mem: "..dump(mem))
|
|
minetest.chat_send_player(placer:get_player_name(), "nvm: "..dump(nvm))
|
|
minetest.chat_send_player(placer:get_player_name(), "node: "..dump(node))
|
|
minetest.chat_send_player(placer:get_player_name(), "meta: "..dump(meta:to_table()))
|
|
minetest.chat_send_player(placer:get_player_name(), "techage: "..dump(tdata))
|
|
minetest.chat_send_player(placer:get_player_name(), "###### [F10] ######")
|
|
|
|
print("#############################################")
|
|
print("mem: "..dump(mem))
|
|
print("tlib2: "..dump(tl2))
|
|
print("nvm: "..dump(nvm))
|
|
print("node: "..dump(node))
|
|
print("meta: "..dump(meta:to_table()))
|
|
print("techage: "..dump(tdata))
|
|
if ndef and ndef.networks then
|
|
print("networks: "..dump(ndef.networks))
|
|
end
|
|
elseif pointed_thing.type == "object" then
|
|
local object = pointed_thing.ref
|
|
local pos = object:get_pos()
|
|
local properties = object:get_properties()
|
|
|
|
if object:is_player() then
|
|
local name = object:get_player_name()
|
|
local meta = object:get_meta()
|
|
local physics_override = object:get_physics_override()
|
|
local eye_offset = object:get_eye_offset()
|
|
local info = minetest.get_player_information(name) or {}
|
|
info.address = nil -- Don't show the IP address to respect the GDPR
|
|
|
|
minetest.chat_send_player(placer:get_player_name(), "#############################################")
|
|
minetest.chat_send_player(placer:get_player_name(), "pos: "..dump(pos))
|
|
minetest.chat_send_player(placer:get_player_name(), "player name: "..name)
|
|
minetest.chat_send_player(placer:get_player_name(), "properties: "..dump(properties))
|
|
minetest.chat_send_player(placer:get_player_name(), "meta: "..dump(meta:to_table()))
|
|
minetest.chat_send_player(placer:get_player_name(), "physics override: "..dump(physics_override))
|
|
minetest.chat_send_player(placer:get_player_name(), "eye offset: "..dump(eye_offset))
|
|
minetest.chat_send_player(placer:get_player_name(), "player information: "..dump(info))
|
|
minetest.chat_send_player(placer:get_player_name(), "###### [F10] ######")
|
|
|
|
print("#############################################")
|
|
print("pos: "..dump(pos))
|
|
print("player name: "..name)
|
|
print("properties: "..dump(properties))
|
|
print("meta: "..dump(meta:to_table()))
|
|
print("physics override: "..dump(physics_override))
|
|
print("eye offset: "..dump(eye_offset))
|
|
print("player information: "..dump(info))
|
|
print("###### [F10] ######")
|
|
elseif object.get_luaentity then
|
|
local entity = object:get_luaentity()
|
|
|
|
minetest.chat_send_player(placer:get_player_name(), "#############################################")
|
|
minetest.chat_send_player(placer:get_player_name(), "pos: "..dump(pos))
|
|
minetest.chat_send_player(placer:get_player_name(), "entity: "..dump(entity))
|
|
minetest.chat_send_player(placer:get_player_name(), "properties: "..dump(properties))
|
|
minetest.chat_send_player(placer:get_player_name(), "###### [F10] ######")
|
|
|
|
print("#############################################")
|
|
print("pos: "..dump(pos))
|
|
print("entity: "..dump(entity))
|
|
print("properties: "..dump(properties))
|
|
print("###### [F10] ######")
|
|
end
|
|
end
|
|
else
|
|
minetest.chat_send_player(placer:get_player_name(), "You don't have 'superminer' privs!")
|
|
end
|
|
end
|
|
|
|
local function show_protection_blocks(itemstack, placer, pointed_thing)
|
|
local pos = placer:get_pos()
|
|
local pos1 = {x = pos.x - 20, y = pos.y - 20, z = pos.z - 20}
|
|
local pos2 = {x = pos.x + 20, y = pos.y + 20, z = pos.z + 20}
|
|
local blocks = {"protector:protect", "protector:protect2", "protector:protect3"}
|
|
local cnt = 0
|
|
local name = placer:get_player_name()
|
|
for _, pos3 in ipairs(minetest.find_nodes_in_area(pos1, pos2, blocks)) do
|
|
techage.mark_position(name, pos3, "protect", "#FFFFFF", 10)
|
|
cnt = cnt + 1
|
|
end
|
|
minetest.chat_send_player(name, cnt.." blocks found")
|
|
end
|
|
|
|
minetest.register_node("myblocks:mytool2", {
|
|
description = "Admin Tool2",
|
|
inventory_image = "myblocks_mytool2.png",
|
|
wield_image = "myblocks_mytool2.png",
|
|
liquids_pointable = true,
|
|
use_texture_alpha = myblocks.CLIP,
|
|
groups = {cracky=1, book=1},
|
|
on_use = read_data,
|
|
on_place = read_data,
|
|
on_secondary_use = show_protection_blocks,
|
|
node_placement_prediction = "",
|
|
stack_max = 1,
|
|
})
|
|
|
|
|
|
minetest.register_chatcommand("sort", {
|
|
description = "Sort the player inventory in alphabetical order",
|
|
func = function(name, param)
|
|
local inv = minetest.get_inventory({type="player", name=name})
|
|
local list = inv:get_list("main")
|
|
table.sort(list, function (a, b)
|
|
local name_a = a:get_name()
|
|
local name_b = b:get_name()
|
|
if name_a == "" and name_b ~= "" then return false end
|
|
if name_a ~= "" and name_b == "" then return true end
|
|
return string.lower(name_a) < string.lower(name_b)
|
|
end)
|
|
inv:set_list("main", list)
|
|
end
|
|
})
|
|
|