Remove the warning system

Warnings were a moderator tool layered on top of reports and had no
callers left outside their own command and the player list button. The
legacy module, its config and locale, the exp_scenario command and its
permissions, the discord alert block and the player list button are all
removed. Reporting from the player list no longer depends on whether the
player could give warnings, anyone can report a player who is not immune.
This commit is contained in:
bbassie
2026-09-05 19:22:37 +00:00
parent 810269971b
commit a59b2a8414
21 changed files with 2 additions and 644 deletions
-96
View File
@@ -1,96 +0,0 @@
--[[-- Commands - Warnings
Adds a commands that allow admins to warn other players
]]
local Commands = require("modules/exp_commands")
local format_player_name = Commands.format_player_name_locale
local Warnings = require("modules.exp_legacy.modules.control.warnings") --- @dep modules.control.warnings
local config = require("modules.exp_legacy.config.warnings") --- @dep config.warnings
--- Gives a warning to a player; may lead to automatic script action.
Commands.new("create-warning", { "exp-commands_warnings.description-create" })
:argument("player", { "exp-commands_warnings.arg-player-create" }, Commands.types.lower_role_player)
:argument("reason", { "exp-commands_warnings.arg-reason" }, Commands.types.string)
:enable_auto_concatenation()
:add_aliases{ "warn" }
:add_flags{ "admin_only" }
:register(function(player, other_player, reason)
--- @cast other_player LuaPlayer
--- @cast reason string
Warnings.add_warning(other_player, player.name, reason)
local player_name = format_player_name(player)
local other_player_name = format_player_name(other_player)
game.print{ "exp-commands_warnings.create", other_player_name, player_name, reason }
end)
--- Gets a list of all warnings that a player has on them. If no player then lists all players and the number of warnings on them.
Commands.new("get-warnings", { "exp-commands_warnings.description-get" })
:optional("player", { "exp-commands_warnings.arg-player-get" }, Commands.types.player)
:add_aliases{ "warnings" }
:add_flags{ "admin_only" }
:register(function(player, other_player)
--- @cast other_player LuaPlayer?
if other_player then
local warnings = Warnings.get_warnings(player)
local script_warnings = Warnings.get_script_warnings(player)
local other_player_name = format_player_name(other_player)
Commands.print{ "exp-commands_warnings.player-title", other_player_name, #warnings, #script_warnings, config.script_warning_limit }
for _, warning in pairs(warnings) do
local by_player_name_formatted = format_player_name(warning.by_player_name)
Commands.print{ "exp-commands_warnings.list-element-player", by_player_name_formatted, warning.reason }
end
else
local warnings = Warnings.user_warnings:get_all()
local script_warnings = Warnings.user_script_warnings
Commands.print{ "exp-commands_warnings.warnings-title" }
for player_name, player_warnings in pairs(warnings) do
local player_name_formatted = format_player_name(player_name)
local script_warning_count = script_warnings[player_name] and #script_warnings[player_name] or 0
Commands.print{ "exp-commands_warnings.list-element", player_name_formatted, #player_warnings, script_warning_count, config.script_warning_limit }
end
for player_name, player_warnings in pairs(script_warnings) do
if not warnings[player_name] then
local player_name_formatted = format_player_name(player_name)
Commands.print{ "exp-commands_warnings.list-element", player_name_formatted, 0, #player_warnings, config.script_warning_limit }
end
end
end
end)
--- Clears all warnings from a player
Commands.new("clear-warnings", { "exp-commands_warnings.description-clear" })
:argument("player", { "exp-commands_warnings.arg-player-clear" }, Commands.types.player)
:add_flags{ "admin_only" }
:register(function(player, other_player)
--- @cast other_player LuaPlayer
Warnings.clear_warnings(other_player, player.name)
Warnings.clear_script_warnings(other_player)
local player_name = format_player_name(player)
local other_player_name = format_player_name(other_player)
game.print{ "exp-commands_warnings.cleared", other_player_name, player_name }
end)
--- Clears all script warnings from a player
Commands.new("clear-script-warnings", { "exp-commands_warnings.description-clear-script" })
:argument("player", { "exp-commands_warnings.arg-player-clear" }, Commands.types.player)
:add_flags{ "admin_only" }
:register(function(player, other_player)
--- @cast other_player LuaPlayer
Warnings.clear_script_warnings(other_player)
local player_name = format_player_name(player)
local other_player_name = format_player_name(other_player)
game.print{ "exp-commands_warnings.cleared-script", other_player_name, player_name }
end)
--- Clears the last warning that was given to a player
Commands.new("clear-last-warnings", { "exp-commands_warnings.description-clear-last" })
:argument("player", { "exp-commands_warnings.arg-player-clear" }, Commands.types.player)
:add_flags{ "admin_only" }
:register(function(player, other_player)
--- @cast other_player LuaPlayer
Warnings.remove_warning(other_player, player.name)
local player_name = format_player_name(player)
local other_player_name = format_player_name(other_player)
game.print{ "exp-commands_warnings.cleared-last", other_player_name, player_name }
end)
-1
View File
@@ -38,7 +38,6 @@ require("modules/exp_scenario/commands/surface")
require("modules/exp_scenario/commands/teleport")
require("modules/exp_scenario/commands/trains")
require("modules/exp_scenario/commands/vlayer")
require("modules/exp_scenario/commands/warnings")
require("modules/exp_scenario/commands/waterfill")
--- Control
@@ -131,40 +131,6 @@ if config.player_reports then
end
end
--- Warnings added and removed
if config.player_warnings then
local Warnings = require("modules.exp_legacy.modules.control.warnings")
events[Warnings.events.on_warning_added] = function(event)
local player_name, by_player_name = get_player_name(event)
local player = assert(game.get_player(player_name))
emit_event{
title = "Warning",
description = "A player has been given a warning",
color = Colors.yellow,
fields = {
{ name = "Player", inline = true, value = append_playtime(player_name) },
{ name = "By", inline = true, value = append_playtime(by_player_name) },
{ name = "Report Count", inline = true, value = Warnings.count_warnings(player) },
{ name = "Reason", value = event.reason },
},
}
end
events[Warnings.events.on_warning_removed] = function(event)
if event.batch ~= 1 then return end
local player_name = get_player_name(event)
emit_event{
title = "Warnings Removed",
description = "A player has a warning removed",
color = Colors.green,
fields = {
{ name = "Player", inline = true, value = append_playtime(player_name) },
{ name = "By", inline = true, value = append_playtime(event.removed_by_name) },
{ name = "Report Count", inline = true, value = tostring(event.batch_count) },
},
}
end
end
--- When a player is jailed or unjailed
if config.player_jail then
local Jail = require("modules.exp_legacy.modules.control.jail")
-20
View File
@@ -249,25 +249,6 @@ description=Print all vlayer information.
title=VLayer Information:
result=__1__: __2__
[exp-commands_warnings]
description-create=Gives a warning to a player; may lead to automatic script action.
description-get=Gets the number of warnings a player has. If no player then lists all players and the number of warnings they have.
description-clear=Clears all warnings (and script warnings) from a player.
description-clear-script=Clears all script warnings from a player.
description-clear-last=Clears the last warning from a player.
arg-player-create=Player to give the warning to.
arg-player-get=Player to get the warning of, if not given all players are returned.
arg-player-clear=Player to clear the warnings of.
arg-reason=Reason the user is receiving a warning.
create=__1__ received a warning from __2__ for __3__.
player-title=__1__ has __2__ warnings and __3__/__4__ script warnings.
list-element-player=__1__: __2__
warnings-title=The following players have warnings aginst them (and script warnings):
list-element=__1__: __2__ (__3__/__4__)
cleared=__1__ had all their warnings cleared by __2__.
cleared-script=__1__ had all their script warnings cleared by __2__.
cleared-last=__1__ had their last warning cleared by __2__.
[exp-commands_waterfill]
description=Replace tiles with shallow water.
requires-explosives=__ITEM__cliff-explosives__ are required to create water.
@@ -326,7 +307,6 @@ reason-entry=Enter Reason
goto-player=Goto player
bring-player=Bring player
report-player=Report player
warn-player=Warn player
jail-player=Jail player
kick-player=Kick player
ban-player=Ban player
-19
View File
@@ -246,25 +246,6 @@ description=vlayer 資訊
title=vlayer 資訊:
result=__1__: __2__
[exp-commands_warnings]
description-create=給用戶一個警告; 可能會導致系統的自動行動。
description-get=取得用戶收到的警告次數。如果沒有用戶,則列出所有用戶以及他們受到警告的次數。
description-clear=清除用戶的所有警告(和系統警告)。
description-clear-script=清除用戶的系統警告。
description-clear-last=清除用戶的最後警告。
arg-player-create=要警告的用戶。
arg-player-get=要取得的用戶, 若沒有則返回所有用戶。
arg-player-clear=要清除的用戶。
arg-reason=原因。
create=__1__ 被 __2__ 因 __3__ 作出警告。
player-title=__1__ 有 __2__ 個警告和 __3__/__4__ 的系統警告。
list-element-player=__1__: __2__
warnings-title=該用戶警告如下:
list-element=__1__: __2__ (__3__/__4__)
cleared=__1__ 的警告己被 __2__ 清除。
cleared-script=__1__ 的系統警告己被 __2__ 清除。
cleared-last=__1__ 的最後警告己被 __2__ 清除。
[exp-commands_waterfill]
description=把地換為淺水。
requires-explosives=沒有足夠的 __ITEM__cliff-explosives__ 。
-19
View File
@@ -246,25 +246,6 @@ description=vlayer 資訊
title=vlayer 資訊:
result=__1__: __2__
[exp-commands_warnings]
description-create=給用戶一個警告; 可能會導致系統的自動行動。
description-get=取得用戶收到的警告次數。如果沒有用戶,則列出所有用戶以及他們受到警告的次數。
description-clear=清除用戶的所有警告(和系統警告)。
description-clear-script=清除用戶的系統警告。
description-clear-last=清除用戶的最後警告。
arg-player-create=要警告的用戶。
arg-player-get=要取得的用戶, 若沒有則返回所有用戶。
arg-player-clear=要清除的用戶。
arg-reason=原因。
create=__1__ 被 __2__ 因 __3__ 作出警告。
player-title=__1__ 有 __2__ 個警告和 __3__/__4__ 的系統警告。
list-element-player=__1__: __2__
warnings-title=該用戶警告如下:
list-element=__1__: __2__ (__3__/__4__)
cleared=__1__ 的警告己被 __2__ 清除。
cleared-script=__1__ 的系統警告己被 __2__ 清除。
cleared-last=__1__ 的最後警告己被 __2__ 清除。
[exp-commands_waterfill]
description=把地換為淺水。
requires-explosives=沒有足夠的 __ITEM__cliff-explosives__ 。
-5
View File
@@ -26,25 +26,20 @@ const definitions: Definition[] = [
["exp_scenario.command.clear_blueprints_surface", "/clear-blueprints-surface", "Clear all blueprints on the current surface."],
["exp_scenario.command.clear_ground_items", "/clear-ground-items", "Clear all items on the ground."],
["exp_scenario.command.clear_inventory", "/clear-inventory", "Clear a player's inventory, moving all items to spawn."],
["exp_scenario.command.clear_last_warnings", "/clear-last-warnings", "Clears the last warning from a player."],
["exp_scenario.command.clear_pollution", "/clear-pollution", "Clear pollution from your current surface, or another surface."],
["exp_scenario.command.clear_reports", "/clear-reports", "Clears all reports from a player or just the report from one player."],
["exp_scenario.command.clear_script_warnings", "/clear-script-warnings", "Clears all script warnings from a player."],
["exp_scenario.command.clear_warnings", "/clear-warnings", "Clears all warnings (and script warnings) from a player."],
["exp_scenario.command.collectdata", "/collectdata", "Collect data for RCON usage."],
["exp_scenario.command.commands", "/commands", "List and search all commands for a keyword.", true],
["exp_scenario.command.connect", "/connect", "Connect to another server.", true],
["exp_scenario.command.connect_all", "/connect-all", "Connect all players to another server."],
["exp_scenario.command.connect_player", "/connect-player", "Connect a player to a different server."],
["exp_scenario.command.create_report", "/create-report", "Reports a player and notifies moderators.", true],
["exp_scenario.command.create_warning", "/create-warning", "Gives a warning to a player; may lead to automatic script action."],
["exp_scenario.command.data_preference", "/data-preference", "Allows you to set/get your data saving preference.", true],
["exp_scenario.command.debug", "/debug", "Opens the debug gui."],
["exp_scenario.command.follow", "/follow", "Start following a player in spectator."],
["exp_scenario.command.get_home", "/get-home", "Returns your current home location."],
["exp_scenario.command.get_reports", "/get-reports", "List the reports against a player, or against every player."],
["exp_scenario.command.get_roles", "/get-roles", "Get all roles that a player has, if no player provided it lists all roles.", true],
["exp_scenario.command.get_warnings", "/get-warnings", "List the warnings against a player, or against every player."],
["exp_scenario.command.goto", "/goto", "Teleports you to a player."],
["exp_scenario.command.home", "/home", "Teleports you to your home location."],
["exp_scenario.command.jail", "/jail", "Puts a player into jail, which suppresses all of their other roles."],