Initial server configuration

This commit is contained in:
2026-06-01 21:02:52 +03:00
commit 6c51390cab
398 changed files with 86675 additions and 0 deletions
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large Load Diff
+55
View File
@@ -0,0 +1,55 @@
# This configuration file allows you to execute commands on various events.
# Supported placeholders in commands:
# %p is replaced with the player name.
# %nick is replaced with the player's nick name
# %ip is replaced with the player's IP address
# %country is replaced with the player's country
#
# For example, if you want to send a welcome message to a player who just registered:
# onRegister:
# welcome:
# command: 'msg %p Welcome to the server!'
# executor: CONSOLE
#
# This will make the console execute the msg command to the player.
# Each command under an event has a name you can choose freely (e.g. 'welcome' as above),
# after which a mandatory 'command' field defines the command to run,
# and 'executor' defines who will run the command (either PLAYER or CONSOLE). Longer example:
# onLogin:
# welcome:
# command: 'msg %p Welcome back!'
# executor: PLAYER
# broadcast:
# command: 'broadcast %p has joined, welcome back!'
# executor: CONSOLE
#
# You can also add delay to command. It will run after the specified ticks. Example:
# onLogin:
# rules:
# command: 'rules'
# executor: PLAYER
# delay: 200
#
# Supported command events: onLogin, onSessionLogin, onFirstLogin, onJoin, onLogout, onRegister, onUnregister
#
# For onLogin and onFirstLogin, you can use 'ifNumberOfAccountsLessThan' and 'ifNumberOfAccountsAtLeast'
# to specify limits to how many accounts a player can have (matched by IP) for a command to be run:
# onLogin:
# warnOnManyAccounts:
# command: 'say Uh oh! %p has many alt accounts!'
# executor: CONSOLE
# ifNumberOfAccountsAtLeast: 5
# Commands to run for players logging in whose 'last login date' was empty
onFirstLogin: {}
onJoin: {}
onLogin: {}
# These commands are called whenever a logged in player uses /logout or quits.
# The commands are not run if a player that was not logged in quits the server.
# Note: if your server crashes, these commands won't be run, so don't rely on them to undo
# 'onLogin' commands that would be dangerous for non-logged in players to have!
onLogout: {}
onRegister: {}
onSessionLogin: {}
# Commands to run whenever a player is unregistered (by himself, or by an admin)
onUnregister: {}
+667
View File
@@ -0,0 +1,667 @@
DataSource:
# What type of database do you want to use?
# Valid values: H2, SQLITE, MARIADB, MYSQL, POSTGRESQL
backend: SQLITE
# Enable the database caching system, should be disabled on bungeecord environments
# or when a website integration is being used.
caching: true
# Should we try to use VirtualThreads(Java 21+) for database cache loader?
useVirtualThreadsCache: false
# Database host address
mySQLHost: 127.0.0.1
# Database port
mySQLPort: '3306'
# Replacement of Mysql's useSsl (for MariaDB only).
# - disable: No SSL
# - trust: Trust blindly (no validation)
# - verify_ca: Encryption, certificates validation, BUT no hostname verification
# - verify_full: Encryption, certificate validation and hostname validation
# Read more: https://bit.ly/mariadb-sslmode
MariaDbSslMode: disabled
# Connect to MySQL database over SSL
# If you're using MariaDB, use sslMode instead
mySQLUseSSL: true
# Verification of server's certificate.
# We would not recommend to set this option to false.
# Set this option to false at your own risk if and only if you know what you're doing
mySQLCheckServerCertificate: true
# Authorize client to retrieve RSA server public key.
# Advanced option, ignore if you don't know what it means.
# If you are using MariaDB, use MariaDbSslMode instead.
mySQLAllowPublicKeyRetrieval: true
# Username to connect to the MySQL database
mySQLUsername: authme
# Password to connect to the MySQL database
mySQLPassword: '12345'
# Database Name, use with converters or as SQLITE database name
mySQLDatabase: authme
# Table of the database
mySQLTablename: authme
# Column of IDs to sort data
mySQLColumnId: id
# Column for storing or checking players nickname
mySQLColumnName: username
# Column for storing or checking players RealName
mySQLRealName: realname
# Column for storing players passwords
mySQLColumnPassword: password
# Column for storing players passwords salts
mySQLColumnSalt: ''
# Column for storing players emails
mySQLColumnEmail: email
# Column for storing if a player is logged in or not
mySQLColumnLogged: isLogged
# Column for storing if a player has a valid session or not
mySQLColumnHasSession: hasSession
# Column for storing a player's TOTP key (for two-factor authentication)
mySQLtotpKey: totp
# Column for storing the player's last IP
mySQLColumnIp: ip
# Column for storing players lastlogins
mySQLColumnLastLogin: lastlogin
# Column storing the registration date
mySQLColumnRegisterDate: regdate
# Column for storing the IP address at the time of registration
mySQLColumnRegisterIp: regip
# Column for storing player LastLocation - X
mySQLlastlocX: x
# Column for storing player LastLocation - Y
mySQLlastlocY: y
# Column for storing player LastLocation - Z
mySQLlastlocZ: z
# Column for storing player LastLocation - World Name
mySQLlastlocWorld: world
# Column for storing player LastLocation - Yaw
mySQLlastlocYaw: yaw
# Column for storing player LastLocation - Pitch
mySQLlastlocPitch: pitch
# Column for storing players uuids (optional)
mySQLPlayerUUID: ''
# Overrides the size of the DB Connection Pool, default = 10
poolSize: 10
# The maximum lifetime of a connection in the pool, default = 1800 seconds
# You should set this at least 30 seconds less than mysql server wait_timeout
maxLifetime: 1800
ExternalBoardOptions:
# Column for storing players groups
mySQLColumnGroup: ''
# -1 means disabled. If you want that only activated players
# can log into your server, you can set here the group number
# of unactivated users, needed for some forum/CMS support
nonActivedUserGroup: -1
# Other MySQL columns where we need to put the username (case-sensitive)
mySQLOtherUsernameColumns: []
# How much log2 rounds needed in BCrypt (do not change if you do not know what it does)
bCryptLog2Round: 12
# phpBB table prefix defined during the phpBB installation process
phpbbTablePrefix: phpbb_
# phpBB activated group ID; 2 is the default registered group defined by phpBB
phpbbActivatedGroupId: 2
# IP Board table prefix defined during the IP Board installation process
IPBTablePrefix: ipb_
# IP Board default group ID; 3 is the default registered group defined by IP Board
IPBActivatedGroupId: 3
# Xenforo table prefix defined during the Xenforo installation process
XFTablePrefix: xf_
# XenForo default group ID; 2 is the default registered group defined by Xenforo
XFActivatedGroupId: 2
# Wordpress prefix defined during WordPress installation
wordpressTablePrefix: wp_
3rdPartyFeature:
compatibility:
# Should we execute /help command when unregistered players press Shift+F?
# This keeps compatibility with some menu plugins
# If you are using TrMenu, don't enable this because TrMenu already implemented this.
menuPlugins: false
features:
i18nMessages:
# Send i18n messages to player based on their client settings, this option will override `settings.messagesLanguage`
# (Requires ProtocolLib)
# This will not affect language of AuthMe help command.
enabled: false
# Redirect locale code to certain AuthMe language code as you want
# Minecraft locale list: https://minecraft.wiki/w/Language
# AuthMe language code: https://github.com/HaHaWTH/AuthMeReReloaded/blob/master/docs/translations.md
# For example, if you want to show Russian messages to player using language Tatar(tt_ru),
# and show Chinese Simplified messages to player using language Classical Chinese(lzh), then:
# locale-code-redirect:
# - 'tt_ru:ru'
# - 'lzh:zhcn'
locale-code-redirect:
- tt_ru:ru
- lzh:zhcn
# Should we let Bedrock players login automatically?
# (Requires hookFloodgate to be true & floodgate loaded)
# (**THIS IS SAFE DO NOT WORRY**)
bedrockAutoLogin: false
purgeData:
# Should we purge data on non-registered players quit?
purgeOnQuit: false
# Which world's player data should be deleted?(Enter the world *FOLDER* name where your players first logged in)
purgeWorldFolderName: world
fixes:
# Enable the new feature to prevent ghost players?
antiGhostPlayer: false
# (MC1.13- only)
# Should we fix the shulker crash bug with advanced method?
advancedShulkerFix: false
loginLocationFix:
# Should we fix the location when players logged in the portal?
fixPortalStuck: false
# Should we fix the location when players logged underground?
fixGroundStuck: false
settings:
sessions:
# Do you want to enable the session feature?
# If enabled, when a player authenticates successfully,
# his IP and his nickname is saved.
# The next time the player joins the server, if his IP
# is the same as last time and the timeout hasn't
# expired, he will not need to authenticate.
enabled: true
# After how many minutes should a session expire?
# A player's session ends after the timeout or if his IP has changed
timeout: 180
# Message language, available languages:
# https://github.com/AuthMe/AuthMeReloaded/blob/master/docs/translations.md
# Example: zhcn, en
messagesLanguage: en
# Forces authme to hook into Vault instead of a specific permission handler system.
forceVaultHook: false
# Log level: INFO, FINE, DEBUG. Use INFO for general messages,
# FINE for some additional detailed ones (like password failed),
# and DEBUG for debugging
logLevel: FINE
# By default we schedule async tasks when talking to the database. If you want
# typical communication with the database to happen synchronously, set this to false
useAsyncTasks: true
# The name of the server, used in some placeholders.
serverName: Chocopie SMP
restrictions:
# Can not authenticated players chat?
# Keep in mind that this feature also blocks all commands not
# listed in the list below.
allowChat: false
# Hide the chat log from players who are not authenticated?
hideChat: false
# Allowed commands for unauthenticated players
allowCommands:
- /login
- /log
- /l
- /register
- /reg
- /email
- /captcha
- /2fa
- /totp
# Max number of allowed registrations per IP
# The value 0 means an unlimited number of registrations!
maxRegPerIp: 0
# Minimum allowed username length
minNicknameLength: 3
# Maximum allowed username length
maxNicknameLength: 16
# When this setting is enabled, online players can't be kicked out
# due to "Logged in from another Location"
# This setting will prevent potential security exploits.
ForceSingleSession: true
ForceSpawnLocOnJoin:
# If enabled, every player that spawn in one of the world listed in
# "ForceSpawnLocOnJoin.worlds" will be teleported to the spawnpoint after successful
# authentication. The quit location of the player will be overwritten.
# This is different from "teleportUnAuthedToSpawn" that teleport player
# to the spawnpoint on join.
enabled: false
# WorldNames where we need to force the spawn location
# Case-sensitive!
worlds:
- world
- world_nether
- world_the_end
# This option will save the quit location of the players.
SaveQuitLocation: false
# To activate the restricted user feature you need
# to enable this option and configure the AllowedRestrictedUser field.
AllowRestrictedUser: true
# The restricted user feature will kick players listed below
# if they don't match the defined IP address. Names are case-insensitive.
# You can use * as wildcard (127.0.0.*), or regex with a "regex:" prefix regex:127\.0\.0\..*
# Example:
# AllowedRestrictedUser:
# - playername;127.0.0.1
# - playername;regex:127\.0\.0\..*
AllowedRestrictedUser:
- server_land;127.0.0.1
- server;127.0.0.1
- bukkit;127.0.0.1
- purpur;127.0.0.1
- system;127.0.0.1
- admin;127.0.0.1
- md_5;127.0.0.1
- administrator;127.0.0.1
- notch;127.0.0.1
- spigot;127.0.0.1
- bukkitcraft;127.0.0.1
- paperclip;127.0.0.1
- papermc;127.0.0.1
- spigotmc;127.0.0.1
- root;127.0.0.1
- console;127.0.0.1
- authme;127.0.0.1
- owner;127.0.0.1
# Ban unknown IPs trying to log in with a restricted username?
banUnsafedIP: false
# Should unregistered players be kicked immediately?
kickNonRegistered: false
# Should players be kicked on wrong password?
kickOnWrongPassword: false
# Should not logged in players be teleported to the spawn?
# After the authentication they will be teleported back to
# their normal position.
teleportUnAuthedToSpawn: false
# Can unregistered players walk around?
allowMovement: false
# After how many seconds should players who fail to login or register
# be kicked? Set to 0 to disable.
timeout: 0
# Regex pattern of allowed characters in the player name.
allowedNicknameCharacters: '[a-zA-Z0-9_]*'
# How far can unregistered players walk?
# Set to 0 for unlimited radius
allowedMovementRadius: 0
# Should we protect the player inventory before logging in? Requires ProtocolLib.
ProtectInventoryBeforeLogIn: false
# Should we deny the tabcomplete feature before logging in? Requires ProtocolLib.
DenyTabCompleteBeforeLogin: false
# Should we display all other accounts from a player when he joins?
# permission: /authme.admin.accounts
displayOtherAccounts: false
# Spawn priority; values: authme, essentials, cmi, multiverse, default
spawnPriority: authme,essentials,cmi,multiverse,default
# Maximum Login authorized by IP
maxLoginPerIp: 0
# Maximum Join authorized by IP
maxJoinPerIp: 0
# AuthMe will NEVER teleport players if set to true!
noTeleport: false
# Regex syntax for allowed chars in passwords. The default [!-~] allows all visible ASCII
# characters, which is what we recommend. See also http://asciitable.com
# You can test your regex with https://regex101.com
allowedPasswordCharacters: '[!-~]*'
# Regex syntax for allowed chars in email.
allowedEmailCharacters: ^([a-zA-Z0-9_.+-]+)@([a-zA-Z0-9-]+)\.([a-zA-Z]{2,})$
GameMode:
# Force survival gamemode when player joins?
ForceSurvivalMode: false
unrestrictions:
# Below you can list all account names that AuthMe will ignore
# for registration or login. Configure it at your own risk!!
# This option adds compatibility with BuildCraft and some other mods.
# It is case-insensitive! Example:
# UnrestrictedName:
# - 'npcPlayer'
# - 'npcPlayer2'
UnrestrictedName: []
# Below you can list all inventories names that AuthMe will ignore
# for registration or login. Configure it at your own risk!!
# This option adds compatibility with some mods.
# It is case-insensitive! Example:
# UnrestrictedInventories:
# - 'myCustomInventory1'
# - 'myCustomInventory2'
UnrestrictedInventories: []
# Should we check unrestricted inventories strictly? (Original behavior)
StrictUnrestrictedInventoriesCheck: true
security:
# Minimum length of password
minPasswordLength: 8
# Maximum length of password
passwordMaxLength: 26
# Possible values: SHA256, BCRYPT, BCRYPT2Y, PBKDF2, SALTEDSHA512,
# MYBB, IPB3, PHPBB, PHPFUSION, SMF, XENFORO, XAUTH, JOOMLA, WBB3, WBB4, MD5VB,
# PBKDF2DJANGO, WORDPRESS, ROYALAUTH, ARGON2, NOCRYPT, CUSTOM (for developers only). See full list at
# https://github.com/AuthMe/AuthMeReloaded/blob/master/docs/hash_algorithms.md
# If you use ARGON2, check that you have the argon2 c library on your system
passwordHash: SHA256
# If a password check fails, AuthMe will also try to check with the following hash methods.
# Use this setting when you change from one hash method to another.
# AuthMe will update the password to the new hash. Example:
# legacyHashes:
# - 'SHA1'
legacyHashes: []
# Salt length for the SALTED2MD5 MD5(MD5(password)+salt)
doubleMD5SaltLength: 8
# Number of rounds to use if passwordHash is set to PBKDF2. Default is 10000
pbkdf2Rounds: 10000
# Prevent unsafe passwords from being used; put them in lowercase!
# You should always set 'help' as unsafePassword due to possible conflicts.
# unsafePasswords:
# - '123456'
# - 'password'
# - 'help'
unsafePasswords:
- '12345678'
- password
- qwertyui
- '123456789'
- '87654321'
- '1234567890'
- asdfghjkl
- zxcvbnm,
- asdfghjk
- '12312312'
- '123123123'
- '32132132'
- '321321321'
registration:
# Enable registration on the server?
enabled: true
# Send every X seconds a message to a player to
# remind him that he has to login/register
messageInterval: 5
# Only registered and logged in players can play.
# See restrictions for exceptions
force: true
# Type of registration: PASSWORD or EMAIL
# PASSWORD = account is registered with a password supplied by the user;
# EMAIL = password is generated and sent to the email provided by the user.
# More info at https://github.com/AuthMe/AuthMeReloaded/wiki/Registration
type: PASSWORD
# Second argument the /register command should take:
# NONE = no 2nd argument
# CONFIRMATION = must repeat first argument (pass or email)
# EMAIL_OPTIONAL = for password register: 2nd argument can be empty or have email address
# EMAIL_MANDATORY = for password register: 2nd argument MUST be an email address
secondArg: CONFIRMATION
email:
# Should we unregister the player when he didn't verify the email?
# This only works if you enabled email registration.
unregisterOnEmailVerificationFailure: false
# How many minutes should we wait before unregister the player
# when he didn't verify the email?
unregisterAfterMinutes: 10
# Do we force kick a player after a successful registration?
# Do not use with login feature below
forceKickAfterRegister: false
# Does AuthMe need to enforce a /login after a successful registration?
forceLoginAfterRegister: false
# Should we delay the join message and display it once the player has logged in?
delayJoinMessage: true
# The custom join message that will be sent after a successful login,
# keep empty to use the original one.
# Available variables:
# {PLAYERNAME}: the player name (no colors)
# {DISPLAYNAME}: the player display name (with colors)
# {DISPLAYNAMENOCOLOR}: the player display name (without colors)
customJoinMessage: ''
# Should we remove the leave messages of unlogged users?
removeUnloggedLeaveMessage: true
# Should we remove join messages altogether?
removeJoinMessage: true
# Should we remove leave messages altogether?
removeLeaveMessage: true
# Do we need to add potion effect Blinding before login/register?
applyBlindEffect: false
# Do we need to prevent people to login with another case?
# If Xephi is registered, then Xephi can login, but not XEPHI/xephi/XePhI
preventOtherCase: true
GroupOptions:
# Enables switching a player to defined permission groups before they log in.
# See below for a detailed explanation.
enablePermissionCheck: false
# This is a very important option: if a registered player joins the server
# AuthMe will switch him to unLoggedInGroup. This should prevent all major exploits.
# You can set up your permission plugin with this special group to have no permissions,
# or only permission to chat (or permission to send private messages etc.).
# The better way is to set up this group with few permissions, so if a player
# tries to exploit an account they can do only what you've defined for the group.
# After login, the player will be moved to his correct permissions group!
# Please note that the group name is case-sensitive, so 'admin' is different from 'Admin'
# Otherwise your group will be wiped and the player will join in the default group []!
# Example: registeredPlayerGroup: 'NotLogged'
registeredPlayerGroup: ''
# Similar to above, unregistered players can be set to the following
# permissions group
unregisteredPlayerGroup: ''
Email:
# Email SMTP server host
mailSMTP: smtp.163.com
# Email SMTP server port
mailPort: 465
# Only affects port 25: enable TLS/STARTTLS?
useTls: true
# Email account which sends the mails
mailAccount: ''
# Email account password
mailPassword: ''
# Email address, fill when mailAccount is not the email address of the account
mailAddress: ''
# Custom sender name, replacing the mailAccount name in the email
mailSenderName: ''
# Recovery password length
RecoveryPasswordLength: 12
# Mail Subject
mailSubject: Your new AuthMe password
# Like maxRegPerIP but with email
maxRegPerEmail: 1
# Recall players to add an email?
recallPlayers: false
# Delay in minute for the recall scheduler
delayRecall: 5
# Send the new password drawn in an image?
generateImage: false
# The OAuth2 token
emailOauth2Token: ''
# Email notifications when the server shuts down
shutDownEmail: false
# Email notification address when the server is shut down
shutDownEmailAddress: your@mail.com
Hooks:
# Do we need to hook with multiverse for spawn checking?
multiverse: true
# Do we need to hook with PlaceholderAPI for AuthMe placeholders?
placeholderapi: true
# Do we need to hook with BungeeCord?
bungeecord: false
# Do we need to hook with Velocity?
velocity: false
# How many ticks should we wait before sending login info to proxy?
# Change this to higher if your player has high ping.
# See: https://www.spigotmc.org/wiki/bukkit-bungee-plugin-messaging-channel/
proxySendDelay: 10
# Hook into floodgate.
# This must be true if you want to use other bedrock features.
floodgate: false
# Allow bedrock players join without check isValidName?
ignoreBedrockNameCheck: true
# Send player to this BungeeCord server after register/login
sendPlayerTo: ''
# Do we need to disable Essentials SocialSpy on join?
disableSocialSpy: false
# Do we need to force /motd Essentials command on join?
useEssentialsMotd: false
Protection:
# Enable some servers protection (country based login, antibot)
enableProtection: false
# Apply the protection also to registered usernames
enableProtectionRegistered: false
# Countries allowed to join the server and register. For country codes, see
# https://dev.maxmind.com/geoip/legacy/codes/iso3166/
# Use "LOCALHOST" for local addresses.
# PLEASE USE QUOTES!
countries:
- LOCALHOST
# Countries not allowed to join the server and register
# PLEASE USE QUOTES!
countriesBlacklist:
- A1
# Do we need to enable automatic antibot system?
enableAntiBot: true
# The interval in seconds
antiBotInterval: 5
# Max number of players allowed to login in the interval
# before the AntiBot system is enabled automatically
antiBotSensibility: 10
# Duration in minutes of the antibot automatic system
antiBotDuration: 10
# Delay in seconds before the antibot activation
antiBotDelay: 60
quickCommands:
# Kicks the player that issued a command before the defined time after the join process
denyCommandsBeforeMilliseconds: 1000
Purge:
# If enabled, AuthMe automatically purges old, unused accounts
useAutoPurge: false
# Number of days after which an account should be purged
daysBeforeRemovePlayer: 60
# Do we need to remove the player.dat file during purge process?
removePlayerDat: false
# Do we need to remove the Essentials/userdata/player.yml file during purge process?
removeEssentialsFile: false
# World in which the players.dat are stored
defaultWorld: world
# Remove LimitedCreative/inventories/player.yml, player_creative.yml files during purge?
removeLimitedCreativesInventories: false
# Do we need to remove the AntiXRayData/PlayerData/player file during purge process?
removeAntiXRayFile: false
# Do we need to remove permissions?
removePermissions: false
Security:
SQLProblem:
# Stop the server if we can't contact the sql database
# Take care with this, if you set this to false,
# AuthMe will automatically disable and the server won't be protected!
stopServer: false
console:
# Copy AuthMe log output in a separate file as well?
logConsole: true
account:
haveIBeenPwned:
# Query haveibeenpwned.com with a hashed version of the password.
# This is used to check whether it is safe.
check: false
# If the password is used more than this number of times, it is considered unsafe.
limit: 0
emailVerification:
# Require email verification when changing password if email feature enabled.
# Original behavior is true
required: true
captcha:
# Enable captcha when a player uses wrong password too many times
useCaptcha: false
# Max allowed tries before a captcha is required
maxLoginTry: 8
# Captcha length
captchaLength: 6
# Minutes after which login attempts count is reset for a player
captchaCountReset: 120
# Require captcha before a player may register?
requireForRegistration: false
tempban:
# Tempban a user's IP address if they enter the wrong password too many times
enableTempban: false
# How many times a user can attempt to login before their IP being tempbanned
maxLoginTries: 8
# The length of time a IP address will be tempbanned in minutes
# Default: 480 minutes, or 8 hours
tempbanLength: 480
# How many minutes before resetting the count for failed logins by IP and username
# Default: 480 minutes (8 hours)
minutesBeforeCounterReset: 480
# The command to execute instead of using the internal ban system, empty if disabled.
# Available placeholders: %player%, %ip%
customCommand: ''
recoveryCode:
# Number of characters a recovery code should have (0 to disable)
length: 8
# How many hours is a recovery code valid for?
validForHours: 6
# Max number of tries to enter recovery code
maxTries: 4
# How long a player has after password recovery to change their password
# without logging in. This is in minutes.
# Default: 2 minutes
passwordChangeTimeout: 5
emailRecovery:
# Seconds a user has to wait for before a password recovery mail may be sent again
# This prevents an attacker from abusing AuthMe's email feature.
cooldown: 60
privacy:
# The mail shown using /email show will be partially hidden
# E.g. (if enabled)
# original email: my.email@example.com
# hidden email: my.***@***mple.com
enableEmailMasking: false
# Minutes after which a verification code will expire
verificationCodeExpiration: 10
Plugin:
updates:
# Check for updates on enabled from GitHub?
checkForUpdates: true
banners:
# Should we show the AuthMe banner on startup?
showBanners: true
# Before a user logs in, various properties are temporarily removed from the player,
# such as OP status, ability to fly, and walk/fly speed.
# Once the user is logged in, we add back the properties we previously saved.
# In this section, you may define how these properties should be handled.
# Read more at https://github.com/AuthMe/AuthMeReloaded/wiki/Limbo-players
limbo:
persistence:
# Besides storing the data in memory, you can define if/how the data should be persisted
# on disk. This is useful in case of a server crash, so next time the server starts we can
# properly restore things like OP status, ability to fly, and walk/fly speed.
# DISABLED: no disk storage,
# INDIVIDUAL_FILES: each player data in its own file,
# DISTRIBUTED_FILES: distributes players into different files based on their UUID, see below
type: INDIVIDUAL_FILES
# This setting only affects DISTRIBUTED_FILES persistence. The distributed file
# persistence attempts to reduce the number of files by distributing players into various
# buckets based on their UUID. This setting defines into how many files the players should
# be distributed. Possible values: ONE, FOUR, EIGHT, SIXTEEN, THIRTY_TWO, SIXTY_FOUR,
# ONE_TWENTY for 128, TWO_FIFTY for 256.
# For example, if you expect 100 non-logged in players, setting to SIXTEEN will average
# 6.25 players per file (100 / 16).
# Note: if you change this setting all data will be migrated. If you have a lot of data,
# change this setting only on server restart, not with /authme reload.
distributionSize: SIXTEEN
# Whether the player is allowed to fly: RESTORE, ENABLE, DISABLE, NOTHING.
# RESTORE sets back the old property from the player. NOTHING will prevent AuthMe
# from modifying the 'allow flight' property on the player.
restoreAllowFlight: RESTORE
# Restore fly speed: RESTORE, DEFAULT, MAX_RESTORE, RESTORE_NO_ZERO.
# RESTORE: restore the speed the player had;
# DEFAULT: always set to default speed;
# MAX_RESTORE: take the maximum of the player's current speed and the previous one
# RESTORE_NO_ZERO: Like 'restore' but sets speed to default if the player's speed was 0
restoreFlySpeed: RESTORE_NO_ZERO
# Restore walk speed: RESTORE, DEFAULT, MAX_RESTORE, RESTORE_NO_ZERO.
# See above for a description of the values.
restoreWalkSpeed: RESTORE_NO_ZERO
BackupSystem:
# General configuration for backups: if false, no backups are possible
ActivateBackup: false
# Create backup at every start of server
OnServerStart: false
# Create backup at every stop of server
OnServerStop: true
# Windows only: MySQL installation path
MysqlWindowsPath: C:\Program Files\MySQL\MySQL Server 5.1\
# Converter settings: see https://github.com/AuthMe/AuthMeReloaded/wiki/Converters
Converter:
CrazyLogin:
# CrazyLogin database file name
fileName: accounts.db
loginSecurity:
# LoginSecurity: convert from SQLite; if false we use MySQL
useSqlite: true
mySql:
# LoginSecurity MySQL: database host
host: ''
# LoginSecurity MySQL: database name
database: ''
# LoginSecurity MySQL: database user
user: ''
# LoginSecurity MySQL: password for database user
password: ''
+121
View File
@@ -0,0 +1,121 @@
<div class="mail">
<style>
.mail td{
font-family: "Segoe UI", sans-serif;
text-align: center;
font-size: 16px;
color: #718096;
}
.mail th, div, p, a, h1, h2, h3, h4, h5, h6{
font-family: "Segoe UI", sans-serif;
text-align: center;
color: #3d4852;
}
.mail .mail-content {
max-width: 100vw;
padding: 32px;
box-shadow: 0 15px 28px rgba(0, 0, 0, 0.25), 0 10px 10px rgba(0, 0, 0, 0.25);
}
.mail div{
background-color: #ffffff;color: #718096;height: 100%;line-height: 1.4;width: 100%;
}
.mail .x_wrapper{
background-color: #edf2f7;
width:100%;
}
.mail .x_content{
width: 100%;
}
.mail .x_inner-body{
background-color: #ffffff;border-color: #e8e5ef;border-radius: 2px;border-width: 1px;margin: 0 auto;padding:0;width: 570px;
}
.mail .x_content-cell{
margin: 0 auto;padding: 0;width: 570px;line-height: 1.5em;
color: #b0adc5;font-size: 12px;
}
.mail .x_content-cell td{
max-width: 100vw;padding: 32px;
}
</style>
<div>
<table class="x_wrapper">
<tbody>
<tr>
<td>
<table class="x_content">
<tbody>
<tr>
<td style="padding: 25px 0;">
<h1 style="font-size: 20px;">密码重置邮件</h1>
</td>
</tr>
<tr>
<td>
<table class="x_inner-body">
<tbody>
<tr>
<td class="mail-content">
<h1 style="font-size: 18px;margin-bottom: 25px;">Minecraft · <servername /><br/><playername /></h1>
<hr>
<table style="width: 100%;">
<tbody>
<tr>
<td>
您正在申请的新密码为
</td>
</tr>
<tr>
<td style="font-weight: bold;">
<br/><generatedpass /></td>
</tr>
<tr>
<td>
<br/>请妥善保存,在新地址上进行登录时,需提供该密码.
<br/>若非必要,请勿更换密码,否则将对您的账户安全构成威胁.
</td>
</tr>
<tr>
<td style="text-align:right;">
<br/>
<br/>祝您游玩愉快~!
</td>
</tr>
<tr>
<td>
<small>
<br/><time />
<br/>请勿回复
</small>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td>
<table class="x_content-cell">
<tbody>
<tr>
<td>
<p style="color:#b0adc5;">© 2024 HomoCraft. All rights reserved.</p>
<a href="1919810.com" target="_blank"
style="text-decoration: none; font-size: 16px">wdsj.in</a>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</div>
</div>
@@ -0,0 +1,45 @@
# Translation config for the AuthMe help, e.g. when /authme help or /authme help register is called
# -------------------------------------------------------
# List of texts used in the help section
common:
header: '==========[ AuthMeReloaded HELP ]=========='
optional: 'Optional'
hasPermission: 'You have permission'
noPermission: 'No permission'
default: 'Default'
result: 'Result'
defaultPermissions:
notAllowed: 'No permission'
opOnly: 'OP''s only'
allowed: 'Everyone allowed'
# -------------------------------------------------------
# Titles of the individual help sections
# Set the translation text to empty text to disable the section, e.g. to hide alternatives:
# alternatives: ''
section:
command: 'Command'
description: 'Short description'
detailedDescription: 'Detailed description'
arguments: 'Arguments'
permissions: 'Permissions'
alternatives: 'Alternatives'
children: 'Commands'
# -------------------------------------------------------
# You can translate the data for all commands using the below pattern.
# For example to translate /authme reload, create a section "authme.reload", or "login" for /login
# If the command has arguments, you can use arg1 as below to translate the first argument, and so forth
# Translations don't need to be complete; any missing section will be taken from the default silently
# Important: Put main commands like "authme" before their children (e.g. "authme.reload")
commands:
authme.register:
description: 'Register a player'
detailedDescription: 'Register the specified player with the specified password.'
arg1:
label: 'player'
description: 'Player name'
arg2:
label: 'password'
description: 'Password'
@@ -0,0 +1,173 @@
# List of global tags:
# %nl% - Goes to new line.
# %username% - Replaces the username of the player receiving the message.
# %displayname% - Replaces the nickname (and colors) of the player receiving the message.
# Registration
registration:
disabled: '&cIn-game registration is disabled!'
name_taken: '&cYou already have registered this username!'
register_request: '&3Please, register to the server with the command: /register <password> <ConfirmPassword>'
command_usage: '&cUsage: /register <password> <ConfirmPassword>'
reg_only: '&4Only registered users can join the server! Please visit https://example.com to register yourself!'
success: '&2Successfully registered!'
kicked_admin_registered: 'An admin just registered you; please log in again.'
# Password errors on registration
password:
match_error: '&cPasswords didn''t match, check them again!'
name_in_password: '&cYou can''t use your name as password, please choose another one...'
unsafe_password: '&cThe chosen password isn''t safe, please choose another one...'
forbidden_characters: '&4Your password contains illegal characters. Allowed chars: %valid_chars'
wrong_length: '&cYour password is too short or too long! Please try with another one!'
pwned_password: '&cYour chosen password is not secure. It was used %pwned_count times already! Please use a strong password...'
# Login
login:
command_usage: '&cUsage: /login <password>'
wrong_password: '&cWrong password!'
success: '&2Successful login!'
login_request: '&cPlease, login with the command: /login <password>'
timeout_error: '&4Login timeout exceeded, you have been kicked from the server, please try again!'
# Errors
error:
denied_command: '&cIn order to use this command you must be authenticated!'
denied_chat: '&cIn order to chat you must be authenticated!'
unregistered_user: '&cThis user isn''t registered!'
not_logged_in: '&cYou''re not logged in!'
no_permission: '&4You don''t have the permission to perform this action!'
unexpected_error: '&4An unexpected error occurred, please contact an administrator!'
max_registration: '&cYou have exceeded the maximum number of registrations (%reg_count/%max_acc %reg_names) for your connection!'
logged_in: '&cYou''re already logged in!'
kick_for_vip: '&3A VIP player has joined the server when it was full!'
kick_unresolved_hostname: '&cAn error occurred: unresolved player hostname!'
tempban_max_logins: '&cYou have been temporarily banned for failing to log in too many times.'
# AntiBot
antibot:
kick_antibot: 'AntiBot protection mode is enabled! You have to wait some minutes before joining the server.'
auto_enabled: '&4[AntiBotService] AntiBot enabled due to the huge number of connections!'
auto_disabled: '&2[AntiBotService] AntiBot disabled after %m minutes!'
# Unregister
unregister:
success: '&cSuccessfully unregistered!'
command_usage: '&cUsage: /unregister <password>'
# Other messages
misc:
account_not_activated: '&cYour account isn''t activated yet, please check your emails!'
not_activated: '&cAccount not activated, please register and activate it before trying again.'
password_changed: '&2Password changed successfully!'
logout: '&2Logged out successfully!'
reload: '&2Configuration and database have been reloaded correctly!'
usage_change_password: '&cUsage: /changepassword <oldPassword> <newPassword>'
accounts_owned_self: 'You own %count accounts:'
accounts_owned_other: 'The player %name has %count accounts:'
# Session messages
session:
invalid_session: '&cYour IP has been changed and your session data has expired!'
valid_session: '&2Logged-in due to Session Reconnection.'
# Error messages when joining
on_join_validation:
same_ip_online: 'A player with the same IP is already in game!'
same_nick_online: '&4The same username is already playing on the server!'
name_length: '&4Your username is either too short or too long!'
characters_in_name: '&4Your username contains illegal characters. Allowed chars: %valid_chars'
kick_full_server: '&4The server is full, try again later!'
country_banned: '&4Your country is banned from this server!'
not_owner_error: 'You are not the owner of this account. Please choose another name!'
invalid_name_case: 'You should join using username %valid, not %invalid.'
quick_command: 'You used a command too fast! Please, join the server again and wait more before using any command.'
# Email
email:
add_email_request: '&3Please add your email to your account with the command: /email add <yourEmail> <confirmEmail>'
usage_email_add: '&cUsage: /email add <email> <confirmEmail>'
usage_email_change: '&cUsage: /email change <oldEmail> <newEmail>'
new_email_invalid: '&cInvalid new email, try again!'
old_email_invalid: '&cInvalid old email, try again!'
invalid: '&cInvalid email address, try again!'
added: '&2Email address successfully added to your account!'
add_not_allowed: '&cAdding email was not allowed.'
request_confirmation: '&cPlease confirm your email address!'
changed: '&2Email address changed correctly!'
change_not_allowed: '&cChanging email was not allowed.'
email_show: '&2Your current email address is: &f%email'
no_email_for_account: '&2You currently don''t have email address associated with this account.'
already_used: '&4The email address is already being used'
incomplete_settings: 'Error: not all required settings are set for sending emails. Please contact an admin.'
send_failure: 'The email could not be sent. Please contact an administrator.'
change_password_expired: 'You cannot change your password using this command anymore.'
email_cooldown_error: '&cAn email was already sent recently. You must wait %time before you can send a new one.'
# Password recovery by email
recovery:
forgot_password_hint: '&3Forgot your password? Please use the command: /email recovery <yourEmail>'
command_usage: '&cUsage: /email recovery <Email>'
email_sent: '&2Recovery email sent successfully! Please check your email inbox!'
code:
code_sent: 'A recovery code to reset your password has been sent to your email.'
incorrect: 'The recovery code is not correct! You have %count tries remaining.'
tries_exceeded: 'You have exceeded the maximum number attempts to enter the recovery code. Use "/email recovery [email]" to generate a new one.'
correct: 'Recovery code entered correctly!'
change_password: 'Please use the command /email setpassword <new password> to change your password immediately.'
# Captcha
captcha:
usage_captcha: '&3To log in you have to solve a captcha code, please use the command: /captcha %captcha_code'
wrong_captcha: '&cWrong captcha, please type "/captcha %captcha_code" into the chat!'
valid_captcha: '&2Captcha code solved correctly!'
captcha_for_registration: 'To register you have to solve a captcha first, please use the command: /captcha %captcha_code'
register_captcha_valid: '&2Valid captcha! You may now register with /register'
# Verification code
verification:
code_required: '&3This command is sensitive and requires an email verification! Check your inbox and follow the email''s instructions.'
command_usage: '&cUsage: /verification <code>'
incorrect_code: '&cIncorrect code, please type "/verification <code>" into the chat, using the code you received by email'
success: '&2Your identity has been verified! You can now execute all commands within the current session!'
already_verified: '&2You can already execute every sensitive command within the current session!'
code_expired: '&3Your code has expired! Execute another sensitive command to get a new code!'
email_needed: '&3To verify your identity you need to link an email address with your account!!'
# Time units
time:
second: 'second'
seconds: 'seconds'
minute: 'minute'
minutes: 'minutes'
hour: 'hour'
hours: 'hours'
day: 'day'
days: 'days'
# Two-factor authentication
two_factor:
code_created: '&2Your secret code is %code. You can scan it from here %url'
confirmation_required: 'Please confirm your code with /2fa confirm <code>'
code_required: 'Please submit your two-factor authentication code with /2fa code <code>'
already_enabled: 'Two-factor authentication is already enabled for your account!'
enable_error_no_code: 'No 2fa key has been generated for you or it has expired. Please run /2fa add'
enable_success: 'Successfully enabled two-factor authentication for your account'
enable_error_wrong_code: 'Wrong code or code has expired. Please run /2fa add'
not_enabled_error: 'Two-factor authentication is not enabled for your account. Run /2fa add'
removed_success: 'Successfully removed two-factor auth from your account'
invalid_code: 'Invalid code!'
# 3rd party features: Bedrock Auto Login
bedrock_auto_login:
success: '&aBedrock auto login success!'
# 3rd party features: Login Location Fix
login_location_fix:
fix_portal: '&aYou are stuck in portal during login.'
fix_underground: '&aYou are stuck underground during login.'
cannot_fix_underground: '&aYou are stuck underground during login, but we cant fix it.'
# 3rd party features: Double Login Fix
double_login_fix:
fix_message: '&cYou have been disconnected due to doubled login.'
+127
View File
@@ -0,0 +1,127 @@
<div class="mail">
<style>
.mail td{
font-family: "Segoe UI", sans-serif;
text-align: center;
font-size: 16px;
color: #718096;
}
.mail th, div, p, a, h1, h2, h3, h4, h5, h6{
font-family: "Segoe UI", sans-serif;
text-align: center;
color: #3d4852;
}
.mail .mail-content {
max-width: 100vw;
padding: 32px;
box-shadow: 0 15px 28px rgba(0, 0, 0, 0.25), 0 10px 10px rgba(0, 0, 0, 0.25);
}
.mail div{
background-color: #ffffff;color: #718096;height: 100%;line-height: 1.4;width: 100%;
}
.mail .x_wrapper{
background-color: #edf2f7;
width:100%;
}
.mail .x_content{
width: 100%;
}
.mail .x_inner-body{
background-color: #ffffff;border-color: #e8e5ef;border-radius: 2px;border-width: 1px;margin: 0 auto;padding:0;width: 570px;
}
.mail .x_content-cell{
margin: 0 auto;padding: 0;width: 570px;line-height: 1.5em;
color: #b0adc5;font-size: 12px;
}
.mail .x_content-cell td{
max-width: 100vw;padding: 32px;
}
</style>
<div>
<table class="x_wrapper">
<tbody>
<tr>
<td>
<table class="x_content">
<tbody>
<tr>
<td style="padding: 25px 0;">
<h1 style="font-size: 20px;">账户激活邮件</h1>
</td>
</tr>
<tr>
<td>
<table class="x_inner-body">
<tbody>
<tr>
<td class="mail-content">
<h1 style="font-size: 18px;margin-bottom: 25px;">Minecraft · <servername /><br/><playername /></h1>
<hr>
<table style="width: 100%;">
<tbody>
<tr>
<td>
您的账户初始密码为
</td>
</tr>
<tr>
<td style="font-weight: bold;">
<br/><generatedpass /></td>
</tr>
<tr>
<td>
<br/>已将地址(<playerip />)进行记录.
<br/>
<br/>请妥善保存,在新地址上进行登录时,需提供该密码.
<br/>若非必要,请勿更换密码,否则将对您的账户安全构成威胁.
<br/>账户所绑定的邮箱地址已被永久存储,需要更换请联系管理员.
<br/>
<br/>更换密码: /changepassword <generatedpass /> [新密码]
</td>
</tr>
<tr>
<td style="text-align:right;">
<br/>
<br/>账户将在激活后生效
<br/>欢迎您的加入~!
</td>
</tr>
<tr>
<td>
<small>
<br/><time />
<br/>请勿回复
</small>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td>
<table class="x_content-cell">
<tbody>
<tr>
<td>
<p style="color:#b0adc5;">© 2024 HomoCraft. All rights reserved.</p>
<a href="1919810.com" target="_blank"
style="text-decoration: none; font-size: 16px">wdsj.in</a>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</div>
</div>
@@ -0,0 +1,120 @@
<div class="mail">
<style>
.mail td{
font-family: "Segoe UI", sans-serif;
text-align: center;
font-size: 16px;
color: #718096;
}
.mail th, div, p, a, h1, h2, h3, h4, h5, h6{
font-family: "Segoe UI", sans-serif;
text-align: center;
color: #3d4852;
}
.mail .mail-content {
max-width: 100vw;
padding: 32px;
box-shadow: 0 15px 28px rgba(0, 0, 0, 0.25), 0 10px 10px rgba(0, 0, 0, 0.25);
}
.mail div{
background-color: #ffffff;color: #718096;height: 100%;line-height: 1.4;width: 100%;
}
.mail .x_wrapper{
background-color: #edf2f7;
width:100%;
}
.mail .x_content{
width: 100%;
}
.mail .x_inner-body{
background-color: #ffffff;border-color: #e8e5ef;border-radius: 2px;border-width: 1px;margin: 0 auto;padding:0;width: 570px;
}
.mail .x_content-cell{
margin: 0 auto;padding: 0;width: 570px;line-height: 1.5em;
color: #b0adc5;font-size: 12px;
}
.mail .x_content-cell td{
max-width: 100vw;padding: 32px;
}
</style>
<div>
<table class="x_wrapper">
<tbody>
<tr>
<td>
<table class="x_content">
<tbody>
<tr>
<td style="padding: 25px 0;">
<h1 style="font-size: 20px;">代码验证邮件</h1>
</td>
</tr>
<tr>
<td>
<table class="x_inner-body">
<tbody>
<tr>
<td class="mail-content">
<h1 style="font-size: 18px;margin-bottom: 25px;">Minecraft · <servername /><br/><playername /></h1>
<hr>
<table style="width: 100%;">
<tbody>
<tr>
<td>
您正在申请的验证码为
</td>
</tr>
<tr>
<td style="font-weight: bold;">
<br/><recoverycode /></td>
</tr>
<tr>
<td>
<br/>使用指令: /email code <recoverycode /> 来完成验证过程.
</td>
</tr>
<tr>
<td style="text-align:right;">
<br/>
<br/>验证码将在<hoursvalid />小时后失效
</td>
</tr>
<tr>
<td>
<small>
<br/><time />
<br/>请勿回复
</small>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td>
<table class="x_content-cell">
<tbody>
<tr>
<td>
<p style="color:#b0adc5;">© 2024 HomoCraft. All rights reserved.</p>
<a href="1919810.com" target="_blank"
style="text-decoration: none; font-size: 16px">wdsj.in</a>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</div>
</div>
+118
View File
@@ -0,0 +1,118 @@
<div class="mail">
<style>
.mail td{
font-family: "Segoe UI", sans-serif;
text-align: center;
font-size: 16px;
color: #718096;
}
.mail th, div, p, a, h1, h2, h3, h4, h5, h6{
font-family: "Segoe UI", sans-serif;
text-align: center;
color: #3d4852;
}
.mail .mail-content {
max-width: 100vw;
padding: 32px;
box-shadow: 0 15px 28px rgba(0, 0, 0, 0.25), 0 10px 10px rgba(0, 0, 0, 0.25);
}
.mail div{
background-color: #ffffff;color: #718096;height: 100%;line-height: 1.4;width: 100%;
}
.mail .x_wrapper{
background-color: #edf2f7;
width:100%;
}
.mail .x_content{
width: 100%;
}
.mail .x_inner-body{
background-color: #ffffff;border-color: #e8e5ef;border-radius: 2px;border-width: 1px;margin: 0 auto;padding:0;width: 570px;
}
.mail .x_content-cell{
margin: 0 auto;padding: 0;width: 570px;line-height: 1.5em;
color: #b0adc5;font-size: 12px;
}
.mail .x_content-cell td{
max-width: 100vw;padding: 32px;
}
</style>
<div>
<table class="x_wrapper">
<tbody>
<tr>
<td>
<table class="x_content">
<tbody>
<tr>
<td style="padding: 25px 0;">
<h1 style="font-size: 20px;">服务器关闭通知</h1>
</td>
</tr>
<tr>
<td>
<table class="x_inner-body">
<tbody>
<tr>
<td class="mail-content">
<h1 style="font-size: 18px;margin-bottom: 25px;">Minecraft · <servername /></h1>
<hr>
<table style="width: 100%;">
<tbody>
<tr>
<td style="font-weight: bold;color: #da1515;">
<br/>紧急通知</td>
</tr>
<tr>
<td>
<br/>服务器当前已被关闭
<br/>
<br/>请及时检查服务器运行状态.
<br/>
</td>
</tr>
<tr>
<td style="text-align:right;">
<br/>
<br/>IrisCraft Team
</td>
</tr>
<tr>
<td>
<small>
<br/><time />
<br/>请勿回复
</small>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td>
<table class="x_content-cell">
<tbody>
<tr>
<td>
<p style="color:#b0adc5;">© 2024 HomoCraft. All rights reserved.</p>
<a href="1919810.com" target="_blank"
style="text-decoration: none; font-size: 16px">wdsj.in</a>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</div>
</div>
+14
View File
@@ -0,0 +1,14 @@
spawn:
world: ''
x: ''
y: ''
z: ''
yaw: ''
pitch: ''
firstspawn:
world: ''
x: ''
y: ''
z: ''
yaw: ''
pitch: ''
@@ -0,0 +1,120 @@
<div class="mail">
<style>
.mail td{
font-family: "Segoe UI", sans-serif;
text-align: center;
font-size: 16px;
color: #718096;
}
.mail th, div, p, a, h1, h2, h3, h4, h5, h6{
font-family: "Segoe UI", sans-serif;
text-align: center;
color: #3d4852;
}
.mail .mail-content {
max-width: 100vw;
padding: 32px;
box-shadow: 0 15px 28px rgba(0, 0, 0, 0.25), 0 10px 10px rgba(0, 0, 0, 0.25);
}
.mail div{
background-color: #ffffff;color: #718096;height: 100%;line-height: 1.4;width: 100%;
}
.mail .x_wrapper{
background-color: #edf2f7;
width:100%;
}
.mail .x_content{
width: 100%;
}
.mail .x_inner-body{
background-color: #ffffff;border-color: #e8e5ef;border-radius: 2px;border-width: 1px;margin: 0 auto;padding:0;width: 570px;
}
.mail .x_content-cell{
margin: 0 auto;padding: 0;width: 570px;line-height: 1.5em;
color: #b0adc5;font-size: 12px;
}
.mail .x_content-cell td{
max-width: 100vw;padding: 32px;
}
</style>
<div>
<table class="x_wrapper">
<tbody>
<tr>
<td>
<table class="x_content">
<tbody>
<tr>
<td style="padding: 25px 0;">
<h1 style="font-size: 20px;">代码验证邮件</h1>
</td>
</tr>
<tr>
<td>
<table class="x_inner-body">
<tbody>
<tr>
<td class="mail-content">
<h1 style="font-size: 18px;margin-bottom: 25px;">Minecraft · <servername /><br/><playername /></h1>
<hr>
<table style="width: 100%;">
<tbody>
<tr>
<td>
您正在申请的验证码为
</td>
</tr>
<tr>
<td style="font-weight: bold;">
<br/><generatedcode /></td>
</tr>
<tr>
<td>
<br/>使用指令: /verification <generatedcode /> 来完成验证过程.
</td>
</tr>
<tr>
<td style="text-align:right;">
<br/>
<br/>验证码将在30分钟后失效
</td>
</tr>
<tr>
<td>
<small>
<br/><time />
<br/>请勿回复
</small>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td>
<table class="x_content-cell">
<tbody>
<tr>
<td>
<p style="color:#b0adc5;">© 2024 HomoCraft. All rights reserved.</p>
<a href="1919810.com" target="_blank"
style="text-decoration: none; font-size: 16px">wdsj.in</a>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</div>
</div>