aboutsummaryrefslogtreecommitdiff
path: root/init.lua
diff options
context:
space:
mode:
Diffstat (limited to 'init.lua')
-rw-r--r--init.lua72
1 files changed, 72 insertions, 0 deletions
diff --git a/init.lua b/init.lua
new file mode 100644
index 0000000..df4b8c1
--- /dev/null
+++ b/init.lua
@@ -0,0 +1,72 @@
+--[[
+Copyright © 2012-2020 Hugo Locurcio and contributors.
+Copyright © 2024 Runxi Yu
+Licensed under the zlib license. See LICENSE.md for more information.
+--]]
+
+rxmin = {}
+
+local modpath = minetest.get_modpath("rxmin")
+
+local S = minetest.get_translator("rxmin")
+
+rxmin.drop_msg = function(itemstack, player)
+ local name = player:get_player_name()
+ minetest.chat_send_player(name, S("[rxmin] tools/nodes do not drop!"))
+end
+
+local pick_admin_toolcaps = {
+ full_punch_interval = 0.1,
+ max_drop_level = 3,
+ groupcaps = {
+ unbreakable = {times = {[1] = 0, [2] = 0, [3] = 0}, uses = 0, maxlevel = 5},
+ fleshy = {times = {[1] = 0, [2] = 0, [3] = 0}, uses = 0, maxlevel = 5},
+ choppy = {times = {[1] = 0, [2] = 0, [3] = 0}, uses = 0, maxlevel = 5},
+ bendy = {times = {[1] = 0, [2] = 0, [3] = 0}, uses = 0, maxlevel = 5},
+ cracky = {times = {[1] = 0, [2] = 0, [3] = 0}, uses = 0, maxlevel = 5},
+ crumbly = {times = {[1] = 0, [2] = 0, [3] = 0}, uses = 0, maxlevel = 5},
+ snappy = {times = {[1] = 0, [2] = 0, [3] = 0}, uses = 0, maxlevel = 5},
+ },
+ damage_groups = {fleshy = 1000},
+}
+
+minetest.register_tool("rxmin:pick_admin", {
+ description = S("Admin Pickaxe"),
+ range = 20,
+ inventory_image = "rxmin_adminpick.png",
+ groups = {not_in_creative_inventory = 0},
+ tool_capabilities = pick_admin_toolcaps,
+ on_drop = rxmin.drop_msg,
+})
+
+minetest.register_tool("rxmin:pick_admin_with_drops", {
+ description = S("Admin Pickaxe with Drops"),
+ range = 20,
+ inventory_image = "rxmin_adminpick_with_drops.png",
+ groups = {not_in_creative_inventory = 0},
+ tool_capabilities = pick_admin_toolcaps,
+ on_drop = rxmin.drop_msg,
+})
+
+minetest.register_on_punchnode(function(pos, node, puncher)
+ if puncher:get_wielded_item():get_name() == "rxmin:pick_admin"
+ and minetest.get_node(pos).name ~= "air" then
+ minetest.log(
+ "action",
+ puncher:get_player_name() ..
+ " digs " ..
+ minetest.get_node(pos).name ..
+ " at " ..
+ minetest.pos_to_string(pos) ..
+ " using an Admin Pickaxe."
+ )
+ -- The node is removed directly, which means it even works
+ -- on non-empty containers and group-less nodes
+ minetest.remove_node(pos)
+ -- Run node update actions like falling nodes
+ minetest.check_for_falling(pos)
+ end
+end)
+
+minetest.register_alias("adminpick", "rxmin:pick_admin")
+minetest.register_alias("adminpickdrops", "rxmin:pick_admin_with_drops")