superpick-cd2025/init.lua
HybridDog ea7e71a7d0 automatic update
Former-commit-id: ab1b9629a6862925407c285d38b867b3a0b3e8fb
Former-commit-id: f91eb380c0feeadd55bd3caddef0ee736c0db84c
2014-08-09 23:49:45 +02:00

113 lines
3.3 KiB
Lua

if minetest.setting_getbool("creative_mode") then
local load_time_start = os.clock()
local function add_to_inv(puncher, node)
local inv = puncher:get_inventory()
if inv then
if not inv:contains_item("main", node) then
inv:add_item("main", node)
end
end
end
minetest.register_tool(":creative:pick", {
description = "LX 113",
inventory_image = "superpick.png",
wield_scale = {x=2,y=2,z=2},
liquids_pointable = true,
range = 14,
tool_capabilities = {
full_punch_interval = 0,
max_drop_level=3,
groupcaps={
unbreakable={times={[1]=0, [2]=0, [3]=0}, uses=0, maxlevel=3},
fleshy = {times={[1]=0, [2]=0, [3]=0}, uses=0, maxlevel=3},
choppy={times={[1]=0, [2]=0, [3]=0}, uses=0, maxlevel=3},
bendy={times={[1]=0, [2]=0, [3]=0}, uses=0, maxlevel=3},
cracky={times={[1]=0, [2]=0, [3]=0}, uses=0, maxlevel=3},
crumbly={times={[1]=0, [2]=0, [3]=0}, uses=0, maxlevel=3},
snappy={times={[1]=0, [2]=0, [3]=0}, uses=0, maxlevel=3},
level={times={[1]=0, [2]=0, [3]=0}, uses=0, maxlevel=3},
},
damage_groups = {fleshy = 20},
},
on_place = function(itemstack, placer, pointed_thing)
if( placer == nil or pointed_thing == nil) then
return
end
local pname = placer:get_player_name()
local pos = minetest.get_pointed_thing_position(pointed_thing, under)
local node = minetest.get_node_or_nil(pos)
if not node then
minetest.chat_send_player(pname, "?")
return
end
local pcontrol = placer:get_player_control()
if pcontrol.down
and pcontrol.up then
add_to_inv(placer, node)
return
end
local nam = node.name
local par1 = node.param1
local par2 = node.param2
if par1 == 0
and par2 == 0 then
a = " "
else
a = par1
end
if par2 == 0 then
b = ""
else
b = par2
end
local m = nam.." "..a.." "..b
if pcontrol.sneak
and pcontrol.aux1
and not pcontrol.up then
m = m..' '..dump(minetest.registered_nodes[nam])
end
print("[superpick] "..m)
minetest.sound_play("superpick", {pos = pos, gain = 0.9, max_hear_distance = 10})
minetest.chat_send_player(pname, m)
end,
})
minetest.register_on_punchnode(function(pos, node, puncher)
if puncher:get_wielded_item():get_name() == "creative:pick"
and node.name ~= "air" then
minetest.after(0.3, function(pos, name)
if minetest.get_node(pos).name ~= "air"
and not minetest.is_protected(pos, name) then
print("[superpick] force destroying node at ("..pos.x.."|"..pos.y.."|"..pos.z..")")
minetest.remove_node(pos)
end
end, pos, puncher:get_player_name())
add_to_inv(puncher, node)
end
end)
local function cleaninventory(name)
if name == nil
or name == "" then
return
end
minetest.get_player_by_name(name):
get_inventory():
set_list("main", {
[1] = "creative:pick",
})
print("[superpick] "..name.." has cleaned his inventory at "..string.sub(assert(io.popen("date +'%H:%M'"):read("*a"), "failedd"), 1, -2))
minetest.chat_send_player(name, 'Inventory Cleaned!')
end
minetest.register_chatcommand('cleaninv',{
description = 'Tidy up your inventory.',
params = "",
privs = {},
func = cleaninventory
})
print(string.format("[superpick] loaded after ca. %.2fs", os.clock() - load_time_start))
end