Merge pull request 'feature-27-moderation' (#20) from feature-27 into develop
Some checks failed
/ build-docker (push) Has been cancelled

Reviewed-on: #20
Reviewed-by: cuqmbr <services@cuqmbr.xyz>
This commit is contained in:
cuqmbr 2025-07-22 19:20:02 +00:00
commit 5b947a0a8b
10 changed files with 1603 additions and 11 deletions

View File

@ -18,6 +18,9 @@
src/plugins/spark/tmp src/plugins/spark/tmp
.crowdin
src/plugins/PlasmoVoice/voice_mutes.json
src/plugins/LuckPerms/libs src/plugins/LuckPerms/libs
src/plugins/ImageFrame/data src/plugins/ImageFrame/data
@ -25,9 +28,6 @@ src/plugins/ImageFrame/players
src/plugins/ImageFrame/upload src/plugins/ImageFrame/upload
src/map-color-cache.dat src/map-color-cache.dat
.crowdin
src/plugins/PlasmoVoice/voice_mutes.json
src/plugins/SuperVanish/data.yml src/plugins/SuperVanish/data.yml
src/plugins/CustomizablePlayerModels src/plugins/CustomizablePlayerModels
@ -41,3 +41,5 @@ src/plugins/BlueMap/data/web/maps
src/plugins/BlueMap/data/logs src/plugins/BlueMap/data/logs
src/plugins/BlueMap/data/minecraft-client-1.21.jar src/plugins/BlueMap/data/minecraft-client-1.21.jar
src/plugins/BMMarker/data src/plugins/BMMarker/data
src/plugins/LibertyBans/internal

8
.gitignore vendored
View File

@ -18,6 +18,9 @@
src/plugins/spark/tmp src/plugins/spark/tmp
.crowdin
src/plugins/PlasmoVoice/voice_mutes.json
src/plugins/LuckPerms/libs src/plugins/LuckPerms/libs
src/plugins/ImageFrame/data src/plugins/ImageFrame/data
@ -25,9 +28,6 @@ src/plugins/ImageFrame/players
src/plugins/ImageFrame/upload src/plugins/ImageFrame/upload
src/map-color-cache.dat src/map-color-cache.dat
.crowdin
src/plugins/PlasmoVoice/voice_mutes.json
src/plugins/SuperVanish/data.yml src/plugins/SuperVanish/data.yml
src/plugins/CustomizablePlayerModels src/plugins/CustomizablePlayerModels
@ -41,3 +41,5 @@ src/plugins/BlueMap/data/web/maps
src/plugins/BlueMap/data/logs src/plugins/BlueMap/data/logs
src/plugins/BlueMap/data/minecraft-client-1.21.jar src/plugins/BlueMap/data/minecraft-client-1.21.jar
src/plugins/BMMarker/data src/plugins/BMMarker/data
src/plugins/LibertyBans/internal

View File

@ -87,17 +87,24 @@ ENV PROXY_SECRET=00000000-0000-0000-0000-000000000000
ENV VOICE_SECRET=00000000-0000-0000-0000-000000000000 ENV VOICE_SECRET=00000000-0000-0000-0000-000000000000
ENV LUCKPERMS_DB_HOST=127.0.0.1
ENV LUCKPERMS_DB_PORT=3306
ENV LUCKPERMS_DB_NAME=luckperms_db
ENV LUCKPERMS_DB_USERNAME=luckperms
ENV LUCKPERMS_DB_PASSWORD=0000
ENV COREPROTECT_DB_HOST=127.0.0.1 ENV COREPROTECT_DB_HOST=127.0.0.1
ENV COREPROTECT_DB_PORT=3306 ENV COREPROTECT_DB_PORT=3306
ENV COREPROTECT_DB_NAME=coreprotect_db ENV COREPROTECT_DB_NAME=coreprotect_db
ENV COREPROTECT_DB_USERNAME=coreprotect ENV COREPROTECT_DB_USERNAME=coreprotect
ENV COREPROTECT_DB_PASSWORD=0000 ENV COREPROTECT_DB_PASSWORD=0000
ENV LUCKPERMS_DB_HOST=127.0.0.1 ENV LIBERTYBANS_DB_HOST=127.0.0.1
ENV LUCKPERMS_DB_PORT=3306 ENV LIBERTYBANS_DB_PORT=3306
ENV LUCKPERMS_DB_NAME=luckperms ENV LIBERTYBANS_DB_NAME=libertybans_db
ENV LUCKPERMS_DB_USERNAME=luckperms ENV LIBERTYBANS_DB_USERNAME=libertybans
ENV LUCKPERMS_DB_PASSWORD=0000 ENV LIBERTYBANS_DB_PASSWORD=0000
ENV DISCORDSRV_BOT_TOKEN=dummy-token ENV DISCORDSRV_BOT_TOKEN=dummy-token
@ -129,6 +136,13 @@ CMD \
sed -i "s/_COREPROTECT_DB_USERNAME_/${COREPROTECT_DB_USERNAME}/g" plugins/CoreProtect/config.yml && \ sed -i "s/_COREPROTECT_DB_USERNAME_/${COREPROTECT_DB_USERNAME}/g" plugins/CoreProtect/config.yml && \
sed -i "s/_COREPROTECT_DB_PASSWORD_/${COREPROTECT_DB_PASSWORD}/g" plugins/CoreProtect/config.yml && \ sed -i "s/_COREPROTECT_DB_PASSWORD_/${COREPROTECT_DB_PASSWORD}/g" plugins/CoreProtect/config.yml && \
# Add libertybans database secrets
sed -i "s/_LIBERTYBANS_DB_HOST_/${LIBERTYBANS_DB_HOST}/g" plugins/LibertyBans/sql.yml && \
sed -i "s/_LIBERTYBANS_DB_PORT_/${LIBERTYBANS_DB_PORT}/g" plugins/LibertyBans/sql.yml && \
sed -i "s/_LIBERTYBANS_DB_NAME_/${LIBERTYBANS_DB_NAME}/g" plugins/LibertyBans/sql.yml && \
sed -i "s/_LIBERTYBANS_DB_USERNAME_/${LIBERTYBANS_DB_USERNAME}/g" plugins/LibertyBans/sql.yml && \
sed -i "s/_LIBERTYBANS_DB_PASSWORD_/${LIBERTYBANS_DB_PASSWORD}/g" plugins/LibertyBans/sql.yml && \
# Add DiscordSRV bot token # Add DiscordSRV bot token
sed -i "s/_DISCORDSRV_BOT_TOKEN_/${DISCORDSRV_BOT_TOKEN}/g" plugins/DiscordSRV/config.yml && \ sed -i "s/_DISCORDSRV_BOT_TOKEN_/${DISCORDSRV_BOT_TOKEN}/g" plugins/DiscordSRV/config.yml && \

View File

@ -0,0 +1,281 @@
#
#
# The main LibertyBans configuration
# All options here can be updated with /libertybans reload
#
#
durationPermissions:
# Which duration permissions should a staff member be checked for?
# Specify all the durations which you want to explicitly grant permission for.
permissions-to-check:
- 'perm'
- '4h'
- '30d'
- '10d'
# If disabled, players are not checked for duration permissions.
enable: false
# Formatting of absolute dates
date-formatting:
# How should dates be formatted? Follows Java's DateTimeFormatter.ofPattern
format: 'dd/MM/yyyy kk:mm'
# Do you want to override the timezone? If 'default', the system default timezone is used
# The value must be in continent/city format, such as 'America/New_York'. Uses Java's ZoneId.of
timezone: 'Europe/Kyiv'
# What language file should be used for messages?
# For example, 'en' means LibertyBans will look for a file called 'messages_en.yml'
lang-file: 'en'
# Options related to punishment enforcement and alt account checking
#
# -- Alt Account Enforcement and Checking --
# There are multiple ways to combat alt accounts in LibertyBans.
#
# First, you can have the plugin automatically detect alt accounts and prevent them from joining,
# with the same ban message. This is controlled by the 'address-strictness' setting.
#
# Second, you can tell your staff members to be on the lookout for alts. They can use
# the /alts command to manually check players they suspect are alt accounts. Also, you can
# use the alts-auto-show feature which will automatically notify staff of players who may be using alts.
#
# Third, you may use 'composite punishments', a more advanced feature which is described on the wiki.
enforcement:
# Controls the expiration of join history as used by manual alt detection.
# This allows expiring alt accounts after some time has elapsed.
#
# This setting does NOT affect enforcement of IP-based punishments.
# It applies only to the /alts command and the alts-auto-show feature.
#
# Note that this feature will not actually delete any data from the database.
alt-account-expiration:
# The expiration time, in days.
expiration-time-days: 30
# Whether to enable this feature
enable: false
#
# How strict should IP-based punishments be?
# Available options are LENIENT, NORMAL, STERN, and STRICT
#
# An IP-based punishment applies to a player if:
# LENIENT - The player's current address matches the punished address
# NORMAL - Any of the player's past addresses matches the punished address
# STERN - Any of the player's past addresses matches any of the past addresses of the punished user
#
# STRICT is the same as STERN, but also enforces user punishments as stringently as IP-based punishments.
# (Using STRICT turns all user punishments into IP-based punishments)
address-strictness: 'NORMAL'
# Limits players connecting from the same IP address.
#
# The limiter works by counting the amount of joins from a given IP address within a recent timespan.
# Thus, it is not an absolute limit, but a limit on the rate of joins.
connection-limiter:
# What is the duration within which recent joins are counted against the limit?
# The default is 30 minutes and the value is specified in seconds.
duration-seconds: 1800
# The limit to apply
limit: 5
# The message when a player is denied from joining due to the limit
denial-message: 'There have been too many connections from your IP address recently'
# Whether to enable this feature
enable: false
# Runs an alt-check on newly joined players, as if by /alts,
# the results of which will be shown to staff members with the libertybans.alts.autoshow permission.
alts-auto-show:
# Allows determining which alts will be shown by this alt-check
# (This does not affect the alts command, which will always show all alts)
# ALL_ALTS - shows all alts
# BANNED_OR_MUTED_ALTS - shows alts either banned or muted
# BANNED_ALTS - shows only banned alts
show-which-alts: 'ALL_ALTS'
# Set to true to enable this feature
enable: false
#
# A list of commands muted players will not be able to execute
#
# This list supports subcommands, which will be enforced if the executed command starts with the list entry.
# Additionally, colons in commands, such as"pluginname:cmd", cannot be used to bypass this.
mute-commands:
- 'msg'
- 'r'
- 't'
- 'w'
- 'tell'
- 'me'
- 'whisper'
- 'say'
- 'clan chat'
- 'reply'
# Options relating to finding UUIDs from names, and vice-versa
# LibertyBans will first check its own caches before using these resources
player-uuid-resolution:
#
# As a last resort, when LibertyBans cannot find a uuid or name, it will use an external web API
# Available options are 'MOJANG', 'ASHCON', and 'MCHEADS'. They will be queried sequentially in the order specified.
# (If the server is not in ONLINE mode, this option is ignored)
web-api-resolvers:
- 'MOJANG'
# By default, LibertyBans will automatically detect if you are running Geyser or Floodgate.
# The prefix will be determined using the Geyser API
#
# However, in rare cases, you may want to force LibertyBans to acknowledge the presence of Geyser usernames
# If so, set this option to the value of the prefix you use for Geyser/Floodgate.
# An empty string will revert this option to automatic detection, which requires a server restart to take effect.
force-geyser-prefix: ''
#
# What kind of UUIDs do your players have?
# Available options are ONLINE, OFFLINE, and MIXED
#
# For most servers this will be 'ONLINE'
# For offline servers where all players have offline UUIDs, use OFFLINE
# For offline servers where some players have online and some have offline UUIDs, use MIXED
server-type: 'OFFLINE'
platforms:
# Related to game servers such as Spigot, Paper, and Sponge
game-servers:
# This option is relevant for backend servers running within a network (BungeeCord or Velocity).
# It enables the use of plugin messaging, such as for:
# - Kicking the player from the entire network
# - Detecting the name of the backend server for use with server scopes
# - Synchronizing punishments across instances, depending on the mode in the sql.yml
#
# DO NOT enable this option if you do not run a network. Otherwise, you create a security vulnerability
# whereby players can pretend to be coming from a proxy, evading kicks and sending sync messages.
# After changing this option, please perform a restart (/libertybans restart).
use-plugin-messaging: false
# Related to the Sponge platform
sponge:
# Whether to register the ban service for use by other plugins.
# If enabled, LibertyBans will replace the server's default banning implementation with its own.
#
# This option is somewhat technical. For advice on whether you should configure this option,
# please ask for support.
# It is highly recommended to ask for guidance if you are unsure about this option.
#
# How this affects compatibility:
# - If disabled, the vanilla ban service will remain. Other plugins which query for bans will be
# served with information from vanilla. For example, if a player is banned through LibertyBans
# but not vanilla, then other plugins will think the player is not banned.
# - If enabled, uses of the ban service will forward to LibertyBans. Other plugins which query for bans
# will be served with accurate information from LibertyBans.
# - However, the LibertyBans ban service has limitations. It cannot issue bans, for example.
# So, if another plugin attempts to create bans using the ban service, you will receive an error.
# If you absolutely need other plugins to issue bans, you must disable this option.
#
# Note that it is impossible to import vanilla bans if you enable this option. So, if you wish to import
# from vanilla, first you need to disable this option. After importing, you may re-enable it.
register-ban-service: true
# Related to proxies such as BungeeCord and Velocity
proxies:
# Set this to true to indicate that you are running multiple proxy instances.
#
# It will instruct LibertyBans to perform additional synchronization measures, where applicable.
multiple-proxy-instances: false
# Server-scoped punishments will be enforced by preventing server switches for players connecting
# to servers on which they are banned. The server name is obtained from the proxy API
#
# This option is enabled by default for full functionality. However, it increases performance usage,
# so you may want to disable it if you do not use the scopes feature.
enforce-server-switch: true
commands:
# If this is enabled, it will be as if relevant commands used the -both argument.
# Effectively, this makes punishments more strict, since moderators will end up banning UUIDs and addresses
use-composite-victims-by-default: false
# By default, /blame shows only active punishments made by a staff member.
# If you disable this option, /blame will show all punishments, including those revoked and expired.
#
# If you use the staffrollback addon, you probably want to disable this to make /blame consistent
# with the staffrollback operation.
blame-shows-active-only: true
# By default, /history and /warns show punishments specifically for the player requested.
# Enabling this option will make /history and /warn scan punishments which would apply to the player
#
# For example, an IP ban may apply to a player, but it will not be in the player's /history unless this is enabled
show-applicable-for-history: false
# Other options relating to tab completion
# These settings require a restart (/libertybans restart) to take effect
tab-completion:
# Regards tab completing the names of players who have formerly joined
# This can be a bit heavy on memory for large servers, so it's disabled by default.
# To tune how long player names are retained for, see the retention-minutes option
offline-player-names:
# What is the period in which recently joining players' names should be completed
# If a player has joined in the last specified amount of minutes, his or her name is tab-completed
retention-minutes: 4320
# This feature is implemented using a cache. How often should the cache be refreshed?
# Shorter times mean more accurate tab completion but use slightly more performance
cache-refresh-seconds: 120
# Whether to enable this feature
enable: false
# This option is only relevant when LibertyBans is on a proxy
# If enabled, tab completion of online player names will exclude the names of players
# on different backend servers.
use-only-players-on-same-server: true
# Enables tab-completing punishment durations. For example, '30d' in '/ban A248 30d'
#
punishment-durations:
# Which duration permissions should be tab-completed?
# Specify all the durations which you want to tab complete.
#
# If duration permissions are enabled, only players who have permission to use a certain duration
# will have that duration tab-completed.
durations-to-supply:
- 'perm'
- '4h'
- '30d'
- '10d'
# Whether to enable this feature
enable: false
# Whether to enable tab completion
enable-tab-completion: true
# What commands should be registered as aliases for libertybans commands?
# For each command listed here, '/<command>' will be equal to '/libertybans <command>'
#
# This basic system is for convenience; please use a dedicated alias plugin if you need more control.
# Also, please note that command aliases are disabled on Sponge, due to command API differences.
aliases:
- 'ban'
- 'ipban'
- 'mute'
- 'ipmute'
- 'warn'
- 'ipwarn'
- 'kick'
- 'ipkick'
- 'unban'
- 'unbanip'
- 'unmute'
- 'unmuteip'
- 'unwarn'
- 'unwarnip'
- 'banlist'
- 'mutelist'
- 'history'
- 'warns'
- 'blame'
- 'alts'
- 'accounthistory'
# Handles how staff are permitted to specify reasons
reasons:
# Deprecated option kept for compatibility purposes. Ignore this.
permit-blank: false
# When entering commands, what happens if the staff member does not specify a reason?
# USE_EMPTY_REASON - Keep the reason blank, as specified.
# REQUIRE_REASON - Deny the command; send the usage message.
# SUBSTITUTE_DEFAULT - Substitute the default reason.
unspecified-reason-behavior: 'SUBSTITUTE_DEFAULT'
# If unspecified-reason-behavior is SUBSTITUTE_DEFAULT, what is the default reason to use when staff do not specify a reason?
default-reason: 'No reason stated.'

View File

@ -0,0 +1,187 @@
# Settings for importing from other plugins
# Most users should not have to touch this.
#
# In order to perform an import, run /libertybans import <source>.
# Available sources are 'advancedban', 'litebans', 'vanilla', and 'self'.
#
# Importing from vanilla is only possible on Bukkit.
# Essentials users: Note that Essentials uses the vanilla ban system.
#
# During the import, it is not needed to enable the plugin you are importing from.
#
# --- NOTICE ---
# You MUST backup your data before performing the import.
# LibertyBans will never delete your data, but taking a backup is the best practice
# whenever you are performing any large transfer of data.
#
# --- WARNING when importing from AdvancedBan and Vanilla ---
# AdvancedBan/Vanilla does not store the uuid of the operator who made a punishment.
# To work around this, LibertyBans will attempt to lookup the operator uuid. By default
# this uses the Mojang API. However, if your server sends the Mojang API too many requests,
# your server might be rate limited (which you do NOT want to happen).
# To prevent this, add another service to your web-api-resolvers, in the config.yml
# before importing.
#
#
#
#
# -- Importing from AdvancedBan --
#
# The defaults here match the default settings in AdvancedBan.
# If you use AdvancedBan's default storage, you do not need to change anything here.
#
# --- Using AdvancedBan's MySQL/MariaDB Storage ---
# However, if you use MySQL with AdvancedBan, you will need to change a few things.
# The jdbc-url should be set to 'jdbc:mariadb://<host>:<port>/<database>' with <host>,
# <port>, and <database> replaced with the correct values. The username and password
# ought to be the same username and password you used with AdvancedBan.
#
# For example: You used AdvancedBan with MySQL. Your host is localhost, your port
# is 3306, and your database name is 'bans'. You use the username 'advancedban' and
# password 'password'. You should set the jdbc-url option to
# 'jdbc:mysql://localhost:3306/bans', the username to 'advancedban', and the password to 'password'
advancedban:
jdbc-url: 'jdbc:hsqldb:file:plugins/AdvancedBan/data/storage;hsqldb.lock_file=false'
password: ''
username: 'SA'
#
#
#
# -- Importing from LiteBans --
#
# This is no easy task. The main problem is that LiteBans is a closed-source black box,
# such that no one except its author knows how the plugin works internally.
#
# However, it is still possible to import from LiteBans to LibertyBans, and this is achieved
# primarily from inspecting the generated SQL schema.
#
# --- Config Options Explained ---
# The jdbc-url depends on the storage mode you are using LiteBans with.
# - Using H2, it should be 'jdbc:h2:./plugins/LiteBans/litebans'
# - Using MySQL or MariaDB, it should be 'jdbc:mariadb://<host>:<port>/<database>' with <host>,
# <port>, and <database> replaced with the correct values.
# - Using PostgreSQL, it should be 'jdbc:postgresql://<host>:<port>/<database>' with <host>,
# <port>, and <database> replaced with the correct values.
#
# If you configured a username and password for LiteBans, you should enter the same
# username and password in this section.
#
# --- JDBC Driver Availability: If you use H2 ---
# LiteBans uses the H2 database by default. If importing from H2, you will need to install the H2 driver first.
#
# The driver is installed by adding it to the classpath. This is done by downloading the driver jar, and starting
# your server with the -cp option. The wiki has a tutorial on how to do this.
litebans:
# The same table prefix you used with LiteBans
table-prefix: 'litebans_'
# The default value here is set for H2.
jdbc-url: 'jdbc:h2:./plugins/LiteBans/litebans'
password: ''
username: ''
#
#
#
# -- Importing from BanManager (v7) --
#
# Bans, IP bans, mutes, IP mutes, warns, and kicks are supported.
#
# BanManager's IP range bans, name bans, notes, and reports are not supported. LibertyBans has no equivalent features.
#
# --- Config Options Explained ---
# The jdbc-url depends on the storage mode you are using BanManager with.
# - Using H2, it should be 'jdbc:h2:./plugins/BanManager/local-bans'
# - Using MySQL or MariaDB, it should be 'jdbc:mariadb://<host>:<port>/<database>' with <host>,
# <port>, and <database> replaced with the correct values.
#
# If you configured a username and password for BanManager, you should enter the same
# username and password in this section.
ban-manager:
# The same table prefix you used with BanManager
table-prefix: 'bm_'
# The default value here is set for H2.
jdbc-url: 'jdbc:h2:./plugins/BanManager/local-bans'
password: ''
username: ''
# How many punishments to retrieve at once from the import source.
# You may be surprised to find out your server is capable of retrieving hundreds,
# even thousands of punishments, into memory without much trouble. However,
# this is set to 250 as a reasonable conservative estimate.
retrieval-size: 250
#
#
#
# -- Importing from another LibertyBans database --
#
# NOTICE: The current database MUST be empty when the import is performed.
#
# The self-import process is different from the import process for other plugins.
# It is a direct transfer, which is why the current database must be empty. Also, punishment IDs are preserved.
#
# Self-importing may be used to switch between various database backends supported by LibertyBans.
# For example, you could transfer your data from HSQLDB to MariaDB.
#
# The settings here are used exactly as in sql.yml - in fact, they are the same settings.
self:
# Whether to reverse the direction of the self-import. If enabled, this will import TO the database
# configured here, rather than FROM it.
#
# Normally, LibertyBans will import from this database, to the current database defined in sql.yml.
# If this option is enabled, LibertyBans will import to the current database in sql.yml, from this database.
reverse-direction: false
#
# Connection timeout settings
# LibertyBans uses HikariCP for connection pooling. The following settings control connection timeouts.
timeouts:
# How long, at maximum, should LibertyBans wait when acquiring new connections, if no existing connection is available?
connection-timeout-seconds: 14
# How long, at maxium, should a connection in the pool last before having to be recreated?
# "This value should be set for MariaDB or MySQL. HikariCP notes:
# "It should be several seconds shorter than any database or infrastructure imposed connection time limit"
max-lifetime-minutes: 25
# Authentication details for remote databases: used for MariaDB, MySQL, PostgreSQL, and CockroachDB.
auth-details:
database: 'bans'
password: 'defaultpass'
user: 'defaultuser'
host: 'localhost'
port: 3306
# The values in this section only apply when using a MariaDB or MySQL database
mariadb:
# Connection properties to be applied to database connections
connection-properties:
cachePrepStmts: 'true'
useUnicode: 'true'
prepStmtCacheSqlLimit: '1024'
characterEncoding: 'UTF-8'
prepStmtCacheSize: '25'
useServerPrepStmts: 'true'
# The values in this section only apply when using a PostgreSQL or CockroachDB database
postgres:
# Connection properties to be applied to database connections
connection-properties:
preparedStatementCacheQueries: '25'
# Legacy option. Don't touch this unless you understand it or you're told to enable it.
use-traditional-jdbc-url: false
# What RDMS vendor will you be using?
# Available options:
# 'HSQLDB' - Local HyperSQL database. No additional requirements.
# 'MARIADB' - Requires an external MariaDB database. At least MariaDB 10.6 is required.
# 'MYSQL' - Requires an external MySQL database. At least MySQL 8.0 is required.
# 'POSTGRES' - Requires an external PostgreSQL database. At least PostgreSQL 12 is required.
# 'COCKROACH' - Requires an external CockroachDB database. The latest CockroachDB is required. Warning: this option is strictly experimental.
rdms-vendor: 'HSQLDB'
#
# How large should the connection pool be?
# A thread pool of similar size is derived from the connection pool size.
# For most servers, the default option is suitable.
connection-pool-size: 6

View File

@ -0,0 +1,498 @@
#
# Messages configuration
#
#
# In most cases, the variables inside the default messages are those available
# in that specific message. The exception to this is messages which are related
# to a certain punishment.
#
# When message has an associated punishment, multiple variables are available:
#
# %ID% - punishment ID number
# %TYPE% - punishment type, e.g. 'Ban'
# %TYPE_VERB% - punishment type as a verb, e.g. 'Banned'
# %VICTIM% - display name of the victim of the punishment
# %VICTIM_ID% - internal identifier of victim
# %OPERATOR% - display name of the staff member who made the punishment
# %OPERATOR_ID% - internal identifier of the operator
# %UNOPERATOR% - staff member undoing the punishment. available only when the punishment is undone
# %UNOPERATOR_ID% - internal identifier of staff member undoing the punishment
# %REASON% - reason for the punishment
# %SCOPE% - scope of the punishment
# %DURATION% - original duration (how long the punishment was made for)
# %START_DATE% - the date the punishment was created
# %TIME_PASSED% - the time since the punishment was created
# %TIME_PASSED_SIMPLE% - the time since the punishment was created, rounded to the biggest time unit possible (e.g. 2 months instead of 1 month 23 days)
# %END_DATE% - the date the punishment will end, or formatting.permanent-display.absolute for permanent punishments
# %TIME_REMAINING% - the time until the punishment ends, or formatting.permanent-display.relative for permanent punishments
# %TIME_REMAINING_SIMPLE% - the time until the punishment ends, rounded to the biggest time unit possible (e.g. 10 days instead of 9 days 13 hours)
# %HAS_EXPIRED% - Shows if a punishments duration has run out. Does not check if the punishment is revoked!
# %TRACK% - the escalation track of the punishment, for example if you are using layouts
# %TRACK_ID% - the ID of the escalation track
# %TRACK_NAMESPACE% - the namespace of a track can be used by other plugins to implement their own layouts
#
# The following variables have limited availability:
# %TARGET% - the original target argument of a command. For example, in '/ipban Player1', %TARGET% is Player1
# %NEXTPAGE% - the number of the next page of a list like history
# %PREVIOUSPAGE% - the number of the previous page of a list like history
#
#
# Configuration for the /accounthistory command
account-history:
# Regards /accounthistory list <user>
listing:
none-found: '&7No recorded accounts found'
usage: '&cUsage: /accounthistory list <user|ip>'
# How a single recorded account should be displayed
# Available variables:
# %TARGET% - the original input to the command
# %USERNAME% - the username the player connected with
# %ADDRESS% - the address the player connected with
# %DATE_RECORDED% - the date the join was recorded
# %DATE_RECORDED_RAW% - the raw timestamp the join was recorded
layout: '%USERNAME% &7(on %ADDRESS%) at %DATE_RECORDED% (%DATE_RECORDED_RAW%)||ttp:&7Click to delete this stored account||cmd:/accounthistory delete %TARGET% %DATE_RECORDED_RAW%'
# The message to display before the account listing. Set to an empty string to disable
header: '&7Known accounts report for &c&o%TARGET%&7 follows.'
permission: '&cYou may not list recorded accounts.'
usage: '&cUsage: /accounthistory <delete|list>'
# Pertains to /accounthistory delete <user> <timestamp>
delete:
no-such-account: '&c%TARGET% has no recorded account for the specified timestamp.'
usage:
- '&cUsage: /accounthistory delete <user> <timestamp>.&f'
- '&7The timestamp is in unix seconds and is usually obtained from /accounthistory list'
permission: '&cYou may not delete recorded accounts.'
success: '&7Successfully deleted the recorded account of &e%TARGET%'
#
# Messages regarding /ban, /mute, /warn, /kick
# Includes punishment layouts
#
#
additions:
mutes:
success:
message: '&aMuted &c&o%VICTIM%&a for &o%DURATION%&r&a because of &e&o%REASON%&a.'
notification: '&c&o%OPERATOR%&7 muted &c&o%VICTIM%&7 for &a&o%DURATION%&7 because of &e&o%REASON%&7.'
exempted: '&c&o%TARGET%&7 cannot be muted.'
conflicting: '&c&o%TARGET%&7 is already muted.'
usage: '&cUsage: /mute &e<player> [time] <reason>&c.'
layout:
- '&7&lMuted&f'
- '&cDuration: &e%TIME_REMAINING%&f'
- ''
- '&c&lReason&f'
- '&7%REASON%'
permission:
duration: '&cYou may not do this for &e%DURATION%&c.'
both: '&cYou may not do this to players and their IP addresses.'
uuid: '&cYou may not do this to players.'
ip-address: '&cYou may not do this to IP addresses.'
kicks:
success:
message: '&aKicked &c&o%VICTIM%&a because of &e&o%REASON%&a.'
notification: '&c&o%OPERATOR%&7 kicked &c&o%VICTIM%&7 because of &e&o%REASON%&7.'
must-be-online: '&c&o%TARGET%&7 must be online.'
exempted: '&c&o%TARGET%&7 cannot be kicked.'
usage: '&cUsage: /kick &e<player> <reason>&c.'
layout:
- '&7&lKicked&f'
- ''
- '&c&lReason&f'
- '&7%REASON%'
permission:
both: '&cYou may not do this to players and their IP addresses.'
uuid: '&cYou may not do this to players.'
ip-address: '&cYou may not do this to IP addresses.'
warns:
success:
message: '&aWarned &c&o%VICTIM%&a for &o%DURATION%&r&a because of &e&o%REASON%&a.'
notification: '&c&o%OPERATOR%&7 warned &c&o%VICTIM%&7 for &a&o%DURATION%&7 because of &e&o%REASON%&7.'
exempted: '&c&o%TARGET%&7 cannot be warned.'
usage: '&cUsage: /warn &e<player> [time] <reason>&c.'
layout:
- '&7&lWarned&f'
- '&cDuration: &e%TIME_REMAINING%&f'
- ''
- '&c&lReason&f'
- '&7%REASON%'
permission:
duration: '&cYou may not do this for &e%DURATION%&c.'
both: '&cYou may not do this to players and their IP addresses.'
uuid: '&cYou may not do this to players.'
ip-address: '&cYou may not do this to IP addresses.'
bans:
success:
message: '&aBanned &c&o%VICTIM%&a for &o%DURATION%&r&a because of &e&o%REASON%&a.'
notification: '&c&o%OPERATOR%&7 banned &c&o%VICTIM%&7 for &a&o%DURATION%&7 because of &e&o%REASON%&7.'
exempted: '&c&o%TARGET%&7 cannot be banned.'
conflicting: '&c&o%TARGET%&7 is already banned.'
usage: '&cUsage: /ban &e<player> [time] <reason>&c.'
layout:
- '&7&lBanned&f'
- '&cDuration: &e%TIME_REMAINING%&f'
- ''
- '&c&lReason&f'
- '&7%REASON%&f'
- ''
- '&3&lAppeal Your Punishment&f'
- '&cWebsite: &7https://bebrashield.net&f'
- '&cDiscord: &7https://discord.gg/xsyy7d8RfG'
permission:
duration: '&cYou may not do this for &e%DURATION%&c.'
both: '&cYou may not do this to players and their IP addresses.'
uuid: '&cYou may not do this to players.'
ip-address: '&cYou may not do this to IP addresses.'
# Messages for alt-checks and alt account notifications
#
# Before configuring this section, it is necessary to look at the address-enforcement
# settings in the main config.yml and understand the different kinds of alt detection.
# There is normal and strict detection.
alts:
auto-show:
# The message to display atop the alt check. Set to an empty string to disable
header:
- '&c&o%TARGET%&7 may be an alt account. Report follows.&f'
- '&7Strong possibility - Same address as banned player.&f'
- '&7Mere possibility - Linked to banned player by common past address'
formatting:
# In the alt-check layout, the username of the alt may be formatted depending upon whether it is banned
# For example, the usernames of banned alts may be colored red whereas alts not banned are green
# Variables: %USERNAME%
name-display:
not-punished: '&o%USERNAME%'
muted: '&e&o%USERNAME%'
banned: '&c&o%USERNAME%'
# The description for an alt account detected by strict detection.
strict: '&eMere possibility'
# How a single detected alt should be displayed
# Available variables:
# %DETECTION_KIND% - how the account was detected. Will be replaced by the normal or strict options.
# %ADDRESS% - the address in question which led to the detection
# %RELEVANT_USER% - the username of the other account, formatted according to the name-display option
# %RELEVANT_USERID% - the uuid of the other account
# %DATE_RECORDED% - the date the alt account was recorded
layout: '%RELEVANT_USER% &7(per %ADDRESS%) at %DATE_RECORDED% - %DETECTION_KIND%'
# The description for an alt account detected by normal detection.
normal: '&cStrong possibility'
# Regarding the /alts command
command:
none-found: '&7No alt accounts found'
usage: '&cUsage: /alts &e<player>&c.'
# The message to display atop the alt check. Set to an empty string to disable
header:
- '&7Alt account report for &c&o%TARGET%&7 follows.&f'
- '&7Strong possibility - Same address as banned player.&f'
- '&7Mere possibility - Linked to banned player by common past address'
permission: '&cYou may not check alts.'
# Used for /banlist, /mutelist, /history, /warns, /blame
lists:
ban-list:
perPage: 10
noPages: '&7There are no active bans.'
maxPages: '&7Page &e%PAGE%&7 does not exist.'
permission:
command: '&7You may not view the banlist.'
layout:
header:
- '&7[&eID&7] &e&oSubject&f'
- '&7Operator &8/ &7Reason &8/ &7Time Remaining&f'
body:
- '&7[&e%ID%&7] &e&o%VICTIM%&f'
- '&7%OPERATOR% &8/ &7%REASON% &8/ &7%TIME_REMAINING%&f'
footer: '&7Page &e%PAGE%&7.||ttp:Click for next page||cmd:/libertybans banlist %NEXTPAGE%'
usage: '&cUsage: /banlist &e[page]'
mute-list:
perPage: 10
noPages: '&7There are no active mutes.'
maxPages: '&7Page &e%PAGE%&7 does not exist.'
permission:
command: '&7You may not view the mutelist.'
layout:
header:
- '&7[&eID&7] &e&oSubject&f'
- '&7Operator &8/ &7Reason &8/ &7Time Remaining&f'
body:
- '&7[&e%ID%&7] &e&o%VICTIM%&f'
- '&7%OPERATOR% &8/ &7%REASON% &8/ &7%TIME_REMAINING%&f'
footer: '&7Page &e%PAGE%&7.||ttp:Click for next page||cmd:/libertybans mutelist %NEXTPAGE%'
usage: '&cUsage: /mutelist &e[page]'
warns:
perPage: 10
noPages: '&c&o%TARGET%&7 has no warns.'
maxPages: '&7Page &e%PAGE%&7 does not exist.'
permission:
command: '&7You may not view warns.'
layout:
header: '&7[&eID&7] Operator &8/ &7Reason &8/ &7Time Remaining&f'
body: '&7[&e%ID%&7] %OPERATOR% &8/ &7%REASON% &8/ &7%TIME_REMAINING%&f'
footer: '&7Page &e%PAGE%&7.||ttp:Click for next page||cmd:/libertybans warns %TARGET% %NEXTPAGE%'
usage: '&cUsage: /warns &e<player> [page]'
blame:
perPage: 10
noPages: '&c&o%TARGET%&7 has not punished any players.'
maxPages: '&7Page &e%PAGE%&7 does not exist.'
permission:
command: '&7You may not use blame.'
layout:
header:
- '&7[&eID&7] &e&oSubject &8/ &7Punishment Type&f'
- '&7Reason &8/ &7Date Enacted&f'
body:
- '&7[&e%ID%&7] &e&o%VICTIM% &8 / &7%TYPE%&f'
- '&7%REASON% &8/ &7%START_DATE%&f'
footer: '&7Page &e%PAGE%&7.||ttp:Click for next page||cmd:/libertybans warns %TARGET% %NEXTPAGE%'
usage: '&cUsage: /blame &e<player> [page]'
history:
perPage: 10
noPages: '&c&o%TARGET%&7 has no history.'
maxPages: '&7Page &e%PAGE%&7 does not exist.'
permission:
command: '&7You may not view history.'
layout:
header:
- '&7[&eID&7] &8/ &7Punishment Type&f'
- '&7Operator &8/ &7Reason &8/ &7Date Enacted&f'
body:
- '&7[&e%ID%&7] / %TYPE%&f'
- '&7%OPERATOR% &8/ &7%REASON% &8/ &7%START_DATE%&f'
footer: '&7Page &e%PAGE%&7.||ttp:Click for next page||cmd:/libertybans history %TARGET% %NEXTPAGE%'
usage: '&cUsage: /history &e<player> [page]'
# Specific formatting options
formatting:
# There are 2 ways to make permanent punishments. The first is to not specify a time (/ban <player> <reason>).
# The second is to specify a permanent amount of time (/ban <player> perm <reason>).
# When typing commands, what time arguments will be counted as permanent?
permanent-arguments:
- 'perm'
- 'permanent'
- 'permanently'
# How should 'permanent' be displayed as a length of time?
permanent-display:
# What do you call a permanent duration?
duration: 'Infinite'
# When does a permanent punishment end?
absolute: 'Never'
# How do you describe the time remaining in a permanent punishment?
relative: 'Permanent'
# When there is no more time remaining in a punishment (the punishment has expired),
# this becomes the value of the %TIME_REMAINING% variable
no-time-remaining-display: 'N/A'
# How should the %HAS_EXPIRED% variable be displayed?
punishment-expired-display:
# How do you describe a punishment which is not expired?
not-expired: 'Not expired'
# How do you describe an expired punishment?
expired: 'Expired'
# Controls how the %TRACK%, %TRACK_ID%, and %TRACK_NAMESPACE% variables are displayed
track-display:
# How do you describe the lack of an escalation track?
# The value will be displayed for the %TRACK% variable
no-track: 'No track'
# How do you describe the lack of an escalation track with respect to its ID?
# The value will be displayed for the %TRACK_ID% variable
no-track-id: 'No track ID'
# How do you describe the lack of an escalation track with respect to its namespace?
# The value will be displayed for the %TRACK_NAMESPACE% variable
no-track-namespace: '(none)'
# You may wish to override the track display names. Normally the track ID is displayed,
# which is lowercase and stored in the database. If you want a different name to be displayed
# for the track, write it here.
#
# This option affects the %TRACK% variable but not the %TRACK_ID% variable.
track-display-names:
spam: 'Spamming'
hacking: 'Hacking'
# How should the console be displayed?
console-display: 'Console'
# When using /blame, how should the console be specified?
console-arguments:
- 'console'
# How should punishment types be displayed?
punishment-type-display:
WARN: 'Warn'
KICK: 'Kick'
BAN: 'Ban'
MUTE: 'Mute'
# How should punishment types be displayed as a verb? Used for the %TYPE_VERB% variable.
punishment-type-verb-display:
WARN: 'Warned'
KICK: 'Kicked'
BAN: 'Banned'
MUTE: 'Muted'
# How should the global scope be displayed?
global-scope-display: 'All servers'
# Controls how victims are displayed
victim-display:
# In rare cases, you may have punishments for a user whose name is unknown. This can happen because
# users are punished by UUID, but on some configurations it is not possible to lookup player names.
# When this occurs, the following text is used instead of the player name.
player-name-unknown: '-NameUnknown-'
# Whether to censor IP addresses for players without the libertybans.admin.viewips permission
censor-ip-addresses: false
# The substitute text when an IP address cannot be viewed because the user lacks permission
censored-ip-address: '<censored IP address>'
misc:
unknown-error: '&cAn unknown error occurred.'
# Only applicable if synchronous enforcement strategy is DENY in the main config
sync-chat-denial-message: '&cSynchronous chat denied. &7Please try again.'
# Concerns formatting of relative times and durations
time:
# Times are formatted to seconds accuracy, but you may not want to display seconds
# for most times. However, for very small durations, you need to display a value in seconds.
# If you are using SECONDS in the above section, this value is meaningless.
fallback-seconds: '%VALUE% seconds'
grammar:
# If enabled, places commas after each time fragment, except the last one
comma: true
# What should come before the last fragment? Set to empty text to disable
and: 'and '
fragments:
MINUTES: '%VALUE% minutes'
MONTHS: '%VALUE% months'
DAYS: '%VALUE% days'
HOURS: '%VALUE% hours'
YEARS: '%VALUE% years'
WEEKS: '%VALUE% weeks'
# Regards /unban, /unmute, /unwarn
removals:
mutes:
success:
message: '&7Unmuted &c&o%VICTIM%&7.'
notification: '&c&o%UNOPERATOR%&7 unmuted &c&o%VICTIM%&7.'
not-found: '&c&o%TARGET%&7 is not muted.'
usage: '&cUsage: /unmute &e<player>&c.'
permission:
both: '&cYou may not do this to players and their IP addresses.'
uuid: '&cYou may not do this to players.'
ip-address: '&cYou may not do this to IP addresses.'
warns:
not-a-number: '&c&o%ID_ARG%&7 is not a number.'
success:
message: '&7Unwarned &c&o%VICTIM%&7.'
notification: '&c&o%UNOPERATOR%&7 unwarned &c&o%VICTIM%&7.'
not-found: '&c&o%TARGET%&7 does not have a warn by &c&o%ID%&7.'
usage: '&cUsage: /unwarn &e<player> <id>&c.'
permission:
both: '&cYou may not do this to players and their IP addresses.'
uuid: '&cYou may not do this to players.'
ip-address: '&cYou may not do this to IP addresses.'
bans:
success:
message: '&7Unbanned &c&o%VICTIM%&7.'
notification: '&c&o%UNOPERATOR%&7 unbanned &c&o%VICTIM%&7.'
not-found: '&c&o%TARGET%&7 is not banned.'
usage: '&cUsage: /unban &e<player>&c.'
permission:
both: '&cYou may not do this to players and their IP addresses.'
uuid: '&cYou may not do this to players.'
ip-address: '&cYou may not do this to IP addresses.'
admin:
ellipses: '&a...'
reloaded: '&aReloaded'
reload-failed: '&cAn error occurred reloading the configuration. Please check the server console.'
restarted: '&aRestarted'
addons:
reload-addon:
does-not-exist: '&cThat addon does not exist.'
failed: '&cAn error occurred reloading addon configuration. Please check the server console.'
usage: '&cUsage: /libertybans addon reload <addon>. To reload all addons, /libertybans reload will suffice.'
success: '&aReloaded addon &e%ADDON%&a.'
listing:
message: '&b&lAddons Installed'
layout: '&7- %ADDON%'
usage: '&cUsage: /libertybans addon <list|reload>'
no-permission: '&cSorry, you cannot use this.'
importing:
# To prevent mistakes, it is not allowed to import multiple times at once.
in-progress: '&cThere is already an import in progress.'
usage: '&cUsage: /libertybans import <advancedban|litebans|vanilla|self>'
failure: '&cImport failed. View the server console for details.'
started: '&7Import has started. View your server console for details and progress.'
complete: '&7Import completed.'
all:
# If a player types /libertybans but does not have the permission 'libertybans.commands', this is the denial message
base-permission-message: '&cYou may not use this.'
prefix:
# The prefix to use
value: '&6&lLibertyBans &8»&7 '
# If enabled, all messages will be prefixed
enable: true
# This section is only relevant if using the server scopes feature
scopes:
no-permission-for-default: '&cYou may not use this command without specifying a scope.'
no-permission: '&cYou may not use scope &e%SCOPE%&c.'
invalid: '&cInvalid scope specified: &e%SCOPE_ARG%&c.'
# When issuing commands, if the specified player or IP was not found, what should the error message be?
not-found:
player-or-address: '&c&o%TARGET%&7 was not found online or offline, and is not a valid IP address.'
uuid: '&c&o%TARGET%&7 is not a valid uuid.'
player: '&c&o%TARGET%&7 was not found online or offline.'
usage: '&cUnknown sub command. Displaying usage:'

View File

@ -0,0 +1,438 @@
#
# Messages configuration
#
#
# In most cases, the variables inside the default messages are those available
# in that specific message. The exception to this is messages which are related
# to a certain punishment.
#
# When message has an associated punishment, multiple variables are available:
#
# %ID% - punishment ID number
# %TYPE% - punishment type, e.g. 'Ban'
# %TYPE_VERB% - punishment type as a verb, e.g. 'Banned'
# %VICTIM% - display name of the victim of the punishment
# %VICTIM_ID% - internal identifier of victim
# %OPERATOR% - display name of the staff member who made the punishment
# %OPERATOR_ID% - internal identifier of the operator
# %UNOPERATOR% - staff member undoing the punishment. available only when the punishment is undone
# %UNOPERATOR_ID% - internal identifier of staff member undoing the punishment
# %REASON% - reason for the punishment
# %SCOPE% - scope of the punishment
# %DURATION% - original duration (how long the punishment was made for)
# %START_DATE% - the date the punishment was created
# %TIME_PASSED% - the time since the punishment was created
# %TIME_PASSED_SIMPLE% - the time since the punishment was created, rounded to the biggest time unit possible (e.g. 2 months instead of 1 month 23 days)
# %END_DATE% - the date the punishment will end, or formatting.permanent-display.absolute for permanent punishments
# %TIME_REMAINING% - the time until the punishment ends, or formatting.permanent-display.relative for permanent punishments
# %TIME_REMAINING_SIMPLE% - the time until the punishment ends, rounded to the biggest time unit possible (e.g. 10 days instead of 9 days 13 hours)
# %HAS_EXPIRED% - Shows if a punishments duration has run out. Does not check if the punishment is revoked!
#
# The following variables have limited availability:
# %TARGET% - the original target argument of a command. For example, in '/ipban Player1', %TARGET% is Player1
# %NEXTPAGE% - the number of the next page of a list like history
# %PREVIOUSPAGE% - the number of the previous page of a list like history
#
#
# Used for /banlist, /mutelist, /history, /warns, /blame
lists:
warns:
perPage: 10
noPages: '&c&o У %TARGET%&7 нету варнов.'
maxPages: '&7Страницы &e%PAGE%&7 не существует.'
permission:
command: '&7У вас нету прав использовать эту команду.'
layout:
header: '&7[&eID&7] Обвиняющий &8/ &7Причина &8/ &7До снятия'
body: '&7[&e%ID%&7] %OPERATOR% &8/ &7%REASON% &8/ &7%TIME_REMAINING%'
footer: '&7Страница &e%PAGE%&7.||ttp:Следующая страница||cmd:/libertybans warns %TARGET% %NEXTPAGE%'
usage: '&cИспользование: /warns &e<игрок> [страница]'
blame:
perPage: 10
noPages: '&c&o%TARGET%&7 не наказывал игроков.'
maxPages: '&7Страницы &e%PAGE%&7 не существует.'
permission:
command: '&7У вас нету права использовать эту команду.'
layout:
header:
- '&7[&eID&7] &e&oНаказуемый &8/ &7Вид наказания&f'
- 'Причина &8/ &7Дата принятия'
body:
- '&7[&e%ID%&7] &e&o%VICTIM% &8 / &7%TYPE%&f'
- '%REASON% &8/ &7%START_DATE%'
footer: '&7Страница &e%PAGE%&7.||ttp:Следующая страница||cmd:/libertybans warns %TARGET% %NEXTPAGE%'
usage: '&cИспользование: /blame &e<игрок> [страница]'
ban-list:
perPage: 10
noPages: '&7Нету активных банов.'
maxPages: '&7Страницы &e%PAGE%&7 не существует.'
permission:
command: '&7У вас нету права на использование этой команды.'
layout:
header:
- '&7[&eID&7] &e&oНаказуемый&f'
- '&7Обвиняющий &8/ &7Причина &8/ &7Осталось времени'
body:
- '&7[&e%ID%&7] &e&o%VICTIM%&f'
- '&7%OPERATOR% &8/ &7%REASON% &8/ &7%TIME_REMAINING%'
footer: '&7Страница &e%PAGE%&7.||ttp:Следующая страница||cmd:/libertybans banlist %NEXTPAGE%'
usage: '&cИспользование: /banlist &e[страница]'
mute-list:
perPage: 10
noPages: '&7Нету активных мутов.'
maxPages: '&7Страницы &e%PAGE%&7 не существует.'
permission:
command: '&7У вас нету права на эту команду'
layout:
header:
- '&7[&eID&7] &e&oНаказуемый&f'
- '&7Обвиняющий &8/ &7Причина &8/ &7Осталось времени'
body:
- '&7[&e%ID%&7] &e&o%VICTIM%&f'
- '&7%OPERATOR% &8/ &7%REASON% &8/ &7%TIME_REMAINING%'
footer: '&7Страница &e%PAGE%&7.||ttp:Следующая страница||cmd:/libertybans mutelist %NEXTPAGE%'
usage: '&cИспользование: /mutelist &e[страница]'
history:
perPage: 10
noPages: '&c&o%TARGET%&7 чист.'
maxPages: '&7Страницы &e%PAGE%&7 не существует.'
permission:
command: '&7У вас нету права на использование данной команды.'
layout:
header:
- '&7[&eID&7] &8/ &7Вид наказания&f'
- 'Обвиняющий &8/ &7Причина &8/ &7Дата'
body:
- '&7[&e%ID%&7] / %TYPE%&f'
- '%OPERATOR% &8/ &7%REASON% &8/ &7%START_DATE%'
footer: '&7Страница &e%PAGE%&7.||ttp:Следуюшая страница||cmd:/libertybans history %TARGET% %NEXTPAGE%'
usage: '&cИспользование: /history &e<игрок> [страница]'
all:
# When issuing commands, if the specified player or IP was not found, what should the error message be?
not-found:
player-or-address: '&c&o%TARGET%&7 не был/было найден(o).'
uuid: '&c&o%TARGET%&7 - неправильный формат uuid.'
player: '&c&o%TARGET%&7 не был найден.'
# If a player types /libertybans but does not have the permission 'libertybans.commands', this is the denial message
base-permission-message: '&cТы уверен, что оно тебе нужно? К слову, права на эту команду у тебя нет.'
prefix:
# If enabled, all messages will be prefixed
enable: true
# The prefix to use
value: '&6&lLibertyBans &8»&7 '
usage: '&cНеизвестная подкоманда. Может ты имел ввиду это?'
#
# Messages regarding /ban, /mute, /warn, /kick
# Includes punishment layouts
#
#
additions:
warns:
success:
notification: '&c&o%OPERATOR%&7 выдал варн &c&o%VICTIM%&7 на &a&o%DURATION%&7 по причине &e&o%REASON%&7.'
message: '&c&o%VICTIM%&a получил варн на &o%DURATION%&r&a по причине &e&o%REASON%&a.'
usage: '&cИспользование: /warn &e<игрок> [время] <причина>&c.'
layout:
- '&7&lВы получили варн!&f'
- '&cДлительность: &e%TIME_REMAINING%&f'
- ''
- '&cПричина:&f'
- '&7%REASON%'
permission:
duration: '&cВам нельзя варнить игроков на &e%DURATION%&c.'
both: '&cYou may not do this to players and their IP addresses.'
uuid: '&cВам нельзя варнить других игроков.'
ip-address: '&cВам нельзя варнить по ip-адресу.'
kicks:
success:
notification: '&c&o%OPERATOR%&7 кикнул &c&o%VICTIM%&7 по причине &e&o%REASON%&7.'
message: '&c&o%VICTIM%&a был кикнут по причине &e&o%REASON%&a.'
must-be-online: '&c&o%TARGET%&7 must be online.'
usage: '&cИспользование: /kick &e<игрок> <причина>&c.'
layout:
- '&7&lВас кикнули!&f'
- ''
- '&cПричина:&f'
- '&7%REASON%'
permission:
both: '&cВам нельзя кикать игроков.'
uuid: '&cВам нельзя кикать игроков по uuid/нику.'
ip-address: '&cВам нельзя кикать по ip-адресу.'
bans:
conflicting: '&c&o%TARGET%&7 уже заблокирован.'
success:
notification: '&c&o%OPERATOR%&7 заблокировал &c&o%VICTIM%&7 на &a&o%DURATION%&7 по причине &e&o%REASON%&7.'
message: '&c&o%VICTIM%&a заблокирован на &o%DURATION%&r&a по причине &e&o%REASON%&a.'
usage: '&cИспользование: /ban &e<игрок> [длительность] <причина>&c.'
layout:
- '&7&lВы заблокированы на этом сервере.&f'
- '&cДлительность бана: &e%TIME_REMAINING%&f'
- ''
- '&cПричина&f'
- '&7%REASON%&f'
- ''
- '&3По поводу разбана пишите в тех.поддержку:&f'
- '&cwww.support.com'
permission:
duration: '&cТебе нельзя банить на &e%DURATION%&c.'
both: '&cВы не можете блокировать игроков.'
uuid: '&cВы не можете банить игроков по uuid/нику.'
ip-address: '&cВы не можете банить игроков по ip!.'
mutes:
conflicting: '&c&o%TARGET%&7 уже заглушён.'
success:
notification: '&c&o%OPERATOR%&7 заглушил &c&o%VICTIM%&7 на &a&o%DURATION%&7 по причине &e&o%REASON%&7.'
message: '&c&o%VICTIM%&a заглушён на &o%DURATION%&r&a по причине &e&o%REASON%&a.'
usage: '&cИспользование: /mute &e<игрок> [длительность] <причина>&c.'
layout:
- '&7&lВы получили мут!&f'
- '&cДлительность: &e%TIME_REMAINING%&f'
- ''
- '&cПричина:&f'
- '&7%REASON%'
permission:
duration: '&cВам нельзя мутить на &e%DURATION%&c.'
both: '&cВы не можете мутить игроков.'
uuid: '&cВы не можете мутить игроков по uuid/нику.'
ip-address: '&cВы не можете мутить игроков по ip-адресу.'
# Regards /unban, /unmute, /unwarn
removals:
warns:
success:
notification: '&c&o%UNOPERATOR%&7 снял предупреждение с &c&o%VICTIM%&7.'
message: '&7C &c&o%VICTIM% &7снято предупреждение.'
not-found: 'У &c&o%TARGET%&7 нету предупреждений с id &c&o%ID%&7.'
not-a-number: '&c&o%ID_ARG%&7 не является номером.'
usage: '&cИспользование: /unwarn &e<игрок> <id>&c.'
permission:
both: '&cВы не можете снимать предупреждения.'
uuid: '&cВы не можете снимать предупрежедния по uuid/нику.'
ip-address: '&cВы не можете снимать предупреждения по ip-адресу.'
bans:
success:
notification: '&c&o%UNOPERATOR%&7 разбанил &c&o%VICTIM%&7.'
message: '&7Снят бан с аккаунта &c&o%VICTIM%&7.'
not-found: '&c&o%TARGET%&7 не заблокирован.'
usage: '&cИспользование: /unban &e<игрок>&c.'
permission:
both: '&cВы не можете разбанивать игроков..'
uuid: '&cВы не можете разбанивать игроков по uuid/нику.'
ip-address: '&cВы не можете разбанивать игроков по ip-адресу.'
mutes:
success:
notification: '&c&o%UNOPERATOR%&7 размутил &c&o%VICTIM%&7.'
message: '&7С &c&o%VICTIM%&7 снят мут.'
not-found: '&c У &o%TARGET%&7 нету мута.'
usage: '&cИспользование: /unmute &e<игрок>&c.'
permission:
both: '&cYou may not do this to players and their IP addresses.'
uuid: '&cВам нельзя размучивать других игроков.'
ip-address: '&cВам нельзя размучивать по ip-адрессу.'
# Specific formatting options
formatting:
# When using /blame, how should the console be specified?
console-arguments:
- 'console'
# How should 'permanent' be displayed as a length of time?
permanent-display:
# When does a permanent punishment end?
absolute: 'Никогда'
# What do you call a permanent duration?
duration: 'Бесконечное'
# How do you describe the time remaining in a permanent punishment?
relative: 'Навеки вечные'
# When there is no more time remaining in a punishment (the punishment has expired),
# this becomes the value of the %TIME_REMAINING% variable
no-time-remaining-display: 'N/A'
# How should the %HAS_EXPIRED% variable be displayed?
punishment-expired-display:
# How do you describe an expired punishment?
expired: 'Более неактивен'
# How do you describe a punishment which is not expired?
not-expired: 'Активен'
# How should the console be displayed?
console-display: 'Консоль'
# How should punishment types be displayed?
punishment-type-display:
WARN: 'Предупрежедние'
MUTE: 'Мут'
KICK: 'Кик'
BAN: 'Бан'
# How should punishment types be displayed as a verb? Used for the %TYPE_VERB% variable.
punishment-type-verb-display:
WARN: 'Предупрежден'
KICK: 'Кикнут'
MUTE: 'Заглушен'
BAN: 'Заблокирован'
# How should the global scope be displayed?
global-scope-display: 'Все сервера'
# There are 2 ways to make permanent punishments. The first is to not specify a time (/ban <player> <reason>).
# The second is to specify a permanent amount of time (/ban <player> perm <reason>).
# When typing commands, what time arguments will be counted as permanent?
permanent-arguments:
- 'perm'
- 'permanent'
- 'permanently'
misc:
# Concerns formatting of relative times and durations
time:
grammar:
# What should come before the last fragment? Set to empty text to disable
and: 'и '
# If enabled, places commas after each time fragment, except the last one
comma: true
# Times are formatted to seconds accuracy, but you may not want to display seconds
# for most times. However, for very small durations, you need to display a value in seconds.
# If you are using SECONDS in the above section, this value is meaningless.
fallback-seconds: '%VALUE% секунд(ы)'
fragments:
MONTHS: '%VALUE% месяцев'
MINUTES: '%VALUE% минут(ы)'
WEEKS: '%VALUE% недель'
HOURS: '%VALUE% час(а/ов)'
DAYS: '%VALUE% дней'
YEARS: '%VALUE% лет'
unknown-error: '&cПроизошла неизвестная ошибка.'
# Only applicable if synchronous enforcement strategy is DENY in the main config
sync-chat-denial-message: '&cСинхронный чат отключён. &7Попробуйте еще раз позже.'
admin:
importing:
failure: '&cИмпорт данных завершился! Больше информации в консоли.'
started: '&7Импорт данных закончился неудачей. Больше информации в консоли.'
complete: '&7Импорт данных успешно завершён.'
# To prevent mistakes, it is not allowed to import multiple times at once.
in-progress: '&cИмпорт данных уже запущен! Пожалуйста, дождитесь его окончания.'
usage: '&cИспользование: /libertybans import <advancedban|litebans|vanilla>'
ellipses: '&a...'
reloaded: '&aПерезагружено'
restarted: '&aПерезапущено'
no-permission: '&Извините, но вам не дозволено использовать это.'
# Messages for alt-checks and alt account notifications
#
# Before configuring this section, it is necessary to look at the address-enforcement
# settings in the main config.yml and understand the different kinds of alt detection.
# There is normal and strict detection.
alts:
# Regarding the /alts command
command:
# The message to display atop the alt check. Set to an empty string to disable
header:
- '&7Возможные фейковые аккаунты игрока &c&o%TARGET%&f'
- '&7Большая вероятность - У игрока тот же адресс, что и у заблокированного игрока.&f'
- '&7Небольшая вероятность - У игроков один и тот же предыдущий адрес.'
permission: '&cВам не дозволено проверять твинки.'
none-found: '&7Не найдено фейковых аккаунтов.'
usage: '&cИспользование: /alts &e<игрок>&c.'
formatting:
# The description for an alt account detected by strict detection.
strict: '&eНебольшая вероятность'
# The description for an alt account detected by normal detection.
normal: '&cБольшая вероятность'
# In the alt-check layout, the username of the alt may be formatted depending upon whether it is banned
# For example, the usernames of banned alts may be colored red whereas alts not banned are green
# Variables: %USERNAME%
name-display:
not-punished: '&o%USERNAME%'
banned: '&c&o%USERNAME%'
muted: '&e&o%USERNAME%'
# How a single detected alt should be displayed
# Available variables:
# %DETECTION_KIND% - how the account was detected. Will be replaced by the normal or strict options.
# %ADDRESS% - the address in question which led to the detection
# %RELEVANT_USER% - the username of the other account, formatted according to the name-display option
# %RELEVANT_USERID% - the uuid of the other account
# %DATE_RECORDED% - the date the alt account was recorded
layout: '%RELEVANT_USER% &7(%ADDRESS%) на %DATE_RECORDED% - %DETECTION_KIND%'
auto-show:
# The message to display atop the alt check. Set to an empty string to disable
header:
- 'Возможно, &c&o%TARGET%&7. - фейковый аккаунт.&f'
- '&7Большая вероятность - У игрока тот же адрес, что и у заблокированного игрока.&f'
- '&7Небольшая вероятность - У игроков один и тот же предыдущий адрес.'
# Configuration for the /accounthistory command
account-history:
# Pertains to /accounthistory delete <user> <timestamp>
delete:
permission: '&cВы не можете удалять записанные аккаунты.'
no-such-account: '&c У %TARGET% не было записанных акаунтов в тот момент времени.'
usage:
- '&cИспользование: /accounthistory delete <пользователь> <момент времент>.&f'
- '&7Момент времени измеряется в секундах. Вы можете использовать /accounthistory list для того, чтобы подглядеть возможные значения.'
success: '&7Записанный у &e%TARGET% &7аккаунт успешно удалён.'
# Regards /accounthistory list <user>
listing:
# The message to display before the account listing. Set to an empty string to disable
header: '&7Известные аккаунты у &c&o%TARGET%&7:.'
permission: '&cВы не можете просматривать записанные аккаунты.'
none-found: '&7Не найдено записанных акаунтов.'
usage: '&cИспользование: /accounthistory list <user|ip>'
# How a single recorded account should be displayed
# Available variables:
# %TARGET% - the original input to the command
# %USERNAME% - the username the player connected with
# %ADDRESS% - the address the player connected with
# %DATE_RECORDED% - the date the join was recorded
# %DATE_RECORDED_RAW% - the raw timestamp the join was recorded
layout: '%USERNAME% &7(%ADDRESS%) на %DATE_RECORDED% (%DATE_RECORDED_RAW%)||ttp:&7Нажми здесь, чтобы удалить аккаунт||cmd:/accounthistory delete %TARGET% %DATE_RECORDED_RAW%'
usage: '&cИспользование: /accounthistory <delete|list>'

View File

@ -0,0 +1,48 @@
# This file is for proxies like BungeeCord and Velocity. It is irrelevant for single servers.
# It controls scope-related settings for this particular server on the network.
#
# Unlike other configuration files, one should NOT copy the scope.yml across multiple server instances
# Whether to require permissions for using scopes:
# - libertybans.scope.global, libertybans.scope.server.<server>, and libertybans.scope.category.<category>
# become requirements to use the relevant scopes explicitly.
# - libertybans.scope.default must be granted to use commands without a scope argument
require-permissions: false
# The default scope used to punish players
#
# GLOBAL - uses the global scope
# THIS_SERVER - applies to this server only via the server name
# PRIMARY_CATEGORY - uses the first category listed in 'categories-applicable-to-this-server'.
#
# If you use PRIMARY_CATEGORY but no categories are configured, a warning is printed and THIS_SERVER is used.
default-punishing-scope: 'GLOBAL'
# The scope categories applicable to this server
#
# For example, multiple servers might fall under the 'kitpvp' category,
# then staff members may use '-category=kitpvp' to create punishment applying to these servers
categories-applicable-to-this-server: []
# Controls how the name of this server is detected for use with the server scope.
#
# The server name should correspond to the name of the backend server as configured on the proxy.
# The name of the proxy itself is 'proxy' by default, unless overridden.
server-name:
# Auto detection requires a player to have logged in. But you might punish players, e.g. via console, before that.
# By default, if auto detection has not yet occurred, the global scope will be used as a fallback.
# The fallback scope may be configured here to something else.
fallback-if-auto-detect-fails: '*'
# By default, we try to detect the name of this backend server using plugin messaging.
# Make sure 'use-plugin-messaging' is enabled in the config.yml for this detection to succeed.
#
# If running a proxy, the detected name becomes 'proxy'.
#
# Plugin messaging requires at least one player to have logged into the backend server.
# Auto detection may fail, for example, if you ban someone through the console but no one has joined yet.
#
# To disable auto detection, set this to false then configure 'override-value' to the server name you wish to use.
# Re-enabling this option may require a restart (/libertybans restart)
auto-detect: true
# If auto detection is disabled, this option should be set to the name of the server.
#
# Server names should be unique, but this is not a strict requirement.
# If you want a scope applying to multiple servers, you should use categories instead.
override-value: 'myserver'

View File

@ -0,0 +1,119 @@
#
# SQL Database settings
#
# For most servers, the default options here are perfect. Most users will not need to bother here.
#
# However, for servers wishing to use an external database, or for large servers wishing to tweak performance,
# further configuration is made here.
#
# Database version requirements:
# - MariaDB: Requires MariaDB 10.6 or newer.
# - MySQL: Requires MySQL 8.0 or newer.
# - PostgreSQL: Requires PostgreSQL 12 or newer.
# - CockroachDB: Requires the latest version. Support for this database is experimental.
#
# Older versions of these respective databases are not supported.
#
# Information on character sets and encoding:
# - MariaDB: UTF8 is configured automatically
# - MySQL: UTF8 is configured automatically
# - PostgreSQL: UTF8 is used for the client encoding. It may be necessary to configure the database collation to use UTF8.
# - CockroachDB: This database uses UTF8 regardless.
#
# Note well:
# To apply changes made here, use '/libertybans restart' or restart the server.
# Using '/libertybans reload' will NOT update your database settings!
#
#
#
# Settings for synchronizing multiple LibertyBans instances.
synchronization:
# How frequently the database is polled for updates, in milliseconds.
# Usually the default setting of 4 seconds will be sufficiently responsive without querying the database too often
# If you want to increase responsiveness, lower this value. If you want to reduce database load, increase this value.
#
# This value MUST be less than 30 seconds.
poll-rate-millis: 4000
# Availalble synchronization options:
# NONE - no synchronization
# ANSI_SQL - uses your database to synchronize punishments (called ANSI_SQL because it uses standard SQL)
# Other options may be added in the future, upon feature request.
mode: 'NONE'
# All punishments are stored fully in the database, with one exception.
# Mutes are cached for a small period of time so that players' chatting does not
# flood your database with queries.
#
# Note: It is likely you do not need to touch this.
mute-caching:
# How the expiration time should be used. EXPIRE_AFTER_ACCESS is the default,
# which means that a cached mute's expiration time will be reset each time it is used.
#
# Set this to EXPIRE_AFTER_WRITE if there is any program or other instance of LibertyBans
# which may modify mutes in the database outside of this instance of LibertyBans.
# For example, if you are using a third-party tool which can delete or add mutes,
# EXPIRE_AFTER_WRITE is the correct semantic.
#
# If you are using multi-instance synchronization, this option is set automatically
# and you do not need to configure it.
#
# EXPIRE_AFTER_WRITE will expire the cached mute after a fixed time has elapsed
# since the mute was fetched. With EXPIRE_AFTER_ACCESS, the expiration time
# will refresh each time the mute is used.
expiration-semantics: 'EXPIRE_AFTER_ACCESS'
# How long it takes a mute to expire
expiration-time-seconds: 20
#
# Connection timeout settings
# LibertyBans uses HikariCP for connection pooling. The following settings control connection timeouts.
timeouts:
# How long, at maximum, should LibertyBans wait when acquiring new connections, if no existing connection is available?
connection-timeout-seconds: 14
# How long, at maxium, should a connection in the pool last before having to be recreated?
# "This value should be set for MariaDB or MySQL. HikariCP notes:
# "It should be several seconds shorter than any database or infrastructure imposed connection time limit"
max-lifetime-minutes: 25
# Authentication details for remote databases: used for MariaDB, MySQL, PostgreSQL, and CockroachDB.
auth-details:
database: 'minecraft_db'
password: '0000'
user: 'minecraft'
host: '127.0.0.1'
port: 3306
# The values in this section only apply when using a MariaDB or MySQL database
mariadb:
# Connection properties to be applied to database connections
connection-properties:
cachePrepStmts: 'true'
useUnicode: 'true'
prepStmtCacheSqlLimit: '1024'
characterEncoding: 'UTF-8'
prepStmtCacheSize: '25'
useServerPrepStmts: 'true'
# The values in this section only apply when using a PostgreSQL or CockroachDB database
postgres:
# Connection properties to be applied to database connections
connection-properties:
preparedStatementCacheQueries: '25'
# Legacy option. Don't touch this unless you understand it or you're told to enable it.
use-traditional-jdbc-url: false
# What RDMS vendor will you be using?
# Available options:
# 'HSQLDB' - Local HyperSQL database. No additional requirements.
# 'MARIADB' - Requires an external MariaDB database. At least MariaDB 10.6 is required.
# 'MYSQL' - Requires an external MySQL database. At least MySQL 8.0 is required.
# 'POSTGRES' - Requires an external PostgreSQL database. At least PostgreSQL 12 is required.
# 'COCKROACH' - Requires an external CockroachDB database. The latest CockroachDB is required. Warning: this option is strictly experimental.
rdms-vendor: 'HSQLDB'
#
# How large should the connection pool be?
# A thread pool of similar size is derived from the connection pool size.
# For most servers, the default option is suitable.
connection-pool-size: 6

BIN
src/plugins/LibertyBans_Release-1.1.0.jar (Stored with Git LFS) Normal file

Binary file not shown.