106 lines
3.1 KiB
Lua
106 lines
3.1 KiB
Lua
-- Jail Mod
|
|
-- By kaeza and RAPHAEL (mostly kaeza)
|
|
-- license: whatever
|
|
|
|
minetest.register_privilege("jail", { description = "Allows one to send/release prisoners" })
|
|
|
|
local jailpos = { x = -517, y = 36, z = 169 }
|
|
|
|
local players_in_jail = { };
|
|
|
|
minetest.register_chatcommand("jail", {
|
|
params = "<player>",
|
|
description = "Sends a player to Jail",
|
|
privs = {jail=true},
|
|
func = function ( name, param )
|
|
local player = minetest.env:get_player_by_name(param)
|
|
if (player) then
|
|
players_in_jail[param] = player;
|
|
player:setpos(jailpos)
|
|
minetest.chat_send_player(param, "You have been sent to jail")
|
|
minetest.chat_send_all(""..param.." has been sent to jail by "..name.."")
|
|
end
|
|
end,
|
|
})
|
|
|
|
|
|
local releasepos = { x = -512, y = 36, z = 169 }
|
|
|
|
minetest.register_chatcommand("release", {
|
|
params = "<player>",
|
|
description = "Releases a player from Jail",
|
|
privs = {jail=true},
|
|
func = function ( name, param )
|
|
if (param == "") then return end
|
|
local player = minetest.env:get_player_by_name(param)
|
|
players_in_jail[param] = nil;
|
|
if (player) then
|
|
player:setpos(releasepos)
|
|
minetest.chat_send_player(param, "You have been released from jail")
|
|
minetest.chat_send_all(""..param.." has been released from jail by "..name.."")
|
|
end
|
|
end,
|
|
})
|
|
|
|
local function do_teleport ( )
|
|
for name, player in pairs(players_in_jail) do
|
|
player:setpos(jailpos)
|
|
end
|
|
minetest.after(30, do_teleport)
|
|
end
|
|
minetest.after(30, do_teleport)
|
|
|
|
minetest.register_alias("wardenpick", "jail:pick_warden")
|
|
|
|
minetest.register_node("jail:jailwall", {
|
|
description = "Unbreakable Jail Wall",
|
|
tile_images = {"jail_wall.png"},
|
|
is_ground_content = true,
|
|
groups = {unbreakable=1},
|
|
-- sounds = default.node_sound_stone_defaults(),
|
|
})
|
|
|
|
minetest.register_node("jail:glass", {
|
|
description = "Unbreakable Jail Glass",
|
|
drawtype = "glasslike",
|
|
tile_images = {"jail_glass.png"},
|
|
paramtype = "light",
|
|
sunlight_propagates = true,
|
|
is_ground_content = true,
|
|
groups = {unbreakable=1},
|
|
-- sounds = default.node_sound_glass_defaults(),
|
|
})
|
|
|
|
minetest.register_node("jail:ironbars", {
|
|
drawtype = "fencelike",
|
|
tiles = {"jail_ironbars.png"},
|
|
inventory_image = "jail_ironbars.png",
|
|
light_propagates = true,
|
|
paramtype = "light",
|
|
is_ground_content = true,
|
|
selection_box = {
|
|
type = "fixed",
|
|
fixed = {-1/7, -1/2, -1/7, 1/7, 1/2, 1/7},
|
|
},
|
|
groups = {unbreakable=1},
|
|
-- sounds = default.node_sound_stone_defaults(),
|
|
})
|
|
|
|
minetest.register_tool("jail:pick_warden", {
|
|
description = "Warden Pickaxe",
|
|
inventory_image = "jail_wardenpick.png",
|
|
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},
|
|
}
|
|
},
|
|
})
|