mirror of
https://github.com/sys4-fr/server-nalc.git
synced 2025-06-28 14:16:06 +02:00
[default] Upate to upstream, move some edits out to [_misc]
This commit is contained in:
85
mods/_misc/carbone_init.lua
Normal file
85
mods/_misc/carbone_init.lua
Normal file
@ -0,0 +1,85 @@
|
||||
-- Code below by Casimir.
|
||||
|
||||
minetest.after(1, function()
|
||||
local i = 0
|
||||
local number = 0
|
||||
for name, item in pairs(minetest.registered_items) do
|
||||
if (name and name ~= "") then
|
||||
number = number + 1
|
||||
end
|
||||
i = i + 1
|
||||
end
|
||||
minetest.log("action", "There are " .. number .. " registered nodes, items and tools.")
|
||||
end)
|
||||
|
||||
minetest.register_on_joinplayer(function(player)
|
||||
minetest.sound_play("player_join", {gain = 0.75})
|
||||
player:set_physics_override({
|
||||
sneak_glitch = false, -- Climable blocks are quite fast in Carbone.
|
||||
})
|
||||
end)
|
||||
|
||||
minetest.register_on_leaveplayer(function(player)
|
||||
minetest.sound_play("player_leave", {gain = 1})
|
||||
end)
|
||||
|
||||
minetest.register_on_respawnplayer(function(player)
|
||||
player:set_eye_offset({x = 0, y = 0, z = 0}, {x = 0, y = 0, z = 0})
|
||||
local pos = player:getpos()
|
||||
-- minetest.sound_play("player_join", {pos = pos, gain = 0.5})
|
||||
end)
|
||||
|
||||
minetest.register_on_item_eat(function(hp_change, replace_with_item, itemstack, user, pointed_thing)
|
||||
if user:get_hp() >= 20 then return end
|
||||
local pos = user:getpos()
|
||||
minetest.sound_play("health_gain", {pos = pos, gain = 0.4})
|
||||
end)
|
||||
|
||||
minetest.log("action", "") -- Empty line.
|
||||
minetest.log("action", "") -- Empty line.
|
||||
|
||||
if minetest.setting_getbool("creative_mode") then
|
||||
minetest.log("action", "Creative mode is enabled.")
|
||||
else
|
||||
minetest.log("action", "Creative mode is disabled.")
|
||||
end
|
||||
|
||||
if minetest.setting_getbool("enable_damage") then
|
||||
minetest.log("action", "Damage is enabled.")
|
||||
else
|
||||
minetest.log("action", "Damage is disabled.")
|
||||
end
|
||||
|
||||
if minetest.setting_getbool("enable_pvp") then
|
||||
minetest.log("action", "PvP is enabled.")
|
||||
else
|
||||
minetest.log("action", "PvP is disabled.")
|
||||
end
|
||||
|
||||
if not minetest.is_singleplayer() and minetest.setting_getbool("server_announce") then
|
||||
minetest.log("action", "") -- Empty line.
|
||||
minetest.log("action", "Server name: " .. minetest.setting_get("server_name") or "(none)")
|
||||
minetest.log("action", "Server description: " .. minetest.setting_get("server_description") or "(none)")
|
||||
minetest.log("action", "Server URL: " .. minetest.setting_get("server_address") or "(none)")
|
||||
minetest.log("action", "MOTD: " .. minetest.setting_get("motd") or "(none)")
|
||||
minetest.log("action", "Maximum users: " .. minetest.setting_get("max_users") or 15)
|
||||
end
|
||||
|
||||
minetest.log("action", "") -- Empty line.
|
||||
minetest.log("action", "") -- Empty line.
|
||||
|
||||
-- Reserved slot handling:
|
||||
|
||||
minetest.register_on_prejoinplayer(function(name, ip)
|
||||
local admin_slots = minetest.setting_get('admin_slots') or 2
|
||||
if #minetest.get_connected_players() >= (minetest.setting_get('max_users') - admin_slots)
|
||||
and not minetest.check_player_privs(name, {server = true}) then
|
||||
return "Sorry, " .. admin_slots .. " slots are reserved for administrators."
|
||||
end
|
||||
end)
|
||||
|
||||
|
||||
if minetest.setting_getbool("log_mods") then
|
||||
-- Highlight the default mod in the mod loading logs:
|
||||
minetest.log("action", "Carbone: * [default] loaded.")
|
||||
end
|
190
mods/_misc/commands.lua
Executable file
190
mods/_misc/commands.lua
Executable file
@ -0,0 +1,190 @@
|
||||
minetest.register_privilege("physics", {
|
||||
description = "Allows player to set their gravity, jump height and movement speed"})
|
||||
|
||||
-- Infotool code by PilzAdam:
|
||||
minetest.register_craftitem(":default:infotool", {
|
||||
description = "Infotool",
|
||||
inventory_image = "default_infotool.png",
|
||||
wield_image = "default_infotool.png^[transformR90",
|
||||
groups = {not_in_creative_inventory = 1},
|
||||
on_use = function(_, user, pt)
|
||||
if pt.type ~= "node" then return end
|
||||
local nn = minetest.get_node(pt.under).name
|
||||
if minetest.registered_items[nn] == nil or minetest.registered_items[nn].tiles == nil or type(minetest.registered_items[nn].tiles[1]) ~= "string" then return end
|
||||
local def = minetest.registered_nodes[nn]
|
||||
if not def then return end
|
||||
|
||||
local textures = def.tiles
|
||||
local description = def.description
|
||||
if not textures then
|
||||
textures = {"(no texture)"}
|
||||
end
|
||||
if not description then
|
||||
description = {"(no description)"}
|
||||
end
|
||||
for i = 1,6 do
|
||||
if not textures[i] then
|
||||
textures[i] = textures[i-1]
|
||||
end
|
||||
end
|
||||
local dir = vector.subtract(pt.above, pt.under)
|
||||
local index
|
||||
-- This doesn't work for facedir or other drawtypes yet.
|
||||
if dir.y == 1 then
|
||||
index = 1
|
||||
elseif dir.y == -1 then
|
||||
index = 2
|
||||
else
|
||||
if dir.x == 1 then
|
||||
index = 3
|
||||
elseif dir.x == -1 then
|
||||
index = 4
|
||||
else
|
||||
if dir.z == 1 then
|
||||
index = 5
|
||||
else
|
||||
index = 6
|
||||
end
|
||||
end
|
||||
end
|
||||
minetest.chat_send_player(user:get_player_name(), description .. ": " .. nn .. " (" .. textures[index] .. ")")
|
||||
end,
|
||||
})
|
||||
|
||||
minetest.register_chatcommand("info", {
|
||||
description = "Gives an Infotool, click to receive information on the pointed node",
|
||||
func = function(name)
|
||||
local receiverref = minetest.get_player_by_name(name)
|
||||
receiverref:get_inventory():add_item("main", "default:infotool")
|
||||
minetest.chat_send_player(name, "\"default:infotool\" added to inventory.")
|
||||
end,
|
||||
})
|
||||
|
||||
minetest.register_chatcommand("clearinventory", {
|
||||
params = "<inventory>",
|
||||
description = "Clears an entire inventory, \"main\" if unspecified, \"craft\" is another possible choice",
|
||||
func = function(name, param)
|
||||
local player = minetest.get_player_by_name(name)
|
||||
local player_inv = player:get_inventory()
|
||||
if not player then
|
||||
minetest.log("error", "Unable to clear inventory, no player.")
|
||||
return false, "Unable to clear inventory, no player."
|
||||
end
|
||||
if param == "" then
|
||||
player_inv:set_list("main", {})
|
||||
return true, "Inventory \"main\" cleared."
|
||||
else
|
||||
player_inv:set_list(param, {})
|
||||
return true, "Inventory \"" .. param .. "\" cleared."
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
-- The following commands /whoami, /suicide, /speed, /gravity and /jump by Wuzzy:
|
||||
minetest.register_chatcommand("whoami", {
|
||||
params = "",
|
||||
description = "Tells your name",
|
||||
privs = {},
|
||||
func = function(name)
|
||||
minetest.chat_send_player(name, "Your name is: " .. name)
|
||||
end,
|
||||
})
|
||||
|
||||
minetest.register_chatcommand("ip", {
|
||||
params = "",
|
||||
description = "Shows your IP address",
|
||||
privs = {},
|
||||
func = function(name)
|
||||
minetest.chat_send_player(name, "Your IP address is: "..minetest.get_player_ip(name))
|
||||
end
|
||||
})
|
||||
|
||||
minetest.register_chatcommand("suicide", {
|
||||
params = "",
|
||||
description = "Kills yourself",
|
||||
func = function(name, param)
|
||||
local player = minetest.get_player_by_name(name)
|
||||
if not player then return end
|
||||
player:set_hp(0)
|
||||
if minetest.setting_getbool("enable_damage") == false then
|
||||
minetest.chat_send_player(name, "[X] Damage is disabled on this server.")
|
||||
else
|
||||
minetest.chat_send_player(name, "[X] You suicided.")
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
minetest.register_chatcommand("speed", {
|
||||
params = "[speed]",
|
||||
description = "Sets your movement speed (defaults to 1).",
|
||||
privs = {physics = true},
|
||||
func = function(name, speed)
|
||||
local player = minetest.get_player_by_name(name)
|
||||
if not player then return end
|
||||
if speed == "" then speed = 1 end
|
||||
if type(tonumber(speed)) ~= "number"
|
||||
or tonumber(speed) < 0
|
||||
or tonumber(speed) > 10 then
|
||||
minetest.chat_send_player(name, "[~] Speed must be between 0.0 and 10.0.")
|
||||
return
|
||||
end
|
||||
|
||||
player:set_physics_override(tonumber(speed), nil, nil)
|
||||
minetest.chat_send_player(name, "[~] Speed set to " .. tonumber(speed) * 100 .. " %.")
|
||||
end,
|
||||
})
|
||||
|
||||
minetest.register_chatcommand("gravity", {
|
||||
params = "[gravity]",
|
||||
description = "Sets your gravity (defaults to 1).",
|
||||
privs = {physics = true},
|
||||
func = function(name, gravity)
|
||||
local player = minetest.get_player_by_name(name)
|
||||
if not player then return end
|
||||
if gravity == "" then gravity = 1 end
|
||||
if type(tonumber(gravity)) ~= "number"
|
||||
or tonumber(gravity) < -10
|
||||
or tonumber(gravity) > 10 then
|
||||
minetest.chat_send_player(name, "[~] Gravity must be between -10.0 and 10.0.")
|
||||
return
|
||||
end
|
||||
|
||||
player:set_physics_override(nil, nil, tonumber(gravity))
|
||||
minetest.chat_send_player(name, "[~] Gravity set to " .. tonumber(gravity) * 100 .. " %.")
|
||||
end,
|
||||
})
|
||||
|
||||
minetest.register_chatcommand("jump", {
|
||||
params = "[height]",
|
||||
description = "Sets your jump height (defaults to 1)",
|
||||
privs = {physics = true},
|
||||
func = function(name, jump)
|
||||
local player = minetest.get_player_by_name(name)
|
||||
if not player then return end
|
||||
if jump == "" then jump = 1 end
|
||||
if type(tonumber(jump)) ~= "number"
|
||||
or tonumber(jump) < 0
|
||||
or tonumber(jump) > 10 then
|
||||
minetest.chat_send_player(name, "[~] Jump height must be between 0.0 and 10.0.")
|
||||
return
|
||||
end
|
||||
|
||||
player:set_physics_override(nil, tonumber(jump), nil)
|
||||
minetest.chat_send_player(name, "[~] Jump height set to " .. tonumber(jump) * 100 .. " %.")
|
||||
end,
|
||||
})
|
||||
|
||||
minetest.register_chatcommand("hotbar", {
|
||||
params = "[size]",
|
||||
description = "Sets the size of your hotbar",
|
||||
func = function(name, slots)
|
||||
if slots == "" then slots = 16 end
|
||||
if type(tonumber(slots)) ~= "number" or tonumber(slots) < 1 or tonumber(slots) > 23 then
|
||||
minetest.chat_send_player(name, "[_] Hotbar size must be between 1 and 23.")
|
||||
return
|
||||
end
|
||||
local player = minetest.get_player_by_name(name)
|
||||
player:hud_set_hotbar_itemcount(tonumber(slots))
|
||||
minetest.chat_send_player(name, "[_] Hotbar size set to " .. tonumber(slots) .. ".")
|
||||
end,
|
||||
})
|
8
mods/_misc/forbid_underwater_torch.lua
Normal file
8
mods/_misc/forbid_underwater_torch.lua
Normal file
@ -0,0 +1,8 @@
|
||||
minetest.register_on_placenode(function(pos, newnode, placer, oldnode, itemstack, pointed_thing)
|
||||
if newnode.name ~= "default:torch" or minetest.get_item_group(oldnode.name, "water") == 0 then
|
||||
return
|
||||
end
|
||||
minetest.remove_node(pos, newnode)
|
||||
minetest.set_node(pos, oldnode)
|
||||
minetest.add_item(pos, "default:torch")
|
||||
end)
|
@ -4,6 +4,11 @@
|
||||
|
||||
local cwd = minetest.get_modpath("_misc")
|
||||
|
||||
-- Code extracted from edits done in the default mod
|
||||
dofile(cwd.."/carbone_init.lua")
|
||||
dofile(cwd.."/commands.lua")
|
||||
dofile(cwd.."/forbid_underwater_torch.lua")
|
||||
|
||||
-- Give initial stuff
|
||||
dofile(cwd.."/give_initial_stuff.lua")
|
||||
|
||||
|
BIN
mods/_misc/sounds/player_join.ogg
Executable file
BIN
mods/_misc/sounds/player_join.ogg
Executable file
Binary file not shown.
BIN
mods/_misc/sounds/player_leave.ogg
Executable file
BIN
mods/_misc/sounds/player_leave.ogg
Executable file
Binary file not shown.
BIN
mods/_misc/textures/default_infotool.png
Executable file
BIN
mods/_misc/textures/default_infotool.png
Executable file
Binary file not shown.
After Width: | Height: | Size: 125 B |
Reference in New Issue
Block a user