Compare commits
159 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| a1a7285df0 | |||
| cd73603e3f | |||
| ed3091994d | |||
| 4bd22c1e91 | |||
| b630df850f | |||
| da99cad206 | |||
| 22027b5fdd | |||
| 7f00c4183f | |||
| 2bde2fd8ac | |||
| 48a48f0c07 | |||
| a70d1d7268 | |||
| 5cc4167e4f | |||
| b9e2514556 | |||
| 0b11781329 | |||
| 645d11ea54 | |||
| 3e87b9f44a | |||
| a6dc4514f2 | |||
| 69ea9a1d43 | |||
| 1dfbbb543c | |||
| 092df678a8 | |||
| 5f165eed75 | |||
| a988422302 | |||
| e5f6e31af2 | |||
| f4bd83e86a | |||
| 7713ee499d | |||
| 6fb2d93650 | |||
| 81db29f76f | |||
| fd2018186c | |||
| bb85a7c619 | |||
| 9e7e90db6c | |||
| 007e01156b | |||
| d2ec62ac7f | |||
| da32bdec94 | |||
| 7d58e90557 | |||
| 08dabda7c7 | |||
| feea348ec3 | |||
| 67eb7dee0f | |||
| 6fb1d2855e | |||
| faa3d9320c | |||
| 497cd543fd | |||
| 71d5205df0 | |||
| bba90d93f1 | |||
| ab40b1b82d | |||
| 22a6cefbdc | |||
| 9ca3a24862 | |||
| 91f0dfa5c5 | |||
| f0e935a5d8 | |||
| f0fae0fce0 | |||
| 4c40ba36a6 | |||
| bd7a25560f | |||
| e02659d850 | |||
| c95f96572c | |||
| 1c1356a4d1 | |||
| f206deb8ed | |||
| 9bf6aae8e9 | |||
| 63bfc7a5c1 | |||
| 731c6477a5 | |||
| e0bf35284c | |||
| 02ebb0b0ab | |||
| 92741daaa8 | |||
| 18ce05d07d | |||
| 37e6e9feb6 | |||
| 655c5ca42c | |||
| c99fc5c389 | |||
| 9b0a4a003e | |||
| f25610c90b | |||
| 7130d3989c | |||
| 900d2bd2e9 | |||
| 7d255dfa30 | |||
| 0cce930260 | |||
| 0671a54b20 | |||
| 4df4a1fa4b | |||
| 5b52a0ff00 | |||
| 5186d09116 | |||
| a5b06bbd07 | |||
| 9b74cb5a00 | |||
| 280e441227 | |||
| be97e7faa0 | |||
| 253822a056 | |||
| 0fcc45039d | |||
| 4700e2ae90 | |||
| d9c89e1dc6 | |||
| 2080e227ef | |||
| b513fd37cb | |||
| a89358e362 | |||
| 5c91e6083d | |||
| 276e87c5e7 | |||
| 45eabafacc | |||
| 6664612b73 | |||
| 82ed075ee8 | |||
| c7dc203687 | |||
| 304eca4b6a | |||
| 13315e6132 | |||
| 90684451d8 | |||
| 799849920f | |||
| f7d83f1459 | |||
| fbf5f32415 | |||
| e922422922 | |||
| b9648393a7 | |||
| d20cc6514b | |||
| 6a20976370 | |||
| 3e56aacb4e | |||
| a8e18d1bb8 | |||
| 32ed70f099 | |||
| e89b6182a7 | |||
| 41d04c7604 | |||
| d7a5869e99 | |||
| 3139902b37 | |||
| dc599fe5c3 | |||
| 5829bfeaa2 | |||
| 100805da8b | |||
| 0679087e53 | |||
| b6476dcb79 | |||
| 471e1c0d2c | |||
| 3d6b1a059c | |||
| f56ca830cf | |||
| 0fbe7d99cb | |||
| bbdf64415c | |||
| 5981af630a | |||
| 7e14bd8675 | |||
| 0f407f9658 | |||
| 9439098472 | |||
| 6618c004c3 | |||
| 18ab6623ff | |||
| 2fe0da569b | |||
| 42e907580c | |||
| ae76066db6 | |||
| 5c74580866 | |||
| 2dd5ebcb8c | |||
| 69f3d9838d | |||
| e8010782fd | |||
| 4e54d86712 | |||
| fdc0d31632 | |||
| 0d903d23b0 | |||
| e79036d42f | |||
| 39e94c6ea7 | |||
| 0c10cb0ead | |||
| 7301a22d44 | |||
| 89817d420c | |||
| c53f622e94 | |||
| eb43dc3960 | |||
| 6001ee6979 | |||
| d09e545554 | |||
| 642270e4c3 | |||
| d648725b10 | |||
| 0f6ecb8f03 | |||
| ce60648233 | |||
| 186860c1fa | |||
| 3beed667b4 | |||
| 2219dd55dd | |||
| 3e73a5090a | |||
| 583a275100 | |||
| a4c1dd6f5b | |||
| de69919c01 | |||
| 6dea065ed2 | |||
| 9e208532d3 | |||
| c0b6d87678 | |||
| f99b4bd0ad | |||
| 930f889745 |
-203
@@ -1,203 +0,0 @@
|
|||||||
<?xml version="1.0"?>
|
|
||||||
<!DOCTYPE module PUBLIC
|
|
||||||
"-//Puppy Crawl//DTD Check Configuration 1.3//EN"
|
|
||||||
"http://www.puppycrawl.com/dtds/configuration_1_3.dtd">
|
|
||||||
<!--
|
|
||||||
Note: Checkstyle likes to introduce breaking changes like removing support for certain properties. Since this
|
|
||||||
configuration is also used by CodeClimate, we should keep it in sync with the version that they use:
|
|
||||||
https://github.com/codeclimate/codeclimate-checkstyle/blob/master/bin/install-checkstyle.sh
|
|
||||||
https://docs.codeclimate.com/docs/checkstyle (currently outdated)
|
|
||||||
-->
|
|
||||||
|
|
||||||
<module name="Checker">
|
|
||||||
<property name="charset" value="UTF-8"/>
|
|
||||||
<property name="severity" value="warning"/>
|
|
||||||
<property name="fileExtensions" value="java"/>
|
|
||||||
|
|
||||||
<module name="SuppressWarningsFilter" />
|
|
||||||
|
|
||||||
<module name="LineLength">
|
|
||||||
<property name="max" value="120"/>
|
|
||||||
<property name="ignorePattern" value="^package.*|^import.*|a href|href|http://|https://|ftp://"/>
|
|
||||||
</module>
|
|
||||||
|
|
||||||
<module name="TreeWalker">
|
|
||||||
<module name="SuppressWarningsHolder"/>
|
|
||||||
<module name="OuterTypeFilename"/>
|
|
||||||
<module name="IllegalTokenText">
|
|
||||||
<property name="tokens" value="STRING_LITERAL, CHAR_LITERAL"/>
|
|
||||||
<property name="format" value="\\u00(08|09|0(a|A)|0(c|C)|0(d|D)|22|27|5(C|c))|\\(0(10|11|12|14|15|42|47)|134)"/>
|
|
||||||
<property name="message" value="Avoid using corresponding octal or Unicode escape."/>
|
|
||||||
</module>
|
|
||||||
<module name="AvoidEscapedUnicodeCharacters">
|
|
||||||
<property name="allowEscapesForControlCharacters" value="true"/>
|
|
||||||
<property name="allowByTailComment" value="true"/>
|
|
||||||
<property name="allowNonPrintableEscapes" value="true"/>
|
|
||||||
</module>
|
|
||||||
<module name="TodoComment">
|
|
||||||
<!-- Allow comments which have an issue number as they are accounted for in the issue tracker -->
|
|
||||||
<property name="format" value="TODO(?! #\d+:)|FIXME"/>
|
|
||||||
</module>
|
|
||||||
<module name="GenericWhitespace"/>
|
|
||||||
<module name="WhitespaceAfter"/>
|
|
||||||
<module name="AvoidStarImport"/>
|
|
||||||
<module name="RedundantImport"/>
|
|
||||||
<module name="UnusedImports"/>
|
|
||||||
<module name="OneTopLevelClass"/>
|
|
||||||
<module name="FinalClass"/>
|
|
||||||
<module name="HideUtilityClassConstructor"/>
|
|
||||||
<module name="InnerTypeLast"/>
|
|
||||||
<module name="VisibilityModifier"/>
|
|
||||||
<module name="AvoidNestedBlocks"/>
|
|
||||||
<module name="NoLineWrap"/>
|
|
||||||
<module name="EmptyBlock">
|
|
||||||
<property name="option" value="TEXT"/>
|
|
||||||
<property name="tokens" value="LITERAL_TRY, LITERAL_FINALLY, LITERAL_IF, LITERAL_ELSE, LITERAL_SWITCH"/>
|
|
||||||
</module>
|
|
||||||
<module name="NeedBraces"/>
|
|
||||||
<module name="RightCurly"/>
|
|
||||||
<module name="RightCurly">
|
|
||||||
<property name="option" value="alone"/>
|
|
||||||
<property name="tokens" value="CLASS_DEF, METHOD_DEF, CTOR_DEF, LITERAL_FOR, LITERAL_WHILE, LITERAL_DO, STATIC_INIT, INSTANCE_INIT"/>
|
|
||||||
</module>
|
|
||||||
<module name="OneStatementPerLine"/>
|
|
||||||
<module name="MultipleVariableDeclarations"/>
|
|
||||||
<module name="ArrayTypeStyle"/>
|
|
||||||
<module name="MissingSwitchDefault"/>
|
|
||||||
<module name="DefaultComesLast"/>
|
|
||||||
<module name="FallThrough"/>
|
|
||||||
<module name="NestedTryDepth"/>
|
|
||||||
<module name="UpperEll"/>
|
|
||||||
<module name="ModifierOrder"/>
|
|
||||||
<module name="RedundantModifier"/>
|
|
||||||
<module name="EmptyLineSeparator">
|
|
||||||
<property name="allowNoEmptyLineBetweenFields" value="true"/>
|
|
||||||
</module>
|
|
||||||
<module name="SeparatorWrap">
|
|
||||||
<property name="tokens" value="DOT"/>
|
|
||||||
<property name="option" value="nl"/>
|
|
||||||
</module>
|
|
||||||
<module name="SeparatorWrap">
|
|
||||||
<property name="tokens" value="COMMA"/>
|
|
||||||
<property name="option" value="EOL"/>
|
|
||||||
</module>
|
|
||||||
<module name="PackageName">
|
|
||||||
<property name="format" value="^[a-z]+(\.[a-z][a-z0-9]*)*$"/>
|
|
||||||
<message key="name.invalidPattern"
|
|
||||||
value="Package name ''{0}'' must match pattern ''{1}''."/>
|
|
||||||
</module>
|
|
||||||
<module name="TypeName">
|
|
||||||
<message key="name.invalidPattern"
|
|
||||||
value="Type name ''{0}'' must match pattern ''{1}''."/>
|
|
||||||
</module>
|
|
||||||
<module name="MemberName">
|
|
||||||
<property name="format" value="^[a-z][a-zA-Z0-9]*$"/>
|
|
||||||
<message key="name.invalidPattern"
|
|
||||||
value="Member name ''{0}'' must match pattern ''{1}''."/>
|
|
||||||
</module>
|
|
||||||
<module name="ParameterName">
|
|
||||||
<property name="format" value="^[a-z][a-zA-Z0-9]*$"/>
|
|
||||||
<message key="name.invalidPattern"
|
|
||||||
value="Parameter name ''{0}'' must match pattern ''{1}''."/>
|
|
||||||
</module>
|
|
||||||
<module name="LocalVariableName">
|
|
||||||
<property name="tokens" value="VARIABLE_DEF"/>
|
|
||||||
<property name="format" value="^[a-z][a-zA-Z0-9]*$"/>
|
|
||||||
<property name="allowOneCharVarInForLoop" value="true"/>
|
|
||||||
<message key="name.invalidPattern"
|
|
||||||
value="Local variable name ''{0}'' must match pattern ''{1}''."/>
|
|
||||||
</module>
|
|
||||||
<module name="ClassTypeParameterName">
|
|
||||||
<property name="format" value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)"/>
|
|
||||||
<message key="name.invalidPattern"
|
|
||||||
value="Class type name ''{0}'' must match pattern ''{1}''."/>
|
|
||||||
</module>
|
|
||||||
<module name="MethodTypeParameterName">
|
|
||||||
<property name="format" value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)"/>
|
|
||||||
<message key="name.invalidPattern"
|
|
||||||
value="Method type name ''{0}'' must match pattern ''{1}''."/>
|
|
||||||
</module>
|
|
||||||
<module name="NoFinalizer"/>
|
|
||||||
<module name="AbbreviationAsWordInName">
|
|
||||||
<property name="ignoreFinal" value="false"/>
|
|
||||||
<property name="allowedAbbreviationLength" value="1"/>
|
|
||||||
</module>
|
|
||||||
<module name="DeclarationOrder"/>
|
|
||||||
<module name="OverloadMethodsDeclarationOrder"/>
|
|
||||||
<module name="VariableDeclarationUsageDistance"/>
|
|
||||||
<module name="MethodParamPad"/>
|
|
||||||
<module name="StringLiteralEquality"/>
|
|
||||||
<module name="BooleanExpressionComplexity">
|
|
||||||
<property name="max" value="5"/>
|
|
||||||
</module>
|
|
||||||
<module name="OperatorWrap">
|
|
||||||
<property name="option" value="NL"/>
|
|
||||||
<property name="tokens" value="BAND, BOR, BSR, BXOR, DIV, EQUAL, GE, GT, LAND, LE, LITERAL_INSTANCEOF, LOR, LT, MINUS, MOD, NOT_EQUAL, PLUS, QUESTION, SL, SR, STAR "/>
|
|
||||||
</module>
|
|
||||||
<module name="CyclomaticComplexity">
|
|
||||||
<property name="max" value="15"/>
|
|
||||||
</module>
|
|
||||||
<module name="JavaNCSS">
|
|
||||||
<property name="methodMaximum" value="40"/>
|
|
||||||
<property name="classMaximum" value="1000"/>
|
|
||||||
</module>
|
|
||||||
<module name="AnnotationLocation">
|
|
||||||
<property name="tokens" value="CLASS_DEF, INTERFACE_DEF, ENUM_DEF, METHOD_DEF, CTOR_DEF"/>
|
|
||||||
</module>
|
|
||||||
<module name="AnnotationLocation">
|
|
||||||
<property name="tokens" value="VARIABLE_DEF"/>
|
|
||||||
<property name="allowSamelineMultipleAnnotations" value="true"/>
|
|
||||||
</module>
|
|
||||||
<module name="NonEmptyAtclauseDescription"/>
|
|
||||||
<module name="JavadocTagContinuationIndentation">
|
|
||||||
<property name="offset" value="2"/>
|
|
||||||
</module>
|
|
||||||
<module name="AtclauseOrder">
|
|
||||||
<property name="tagOrder" value="@param, @return, @throws, @deprecated"/>
|
|
||||||
<property name="target" value="CLASS_DEF, INTERFACE_DEF, ENUM_DEF, METHOD_DEF, CTOR_DEF, VARIABLE_DEF"/>
|
|
||||||
</module>
|
|
||||||
<module name="JavadocMethod">
|
|
||||||
<property name="allowedAnnotations" value="Override, EventHandler"/>
|
|
||||||
<property name="tokens" value="METHOD_DEF, ANNOTATION_FIELD_DEF"/> <!-- exclude CTOR_DEF -->
|
|
||||||
</module>
|
|
||||||
<module name="MissingJavadocMethod">
|
|
||||||
<property name="scope" value="package"/>
|
|
||||||
<property name="minLineCount" value="4"/>
|
|
||||||
<property name="allowedAnnotations" value="Override, EventHandler"/>
|
|
||||||
<property name="tokens" value="METHOD_DEF, ANNOTATION_FIELD_DEF"/> <!-- exclude CTOR_DEF -->
|
|
||||||
</module>
|
|
||||||
<module name="MissingJavadocMethod">
|
|
||||||
<property name="scope" value="private"/>
|
|
||||||
<property name="minLineCount" value="16"/>
|
|
||||||
<property name="allowedAnnotations" value="Override, EventHandler"/>
|
|
||||||
<property name="tokens" value="METHOD_DEF, ANNOTATION_FIELD_DEF"/> <!-- exclude CTOR_DEF -->
|
|
||||||
</module>
|
|
||||||
<!-- TODO Checkstyle/#4089: need "allowedAnnotations" property to skip @Comment fields
|
|
||||||
<module name="JavadocVariable">
|
|
||||||
<property name="scope" value="package"/>
|
|
||||||
<property name="tokens" value="VARIABLE_DEF"/>
|
|
||||||
</module>
|
|
||||||
-->
|
|
||||||
<module name="MethodName">
|
|
||||||
<property name="format" value="^[a-z][a-z0-9][a-zA-Z0-9_]*$"/>
|
|
||||||
<message key="name.invalidPattern"
|
|
||||||
value="Method name ''{0}'' must match pattern ''{1}''."/>
|
|
||||||
</module>
|
|
||||||
<module name="SingleLineJavadoc">
|
|
||||||
<property name="ignoredTags" value="@return"/>
|
|
||||||
</module>
|
|
||||||
<module name="EmptyCatchBlock">
|
|
||||||
<property name="exceptionVariableName" value="ignore|ignored"/>
|
|
||||||
</module>
|
|
||||||
<module name="MissingOverride"/>
|
|
||||||
<module name="EqualsHashCode"/>
|
|
||||||
<module name="EqualsAvoidNull"/>
|
|
||||||
<module name="Regexp">
|
|
||||||
<property name="format" value="\.to(Lower|Upper)Case\(\)"/>
|
|
||||||
<property name="illegalPattern" value="true"/>
|
|
||||||
<property name="ignoreComments" value="true"/>
|
|
||||||
<property name="message" value="Use toLowerCase/toUpperCase with Locale"/>
|
|
||||||
</module>
|
|
||||||
</module>
|
|
||||||
<module name="FileTabCharacter"/>
|
|
||||||
</module>
|
|
||||||
@@ -1,44 +0,0 @@
|
|||||||
version: '2' # required to adjust maintainability checks
|
|
||||||
|
|
||||||
plugins:
|
|
||||||
checkstyle:
|
|
||||||
enabled: true
|
|
||||||
config:
|
|
||||||
file: '.checkstyle.xml'
|
|
||||||
|
|
||||||
checks:
|
|
||||||
# We disable all the following CodeClimate checks: Checkstyle already checks for these things and has the advantage
|
|
||||||
# that the Checkstyle config can also be used in one's IDE.
|
|
||||||
argument-count:
|
|
||||||
enabled: false
|
|
||||||
complex-logic:
|
|
||||||
enabled: false
|
|
||||||
file-lines:
|
|
||||||
enabled: false
|
|
||||||
method-complexity:
|
|
||||||
enabled: false
|
|
||||||
method-count:
|
|
||||||
enabled: false
|
|
||||||
method-lines:
|
|
||||||
enabled: false
|
|
||||||
nested-control-flow:
|
|
||||||
enabled: false
|
|
||||||
return-statements:
|
|
||||||
enabled: false
|
|
||||||
similar-code:
|
|
||||||
enabled: false
|
|
||||||
# The "identical-code" check would be cool to enable since Checkstyle offers no such functionality, but it is
|
|
||||||
# too aggressive and we'd have to suppress many reported warnings.
|
|
||||||
identical-code:
|
|
||||||
enabled: false
|
|
||||||
|
|
||||||
exclude_patterns:
|
|
||||||
# Exclude code from third-party sources
|
|
||||||
- 'src/main/java/fr/xephi/authme/mail/OAuth2Provider.java'
|
|
||||||
- 'src/main/java/fr/xephi/authme/mail/OAuth2SaslClient.java'
|
|
||||||
- 'src/main/java/fr/xephi/authme/mail/OAuth2SaslClientFactory.java'
|
|
||||||
- 'src/main/java/fr/xephi/authme/security/crypts/PhpBB.java'
|
|
||||||
- 'src/main/java/fr/xephi/authme/security/crypts/Whirlpool.java'
|
|
||||||
- 'src/main/java/fr/xephi/authme/security/crypts/Wordpress.java'
|
|
||||||
# Don't check test classes
|
|
||||||
- 'src/test/java/**/*Test.java'
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
# Top-most EditorConfig file
|
|
||||||
root = true
|
|
||||||
|
|
||||||
# Unix-style newlines with a newline ending every file
|
|
||||||
[*]
|
|
||||||
end_of_line = lf
|
|
||||||
insert_final_newline = true
|
|
||||||
|
|
||||||
# Set the charset, and space indention
|
|
||||||
[*.java]
|
|
||||||
charset = utf-8
|
|
||||||
indent_style = space
|
|
||||||
indent_size = 4
|
|
||||||
@@ -0,0 +1,55 @@
|
|||||||
|
name: Plugin Build
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
push:
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
if: ${{ !contains(github.event.head_commit.message, '[skip]') }}
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout Repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Setup Java
|
||||||
|
uses: actions/setup-java@v4
|
||||||
|
with:
|
||||||
|
java-version: 21
|
||||||
|
distribution: temurin
|
||||||
|
- name: Setup Gradle
|
||||||
|
uses: gradle/actions/setup-gradle@v4
|
||||||
|
- name: Make Gradle Wrapper Executable
|
||||||
|
run: chmod +x ./gradlew
|
||||||
|
- name: Build
|
||||||
|
run: ./gradlew clean build
|
||||||
|
- name: Capture Build Artifacts
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: Artifacts
|
||||||
|
path: outs/
|
||||||
|
runtime-test:
|
||||||
|
name: Plugin Runtime Test
|
||||||
|
needs: [ build ]
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
include:
|
||||||
|
- mcVersion: '1.8.8'
|
||||||
|
javaVersion: '8'
|
||||||
|
- mcVersion: '1.12.2'
|
||||||
|
javaVersion: '8'
|
||||||
|
- mcVersion: '1.18.2'
|
||||||
|
javaVersion: '17'
|
||||||
|
- mcVersion: '1.20.4'
|
||||||
|
javaVersion: '21'
|
||||||
|
- mcVersion: '1.20.6'
|
||||||
|
javaVersion: '21'
|
||||||
|
steps:
|
||||||
|
- uses: HaHaWTH/minecraft-plugin-runtime-test@paper
|
||||||
|
with:
|
||||||
|
server-version: ${{ matrix.mcVersion }}
|
||||||
|
java-version: ${{ matrix.javaVersion }}
|
||||||
|
artifact-name: Artifacts
|
||||||
@@ -1,49 +0,0 @@
|
|||||||
name: Java CI
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
pull_request:
|
|
||||||
branches:
|
|
||||||
- master
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
Build:
|
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
jdkversion: [ 21 ]
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
- uses: actions/setup-java@v4
|
|
||||||
with:
|
|
||||||
distribution: 'temurin'
|
|
||||||
java-version: ${{ matrix.jdkversion }}
|
|
||||||
cache: 'maven'
|
|
||||||
- name: Build
|
|
||||||
run: mvn -V -B clean package --file pom.xml
|
|
||||||
- name: Upload Artifacts
|
|
||||||
uses: actions/upload-artifact@v4
|
|
||||||
with:
|
|
||||||
name: Download
|
|
||||||
path: ./target/AuthMe-5.6.0-FORK-Universal.jar
|
|
||||||
runtime-test:
|
|
||||||
name: Plugin Runtime Test
|
|
||||||
needs: [Build]
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
include:
|
|
||||||
- mcVersion: '1.8.8'
|
|
||||||
javaVersion: '8'
|
|
||||||
- mcVersion: '1.12.2'
|
|
||||||
javaVersion: '8'
|
|
||||||
- mcVersion: '1.18.2'
|
|
||||||
javaVersion: '17'
|
|
||||||
- mcVersion: '1.20.4'
|
|
||||||
javaVersion: '21'
|
|
||||||
steps:
|
|
||||||
- uses: HaHaWTH/minecraft-plugin-runtime-test@paper
|
|
||||||
with:
|
|
||||||
server-version: ${{ matrix.mcVersion }}
|
|
||||||
java-version: ${{ matrix.javaVersion }}
|
|
||||||
artifact-name: Download
|
|
||||||
+10
-111
@@ -1,117 +1,16 @@
|
|||||||
### Java files ###
|
# Mac filesystem dust
|
||||||
*.class
|
.DS_Store/
|
||||||
MANIFEST.MF
|
|
||||||
|
|
||||||
# Package Files
|
|
||||||
#*.jar
|
|
||||||
*.war
|
|
||||||
*.ear
|
|
||||||
|
|
||||||
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
|
|
||||||
hs_err_pid*
|
|
||||||
|
|
||||||
# Mac OS
|
|
||||||
.DS_Store
|
.DS_Store
|
||||||
|
|
||||||
### Intellij ###
|
# Linux temp files
|
||||||
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm
|
*~
|
||||||
# Ignore project files
|
|
||||||
*.iml
|
|
||||||
*.java___jb_tmp___
|
|
||||||
|
|
||||||
# Ignore IDEA directory
|
|
||||||
.idea/*
|
|
||||||
.idea/
|
|
||||||
|
|
||||||
|
|
||||||
# Include the project's code style settings file
|
|
||||||
|
|
||||||
# File-based project format:
|
|
||||||
*.ipr
|
|
||||||
*.iws
|
|
||||||
|
|
||||||
### Plugin-specific files: ###
|
|
||||||
# IntelliJ
|
# IntelliJ
|
||||||
/out/
|
*.iml
|
||||||
|
.idea
|
||||||
|
|
||||||
# mpeltonen/sbt-idea plugin
|
# Gradle
|
||||||
.idea_modules/
|
!gradle/wrapper/gradle-wrapper.jar
|
||||||
|
|
||||||
# JIRA plugin
|
|
||||||
atlassian-ide-plugin.xml
|
|
||||||
|
|
||||||
# Crashlytics plugin (for Android Studio and IntelliJ)
|
|
||||||
com_crashlytics_export_strings.xml
|
|
||||||
crashlytics.properties
|
|
||||||
crashlytics-build.properties
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Eclipse ###
|
|
||||||
*.pydevproject
|
|
||||||
.metadata
|
|
||||||
.gradle
|
.gradle
|
||||||
bin/
|
build
|
||||||
tmp/
|
outs
|
||||||
*.tmp
|
|
||||||
*.bak
|
|
||||||
*.swp
|
|
||||||
*~.nib
|
|
||||||
local.properties
|
|
||||||
.settings/
|
|
||||||
.loadpath
|
|
||||||
|
|
||||||
# Eclipse Core
|
|
||||||
.project
|
|
||||||
|
|
||||||
# External tool builders
|
|
||||||
.externalToolBuilders/
|
|
||||||
|
|
||||||
# Locally stored "Eclipse launch configurations"
|
|
||||||
*.launch
|
|
||||||
|
|
||||||
# CDT-specific
|
|
||||||
.cproject
|
|
||||||
|
|
||||||
# JDT-specific (Eclipse Java Development Tools)
|
|
||||||
.classpath
|
|
||||||
|
|
||||||
# PDT-specific
|
|
||||||
.buildpath
|
|
||||||
|
|
||||||
# sbteclipse plugin
|
|
||||||
.target
|
|
||||||
|
|
||||||
# TeXlipse plugin
|
|
||||||
.texlipse
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Maven ###
|
|
||||||
target/
|
|
||||||
pom.xml.tag
|
|
||||||
pom.xml.releaseBackup
|
|
||||||
pom.xml.versionsBackup
|
|
||||||
pom.xml.next
|
|
||||||
release.properties
|
|
||||||
dependency-reduced-pom.xml
|
|
||||||
buildNumber.properties
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### NetBeans ###
|
|
||||||
nbproject/private/
|
|
||||||
build/
|
|
||||||
nbbuild/
|
|
||||||
dist/
|
|
||||||
nbdist/
|
|
||||||
nbactions.xml
|
|
||||||
nb-configuration.xml
|
|
||||||
.nb-gradle/
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Git ###
|
|
||||||
# Don't exclude the .gitignore itself
|
|
||||||
!.gitignore
|
|
||||||
/samples/
|
|
||||||
|
|||||||
Generated
-3
@@ -1,3 +0,0 @@
|
|||||||
# 默认忽略的文件
|
|
||||||
/shelf/
|
|
||||||
/workspace.xml
|
|
||||||
Generated
-291
@@ -1,291 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="ProjectCodeStyleSettingsManager">
|
|
||||||
<option name="PER_PROJECT_SETTINGS">
|
|
||||||
<value>
|
|
||||||
<option name="AUTODETECT_INDENTS" value="false" />
|
|
||||||
<option name="LINE_SEPARATOR" value=" " />
|
|
||||||
<option name="CLASS_COUNT_TO_USE_IMPORT_ON_DEMAND" value="99" />
|
|
||||||
<option name="NAMES_COUNT_TO_USE_IMPORT_ON_DEMAND" value="99" />
|
|
||||||
<option name="JD_ADD_BLANK_AFTER_PARM_COMMENTS" value="true" />
|
|
||||||
<option name="JD_ADD_BLANK_AFTER_RETURN" value="true" />
|
|
||||||
<XML>
|
|
||||||
<option name="XML_LEGACY_SETTINGS_IMPORTED" value="true" />
|
|
||||||
</XML>
|
|
||||||
<codeStyleSettings language="JAVA">
|
|
||||||
<arrangement>
|
|
||||||
<rules>
|
|
||||||
<section>
|
|
||||||
<rule>
|
|
||||||
<match>
|
|
||||||
<AND>
|
|
||||||
<FIELD>true</FIELD>
|
|
||||||
<FINAL>true</FINAL>
|
|
||||||
<PUBLIC>true</PUBLIC>
|
|
||||||
<STATIC>true</STATIC>
|
|
||||||
</AND>
|
|
||||||
</match>
|
|
||||||
</rule>
|
|
||||||
</section>
|
|
||||||
<section>
|
|
||||||
<rule>
|
|
||||||
<match>
|
|
||||||
<AND>
|
|
||||||
<FIELD>true</FIELD>
|
|
||||||
<FINAL>true</FINAL>
|
|
||||||
<PROTECTED>true</PROTECTED>
|
|
||||||
<STATIC>true</STATIC>
|
|
||||||
</AND>
|
|
||||||
</match>
|
|
||||||
</rule>
|
|
||||||
</section>
|
|
||||||
<section>
|
|
||||||
<rule>
|
|
||||||
<match>
|
|
||||||
<AND>
|
|
||||||
<FIELD>true</FIELD>
|
|
||||||
<FINAL>true</FINAL>
|
|
||||||
<PACKAGE_PRIVATE>true</PACKAGE_PRIVATE>
|
|
||||||
<STATIC>true</STATIC>
|
|
||||||
</AND>
|
|
||||||
</match>
|
|
||||||
</rule>
|
|
||||||
</section>
|
|
||||||
<section>
|
|
||||||
<rule>
|
|
||||||
<match>
|
|
||||||
<AND>
|
|
||||||
<FIELD>true</FIELD>
|
|
||||||
<FINAL>true</FINAL>
|
|
||||||
<PRIVATE>true</PRIVATE>
|
|
||||||
<STATIC>true</STATIC>
|
|
||||||
</AND>
|
|
||||||
</match>
|
|
||||||
</rule>
|
|
||||||
</section>
|
|
||||||
<section>
|
|
||||||
<rule>
|
|
||||||
<match>
|
|
||||||
<AND>
|
|
||||||
<FIELD>true</FIELD>
|
|
||||||
<PUBLIC>true</PUBLIC>
|
|
||||||
<STATIC>true</STATIC>
|
|
||||||
</AND>
|
|
||||||
</match>
|
|
||||||
</rule>
|
|
||||||
</section>
|
|
||||||
<section>
|
|
||||||
<rule>
|
|
||||||
<match>
|
|
||||||
<AND>
|
|
||||||
<FIELD>true</FIELD>
|
|
||||||
<PROTECTED>true</PROTECTED>
|
|
||||||
<STATIC>true</STATIC>
|
|
||||||
</AND>
|
|
||||||
</match>
|
|
||||||
</rule>
|
|
||||||
</section>
|
|
||||||
<section>
|
|
||||||
<rule>
|
|
||||||
<match>
|
|
||||||
<AND>
|
|
||||||
<FIELD>true</FIELD>
|
|
||||||
<PACKAGE_PRIVATE>true</PACKAGE_PRIVATE>
|
|
||||||
<STATIC>true</STATIC>
|
|
||||||
</AND>
|
|
||||||
</match>
|
|
||||||
</rule>
|
|
||||||
</section>
|
|
||||||
<section>
|
|
||||||
<rule>
|
|
||||||
<match>
|
|
||||||
<AND>
|
|
||||||
<FIELD>true</FIELD>
|
|
||||||
<PRIVATE>true</PRIVATE>
|
|
||||||
<STATIC>true</STATIC>
|
|
||||||
</AND>
|
|
||||||
</match>
|
|
||||||
</rule>
|
|
||||||
</section>
|
|
||||||
<section>
|
|
||||||
<rule>
|
|
||||||
<match>
|
|
||||||
<AND>
|
|
||||||
<INITIALIZER_BLOCK>true</INITIALIZER_BLOCK>
|
|
||||||
<STATIC>true</STATIC>
|
|
||||||
</AND>
|
|
||||||
</match>
|
|
||||||
</rule>
|
|
||||||
</section>
|
|
||||||
<section>
|
|
||||||
<rule>
|
|
||||||
<match>
|
|
||||||
<AND>
|
|
||||||
<FIELD>true</FIELD>
|
|
||||||
<FINAL>true</FINAL>
|
|
||||||
<PUBLIC>true</PUBLIC>
|
|
||||||
</AND>
|
|
||||||
</match>
|
|
||||||
</rule>
|
|
||||||
</section>
|
|
||||||
<section>
|
|
||||||
<rule>
|
|
||||||
<match>
|
|
||||||
<AND>
|
|
||||||
<FIELD>true</FIELD>
|
|
||||||
<FINAL>true</FINAL>
|
|
||||||
<PROTECTED>true</PROTECTED>
|
|
||||||
</AND>
|
|
||||||
</match>
|
|
||||||
</rule>
|
|
||||||
</section>
|
|
||||||
<section>
|
|
||||||
<rule>
|
|
||||||
<match>
|
|
||||||
<AND>
|
|
||||||
<FIELD>true</FIELD>
|
|
||||||
<FINAL>true</FINAL>
|
|
||||||
<PACKAGE_PRIVATE>true</PACKAGE_PRIVATE>
|
|
||||||
</AND>
|
|
||||||
</match>
|
|
||||||
</rule>
|
|
||||||
</section>
|
|
||||||
<section>
|
|
||||||
<rule>
|
|
||||||
<match>
|
|
||||||
<AND>
|
|
||||||
<FIELD>true</FIELD>
|
|
||||||
<FINAL>true</FINAL>
|
|
||||||
<PRIVATE>true</PRIVATE>
|
|
||||||
</AND>
|
|
||||||
</match>
|
|
||||||
</rule>
|
|
||||||
</section>
|
|
||||||
<section>
|
|
||||||
<rule>
|
|
||||||
<match>
|
|
||||||
<AND>
|
|
||||||
<FIELD>true</FIELD>
|
|
||||||
<PUBLIC>true</PUBLIC>
|
|
||||||
</AND>
|
|
||||||
</match>
|
|
||||||
</rule>
|
|
||||||
</section>
|
|
||||||
<section>
|
|
||||||
<rule>
|
|
||||||
<match>
|
|
||||||
<AND>
|
|
||||||
<FIELD>true</FIELD>
|
|
||||||
<PROTECTED>true</PROTECTED>
|
|
||||||
</AND>
|
|
||||||
</match>
|
|
||||||
</rule>
|
|
||||||
</section>
|
|
||||||
<section>
|
|
||||||
<rule>
|
|
||||||
<match>
|
|
||||||
<AND>
|
|
||||||
<FIELD>true</FIELD>
|
|
||||||
<PACKAGE_PRIVATE>true</PACKAGE_PRIVATE>
|
|
||||||
</AND>
|
|
||||||
</match>
|
|
||||||
</rule>
|
|
||||||
</section>
|
|
||||||
<section>
|
|
||||||
<rule>
|
|
||||||
<match>
|
|
||||||
<AND>
|
|
||||||
<FIELD>true</FIELD>
|
|
||||||
<PRIVATE>true</PRIVATE>
|
|
||||||
</AND>
|
|
||||||
</match>
|
|
||||||
</rule>
|
|
||||||
</section>
|
|
||||||
<section>
|
|
||||||
<rule>
|
|
||||||
<match>
|
|
||||||
<FIELD>true</FIELD>
|
|
||||||
</match>
|
|
||||||
</rule>
|
|
||||||
</section>
|
|
||||||
<section>
|
|
||||||
<rule>
|
|
||||||
<match>
|
|
||||||
<INITIALIZER_BLOCK>true</INITIALIZER_BLOCK>
|
|
||||||
</match>
|
|
||||||
</rule>
|
|
||||||
</section>
|
|
||||||
<section>
|
|
||||||
<rule>
|
|
||||||
<match>
|
|
||||||
<CONSTRUCTOR>true</CONSTRUCTOR>
|
|
||||||
</match>
|
|
||||||
</rule>
|
|
||||||
</section>
|
|
||||||
<section>
|
|
||||||
<rule>
|
|
||||||
<match>
|
|
||||||
<AND>
|
|
||||||
<METHOD>true</METHOD>
|
|
||||||
<STATIC>true</STATIC>
|
|
||||||
</AND>
|
|
||||||
</match>
|
|
||||||
</rule>
|
|
||||||
</section>
|
|
||||||
<section>
|
|
||||||
<rule>
|
|
||||||
<match>
|
|
||||||
<METHOD>true</METHOD>
|
|
||||||
</match>
|
|
||||||
</rule>
|
|
||||||
</section>
|
|
||||||
<section>
|
|
||||||
<rule>
|
|
||||||
<match>
|
|
||||||
<AND>
|
|
||||||
<METHOD>true</METHOD>
|
|
||||||
<PRIVATE>true</PRIVATE>
|
|
||||||
<STATIC>true</STATIC>
|
|
||||||
</AND>
|
|
||||||
</match>
|
|
||||||
</rule>
|
|
||||||
</section>
|
|
||||||
<section>
|
|
||||||
<rule>
|
|
||||||
<match>
|
|
||||||
<ENUM>true</ENUM>
|
|
||||||
</match>
|
|
||||||
</rule>
|
|
||||||
</section>
|
|
||||||
<section>
|
|
||||||
<rule>
|
|
||||||
<match>
|
|
||||||
<INTERFACE>true</INTERFACE>
|
|
||||||
</match>
|
|
||||||
</rule>
|
|
||||||
</section>
|
|
||||||
<section>
|
|
||||||
<rule>
|
|
||||||
<match>
|
|
||||||
<AND>
|
|
||||||
<CLASS>true</CLASS>
|
|
||||||
<STATIC>true</STATIC>
|
|
||||||
</AND>
|
|
||||||
</match>
|
|
||||||
</rule>
|
|
||||||
</section>
|
|
||||||
<section>
|
|
||||||
<rule>
|
|
||||||
<match>
|
|
||||||
<CLASS>true</CLASS>
|
|
||||||
</match>
|
|
||||||
</rule>
|
|
||||||
</section>
|
|
||||||
</rules>
|
|
||||||
</arrangement>
|
|
||||||
</codeStyleSettings>
|
|
||||||
</value>
|
|
||||||
</option>
|
|
||||||
<option name="USE_PER_PROJECT_SETTINGS" value="true" />
|
|
||||||
</component>
|
|
||||||
</project>
|
|
||||||
-35
@@ -1,35 +0,0 @@
|
|||||||
dist: focal
|
|
||||||
|
|
||||||
language: java
|
|
||||||
|
|
||||||
matrix:
|
|
||||||
include:
|
|
||||||
- env:
|
|
||||||
- JDK_VERSION=8
|
|
||||||
- env:
|
|
||||||
- JDK_VERSION=11
|
|
||||||
- env:
|
|
||||||
- JDK_VERSION=17
|
|
||||||
|
|
||||||
before_install:
|
|
||||||
- "[[ -d $HOME/.sdkman/ ]] && [[ -d $HOME/.sdkman/bin/ ]] || rm -rf $HOME/.sdkman/"
|
|
||||||
- curl -s "https://get.sdkman.io" | bash
|
|
||||||
- mkdir -p "$HOME/.sdkman/etc/"
|
|
||||||
- echo sdkman_auto_answer=true > "$HOME/.sdkman/etc/config"
|
|
||||||
- echo sdkman_auto_selfupdate=true >> "$HOME/.sdkman/etc/config"
|
|
||||||
- source "$HOME/.sdkman/bin/sdkman-init.sh"
|
|
||||||
|
|
||||||
install:
|
|
||||||
- sdk install java $(sdk list java | grep -o "$JDK_VERSION\.[0-9]*\.[0-9]*\-open" | head -1)
|
|
||||||
- sdk install maven
|
|
||||||
- export JAVA_HOME="$HOME/.sdkman/candidates/java/current"
|
|
||||||
- export PATH=${JAVA_HOME}/bin:${PATH}
|
|
||||||
- export MAVEN_HOME="$HOME/.sdkman/candidates/maven/current"
|
|
||||||
- export M2_HOME="$MAVEN_HOME"
|
|
||||||
- export PATH=${M2_HOME}/bin:${PATH}
|
|
||||||
- env
|
|
||||||
- mvn -v
|
|
||||||
|
|
||||||
cache:
|
|
||||||
directories:
|
|
||||||
- $HOME/.m2/repository
|
|
||||||
@@ -27,27 +27,44 @@
|
|||||||
10. Player login logic improvement to reduce lag
|
10. Player login logic improvement to reduce lag
|
||||||
11. Automatically purge bot data
|
11. Automatically purge bot data
|
||||||
12. **Folia support (in active testing)**
|
12. **Folia support (in active testing)**
|
||||||
13. Offhand Menu compatibility(Thats amazing)
|
13. **Velocity support (See [Velocity Support](./vc-support.md))**
|
||||||
14. **Velocity support (See [Velocity Support](./vc-support.md))**
|
14. Support Virtual Threads caching
|
||||||
15. Support Virtual Threads caching
|
15. Automatically fix portal stuck issue
|
||||||
16. Automatically fix portal stuck issue
|
16. Automatically login for Bedrock players(configurable)
|
||||||
17. Automatically login for Bedrock players(configurable)
|
17. Fix shulker box crash bug on legacy versions(MC 1.13-)
|
||||||
18. Fix shulker box crash bug on legacy versions(MC 1.13-)
|
18. **H2 database support**
|
||||||
19. **H2 database support**
|
19. **100% compatibility with original authme and extensions**
|
||||||
20. **100% compatibility with original authme and extensions**
|
20. More......
|
||||||
21. More......
|
|
||||||
|
|
||||||
**Download links:**
|
**Download links:**
|
||||||
[Releases](https://github.com/HaHaWTH/AuthMeReReloaded/releases/latest)
|
[Releases](https://github.com/HaHaWTH/AuthMeReReloaded/releases/latest)
|
||||||
[Actions(Dev builds, use at your own risk!)](https://github.com/HaHaWTH/AuthMeReReloaded/actions/workflows/maven.yml)
|
[Actions(Dev builds, use at your own risk!)](https://github.com/HaHaWTH/AuthMeReReloaded/actions/workflows/maven.yml)
|
||||||
|
|
||||||
If you are using FRP(内网穿透) for your server, this plugin may help [HAProxy-Detector](https://github.com/HaHaWTH/HAProxy-Detector)
|
|
||||||
|
|
||||||
**Pull Requests and suggestions are welcome!**
|
**Pull Requests and suggestions are welcome!**
|
||||||
|
|
||||||
|
## Building
|
||||||
|
|
||||||
|
* [Gradle](https://gradle.org/) - Dependency Management
|
||||||
|
|
||||||
|
The GradleWrapper in included in this project.
|
||||||
|
|
||||||
|
**Windows:**
|
||||||
|
|
||||||
|
```
|
||||||
|
gradlew.bat clean build
|
||||||
|
```
|
||||||
|
|
||||||
|
**macOS/Linux:**
|
||||||
|
|
||||||
|
```
|
||||||
|
./gradlew clean build
|
||||||
|
```
|
||||||
|
|
||||||
|
Build artifacts should be found in `./outs` folder.
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
Only additions to AuthMeReloaded is under AGPL-3.0 license, AuthMeReloaded is licensed under GPL-3.0.
|
Only modifications to AuthMeReloaded is under AGPL-3.0 license, AuthMeReloaded is licensed under GPL-3.0.
|
||||||
|
|
||||||
<picture>
|
<picture>
|
||||||
<source
|
<source
|
||||||
|
|||||||
@@ -0,0 +1,190 @@
|
|||||||
|
plugins {
|
||||||
|
`java-library`
|
||||||
|
`maven-publish`
|
||||||
|
id("com.gradleup.shadow") version "9.0.0-beta4"
|
||||||
|
}
|
||||||
|
|
||||||
|
description = "Fork of the first authentication plugin for the Bukkit API!"
|
||||||
|
|
||||||
|
java {
|
||||||
|
withSourcesJar()
|
||||||
|
sourceCompatibility = JavaVersion.VERSION_1_8
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks.withType<JavaCompile> {
|
||||||
|
options.encoding = "UTF-8"
|
||||||
|
}
|
||||||
|
|
||||||
|
repositories {
|
||||||
|
mavenCentral()
|
||||||
|
mavenLocal()
|
||||||
|
// PaperMC
|
||||||
|
maven("https://papermc.io/repo/repository/maven-public/")
|
||||||
|
maven("https://repo.opencollab.dev/main/")
|
||||||
|
maven("https://repo.opencollab.dev/maven-snapshots/")
|
||||||
|
maven("https://s01.oss.sonatype.org/content/repositories/snapshots/")
|
||||||
|
maven("https://repository.apache.org/content/repositories/snapshots/")
|
||||||
|
maven("https://hub.spigotmc.org/nexus/content/repositories/snapshots")
|
||||||
|
maven("https://repo.codemc.io/repository/maven-public/")
|
||||||
|
maven("https://repo.essentialsx.net/releases/")
|
||||||
|
maven("https://repo.dmulloy2.net/nexus/repository/releases/")
|
||||||
|
maven("https://repo.dmulloy2.net/nexus/repository/snapshots/")
|
||||||
|
maven("https://repo.onarandombox.com/multiverse-releases")
|
||||||
|
maven("https://jitpack.io/")
|
||||||
|
maven("https://repo.extendedclip.com/content/repositories/placeholderapi/")
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
// Spigot API, https://www.spigotmc.org/
|
||||||
|
compileOnly("org.spigotmc:spigot-api:1.20.6-R0.1-SNAPSHOT")
|
||||||
|
// Adventure API
|
||||||
|
implementation(libs.adventure.text.minimessage)
|
||||||
|
implementation(libs.adventure.platform.bukkit)
|
||||||
|
implementation(libs.adventure.text.serializer.gson)
|
||||||
|
// Java Libraries
|
||||||
|
compileOnly("org.geysermc.floodgate:api:2.2.2-SNAPSHOT")
|
||||||
|
// Jalu Injector
|
||||||
|
implementation(libs.injector)
|
||||||
|
// String comparison library. Used for dynamic help system.
|
||||||
|
implementation(libs.string.similarity)
|
||||||
|
// MaxMind GEO IP with our modifications to use GSON in replacement of the big Jackson dependency
|
||||||
|
// GSON is already included and therefore it reduces the file size in comparison to the original version
|
||||||
|
implementation(libs.maxmind.db.gson) {
|
||||||
|
exclude("com.google.code.gson", "gson")
|
||||||
|
}
|
||||||
|
// Library for tar archives
|
||||||
|
implementation(libs.javatar)
|
||||||
|
// Java Email Library
|
||||||
|
implementation(libs.commons.email)
|
||||||
|
// Log4J Logger (required by the console filter)
|
||||||
|
compileOnly(libs.log4j.core) // Log4J version bundled in 1.12.2
|
||||||
|
// Libby
|
||||||
|
implementation(libs.libby.bukkit)
|
||||||
|
// Database Connection Pool
|
||||||
|
implementation(libs.hikaricp) {
|
||||||
|
exclude("org.slf4j", "slf4j-api")
|
||||||
|
}
|
||||||
|
// HikariCP Logger
|
||||||
|
implementation(libs.slf4j.simple) // We can't update to 2.x as long as we use HikariCP for java 8
|
||||||
|
// PBKDF2 implementation
|
||||||
|
implementation(libs.pbkdf2)
|
||||||
|
// MySQL connector, shaded into the legacy jar
|
||||||
|
implementation(libs.mysql.connector.j)
|
||||||
|
implementation(libs.mariadb.java.client)
|
||||||
|
// Argon2 implementation
|
||||||
|
implementation(libs.argon2.jvm.nolibs)
|
||||||
|
// TOTP client
|
||||||
|
implementation(libs.googleauth)
|
||||||
|
// Keep in sync with spigot 1.19
|
||||||
|
implementation(libs.guava) {
|
||||||
|
exclude("org.checkerframework", "checker-qual")
|
||||||
|
}
|
||||||
|
implementation(libs.gson)
|
||||||
|
// ConfigMe
|
||||||
|
implementation(libs.configme) {
|
||||||
|
exclude("org.yaml", "snakeyaml")
|
||||||
|
}
|
||||||
|
// bStats metrics
|
||||||
|
implementation("org.bstats:bstats-bukkit:3.0.2")
|
||||||
|
// ProtocolLib
|
||||||
|
compileOnly("com.comphenix.protocol:ProtocolLib:5.3.0")
|
||||||
|
// LuckPerms plugin
|
||||||
|
compileOnly("net.luckperms:api:5.4")
|
||||||
|
// PermissionsEx plugin
|
||||||
|
compileOnly("ru.tehkode:PermissionsEx:1.23.5-SNAPSHOT")
|
||||||
|
// zPermissions plugin
|
||||||
|
compileOnly("org.tyrannyofheaven.bukkit:zPermissions:1.4.3-SNAPSHOT") {
|
||||||
|
exclude("org.avaje", "ebean")
|
||||||
|
}
|
||||||
|
// Vault, https://dev.bukkit.org/bukkit-plugins/vault/
|
||||||
|
compileOnly("net.milkbowl.vault:VaultAPI:1.7")
|
||||||
|
// Multi World plugin, https://www.spigotmc.org/resources/multiverse-core.390/
|
||||||
|
compileOnly("com.onarandombox.multiversecore:multiverse-core:4.3.14")
|
||||||
|
// EssentialsX plugin
|
||||||
|
compileOnly("net.essentialsx:EssentialsX:2.20.1") {
|
||||||
|
exclude("io.papermc", "paperlib")
|
||||||
|
}
|
||||||
|
// BCrypt implementation
|
||||||
|
implementation(libs.bcrypt)
|
||||||
|
// PlaceholderAPI
|
||||||
|
compileOnly("me.clip:placeholderapi:2.11.6")
|
||||||
|
// XAuth, another authentication plugin, required by the database converter
|
||||||
|
compileOnly("de.luricos.bukkit:xAuth:2.6.1-SNAPSHOT")
|
||||||
|
implementation(libs.datasourcecolumns)
|
||||||
|
implementation(libs.postgresql) {
|
||||||
|
exclude("org.checkerframework", "checker-qual")
|
||||||
|
}
|
||||||
|
// Required to mock the LuckPerms API
|
||||||
|
testImplementation(libs.checker.qual)
|
||||||
|
// Universal Scheduler
|
||||||
|
implementation(libs.universalscheduler)
|
||||||
|
// JDBC drivers for datasource integration tests
|
||||||
|
testImplementation(libs.sqlite.jdbc)
|
||||||
|
compileOnly(libs.h2)
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks {
|
||||||
|
processResources {
|
||||||
|
filesMatching("**/*.yml") {
|
||||||
|
expand(project.properties)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
build { dependsOn(shadowJar) }
|
||||||
|
|
||||||
|
// ShadowJar Config
|
||||||
|
shadowJar {
|
||||||
|
// Options
|
||||||
|
archiveFileName = "AuthMe-${project.version}.${archiveExtension.get()}"
|
||||||
|
destinationDirectory.set(file("$rootDir/outs"))
|
||||||
|
// Libraries Relocate
|
||||||
|
relocate("org.apache.http", "fr.xephi.authme.libs.org.apache.http")
|
||||||
|
relocate("org.apache.commons", "fr.xephi.authme.libs.org.apache.commons")
|
||||||
|
relocate("waffle", "fr.xephi.authme.libs.waffle")
|
||||||
|
relocate("com.github.benmanes.caffeine", "fr.xephi.authme.libs.com.github.benmanes.caffeine")
|
||||||
|
relocate("com.google.common", "fr.xephi.authme.libs.com.google.common")
|
||||||
|
relocate("com.google.thirdparty", "fr.xephi.authme.libs.com.google.thirdparty")
|
||||||
|
relocate("com.google.j2objc", "fr.xephi.authme.libs.com.google.j2objc")
|
||||||
|
relocate("com.google.errorprone", "fr.xephi.authme.libs.com.google.errorprone")
|
||||||
|
relocate("com.google.gson", "fr.xephi.authme.libs.com.google.gson")
|
||||||
|
relocate("org.apache.http", "fr.xephi.authme.libs.org.apache.http")
|
||||||
|
relocate("org.apache.commons", "fr.xephi.authme.libs.org.apache.commons")
|
||||||
|
relocate("waffle", "fr.xephi.authme.libs.waffle")
|
||||||
|
relocate("com.github.benmanes.caffeine", "fr.xephi.authme.libs.com.github.benmanes.caffeine")
|
||||||
|
relocate("ch.jalu", "fr.xephi.authme.libs.ch.jalu")
|
||||||
|
relocate("com.zaxxer.hikari", "fr.xephi.authme.libs.com.zaxxer.hikari")
|
||||||
|
relocate("org.slf4j", "fr.xephi.authme.libs.org.slf4j")
|
||||||
|
relocate("com.maxmind.db", "fr.xephi.authme.libs.com.maxmind.db")
|
||||||
|
relocate("com.ice.tar", "fr.xephi.authme.libs.com.icetar.tar")
|
||||||
|
relocate("net.ricecode.similarity", "fr.xephi.authme.libs.ricecode.net.ricecode.similarity")
|
||||||
|
relocate("de.rtner", "fr.xephi.authme.libs.de.rtner")
|
||||||
|
relocate("org.picketbox", "fr.xephi.authme.libs.org.picketbox")
|
||||||
|
relocate("org.jboss.crypto", "fr.xephi.authme.libs.org.jboss.crypto")
|
||||||
|
relocate("org.jboss.security", "fr.xephi.authme.libs.org.jboss.security")
|
||||||
|
relocate("de.mkammerer", "fr.xephi.authme.libs.de.mkammerer")
|
||||||
|
relocate("com.warrenstrange", "fr.xephi.authme.libs.com.warrenstrange")
|
||||||
|
relocate("javax.inject", "fr.xephi.authme.libs.javax.inject")
|
||||||
|
relocate("at.favre.lib", "fr.xephi.authme.libs.at.favre.lib")
|
||||||
|
relocate("org.postgresql", "fr.xephi.authme.libs.org.postgresql")
|
||||||
|
// bStats metrics class
|
||||||
|
relocate("org.bstats", "fr.xephi.authme.libs.org.bstats")
|
||||||
|
relocate("org.mariadb.jdbc", "fr.xephi.authme.libs.org.mariadb.jdbc")
|
||||||
|
relocate("com.github.Anon8281.universalScheduler", "fr.xephi.authme.libs.com.github.Anon8281.universalScheduler")
|
||||||
|
relocate("com.mysql", "fr.xephi.authme.libs.com.mysql")
|
||||||
|
relocate("com.google.protobuf", "fr.xephi.authme.libs.com.google.protobuf")
|
||||||
|
relocate("io.netty", "fr.xephi.authme.libs.io.netty")
|
||||||
|
relocate("org.apache.commons.validator", "fr.xephi.authme.libs.org.apache.commons.validator")
|
||||||
|
relocate("com.alessiodp.libby", "fr.xephi.authme.libs.com.alessiodp.libby")
|
||||||
|
relocate("net.kyori.adventure", "fr.xephi.authme.libs.net.kyori.adventure")
|
||||||
|
relocate("net.kyori.examination", "fr.xephi.authme.libs.net.kyori.examination")
|
||||||
|
relocate("net.kyori.option", "fr.xephi.authme.libs.net.kyori.option")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
publishing {
|
||||||
|
publications {
|
||||||
|
create<MavenPublication>("maven") {
|
||||||
|
from(components["java"])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+1
-1
@@ -108,4 +108,4 @@ brackets; optional arguments are enclosed in square brackets (`[ ]`).
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
This page was automatically generated on the [AuthMe/AuthMeReloaded repository](https://github.com/AuthMe/AuthMeReloaded/tree/master/docs/) on Sun Apr 04 21:31:42 CEST 2021
|
This page was automatically generated on the [HaHaWTH/AuthMeReReloaded repository](https://github.com/HaHaWTH/AuthMeReReloaded/tree/master/docs/) on Sun Apr 04 21:31:42 CEST 2021
|
||||||
|
|||||||
+175
-66
@@ -1,7 +1,8 @@
|
|||||||
<!-- AUTO-GENERATED FILE! Do not edit this directly -->
|
<!-- AUTO-GENERATED FILE! Do not edit this directly -->
|
||||||
<!-- File auto-generated on Thu Jul 28 18:11:22 CEST 2022. See docs/config/config.tpl.md -->
|
<!-- File auto-generated on Wed May 29 21:00:00 CST 2024. See docs/config/config.tpl.md -->
|
||||||
|
|
||||||
## AuthMe Configuration
|
## AuthMe Configuration
|
||||||
|
|
||||||
The first time you run AuthMe it will create a config.yml file in the plugins/AuthMe folder,
|
The first time you run AuthMe it will create a config.yml file in the plugins/AuthMe folder,
|
||||||
with which you can configure various settings. The following is the initial contents of
|
with which you can configure various settings. The following is the initial contents of
|
||||||
the generated config.yml file.
|
the generated config.yml file.
|
||||||
@@ -14,11 +15,21 @@ DataSource:
|
|||||||
# Enable the database caching system, should be disabled on bungeecord environments
|
# Enable the database caching system, should be disabled on bungeecord environments
|
||||||
# or when a website integration is being used.
|
# or when a website integration is being used.
|
||||||
caching: true
|
caching: true
|
||||||
|
# Should we try to use VirtualThreads(Java 21+) for database cache loader?
|
||||||
|
useVirtualThreadsCache: false
|
||||||
# Database host address
|
# Database host address
|
||||||
mySQLHost: 127.0.0.1
|
mySQLHost: 127.0.0.1
|
||||||
# Database port
|
# Database port
|
||||||
mySQLPort: '3306'
|
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
|
# Connect to MySQL database over SSL
|
||||||
|
# If you're using MariaDB, use sslMode instead
|
||||||
mySQLUseSSL: true
|
mySQLUseSSL: true
|
||||||
# Verification of server's certificate.
|
# Verification of server's certificate.
|
||||||
# We would not recommend to set this option to false.
|
# We would not recommend to set this option to false.
|
||||||
@@ -26,6 +37,7 @@ DataSource:
|
|||||||
mySQLCheckServerCertificate: true
|
mySQLCheckServerCertificate: true
|
||||||
# Authorize client to retrieve RSA server public key.
|
# Authorize client to retrieve RSA server public key.
|
||||||
# Advanced option, ignore if you don't know what it means.
|
# Advanced option, ignore if you don't know what it means.
|
||||||
|
# If you are using MariaDB, use MariaDbSslMode instead.
|
||||||
mySQLAllowPublicKeyRetrieval: true
|
mySQLAllowPublicKeyRetrieval: true
|
||||||
# Username to connect to the MySQL database
|
# Username to connect to the MySQL database
|
||||||
mySQLUsername: authme
|
mySQLUsername: authme
|
||||||
@@ -105,6 +117,64 @@ ExternalBoardOptions:
|
|||||||
XFActivatedGroupId: 2
|
XFActivatedGroupId: 2
|
||||||
# Wordpress prefix defined during WordPress installation
|
# Wordpress prefix defined during WordPress installation
|
||||||
wordpressTablePrefix: wp_
|
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`
|
||||||
|
# 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
|
||||||
|
captcha:
|
||||||
|
# Should send GUI captcha by country code whitelist?
|
||||||
|
# If the country of the player is in this list, the captcha won't be sent.
|
||||||
|
whiteList: []
|
||||||
|
# Send a GUI captcha to unregistered players?(Requires ProtocolLib)
|
||||||
|
guiCaptcha: false
|
||||||
|
# Should we kick the players when they don't finish the GUI captcha in seconds?
|
||||||
|
# (less than or equals 0 is disabled)
|
||||||
|
timeOut: 0
|
||||||
|
# Should we ignore floodgate players when sending GUI captcha?
|
||||||
|
# (Requires floodgate and hookFloodgate: true)
|
||||||
|
ignoreBedrock: false
|
||||||
|
# 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
|
||||||
|
optimizes:
|
||||||
|
# Choose the best teleport method by server brand?
|
||||||
|
# (Enable this if you are using Paper/Folia)
|
||||||
|
smartAsyncTeleport: true
|
||||||
settings:
|
settings:
|
||||||
sessions:
|
sessions:
|
||||||
# Do you want to enable the session feature?
|
# Do you want to enable the session feature?
|
||||||
@@ -113,12 +183,13 @@ settings:
|
|||||||
# The next time the player joins the server, if his IP
|
# The next time the player joins the server, if his IP
|
||||||
# is the same as last time and the timeout hasn't
|
# is the same as last time and the timeout hasn't
|
||||||
# expired, he will not need to authenticate.
|
# expired, he will not need to authenticate.
|
||||||
enabled: false
|
enabled: true
|
||||||
# After how many minutes should a session expire?
|
# After how many minutes should a session expire?
|
||||||
# A player's session ends after the timeout or if his IP has changed
|
# A player's session ends after the timeout or if his IP has changed
|
||||||
timeout: 10
|
timeout: 43200
|
||||||
# Message language, available languages:
|
# Message language, available languages:
|
||||||
# https://github.com/AuthMe/AuthMeReloaded/blob/master/docs/translations.md
|
# https://github.com/AuthMe/AuthMeReloaded/blob/master/docs/translations.md
|
||||||
|
# Example: zhcn, en
|
||||||
messagesLanguage: en
|
messagesLanguage: en
|
||||||
# Forces authme to hook into Vault instead of a specific permission handler system.
|
# Forces authme to hook into Vault instead of a specific permission handler system.
|
||||||
forceVaultHook: false
|
forceVaultHook: false
|
||||||
@@ -151,7 +222,7 @@ settings:
|
|||||||
- /totp
|
- /totp
|
||||||
# Max number of allowed registrations per IP
|
# Max number of allowed registrations per IP
|
||||||
# The value 0 means an unlimited number of registrations!
|
# The value 0 means an unlimited number of registrations!
|
||||||
maxRegPerIp: 1
|
maxRegPerIp: 3
|
||||||
# Minimum allowed username length
|
# Minimum allowed username length
|
||||||
minNicknameLength: 3
|
minNicknameLength: 3
|
||||||
# Maximum allowed username length
|
# Maximum allowed username length
|
||||||
@@ -177,7 +248,7 @@ settings:
|
|||||||
SaveQuitLocation: false
|
SaveQuitLocation: false
|
||||||
# To activate the restricted user feature you need
|
# To activate the restricted user feature you need
|
||||||
# to enable this option and configure the AllowedRestrictedUser field.
|
# to enable this option and configure the AllowedRestrictedUser field.
|
||||||
AllowRestrictedUser: false
|
AllowRestrictedUser: true
|
||||||
# The restricted user feature will kick players listed below
|
# The restricted user feature will kick players listed below
|
||||||
# if they don't match the defined IP address. Names are case-insensitive.
|
# 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\..*
|
# You can use * as wildcard (127.0.0.*), or regex with a "regex:" prefix regex:127\.0\.0\..*
|
||||||
@@ -185,13 +256,31 @@ settings:
|
|||||||
# AllowedRestrictedUser:
|
# AllowedRestrictedUser:
|
||||||
# - playername;127.0.0.1
|
# - playername;127.0.0.1
|
||||||
# - playername;regex:127\.0\.0\..*
|
# - playername;regex:127\.0\.0\..*
|
||||||
AllowedRestrictedUser: []
|
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?
|
# Ban unknown IPs trying to log in with a restricted username?
|
||||||
banUnsafedIP: false
|
banUnsafedIP: false
|
||||||
# Should unregistered players be kicked immediately?
|
# Should unregistered players be kicked immediately?
|
||||||
kickNonRegistered: false
|
kickNonRegistered: false
|
||||||
# Should players be kicked on wrong password?
|
# Should players be kicked on wrong password?
|
||||||
kickOnWrongPassword: true
|
kickOnWrongPassword: false
|
||||||
# Should not logged in players be teleported to the spawn?
|
# Should not logged in players be teleported to the spawn?
|
||||||
# After the authentication they will be teleported back to
|
# After the authentication they will be teleported back to
|
||||||
# their normal position.
|
# their normal position.
|
||||||
@@ -200,31 +289,33 @@ settings:
|
|||||||
allowMovement: false
|
allowMovement: false
|
||||||
# After how many seconds should players who fail to login or register
|
# After how many seconds should players who fail to login or register
|
||||||
# be kicked? Set to 0 to disable.
|
# be kicked? Set to 0 to disable.
|
||||||
timeout: 30
|
timeout: 120
|
||||||
# Regex pattern of allowed characters in the player name.
|
# Regex pattern of allowed characters in the player name.
|
||||||
allowedNicknameCharacters: '[a-zA-Z0-9_]*'
|
allowedNicknameCharacters: '[a-zA-Z0-9_]*'
|
||||||
# How far can unregistered players walk?
|
# How far can unregistered players walk?
|
||||||
# Set to 0 for unlimited radius
|
# Set to 0 for unlimited radius
|
||||||
allowedMovementRadius: 100
|
allowedMovementRadius: 0
|
||||||
# Should we protect the player inventory before logging in? Requires ProtocolLib.
|
# Should we protect the player inventory before logging in? Requires ProtocolLib.
|
||||||
ProtectInventoryBeforeLogIn: true
|
ProtectInventoryBeforeLogIn: false
|
||||||
# Should we deny the tabcomplete feature before logging in? Requires ProtocolLib.
|
# Should we deny the tabcomplete feature before logging in? Requires ProtocolLib.
|
||||||
DenyTabCompleteBeforeLogin: false
|
DenyTabCompleteBeforeLogin: false
|
||||||
# Should we display all other accounts from a player when he joins?
|
# Should we display all other accounts from a player when he joins?
|
||||||
# permission: /authme.admin.accounts
|
# permission: /authme.admin.accounts
|
||||||
displayOtherAccounts: true
|
displayOtherAccounts: false
|
||||||
# Spawn priority; values: authme, essentials, cmi, multiverse, default
|
# Spawn priority; values: authme, essentials, cmi, multiverse, default
|
||||||
spawnPriority: authme,essentials,cmi,multiverse,default
|
spawnPriority: authme,essentials,cmi,multiverse,default
|
||||||
# Maximum Login authorized by IP
|
# Maximum Login authorized by IP
|
||||||
maxLoginPerIp: 0
|
maxLoginPerIp: 3
|
||||||
# Maximum Join authorized by IP
|
# Maximum Join authorized by IP
|
||||||
maxJoinPerIp: 0
|
maxJoinPerIp: 3
|
||||||
# AuthMe will NEVER teleport players if set to true!
|
# AuthMe will NEVER teleport players if set to true!
|
||||||
noTeleport: false
|
noTeleport: false
|
||||||
# Regex syntax for allowed chars in passwords. The default [!-~] allows all visible ASCII
|
# Regex syntax for allowed chars in passwords. The default [!-~] allows all visible ASCII
|
||||||
# characters, which is what we recommend. See also http://asciitable.com
|
# characters, which is what we recommend. See also http://asciitable.com
|
||||||
# You can test your regex with https://regex101.com
|
# You can test your regex with https://regex101.com
|
||||||
allowedPasswordCharacters: '[!-~]*'
|
allowedPasswordCharacters: '[!-~]*'
|
||||||
|
# Regex syntax for allowed chars in email.
|
||||||
|
allowedEmailCharacters: ^[A-Za-z0-9_.]{3,20}@(qq|outlook|163|gmail|icloud)\.com$
|
||||||
GameMode:
|
GameMode:
|
||||||
# Force survival gamemode when player joins?
|
# Force survival gamemode when player joins?
|
||||||
ForceSurvivalMode: false
|
ForceSurvivalMode: false
|
||||||
@@ -247,12 +338,12 @@ settings:
|
|||||||
UnrestrictedInventories: []
|
UnrestrictedInventories: []
|
||||||
security:
|
security:
|
||||||
# Minimum length of password
|
# Minimum length of password
|
||||||
minPasswordLength: 5
|
minPasswordLength: 8
|
||||||
# Maximum length of password
|
# Maximum length of password
|
||||||
passwordMaxLength: 30
|
passwordMaxLength: 26
|
||||||
# Possible values: SHA256, BCRYPT, BCRYPT2Y, PBKDF2, SALTEDSHA512,
|
# Possible values: SHA256, BCRYPT, BCRYPT2Y, PBKDF2, SALTEDSHA512,
|
||||||
# MYBB, IPB3, PHPBB, PHPFUSION, SMF, XENFORO, XAUTH, JOOMLA, WBB3, WBB4, MD5VB,
|
# MYBB, IPB3, PHPBB, PHPFUSION, SMF, XENFORO, XAUTH, JOOMLA, WBB3, WBB4, MD5VB,
|
||||||
# PBKDF2DJANGO, WORDPRESS, ROYALAUTH, ARGON2, CUSTOM (for developers only). See full list at
|
# PBKDF2DJANGO, WORDPRESS, ROYALAUTH, ARGON2, NOCRYPT, CUSTOM (for developers only). See full list at
|
||||||
# https://github.com/AuthMe/AuthMeReloaded/blob/master/docs/hash_algorithms.md
|
# 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
|
# If you use ARGON2, check that you have the argon2 c library on your system
|
||||||
passwordHash: SHA256
|
passwordHash: SHA256
|
||||||
@@ -273,13 +364,19 @@ settings:
|
|||||||
# - 'password'
|
# - 'password'
|
||||||
# - 'help'
|
# - 'help'
|
||||||
unsafePasswords:
|
unsafePasswords:
|
||||||
- '123456'
|
- '12345678'
|
||||||
- password
|
- password
|
||||||
- qwerty
|
- qwertyui
|
||||||
- '12345'
|
|
||||||
- '54321'
|
|
||||||
- '123456789'
|
- '123456789'
|
||||||
- help
|
- '87654321'
|
||||||
|
- '1234567890'
|
||||||
|
- asdfghjkl
|
||||||
|
- zxcvbnm,
|
||||||
|
- asdfghjk
|
||||||
|
- '12312312'
|
||||||
|
- '123123123'
|
||||||
|
- '32132132'
|
||||||
|
- '321321321'
|
||||||
registration:
|
registration:
|
||||||
# Enable registration on the server?
|
# Enable registration on the server?
|
||||||
enabled: true
|
enabled: true
|
||||||
@@ -294,21 +391,26 @@ settings:
|
|||||||
# EMAIL = password is generated and sent to the email provided 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
|
# More info at https://github.com/AuthMe/AuthMeReloaded/wiki/Registration
|
||||||
type: PASSWORD
|
type: PASSWORD
|
||||||
# Second argument the /register command should take: NONE = no 2nd argument
|
# Second argument the /register command should take:
|
||||||
|
# NONE = no 2nd argument
|
||||||
# CONFIRMATION = must repeat first argument (pass or email)
|
# CONFIRMATION = must repeat first argument (pass or email)
|
||||||
# EMAIL_OPTIONAL = for password register: 2nd argument can be empty or have email address
|
# 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
|
# EMAIL_MANDATORY = for password register: 2nd argument MUST be an email address
|
||||||
secondArg: CONFIRMATION
|
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 we force kick a player after a successful registration?
|
||||||
# Do not use with login feature below
|
# Do not use with login feature below
|
||||||
forceKickAfterRegister: false
|
forceKickAfterRegister: false
|
||||||
# Does AuthMe need to enforce a /login after a successful registration?
|
# Does AuthMe need to enforce a /login after a successful registration?
|
||||||
forceLoginAfterRegister: false
|
forceLoginAfterRegister: false
|
||||||
# Broadcast the welcome message to the server or only to the player?
|
|
||||||
# set true for server or false for player
|
|
||||||
broadcastWelcomeMessage: false
|
|
||||||
# Should we delay the join message and display it once the player has logged in?
|
# Should we delay the join message and display it once the player has logged in?
|
||||||
delayJoinMessage: false
|
delayJoinMessage: true
|
||||||
# The custom join message that will be sent after a successful login,
|
# The custom join message that will be sent after a successful login,
|
||||||
# keep empty to use the original one.
|
# keep empty to use the original one.
|
||||||
# Available variables:
|
# Available variables:
|
||||||
@@ -317,11 +419,11 @@ settings:
|
|||||||
# {DISPLAYNAMENOCOLOR}: the player display name (without colors)
|
# {DISPLAYNAMENOCOLOR}: the player display name (without colors)
|
||||||
customJoinMessage: ''
|
customJoinMessage: ''
|
||||||
# Should we remove the leave messages of unlogged users?
|
# Should we remove the leave messages of unlogged users?
|
||||||
removeUnloggedLeaveMessage: false
|
removeUnloggedLeaveMessage: true
|
||||||
# Should we remove join messages altogether?
|
# Should we remove join messages altogether?
|
||||||
removeJoinMessage: false
|
removeJoinMessage: true
|
||||||
# Should we remove leave messages altogether?
|
# Should we remove leave messages altogether?
|
||||||
removeLeaveMessage: false
|
removeLeaveMessage: true
|
||||||
# Do we need to add potion effect Blinding before login/register?
|
# Do we need to add potion effect Blinding before login/register?
|
||||||
applyBlindEffect: false
|
applyBlindEffect: false
|
||||||
# Do we need to prevent people to login with another case?
|
# Do we need to prevent people to login with another case?
|
||||||
@@ -347,7 +449,7 @@ GroupOptions:
|
|||||||
unregisteredPlayerGroup: ''
|
unregisteredPlayerGroup: ''
|
||||||
Email:
|
Email:
|
||||||
# Email SMTP server host
|
# Email SMTP server host
|
||||||
mailSMTP: smtp.gmail.com
|
mailSMTP: smtp.163.com
|
||||||
# Email SMTP server port
|
# Email SMTP server port
|
||||||
mailPort: 465
|
mailPort: 465
|
||||||
# Only affects port 25: enable TLS/STARTTLS?
|
# Only affects port 25: enable TLS/STARTTLS?
|
||||||
@@ -361,7 +463,7 @@ Email:
|
|||||||
# Custom sender name, replacing the mailAccount name in the email
|
# Custom sender name, replacing the mailAccount name in the email
|
||||||
mailSenderName: ''
|
mailSenderName: ''
|
||||||
# Recovery password length
|
# Recovery password length
|
||||||
RecoveryPasswordLength: 8
|
RecoveryPasswordLength: 12
|
||||||
# Mail Subject
|
# Mail Subject
|
||||||
mailSubject: Your new AuthMe password
|
mailSubject: Your new AuthMe password
|
||||||
# Like maxRegPerIP but with email
|
# Like maxRegPerIP but with email
|
||||||
@@ -370,20 +472,30 @@ Email:
|
|||||||
recallPlayers: false
|
recallPlayers: false
|
||||||
# Delay in minute for the recall scheduler
|
# Delay in minute for the recall scheduler
|
||||||
delayRecall: 5
|
delayRecall: 5
|
||||||
# Blacklist these domains for emails
|
|
||||||
emailBlacklisted:
|
|
||||||
- 10minutemail.com
|
|
||||||
# Whitelist ONLY these domains for emails
|
|
||||||
emailWhitelisted: []
|
|
||||||
# Send the new password drawn in an image?
|
# Send the new password drawn in an image?
|
||||||
generateImage: false
|
generateImage: false
|
||||||
# The OAuth2 token
|
# The OAuth2 token
|
||||||
emailOauth2Token: ''
|
emailOauth2Token: ''
|
||||||
|
# Email notifications when the server shuts down
|
||||||
|
shutDownEmail: false
|
||||||
|
# Email notification address when the server is shut down
|
||||||
|
shutDownEmailAddress: your@mail.com
|
||||||
Hooks:
|
Hooks:
|
||||||
# Do we need to hook with multiverse for spawn checking?
|
# Do we need to hook with multiverse for spawn checking?
|
||||||
multiverse: true
|
multiverse: true
|
||||||
# Do we need to hook with BungeeCord?
|
# Do we need to hook with BungeeCord?
|
||||||
bungeecord: false
|
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
|
# Send player to this BungeeCord server after register/login
|
||||||
sendPlayerTo: ''
|
sendPlayerTo: ''
|
||||||
# Do we need to disable Essentials SocialSpy on join?
|
# Do we need to disable Essentials SocialSpy on join?
|
||||||
@@ -394,24 +506,12 @@ Protection:
|
|||||||
# Enable some servers protection (country based login, antibot)
|
# Enable some servers protection (country based login, antibot)
|
||||||
enableProtection: false
|
enableProtection: false
|
||||||
# Apply the protection also to registered usernames
|
# Apply the protection also to registered usernames
|
||||||
enableProtectionRegistered: true
|
enableProtectionRegistered: false
|
||||||
geoIpDatabase:
|
|
||||||
# Enable GeoIp database
|
|
||||||
enabled: true
|
|
||||||
# The MaxMind clientId used to download the GeoIp database,
|
|
||||||
# get one at https://www.maxmind.com/en/accounts/current/license-key
|
|
||||||
# The EssentialsX project has a very useful tutorial on how to generate
|
|
||||||
# the license key: https://github.com/EssentialsX/Wiki/blob/master/GeoIP.md
|
|
||||||
clientId: ''
|
|
||||||
# The MaxMind licenseKey used to download the GeoIp database.
|
|
||||||
licenseKey: ''
|
|
||||||
# Countries allowed to join the server and register. For country codes, see
|
# Countries allowed to join the server and register. For country codes, see
|
||||||
# https://dev.maxmind.com/geoip/legacy/codes/iso3166/
|
# https://dev.maxmind.com/geoip/legacy/codes/iso3166/
|
||||||
# Use "LOCALHOST" for local addresses.
|
# Use "LOCALHOST" for local addresses.
|
||||||
# PLEASE USE QUOTES!
|
# PLEASE USE QUOTES!
|
||||||
countries:
|
countries:
|
||||||
- US
|
|
||||||
- GB
|
|
||||||
- LOCALHOST
|
- LOCALHOST
|
||||||
# Countries not allowed to join the server and register
|
# Countries not allowed to join the server and register
|
||||||
# PLEASE USE QUOTES!
|
# PLEASE USE QUOTES!
|
||||||
@@ -430,7 +530,7 @@ Protection:
|
|||||||
antiBotDelay: 60
|
antiBotDelay: 60
|
||||||
quickCommands:
|
quickCommands:
|
||||||
# Kicks the player that issued a command before the defined time after the join process
|
# Kicks the player that issued a command before the defined time after the join process
|
||||||
denyCommandsBeforeMilliseconds: 1000
|
denyCommandsBeforeMilliseconds: 3000
|
||||||
Purge:
|
Purge:
|
||||||
# If enabled, AuthMe automatically purges old, unused accounts
|
# If enabled, AuthMe automatically purges old, unused accounts
|
||||||
useAutoPurge: false
|
useAutoPurge: false
|
||||||
@@ -453,26 +553,33 @@ Security:
|
|||||||
# Stop the server if we can't contact the sql database
|
# Stop the server if we can't contact the sql database
|
||||||
# Take care with this, if you set this to false,
|
# Take care with this, if you set this to false,
|
||||||
# AuthMe will automatically disable and the server won't be protected!
|
# AuthMe will automatically disable and the server won't be protected!
|
||||||
stopServer: true
|
stopServer: false
|
||||||
console:
|
console:
|
||||||
# Copy AuthMe log output in a separate file as well?
|
# Copy AuthMe log output in a separate file as well?
|
||||||
logConsole: true
|
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
|
||||||
captcha:
|
captcha:
|
||||||
# Enable captcha when a player uses wrong password too many times
|
# Enable captcha when a player uses wrong password too many times
|
||||||
useCaptcha: false
|
useCaptcha: false
|
||||||
# Max allowed tries before a captcha is required
|
# Max allowed tries before a captcha is required
|
||||||
maxLoginTry: 5
|
maxLoginTry: 8
|
||||||
# Captcha length
|
# Captcha length
|
||||||
captchaLength: 5
|
captchaLength: 6
|
||||||
# Minutes after which login attempts count is reset for a player
|
# Minutes after which login attempts count is reset for a player
|
||||||
captchaCountReset: 60
|
captchaCountReset: 120
|
||||||
# Require captcha before a player may register?
|
# Require captcha before a player may register?
|
||||||
requireForRegistration: false
|
requireForRegistration: false
|
||||||
tempban:
|
tempban:
|
||||||
# Tempban a user's IP address if they enter the wrong password too many times
|
# Tempban a user's IP address if they enter the wrong password too many times
|
||||||
enableTempban: false
|
enableTempban: false
|
||||||
# How many times a user can attempt to login before their IP being tempbanned
|
# How many times a user can attempt to login before their IP being tempbanned
|
||||||
maxLoginTries: 10
|
maxLoginTries: 8
|
||||||
# The length of time a IP address will be tempbanned in minutes
|
# The length of time a IP address will be tempbanned in minutes
|
||||||
# Default: 480 minutes, or 8 hours
|
# Default: 480 minutes, or 8 hours
|
||||||
tempbanLength: 480
|
tempbanLength: 480
|
||||||
@@ -486,13 +593,13 @@ Security:
|
|||||||
# Number of characters a recovery code should have (0 to disable)
|
# Number of characters a recovery code should have (0 to disable)
|
||||||
length: 8
|
length: 8
|
||||||
# How many hours is a recovery code valid for?
|
# How many hours is a recovery code valid for?
|
||||||
validForHours: 4
|
validForHours: 6
|
||||||
# Max number of tries to enter recovery code
|
# Max number of tries to enter recovery code
|
||||||
maxTries: 3
|
maxTries: 4
|
||||||
# How long a player has after password recovery to change their password
|
# How long a player has after password recovery to change their password
|
||||||
# without logging in. This is in minutes.
|
# without logging in. This is in minutes.
|
||||||
# Default: 2 minutes
|
# Default: 2 minutes
|
||||||
passwordChangeTimeout: 2
|
passwordChangeTimeout: 5
|
||||||
emailRecovery:
|
emailRecovery:
|
||||||
# Seconds a user has to wait for before a password recovery mail may be sent again
|
# 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.
|
# This prevents an attacker from abusing AuthMe's email feature.
|
||||||
@@ -505,6 +612,13 @@ Security:
|
|||||||
enableEmailMasking: false
|
enableEmailMasking: false
|
||||||
# Minutes after which a verification code will expire
|
# Minutes after which a verification code will expire
|
||||||
verificationCodeExpiration: 10
|
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,
|
# Before a user logs in, various properties are temporarily removed from the player,
|
||||||
# such as OP status, ability to fly, and walk/fly speed.
|
# 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.
|
# Once the user is logged in, we add back the properties we previously saved.
|
||||||
@@ -553,13 +667,6 @@ BackupSystem:
|
|||||||
MysqlWindowsPath: C:\Program Files\MySQL\MySQL Server 5.1\
|
MysqlWindowsPath: C:\Program Files\MySQL\MySQL Server 5.1\
|
||||||
# Converter settings: see https://github.com/AuthMe/AuthMeReloaded/wiki/Converters
|
# Converter settings: see https://github.com/AuthMe/AuthMeReloaded/wiki/Converters
|
||||||
Converter:
|
Converter:
|
||||||
Rakamak:
|
|
||||||
# Rakamak file name
|
|
||||||
fileName: users.rak
|
|
||||||
# Rakamak use IP?
|
|
||||||
useIP: false
|
|
||||||
# Rakamak IP file name
|
|
||||||
ipFileName: UsersIp.rak
|
|
||||||
CrazyLogin:
|
CrazyLogin:
|
||||||
# CrazyLogin database file name
|
# CrazyLogin database file name
|
||||||
fileName: accounts.db
|
fileName: accounts.db
|
||||||
@@ -583,4 +690,6 @@ To change settings on a running server, save your changes to config.yml and use
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
This page was automatically generated on the [AuthMe/AuthMeReloaded repository](https://github.com/AuthMe/AuthMeReloaded/tree/master/docs/) on Thu Jul 28 18:11:22 CEST 2022
|
This page was automatically generated on
|
||||||
|
the [HaHaWTH/AuthMeReReloaded repository](https://github.com/HaHaWTH/AuthMeReReloaded/tree/master/docs/) on Wed May 29
|
||||||
|
21:00:00 CST 2024
|
||||||
|
|||||||
@@ -80,4 +80,4 @@ or bad.
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
This page was automatically generated on the [AuthMe/AuthMeReloaded repository](https://github.com/AuthMe/AuthMeReloaded/tree/master/docs/) on Sun Apr 04 21:31:44 CEST 2021
|
This page was automatically generated on the [HaHaWTH/AuthMeReReloaded repository](https://github.com/HaHaWTH/AuthMeReReloaded/tree/master/docs/) on Sun Apr 04 21:31:44 CEST 2021
|
||||||
|
|||||||
@@ -73,4 +73,4 @@ The following are the permission nodes that are currently supported by the lates
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
This page was automatically generated on the [AuthMe/AuthMeReloaded repository](https://github.com/AuthMe/AuthMeReloaded/tree/master/docs/) on Sun Apr 04 21:31:44 CEST 2021
|
This page was automatically generated on the [HaHaWTH/AuthMeReReloaded repository](https://github.com/HaHaWTH/AuthMeReReloaded/tree/master/docs/) on Sun Apr 04 21:31:44 CEST 2021
|
||||||
|
|||||||
+40
-38
@@ -1,47 +1,49 @@
|
|||||||
<!-- AUTO-GENERATED FILE! Do not edit this directly -->
|
<!-- AUTO-GENERATED FILE! Do not edit this directly -->
|
||||||
<!-- File auto-generated on Wed Jun 21 12:14:29 CEST 2023. See docs/translations/translations.tpl.md -->
|
<!-- File auto-generated on Fri May 31 22:00:00 CST 2024. See docs/translations/translations.tpl.md -->
|
||||||
|
|
||||||
# AuthMe Translations
|
# AuthMe Translations
|
||||||
|
|
||||||
The following translations are available in AuthMe. Set `messagesLanguage` to the language code
|
The following translations are available in AuthMe. Set `messagesLanguage` to the language code
|
||||||
in your config.yml to use the language, or use another language code to start a new translation.
|
in your config.yml to use the language, or use another language code to start a new translation.
|
||||||
|
|
||||||
Code | Language | Translated |
|
| Code | Language | Translated | |
|
||||||
---- | -------- | ---------: | ------
|
|------------------------------------------------------------------------------------------------------------|---------------------|-----------:|---------------------------------------------------------------------------|
|
||||||
[en](https://github.com/AuthMe/AuthMeReloaded/blob/master/src/main/resources/messages/messages_en.yml) | English | 100% | <img src="https://via.placeholder.com/100x7/66ff66?text=%20" alt="100" />
|
| [en](https://github.com/AuthMe/AuthMeReloaded/blob/master/src/main/resources/messages/messages_en.yml) | English | 100% | <img src="https://via.placeholder.com/100x7/66ff66?text=%20" alt="100" /> |
|
||||||
[bg](https://github.com/AuthMe/AuthMeReloaded/blob/master/src/main/resources/messages/messages_bg.yml) | Bulgarian | 99% | <img src="https://via.placeholder.com/99x7/66ee55?text=%20" alt="99" />
|
| [bg](https://github.com/AuthMe/AuthMeReloaded/blob/master/src/main/resources/messages/messages_bg.yml) | Bulgarian | 100% | <img src="https://via.placeholder.com/100x7/66ff66?text=%20" alt="100" /> |
|
||||||
[br](https://github.com/AuthMe/AuthMeReloaded/blob/master/src/main/resources/messages/messages_br.yml) | Brazilian | 100% | <img src="https://via.placeholder.com/100x7/66ff66?text=%20" alt="100" />
|
| [br](https://github.com/AuthMe/AuthMeReloaded/blob/master/src/main/resources/messages/messages_br.yml) | Brazilian | 100% | <img src="https://via.placeholder.com/100x7/66ff66?text=%20" alt="100" /> |
|
||||||
[cz](https://github.com/AuthMe/AuthMeReloaded/blob/master/src/main/resources/messages/messages_cz.yml) | Czech | 100% | <img src="https://via.placeholder.com/100x7/66ff66?text=%20" alt="100" />
|
| [cz](https://github.com/AuthMe/AuthMeReloaded/blob/master/src/main/resources/messages/messages_cz.yml) | Czech | 100% | <img src="https://via.placeholder.com/100x7/66ff66?text=%20" alt="100" /> |
|
||||||
[de](https://github.com/AuthMe/AuthMeReloaded/blob/master/src/main/resources/messages/messages_de.yml) | German | 99% | <img src="https://via.placeholder.com/99x7/66ee55?text=%20" alt="99" />
|
| [de](https://github.com/AuthMe/AuthMeReloaded/blob/master/src/main/resources/messages/messages_de.yml) | German | 100% | <img src="https://via.placeholder.com/100x7/66ff66?text=%20" alt="100" /> |
|
||||||
[eo](https://github.com/AuthMe/AuthMeReloaded/blob/master/src/main/resources/messages/messages_eo.yml) | Esperanto | 79% | <img src="https://via.placeholder.com/79x7/bb9900?text=%20" alt="79" />
|
| [eo](https://github.com/AuthMe/AuthMeReloaded/blob/master/src/main/resources/messages/messages_eo.yml) | Esperanto | 100% | <img src="https://via.placeholder.com/100x7/66ff66?text=%20" alt="100" /> |
|
||||||
[es](https://github.com/AuthMe/AuthMeReloaded/blob/master/src/main/resources/messages/messages_es.yml) | Spanish | 99% | <img src="https://via.placeholder.com/99x7/66ee55?text=%20" alt="99" />
|
| [es](https://github.com/AuthMe/AuthMeReloaded/blob/master/src/main/resources/messages/messages_es.yml) | Spanish | 100% | <img src="https://via.placeholder.com/100x7/66ff66?text=%20" alt="100" /> |
|
||||||
[et](https://github.com/AuthMe/AuthMeReloaded/blob/master/src/main/resources/messages/messages_et.yml) | Estonian | 100% | <img src="https://via.placeholder.com/100x7/66ff66?text=%20" alt="100" />
|
| [et](https://github.com/AuthMe/AuthMeReloaded/blob/master/src/main/resources/messages/messages_et.yml) | Estonian | 100% | <img src="https://via.placeholder.com/100x7/66ff66?text=%20" alt="100" /> |
|
||||||
[eu](https://github.com/AuthMe/AuthMeReloaded/blob/master/src/main/resources/messages/messages_eu.yml) | Basque | 100% | <img src="https://via.placeholder.com/100x7/66ff66?text=%20" alt="100" />
|
| [eu](https://github.com/AuthMe/AuthMeReloaded/blob/master/src/main/resources/messages/messages_eu.yml) | Basque | 100% | <img src="https://via.placeholder.com/100x7/66ff66?text=%20" alt="100" /> |
|
||||||
[fi](https://github.com/AuthMe/AuthMeReloaded/blob/master/src/main/resources/messages/messages_fi.yml) | Finnish | 45% | <img src="https://via.placeholder.com/45x7/aa5500?text=%20" alt="45" />
|
| [fi](https://github.com/AuthMe/AuthMeReloaded/blob/master/src/main/resources/messages/messages_fi.yml) | Finnish | 100% | <img src="https://via.placeholder.com/100x7/66ff66?text=%20" alt="100" /> |
|
||||||
[fr](https://github.com/AuthMe/AuthMeReloaded/blob/master/src/main/resources/messages/messages_fr.yml) | French | 100% | <img src="https://via.placeholder.com/100x7/66ff66?text=%20" alt="100" />
|
| [fr](https://github.com/AuthMe/AuthMeReloaded/blob/master/src/main/resources/messages/messages_fr.yml) | French | 100% | <img src="https://via.placeholder.com/100x7/66ff66?text=%20" alt="100" /> |
|
||||||
[gl](https://github.com/AuthMe/AuthMeReloaded/blob/master/src/main/resources/messages/messages_gl.yml) | Galician | 48% | <img src="https://via.placeholder.com/48x7/aa5500?text=%20" alt="48" />
|
| [gl](https://github.com/AuthMe/AuthMeReloaded/blob/master/src/main/resources/messages/messages_gl.yml) | Galician | 100% | <img src="https://via.placeholder.com/100x7/66ff66?text=%20" alt="100" /> |
|
||||||
[hu](https://github.com/AuthMe/AuthMeReloaded/blob/master/src/main/resources/messages/messages_hu.yml) | Hungarian | 99% | <img src="https://via.placeholder.com/99x7/66ee55?text=%20" alt="99" />
|
| [hu](https://github.com/AuthMe/AuthMeReloaded/blob/master/src/main/resources/messages/messages_hu.yml) | Hungarian | 100% | <img src="https://via.placeholder.com/100x7/66ff66?text=%20" alt="100" /> |
|
||||||
[id](https://github.com/AuthMe/AuthMeReloaded/blob/master/src/main/resources/messages/messages_id.yml) | Indonesian | 93% | <img src="https://via.placeholder.com/93x7/77dd44?text=%20" alt="93" />
|
| [id](https://github.com/AuthMe/AuthMeReloaded/blob/master/src/main/resources/messages/messages_id.yml) | Indonesian | 100% | <img src="https://via.placeholder.com/100x7/66ff66?text=%20" alt="100" /> |
|
||||||
[it](https://github.com/AuthMe/AuthMeReloaded/blob/master/src/main/resources/messages/messages_it.yml) | Italian | 100% | <img src="https://via.placeholder.com/100x7/66ff66?text=%20" alt="100" />
|
| [it](https://github.com/AuthMe/AuthMeReloaded/blob/master/src/main/resources/messages/messages_it.yml) | Italian | 100% | <img src="https://via.placeholder.com/100x7/66ff66?text=%20" alt="100" /> |
|
||||||
[ja](https://github.com/AuthMe/AuthMeReloaded/blob/master/src/main/resources/messages/messages_ja.yml) | Japanese | 100% | <img src="https://via.placeholder.com/100x7/66ff66?text=%20" alt="100" />
|
| [ja](https://github.com/AuthMe/AuthMeReloaded/blob/master/src/main/resources/messages/messages_ja.yml) | Japanese | 100% | <img src="https://via.placeholder.com/100x7/66ff66?text=%20" alt="100" /> |
|
||||||
[ko](https://github.com/AuthMe/AuthMeReloaded/blob/master/src/main/resources/messages/messages_ko.yml) | Korean | 99% | <img src="https://via.placeholder.com/99x7/66ee55?text=%20" alt="99" />
|
| [ko](https://github.com/AuthMe/AuthMeReloaded/blob/master/src/main/resources/messages/messages_ko.yml) | Korean | 100% | <img src="https://via.placeholder.com/100x7/66ff66?text=%20" alt="100" /> |
|
||||||
[lt](https://github.com/AuthMe/AuthMeReloaded/blob/master/src/main/resources/messages/messages_lt.yml) | Lithuanian | 100% | <img src="https://via.placeholder.com/100x7/66ff66?text=%20" alt="100" />
|
| [lt](https://github.com/AuthMe/AuthMeReloaded/blob/master/src/main/resources/messages/messages_lt.yml) | Lithuanian | 100% | <img src="https://via.placeholder.com/100x7/66ff66?text=%20" alt="100" /> |
|
||||||
[nl](https://github.com/AuthMe/AuthMeReloaded/blob/master/src/main/resources/messages/messages_nl.yml) | Dutch | 100% | <img src="https://via.placeholder.com/100x7/66ff66?text=%20" alt="100" />
|
| [nl](https://github.com/AuthMe/AuthMeReloaded/blob/master/src/main/resources/messages/messages_nl.yml) | Dutch | 100% | <img src="https://via.placeholder.com/100x7/66ff66?text=%20" alt="100" /> |
|
||||||
[pl](https://github.com/AuthMe/AuthMeReloaded/blob/master/src/main/resources/messages/messages_pl.yml) | Polish | 100% | <img src="https://via.placeholder.com/100x7/66ff66?text=%20" alt="100" />
|
| [pl](https://github.com/AuthMe/AuthMeReloaded/blob/master/src/main/resources/messages/messages_pl.yml) | Polish | 100% | <img src="https://via.placeholder.com/100x7/66ff66?text=%20" alt="100" /> |
|
||||||
[pt](https://github.com/AuthMe/AuthMeReloaded/blob/master/src/main/resources/messages/messages_pt.yml) | Portuguese | 100% | <img src="https://via.placeholder.com/100x7/66ff66?text=%20" alt="100" />
|
| [pt](https://github.com/AuthMe/AuthMeReloaded/blob/master/src/main/resources/messages/messages_pt.yml) | Portuguese | 100% | <img src="https://via.placeholder.com/100x7/66ff66?text=%20" alt="100" /> |
|
||||||
[ro](https://github.com/AuthMe/AuthMeReloaded/blob/master/src/main/resources/messages/messages_ro.yml) | Romanian | 100% | <img src="https://via.placeholder.com/100x7/66ff66?text=%20" alt="100" />
|
| [ro](https://github.com/AuthMe/AuthMeReloaded/blob/master/src/main/resources/messages/messages_ro.yml) | Romanian | 100% | <img src="https://via.placeholder.com/100x7/66ff66?text=%20" alt="100" /> |
|
||||||
[ru](https://github.com/AuthMe/AuthMeReloaded/blob/master/src/main/resources/messages/messages_ru.yml) | Russian | 100% | <img src="https://via.placeholder.com/100x7/66ff66?text=%20" alt="100" />
|
| [ru](https://github.com/AuthMe/AuthMeReloaded/blob/master/src/main/resources/messages/messages_ru.yml) | Russian | 100% | <img src="https://via.placeholder.com/100x7/66ff66?text=%20" alt="100" /> |
|
||||||
[si](https://github.com/AuthMe/AuthMeReloaded/blob/master/src/main/resources/messages/messages_si.yml) | Slovenian | 99% | <img src="https://via.placeholder.com/99x7/66ee55?text=%20" alt="99" />
|
| [si](https://github.com/AuthMe/AuthMeReloaded/blob/master/src/main/resources/messages/messages_si.yml) | Slovenian | 100% | <img src="https://via.placeholder.com/100x7/66ff66?text=%20" alt="100" /> |
|
||||||
[sk](https://github.com/AuthMe/AuthMeReloaded/blob/master/src/main/resources/messages/messages_sk.yml) | Slovakian | 79% | <img src="https://via.placeholder.com/79x7/bb9900?text=%20" alt="79" />
|
| [sk](https://github.com/AuthMe/AuthMeReloaded/blob/master/src/main/resources/messages/messages_sk.yml) | Slovakian | 100% | <img src="https://via.placeholder.com/100x7/66ff66?text=%20" alt="100" /> |
|
||||||
[sr](https://github.com/AuthMe/AuthMeReloaded/blob/master/src/main/resources/messages/messages_sr.yml) | Serbian | 99% | <img src="https://via.placeholder.com/99x7/66ee55?text=%20" alt="99" />
|
| [sr](https://github.com/AuthMe/AuthMeReloaded/blob/master/src/main/resources/messages/messages_sr.yml) | Serbian | 100% | <img src="https://via.placeholder.com/100x7/66ff66?text=%20" alt="100" /> |
|
||||||
[tr](https://github.com/AuthMe/AuthMeReloaded/blob/master/src/main/resources/messages/messages_tr.yml) | Turkish | 100% | <img src="https://via.placeholder.com/100x7/66ff66?text=%20" alt="100" />
|
| [tr](https://github.com/AuthMe/AuthMeReloaded/blob/master/src/main/resources/messages/messages_tr.yml) | Turkish | 100% | <img src="https://via.placeholder.com/100x7/66ff66?text=%20" alt="100" /> |
|
||||||
[uk](https://github.com/AuthMe/AuthMeReloaded/blob/master/src/main/resources/messages/messages_uk.yml) | Ukrainian | 100% | <img src="https://via.placeholder.com/100x7/66ff66?text=%20" alt="100" />
|
| [uk](https://github.com/AuthMe/AuthMeReloaded/blob/master/src/main/resources/messages/messages_uk.yml) | Ukrainian | 100% | <img src="https://via.placeholder.com/100x7/66ff66?text=%20" alt="100" /> |
|
||||||
[vn](https://github.com/AuthMe/AuthMeReloaded/blob/master/src/main/resources/messages/messages_vn.yml) | Vietnamese | 100% | <img src="https://via.placeholder.com/100x7/66ff66?text=%20" alt="100" />
|
| [vn](https://github.com/AuthMe/AuthMeReloaded/blob/master/src/main/resources/messages/messages_vn.yml) | Vietnamese | 100% | <img src="https://via.placeholder.com/100x7/66ff66?text=%20" alt="100" /> |
|
||||||
[zhcn](https://github.com/AuthMe/AuthMeReloaded/blob/master/src/main/resources/messages/messages_zhcn.yml) | Chinese (China) | 100% | <img src="https://via.placeholder.com/100x7/66ff66?text=%20" alt="100" />
|
| [zhcn](https://github.com/AuthMe/AuthMeReloaded/blob/master/src/main/resources/messages/messages_zhcn.yml) | Chinese (China) | 100% | <img src="https://via.placeholder.com/100x7/66ff66?text=%20" alt="100" /> |
|
||||||
[zhhk](https://github.com/AuthMe/AuthMeReloaded/blob/master/src/main/resources/messages/messages_zhhk.yml) | Chinese (Hong Kong) | 99% | <img src="https://via.placeholder.com/99x7/66ee55?text=%20" alt="99" />
|
| [zhhk](https://github.com/AuthMe/AuthMeReloaded/blob/master/src/main/resources/messages/messages_zhhk.yml) | Chinese (Hong Kong) | 100% | <img src="https://via.placeholder.com/100x7/66ff66?text=%20" alt="100" /> |
|
||||||
[zhmc](https://github.com/AuthMe/AuthMeReloaded/blob/master/src/main/resources/messages/messages_zhmc.yml) | Chinese (Macau) | 64% | <img src="https://via.placeholder.com/64x7/bb7700?text=%20" alt="64" />
|
| [zhmc](https://github.com/AuthMe/AuthMeReloaded/blob/master/src/main/resources/messages/messages_zhmc.yml) | Chinese (Macau) | 100% | <img src="https://via.placeholder.com/100x7/66ff66?text=%20" alt="100" /> |
|
||||||
[zhtw](https://github.com/AuthMe/AuthMeReloaded/blob/master/src/main/resources/messages/messages_zhtw.yml) | Chinese (Taiwan) | 100% | <img src="https://via.placeholder.com/100x7/66ff66?text=%20" alt="100" />
|
| [zhtw](https://github.com/AuthMe/AuthMeReloaded/blob/master/src/main/resources/messages/messages_zhtw.yml) | Chinese (Taiwan) | 100% | <img src="https://via.placeholder.com/100x7/66ff66?text=%20" alt="100" /> |
|
||||||
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
This page was automatically generated on the [AuthMe/AuthMeReloaded repository](https://github.com/AuthMe/AuthMeReloaded/tree/master/docs/) on Wed Jun 21 12:14:29 CEST 2023
|
This page was automatically generated on
|
||||||
|
the [HaHaWTH/AuthMeReReloaded repository](https://github.com/HaHaWTH/AuthMeReReloaded/tree/master/docs/) on Fri May 31
|
||||||
|
22:00:00 CST 2024
|
||||||
|
|||||||
@@ -0,0 +1,4 @@
|
|||||||
|
group=fr.xephi
|
||||||
|
version=5.7.0-FORK-b53
|
||||||
|
mainClass = fr.xephi.authme.AuthMe
|
||||||
|
authors = [sgdc3, games647, Hex3l, krusic22]
|
||||||
@@ -0,0 +1,56 @@
|
|||||||
|
[versions]
|
||||||
|
adventureApi = "4.18.0"
|
||||||
|
adventurePlatform = "4.3.4"
|
||||||
|
injector = "1.0"
|
||||||
|
string-similarity = "1.0.0"
|
||||||
|
maxmind-db-gson = "2.0.3"
|
||||||
|
javatar = "2.5"
|
||||||
|
commons-email = "1.6-SNAPSHOT"
|
||||||
|
log4j-core = "2.20.0"
|
||||||
|
libby-bukkit = "2.0.0-SNAPSHOT"
|
||||||
|
hikaricp = "4.0.3"
|
||||||
|
slf4j-simple = "1.7.36"
|
||||||
|
pbkdf2 = "1.1.4"
|
||||||
|
mysql-connector-j = "9.1.0"
|
||||||
|
mariadb-java-client = "3.5.1"
|
||||||
|
argon2-jvm-nolibs = "2.11"
|
||||||
|
googleauth = "1.5.0"
|
||||||
|
guava = "33.2.1-jre"
|
||||||
|
gson = "2.10.1"
|
||||||
|
configme = "1.3.1"
|
||||||
|
bcrypt = "0.10.2"
|
||||||
|
datasourcecolumns = "0.1.1-SNAPSHOT"
|
||||||
|
postgresql = "42.7.4"
|
||||||
|
checker-qual = "3.48.0"
|
||||||
|
universalscheduler = "0.1.6"
|
||||||
|
sqlite-jdbc = "3.47.1.0"
|
||||||
|
h2 = "2.2.224"
|
||||||
|
|
||||||
|
[libraries]
|
||||||
|
adventure-text-minimessage = { group = "net.kyori", name = "adventure-text-minimessage", version.ref = "adventureApi" }
|
||||||
|
adventure-platform-bukkit = { group = "net.kyori", name = "adventure-platform-bukkit", version.ref = "adventurePlatform" }
|
||||||
|
adventure-text-serializer-gson = { group = "net.kyori", name = "adventure-text-serializer-gson", version.ref = "adventureApi" }
|
||||||
|
injector = { group = "ch.jalu", name = "injector", version.ref = "injector" }
|
||||||
|
string-similarity = { group = "net.ricecode", name = "string-similarity", version.ref = "string-similarity" }
|
||||||
|
maxmind-db-gson = { group = "com.maxmind.db", name = "maxmind-db-gson", version.ref = "maxmind-db-gson" }
|
||||||
|
javatar = { group = "javatar", name = "javatar", version.ref = "javatar" }
|
||||||
|
commons-email = { group = "org.apache.commons", name = "commons-email", version.ref = "commons-email" }
|
||||||
|
log4j-core = { group = "org.apache.logging.log4j", name = "log4j-core", version.ref = "log4j-core" }
|
||||||
|
libby-bukkit = { group = "com.alessiodp.libby", name = "libby-bukkit", version.ref = "libby-bukkit" }
|
||||||
|
hikaricp = { group = "com.zaxxer", name = "HikariCP", version.ref = "hikaricp" }
|
||||||
|
slf4j-simple = { group = "org.slf4j", name = "slf4j-simple", version.ref = "slf4j-simple" }
|
||||||
|
pbkdf2 = { group = "de.rtner", name = "PBKDF2", version.ref = "pbkdf2" }
|
||||||
|
mysql-connector-j = { group = "com.mysql", name = "mysql-connector-j", version.ref = "mysql-connector-j" }
|
||||||
|
mariadb-java-client = { group = "org.mariadb.jdbc", name = "mariadb-java-client", version.ref = "mariadb-java-client" }
|
||||||
|
argon2-jvm-nolibs = { group = "de.mkammerer", name = "argon2-jvm-nolibs", version.ref = "argon2-jvm-nolibs" }
|
||||||
|
googleauth = { group = "com.warrenstrange", name = "googleauth", version.ref = "googleauth" }
|
||||||
|
guava = { group = "com.google.guava", name = "guava", version.ref = "guava" }
|
||||||
|
gson = { group = "com.google.code.gson", name = "gson", version.ref = "gson" }
|
||||||
|
configme = { group = "ch.jalu", name = "configme", version.ref = "configme" }
|
||||||
|
bcrypt = { group = "at.favre.lib", name = "bcrypt", version.ref = "bcrypt" }
|
||||||
|
datasourcecolumns = { group = "ch.jalu", name = "datasourcecolumns", version.ref = "datasourcecolumns" }
|
||||||
|
postgresql = { group = "org.postgresql", name = "postgresql", version.ref = "postgresql" }
|
||||||
|
checker-qual = { group = "org.checkerframework", name = "checker-qual", version.ref = "checker-qual" }
|
||||||
|
universalscheduler = { group = "com.github.Anon8281", name = "UniversalScheduler", version.ref = "universalscheduler" }
|
||||||
|
sqlite-jdbc = { group = "org.xerial", name = "sqlite-jdbc", version.ref = "sqlite-jdbc" }
|
||||||
|
h2 = { group = "com.h2database", name = "h2", version.ref = "h2" }
|
||||||
Vendored
BIN
Binary file not shown.
+7
@@ -0,0 +1,7 @@
|
|||||||
|
distributionBase=GRADLE_USER_HOME
|
||||||
|
distributionPath=wrapper/dists
|
||||||
|
distributionUrl=https\://services.gradle.org/distributions/gradle-8.12.1-bin.zip
|
||||||
|
networkTimeout=10000
|
||||||
|
validateDistributionUrl=true
|
||||||
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
|
zipStorePath=wrapper/dists
|
||||||
@@ -0,0 +1,251 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
#
|
||||||
|
# Copyright © 2015-2021 the original authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
#
|
||||||
|
|
||||||
|
##############################################################################
|
||||||
|
#
|
||||||
|
# Gradle start up script for POSIX generated by Gradle.
|
||||||
|
#
|
||||||
|
# Important for running:
|
||||||
|
#
|
||||||
|
# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
|
||||||
|
# noncompliant, but you have some other compliant shell such as ksh or
|
||||||
|
# bash, then to run this script, type that shell name before the whole
|
||||||
|
# command line, like:
|
||||||
|
#
|
||||||
|
# ksh Gradle
|
||||||
|
#
|
||||||
|
# Busybox and similar reduced shells will NOT work, because this script
|
||||||
|
# requires all of these POSIX shell features:
|
||||||
|
# * functions;
|
||||||
|
# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
|
||||||
|
# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
|
||||||
|
# * compound commands having a testable exit status, especially «case»;
|
||||||
|
# * various built-in commands including «command», «set», and «ulimit».
|
||||||
|
#
|
||||||
|
# Important for patching:
|
||||||
|
#
|
||||||
|
# (2) This script targets any POSIX shell, so it avoids extensions provided
|
||||||
|
# by Bash, Ksh, etc; in particular arrays are avoided.
|
||||||
|
#
|
||||||
|
# The "traditional" practice of packing multiple parameters into a
|
||||||
|
# space-separated string is a well documented source of bugs and security
|
||||||
|
# problems, so this is (mostly) avoided, by progressively accumulating
|
||||||
|
# options in "$@", and eventually passing that to Java.
|
||||||
|
#
|
||||||
|
# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
|
||||||
|
# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
|
||||||
|
# see the in-line comments for details.
|
||||||
|
#
|
||||||
|
# There are tweaks for specific operating systems such as AIX, CygWin,
|
||||||
|
# Darwin, MinGW, and NonStop.
|
||||||
|
#
|
||||||
|
# (3) This script is generated from the Groovy template
|
||||||
|
# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
|
||||||
|
# within the Gradle project.
|
||||||
|
#
|
||||||
|
# You can find Gradle at https://github.com/gradle/gradle/.
|
||||||
|
#
|
||||||
|
##############################################################################
|
||||||
|
|
||||||
|
# Attempt to set APP_HOME
|
||||||
|
|
||||||
|
# Resolve links: $0 may be a link
|
||||||
|
app_path=$0
|
||||||
|
|
||||||
|
# Need this for daisy-chained symlinks.
|
||||||
|
while
|
||||||
|
APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
|
||||||
|
[ -h "$app_path" ]
|
||||||
|
do
|
||||||
|
ls=$( ls -ld "$app_path" )
|
||||||
|
link=${ls#*' -> '}
|
||||||
|
case $link in #(
|
||||||
|
/*) app_path=$link ;; #(
|
||||||
|
*) app_path=$APP_HOME$link ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
# This is normally unused
|
||||||
|
# shellcheck disable=SC2034
|
||||||
|
APP_BASE_NAME=${0##*/}
|
||||||
|
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
|
||||||
|
APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit
|
||||||
|
|
||||||
|
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
||||||
|
MAX_FD=maximum
|
||||||
|
|
||||||
|
warn () {
|
||||||
|
echo "$*"
|
||||||
|
} >&2
|
||||||
|
|
||||||
|
die () {
|
||||||
|
echo
|
||||||
|
echo "$*"
|
||||||
|
echo
|
||||||
|
exit 1
|
||||||
|
} >&2
|
||||||
|
|
||||||
|
# OS specific support (must be 'true' or 'false').
|
||||||
|
cygwin=false
|
||||||
|
msys=false
|
||||||
|
darwin=false
|
||||||
|
nonstop=false
|
||||||
|
case "$( uname )" in #(
|
||||||
|
CYGWIN* ) cygwin=true ;; #(
|
||||||
|
Darwin* ) darwin=true ;; #(
|
||||||
|
MSYS* | MINGW* ) msys=true ;; #(
|
||||||
|
NONSTOP* ) nonstop=true ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
|
||||||
|
|
||||||
|
|
||||||
|
# Determine the Java command to use to start the JVM.
|
||||||
|
if [ -n "$JAVA_HOME" ] ; then
|
||||||
|
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
|
||||||
|
# IBM's JDK on AIX uses strange locations for the executables
|
||||||
|
JAVACMD=$JAVA_HOME/jre/sh/java
|
||||||
|
else
|
||||||
|
JAVACMD=$JAVA_HOME/bin/java
|
||||||
|
fi
|
||||||
|
if [ ! -x "$JAVACMD" ] ; then
|
||||||
|
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
|
||||||
|
|
||||||
|
Please set the JAVA_HOME variable in your environment to match the
|
||||||
|
location of your Java installation."
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
JAVACMD=java
|
||||||
|
if ! command -v java >/dev/null 2>&1
|
||||||
|
then
|
||||||
|
die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||||
|
|
||||||
|
Please set the JAVA_HOME variable in your environment to match the
|
||||||
|
location of your Java installation."
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Increase the maximum file descriptors if we can.
|
||||||
|
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
|
||||||
|
case $MAX_FD in #(
|
||||||
|
max*)
|
||||||
|
# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
|
||||||
|
# shellcheck disable=SC2039,SC3045
|
||||||
|
MAX_FD=$( ulimit -H -n ) ||
|
||||||
|
warn "Could not query maximum file descriptor limit"
|
||||||
|
esac
|
||||||
|
case $MAX_FD in #(
|
||||||
|
'' | soft) :;; #(
|
||||||
|
*)
|
||||||
|
# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
|
||||||
|
# shellcheck disable=SC2039,SC3045
|
||||||
|
ulimit -n "$MAX_FD" ||
|
||||||
|
warn "Could not set maximum file descriptor limit to $MAX_FD"
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Collect all arguments for the java command, stacking in reverse order:
|
||||||
|
# * args from the command line
|
||||||
|
# * the main class name
|
||||||
|
# * -classpath
|
||||||
|
# * -D...appname settings
|
||||||
|
# * --module-path (only if needed)
|
||||||
|
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
|
||||||
|
|
||||||
|
# For Cygwin or MSYS, switch paths to Windows format before running java
|
||||||
|
if "$cygwin" || "$msys" ; then
|
||||||
|
APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
|
||||||
|
CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
|
||||||
|
|
||||||
|
JAVACMD=$( cygpath --unix "$JAVACMD" )
|
||||||
|
|
||||||
|
# Now convert the arguments - kludge to limit ourselves to /bin/sh
|
||||||
|
for arg do
|
||||||
|
if
|
||||||
|
case $arg in #(
|
||||||
|
-*) false ;; # don't mess with options #(
|
||||||
|
/?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
|
||||||
|
[ -e "$t" ] ;; #(
|
||||||
|
*) false ;;
|
||||||
|
esac
|
||||||
|
then
|
||||||
|
arg=$( cygpath --path --ignore --mixed "$arg" )
|
||||||
|
fi
|
||||||
|
# Roll the args list around exactly as many times as the number of
|
||||||
|
# args, so each arg winds up back in the position where it started, but
|
||||||
|
# possibly modified.
|
||||||
|
#
|
||||||
|
# NB: a `for` loop captures its iteration list before it begins, so
|
||||||
|
# changing the positional parameters here affects neither the number of
|
||||||
|
# iterations, nor the values presented in `arg`.
|
||||||
|
shift # remove old arg
|
||||||
|
set -- "$@" "$arg" # push replacement arg
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||||
|
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
|
||||||
|
|
||||||
|
# Collect all arguments for the java command:
|
||||||
|
# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
|
||||||
|
# and any embedded shellness will be escaped.
|
||||||
|
# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
|
||||||
|
# treated as '${Hostname}' itself on the command line.
|
||||||
|
|
||||||
|
set -- \
|
||||||
|
"-Dorg.gradle.appname=$APP_BASE_NAME" \
|
||||||
|
-classpath "$CLASSPATH" \
|
||||||
|
org.gradle.wrapper.GradleWrapperMain \
|
||||||
|
"$@"
|
||||||
|
|
||||||
|
# Stop when "xargs" is not available.
|
||||||
|
if ! command -v xargs >/dev/null 2>&1
|
||||||
|
then
|
||||||
|
die "xargs is not available"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Use "xargs" to parse quoted args.
|
||||||
|
#
|
||||||
|
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
|
||||||
|
#
|
||||||
|
# In Bash we could simply go:
|
||||||
|
#
|
||||||
|
# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
|
||||||
|
# set -- "${ARGS[@]}" "$@"
|
||||||
|
#
|
||||||
|
# but POSIX shell has neither arrays nor command substitution, so instead we
|
||||||
|
# post-process each arg (as a line of input to sed) to backslash-escape any
|
||||||
|
# character that might be a shell metacharacter, then use eval to reverse
|
||||||
|
# that process (while maintaining the separation between arguments), and wrap
|
||||||
|
# the whole thing up as a single "set" statement.
|
||||||
|
#
|
||||||
|
# This will of course break if any of these variables contains a newline or
|
||||||
|
# an unmatched quote.
|
||||||
|
#
|
||||||
|
|
||||||
|
eval "set -- $(
|
||||||
|
printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
|
||||||
|
xargs -n1 |
|
||||||
|
sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
|
||||||
|
tr '\n' ' '
|
||||||
|
)" '"$@"'
|
||||||
|
|
||||||
|
exec "$JAVACMD" "$@"
|
||||||
Vendored
+94
@@ -0,0 +1,94 @@
|
|||||||
|
@rem
|
||||||
|
@rem Copyright 2015 the original author or authors.
|
||||||
|
@rem
|
||||||
|
@rem Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
@rem you may not use this file except in compliance with the License.
|
||||||
|
@rem You may obtain a copy of the License at
|
||||||
|
@rem
|
||||||
|
@rem https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
@rem
|
||||||
|
@rem Unless required by applicable law or agreed to in writing, software
|
||||||
|
@rem distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
@rem See the License for the specific language governing permissions and
|
||||||
|
@rem limitations under the License.
|
||||||
|
@rem
|
||||||
|
@rem SPDX-License-Identifier: Apache-2.0
|
||||||
|
@rem
|
||||||
|
|
||||||
|
@if "%DEBUG%"=="" @echo off
|
||||||
|
@rem ##########################################################################
|
||||||
|
@rem
|
||||||
|
@rem Gradle startup script for Windows
|
||||||
|
@rem
|
||||||
|
@rem ##########################################################################
|
||||||
|
|
||||||
|
@rem Set local scope for the variables with windows NT shell
|
||||||
|
if "%OS%"=="Windows_NT" setlocal
|
||||||
|
|
||||||
|
set DIRNAME=%~dp0
|
||||||
|
if "%DIRNAME%"=="" set DIRNAME=.
|
||||||
|
@rem This is normally unused
|
||||||
|
set APP_BASE_NAME=%~n0
|
||||||
|
set APP_HOME=%DIRNAME%
|
||||||
|
|
||||||
|
@rem Resolve any "." and ".." in APP_HOME to make it shorter.
|
||||||
|
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
|
||||||
|
|
||||||
|
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||||
|
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
|
||||||
|
|
||||||
|
@rem Find java.exe
|
||||||
|
if defined JAVA_HOME goto findJavaFromJavaHome
|
||||||
|
|
||||||
|
set JAVA_EXE=java.exe
|
||||||
|
%JAVA_EXE% -version >NUL 2>&1
|
||||||
|
if %ERRORLEVEL% equ 0 goto execute
|
||||||
|
|
||||||
|
echo. 1>&2
|
||||||
|
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2
|
||||||
|
echo. 1>&2
|
||||||
|
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
|
||||||
|
echo location of your Java installation. 1>&2
|
||||||
|
|
||||||
|
goto fail
|
||||||
|
|
||||||
|
:findJavaFromJavaHome
|
||||||
|
set JAVA_HOME=%JAVA_HOME:"=%
|
||||||
|
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
|
||||||
|
|
||||||
|
if exist "%JAVA_EXE%" goto execute
|
||||||
|
|
||||||
|
echo. 1>&2
|
||||||
|
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2
|
||||||
|
echo. 1>&2
|
||||||
|
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
|
||||||
|
echo location of your Java installation. 1>&2
|
||||||
|
|
||||||
|
goto fail
|
||||||
|
|
||||||
|
:execute
|
||||||
|
@rem Setup the command line
|
||||||
|
|
||||||
|
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
|
||||||
|
|
||||||
|
|
||||||
|
@rem Execute Gradle
|
||||||
|
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
|
||||||
|
|
||||||
|
:end
|
||||||
|
@rem End local scope for the variables with windows NT shell
|
||||||
|
if %ERRORLEVEL% equ 0 goto mainEnd
|
||||||
|
|
||||||
|
:fail
|
||||||
|
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
|
||||||
|
rem the _cmd.exe /c_ return code!
|
||||||
|
set EXIT_CODE=%ERRORLEVEL%
|
||||||
|
if %EXIT_CODE% equ 0 set EXIT_CODE=1
|
||||||
|
if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
|
||||||
|
exit /b %EXIT_CODE%
|
||||||
|
|
||||||
|
:mainEnd
|
||||||
|
if "%OS%"=="Windows_NT" endlocal
|
||||||
|
|
||||||
|
:omega
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
rootProject.name = "AuthMeReReloaded"
|
||||||
@@ -20,7 +20,6 @@ import fr.xephi.authme.listener.BedrockAutoLoginListener;
|
|||||||
import fr.xephi.authme.listener.BlockListener;
|
import fr.xephi.authme.listener.BlockListener;
|
||||||
import fr.xephi.authme.listener.DoubleLoginFixListener;
|
import fr.xephi.authme.listener.DoubleLoginFixListener;
|
||||||
import fr.xephi.authme.listener.EntityListener;
|
import fr.xephi.authme.listener.EntityListener;
|
||||||
import fr.xephi.authme.listener.GuiCaptchaHandler;
|
|
||||||
import fr.xephi.authme.listener.LoginLocationFixListener;
|
import fr.xephi.authme.listener.LoginLocationFixListener;
|
||||||
import fr.xephi.authme.listener.PlayerListener;
|
import fr.xephi.authme.listener.PlayerListener;
|
||||||
import fr.xephi.authme.listener.PlayerListener111;
|
import fr.xephi.authme.listener.PlayerListener111;
|
||||||
@@ -44,6 +43,7 @@ import fr.xephi.authme.settings.properties.EmailSettings;
|
|||||||
import fr.xephi.authme.settings.properties.HooksSettings;
|
import fr.xephi.authme.settings.properties.HooksSettings;
|
||||||
import fr.xephi.authme.settings.properties.SecuritySettings;
|
import fr.xephi.authme.settings.properties.SecuritySettings;
|
||||||
import fr.xephi.authme.task.CleanupTask;
|
import fr.xephi.authme.task.CleanupTask;
|
||||||
|
import fr.xephi.authme.task.Updater;
|
||||||
import fr.xephi.authme.task.purge.PurgeService;
|
import fr.xephi.authme.task.purge.PurgeService;
|
||||||
import fr.xephi.authme.util.ExceptionUtils;
|
import fr.xephi.authme.util.ExceptionUtils;
|
||||||
import org.bukkit.Server;
|
import org.bukkit.Server;
|
||||||
@@ -55,15 +55,10 @@ import org.jetbrains.annotations.NotNull;
|
|||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
|
||||||
import java.net.HttpURLConnection;
|
|
||||||
import java.net.URL;
|
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.Scanner;
|
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
import java.util.logging.Level;
|
|
||||||
|
|
||||||
import static fr.xephi.authme.service.BukkitService.TICKS_PER_MINUTE;
|
import static fr.xephi.authme.service.BukkitService.TICKS_PER_MINUTE;
|
||||||
import static fr.xephi.authme.util.Utils.isClassLoaded;
|
import static fr.xephi.authme.util.Utils.isClassLoaded;
|
||||||
@@ -79,9 +74,9 @@ public class AuthMe extends JavaPlugin {
|
|||||||
private static final int CLEANUP_INTERVAL = 5 * TICKS_PER_MINUTE;
|
private static final int CLEANUP_INTERVAL = 5 * TICKS_PER_MINUTE;
|
||||||
|
|
||||||
// Version and build number values
|
// Version and build number values
|
||||||
private static String pluginVersion = "5.6.0-Fork";
|
private static String pluginVersion = "5.7.0-Fork";
|
||||||
private static final String pluginBuild = "b";
|
private static final String pluginBuild = "b";
|
||||||
private static String pluginBuildNumber = "49";
|
private static String pluginBuildNumber = "53";
|
||||||
// Private instances
|
// Private instances
|
||||||
private EmailService emailService;
|
private EmailService emailService;
|
||||||
private CommandHandler commandHandler;
|
private CommandHandler commandHandler;
|
||||||
@@ -218,14 +213,15 @@ public class AuthMe extends JavaPlugin {
|
|||||||
}
|
}
|
||||||
//detect server brand with classloader
|
//detect server brand with classloader
|
||||||
checkServerType();
|
checkServerType();
|
||||||
|
try {
|
||||||
Objects.requireNonNull(getCommand("register")).setTabCompleter(new TabCompleteHandler());
|
Objects.requireNonNull(getCommand("register")).setTabCompleter(new TabCompleteHandler());
|
||||||
Objects.requireNonNull(getCommand("login")).setTabCompleter(new TabCompleteHandler());
|
Objects.requireNonNull(getCommand("login")).setTabCompleter(new TabCompleteHandler());
|
||||||
|
} catch (NullPointerException ignored) {
|
||||||
|
}
|
||||||
logger.info("AuthMeReReloaded is enabled successfully!");
|
logger.info("AuthMeReReloaded is enabled successfully!");
|
||||||
// Purge on start if enabled
|
// Purge on start if enabled
|
||||||
PurgeService purgeService = injector.getSingleton(PurgeService.class);
|
PurgeService purgeService = injector.getSingleton(PurgeService.class);
|
||||||
purgeService.runAutoPurge();
|
purgeService.runAutoPurge();
|
||||||
// 注册玩家加入事件监听
|
|
||||||
// register3rdPartyListeners();
|
|
||||||
logger.info("GitHub: https://github.com/HaHaWTH/AuthMeReReloaded/");
|
logger.info("GitHub: https://github.com/HaHaWTH/AuthMeReReloaded/");
|
||||||
if (settings.getProperty(SecuritySettings.CHECK_FOR_UPDATES)) {
|
if (settings.getProperty(SecuritySettings.CHECK_FOR_UPDATES)) {
|
||||||
checkForUpdates();
|
checkForUpdates();
|
||||||
@@ -233,8 +229,6 @@ public class AuthMe extends JavaPlugin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//Migrated
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Load the version and build number of the plugin from the description file.
|
* Load the version and build number of the plugin from the description file.
|
||||||
*
|
*
|
||||||
@@ -352,13 +346,6 @@ public class AuthMe extends JavaPlugin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//Register 3rd party listeners
|
//Register 3rd party listeners
|
||||||
if (settings.getProperty(SecuritySettings.GUI_CAPTCHA) && getServer().getPluginManager().getPlugin("ProtocolLib") != null) {
|
|
||||||
pluginManager.registerEvents(injector.getSingleton(GuiCaptchaHandler.class), this);
|
|
||||||
logger.info("(Beta)GUICaptcha is enabled successfully!");
|
|
||||||
logger.info("These features are still in early development, if you encountered any problem, please report.");
|
|
||||||
} else if (settings.getProperty(SecuritySettings.GUI_CAPTCHA) && getServer().getPluginManager().getPlugin("ProtocolLib") == null) {
|
|
||||||
logger.warning("ProtocolLib is not loaded, can't enable GUI Captcha.");
|
|
||||||
}
|
|
||||||
if (settings.getProperty(SecuritySettings.FORCE_LOGIN_BEDROCK) && settings.getProperty(HooksSettings.HOOK_FLOODGATE_PLAYER) && getServer().getPluginManager().getPlugin("floodgate") != null) {
|
if (settings.getProperty(SecuritySettings.FORCE_LOGIN_BEDROCK) && settings.getProperty(HooksSettings.HOOK_FLOODGATE_PLAYER) && getServer().getPluginManager().getPlugin("floodgate") != null) {
|
||||||
pluginManager.registerEvents(injector.getSingleton(BedrockAutoLoginListener.class), this);
|
pluginManager.registerEvents(injector.getSingleton(BedrockAutoLoginListener.class), this);
|
||||||
} else if (settings.getProperty(SecuritySettings.FORCE_LOGIN_BEDROCK) && (!settings.getProperty(HooksSettings.HOOK_FLOODGATE_PLAYER) || getServer().getPluginManager().getPlugin("floodgate") == null)) {
|
} else if (settings.getProperty(SecuritySettings.FORCE_LOGIN_BEDROCK) && (!settings.getProperty(HooksSettings.HOOK_FLOODGATE_PLAYER) || getServer().getPluginManager().getPlugin("floodgate") == null)) {
|
||||||
@@ -373,7 +360,7 @@ public class AuthMe extends JavaPlugin {
|
|||||||
if (settings.getProperty(SecuritySettings.ADVANCED_SHULKER_FIX) && !isClassLoaded("org.bukkit.event.player.PlayerCommandSendEvent")) {
|
if (settings.getProperty(SecuritySettings.ADVANCED_SHULKER_FIX) && !isClassLoaded("org.bukkit.event.player.PlayerCommandSendEvent")) {
|
||||||
pluginManager.registerEvents(injector.getSingleton(AdvancedShulkerFixListener.class), this);
|
pluginManager.registerEvents(injector.getSingleton(AdvancedShulkerFixListener.class), this);
|
||||||
} else if (settings.getProperty(SecuritySettings.ADVANCED_SHULKER_FIX) && isClassLoaded("org.bukkit.event.player.PlayerCommandSendEvent")) {
|
} else if (settings.getProperty(SecuritySettings.ADVANCED_SHULKER_FIX) && isClassLoaded("org.bukkit.event.player.PlayerCommandSendEvent")) {
|
||||||
logger.warning("You are running an 1.13+ minecraft server, advancedShulkerFix won't enable.");
|
logger.warning("You are running an 1.13+ minecraft server, AdvancedShulkerFix won't enable.");
|
||||||
}
|
}
|
||||||
if (settings.getProperty(SecuritySettings.PURGE_DATA_ON_QUIT)) {
|
if (settings.getProperty(SecuritySettings.PURGE_DATA_ON_QUIT)) {
|
||||||
pluginManager.registerEvents(injector.getSingleton(PurgeListener.class), this);
|
pluginManager.registerEvents(injector.getSingleton(PurgeListener.class), this);
|
||||||
@@ -402,7 +389,7 @@ public class AuthMe extends JavaPlugin {
|
|||||||
if (onShutdownPlayerSaver != null) {
|
if (onShutdownPlayerSaver != null) {
|
||||||
onShutdownPlayerSaver.saveAllPlayers();
|
onShutdownPlayerSaver.saveAllPlayers();
|
||||||
}
|
}
|
||||||
if (settings.getProperty(EmailSettings.SHUTDOWN_MAIL)){
|
if (settings != null && settings.getProperty(EmailSettings.SHUTDOWN_MAIL)) {
|
||||||
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy'.'MM'.'dd'.' HH:mm:ss");
|
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy'.'MM'.'dd'.' HH:mm:ss");
|
||||||
Date date = new Date(System.currentTimeMillis());
|
Date date = new Date(System.currentTimeMillis());
|
||||||
emailService.sendShutDown(settings.getProperty(EmailSettings.SHUTDOWN_MAIL_ADDRESS),dateFormat.format(date));
|
emailService.sendShutDown(settings.getProperty(EmailSettings.SHUTDOWN_MAIL_ADDRESS),dateFormat.format(date));
|
||||||
@@ -422,55 +409,19 @@ public class AuthMe extends JavaPlugin {
|
|||||||
ConsoleLogger.closeFileWriter();
|
ConsoleLogger.closeFileWriter();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final String owner = "HaHaWTH";
|
|
||||||
// private static final String owner_gitee = "Shixuehan114514";
|
|
||||||
private static final String repo = "AuthMeReReloaded";
|
|
||||||
|
|
||||||
private void checkForUpdates() {
|
private void checkForUpdates() {
|
||||||
logger.info("Checking for updates...");
|
logger.info("Checking for updates...");
|
||||||
|
Updater updater = new Updater(pluginBuild + pluginBuildNumber);
|
||||||
bukkitService.runTaskAsynchronously(() -> {
|
bukkitService.runTaskAsynchronously(() -> {
|
||||||
try {
|
if (updater.isUpdateAvailable()) {
|
||||||
// 从南通集线器获取最新版本号
|
String message = "New version available! Latest:" + updater.getLatestVersion() + " Current:" + pluginBuild + pluginBuildNumber;
|
||||||
URL url = new URL("https://api.github.com/repos/" + owner + "/" + repo + "/releases/latest");
|
logger.warning(message);
|
||||||
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
|
logger.warning("Download from here: https://modrinth.com/plugin/authmerereloaded");
|
||||||
conn.setConnectTimeout(10000); // 设置连接超时为10秒
|
|
||||||
conn.setReadTimeout(10000); // 设置读取超时为10秒
|
|
||||||
Scanner scanner = new Scanner(conn.getInputStream());
|
|
||||||
String response = scanner.useDelimiter("\\Z").next();
|
|
||||||
scanner.close();
|
|
||||||
|
|
||||||
// 处理JSON响应
|
|
||||||
String latestVersion = response.substring(response.indexOf("tag_name") + 11);
|
|
||||||
latestVersion = latestVersion.substring(0, latestVersion.indexOf("\""));
|
|
||||||
if (isUpdateAvailable(latestVersion)) {
|
|
||||||
String message = "New version available! Latest:" + latestVersion + " Current:" + pluginBuild + pluginBuildNumber;
|
|
||||||
getLogger().log(Level.WARNING, message);
|
|
||||||
getLogger().log(Level.WARNING, "Download from here: https://github.com/HaHaWTH/AuthMeReReloaded/releases/latest");
|
|
||||||
} else {
|
} else {
|
||||||
getLogger().log(Level.INFO, "You are running the latest version.");
|
logger.info("You are running the latest version.");
|
||||||
}
|
|
||||||
} catch (IOException ignored) {
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
private boolean isUpdateAvailable(String latestVersion) {
|
|
||||||
// Extract the first character and the remaining digits from the version string
|
|
||||||
char latestChar = latestVersion.charAt(0);
|
|
||||||
int latestNumber = Integer.parseInt(latestVersion.substring(1));
|
|
||||||
|
|
||||||
char currentChar = pluginBuild.charAt(0);
|
|
||||||
int currentNumber = Integer.parseInt(pluginBuildNumber);
|
|
||||||
|
|
||||||
// Compare the characters first
|
|
||||||
if (latestChar > currentChar) {
|
|
||||||
return true;
|
|
||||||
} else if (latestChar < currentChar) {
|
|
||||||
return false;
|
|
||||||
} else {
|
|
||||||
// If the characters are the same, compare the numbers
|
|
||||||
return latestNumber > currentNumber;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private void checkServerType() {
|
private void checkServerType() {
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ import java.util.Optional;
|
|||||||
* AuthMeApi authmeApi = AuthMeApi.getInstance();
|
* AuthMeApi authmeApi = AuthMeApi.getInstance();
|
||||||
* </code>
|
* </code>
|
||||||
*/
|
*/
|
||||||
|
@SuppressWarnings("unused")
|
||||||
public class AuthMeApi {
|
public class AuthMeApi {
|
||||||
|
|
||||||
private static AuthMeApi singleton;
|
private static AuthMeApi singleton;
|
||||||
@@ -265,6 +266,16 @@ public class AuthMeApi {
|
|||||||
management.forceLogin(player);
|
management.forceLogin(player);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Force a player to login, i.e. the player is logged in without needing his password.
|
||||||
|
*
|
||||||
|
* @param player The player to log in
|
||||||
|
* @param quiet Whether to suppress the login message
|
||||||
|
*/
|
||||||
|
public void forceLogin(Player player, boolean quiet) {
|
||||||
|
management.forceLogin(player, quiet);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Force a player to logout.
|
* Force a player to logout.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
package fr.xephi.authme.command.executable.authme;
|
package fr.xephi.authme.command.executable.authme;
|
||||||
|
|
||||||
import fr.xephi.authme.command.PlayerCommand;
|
import fr.xephi.authme.command.PlayerCommand;
|
||||||
|
import fr.xephi.authme.service.BukkitService;
|
||||||
import fr.xephi.authme.settings.Settings;
|
import fr.xephi.authme.settings.Settings;
|
||||||
import fr.xephi.authme.settings.SpawnLoader;
|
import fr.xephi.authme.settings.SpawnLoader;
|
||||||
import fr.xephi.authme.settings.properties.SecuritySettings;
|
|
||||||
import fr.xephi.authme.util.TeleportUtils;
|
import fr.xephi.authme.util.TeleportUtils;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
@@ -18,17 +18,17 @@ public class FirstSpawnCommand extends PlayerCommand {
|
|||||||
private Settings settings;
|
private Settings settings;
|
||||||
@Inject
|
@Inject
|
||||||
private SpawnLoader spawnLoader;
|
private SpawnLoader spawnLoader;
|
||||||
|
@Inject
|
||||||
|
private BukkitService bukkitService;
|
||||||
@Override
|
@Override
|
||||||
public void runCommand(Player player, List<String> arguments) {
|
public void runCommand(Player player, List<String> arguments) {
|
||||||
if (spawnLoader.getFirstSpawn() == null) {
|
if (spawnLoader.getFirstSpawn() == null) {
|
||||||
player.sendMessage("[AuthMe] First spawn has failed, please try to define the first spawn");
|
player.sendMessage("[AuthMe] First spawn has failed, please try to define the first spawn");
|
||||||
} else {
|
} else {
|
||||||
//String name= player.getName();
|
//String name= player.getName();
|
||||||
if(settings.getProperty(SecuritySettings.SMART_ASYNC_TELEPORT)) {
|
bukkitService.runTaskIfFolia(player, () -> {
|
||||||
TeleportUtils.teleport(player, spawnLoader.getFirstSpawn());
|
TeleportUtils.teleport(player, spawnLoader.getFirstSpawn());
|
||||||
} else {
|
});
|
||||||
player.teleport(spawnLoader.getFirstSpawn());
|
|
||||||
}
|
|
||||||
//player.teleport(spawnLoader.getFirstSpawn());
|
//player.teleport(spawnLoader.getFirstSpawn());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
package fr.xephi.authme.command.executable.authme;
|
package fr.xephi.authme.command.executable.authme;
|
||||||
|
|
||||||
import fr.xephi.authme.command.PlayerCommand;
|
import fr.xephi.authme.command.PlayerCommand;
|
||||||
|
import fr.xephi.authme.service.BukkitService;
|
||||||
import fr.xephi.authme.settings.SpawnLoader;
|
import fr.xephi.authme.settings.SpawnLoader;
|
||||||
|
import fr.xephi.authme.util.TeleportUtils;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
@@ -11,13 +13,15 @@ public class SpawnCommand extends PlayerCommand {
|
|||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private SpawnLoader spawnLoader;
|
private SpawnLoader spawnLoader;
|
||||||
|
@Inject
|
||||||
|
private BukkitService bukkitService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void runCommand(Player player, List<String> arguments) {
|
public void runCommand(Player player, List<String> arguments) {
|
||||||
if (spawnLoader.getSpawn() == null) {
|
if (spawnLoader.getSpawn() == null) {
|
||||||
player.sendMessage("[AuthMe] Spawn has failed, please try to define the spawn");
|
player.sendMessage("[AuthMe] Spawn has failed, please try to define the spawn");
|
||||||
} else {
|
} else {
|
||||||
player.teleport(spawnLoader.getSpawn());
|
bukkitService.runTaskIfFolia(player, () -> TeleportUtils.teleport(player, spawnLoader.getSpawn()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+4
@@ -8,6 +8,7 @@ import fr.xephi.authme.process.Management;
|
|||||||
import fr.xephi.authme.service.CommonService;
|
import fr.xephi.authme.service.CommonService;
|
||||||
import fr.xephi.authme.service.ValidationService;
|
import fr.xephi.authme.service.ValidationService;
|
||||||
import fr.xephi.authme.service.ValidationService.ValidationResult;
|
import fr.xephi.authme.service.ValidationService.ValidationResult;
|
||||||
|
import fr.xephi.authme.settings.properties.SecuritySettings;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
@@ -42,12 +43,15 @@ public class ChangePasswordCommand extends PlayerCommand {
|
|||||||
commonService.send(player, MessageKey.NOT_LOGGED_IN);
|
commonService.send(player, MessageKey.NOT_LOGGED_IN);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (commonService.getProperty(SecuritySettings.CHANGE_PASSWORD_EMAIL_VERIFICATION_REQUIRED)) {
|
||||||
// Check if the user has been verified or not
|
// Check if the user has been verified or not
|
||||||
if (codeManager.isVerificationRequired(player)) {
|
if (codeManager.isVerificationRequired(player)) {
|
||||||
codeManager.codeExistOrGenerateNew(name);
|
codeManager.codeExistOrGenerateNew(name);
|
||||||
commonService.send(player, MessageKey.VERIFICATION_CODE_REQUIRED);
|
commonService.send(player, MessageKey.VERIFICATION_CODE_REQUIRED);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
String oldPassword = arguments.get(0);
|
String oldPassword = arguments.get(0);
|
||||||
String newPassword = arguments.get(1);
|
String newPassword = arguments.get(1);
|
||||||
|
|||||||
@@ -22,6 +22,8 @@ import java.util.Locale;
|
|||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
|
import static fr.xephi.authme.AuthMe.getScheduler;
|
||||||
|
|
||||||
public class VerificationCodeManager implements SettingsDependent, HasCleanup {
|
public class VerificationCodeManager implements SettingsDependent, HasCleanup {
|
||||||
|
|
||||||
private final EmailService emailService;
|
private final EmailService emailService;
|
||||||
@@ -133,8 +135,9 @@ public class VerificationCodeManager implements SettingsDependent, HasCleanup {
|
|||||||
* @param name the name of the player to generate a code for
|
* @param name the name of the player to generate a code for
|
||||||
*/
|
*/
|
||||||
private void generateCode(String name) {
|
private void generateCode(String name) {
|
||||||
|
getScheduler().runTaskAsynchronously(() -> {
|
||||||
DataSourceValue<String> emailResult = dataSource.getEmail(name);
|
DataSourceValue<String> emailResult = dataSource.getEmail(name);
|
||||||
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy'年'MM'月'dd'日' HH:mm:ss");
|
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy'-'MM'-'dd'-' HH:mm:ss");
|
||||||
Date date = new Date(System.currentTimeMillis());
|
Date date = new Date(System.currentTimeMillis());
|
||||||
if (emailResult.rowExists()) {
|
if (emailResult.rowExists()) {
|
||||||
final String email = emailResult.getValue();
|
final String email = emailResult.getValue();
|
||||||
@@ -144,6 +147,7 @@ public class VerificationCodeManager implements SettingsDependent, HasCleanup {
|
|||||||
emailService.sendVerificationMail(name, email, code, dateFormat.format(date));
|
emailService.sendVerificationMail(name, email, code, dateFormat.format(date));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ public class BedrockAutoLoginListener implements Listener {
|
|||||||
UUID uuid = event.getPlayer().getUniqueId();
|
UUID uuid = event.getPlayer().getUniqueId();
|
||||||
bukkitService.runTaskLater(player, () -> {
|
bukkitService.runTaskLater(player, () -> {
|
||||||
if (isBedrockPlayer(uuid) && !authmeApi.isAuthenticated(player) && authmeApi.isRegistered(name)) {
|
if (isBedrockPlayer(uuid) && !authmeApi.isAuthenticated(player) && authmeApi.isRegistered(name)) {
|
||||||
authmeApi.forceLogin(player);
|
authmeApi.forceLogin(player, true);
|
||||||
messages.send(player, MessageKey.BEDROCK_AUTO_LOGGED_IN);
|
messages.send(player, MessageKey.BEDROCK_AUTO_LOGGED_IN);
|
||||||
}
|
}
|
||||||
},20L);
|
},20L);
|
||||||
|
|||||||
@@ -1,263 +0,0 @@
|
|||||||
package fr.xephi.authme.listener;
|
|
||||||
|
|
||||||
import com.comphenix.protocol.PacketType;
|
|
||||||
import com.comphenix.protocol.ProtocolLibrary;
|
|
||||||
import com.comphenix.protocol.events.ListenerPriority;
|
|
||||||
import com.comphenix.protocol.events.PacketAdapter;
|
|
||||||
import com.comphenix.protocol.events.PacketEvent;
|
|
||||||
import fr.xephi.authme.AuthMe;
|
|
||||||
import fr.xephi.authme.api.v3.AuthMeApi;
|
|
||||||
import fr.xephi.authme.events.LoginEvent;
|
|
||||||
import fr.xephi.authme.message.MessageKey;
|
|
||||||
import fr.xephi.authme.message.Messages;
|
|
||||||
import fr.xephi.authme.service.BukkitService;
|
|
||||||
import fr.xephi.authme.service.CommonService;
|
|
||||||
import fr.xephi.authme.settings.Settings;
|
|
||||||
import fr.xephi.authme.settings.properties.HooksSettings;
|
|
||||||
import fr.xephi.authme.settings.properties.RestrictionSettings;
|
|
||||||
import fr.xephi.authme.settings.properties.SecuritySettings;
|
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
import org.bukkit.Material;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.event.EventHandler;
|
|
||||||
import org.bukkit.event.EventPriority;
|
|
||||||
import org.bukkit.event.Listener;
|
|
||||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
|
||||||
import org.bukkit.event.player.PlayerJoinEvent;
|
|
||||||
import org.bukkit.event.player.PlayerLoginEvent;
|
|
||||||
import org.bukkit.inventory.Inventory;
|
|
||||||
import org.bukkit.inventory.ItemStack;
|
|
||||||
import org.bukkit.inventory.meta.ItemMeta;
|
|
||||||
|
|
||||||
import javax.inject.Inject;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Random;
|
|
||||||
import java.util.UUID;
|
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
|
||||||
import java.util.concurrent.atomic.AtomicInteger;
|
|
||||||
import java.util.logging.Level;
|
|
||||||
|
|
||||||
import static fr.xephi.authme.util.PlayerUtils.getPlayerIp;
|
|
||||||
import static fr.xephi.authme.util.PlayerUtils.isNpc;
|
|
||||||
import static org.bukkit.Bukkit.getLogger;
|
|
||||||
import static org.bukkit.Bukkit.getServer;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This class handles ALL the GUI captcha features in the plugin.
|
|
||||||
*/
|
|
||||||
public class GuiCaptchaHandler implements Listener {
|
|
||||||
//define AuthMeApi
|
|
||||||
private final AuthMeApi authmeApi = AuthMeApi.getInstance();
|
|
||||||
@Inject
|
|
||||||
private BukkitService bukkitService;
|
|
||||||
@Inject
|
|
||||||
private AuthMe plugin;
|
|
||||||
@Inject
|
|
||||||
private Messages messages;
|
|
||||||
@Inject
|
|
||||||
private CommonService service;
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
private Settings settings;
|
|
||||||
|
|
||||||
|
|
||||||
private PacketAdapter chatPacketListener;
|
|
||||||
private PacketAdapter windowPacketListener;
|
|
||||||
|
|
||||||
//define timesLeft
|
|
||||||
private int timesLeft = 3;
|
|
||||||
//Use ConcurrentHashMap to store player and their close reason
|
|
||||||
/* We used many async tasks so there is concurrent**/
|
|
||||||
public static ConcurrentHashMap<Player, String> closeReasonMap = new ConcurrentHashMap<>();
|
|
||||||
//define randomStringSet
|
|
||||||
String randomSet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890abcdefghijklmnopqrstuvwxyz!@#%&*()_+";
|
|
||||||
String randomString = "";
|
|
||||||
Random randomItemSet = new Random();
|
|
||||||
Random howManyRandom = new Random();
|
|
||||||
private Material captchaMaterial = getRandomMaterial();
|
|
||||||
|
|
||||||
|
|
||||||
private boolean isPacketListenersActive = false;
|
|
||||||
|
|
||||||
public GuiCaptchaHandler() {
|
|
||||||
}
|
|
||||||
|
|
||||||
private StringBuilder sb;
|
|
||||||
private final List<String> whiteList = AuthMe.settings.getProperty(SecuritySettings.GUI_CAPTCHA_COUNTRY_WHITELIST);
|
|
||||||
|
|
||||||
private boolean isBedrockPlayer(UUID uuid) {
|
|
||||||
if (getServer().getPluginManager().getPlugin("floodgate") != null) {
|
|
||||||
return settings.getProperty(HooksSettings.HOOK_FLOODGATE_PLAYER) && settings.getProperty(SecuritySettings.GUI_CAPTCHA_BE_COMPATIBILITY) && org.geysermc.floodgate.api.FloodgateApi.getInstance().isFloodgateId(uuid);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private void initializePacketListeners() {
|
|
||||||
if (!isPacketListenersActive) {
|
|
||||||
ProtocolLibrary.getProtocolManager().addPacketListener(windowPacketListener);
|
|
||||||
ProtocolLibrary.getProtocolManager().addPacketListener(chatPacketListener);
|
|
||||||
isPacketListenersActive = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@EventHandler
|
|
||||||
public void onInventoryClick(InventoryClickEvent event) {
|
|
||||||
if (event.getWhoClicked() instanceof Player) {
|
|
||||||
Player player = (Player) event.getWhoClicked();
|
|
||||||
ItemStack currentItem = event.getCurrentItem();
|
|
||||||
if (!authmeApi.isRegistered(player.getName())) {
|
|
||||||
if (isBedrockPlayer(player.getUniqueId())) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (currentItem != null && currentItem.getType().equals(captchaMaterial)) {
|
|
||||||
event.setCancelled(true);
|
|
||||||
if (!closeReasonMap.containsKey(player)) {
|
|
||||||
closeReasonMap.put(player, "verified");
|
|
||||||
}
|
|
||||||
player.closeInventory();
|
|
||||||
messages.send(player, MessageKey.GUI_CAPTCHA_VERIFIED);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGHEST)
|
|
||||||
public void onPlayerLogin(PlayerLoginEvent event) {
|
|
||||||
Player player = event.getPlayer();
|
|
||||||
bukkitService.runTaskAsynchronously(() -> {
|
|
||||||
sb = new StringBuilder();
|
|
||||||
int howLongIsRandomString = (howManyRandom.nextInt(3) + 1);
|
|
||||||
for (int i = 0; i < howLongIsRandomString; i++) {
|
|
||||||
//生成随机索引号
|
|
||||||
int index = randomItemSet.nextInt(randomSet.length());
|
|
||||||
|
|
||||||
// 从字符串中获取由索引 index 指定的字符
|
|
||||||
char randomChar = randomSet.charAt(index);
|
|
||||||
|
|
||||||
// 将字符追加到字符串生成器
|
|
||||||
sb.append(randomChar);
|
|
||||||
}
|
|
||||||
if (!whiteList.isEmpty()) {
|
|
||||||
String ip = getPlayerIp(player);
|
|
||||||
if (whiteList.contains(authmeApi.getCountryCode(ip)) && ip != null) {
|
|
||||||
if (!closeReasonMap.containsKey(player)) {
|
|
||||||
closeReasonMap.put(player, "verified:whitelist");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST)
|
|
||||||
public void onPlayerJoin(PlayerJoinEvent event) {
|
|
||||||
randomString = "";
|
|
||||||
Player playerunreg = event.getPlayer();
|
|
||||||
String name = playerunreg.getName();
|
|
||||||
if (!authmeApi.isRegistered(name) && !isNpc(playerunreg) && !closeReasonMap.containsKey(playerunreg)) {
|
|
||||||
if (isBedrockPlayer(playerunreg.getUniqueId())) {
|
|
||||||
if (!closeReasonMap.containsKey(playerunreg)) {
|
|
||||||
closeReasonMap.put(playerunreg, "verified:bedrock");
|
|
||||||
}
|
|
||||||
messages.send(playerunreg, MessageKey.GUI_CAPTCHA_VERIFIED_AUTO_BEDROCK);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
randomString = sb.toString();
|
|
||||||
Random random_blockpos = new Random();
|
|
||||||
AtomicInteger random_num = new AtomicInteger(random_blockpos.nextInt(27));
|
|
||||||
Inventory menu = Bukkit.createInventory(playerunreg, 27, messages.retrieveSingle(playerunreg, MessageKey.GUI_CAPTCHA_WINDOW_NAME, randomString));
|
|
||||||
ItemStack item = new ItemStack(captchaMaterial);
|
|
||||||
ItemMeta meta = item.getItemMeta();
|
|
||||||
try {
|
|
||||||
if (meta != null) {
|
|
||||||
meta.setDisplayName(messages.retrieveSingle(playerunreg, MessageKey.GUI_CAPTCHA_CLICKABLE_NAME, randomString));
|
|
||||||
item.setItemMeta(meta);
|
|
||||||
}
|
|
||||||
} catch (NullPointerException e) {
|
|
||||||
getLogger().log(Level.WARNING, "Unexpected error occurred while setting item meta.");
|
|
||||||
}
|
|
||||||
windowPacketListener = new PacketAdapter(this.plugin, ListenerPriority.HIGHEST, PacketType.Play.Client.CLOSE_WINDOW) {
|
|
||||||
@Override
|
|
||||||
public void onPacketReceiving(PacketEvent event) {
|
|
||||||
Player packetPlayer = event.getPlayer();
|
|
||||||
if (!closeReasonMap.containsKey(packetPlayer) && !authmeApi.isRegistered(packetPlayer.getName())) {
|
|
||||||
if (timesLeft <= 0) {
|
|
||||||
bukkitService.runTask(() -> {
|
|
||||||
packetPlayer.kickPlayer(service.retrieveSingleMessage(packetPlayer, MessageKey.GUI_CAPTCHA_KICK_FAILED));
|
|
||||||
});
|
|
||||||
timesLeft = 3;
|
|
||||||
} else {
|
|
||||||
--timesLeft;
|
|
||||||
if (timesLeft <= 0) {
|
|
||||||
bukkitService.runTask(() -> {
|
|
||||||
packetPlayer.kickPlayer(service.retrieveSingleMessage(packetPlayer, MessageKey.GUI_CAPTCHA_KICK_FAILED));
|
|
||||||
});
|
|
||||||
timesLeft = 3;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
messages.send(packetPlayer, MessageKey.GUI_CAPTCHA_RETRY_MESSAGE, String.valueOf(timesLeft));
|
|
||||||
event.setCancelled(true);
|
|
||||||
random_num.set(random_blockpos.nextInt(26));
|
|
||||||
bukkitService.runTask(() -> {
|
|
||||||
menu.clear();
|
|
||||||
menu.setItem(random_num.get(), item);
|
|
||||||
packetPlayer.openInventory(menu);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
chatPacketListener = new PacketAdapter(this.plugin, ListenerPriority.HIGHEST, PacketType.Play.Client.CHAT) {
|
|
||||||
@Override
|
|
||||||
public void onPacketReceiving(PacketEvent event) {
|
|
||||||
Player packetPlayer = event.getPlayer();
|
|
||||||
if (!closeReasonMap.containsKey(packetPlayer) && !authmeApi.isRegistered(packetPlayer.getName())) {
|
|
||||||
messages.send(packetPlayer, MessageKey.GUI_CAPTCHA_DENIED_MESSAGE);
|
|
||||||
event.setCancelled(true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
initializePacketListeners();
|
|
||||||
//Open captcha inventory
|
|
||||||
menu.setItem(random_num.get(), item);
|
|
||||||
playerunreg.openInventory(menu);
|
|
||||||
if (settings.getProperty(SecuritySettings.GUI_CAPTCHA_TIMEOUT) > 0) {
|
|
||||||
long timeOut = settings.getProperty(SecuritySettings.GUI_CAPTCHA_TIMEOUT);
|
|
||||||
if (settings.getProperty(SecuritySettings.GUI_CAPTCHA_TIMEOUT) > settings.getProperty(RestrictionSettings.TIMEOUT)) {
|
|
||||||
bukkitService.runTask(() -> {
|
|
||||||
getLogger().warning("AuthMe detected that your GUI captcha timeout seconds(" + settings.getProperty(SecuritySettings.GUI_CAPTCHA_TIMEOUT) + ") is bigger than the Login timeout seconds(" +
|
|
||||||
settings.getProperty(RestrictionSettings.TIMEOUT) + "). To prevent issues, we will let the GUI captcha follow the Login timeout seconds, please check and modify your config.");
|
|
||||||
});
|
|
||||||
timeOut = settings.getProperty(RestrictionSettings.TIMEOUT);
|
|
||||||
}
|
|
||||||
long finalTimeOut = timeOut;
|
|
||||||
bukkitService.runTaskLater(() -> {
|
|
||||||
if (!closeReasonMap.containsKey(playerunreg) && !authmeApi.isRegistered(playerunreg.getName())) {
|
|
||||||
playerunreg.kickPlayer(service.retrieveSingleMessage(playerunreg, MessageKey.GUI_CAPTCHA_KICK_TIMEOUT));
|
|
||||||
timesLeft = 3; // Reset the attempt counter
|
|
||||||
}
|
|
||||||
}, finalTimeOut * 20L);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//This prevents players from unregistering by Admins
|
|
||||||
@EventHandler
|
|
||||||
public void onPlayerAuthMeLogin(LoginEvent event) {
|
|
||||||
Player player = event.getPlayer();
|
|
||||||
if (!closeReasonMap.containsKey(player)) {
|
|
||||||
closeReasonMap.put(player, "verified:login");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private Material getRandomMaterial() {
|
|
||||||
Material[] allMaterials = Material.values();
|
|
||||||
Random random = new Random();
|
|
||||||
return allMaterials[random.nextInt(allMaterials.length)];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,14 +1,11 @@
|
|||||||
package fr.xephi.authme.listener;
|
package fr.xephi.authme.listener;
|
||||||
|
|
||||||
import fr.xephi.authme.AuthMe;
|
|
||||||
import fr.xephi.authme.api.v3.AuthMeApi;
|
|
||||||
import fr.xephi.authme.data.auth.PlayerCache;
|
import fr.xephi.authme.data.auth.PlayerCache;
|
||||||
import fr.xephi.authme.datasource.DataSource;
|
import fr.xephi.authme.datasource.DataSource;
|
||||||
import fr.xephi.authme.initialization.SettingsDependent;
|
import fr.xephi.authme.initialization.SettingsDependent;
|
||||||
import fr.xephi.authme.service.ValidationService;
|
import fr.xephi.authme.service.ValidationService;
|
||||||
import fr.xephi.authme.settings.Settings;
|
import fr.xephi.authme.settings.Settings;
|
||||||
import fr.xephi.authme.settings.properties.RegistrationSettings;
|
import fr.xephi.authme.settings.properties.RegistrationSettings;
|
||||||
import fr.xephi.authme.settings.properties.SecuritySettings;
|
|
||||||
import fr.xephi.authme.util.PlayerUtils;
|
import fr.xephi.authme.util.PlayerUtils;
|
||||||
import org.bukkit.entity.Entity;
|
import org.bukkit.entity.Entity;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
@@ -21,7 +18,6 @@ import javax.inject.Inject;
|
|||||||
* Service class for the AuthMe listeners to determine whether an event should be canceled.
|
* Service class for the AuthMe listeners to determine whether an event should be canceled.
|
||||||
*/
|
*/
|
||||||
class ListenerService implements SettingsDependent {
|
class ListenerService implements SettingsDependent {
|
||||||
private final AuthMeApi authmeApi = AuthMeApi.getInstance();
|
|
||||||
private final DataSource dataSource;
|
private final DataSource dataSource;
|
||||||
private final PlayerCache playerCache;
|
private final PlayerCache playerCache;
|
||||||
private final ValidationService validationService;
|
private final ValidationService validationService;
|
||||||
@@ -79,19 +75,9 @@ class ListenerService implements SettingsDependent {
|
|||||||
* @param player the player to verify
|
* @param player the player to verify
|
||||||
* @return true if the associated event should be canceled, false otherwise
|
* @return true if the associated event should be canceled, false otherwise
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public boolean shouldCancelEvent(Player player) {
|
public boolean shouldCancelEvent(Player player) {
|
||||||
|
|
||||||
return player != null && !checkAuth(player.getName()) && !PlayerUtils.isNpc(player);
|
return player != null && !checkAuth(player.getName()) && !PlayerUtils.isNpc(player);
|
||||||
}
|
}
|
||||||
public boolean shouldCancelInvEvent(Player player) {
|
|
||||||
try {
|
|
||||||
return !AuthMe.settings.getProperty(SecuritySettings.GUI_CAPTCHA) || authmeApi.isRegistered(player.getName()) || GuiCaptchaHandler.closeReasonMap.containsKey(player)/* || !player.getOpenInventory().getTitle().equals("请验证你是真人")*/;
|
|
||||||
} catch (Exception e) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void reload(Settings settings) {
|
public void reload(Settings settings) {
|
||||||
isRegistrationForced = settings.getProperty(RegistrationSettings.FORCE);
|
isRegistrationForced = settings.getProperty(RegistrationSettings.FORCE);
|
||||||
|
|||||||
@@ -75,11 +75,7 @@ public class LoginLocationFixListener implements Listener {
|
|||||||
boolean solved = false;
|
boolean solved = false;
|
||||||
for (BlockFace face : faces) {
|
for (BlockFace face : faces) {
|
||||||
if (JoinBlock.getRelative(face).getType().equals(Material.AIR) && JoinBlock.getRelative(face).getRelative(BlockFace.UP).getType().equals(Material.AIR)) {
|
if (JoinBlock.getRelative(face).getType().equals(Material.AIR) && JoinBlock.getRelative(face).getRelative(BlockFace.UP).getType().equals(Material.AIR)) {
|
||||||
if (settings.getProperty(SecuritySettings.SMART_ASYNC_TELEPORT)) {
|
|
||||||
TeleportUtils.teleport(player, JoinBlock.getRelative(face).getLocation().add(0.5, 0.1, 0.5));
|
TeleportUtils.teleport(player, JoinBlock.getRelative(face).getLocation().add(0.5, 0.1, 0.5));
|
||||||
} else {
|
|
||||||
player.teleport(JoinBlock.getRelative(face).getLocation().add(0.5, 0.1, 0.5));
|
|
||||||
}
|
|
||||||
solved = true;
|
solved = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -107,20 +103,12 @@ public class LoginLocationFixListener implements Listener {
|
|||||||
if (JoinBlock.getRelative(BlockFace.DOWN).getType().equals(Material.LAVA)) {
|
if (JoinBlock.getRelative(BlockFace.DOWN).getType().equals(Material.LAVA)) {
|
||||||
JoinBlock.getRelative(BlockFace.DOWN).setType(Material.DIRT);
|
JoinBlock.getRelative(BlockFace.DOWN).setType(Material.DIRT);
|
||||||
}
|
}
|
||||||
if (settings.getProperty(SecuritySettings.SMART_ASYNC_TELEPORT)) {
|
|
||||||
TeleportUtils.teleport(player, JoinBlock.getLocation().add(0.5, 0.1, 0.5));
|
TeleportUtils.teleport(player, JoinBlock.getLocation().add(0.5, 0.1, 0.5));
|
||||||
} else {
|
|
||||||
player.teleport(JoinBlock.getLocation().add(0.5, 0.1, 0.5));
|
|
||||||
}
|
|
||||||
messages.send(player, MessageKey.LOCATION_FIX_UNDERGROUND);
|
messages.send(player, MessageKey.LOCATION_FIX_UNDERGROUND);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (i == MaxHeight) {
|
if (i == MaxHeight) {
|
||||||
if (settings.getProperty(SecuritySettings.SMART_ASYNC_TELEPORT)) {
|
|
||||||
TeleportUtils.teleport(player, JoinBlock.getLocation().add(0.5, 1.1, 0.5));
|
TeleportUtils.teleport(player, JoinBlock.getLocation().add(0.5, 1.1, 0.5));
|
||||||
} else {
|
|
||||||
player.teleport(JoinBlock.getLocation().add(0.5, 1.1, 0.5));
|
|
||||||
}
|
|
||||||
messages.send(player, MessageKey.LOCATION_FIX_UNDERGROUND_CANT_FIX);
|
messages.send(player, MessageKey.LOCATION_FIX_UNDERGROUND_CANT_FIX);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package fr.xephi.authme.listener;
|
package fr.xephi.authme.listener;
|
||||||
|
|
||||||
import fr.xephi.authme.api.v3.AuthMeApi;
|
|
||||||
import fr.xephi.authme.data.QuickCommandsProtectionManager;
|
import fr.xephi.authme.data.QuickCommandsProtectionManager;
|
||||||
import fr.xephi.authme.data.auth.PlayerAuth;
|
import fr.xephi.authme.data.auth.PlayerAuth;
|
||||||
import fr.xephi.authme.datasource.DataSource;
|
import fr.xephi.authme.datasource.DataSource;
|
||||||
@@ -17,10 +16,12 @@ import fr.xephi.authme.service.ValidationService;
|
|||||||
import fr.xephi.authme.settings.Settings;
|
import fr.xephi.authme.settings.Settings;
|
||||||
import fr.xephi.authme.settings.SpawnLoader;
|
import fr.xephi.authme.settings.SpawnLoader;
|
||||||
import fr.xephi.authme.settings.properties.HooksSettings;
|
import fr.xephi.authme.settings.properties.HooksSettings;
|
||||||
|
import fr.xephi.authme.settings.properties.PluginSettings;
|
||||||
import fr.xephi.authme.settings.properties.RegistrationSettings;
|
import fr.xephi.authme.settings.properties.RegistrationSettings;
|
||||||
import fr.xephi.authme.settings.properties.RestrictionSettings;
|
import fr.xephi.authme.settings.properties.RestrictionSettings;
|
||||||
import fr.xephi.authme.settings.properties.SecuritySettings;
|
|
||||||
import fr.xephi.authme.util.TeleportUtils;
|
import fr.xephi.authme.util.TeleportUtils;
|
||||||
|
import fr.xephi.authme.util.message.I18NUtils;
|
||||||
|
import fr.xephi.authme.util.message.MiniMessageUtils;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.entity.HumanEntity;
|
import org.bukkit.entity.HumanEntity;
|
||||||
@@ -65,11 +66,6 @@ import static org.bukkit.Bukkit.getServer;
|
|||||||
* Listener class for player events.
|
* Listener class for player events.
|
||||||
*/
|
*/
|
||||||
public class PlayerListener implements Listener {
|
public class PlayerListener implements Listener {
|
||||||
private final AuthMeApi authmeApi = AuthMeApi.getInstance();
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private Settings settings;
|
private Settings settings;
|
||||||
@Inject
|
@Inject
|
||||||
@@ -99,7 +95,6 @@ public class PlayerListener implements Listener{
|
|||||||
@Inject
|
@Inject
|
||||||
private QuickCommandsProtectionManager quickCommandsProtectionManager;
|
private QuickCommandsProtectionManager quickCommandsProtectionManager;
|
||||||
|
|
||||||
|
|
||||||
// Lowest priority to apply fast protection checks
|
// Lowest priority to apply fast protection checks
|
||||||
@EventHandler(priority = EventPriority.LOWEST)
|
@EventHandler(priority = EventPriority.LOWEST)
|
||||||
public void onAsyncPlayerPreLoginEventLowest(AsyncPlayerPreLoginEvent event) {
|
public void onAsyncPlayerPreLoginEventLowest(AsyncPlayerPreLoginEvent event) {
|
||||||
@@ -193,7 +188,6 @@ public class PlayerListener implements Listener{
|
|||||||
@EventHandler(priority = EventPriority.NORMAL)
|
@EventHandler(priority = EventPriority.NORMAL)
|
||||||
public void onPlayerJoin(PlayerJoinEvent event) {
|
public void onPlayerJoin(PlayerJoinEvent event) {
|
||||||
final Player player = event.getPlayer();
|
final Player player = event.getPlayer();
|
||||||
final AuthMeApi authmeApi = AuthMeApi.getInstance();
|
|
||||||
if (!PlayerListener19Spigot.isPlayerSpawnLocationEventCalled()) {
|
if (!PlayerListener19Spigot.isPlayerSpawnLocationEventCalled()) {
|
||||||
teleportationService.teleportOnJoin(player);
|
teleportationService.teleportOnJoin(player);
|
||||||
}
|
}
|
||||||
@@ -220,7 +214,7 @@ public class PlayerListener implements Listener{
|
|||||||
|
|
||||||
String customJoinMessage = settings.getProperty(RegistrationSettings.CUSTOM_JOIN_MESSAGE);
|
String customJoinMessage = settings.getProperty(RegistrationSettings.CUSTOM_JOIN_MESSAGE);
|
||||||
if (!customJoinMessage.isEmpty()) {
|
if (!customJoinMessage.isEmpty()) {
|
||||||
customJoinMessage = ChatColor.translateAlternateColorCodes('&', customJoinMessage);
|
customJoinMessage = ChatColor.translateAlternateColorCodes('&', MiniMessageUtils.parseMiniMessageToLegacy(customJoinMessage));
|
||||||
event.setJoinMessage(customJoinMessage
|
event.setJoinMessage(customJoinMessage
|
||||||
.replace("{PLAYERNAME}", player.getName())
|
.replace("{PLAYERNAME}", player.getName())
|
||||||
.replace("{DISPLAYNAME}", player.getDisplayName())
|
.replace("{DISPLAYNAME}", player.getDisplayName())
|
||||||
@@ -255,6 +249,11 @@ public class PlayerListener implements Listener{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Remove data from locale map when player quit
|
||||||
|
if (settings.getProperty(PluginSettings.I18N_MESSAGES)) {
|
||||||
|
I18NUtils.removeLocale(player.getUniqueId());
|
||||||
|
}
|
||||||
|
|
||||||
if (antiBotService.wasPlayerKicked(player.getName())) {
|
if (antiBotService.wasPlayerKicked(player.getName())) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -375,17 +374,9 @@ public class PlayerListener implements Listener{
|
|||||||
Location spawn = spawnLoader.getSpawnLocation(player);
|
Location spawn = spawnLoader.getSpawnLocation(player);
|
||||||
if (spawn != null && spawn.getWorld() != null) {
|
if (spawn != null && spawn.getWorld() != null) {
|
||||||
if (!player.getWorld().equals(spawn.getWorld())) {
|
if (!player.getWorld().equals(spawn.getWorld())) {
|
||||||
if(settings.getProperty(SecuritySettings.SMART_ASYNC_TELEPORT)) {
|
|
||||||
TeleportUtils.teleport(player,spawn);
|
TeleportUtils.teleport(player,spawn);
|
||||||
} else {
|
|
||||||
player.teleport(spawn);
|
|
||||||
}
|
|
||||||
} else if (spawn.distance(player.getLocation()) > settings.getProperty(ALLOWED_MOVEMENT_RADIUS)) {
|
} else if (spawn.distance(player.getLocation()) > settings.getProperty(ALLOWED_MOVEMENT_RADIUS)) {
|
||||||
if(settings.getProperty(SecuritySettings.SMART_ASYNC_TELEPORT)) {
|
|
||||||
TeleportUtils.teleport(player,spawn);
|
TeleportUtils.teleport(player,spawn);
|
||||||
} else {
|
|
||||||
player.teleport(spawn);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -504,21 +495,33 @@ public class PlayerListener implements Listener{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("all")
|
||||||
private boolean isInventoryWhitelisted(InventoryView inventory) {
|
private boolean isInventoryWhitelisted(InventoryView inventory) {
|
||||||
if (inventory == null) {
|
if (inventory == null) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
Set<String> whitelist = settings.getProperty(RestrictionSettings.UNRESTRICTED_INVENTORIES);
|
Set<String> whitelist = settings.getProperty(RestrictionSettings.UNRESTRICTED_INVENTORIES);
|
||||||
|
if (whitelist.isEmpty()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
//append a string for String whitelist
|
//append a string for String whitelist
|
||||||
return whitelist.contains(ChatColor.stripColor(inventory.getTitle()).toLowerCase(Locale.ROOT));
|
String invName = ChatColor.stripColor(inventory.getTitle()).toLowerCase(Locale.ROOT);
|
||||||
|
if (settings.getProperty(RestrictionSettings.STRICT_UNRESTRICTED_INVENTORIES_CHECK)) {
|
||||||
|
return whitelist.contains(invName);
|
||||||
|
}
|
||||||
|
for (String wl : whitelist) {
|
||||||
|
if (invName.contains(wl)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(ignoreCancelled = true, priority = EventPriority.LOWEST)
|
@EventHandler(ignoreCancelled = true, priority = EventPriority.LOWEST)
|
||||||
public void onPlayerInventoryOpen(InventoryOpenEvent event) {
|
public void onPlayerInventoryOpen(InventoryOpenEvent event) {
|
||||||
final HumanEntity player = event.getPlayer();
|
final HumanEntity player = event.getPlayer();
|
||||||
Player ply = (Player) event.getPlayer();
|
|
||||||
if (listenerService.shouldCancelEvent(player)
|
if (listenerService.shouldCancelEvent(player)
|
||||||
&& !isInventoryWhitelisted(event.getView()) && listenerService.shouldCancelInvEvent(ply)) {
|
&& !isInventoryWhitelisted(event.getView())) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -536,12 +539,4 @@ public class PlayerListener implements Listener{
|
|||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// @EventHandler(priority = EventPriority.LOWEST)
|
|
||||||
// public void onSwitchHand(PlayerSwapHandItemsEvent event) {
|
|
||||||
// Player player = event.getPlayer();
|
|
||||||
// if (!player.isSneaking() || !player.hasPermission("keybindings.use"))
|
|
||||||
// return;
|
|
||||||
// event.setCancelled(true);
|
|
||||||
// Bukkit.dispatchCommand(event.getPlayer(), "help");
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,14 +1,10 @@
|
|||||||
package fr.xephi.authme.listener;
|
package fr.xephi.authme.listener;
|
||||||
|
|
||||||
import fr.xephi.authme.settings.Settings;
|
import fr.xephi.authme.settings.Settings;
|
||||||
import fr.xephi.authme.settings.properties.PluginSettings;
|
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.EventPriority;
|
import org.bukkit.event.EventPriority;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.entity.EntityPickupItemEvent;
|
import org.bukkit.event.entity.EntityPickupItemEvent;
|
||||||
import org.bukkit.event.player.PlayerSwapHandItemsEvent;
|
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
|
||||||
@@ -26,12 +22,4 @@ public class PlayerListenerHigherThan18 implements Listener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.LOWEST)
|
|
||||||
public void onSwitchHand(PlayerSwapHandItemsEvent event) {
|
|
||||||
Player player = event.getPlayer();
|
|
||||||
if (player.isSneaking() && player.hasPermission("keybindings.use") && settings.getProperty(PluginSettings.MENU_UNREGISTER_COMPATIBILITY)) {
|
|
||||||
event.setCancelled(true);
|
|
||||||
Bukkit.dispatchCommand(event.getPlayer(), "help");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -53,6 +53,9 @@ public class ServerListener implements Listener {
|
|||||||
} else if ("ProtocolLib".equalsIgnoreCase(pluginName)) {
|
} else if ("ProtocolLib".equalsIgnoreCase(pluginName)) {
|
||||||
protocolLibService.disable();
|
protocolLibService.disable();
|
||||||
logger.warning("ProtocolLib has been disabled, unhooking packet adapters!");
|
logger.warning("ProtocolLib has been disabled, unhooking packet adapters!");
|
||||||
|
} else if ("PlaceholderAPI".equalsIgnoreCase(pluginName)) {
|
||||||
|
pluginHookService.unhookPlaceholderApi();
|
||||||
|
logger.info("PlaceholderAPI has been disabled: unhooking placeholders");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -74,6 +77,8 @@ public class ServerListener implements Listener {
|
|||||||
spawnLoader.loadCmiSpawn();
|
spawnLoader.loadCmiSpawn();
|
||||||
} else if ("ProtocolLib".equalsIgnoreCase(pluginName)) {
|
} else if ("ProtocolLib".equalsIgnoreCase(pluginName)) {
|
||||||
protocolLibService.setup();
|
protocolLibService.setup();
|
||||||
|
} else if ("PlaceholderAPI".equalsIgnoreCase(pluginName)) {
|
||||||
|
pluginHookService.tryHookToPlaceholderApi();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,36 @@
|
|||||||
|
package fr.xephi.authme.listener.protocollib;
|
||||||
|
|
||||||
|
import com.comphenix.protocol.PacketType;
|
||||||
|
import com.comphenix.protocol.ProtocolLibrary;
|
||||||
|
import com.comphenix.protocol.events.ListenerPriority;
|
||||||
|
import com.comphenix.protocol.events.PacketAdapter;
|
||||||
|
import com.comphenix.protocol.events.PacketEvent;
|
||||||
|
import fr.xephi.authme.AuthMe;
|
||||||
|
import fr.xephi.authme.util.message.I18NUtils;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
class I18NGetLocalePacketAdapter extends PacketAdapter {
|
||||||
|
|
||||||
|
I18NGetLocalePacketAdapter(AuthMe plugin) {
|
||||||
|
super(plugin, ListenerPriority.NORMAL, PacketType.Play.Client.SETTINGS);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onPacketReceiving(PacketEvent event) {
|
||||||
|
if (event.getPacketType() == PacketType.Play.Client.SETTINGS) {
|
||||||
|
String locale = event.getPacket().getStrings().read(0).toLowerCase();
|
||||||
|
UUID uuid = event.getPlayer().getUniqueId();
|
||||||
|
|
||||||
|
I18NUtils.addLocale(uuid, locale);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void register() {
|
||||||
|
ProtocolLibrary.getProtocolManager().addPacketListener(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void unregister() {
|
||||||
|
ProtocolLibrary.getProtocolManager().removePacketListener(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -9,7 +9,9 @@ import fr.xephi.authme.initialization.SettingsDependent;
|
|||||||
import fr.xephi.authme.output.ConsoleLoggerFactory;
|
import fr.xephi.authme.output.ConsoleLoggerFactory;
|
||||||
import fr.xephi.authme.service.BukkitService;
|
import fr.xephi.authme.service.BukkitService;
|
||||||
import fr.xephi.authme.settings.Settings;
|
import fr.xephi.authme.settings.Settings;
|
||||||
|
import fr.xephi.authme.settings.properties.PluginSettings;
|
||||||
import fr.xephi.authme.settings.properties.RestrictionSettings;
|
import fr.xephi.authme.settings.properties.RestrictionSettings;
|
||||||
|
import fr.xephi.authme.util.Utils;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
@@ -22,10 +24,12 @@ public class ProtocolLibService implements SettingsDependent {
|
|||||||
/* Packet Adapters */
|
/* Packet Adapters */
|
||||||
private InventoryPacketAdapter inventoryPacketAdapter;
|
private InventoryPacketAdapter inventoryPacketAdapter;
|
||||||
private TabCompletePacketAdapter tabCompletePacketAdapter;
|
private TabCompletePacketAdapter tabCompletePacketAdapter;
|
||||||
|
private I18NGetLocalePacketAdapter i18nGetLocalePacketAdapter;
|
||||||
|
|
||||||
/* Settings */
|
/* Settings */
|
||||||
private boolean protectInvBeforeLogin;
|
private boolean protectInvBeforeLogin;
|
||||||
private boolean denyTabCompleteBeforeLogin;
|
private boolean denyTabCompleteBeforeLogin;
|
||||||
|
private boolean i18nMessagesSending;
|
||||||
|
|
||||||
/* Service */
|
/* Service */
|
||||||
private boolean isEnabled;
|
private boolean isEnabled;
|
||||||
@@ -58,6 +62,10 @@ public class ProtocolLibService implements SettingsDependent {
|
|||||||
logger.warning("WARNING! The denyTabComplete feature requires ProtocolLib! Disabling it...");
|
logger.warning("WARNING! The denyTabComplete feature requires ProtocolLib! Disabling it...");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (i18nMessagesSending) {
|
||||||
|
logger.warning("WARNING! The i18n Messages feature requires ProtocolLib on lower version (< 1.15.2)! Disabling it...");
|
||||||
|
}
|
||||||
|
|
||||||
this.isEnabled = false;
|
this.isEnabled = false;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -84,6 +92,16 @@ public class ProtocolLibService implements SettingsDependent {
|
|||||||
tabCompletePacketAdapter = null;
|
tabCompletePacketAdapter = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (i18nMessagesSending) {
|
||||||
|
if (i18nGetLocalePacketAdapter == null) {
|
||||||
|
i18nGetLocalePacketAdapter = new I18NGetLocalePacketAdapter(plugin);
|
||||||
|
i18nGetLocalePacketAdapter.register();
|
||||||
|
}
|
||||||
|
} else if (i18nGetLocalePacketAdapter != null) {
|
||||||
|
i18nGetLocalePacketAdapter.unregister();
|
||||||
|
i18nGetLocalePacketAdapter = null;
|
||||||
|
}
|
||||||
|
|
||||||
this.isEnabled = true;
|
this.isEnabled = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -101,6 +119,10 @@ public class ProtocolLibService implements SettingsDependent {
|
|||||||
tabCompletePacketAdapter.unregister();
|
tabCompletePacketAdapter.unregister();
|
||||||
tabCompletePacketAdapter = null;
|
tabCompletePacketAdapter = null;
|
||||||
}
|
}
|
||||||
|
if (i18nGetLocalePacketAdapter != null) {
|
||||||
|
i18nGetLocalePacketAdapter.unregister();
|
||||||
|
i18nGetLocalePacketAdapter = null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -120,6 +142,7 @@ public class ProtocolLibService implements SettingsDependent {
|
|||||||
|
|
||||||
this.protectInvBeforeLogin = settings.getProperty(RestrictionSettings.PROTECT_INVENTORY_BEFORE_LOGIN);
|
this.protectInvBeforeLogin = settings.getProperty(RestrictionSettings.PROTECT_INVENTORY_BEFORE_LOGIN);
|
||||||
this.denyTabCompleteBeforeLogin = settings.getProperty(RestrictionSettings.DENY_TABCOMPLETE_BEFORE_LOGIN);
|
this.denyTabCompleteBeforeLogin = settings.getProperty(RestrictionSettings.DENY_TABCOMPLETE_BEFORE_LOGIN);
|
||||||
|
this.i18nMessagesSending = settings.getProperty(PluginSettings.I18N_MESSAGES) && Utils.MAJOR_VERSION <= 15;
|
||||||
|
|
||||||
//it was true and will be deactivated now, so we need to restore the inventory for every player
|
//it was true and will be deactivated now, so we need to restore the inventory for every player
|
||||||
if (oldProtectInventory && !protectInvBeforeLogin && inventoryPacketAdapter != null) {
|
if (oldProtectInventory && !protectInvBeforeLogin && inventoryPacketAdapter != null) {
|
||||||
|
|||||||
@@ -8,12 +8,15 @@ import fr.xephi.authme.output.ConsoleLoggerFactory;
|
|||||||
import fr.xephi.authme.settings.Settings;
|
import fr.xephi.authme.settings.Settings;
|
||||||
import fr.xephi.authme.settings.properties.PluginSettings;
|
import fr.xephi.authme.settings.properties.PluginSettings;
|
||||||
import fr.xephi.authme.util.FileUtils;
|
import fr.xephi.authme.util.FileUtils;
|
||||||
|
import fr.xephi.authme.util.message.I18NUtils;
|
||||||
import org.bukkit.configuration.file.FileConfiguration;
|
import org.bukkit.configuration.file.FileConfiguration;
|
||||||
import org.bukkit.configuration.file.YamlConfiguration;
|
import org.bukkit.configuration.file.YamlConfiguration;
|
||||||
|
|
||||||
import javax.annotation.PostConstruct;
|
import javax.annotation.PostConstruct;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
|
||||||
import static fr.xephi.authme.message.MessagePathHelper.DEFAULT_LANGUAGE;
|
import static fr.xephi.authme.message.MessagePathHelper.DEFAULT_LANGUAGE;
|
||||||
|
|
||||||
@@ -33,6 +36,7 @@ public abstract class AbstractMessageFileHandler implements Reloadable {
|
|||||||
|
|
||||||
private String filename;
|
private String filename;
|
||||||
private FileConfiguration configuration;
|
private FileConfiguration configuration;
|
||||||
|
private Map<String, FileConfiguration> i18nConfiguration;
|
||||||
private final String defaultFile;
|
private final String defaultFile;
|
||||||
|
|
||||||
protected AbstractMessageFileHandler() {
|
protected AbstractMessageFileHandler() {
|
||||||
@@ -46,6 +50,7 @@ public abstract class AbstractMessageFileHandler implements Reloadable {
|
|||||||
filename = createFilePath(language);
|
filename = createFilePath(language);
|
||||||
File messagesFile = initializeFile(filename);
|
File messagesFile = initializeFile(filename);
|
||||||
configuration = YamlConfiguration.loadConfiguration(messagesFile);
|
configuration = YamlConfiguration.loadConfiguration(messagesFile);
|
||||||
|
i18nConfiguration = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected String getLanguage() {
|
protected String getLanguage() {
|
||||||
@@ -83,6 +88,24 @@ public abstract class AbstractMessageFileHandler implements Reloadable {
|
|||||||
: message;
|
: message;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the i18n message for the given key and given locale.
|
||||||
|
*
|
||||||
|
* @param key the key to retrieve the message for
|
||||||
|
* @param locale the locale that player client setting uses
|
||||||
|
* @return the message
|
||||||
|
*/
|
||||||
|
public String getMessageByLocale(String key, String locale) {
|
||||||
|
if (locale == null || !settings.getProperty(PluginSettings.I18N_MESSAGES)) {
|
||||||
|
return getMessage(key);
|
||||||
|
}
|
||||||
|
|
||||||
|
String message = getI18nConfiguration(locale).getString(key);
|
||||||
|
return message == null
|
||||||
|
? "Error retrieving message '" + key + "'"
|
||||||
|
: message;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the message for the given key only if it exists,
|
* Returns the message for the given key only if it exists,
|
||||||
* i.e. without falling back to the default file.
|
* i.e. without falling back to the default file.
|
||||||
@@ -94,6 +117,27 @@ public abstract class AbstractMessageFileHandler implements Reloadable {
|
|||||||
return configuration.getString(key);
|
return configuration.getString(key);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public FileConfiguration getI18nConfiguration(String locale) {
|
||||||
|
if (i18nConfiguration == null) {
|
||||||
|
i18nConfiguration = new ConcurrentHashMap<>();
|
||||||
|
}
|
||||||
|
|
||||||
|
locale = I18NUtils.localeToCode(locale, settings);
|
||||||
|
|
||||||
|
if (i18nConfiguration.containsKey(locale)) {
|
||||||
|
return i18nConfiguration.get(locale);
|
||||||
|
} else {
|
||||||
|
// Sync with reload();
|
||||||
|
String i18nFilename = createFilePath(locale);
|
||||||
|
File i18nMessagesFile = initializeFile(i18nFilename);
|
||||||
|
FileConfiguration config = YamlConfiguration.loadConfiguration(i18nMessagesFile);
|
||||||
|
|
||||||
|
i18nConfiguration.put(locale, config);
|
||||||
|
|
||||||
|
return config;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates the path to the messages file for the given language code.
|
* Creates the path to the messages file for the given language code.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -29,46 +29,6 @@ public enum MessageKey {
|
|||||||
*/
|
*/
|
||||||
BEDROCK_AUTO_LOGGED_IN("bedrock_auto_login.success"),
|
BEDROCK_AUTO_LOGGED_IN("bedrock_auto_login.success"),
|
||||||
|
|
||||||
/**
|
|
||||||
* %random Verification
|
|
||||||
*/
|
|
||||||
GUI_CAPTCHA_WINDOW_NAME("gui_captcha.captcha_window_name", "%random"),
|
|
||||||
|
|
||||||
/**
|
|
||||||
* %random I am human
|
|
||||||
*/
|
|
||||||
GUI_CAPTCHA_CLICKABLE_NAME("gui_captcha.captcha_clickable_name", "%random"),
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Verification failed, you have %times retries left
|
|
||||||
*/
|
|
||||||
GUI_CAPTCHA_RETRY_MESSAGE("gui_captcha.message_on_retry", "%times"),
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Bedrock verification success!
|
|
||||||
*/
|
|
||||||
GUI_CAPTCHA_VERIFIED_AUTO_BEDROCK("gui_captcha.bedrock_auto_verify_success"),
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Please be verified before chatting!
|
|
||||||
*/
|
|
||||||
GUI_CAPTCHA_DENIED_MESSAGE("gui_captcha.denied_message_sending"),
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Verification timed out!
|
|
||||||
*/
|
|
||||||
GUI_CAPTCHA_KICK_TIMEOUT("gui_captcha.kick_on_timeout"),
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Please complete the verification!
|
|
||||||
*/
|
|
||||||
GUI_CAPTCHA_KICK_FAILED("gui_captcha.kick_on_failed"),
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Verification success!
|
|
||||||
*/
|
|
||||||
GUI_CAPTCHA_VERIFIED("gui_captcha.success"),
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* In order to use this command you must be authenticated!
|
* In order to use this command you must be authenticated!
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -5,6 +5,8 @@ import fr.xephi.authme.ConsoleLogger;
|
|||||||
import fr.xephi.authme.mail.EmailService;
|
import fr.xephi.authme.mail.EmailService;
|
||||||
import fr.xephi.authme.output.ConsoleLoggerFactory;
|
import fr.xephi.authme.output.ConsoleLoggerFactory;
|
||||||
import fr.xephi.authme.util.expiring.Duration;
|
import fr.xephi.authme.util.expiring.Duration;
|
||||||
|
import fr.xephi.authme.util.message.I18NUtils;
|
||||||
|
import fr.xephi.authme.util.message.MiniMessageUtils;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
@@ -120,13 +122,16 @@ public class Messages {
|
|||||||
* @return The message from the file
|
* @return The message from the file
|
||||||
*/
|
*/
|
||||||
private String retrieveMessage(MessageKey key, CommandSender sender) {
|
private String retrieveMessage(MessageKey key, CommandSender sender) {
|
||||||
String message = messagesFileHandler.getMessage(key.getKey());
|
String locale = sender instanceof Player
|
||||||
|
? I18NUtils.getLocale((Player) sender)
|
||||||
|
: null;
|
||||||
|
String message = messagesFileHandler.getMessageByLocale(key.getKey(), locale);
|
||||||
String displayName = sender.getName();
|
String displayName = sender.getName();
|
||||||
if (sender instanceof Player) {
|
if (sender instanceof Player) {
|
||||||
displayName = ((Player) sender).getDisplayName();
|
displayName = ((Player) sender).getDisplayName();
|
||||||
}
|
}
|
||||||
|
|
||||||
return ChatColor.translateAlternateColorCodes('&', message)
|
return ChatColor.translateAlternateColorCodes('&', MiniMessageUtils.parseMiniMessageToLegacy(message))
|
||||||
.replace(NEWLINE_TAG, "\n")
|
.replace(NEWLINE_TAG, "\n")
|
||||||
.replace(USERNAME_TAG, sender.getName())
|
.replace(USERNAME_TAG, sender.getName())
|
||||||
.replace(DISPLAYNAME_TAG, displayName);
|
.replace(DISPLAYNAME_TAG, displayName);
|
||||||
@@ -142,7 +147,7 @@ public class Messages {
|
|||||||
private String retrieveMessage(MessageKey key, String name) {
|
private String retrieveMessage(MessageKey key, String name) {
|
||||||
String message = messagesFileHandler.getMessage(key.getKey());
|
String message = messagesFileHandler.getMessage(key.getKey());
|
||||||
|
|
||||||
return ChatColor.translateAlternateColorCodes('&', message)
|
return ChatColor.translateAlternateColorCodes('&', MiniMessageUtils.parseMiniMessageToLegacy(message))
|
||||||
.replace(NEWLINE_TAG, "\n")
|
.replace(NEWLINE_TAG, "\n")
|
||||||
.replace(USERNAME_TAG, name)
|
.replace(USERNAME_TAG, name)
|
||||||
.replace(DISPLAYNAME_TAG, name);
|
.replace(DISPLAYNAME_TAG, name);
|
||||||
|
|||||||
@@ -149,7 +149,6 @@ public class MessageUpdater {
|
|||||||
.put("verification", "Verification code")
|
.put("verification", "Verification code")
|
||||||
.put("time", "Time units")
|
.put("time", "Time units")
|
||||||
.put("two_factor", "Two-factor authentication")
|
.put("two_factor", "Two-factor authentication")
|
||||||
.put("gui_captcha", "3rd party features: GUI Captcha")
|
|
||||||
.put("bedrock_auto_login", "3rd party features: Bedrock Auto Login")
|
.put("bedrock_auto_login", "3rd party features: Bedrock Auto Login")
|
||||||
.put("login_location_fix", "3rd party features: Login Location Fix")
|
.put("login_location_fix", "3rd party features: Login Location Fix")
|
||||||
.put("double_login_fix", "3rd party features: Double Login Fix")
|
.put("double_login_fix", "3rd party features: Double Login Fix")
|
||||||
@@ -171,7 +170,7 @@ public class MessageUpdater {
|
|||||||
|
|
||||||
// Create ConfigurationData instance
|
// Create ConfigurationData instance
|
||||||
Map<String, List<String>> commentsMap = comments.entrySet().stream()
|
Map<String, List<String>> commentsMap = comments.entrySet().stream()
|
||||||
.collect(Collectors.toMap(e -> e.getKey(), e -> singletonList(e.getValue())));
|
.collect(Collectors.toMap(Map.Entry::getKey, e -> singletonList(e.getValue())));
|
||||||
return new MessageKeyConfigurationData(builder, commentsMap);
|
return new MessageKeyConfigurationData(builder, commentsMap);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -29,8 +29,6 @@ import fr.xephi.authme.util.PlayerUtils;
|
|||||||
import org.bukkit.GameMode;
|
import org.bukkit.GameMode;
|
||||||
import org.bukkit.Server;
|
import org.bukkit.Server;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.potion.PotionEffect;
|
|
||||||
import org.bukkit.potion.PotionEffectType;
|
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
@@ -137,6 +135,10 @@ public class AsynchronousJoin implements AsynchronousProcess {
|
|||||||
|
|
||||||
// Session logic
|
// Session logic
|
||||||
if (sessionService.canResumeSession(player)) {
|
if (sessionService.canResumeSession(player)) {
|
||||||
|
if (velocitySender.isEnabled()) {
|
||||||
|
bukkitService.scheduleSyncDelayedTask(() ->
|
||||||
|
velocitySender.sendAuthMeVelocityMessage(player, VMessageType.LOGIN), service.getProperty(HooksSettings.PROXY_SEND_DELAY));
|
||||||
|
}
|
||||||
service.send(player, MessageKey.SESSION_RECONNECTION);
|
service.send(player, MessageKey.SESSION_RECONNECTION);
|
||||||
// Run commands
|
// Run commands
|
||||||
bukkitService.scheduleSyncTaskFromOptionallyAsyncTask(
|
bukkitService.scheduleSyncTaskFromOptionallyAsyncTask(
|
||||||
@@ -204,7 +206,7 @@ public class AsynchronousJoin implements AsynchronousProcess {
|
|||||||
int blindTimeOut = (registrationTimeout <= 0) ? 99999 : registrationTimeout;
|
int blindTimeOut = (registrationTimeout <= 0) ? 99999 : registrationTimeout;
|
||||||
|
|
||||||
// AuthMeReReloaded - Fix potion apply on Folia
|
// AuthMeReReloaded - Fix potion apply on Folia
|
||||||
bukkitService.runTaskIfFolia(player,() -> player.addPotionEffect(new PotionEffect(PotionEffectType.BLINDNESS, blindTimeOut, 2)));
|
bukkitService.runTaskIfFolia(player, () -> player.addPotionEffect(bukkitService.createBlindnessEffect(blindTimeOut)));
|
||||||
}
|
}
|
||||||
commandManager.runCommandsOnJoin(player);
|
commandManager.runCommandsOnJoin(player);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -26,7 +26,6 @@ import fr.xephi.authme.service.CommonService;
|
|||||||
import fr.xephi.authme.service.SessionService;
|
import fr.xephi.authme.service.SessionService;
|
||||||
import fr.xephi.authme.service.bungeecord.BungeeSender;
|
import fr.xephi.authme.service.bungeecord.BungeeSender;
|
||||||
import fr.xephi.authme.service.bungeecord.MessageType;
|
import fr.xephi.authme.service.bungeecord.MessageType;
|
||||||
import fr.xephi.authme.service.velocity.VMessageType;
|
|
||||||
import fr.xephi.authme.service.velocity.VelocitySender;
|
import fr.xephi.authme.service.velocity.VelocitySender;
|
||||||
import fr.xephi.authme.settings.Settings;
|
import fr.xephi.authme.settings.Settings;
|
||||||
import fr.xephi.authme.settings.properties.DatabaseSettings;
|
import fr.xephi.authme.settings.properties.DatabaseSettings;
|
||||||
@@ -314,10 +313,6 @@ public class AsynchronousLogin implements AsynchronousProcess {
|
|||||||
bukkitService.scheduleSyncDelayedTask(() ->
|
bukkitService.scheduleSyncDelayedTask(() ->
|
||||||
bungeeSender.sendAuthMeBungeecordMessage(player, MessageType.LOGIN), settings.getProperty(HooksSettings.PROXY_SEND_DELAY));
|
bungeeSender.sendAuthMeBungeecordMessage(player, MessageType.LOGIN), settings.getProperty(HooksSettings.PROXY_SEND_DELAY));
|
||||||
}
|
}
|
||||||
if (velocitySender.isEnabled()) {
|
|
||||||
bukkitService.scheduleSyncDelayedTask(() ->
|
|
||||||
velocitySender.sendAuthMeVelocityMessage(player, VMessageType.LOGIN), settings.getProperty(HooksSettings.PROXY_SEND_DELAY));
|
|
||||||
}
|
|
||||||
|
|
||||||
// As the scheduling executes the Task most likely after the current
|
// As the scheduling executes the Task most likely after the current
|
||||||
// task, we schedule it in the end
|
// task, we schedule it in the end
|
||||||
|
|||||||
@@ -14,7 +14,10 @@ import fr.xephi.authme.service.CommonService;
|
|||||||
import fr.xephi.authme.service.JoinMessageService;
|
import fr.xephi.authme.service.JoinMessageService;
|
||||||
import fr.xephi.authme.service.TeleportationService;
|
import fr.xephi.authme.service.TeleportationService;
|
||||||
import fr.xephi.authme.service.bungeecord.BungeeSender;
|
import fr.xephi.authme.service.bungeecord.BungeeSender;
|
||||||
|
import fr.xephi.authme.service.velocity.VMessageType;
|
||||||
|
import fr.xephi.authme.service.velocity.VelocitySender;
|
||||||
import fr.xephi.authme.settings.commandconfig.CommandManager;
|
import fr.xephi.authme.settings.commandconfig.CommandManager;
|
||||||
|
import fr.xephi.authme.settings.properties.HooksSettings;
|
||||||
import fr.xephi.authme.settings.properties.RegistrationSettings;
|
import fr.xephi.authme.settings.properties.RegistrationSettings;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.potion.PotionEffectType;
|
import org.bukkit.potion.PotionEffectType;
|
||||||
@@ -30,6 +33,9 @@ public class ProcessSyncPlayerLogin implements SynchronousProcess {
|
|||||||
@Inject
|
@Inject
|
||||||
private BungeeSender bungeeSender;
|
private BungeeSender bungeeSender;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private VelocitySender velocitySender;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private LimboService limboService;
|
private LimboService limboService;
|
||||||
|
|
||||||
@@ -102,6 +108,13 @@ public class ProcessSyncPlayerLogin implements SynchronousProcess {
|
|||||||
player.removePotionEffect(PotionEffectType.BLINDNESS);
|
player.removePotionEffect(PotionEffectType.BLINDNESS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// AuthMeVelocity start - send on player login
|
||||||
|
if (velocitySender.isEnabled()) {
|
||||||
|
bukkitService.scheduleSyncDelayedTask(() ->
|
||||||
|
velocitySender.sendAuthMeVelocityMessage(player, VMessageType.LOGIN), commonService.getProperty(HooksSettings.PROXY_SEND_DELAY));
|
||||||
|
}
|
||||||
|
// AuthMeVelocity end
|
||||||
|
|
||||||
// The Login event now fires (as intended) after everything is processed
|
// The Login event now fires (as intended) after everything is processed
|
||||||
bukkitService.callEvent(new LoginEvent(player));
|
bukkitService.callEvent(new LoginEvent(player));
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,6 @@ import fr.xephi.authme.service.bungeecord.BungeeSender;
|
|||||||
import fr.xephi.authme.service.bungeecord.MessageType;
|
import fr.xephi.authme.service.bungeecord.MessageType;
|
||||||
import fr.xephi.authme.service.velocity.VMessageType;
|
import fr.xephi.authme.service.velocity.VMessageType;
|
||||||
import fr.xephi.authme.service.velocity.VelocitySender;
|
import fr.xephi.authme.service.velocity.VelocitySender;
|
||||||
import fr.xephi.authme.settings.properties.RestrictionSettings;
|
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
@@ -65,11 +64,11 @@ public class AsynchronousLogout implements AsynchronousProcess {
|
|||||||
PlayerAuth auth = playerCache.getAuth(name);
|
PlayerAuth auth = playerCache.getAuth(name);
|
||||||
database.updateSession(auth);
|
database.updateSession(auth);
|
||||||
// TODO: send an update when a messaging service will be implemented (SESSION)
|
// TODO: send an update when a messaging service will be implemented (SESSION)
|
||||||
if (service.getProperty(RestrictionSettings.SAVE_QUIT_LOCATION)) {
|
//if (service.getProperty(RestrictionSettings.SAVE_QUIT_LOCATION)) {
|
||||||
auth.setQuitLocation(player.getLocation());
|
auth.setQuitLocation(player.getLocation());
|
||||||
database.updateQuitLoc(auth);
|
database.updateQuitLoc(auth);
|
||||||
// TODO: send an update when a messaging service will be implemented (QUITLOC)
|
// TODO: send an update when a messaging service will be implemented (QUITLOC)
|
||||||
}
|
//} AuthMeReReloaded - Always save quit location
|
||||||
|
|
||||||
playerCache.removePlayer(name);
|
playerCache.removePlayer(name);
|
||||||
codeManager.unverify(name);
|
codeManager.unverify(name);
|
||||||
|
|||||||
@@ -14,8 +14,6 @@ import fr.xephi.authme.settings.commandconfig.CommandManager;
|
|||||||
import fr.xephi.authme.settings.properties.RegistrationSettings;
|
import fr.xephi.authme.settings.properties.RegistrationSettings;
|
||||||
import fr.xephi.authme.settings.properties.RestrictionSettings;
|
import fr.xephi.authme.settings.properties.RestrictionSettings;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.potion.PotionEffect;
|
|
||||||
import org.bukkit.potion.PotionEffectType;
|
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
|
||||||
@@ -75,7 +73,7 @@ public class ProcessSyncPlayerLogout implements SynchronousProcess {
|
|||||||
// Apply Blindness effect
|
// Apply Blindness effect
|
||||||
if (service.getProperty(RegistrationSettings.APPLY_BLIND_EFFECT)) {
|
if (service.getProperty(RegistrationSettings.APPLY_BLIND_EFFECT)) {
|
||||||
int timeout = service.getProperty(RestrictionSettings.TIMEOUT) * TICKS_PER_SECOND;
|
int timeout = service.getProperty(RestrictionSettings.TIMEOUT) * TICKS_PER_SECOND;
|
||||||
player.addPotionEffect(new PotionEffect(PotionEffectType.BLINDNESS, timeout, 2));
|
player.addPotionEffect(bukkitService.createBlindnessEffect(timeout));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set player's data to unauthenticated
|
// Set player's data to unauthenticated
|
||||||
|
|||||||
@@ -12,7 +12,6 @@ import fr.xephi.authme.service.SessionService;
|
|||||||
import fr.xephi.authme.service.ValidationService;
|
import fr.xephi.authme.service.ValidationService;
|
||||||
import fr.xephi.authme.settings.SpawnLoader;
|
import fr.xephi.authme.settings.SpawnLoader;
|
||||||
import fr.xephi.authme.settings.properties.PluginSettings;
|
import fr.xephi.authme.settings.properties.PluginSettings;
|
||||||
import fr.xephi.authme.settings.properties.RestrictionSettings;
|
|
||||||
import fr.xephi.authme.util.PlayerUtils;
|
import fr.xephi.authme.util.PlayerUtils;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
@@ -68,13 +67,16 @@ public class AsynchronousQuit implements AsynchronousProcess {
|
|||||||
boolean wasLoggedIn = playerCache.isAuthenticated(name);
|
boolean wasLoggedIn = playerCache.isAuthenticated(name);
|
||||||
|
|
||||||
if (wasLoggedIn) {
|
if (wasLoggedIn) {
|
||||||
if (service.getProperty(RestrictionSettings.SAVE_QUIT_LOCATION)) {
|
//if (service.getProperty(RestrictionSettings.SAVE_QUIT_LOCATION)) {
|
||||||
|
// AuthMeReReloaded - Always save quit location on quit
|
||||||
Location loc = spawnLoader.getPlayerLocationOrSpawn(player);
|
Location loc = spawnLoader.getPlayerLocationOrSpawn(player);
|
||||||
PlayerAuth auth = PlayerAuth.builder()
|
PlayerAuth authLoc = PlayerAuth.builder()
|
||||||
.name(name).location(loc)
|
.name(name).location(loc)
|
||||||
.realName(player.getName()).build();
|
.realName(player.getName()).build();
|
||||||
database.updateQuitLoc(auth);
|
database.updateQuitLoc(authLoc);
|
||||||
}
|
// AuthMeReReloaded - Fix AuthMe#2769 -1
|
||||||
|
//}
|
||||||
|
|
||||||
|
|
||||||
String ip = PlayerUtils.getPlayerIp(player);
|
String ip = PlayerUtils.getPlayerIp(player);
|
||||||
PlayerAuth auth = PlayerAuth.builder()
|
PlayerAuth auth = PlayerAuth.builder()
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ public class ProcessSyncPlayerQuit implements SynchronousProcess {
|
|||||||
} else {
|
} else {
|
||||||
limboService.restoreData(player);
|
limboService.restoreData(player);
|
||||||
if (!UniversalScheduler.isFolia) { // AuthMeReReloaded - Fix #146 (Very stupid solution, but works)
|
if (!UniversalScheduler.isFolia) { // AuthMeReReloaded - Fix #146 (Very stupid solution, but works)
|
||||||
player.saveData(); // #1238: Speed is sometimes not restored properly
|
// player.saveData(); // #1238: Speed is sometimes not restored properly
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
player.leaveVehicle();
|
player.leaveVehicle();
|
||||||
|
|||||||
@@ -23,8 +23,6 @@ import fr.xephi.authme.settings.properties.RegistrationSettings;
|
|||||||
import fr.xephi.authme.settings.properties.RestrictionSettings;
|
import fr.xephi.authme.settings.properties.RestrictionSettings;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.potion.PotionEffect;
|
|
||||||
import org.bukkit.potion.PotionEffectType;
|
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
|
||||||
@@ -150,7 +148,7 @@ public class AsynchronousUnregister implements AsynchronousProcess {
|
|||||||
private void applyBlindEffect(Player player) {
|
private void applyBlindEffect(Player player) {
|
||||||
if (service.getProperty(RegistrationSettings.APPLY_BLIND_EFFECT)) {
|
if (service.getProperty(RegistrationSettings.APPLY_BLIND_EFFECT)) {
|
||||||
int timeout = service.getProperty(RestrictionSettings.TIMEOUT) * TICKS_PER_SECOND;
|
int timeout = service.getProperty(RestrictionSettings.TIMEOUT) * TICKS_PER_SECOND;
|
||||||
player.addPotionEffect(new PotionEffect(PotionEffectType.BLINDNESS, timeout, 2));
|
bukkitService.runTaskIfFolia(player, () -> player.addPotionEffect(bukkitService.createBlindnessEffect(timeout)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ public enum HashAlgorithm {
|
|||||||
WORDPRESS(fr.xephi.authme.security.crypts.Wordpress.class),
|
WORDPRESS(fr.xephi.authme.security.crypts.Wordpress.class),
|
||||||
XAUTH(fr.xephi.authme.security.crypts.XAuth.class),
|
XAUTH(fr.xephi.authme.security.crypts.XAuth.class),
|
||||||
XFBCRYPT(fr.xephi.authme.security.crypts.XfBCrypt.class),
|
XFBCRYPT(fr.xephi.authme.security.crypts.XfBCrypt.class),
|
||||||
|
NOCRYPT(fr.xephi.authme.security.crypts.NoCrypt.class),
|
||||||
CUSTOM(null),
|
CUSTOM(null),
|
||||||
|
|
||||||
@Deprecated DOUBLEMD5(fr.xephi.authme.security.crypts.DoubleMd5.class),
|
@Deprecated DOUBLEMD5(fr.xephi.authme.security.crypts.DoubleMd5.class),
|
||||||
|
|||||||
@@ -0,0 +1,15 @@
|
|||||||
|
package fr.xephi.authme.security.crypts;
|
||||||
|
|
||||||
|
import fr.xephi.authme.security.crypts.description.Recommendation;
|
||||||
|
import fr.xephi.authme.security.crypts.description.Usage;
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
|
@Recommendation(Usage.DEPRECATED)
|
||||||
|
public class NoCrypt extends UnsaltedMethod {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String computeHash(String password) {
|
||||||
|
return password;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -18,6 +18,8 @@ import org.bukkit.configuration.file.YamlConfiguration;
|
|||||||
import org.bukkit.entity.Entity;
|
import org.bukkit.entity.Entity;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.Event;
|
import org.bukkit.event.Event;
|
||||||
|
import org.bukkit.potion.PotionEffect;
|
||||||
|
import org.bukkit.potion.PotionEffectType;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
@@ -327,6 +329,16 @@ public class BukkitService implements SettingsDependent {
|
|||||||
return event;
|
return event;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a PotionEffect with blindness for the given duration in ticks.
|
||||||
|
*
|
||||||
|
* @param timeoutInTicks duration of the effect in ticks
|
||||||
|
* @return blindness potion effect
|
||||||
|
*/
|
||||||
|
public PotionEffect createBlindnessEffect(int timeoutInTicks) {
|
||||||
|
return new PotionEffect(PotionEffectType.BLINDNESS, timeoutInTicks, 2);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the world with the given name.
|
* Gets the world with the given name.
|
||||||
*
|
*
|
||||||
@@ -380,7 +392,11 @@ public class BukkitService implements SettingsDependent {
|
|||||||
* @param bytes the message
|
* @param bytes the message
|
||||||
*/
|
*/
|
||||||
public void sendVelocityMessage(Player player, byte[] bytes) {
|
public void sendVelocityMessage(Player player, byte[] bytes) {
|
||||||
|
if (player != null) {
|
||||||
player.sendPluginMessage(authMe, "authmevelocity:main", bytes);
|
player.sendPluginMessage(authMe, "authmevelocity:main", bytes);
|
||||||
|
} else {
|
||||||
|
Bukkit.getServer().sendPluginMessage(authMe, "authmevelocity:main", bytes);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -6,6 +6,8 @@ import com.onarandombox.MultiverseCore.MultiverseCore;
|
|||||||
import com.onarandombox.MultiverseCore.api.MVWorldManager;
|
import com.onarandombox.MultiverseCore.api.MVWorldManager;
|
||||||
import fr.xephi.authme.ConsoleLogger;
|
import fr.xephi.authme.ConsoleLogger;
|
||||||
import fr.xephi.authme.output.ConsoleLoggerFactory;
|
import fr.xephi.authme.output.ConsoleLoggerFactory;
|
||||||
|
import fr.xephi.authme.service.hook.papi.AuthMeExpansion;
|
||||||
|
import me.clip.placeholderapi.PlaceholderAPIPlugin;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
@@ -26,6 +28,8 @@ public class PluginHookService {
|
|||||||
private Essentials essentials;
|
private Essentials essentials;
|
||||||
private Plugin cmi;
|
private Plugin cmi;
|
||||||
private MultiverseCore multiverse;
|
private MultiverseCore multiverse;
|
||||||
|
private PlaceholderAPIPlugin placeholderApi;
|
||||||
|
private AuthMeExpansion authMeExpansion;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor.
|
* Constructor.
|
||||||
@@ -38,6 +42,7 @@ public class PluginHookService {
|
|||||||
tryHookToEssentials();
|
tryHookToEssentials();
|
||||||
tryHookToCmi();
|
tryHookToCmi();
|
||||||
tryHookToMultiverse();
|
tryHookToMultiverse();
|
||||||
|
tryHookToPlaceholderApi();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -133,6 +138,20 @@ public class PluginHookService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attempts to create a hook into PlaceholderAPI.
|
||||||
|
*/
|
||||||
|
public void tryHookToPlaceholderApi() {
|
||||||
|
try {
|
||||||
|
placeholderApi = getPlugin(pluginManager, "PlaceholderAPI", PlaceholderAPIPlugin.class);
|
||||||
|
authMeExpansion = new AuthMeExpansion();
|
||||||
|
authMeExpansion.register();
|
||||||
|
} catch (Exception | NoClassDefFoundError ignored) {
|
||||||
|
placeholderApi = null;
|
||||||
|
authMeExpansion = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Attempts to create a hook into CMI.
|
* Attempts to create a hook into CMI.
|
||||||
*/
|
*/
|
||||||
@@ -180,6 +199,16 @@ public class PluginHookService {
|
|||||||
multiverse = null;
|
multiverse = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Unhooks from PlaceholderAPI.
|
||||||
|
*/
|
||||||
|
public void unhookPlaceholderApi() {
|
||||||
|
if (placeholderApi != null) {
|
||||||
|
authMeExpansion.unregister();
|
||||||
|
placeholderApi = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// ------
|
// ------
|
||||||
// Helpers
|
// Helpers
|
||||||
// ------
|
// ------
|
||||||
|
|||||||
@@ -14,7 +14,6 @@ import fr.xephi.authme.output.ConsoleLoggerFactory;
|
|||||||
import fr.xephi.authme.settings.Settings;
|
import fr.xephi.authme.settings.Settings;
|
||||||
import fr.xephi.authme.settings.SpawnLoader;
|
import fr.xephi.authme.settings.SpawnLoader;
|
||||||
import fr.xephi.authme.settings.properties.RestrictionSettings;
|
import fr.xephi.authme.settings.properties.RestrictionSettings;
|
||||||
import fr.xephi.authme.settings.properties.SecuritySettings;
|
|
||||||
import fr.xephi.authme.util.TeleportUtils;
|
import fr.xephi.authme.util.TeleportUtils;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
@@ -145,7 +144,7 @@ public class TeleportationService implements Reloadable {
|
|||||||
if (settings.getProperty(RestrictionSettings.SAVE_QUIT_LOCATION)) {
|
if (settings.getProperty(RestrictionSettings.SAVE_QUIT_LOCATION)) {
|
||||||
Location location = buildLocationFromAuth(player, auth);
|
Location location = buildLocationFromAuth(player, auth);
|
||||||
Location playerLoc = player.getLocation();
|
Location playerLoc = player.getLocation();
|
||||||
if (location.getX() == playerLoc.getX() && location.getY() == location.getY() && location.getZ() == playerLoc.getZ()
|
if (location.getX() == playerLoc.getX() && location.getY() == playerLoc.getY() && location.getZ() == playerLoc.getZ()
|
||||||
&& location.getWorld() == playerLoc.getWorld()) return;
|
&& location.getWorld() == playerLoc.getWorld()) return;
|
||||||
logger.debug("Teleporting `{0}` after login, based on the player auth", player.getName());
|
logger.debug("Teleporting `{0}` after login, based on the player auth", player.getName());
|
||||||
teleportBackFromSpawn(player, location);
|
teleportBackFromSpawn(player, location);
|
||||||
@@ -189,10 +188,8 @@ public class TeleportationService implements Reloadable {
|
|||||||
private void performTeleportation(final Player player, final AbstractTeleportEvent event) {
|
private void performTeleportation(final Player player, final AbstractTeleportEvent event) {
|
||||||
bukkitService.scheduleSyncTaskFromOptionallyAsyncTask(() -> {
|
bukkitService.scheduleSyncTaskFromOptionallyAsyncTask(() -> {
|
||||||
bukkitService.callEvent(event);
|
bukkitService.callEvent(event);
|
||||||
if (player.isOnline() && isEventValid(event) && settings.getProperty(SecuritySettings.SMART_ASYNC_TELEPORT)) {
|
if (player.isOnline() && isEventValid(event)) {
|
||||||
TeleportUtils.teleport(player, event.getTo());
|
TeleportUtils.teleport(player, event.getTo());
|
||||||
} else if (player.isOnline() && isEventValid(event)) {
|
|
||||||
player.teleport(event.getTo());
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,72 @@
|
|||||||
|
package fr.xephi.authme.service.hook.papi;
|
||||||
|
|
||||||
|
import fr.xephi.authme.AuthMe;
|
||||||
|
import fr.xephi.authme.api.v3.AuthMeApi;
|
||||||
|
import fr.xephi.authme.settings.Settings;
|
||||||
|
import fr.xephi.authme.settings.properties.HooksSettings;
|
||||||
|
import me.clip.placeholderapi.expansion.PlaceholderExpansion;
|
||||||
|
import org.bukkit.OfflinePlayer;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* AuthMe PlaceholderAPI expansion class.
|
||||||
|
* @author Kobe 8
|
||||||
|
*/
|
||||||
|
public class AuthMeExpansion extends PlaceholderExpansion {
|
||||||
|
private final Settings settings = AuthMe.settings;
|
||||||
|
@Override
|
||||||
|
public @NotNull String getIdentifier() {
|
||||||
|
return "authme";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull String getAuthor() {
|
||||||
|
return "HaHaWTH";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull String getVersion() {
|
||||||
|
return AuthMe.getPluginVersion();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean persist() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String onRequest(OfflinePlayer player, @NotNull String params) {
|
||||||
|
if (!settings.getProperty(HooksSettings.PLACEHOLDER_API)) return null;
|
||||||
|
AuthMeApi authMeApi = AuthMeApi.getInstance();
|
||||||
|
if (authMeApi == null) return null;
|
||||||
|
if (params.equalsIgnoreCase("version")) {
|
||||||
|
return getVersion();
|
||||||
|
}
|
||||||
|
if (params.equalsIgnoreCase("is_registered")) {
|
||||||
|
if (player != null) {
|
||||||
|
Player onlinePlayer = player.getPlayer();
|
||||||
|
if (onlinePlayer != null) {
|
||||||
|
return String.valueOf(authMeApi.isRegistered(onlinePlayer.getName()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (params.equalsIgnoreCase("is_authenticated")) {
|
||||||
|
if (player != null) {
|
||||||
|
Player onlinePlayer = player.getPlayer();
|
||||||
|
if (onlinePlayer != null) {
|
||||||
|
return String.valueOf(authMeApi.isAuthenticated(onlinePlayer));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (params.equalsIgnoreCase("last_login_time")) {
|
||||||
|
if (player != null) {
|
||||||
|
Player onlinePlayer = player.getPlayer();
|
||||||
|
if (onlinePlayer != null) {
|
||||||
|
return authMeApi.getLastLoginTime(onlinePlayer.getName()).toString();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -129,9 +129,9 @@ public class CommandManager implements Reloadable {
|
|||||||
if (predicate.test(cmd)) {
|
if (predicate.test(cmd)) {
|
||||||
long delay = cmd.getDelay();
|
long delay = cmd.getDelay();
|
||||||
if (delay > 0) {
|
if (delay > 0) {
|
||||||
bukkitService.scheduleSyncDelayedTask(() -> dispatchCommand(player, cmd), delay);
|
bukkitService.runTaskLater(player, () -> dispatchCommand(player, cmd), delay);
|
||||||
} else {
|
} else {
|
||||||
dispatchCommand(player, cmd);
|
bukkitService.runTaskIfFolia(player, () -> dispatchCommand(player, cmd));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,6 +15,10 @@ public final class HooksSettings implements SettingsHolder {
|
|||||||
public static final Property<Boolean> MULTIVERSE =
|
public static final Property<Boolean> MULTIVERSE =
|
||||||
newProperty("Hooks.multiverse", true);
|
newProperty("Hooks.multiverse", true);
|
||||||
|
|
||||||
|
@Comment("Do we need to hook with PlaceholderAPI for AuthMe placeholders?")
|
||||||
|
public static final Property<Boolean> PLACEHOLDER_API =
|
||||||
|
newProperty("Hooks.placeholderapi", false);
|
||||||
|
|
||||||
@Comment("Do we need to hook with BungeeCord?")
|
@Comment("Do we need to hook with BungeeCord?")
|
||||||
public static final Property<Boolean> BUNGEECORD =
|
public static final Property<Boolean> BUNGEECORD =
|
||||||
newProperty("Hooks.bungeecord", false);
|
newProperty("Hooks.bungeecord", false);
|
||||||
|
|||||||
@@ -5,16 +5,32 @@ import ch.jalu.configme.SettingsHolder;
|
|||||||
import ch.jalu.configme.properties.Property;
|
import ch.jalu.configme.properties.Property;
|
||||||
import fr.xephi.authme.output.LogLevel;
|
import fr.xephi.authme.output.LogLevel;
|
||||||
|
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import static ch.jalu.configme.properties.PropertyInitializer.newLowercaseStringSetProperty;
|
||||||
import static ch.jalu.configme.properties.PropertyInitializer.newProperty;
|
import static ch.jalu.configme.properties.PropertyInitializer.newProperty;
|
||||||
|
|
||||||
public final class PluginSettings implements SettingsHolder {
|
public final class PluginSettings implements SettingsHolder {
|
||||||
|
|
||||||
@Comment({
|
@Comment({
|
||||||
"Should we execute /help command when unregistered players press Shift+F?",
|
"Send i18n messages to player based on their client settings, this option will override `settings.messagesLanguage`",
|
||||||
"This keeps compatibility with some menu plugins",
|
"(Requires ProtocolLib)",
|
||||||
"If you are using TrMenu, don't enable this because TrMenu already implemented this."
|
"This will not affect language of AuthMe help command."
|
||||||
})
|
})
|
||||||
public static final Property<Boolean> MENU_UNREGISTER_COMPATIBILITY =
|
public static final Property<Boolean> I18N_MESSAGES =
|
||||||
newProperty("3rdPartyFeature.compatibility.menuPlugins", false);
|
newProperty("3rdPartyFeature.features.i18nMessages.enabled", false);
|
||||||
|
|
||||||
|
@Comment({"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'"})
|
||||||
|
public static final Property<Set<String>> I18N_CODE_REDIRECT =
|
||||||
|
newLowercaseStringSetProperty("3rdPartyFeature.features.i18nMessages.locale-code-redirect",
|
||||||
|
"tt_ru:ru", "lzh:zhcn");
|
||||||
|
|
||||||
@Comment({
|
@Comment({
|
||||||
"Do you want to enable the session feature?",
|
"Do you want to enable the session feature?",
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ public final class ProtectionSettings implements SettingsHolder {
|
|||||||
|
|
||||||
@Comment("Kicks the player that issued a command before the defined time after the join process")
|
@Comment("Kicks the player that issued a command before the defined time after the join process")
|
||||||
public static final Property<Integer> QUICK_COMMANDS_DENIED_BEFORE_MILLISECONDS =
|
public static final Property<Integer> QUICK_COMMANDS_DENIED_BEFORE_MILLISECONDS =
|
||||||
newProperty("Protection.quickCommands.denyCommandsBeforeMilliseconds", 3000);
|
newProperty("Protection.quickCommands.denyCommandsBeforeMilliseconds", 1000);
|
||||||
|
|
||||||
private ProtectionSettings() {
|
private ProtectionSettings() {
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -173,7 +173,7 @@ public final class RestrictionSettings implements SettingsHolder {
|
|||||||
|
|
||||||
@Comment("Regex syntax for allowed chars in email.")
|
@Comment("Regex syntax for allowed chars in email.")
|
||||||
public static final Property<String> ALLOWED_EMAIL_REGEX =
|
public static final Property<String> ALLOWED_EMAIL_REGEX =
|
||||||
newProperty("settings.restrictions.allowedEmailCharacters", "^[A-Za-z0-9_]{4,15}@(qq|outlook|163|gmail|icloud)\\.com$");
|
newProperty("settings.restrictions.allowedEmailCharacters", "^([a-zA-Z0-9_.+-]+)@([a-zA-Z0-9-]+)\\.([a-zA-Z]{2,})$");
|
||||||
|
|
||||||
|
|
||||||
@Comment("Force survival gamemode when player joins?")
|
@Comment("Force survival gamemode when player joins?")
|
||||||
@@ -205,6 +205,10 @@ public final class RestrictionSettings implements SettingsHolder {
|
|||||||
public static final Property<Set<String>> UNRESTRICTED_INVENTORIES =
|
public static final Property<Set<String>> UNRESTRICTED_INVENTORIES =
|
||||||
newLowercaseStringSetProperty("settings.unrestrictions.UnrestrictedInventories");
|
newLowercaseStringSetProperty("settings.unrestrictions.UnrestrictedInventories");
|
||||||
|
|
||||||
|
@Comment("Should we check unrestricted inventories strictly? (Original behavior)")
|
||||||
|
public static final Property<Boolean> STRICT_UNRESTRICTED_INVENTORIES_CHECK =
|
||||||
|
newProperty("settings.unrestrictions.StrictUnrestrictedInventoriesCheck", true);
|
||||||
|
|
||||||
|
|
||||||
private RestrictionSettings() {
|
private RestrictionSettings() {
|
||||||
|
|
||||||
|
|||||||
@@ -6,10 +6,8 @@ import ch.jalu.configme.properties.Property;
|
|||||||
import fr.xephi.authme.security.HashAlgorithm;
|
import fr.xephi.authme.security.HashAlgorithm;
|
||||||
import fr.xephi.authme.settings.EnumSetProperty;
|
import fr.xephi.authme.settings.EnumSetProperty;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import static ch.jalu.configme.properties.PropertyInitializer.newListProperty;
|
|
||||||
import static ch.jalu.configme.properties.PropertyInitializer.newLowercaseStringSetProperty;
|
import static ch.jalu.configme.properties.PropertyInitializer.newLowercaseStringSetProperty;
|
||||||
import static ch.jalu.configme.properties.PropertyInitializer.newProperty;
|
import static ch.jalu.configme.properties.PropertyInitializer.newProperty;
|
||||||
|
|
||||||
@@ -21,11 +19,6 @@ public final class SecuritySettings implements SettingsHolder {
|
|||||||
public static final Property<Boolean> STOP_SERVER_ON_PROBLEM =
|
public static final Property<Boolean> STOP_SERVER_ON_PROBLEM =
|
||||||
newProperty("Security.SQLProblem.stopServer", false);
|
newProperty("Security.SQLProblem.stopServer", false);
|
||||||
|
|
||||||
@Comment({"Should send GUI captcha by country code whitelist?",
|
|
||||||
"If the country of the player is in this list, the captcha won't be sent."})
|
|
||||||
public static final Property<List<String>> GUI_CAPTCHA_COUNTRY_WHITELIST =
|
|
||||||
newListProperty("3rdPartyFeature.features.captcha.whiteList");
|
|
||||||
|
|
||||||
@Comment({"Should we let Bedrock players login automatically?",
|
@Comment({"Should we let Bedrock players login automatically?",
|
||||||
"(Requires hookFloodgate to be true & floodgate loaded)",
|
"(Requires hookFloodgate to be true & floodgate loaded)",
|
||||||
"(**THIS IS SAFE DO NOT WORRY**)"})
|
"(**THIS IS SAFE DO NOT WORRY**)"})
|
||||||
@@ -48,25 +41,6 @@ public final class SecuritySettings implements SettingsHolder {
|
|||||||
public static final Property<Boolean> ADVANCED_SHULKER_FIX =
|
public static final Property<Boolean> ADVANCED_SHULKER_FIX =
|
||||||
newProperty("3rdPartyFeature.fixes.advancedShulkerFix", false);
|
newProperty("3rdPartyFeature.fixes.advancedShulkerFix", false);
|
||||||
|
|
||||||
@Comment({"Choose the best teleport method by server brand?",
|
|
||||||
"(Enable this if you are using Paper/Folia)"})
|
|
||||||
public static final Property<Boolean> SMART_ASYNC_TELEPORT =
|
|
||||||
newProperty("3rdPartyFeature.optimizes.smartAsyncTeleport", true);
|
|
||||||
|
|
||||||
@Comment("Send a GUI captcha to unregistered players?(Requires ProtocolLib)")
|
|
||||||
public static final Property<Boolean> GUI_CAPTCHA =
|
|
||||||
newProperty("3rdPartyFeature.features.captcha.guiCaptcha", false);
|
|
||||||
|
|
||||||
@Comment({"Should we kick the players when they don't finish the GUI captcha in seconds?",
|
|
||||||
"(less than or equals 0 is disabled)"})
|
|
||||||
public static final Property<Integer> GUI_CAPTCHA_TIMEOUT =
|
|
||||||
newProperty("3rdPartyFeature.features.captcha.timeOut", 0);
|
|
||||||
|
|
||||||
@Comment({"Should we ignore floodgate players when sending GUI captcha?",
|
|
||||||
"(Requires floodgate and hookFloodgate: true)"})
|
|
||||||
public static final Property<Boolean> GUI_CAPTCHA_BE_COMPATIBILITY =
|
|
||||||
newProperty("3rdPartyFeature.features.captcha.ignoreBedrock", false);
|
|
||||||
|
|
||||||
@Comment("Should we fix the location when players logged in the portal?")
|
@Comment("Should we fix the location when players logged in the portal?")
|
||||||
public static final Property<Boolean> LOGIN_LOC_FIX_SUB_PORTAL =
|
public static final Property<Boolean> LOGIN_LOC_FIX_SUB_PORTAL =
|
||||||
newProperty("3rdPartyFeature.fixes.loginLocationFix.fixPortalStuck", false);
|
newProperty("3rdPartyFeature.fixes.loginLocationFix.fixPortalStuck", false);
|
||||||
@@ -88,6 +62,11 @@ public final class SecuritySettings implements SettingsHolder {
|
|||||||
public static final Property<Integer> HAVE_I_BEEN_PWNED_LIMIT =
|
public static final Property<Integer> HAVE_I_BEEN_PWNED_LIMIT =
|
||||||
newProperty("Security.account.haveIBeenPwned.limit", 0);
|
newProperty("Security.account.haveIBeenPwned.limit", 0);
|
||||||
|
|
||||||
|
@Comment({"Require email verification when changing password if email feature enabled.",
|
||||||
|
"Original behavior is true"})
|
||||||
|
public static final Property<Boolean> CHANGE_PASSWORD_EMAIL_VERIFICATION_REQUIRED =
|
||||||
|
newProperty("Security.account.emailVerification.required", true);
|
||||||
|
|
||||||
@Comment("Enable captcha when a player uses wrong password too many times")
|
@Comment("Enable captcha when a player uses wrong password too many times")
|
||||||
public static final Property<Boolean> ENABLE_LOGIN_FAILURE_CAPTCHA =
|
public static final Property<Boolean> ENABLE_LOGIN_FAILURE_CAPTCHA =
|
||||||
newProperty("Security.captcha.useCaptcha", false);
|
newProperty("Security.captcha.useCaptcha", false);
|
||||||
@@ -127,7 +106,7 @@ public final class SecuritySettings implements SettingsHolder {
|
|||||||
@Comment({
|
@Comment({
|
||||||
"Possible values: SHA256, BCRYPT, BCRYPT2Y, PBKDF2, SALTEDSHA512,",
|
"Possible values: SHA256, BCRYPT, BCRYPT2Y, PBKDF2, SALTEDSHA512,",
|
||||||
"MYBB, IPB3, PHPBB, PHPFUSION, SMF, XENFORO, XAUTH, JOOMLA, WBB3, WBB4, MD5VB,",
|
"MYBB, IPB3, PHPBB, PHPFUSION, SMF, XENFORO, XAUTH, JOOMLA, WBB3, WBB4, MD5VB,",
|
||||||
"PBKDF2DJANGO, WORDPRESS, ROYALAUTH, ARGON2, CUSTOM (for developers only). See full list at",
|
"PBKDF2DJANGO, WORDPRESS, ROYALAUTH, ARGON2, NOCRYPT, CUSTOM (for developers only). See full list at",
|
||||||
"https://github.com/AuthMe/AuthMeReloaded/blob/master/docs/hash_algorithms.md",
|
"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"
|
"If you use ARGON2, check that you have the argon2 c library on your system"
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -0,0 +1,72 @@
|
|||||||
|
package fr.xephi.authme.task;
|
||||||
|
|
||||||
|
import com.google.gson.JsonObject;
|
||||||
|
import com.google.gson.JsonParser;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStreamReader;
|
||||||
|
import java.net.HttpURLConnection;
|
||||||
|
import java.net.URI;
|
||||||
|
import java.net.URL;
|
||||||
|
|
||||||
|
public class Updater {
|
||||||
|
private final String currentVersion;
|
||||||
|
private String latestVersion;
|
||||||
|
private static boolean isUpdateAvailable = false;
|
||||||
|
private static final String owner = "HaHaWTH";
|
||||||
|
private static final String repo = "AuthMeReReloaded";
|
||||||
|
private static final String UPDATE_URL = "https://api.github.com/repos/" + owner + "/" + repo + "/releases/latest";
|
||||||
|
|
||||||
|
public Updater(String currentVersion) {
|
||||||
|
this.currentVersion = currentVersion;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if there is an update available
|
||||||
|
* Note: This method will perform a network request!
|
||||||
|
*
|
||||||
|
* @return true if there is an update available, false otherwise
|
||||||
|
*/
|
||||||
|
public boolean isUpdateAvailable() {
|
||||||
|
URI uri = URI.create(UPDATE_URL);
|
||||||
|
try {
|
||||||
|
URL url = uri.toURL();
|
||||||
|
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
|
||||||
|
conn.setConnectTimeout(10000);
|
||||||
|
conn.setReadTimeout(10000);
|
||||||
|
conn.setRequestMethod("GET");
|
||||||
|
conn.setRequestProperty("Accept", "application/vnd.github+json");
|
||||||
|
try (InputStreamReader reader = new InputStreamReader(conn.getInputStream())) {
|
||||||
|
JsonObject jsonObject = new JsonParser().parse(reader).getAsJsonObject();
|
||||||
|
String latest = jsonObject.get("tag_name").getAsString();
|
||||||
|
latestVersion = latest;
|
||||||
|
isUpdateAvailable = !currentVersion.equals(latest);
|
||||||
|
reader.close();
|
||||||
|
return isUpdateAvailable;
|
||||||
|
}
|
||||||
|
} catch (IOException ignored) {
|
||||||
|
this.latestVersion = null;
|
||||||
|
isUpdateAvailable = false;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getLatestVersion() {
|
||||||
|
return latestVersion;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCurrentVersion() {
|
||||||
|
return currentVersion;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns true if there is an update available, false otherwise
|
||||||
|
* Must be called after {@link Updater#isUpdateAvailable()}
|
||||||
|
*
|
||||||
|
* @return A boolean indicating whether there is an update available
|
||||||
|
*/
|
||||||
|
public static boolean hasUpdate() {
|
||||||
|
return isUpdateAvailable;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -10,7 +10,7 @@ public final class PlayerUtils {
|
|||||||
// Utility class
|
// Utility class
|
||||||
private PlayerUtils() {
|
private PlayerUtils() {
|
||||||
}
|
}
|
||||||
private static final boolean IS_LEAVES_SERVER = Utils.isClassLoaded("top.leavesmc.leaves.LeavesConfig");
|
private static final boolean isLeavesServer = Utils.isClassLoaded("top.leavesmc.leaves.LeavesConfig") || Utils.isClassLoaded("org.leavesmc.leaves.LeavesConfig");
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the IP of the given player.
|
* Returns the IP of the given player.
|
||||||
@@ -29,7 +29,7 @@ public final class PlayerUtils {
|
|||||||
* @return True if the player is an NPC, false otherwise
|
* @return True if the player is an NPC, false otherwise
|
||||||
*/
|
*/
|
||||||
public static boolean isNpc(Player player) {
|
public static boolean isNpc(Player player) {
|
||||||
if (IS_LEAVES_SERVER) {
|
if (isLeavesServer) {
|
||||||
return player.hasMetadata("NPC") || player.getAddress() == null;
|
return player.hasMetadata("NPC") || player.getAddress() == null;
|
||||||
} else {
|
} else {
|
||||||
return player.hasMetadata("NPC");
|
return player.hasMetadata("NPC");
|
||||||
|
|||||||
@@ -3,24 +3,24 @@ package fr.xephi.authme.util;
|
|||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import java.lang.reflect.InvocationTargetException;
|
import java.lang.invoke.MethodHandle;
|
||||||
import java.lang.reflect.Method;
|
import java.lang.invoke.MethodHandles;
|
||||||
|
import java.lang.invoke.MethodType;
|
||||||
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This class is a utility class for handling async teleportation of players in game.
|
* This class is a utility class for handling async teleportation of players in game.
|
||||||
*/
|
*/
|
||||||
public class TeleportUtils {
|
public class TeleportUtils {
|
||||||
private static Method teleportAsyncMethod;
|
private static MethodHandle teleportAsyncMethodHandle;
|
||||||
|
|
||||||
static {
|
static {
|
||||||
try {//Detect Paper class
|
try {
|
||||||
Class<?> paperClass = Class.forName("com.destroystokyo.paper.PaperConfig");
|
MethodHandles.Lookup lookup = MethodHandles.lookup();
|
||||||
teleportAsyncMethod = Player.class.getMethod("teleportAsync", Location.class);
|
teleportAsyncMethodHandle = lookup.findVirtual(Player.class, "teleportAsync", MethodType.methodType(CompletableFuture.class, Location.class));
|
||||||
teleportAsyncMethod.setAccessible(true);
|
} catch (NoSuchMethodException | IllegalAccessException e) {
|
||||||
// if detected,use teleportAsync()
|
teleportAsyncMethodHandle = null;
|
||||||
} catch (ClassNotFoundException | NoSuchMethodException e) {
|
// if not, set method handle to null
|
||||||
teleportAsyncMethod = null;
|
|
||||||
//if not, set method to null
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -31,10 +31,10 @@ public class TeleportUtils {
|
|||||||
* @param location Where should the player be teleported
|
* @param location Where should the player be teleported
|
||||||
*/
|
*/
|
||||||
public static void teleport(Player player, Location location) {
|
public static void teleport(Player player, Location location) {
|
||||||
if (teleportAsyncMethod != null) {
|
if (teleportAsyncMethodHandle != null) {
|
||||||
try {
|
try {
|
||||||
teleportAsyncMethod.invoke(player, location);
|
teleportAsyncMethodHandle.invoke(player, location);
|
||||||
} catch (IllegalAccessException | InvocationTargetException e) {
|
} catch (Throwable throwable) {
|
||||||
player.teleport(location);
|
player.teleport(location);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package fr.xephi.authme.util;
|
|||||||
|
|
||||||
import fr.xephi.authme.ConsoleLogger;
|
import fr.xephi.authme.ConsoleLogger;
|
||||||
import fr.xephi.authme.output.ConsoleLoggerFactory;
|
import fr.xephi.authme.output.ConsoleLoggerFactory;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.command.ConsoleCommandSender;
|
import org.bukkit.command.ConsoleCommandSender;
|
||||||
@@ -107,4 +108,12 @@ public final class Utils {
|
|||||||
public static boolean isEmailEmpty(String email) {
|
public static boolean isEmailEmpty(String email) {
|
||||||
return StringUtils.isBlank(email) || "your@email.com".equalsIgnoreCase(email);
|
return StringUtils.isBlank(email) || "your@email.com".equalsIgnoreCase(email);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private final static String[] serverVersion = Bukkit.getServer().getBukkitVersion()
|
||||||
|
.substring(0, Bukkit.getServer().getBukkitVersion().indexOf("-"))
|
||||||
|
.split("\\.");
|
||||||
|
|
||||||
|
private final static int FIRST_VERSION = Integer.parseInt(serverVersion[0]);
|
||||||
|
public final static int MAJOR_VERSION = Integer.parseInt(serverVersion[1]);
|
||||||
|
public final static int MINOR_VERSION = serverVersion.length == 3 ? Integer.parseInt(serverVersion[2]) : 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,102 @@
|
|||||||
|
package fr.xephi.authme.util.message;
|
||||||
|
|
||||||
|
import fr.xephi.authme.settings.Settings;
|
||||||
|
import fr.xephi.authme.settings.properties.PluginSettings;
|
||||||
|
import fr.xephi.authme.util.Utils;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.UUID;
|
||||||
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
|
||||||
|
public class I18NUtils {
|
||||||
|
|
||||||
|
private static Map<UUID, String> PLAYER_LOCALE = new ConcurrentHashMap<>();
|
||||||
|
private static final Map<String, String> LOCALE_MAP = new HashMap<>();
|
||||||
|
private static final List<String> LOCALE_LIST = Arrays.asList(
|
||||||
|
"en", "bg", "de", "eo", "es", "et", "eu", "fi", "fr", "gl", "hu", "id", "it", "ja", "ko", "lt", "nl", "pl",
|
||||||
|
"pt", "ro", "ru", "sk", "sr", "tr", "uk"
|
||||||
|
);
|
||||||
|
|
||||||
|
static {
|
||||||
|
LOCALE_MAP.put("pt_br", "br");
|
||||||
|
LOCALE_MAP.put("cs_cz", "cz");
|
||||||
|
LOCALE_MAP.put("nds_de", "de");
|
||||||
|
LOCALE_MAP.put("sxu", "de");
|
||||||
|
LOCALE_MAP.put("swg", "de");
|
||||||
|
LOCALE_MAP.put("rpr", "ru");
|
||||||
|
LOCALE_MAP.put("sl_si", "si");
|
||||||
|
LOCALE_MAP.put("vi_vn", "vn");
|
||||||
|
LOCALE_MAP.put("lzh", "zhcn");
|
||||||
|
LOCALE_MAP.put("zh_cn", "zhcn");
|
||||||
|
LOCALE_MAP.put("zh_hk", "zhhk");
|
||||||
|
LOCALE_MAP.put("zh_tw", "zhtw");
|
||||||
|
//LOCALE_MAP.put("zhmc", "zhmc");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the locale that player uses.
|
||||||
|
*
|
||||||
|
* @param player The player
|
||||||
|
*/
|
||||||
|
public static String getLocale(Player player) {
|
||||||
|
if (Utils.MAJOR_VERSION > 15) {
|
||||||
|
return player.getLocale().toLowerCase();
|
||||||
|
} else if (PLAYER_LOCALE.containsKey(player.getUniqueId())) {
|
||||||
|
return PLAYER_LOCALE.get(player.getUniqueId());
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void addLocale(UUID uuid, String locale) {
|
||||||
|
if (PLAYER_LOCALE == null) {
|
||||||
|
PLAYER_LOCALE = new ConcurrentHashMap<>();
|
||||||
|
}
|
||||||
|
|
||||||
|
PLAYER_LOCALE.put(uuid, locale);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void removeLocale(UUID uuid) {
|
||||||
|
PLAYER_LOCALE.remove(uuid);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the AuthMe messages file language code, by given locale and settings.
|
||||||
|
* Dreeam - Hard mapping, based on mc1.20.6, 5/29/2024
|
||||||
|
*
|
||||||
|
* @param locale The locale that player client setting uses.
|
||||||
|
* @param settings The AuthMe settings, for default/fallback language usage.
|
||||||
|
*/
|
||||||
|
public static String localeToCode(String locale, Settings settings) {
|
||||||
|
// Certain locale code to AuthMe language code redirect
|
||||||
|
if (!settings.getProperty(PluginSettings.I18N_CODE_REDIRECT).isEmpty()) {
|
||||||
|
for (String raw : settings.getProperty(PluginSettings.I18N_CODE_REDIRECT)) {
|
||||||
|
String[] split = raw.split(":");
|
||||||
|
|
||||||
|
if (split.length == 2 && locale.equalsIgnoreCase(split[0])) {
|
||||||
|
return split[1];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Match certain locale code
|
||||||
|
if (LOCALE_MAP.containsKey(locale)) {
|
||||||
|
return LOCALE_MAP.get(locale);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (locale.contains("_")) {
|
||||||
|
locale = locale.substring(0, locale.indexOf("_"));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Match locale code with "_"
|
||||||
|
if (LOCALE_LIST.contains(locale)) {
|
||||||
|
return locale;
|
||||||
|
}
|
||||||
|
|
||||||
|
return settings.getProperty(PluginSettings.MESSAGES_LANGUAGE);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
package fr.xephi.authme.util.message;
|
||||||
|
|
||||||
|
import net.kyori.adventure.text.Component;
|
||||||
|
import net.kyori.adventure.text.minimessage.MiniMessage;
|
||||||
|
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
|
||||||
|
|
||||||
|
public class MiniMessageUtils {
|
||||||
|
private static final MiniMessage miniMessage = MiniMessage.miniMessage();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parse a MiniMessage string into a legacy string.
|
||||||
|
*
|
||||||
|
* @param message The message to parse.
|
||||||
|
* @return The parsed message.
|
||||||
|
*/
|
||||||
|
public static String parseMiniMessageToLegacy(String message) {
|
||||||
|
Component component = miniMessage.deserialize(message);
|
||||||
|
return LegacyComponentSerializer.legacyAmpersand().serialize(component);
|
||||||
|
}
|
||||||
|
private MiniMessageUtils() {
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -104,7 +104,7 @@
|
|||||||
<td>
|
<td>
|
||||||
<p style="color:#b0adc5;">© 2024 HomoCraft. All rights reserved.</p>
|
<p style="color:#b0adc5;">© 2024 HomoCraft. All rights reserved.</p>
|
||||||
<a href="1919810.com" target="_blank"
|
<a href="1919810.com" target="_blank"
|
||||||
style="text-decoration: none; font-size: 16px">wdsj.in</a>
|
style="text-decoration: none; font-size: 16px">example.com</a>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ registration:
|
|||||||
name_taken: '&cПотребителското име е заетo!'
|
name_taken: '&cПотребителското име е заетo!'
|
||||||
register_request: '&3Моля регистрирайте се с: /register парола парола.'
|
register_request: '&3Моля регистрирайте се с: /register парола парола.'
|
||||||
command_usage: '&cКоманда: /register парола парола'
|
command_usage: '&cКоманда: /register парола парола'
|
||||||
reg_only: '&4Само регистрирани потребители могат да влизат в сървъра! Моля посетете http://example.com, за да се регистрирате!'
|
reg_only: '&4Само регистрирани потребители могат да влизат в сървъра! Моля посетете https://example.com, за да се регистрирате!'
|
||||||
success: '&2Успешна регистрация!'
|
success: '&2Успешна регистрация!'
|
||||||
kicked_admin_registered: 'Вие бяхте регистриран от администратора, моля да влезете отново!'
|
kicked_admin_registered: 'Вие бяхте регистриран от администратора, моля да влезете отново!'
|
||||||
|
|
||||||
@@ -20,6 +20,7 @@ password:
|
|||||||
unsafe_password: '&cИзбраната парола не е безопасна, моля изберете друга парола.'
|
unsafe_password: '&cИзбраната парола не е безопасна, моля изберете друга парола.'
|
||||||
forbidden_characters: '&4Паролата съдържа непозволени символи. Позволени символи: %valid_chars'
|
forbidden_characters: '&4Паролата съдържа непозволени символи. Позволени символи: %valid_chars'
|
||||||
wrong_length: '&cПаролата е твърде къса или прекалено дълга! Моля опитайте с друга парола.'
|
wrong_length: '&cПаролата е твърде къса или прекалено дълга! Моля опитайте с друга парола.'
|
||||||
|
pwned_password: '&cИзбраната парола не е сигурна. Тя е използвана %pwned_count пъти вече! Моля, използвайте силна парола...'
|
||||||
|
|
||||||
# Login
|
# Login
|
||||||
login:
|
login:
|
||||||
@@ -40,7 +41,7 @@ error:
|
|||||||
max_registration: '&cВие сте достигнали максималният брой регистрации (%reg_count/%max_acc %reg_names)!'
|
max_registration: '&cВие сте достигнали максималният брой регистрации (%reg_count/%max_acc %reg_names)!'
|
||||||
logged_in: '&cВече сте влезли!'
|
logged_in: '&cВече сте влезли!'
|
||||||
kick_for_vip: '&3VIP потребител влезе докато сървъра беше пълен, вие бяхте изгонен!'
|
kick_for_vip: '&3VIP потребител влезе докато сървъра беше пълен, вие бяхте изгонен!'
|
||||||
# TODO kick_unresolved_hostname: '&cAn error occurred: unresolved player hostname!'
|
kick_unresolved_hostname: '&cВъзникна грешка: неразрешено име на играч!'
|
||||||
tempban_max_logins: '&cВие бяхте баннат временно, понеже сте си сгрешили паролата прекалено много пъти.'
|
tempban_max_logins: '&cВие бяхте баннат временно, понеже сте си сгрешили паролата прекалено много пъти.'
|
||||||
|
|
||||||
# AntiBot
|
# AntiBot
|
||||||
@@ -57,6 +58,7 @@ unregister:
|
|||||||
# Other messages
|
# Other messages
|
||||||
misc:
|
misc:
|
||||||
account_not_activated: '&cВашият акаунт все още не е актириван, моля провете своят email адрес!'
|
account_not_activated: '&cВашият акаунт все още не е актириван, моля провете своят email адрес!'
|
||||||
|
not_activated: '&cАкаунтът не е активиран, моля регистрирайте се и го активирайте преди да опитате отново.'
|
||||||
password_changed: '&2Паротала е променена успешно!'
|
password_changed: '&2Паротала е променена успешно!'
|
||||||
logout: '&2Излязохте успешно!'
|
logout: '&2Излязохте успешно!'
|
||||||
reload: '&2Конфигурацията и база данните бяха презаредени правилно!'
|
reload: '&2Конфигурацията и база данните бяха презаредени правилно!'
|
||||||
@@ -155,3 +157,17 @@ two_factor:
|
|||||||
not_enabled_error: 'Защитата със секретен код не е включена за Вашият акаунт. Моля изпълнете команда /2fa add'
|
not_enabled_error: 'Защитата със секретен код не е включена за Вашият акаунт. Моля изпълнете команда /2fa add'
|
||||||
removed_success: 'Успешно изключихте защитата със секретен код от Вашият акаунт!'
|
removed_success: 'Успешно изключихте защитата със секретен код от Вашият акаунт!'
|
||||||
invalid_code: 'Невалиден код!'
|
invalid_code: 'Невалиден код!'
|
||||||
|
|
||||||
|
# 3rd party features: Bedrock Auto Login
|
||||||
|
bedrock_auto_login:
|
||||||
|
success: '&aУспешно автоматично влизане за Bedrock!'
|
||||||
|
|
||||||
|
# 3rd party features: Login Location Fix
|
||||||
|
login_location_fix:
|
||||||
|
fix_portal: '&aЗаседнали сте в портал по време на влизане.'
|
||||||
|
fix_underground: '&aЗаседнали сте под земята по време на влизане.'
|
||||||
|
cannot_fix_underground: '&aЗаседнали сте под земята по време на влизане, но не можем да го поправим.'
|
||||||
|
|
||||||
|
# 3rd party features: Double Login Fix
|
||||||
|
double_login_fix:
|
||||||
|
fix_message: '&cБяхте изключени поради двойно влизане.'
|
||||||
|
|||||||
@@ -8,13 +8,13 @@
|
|||||||
|
|
||||||
# Registro
|
# Registro
|
||||||
registration:
|
registration:
|
||||||
|
disabled: '&cRegistrar-se está desativado neste servidor!'
|
||||||
|
name_taken: '&cVocê já registrou este nome de usuário!'
|
||||||
register_request: '&3Por favor, registre-se com o comando "/register <senha> <senha>"'
|
register_request: '&3Por favor, registre-se com o comando "/register <senha> <senha>"'
|
||||||
command_usage: '&cUse: /register <senha> <senha>'
|
command_usage: '&cUse: /register <senha> <senha>'
|
||||||
reg_only: '&4Somente usuários registrados podem entrar no servidor! Por favor visite www.seusite.com para se registrar!'
|
reg_only: '&4Somente usuários registrados podem entrar no servidor! Por favor visite www.seusite.com para se registrar!'
|
||||||
success: '&2Registrado com sucesso!'
|
success: '&2Registrado com sucesso!'
|
||||||
kicked_admin_registered: 'Um administrador registrou você. Por favor, faça login novamente'
|
kicked_admin_registered: 'Um administrador registrou você. Por favor, faça login novamente'
|
||||||
disabled: '&cRegistrar-se está desativado neste servidor!'
|
|
||||||
name_taken: '&cVocê já registrou este nome de usuário!'
|
|
||||||
|
|
||||||
# Erros de senha ao registrar-se
|
# Erros de senha ao registrar-se
|
||||||
password:
|
password:
|
||||||
@@ -23,6 +23,7 @@ password:
|
|||||||
unsafe_password: '&cA senha escolhida não é segura. Por favor, escolha outra senha...'
|
unsafe_password: '&cA senha escolhida não é segura. Por favor, escolha outra senha...'
|
||||||
forbidden_characters: '&Sua senha contém caracteres inválidos. Caracteres permitidos: %valid_chars'
|
forbidden_characters: '&Sua senha contém caracteres inválidos. Caracteres permitidos: %valid_chars'
|
||||||
wrong_length: '&cSua senha é muito curta ou muito longa! Por favor, escolha outra senha...'
|
wrong_length: '&cSua senha é muito curta ou muito longa! Por favor, escolha outra senha...'
|
||||||
|
pwned_password: '&cSua senha escolhida não é segura. Ela foi usada %pwned_count vezes já! Por favor, use uma senha forte...'
|
||||||
|
|
||||||
# Login
|
# Login
|
||||||
login:
|
login:
|
||||||
@@ -34,17 +35,17 @@ login:
|
|||||||
|
|
||||||
# Erros
|
# Erros
|
||||||
error:
|
error:
|
||||||
unregistered_user: '&cEste usuário não está registrado!'
|
|
||||||
denied_command: '&cPara utilizar este comando é necessário estar logado!'
|
denied_command: '&cPara utilizar este comando é necessário estar logado!'
|
||||||
denied_chat: '&cPara utilizar o chat é necessário estar logado!'
|
denied_chat: '&cPara utilizar o chat é necessário estar logado!'
|
||||||
|
unregistered_user: '&cEste usuário não está registrado!'
|
||||||
not_logged_in: '&cVocê não está logado!'
|
not_logged_in: '&cVocê não está logado!'
|
||||||
tempban_max_logins: '&cVocê foi temporariamente banido por tentar fazer login muitas vezes.'
|
|
||||||
max_registration: '&cVocê excedeu o número máximo de registros (%reg_count/%max_acc %reg_names) para o seu IP!'
|
|
||||||
no_permission: '&4Você não tem permissão para executar esta ação!'
|
no_permission: '&4Você não tem permissão para executar esta ação!'
|
||||||
unexpected_error: '&4Ocorreu um erro inesperado. Por favor contate um administrador!'
|
unexpected_error: '&4Ocorreu um erro inesperado. Por favor contate um administrador!'
|
||||||
kick_for_vip: '&3Um jogador VIP juntou-se ao servidor enquanto ele estava cheio!'
|
max_registration: '&cVocê excedeu o número máximo de registros (%reg_count/%max_acc %reg_names) para o seu IP!'
|
||||||
logged_in: '&cVocê já está logado!'
|
logged_in: '&cVocê já está logado!'
|
||||||
|
kick_for_vip: '&3Um jogador VIP juntou-se ao servidor enquanto ele estava cheio!'
|
||||||
kick_unresolved_hostname: '&cErro: hostname do jogador não resolvido!'
|
kick_unresolved_hostname: '&cErro: hostname do jogador não resolvido!'
|
||||||
|
tempban_max_logins: '&cVocê foi temporariamente banido por tentar fazer login muitas vezes.'
|
||||||
|
|
||||||
# AntiBot
|
# AntiBot
|
||||||
antibot:
|
antibot:
|
||||||
@@ -59,13 +60,14 @@ unregister:
|
|||||||
|
|
||||||
# Outras mensagens
|
# Outras mensagens
|
||||||
misc:
|
misc:
|
||||||
accounts_owned_self: 'Você tem %count contas:'
|
|
||||||
accounts_owned_other: 'O jogador %name tem %count contas:'
|
|
||||||
account_not_activated: '&cA sua conta ainda não está ativada. Por favor, verifique seus e-mails!'
|
account_not_activated: '&cA sua conta ainda não está ativada. Por favor, verifique seus e-mails!'
|
||||||
|
not_activated: '&cConta não ativada, por favor registre e ative antes de tentar novamente.'
|
||||||
password_changed: '&2Senha alterada com sucesso!'
|
password_changed: '&2Senha alterada com sucesso!'
|
||||||
logout: '&2Desconectado com sucesso!'
|
logout: '&2Desconectado com sucesso!'
|
||||||
reload: '&2A configuração e o banco de dados foram recarregados corretamente!'
|
reload: '&2A configuração e o banco de dados foram recarregados corretamente!'
|
||||||
usage_change_password: '&cUse: /changepassword <senhaVelha> <senhaNova>'
|
usage_change_password: '&cUse: /changepassword <senhaVelha> <senhaNova>'
|
||||||
|
accounts_owned_self: 'Você tem %count contas:'
|
||||||
|
accounts_owned_other: 'O jogador %name tem %count contas:'
|
||||||
|
|
||||||
# Mensagens de sessão
|
# Mensagens de sessão
|
||||||
session:
|
session:
|
||||||
@@ -74,36 +76,36 @@ session:
|
|||||||
|
|
||||||
# Mensagens de erro ao entrar
|
# Mensagens de erro ao entrar
|
||||||
on_join_validation:
|
on_join_validation:
|
||||||
|
same_ip_online: 'Um jogador com o mesmo IP já está no servidor!'
|
||||||
|
same_nick_online: '&4Alguém com o mesmo nome de usuário já está jogando no servidor!'
|
||||||
name_length: '&4Seu nome de usuário ou é muito curto ou é muito longo!'
|
name_length: '&4Seu nome de usuário ou é muito curto ou é muito longo!'
|
||||||
characters_in_name: '&4Seu nome de usuário contém caracteres inválidos. Caracteres permitidos: %valid_chars'
|
characters_in_name: '&4Seu nome de usuário contém caracteres inválidos. Caracteres permitidos: %valid_chars'
|
||||||
|
kick_full_server: '&4O servidor está cheio, tente novamente mais tarde!'
|
||||||
country_banned: '&4O seu país está banido deste servidor!'
|
country_banned: '&4O seu país está banido deste servidor!'
|
||||||
not_owner_error: 'Você não é o proprietário da conta. Por favor, escolha outro nome!'
|
not_owner_error: 'Você não é o proprietário da conta. Por favor, escolha outro nome!'
|
||||||
kick_full_server: '&4O servidor está cheio, tente novamente mais tarde!'
|
|
||||||
same_nick_online: '&4Alguém com o mesmo nome de usuário já está jogando no servidor!'
|
|
||||||
invalid_name_case: 'Você deve entrar usando o nome de usuário %valid, não %invalid.'
|
invalid_name_case: 'Você deve entrar usando o nome de usuário %valid, não %invalid.'
|
||||||
same_ip_online: 'Um jogador com o mesmo IP já está no servidor!'
|
|
||||||
quick_command: 'Você usou o comando muito rápido! Por favor, entre no servidor e aguarde antes de usar um comando novamente.'
|
quick_command: 'Você usou o comando muito rápido! Por favor, entre no servidor e aguarde antes de usar um comando novamente.'
|
||||||
|
|
||||||
# E-mail
|
# E-mail
|
||||||
email:
|
email:
|
||||||
|
add_email_request: '&3Por favor, adicione seu e-mail para a sua conta com o comando "/email add <seuEmail> <seuEmail>"'
|
||||||
usage_email_add: '&cUse: /email add <email> <email>'
|
usage_email_add: '&cUse: /email add <email> <email>'
|
||||||
usage_email_change: '&cUse: /email change <emailAntigo> <novoEmail>'
|
usage_email_change: '&cUse: /email change <emailAntigo> <novoEmail>'
|
||||||
new_email_invalid: '&cE-mail novo inválido, tente novamente!'
|
new_email_invalid: '&cE-mail novo inválido, tente novamente!'
|
||||||
old_email_invalid: '&cE-mail antigo inválido, tente novamente!'
|
old_email_invalid: '&cE-mail antigo inválido, tente novamente!'
|
||||||
invalid: '&E-mail inválido, tente novamente!'
|
invalid: '&E-mail inválido, tente novamente!'
|
||||||
added: '&2E-mail adicionado com sucesso!'
|
added: '&2E-mail adicionado com sucesso!'
|
||||||
|
add_not_allowed: '&cAdicionar um e-mail não é permitido.'
|
||||||
request_confirmation: '&cPor favor, confirme o seu endereço de e-mail!'
|
request_confirmation: '&cPor favor, confirme o seu endereço de e-mail!'
|
||||||
changed: '&2E-mail alterado com sucesso!'
|
changed: '&2E-mail alterado com sucesso!'
|
||||||
|
change_not_allowed: '&cAlterar o e-mail não é permitido.'
|
||||||
email_show: '&2O seu endereço de e-mail atual é: &f%email'
|
email_show: '&2O seu endereço de e-mail atual é: &f%email'
|
||||||
incomplete_settings: 'Erro: Nem todas as configurações necessárias estão definidas para o envio de e-mails. Entre em contato com um administrador.'
|
|
||||||
already_used: '&4O endereço de e-mail já está sendo usado'
|
|
||||||
send_failure: '&cO e-mail não pôde ser enviado, reporte isso a um administrador!'
|
|
||||||
no_email_for_account: '&2Você atualmente não têm endereço de e-mail associado a esta conta.'
|
no_email_for_account: '&2Você atualmente não têm endereço de e-mail associado a esta conta.'
|
||||||
add_email_request: '&3Por favor, adicione seu e-mail para a sua conta com o comando "/email add <seuEmail> <seuEmail>"'
|
already_used: '&4O endereço de e-mail já está sendo usado'
|
||||||
|
incomplete_settings: 'Erro: Nem todas as configurações necessárias estão definidas para o envio de e-mails. Entre em contato com um administrador.'
|
||||||
|
send_failure: '&cO e-mail não pôde ser enviado, reporte isso a um administrador!'
|
||||||
change_password_expired: 'Você não pode mais usar esse comando de recuperação de senha!'
|
change_password_expired: 'Você não pode mais usar esse comando de recuperação de senha!'
|
||||||
email_cooldown_error: '&cUm e-mail já foi enviado, espere %time antes de enviar novamente!'
|
email_cooldown_error: '&cUm e-mail já foi enviado, espere %time antes de enviar novamente!'
|
||||||
add_not_allowed: '&cAdicionar um e-mail não é permitido.'
|
|
||||||
change_not_allowed: '&cAlterar o e-mail não é permitido.'
|
|
||||||
|
|
||||||
# Recuperação de senha por e-mail
|
# Recuperação de senha por e-mail
|
||||||
recovery:
|
recovery:
|
||||||
@@ -135,6 +137,17 @@ verification:
|
|||||||
code_expired: '&3O seu código expirou! Execute outro comando sensível para gerar um outro código.'
|
code_expired: '&3O seu código expirou! Execute outro comando sensível para gerar um outro código.'
|
||||||
email_needed: '&3Para verificar sua identidade, você precisa vincular um e-mail à sua conta!'
|
email_needed: '&3Para verificar sua identidade, você precisa vincular um e-mail à sua conta!'
|
||||||
|
|
||||||
|
# Unidades de tempo
|
||||||
|
time:
|
||||||
|
second: 'segundo'
|
||||||
|
seconds: 'segundos'
|
||||||
|
minute: 'minuto'
|
||||||
|
minutes: 'minutos'
|
||||||
|
hour: 'hora'
|
||||||
|
hours: 'horas'
|
||||||
|
day: 'dia'
|
||||||
|
days: 'dias'
|
||||||
|
|
||||||
# Verificação em duas etapas
|
# Verificação em duas etapas
|
||||||
two_factor:
|
two_factor:
|
||||||
code_created: '&2O seu código secreto é %code. Você pode verificá-lo aqui %url'
|
code_created: '&2O seu código secreto é %code. Você pode verificá-lo aqui %url'
|
||||||
@@ -148,13 +161,16 @@ two_factor:
|
|||||||
removed_success: 'Verificação em duas etapas desativada com sucesso!'
|
removed_success: 'Verificação em duas etapas desativada com sucesso!'
|
||||||
invalid_code: 'Código inválido!'
|
invalid_code: 'Código inválido!'
|
||||||
|
|
||||||
# Unidades de tempo
|
# 3rd party features: Bedrock Auto Login
|
||||||
time:
|
bedrock_auto_login:
|
||||||
second: 'segundo'
|
success: '&aLogin automático Bedrock bem-sucedido!'
|
||||||
seconds: 'segundos'
|
|
||||||
minute: 'minuto'
|
# 3rd party features: Login Location Fix
|
||||||
minutes: 'minutos'
|
login_location_fix:
|
||||||
hour: 'hora'
|
fix_portal: '&aVocê está preso no portal durante o login.'
|
||||||
hours: 'horas'
|
fix_underground: '&aVocê está preso no subsolo durante o login.'
|
||||||
day: 'dia'
|
cannot_fix_underground: '&aVocê está preso no subsolo durante o login, mas não podemos corrigir.'
|
||||||
days: 'dias'
|
|
||||||
|
# 3rd party features: Double Login Fix
|
||||||
|
double_login_fix:
|
||||||
|
fix_message: '&cVocê foi desconectado devido a login duplo.'
|
||||||
|
|||||||
@@ -19,7 +19,8 @@ password:
|
|||||||
name_in_password: '&cNemůžeš použít své jméno jako heslo, prosím, zvol si jiné heslo...'
|
name_in_password: '&cNemůžeš použít své jméno jako heslo, prosím, zvol si jiné heslo...'
|
||||||
unsafe_password: '&cToto heslo není bezpečné, prosím, zvol si jiné heslo...'
|
unsafe_password: '&cToto heslo není bezpečné, prosím, zvol si jiné heslo...'
|
||||||
forbidden_characters: '&4Tvoje heslo obsahuje nepovolené znaky. Přípustné znaky jsou: %valid_chars'
|
forbidden_characters: '&4Tvoje heslo obsahuje nepovolené znaky. Přípustné znaky jsou: %valid_chars'
|
||||||
wrong_length: '&cTvoje heslo nedosahuje minimální délky (4).'
|
wrong_length: '&cTvoje heslo nedosahuje minimální délky.'
|
||||||
|
pwned_password: '&cZvolené heslo není bezpečné. Bylo použito již %pwned_count krát! Prosím, použijte silné heslo...'
|
||||||
|
|
||||||
# Login
|
# Login
|
||||||
login:
|
login:
|
||||||
@@ -57,6 +58,7 @@ unregister:
|
|||||||
# Other messages
|
# Other messages
|
||||||
misc:
|
misc:
|
||||||
account_not_activated: '&cTvůj účet ještě není aktivovaný, zkontroluj svůj E-mail.'
|
account_not_activated: '&cTvůj účet ještě není aktivovaný, zkontroluj svůj E-mail.'
|
||||||
|
not_activated: '&cÚčet není aktivován, prosím zaregistrujte se a aktivujte ho před dalším pokusem.'
|
||||||
password_changed: '&cHeslo změněno!'
|
password_changed: '&cHeslo změněno!'
|
||||||
logout: '&cÚspěšně jsi se odhlásil.'
|
logout: '&cÚspěšně jsi se odhlásil.'
|
||||||
reload: '&cZnovu načtení nastavení AuthMe proběhlo úspěšně.'
|
reload: '&cZnovu načtení nastavení AuthMe proběhlo úspěšně.'
|
||||||
@@ -155,3 +157,17 @@ two_factor:
|
|||||||
not_enabled_error: 'Dvoufaktorové ověření není zapnuté na tvém účtu. Můžeš ho zapnout použitím příkazu /2fa add'
|
not_enabled_error: 'Dvoufaktorové ověření není zapnuté na tvém účtu. Můžeš ho zapnout použitím příkazu /2fa add'
|
||||||
removed_success: 'Dvoufaktorovka byla úspěšně odebrána z tvého účtu'
|
removed_success: 'Dvoufaktorovka byla úspěšně odebrána z tvého účtu'
|
||||||
invalid_code: 'Nesprávný kód!'
|
invalid_code: 'Nesprávný kód!'
|
||||||
|
|
||||||
|
# 3rd party features: Bedrock Auto Login
|
||||||
|
bedrock_auto_login:
|
||||||
|
success: '&aAutomatické přihlášení Bedrock úspěšné!'
|
||||||
|
|
||||||
|
# 3rd party features: Login Location Fix
|
||||||
|
login_location_fix:
|
||||||
|
fix_portal: '&aPři přihlášení jste uvízli v portálu.'
|
||||||
|
fix_underground: '&aPři přihlášení jste uvízli pod zemí.'
|
||||||
|
cannot_fix_underground: '&aPři přihlášení jste uvízli pod zemí, ale nemůžeme to opravit.'
|
||||||
|
|
||||||
|
# 3rd party features: Double Login Fix
|
||||||
|
double_login_fix:
|
||||||
|
fix_message: '&cByli jste odpojeni kvůli dvojímu přihlášení.'
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ registration:
|
|||||||
name_taken: '&cDieser Benutzername ist schon vergeben'
|
name_taken: '&cDieser Benutzername ist schon vergeben'
|
||||||
register_request: '&3Bitte registriere dich mit "/register <passwort> <passwortBestätigen>"'
|
register_request: '&3Bitte registriere dich mit "/register <passwort> <passwortBestätigen>"'
|
||||||
command_usage: '&cBenutze: /register <passwort> <passwortBestätigen>'
|
command_usage: '&cBenutze: /register <passwort> <passwortBestätigen>'
|
||||||
reg_only: '&4Nur für registrierte Spieler! Bitte besuche http://example.com um dich zu registrieren.'
|
reg_only: '&4Nur für registrierte Spieler! Bitte besuche https://example.com um dich zu registrieren.'
|
||||||
success: '&2Erfolgreich registriert!'
|
success: '&2Erfolgreich registriert!'
|
||||||
kicked_admin_registered: 'Ein Administrator hat dich bereits registriert; bitte logge dich erneut ein.'
|
kicked_admin_registered: 'Ein Administrator hat dich bereits registriert; bitte logge dich erneut ein.'
|
||||||
|
|
||||||
@@ -20,6 +20,7 @@ password:
|
|||||||
unsafe_password: '&cPasswort unsicher! Bitte wähle ein anderes.'
|
unsafe_password: '&cPasswort unsicher! Bitte wähle ein anderes.'
|
||||||
forbidden_characters: '&4Dein Passwort enthält unerlaubte Zeichen. Zulässige Zeichen: %valid_chars'
|
forbidden_characters: '&4Dein Passwort enthält unerlaubte Zeichen. Zulässige Zeichen: %valid_chars'
|
||||||
wrong_length: '&cDein Passwort ist zu kurz oder zu lang!'
|
wrong_length: '&cDein Passwort ist zu kurz oder zu lang!'
|
||||||
|
pwned_password: '&cIhr gewähltes Passwort ist nicht sicher. Es wurde bereits %pwned_count Mal verwendet! Bitte verwenden Sie ein starkes Passwort...'
|
||||||
|
|
||||||
# Login
|
# Login
|
||||||
login:
|
login:
|
||||||
@@ -40,7 +41,7 @@ error:
|
|||||||
max_registration: '&cDu hast die maximale Anzahl an Accounts erreicht (%reg_count/%max_acc %reg_names).'
|
max_registration: '&cDu hast die maximale Anzahl an Accounts erreicht (%reg_count/%max_acc %reg_names).'
|
||||||
logged_in: '&cBereits eingeloggt!'
|
logged_in: '&cBereits eingeloggt!'
|
||||||
kick_for_vip: '&3Ein VIP-Spieler hat den vollen Server betreten!'
|
kick_for_vip: '&3Ein VIP-Spieler hat den vollen Server betreten!'
|
||||||
# TODO kick_unresolved_hostname: '&cAn error occurred: unresolved player hostname!'
|
kick_unresolved_hostname: '&cEin Fehler ist aufgetreten: nicht auflösbarer Spieler-Hostname!'
|
||||||
tempban_max_logins: '&cDu bist wegen zu vielen fehlgeschlagenen Login-Versuchen temporär gebannt!'
|
tempban_max_logins: '&cDu bist wegen zu vielen fehlgeschlagenen Login-Versuchen temporär gebannt!'
|
||||||
|
|
||||||
# AntiBot
|
# AntiBot
|
||||||
@@ -57,6 +58,7 @@ unregister:
|
|||||||
# Other messages
|
# Other messages
|
||||||
misc:
|
misc:
|
||||||
account_not_activated: '&cDein Account wurde noch nicht aktiviert. Bitte prüfe deine E-Mails!'
|
account_not_activated: '&cDein Account wurde noch nicht aktiviert. Bitte prüfe deine E-Mails!'
|
||||||
|
not_activated: '&cKonto nicht aktiviert, bitte registrieren und aktivieren Sie es, bevor Sie es erneut versuchen.'
|
||||||
password_changed: '&2Passwort geändert!'
|
password_changed: '&2Passwort geändert!'
|
||||||
logout: '&2Erfolgreich ausgeloggt'
|
logout: '&2Erfolgreich ausgeloggt'
|
||||||
reload: '&2Konfiguration und Datenbank wurden erfolgreich neu geladen.'
|
reload: '&2Konfiguration und Datenbank wurden erfolgreich neu geladen.'
|
||||||
@@ -155,3 +157,17 @@ two_factor:
|
|||||||
not_enabled_error: 'Die Zwei-Faktor-Authentifizierung ist für dein Konto nicht aktiviert. Benutze /2fa add'
|
not_enabled_error: 'Die Zwei-Faktor-Authentifizierung ist für dein Konto nicht aktiviert. Benutze /2fa add'
|
||||||
removed_success: 'Die Zwei-Faktor-Authentifizierung wurde erfolgreich von deinem Konto entfernt'
|
removed_success: 'Die Zwei-Faktor-Authentifizierung wurde erfolgreich von deinem Konto entfernt'
|
||||||
invalid_code: 'Ungültiger Code!'
|
invalid_code: 'Ungültiger Code!'
|
||||||
|
|
||||||
|
# 3rd party features: Bedrock Auto Login
|
||||||
|
bedrock_auto_login:
|
||||||
|
success: '&aBedrock Auto-Login erfolgreich!'
|
||||||
|
|
||||||
|
# 3rd party features: Login Location Fix
|
||||||
|
login_location_fix:
|
||||||
|
fix_portal: '&aSie stecken während des Logins im Portal fest.'
|
||||||
|
fix_underground: '&aSie stecken während des Logins unter der Erde fest.'
|
||||||
|
cannot_fix_underground: '&aSie stecken während des Logins unter der Erde fest, aber wir können es nicht beheben.'
|
||||||
|
|
||||||
|
# 3rd party features: Double Login Fix
|
||||||
|
double_login_fix:
|
||||||
|
fix_message: '&cSie wurden wegen doppeltem Login getrennt.'
|
||||||
|
|||||||
@@ -5,13 +5,13 @@
|
|||||||
|
|
||||||
# Registration
|
# Registration
|
||||||
registration:
|
registration:
|
||||||
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 http://example.com to register yourself!'
|
|
||||||
kicked_admin_registered: 'An admin just registered you; please log in again.'
|
|
||||||
success: '&2Successfully registered!'
|
|
||||||
disabled: '&cIn-game registration is disabled!'
|
disabled: '&cIn-game registration is disabled!'
|
||||||
name_taken: '&cYou already have registered this username!'
|
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 errors on registration
|
||||||
password:
|
password:
|
||||||
@@ -32,17 +32,17 @@ login:
|
|||||||
|
|
||||||
# Errors
|
# Errors
|
||||||
error:
|
error:
|
||||||
unregistered_user: '&cThis user isn''t registered!'
|
|
||||||
denied_command: '&cIn order to use this command you must be authenticated!'
|
denied_command: '&cIn order to use this command you must be authenticated!'
|
||||||
denied_chat: '&cIn order to chat 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!'
|
not_logged_in: '&cYou''re not logged in!'
|
||||||
tempban_max_logins: '&cYou have been temporarily banned for failing to log in too many times.'
|
|
||||||
max_registration: '&cYou have exceeded the maximum number of registrations (%reg_count/%max_acc %reg_names) for your connection!'
|
|
||||||
no_permission: '&4You don''t have the permission to perform this action!'
|
no_permission: '&4You don''t have the permission to perform this action!'
|
||||||
unexpected_error: '&4An unexpected error occurred, please contact an administrator!'
|
unexpected_error: '&4An unexpected error occurred, please contact an administrator!'
|
||||||
kick_for_vip: '&3A VIP player has joined the server when it was full!'
|
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!'
|
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!'
|
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
|
||||||
antibot:
|
antibot:
|
||||||
@@ -50,19 +50,21 @@ antibot:
|
|||||||
auto_enabled: '&4[AntiBotService] AntiBot enabled due to the huge number of connections!'
|
auto_enabled: '&4[AntiBotService] AntiBot enabled due to the huge number of connections!'
|
||||||
auto_disabled: '&2[AntiBotService] AntiBot disabled after %m minutes!'
|
auto_disabled: '&2[AntiBotService] AntiBot disabled after %m minutes!'
|
||||||
|
|
||||||
|
# Unregister
|
||||||
unregister:
|
unregister:
|
||||||
success: '&cSuccessfully unregistered!'
|
success: '&cSuccessfully unregistered!'
|
||||||
command_usage: '&cUsage: /unregister <password>'
|
command_usage: '&cUsage: /unregister <password>'
|
||||||
|
|
||||||
# Other messages
|
# Other messages
|
||||||
misc:
|
misc:
|
||||||
accounts_owned_self: 'You own %count accounts:'
|
|
||||||
accounts_owned_other: 'The player %name has %count accounts:'
|
|
||||||
account_not_activated: '&cYour account isn''t activated yet, please check your emails!'
|
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!'
|
password_changed: '&2Password changed successfully!'
|
||||||
logout: '&2Logged out successfully!'
|
logout: '&2Logged out successfully!'
|
||||||
reload: '&2Configuration and database have been reloaded correctly!'
|
reload: '&2Configuration and database have been reloaded correctly!'
|
||||||
usage_change_password: '&cUsage: /changepassword <oldPassword> <newPassword>'
|
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 messages
|
||||||
session:
|
session:
|
||||||
@@ -71,36 +73,36 @@ session:
|
|||||||
|
|
||||||
# Error messages when joining
|
# Error messages when joining
|
||||||
on_join_validation:
|
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!'
|
name_length: '&4Your username is either too short or too long!'
|
||||||
characters_in_name: '&4Your username contains illegal characters. Allowed chars: %valid_chars'
|
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!'
|
country_banned: '&4Your country is banned from this server!'
|
||||||
not_owner_error: 'You are not the owner of this account. Please choose another name!'
|
not_owner_error: 'You are not the owner of this account. Please choose another name!'
|
||||||
kick_full_server: '&4The server is full, try again later!'
|
|
||||||
same_nick_online: '&4The same username is already playing on the server!'
|
|
||||||
invalid_name_case: 'You should join using username %valid, not %invalid.'
|
invalid_name_case: 'You should join using username %valid, not %invalid.'
|
||||||
same_ip_online: 'A player with the same IP is already in game!'
|
|
||||||
quick_command: 'You used a command too fast! Please, join the server again and wait more before using any command.'
|
quick_command: 'You used a command too fast! Please, join the server again and wait more before using any command.'
|
||||||
|
|
||||||
# Email
|
# Email
|
||||||
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_add: '&cUsage: /email add <email> <confirmEmail>'
|
||||||
usage_email_change: '&cUsage: /email change <oldEmail> <newEmail>'
|
usage_email_change: '&cUsage: /email change <oldEmail> <newEmail>'
|
||||||
new_email_invalid: '&cInvalid new email, try again!'
|
new_email_invalid: '&cInvalid new email, try again!'
|
||||||
old_email_invalid: '&cInvalid old email, try again!'
|
old_email_invalid: '&cInvalid old email, try again!'
|
||||||
invalid: '&cInvalid email address, try again!'
|
invalid: '&cInvalid email address, try again!'
|
||||||
added: '&2Email address successfully added to your account!'
|
added: '&2Email address successfully added to your account!'
|
||||||
|
add_not_allowed: '&cAdding email was not allowed.'
|
||||||
request_confirmation: '&cPlease confirm your email address!'
|
request_confirmation: '&cPlease confirm your email address!'
|
||||||
changed: '&2Email address changed correctly!'
|
changed: '&2Email address changed correctly!'
|
||||||
|
change_not_allowed: '&cChanging email was not allowed.'
|
||||||
email_show: '&2Your current email address is: &f%email'
|
email_show: '&2Your current email address is: &f%email'
|
||||||
incomplete_settings: 'Error: not all required settings are set for sending emails. Please contact an admin.'
|
|
||||||
already_used: '&4The email address is already being used'
|
|
||||||
send_failure: 'The email could not be sent. Please contact an administrator.'
|
|
||||||
no_email_for_account: '&2You currently don''t have email address associated with this account.'
|
no_email_for_account: '&2You currently don''t have email address associated with this account.'
|
||||||
add_email_request: '&3Please add your email to your account with the command: /email add <yourEmail> <confirmEmail>'
|
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.'
|
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.'
|
email_cooldown_error: '&cAn email was already sent recently. You must wait %time before you can send a new one.'
|
||||||
add_not_allowed: '&cAdding email was not allowed.'
|
|
||||||
change_not_allowed: '&cChanging email was not allowed.'
|
|
||||||
|
|
||||||
# Password recovery by email
|
# Password recovery by email
|
||||||
recovery:
|
recovery:
|
||||||
@@ -132,6 +134,17 @@ verification:
|
|||||||
code_expired: '&3Your code has expired! Execute another sensitive command to get a new code!'
|
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!!'
|
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 authentication
|
||||||
two_factor:
|
two_factor:
|
||||||
code_created: '&2Your secret code is %code. You can scan it from here %url'
|
code_created: '&2Your secret code is %code. You can scan it from here %url'
|
||||||
@@ -145,37 +158,15 @@ two_factor:
|
|||||||
removed_success: 'Successfully removed two-factor auth from your account'
|
removed_success: 'Successfully removed two-factor auth from your account'
|
||||||
invalid_code: 'Invalid code!'
|
invalid_code: 'Invalid code!'
|
||||||
|
|
||||||
# Time units
|
|
||||||
time:
|
|
||||||
second: 'second'
|
|
||||||
seconds: 'seconds'
|
|
||||||
minute: 'minute'
|
|
||||||
minutes: 'minutes'
|
|
||||||
hour: 'hour'
|
|
||||||
hours: 'hours'
|
|
||||||
day: 'day'
|
|
||||||
days: 'days'
|
|
||||||
|
|
||||||
# 3rd party features: GUI Captcha
|
|
||||||
gui_captcha:
|
|
||||||
success: '&aVerification success!'
|
|
||||||
bedrock_auto_verify_success: '&aBedrock verification success!'
|
|
||||||
captcha_window_name: '%random Verification'
|
|
||||||
captcha_clickable_name: '%random I am human'
|
|
||||||
message_on_retry: '&cVerification failed, you have %times retries left'
|
|
||||||
denied_message_sending: '&cPlease be verified before chatting!'
|
|
||||||
kick_on_failed: '&cPlease complete the verification!'
|
|
||||||
kick_on_timeout: '&cVerification timed out!'
|
|
||||||
|
|
||||||
# 3rd party features: Bedrock Auto Login
|
# 3rd party features: Bedrock Auto Login
|
||||||
bedrock_auto_login:
|
bedrock_auto_login:
|
||||||
success: '&aBedrock auto login success!'
|
success: '&aBedrock auto login success!'
|
||||||
|
|
||||||
# 3rd party features: Login Location Fix
|
# 3rd party features: Login Location Fix
|
||||||
login_location_fix:
|
login_location_fix:
|
||||||
fix_portal: '&aYou are stuck in portal during Login.'
|
fix_portal: '&aYou are stuck in portal during login.'
|
||||||
fix_underground: '&aYou are stuck underground during Login.'
|
fix_underground: '&aYou are stuck underground during login.'
|
||||||
cannot_fix_underground: '&aYou are stuck underground during Login, but we cant fix it.'
|
cannot_fix_underground: '&aYou are stuck underground during login, but we cant fix it.'
|
||||||
|
|
||||||
# 3rd party features: Double Login Fix
|
# 3rd party features: Double Login Fix
|
||||||
double_login_fix:
|
double_login_fix:
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ registration:
|
|||||||
name_taken: '&cVi jam registris tiun uzantnomon!'
|
name_taken: '&cVi jam registris tiun uzantnomon!'
|
||||||
register_request: '&3Bonvolu registri al la servilo per la komando: /register <pasvorto> <konfirmiPasvorto>'
|
register_request: '&3Bonvolu registri al la servilo per la komando: /register <pasvorto> <konfirmiPasvorto>'
|
||||||
command_usage: '&cUzado: /register <pasvorto> <konfirmiPasvorto>'
|
command_usage: '&cUzado: /register <pasvorto> <konfirmiPasvorto>'
|
||||||
reg_only: '&4Nur registritaj uzantoj povas aliĝi la servilon! Bonvolu viziti http://example.com registri vin mem!'
|
reg_only: '&4Nur registritaj uzantoj povas aliĝi la servilon! Bonvolu viziti https://example.com registri vin mem!'
|
||||||
success: '&2Sukcese registris!'
|
success: '&2Sukcese registris!'
|
||||||
kicked_admin_registered: 'Administranto ĵus registrita vin; bonvolu ensaluti denove'
|
kicked_admin_registered: 'Administranto ĵus registrita vin; bonvolu ensaluti denove'
|
||||||
|
|
||||||
@@ -20,6 +20,7 @@ password:
|
|||||||
unsafe_password: '&cLa elektita pasvorto estas danĝere, bonvolu elekti alian...'
|
unsafe_password: '&cLa elektita pasvorto estas danĝere, bonvolu elekti alian...'
|
||||||
forbidden_characters: '&4Via pasvorto enhavas kontraŭleĝan karakteroj. Permesita signoj: %valid_chars'
|
forbidden_characters: '&4Via pasvorto enhavas kontraŭleĝan karakteroj. Permesita signoj: %valid_chars'
|
||||||
wrong_length: '&cVia pasvorto estas tro mallonga aŭ tro longa! Bonvolu provi alian pasvorton!'
|
wrong_length: '&cVia pasvorto estas tro mallonga aŭ tro longa! Bonvolu provi alian pasvorton!'
|
||||||
|
pwned_password: '&cVia elektita pasvorto ne estas sekura. Ĝi estis uzita %pwned_count fojojn jam! Bonvolu uzi fortan pasvorton...'
|
||||||
|
|
||||||
# Login
|
# Login
|
||||||
login:
|
login:
|
||||||
@@ -40,7 +41,7 @@ error:
|
|||||||
max_registration: 'Vi superis la maksimuman nombron de enregistroj (%reg_count/%max_acc %reg_names) pro via ligo!'
|
max_registration: 'Vi superis la maksimuman nombron de enregistroj (%reg_count/%max_acc %reg_names) pro via ligo!'
|
||||||
logged_in: '&cVi jam estas ensalutinta!'
|
logged_in: '&cVi jam estas ensalutinta!'
|
||||||
kick_for_vip: '&3VIP ludanto aliĝis al la servilo kiam ĝi pleniĝis!'
|
kick_for_vip: '&3VIP ludanto aliĝis al la servilo kiam ĝi pleniĝis!'
|
||||||
# TODO kick_unresolved_hostname: '&cAn error occurred: unresolved player hostname!'
|
kick_unresolved_hostname: '&cEraro okazis: neatingebla ludanta gastiga nomo!'
|
||||||
tempban_max_logins: '&cVi estis portempe malpermesita por ne ensaluti tro multajn fojojn.'
|
tempban_max_logins: '&cVi estis portempe malpermesita por ne ensaluti tro multajn fojojn.'
|
||||||
|
|
||||||
# AntiBot
|
# AntiBot
|
||||||
@@ -57,6 +58,7 @@ unregister:
|
|||||||
# Other messages
|
# Other messages
|
||||||
misc:
|
misc:
|
||||||
account_not_activated: '&cVia konto ne aktivigis tamen, bonvolu kontroli viajn retpoŝtojn!'
|
account_not_activated: '&cVia konto ne aktivigis tamen, bonvolu kontroli viajn retpoŝtojn!'
|
||||||
|
not_activated: '&cKonto ne aktivigita, bonvolu registriĝi kaj aktivigi ĝin antaŭ ol provi denove.'
|
||||||
password_changed: '&2Pasvorto sukcese ŝanĝita!'
|
password_changed: '&2Pasvorto sukcese ŝanĝita!'
|
||||||
logout: '&2Elsalutita sukcese!'
|
logout: '&2Elsalutita sukcese!'
|
||||||
reload: '&2Agordo kaj datumbazo estis larditaj korekte!'
|
reload: '&2Agordo kaj datumbazo estis larditaj korekte!'
|
||||||
@@ -79,7 +81,7 @@ on_join_validation:
|
|||||||
country_banned: '&4Via lando estas malpermesitaj de tiu servilo!'
|
country_banned: '&4Via lando estas malpermesitaj de tiu servilo!'
|
||||||
not_owner_error: 'Vi ne estas la posedanto de tiu konto. Bonvolu elekti alian nomon!'
|
not_owner_error: 'Vi ne estas la posedanto de tiu konto. Bonvolu elekti alian nomon!'
|
||||||
invalid_name_case: 'Vi devus aliĝi uzante uzantnomon %valid, ne %invalid.'
|
invalid_name_case: 'Vi devus aliĝi uzante uzantnomon %valid, ne %invalid.'
|
||||||
# TODO quick_command: 'You used a command too fast! Please, join the server again and wait more before using any command.'
|
quick_command: 'Vi uzis komandon tro rapide! Bonvolu, re-aliĝi al la servilo kaj atendi pli longe antaŭ ol uzi iun ajn komandon.'
|
||||||
|
|
||||||
# Email
|
# Email
|
||||||
email:
|
email:
|
||||||
@@ -90,10 +92,10 @@ email:
|
|||||||
old_email_invalid: '&cNevalida malnovaj retpoŝto, provu denove!'
|
old_email_invalid: '&cNevalida malnovaj retpoŝto, provu denove!'
|
||||||
invalid: '&cNevalida retadreso, provu denove!'
|
invalid: '&cNevalida retadreso, provu denove!'
|
||||||
added: '&2Retpoŝtadreso sukcese aldonitaj al via konto!'
|
added: '&2Retpoŝtadreso sukcese aldonitaj al via konto!'
|
||||||
# TODO add_not_allowed: '&cAdding email was not allowed'
|
add_not_allowed: '&cAldoni retpoŝton ne estis permesita.'
|
||||||
request_confirmation: '&cBonvolu konfirmi vian retadreson!'
|
request_confirmation: '&cBonvolu konfirmi vian retadreson!'
|
||||||
changed: '&2Retpoŝtadreso ŝanĝis ĝuste!'
|
changed: '&2Retpoŝtadreso ŝanĝis ĝuste!'
|
||||||
# TODO change_not_allowed: '&cChanging email was not allowed'
|
change_not_allowed: '&cŜanĝi retpoŝton ne estis permesita.'
|
||||||
email_show: '&2Via nuna retadreso estas: &f%email'
|
email_show: '&2Via nuna retadreso estas: &f%email'
|
||||||
no_email_for_account: '&2Vi aktuale ne havas retadreson asociita kun ĉi tiu konto.'
|
no_email_for_account: '&2Vi aktuale ne havas retadreson asociita kun ĉi tiu konto.'
|
||||||
already_used: '&4La retpoŝto jam estas uzata'
|
already_used: '&4La retpoŝto jam estas uzata'
|
||||||
@@ -119,18 +121,18 @@ captcha:
|
|||||||
usage_captcha: '&3Ensaluti vi devas solvi captcha kodo, bonvolu uzi la komando: /captcha %captcha_code'
|
usage_captcha: '&3Ensaluti vi devas solvi captcha kodo, bonvolu uzi la komando: /captcha %captcha_code'
|
||||||
wrong_captcha: '&cMalĝusta captcha, bonvolu tajpi "/captcha %captcha_code" en la babilejo!'
|
wrong_captcha: '&cMalĝusta captcha, bonvolu tajpi "/captcha %captcha_code" en la babilejo!'
|
||||||
valid_captcha: '&2Captcha kodo solvita ĝuste!'
|
valid_captcha: '&2Captcha kodo solvita ĝuste!'
|
||||||
# TODO captcha_for_registration: 'To register you have to solve a captcha first, please use the command: /captcha %captcha_code'
|
captcha_for_registration: 'Por registri vi devas unue solvi kapĉon, bonvolu uzi la komandon: /captcha %captcha_code'
|
||||||
# TODO register_captcha_valid: '&2Valid captcha! You may now register with /register'
|
register_captcha_valid: '&2Valida kapĉo! Vi nun povas registri per /register'
|
||||||
|
|
||||||
# Verification code
|
# Verification code
|
||||||
verification:
|
verification:
|
||||||
# TODO code_required: '&3This command is sensitive and requires an email verification! Check your inbox and follow the email''s instructions.'
|
code_required: '&3Tiu ĉi komando estas sentema kaj postulas retpoŝtan kontrolon! Kontrolu vian leterkeston kaj sekvu la instrukciojn en la retpoŝto.'
|
||||||
# TODO command_usage: '&cUsage: /verification <code>'
|
command_usage: '&cUzado: /verification <code>'
|
||||||
# TODO incorrect_code: '&cIncorrect code, please type "/verification <code>" into the chat, using the code you received by email'
|
incorrect_code: '&cMalĝusta kodo, bonvolu tajpi "/verification <code>" en la babilejo, uzante la kodon, kiun vi ricevis per retpoŝto'
|
||||||
# TODO success: '&2Your identity has been verified! You can now execute all commands within the current session!'
|
success: '&2Via identeco estis kontrolita! Vi nun povas ekzekuti ĉiujn komandojn dum la aktuala sesio!'
|
||||||
# TODO already_verified: '&2You can already execute every sensitive command within the current session!'
|
already_verified: '&2Vi jam povas ekzekuti ĉiujn sentemajn komandojn dum la aktuala sesio!'
|
||||||
# TODO code_expired: '&3Your code has expired! Execute another sensitive command to get a new code!'
|
code_expired: '&3Via kodo eksvalidiĝis! Ekzekutu alian senteman komandon por ricevi novan kodon!'
|
||||||
# TODO email_needed: '&3To verify your identity you need to link an email address with your account!!'
|
email_needed: '&3Por kontroli vian identecon vi devas ligi retpoŝtan adreson kun via konto!'
|
||||||
|
|
||||||
# Time units
|
# Time units
|
||||||
time:
|
time:
|
||||||
@@ -146,12 +148,26 @@ time:
|
|||||||
# Two-factor authentication
|
# Two-factor authentication
|
||||||
two_factor:
|
two_factor:
|
||||||
code_created: '&2Via sekreta kodo estas %code. Vi povas skani ĝin de tie %url'
|
code_created: '&2Via sekreta kodo estas %code. Vi povas skani ĝin de tie %url'
|
||||||
# TODO confirmation_required: 'Please confirm your code with /2fa confirm <code>'
|
confirmation_required: 'Bonvolu konfirmi vian kodon per /2fa confirm <code>'
|
||||||
# TODO code_required: 'Please submit your two-factor authentication code with /2fa code <code>'
|
code_required: 'Bonvolu sendi vian du-faktoran aŭtentikigan kodon per /2fa code <code>'
|
||||||
# TODO already_enabled: 'Two-factor authentication is already enabled for your account!'
|
already_enabled: 'Du-faktora aŭtentikigo jam estas ebligita por via konto!'
|
||||||
# TODO enable_error_no_code: 'No 2fa key has been generated for you or it has expired. Please run /2fa add'
|
enable_error_no_code: 'Neniu 2fa ŝlosilo estis generita por vi aŭ ĝi eksvalidiĝis. Bonvolu kuri /2fa add'
|
||||||
# TODO enable_success: 'Successfully enabled two-factor authentication for your account'
|
enable_success: 'Sukcese ebligis du-faktoran aŭtentikigon por via konto'
|
||||||
# TODO enable_error_wrong_code: 'Wrong code or code has expired. Please run /2fa add'
|
enable_error_wrong_code: 'Malĝusta kodo aŭ kodo eksvalidiĝis. Bonvolu kuri /2fa add'
|
||||||
# TODO not_enabled_error: 'Two-factor authentication is not enabled for your account. Run /2fa add'
|
not_enabled_error: 'Du-faktora aŭtentikigo ne estas ebligita por via konto. Kuru /2fa add'
|
||||||
# TODO removed_success: 'Successfully removed two-factor auth from your account'
|
removed_success: 'Sukcese forigis du-faktoran aŭtentikigon de via konto'
|
||||||
# TODO invalid_code: 'Invalid code!'
|
invalid_code: 'Nevalida kodo!'
|
||||||
|
|
||||||
|
# 3rd party features: Bedrock Auto Login
|
||||||
|
bedrock_auto_login:
|
||||||
|
success: '&aSukcesa Bedrock-aŭtomata ensaluto!'
|
||||||
|
|
||||||
|
# 3rd party features: Login Location Fix
|
||||||
|
login_location_fix:
|
||||||
|
fix_portal: '&aVi estas blokita en portalo dum ensaluto.'
|
||||||
|
fix_underground: '&aVi estas blokita subtere dum ensaluto.'
|
||||||
|
cannot_fix_underground: '&aVi estas blokita subtere dum ensaluto, sed ni ne povas ripari ĝin.'
|
||||||
|
|
||||||
|
# 3rd party features: Double Login Fix
|
||||||
|
double_login_fix:
|
||||||
|
fix_message: '&cVi estis malkonektita pro duobla ensaluto.'
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ registration:
|
|||||||
name_taken: '&cUsuario ya registrado'
|
name_taken: '&cUsuario ya registrado'
|
||||||
register_request: '&cPor favor, regístrate con "/register <contraseña> <confirmarContraseña">'
|
register_request: '&cPor favor, regístrate con "/register <contraseña> <confirmarContraseña">'
|
||||||
command_usage: '&cUso: /register Contraseña ConfirmarContraseña'
|
command_usage: '&cUso: /register Contraseña ConfirmarContraseña'
|
||||||
reg_only: '&f¡Sólo para jugadores registrados! Por favor visita http://www.example.com/ para registrarte'
|
reg_only: '&f¡Sólo para jugadores registrados! Por favor visita https://www.example.com/ para registrarte'
|
||||||
success: '&c¡Registrado correctamente!'
|
success: '&c¡Registrado correctamente!'
|
||||||
kicked_admin_registered: 'Un administrador te acaba de registrar; entra en la cuenta de nuevo'
|
kicked_admin_registered: 'Un administrador te acaba de registrar; entra en la cuenta de nuevo'
|
||||||
|
|
||||||
@@ -21,6 +21,7 @@ password:
|
|||||||
unsafe_password: '&cLa contraseña elegida no es segura, por favor elija otra...'
|
unsafe_password: '&cLa contraseña elegida no es segura, por favor elija otra...'
|
||||||
forbidden_characters: '&cTu contraseña tiene carácteres no admitidos, los cuales son: %valid_chars'
|
forbidden_characters: '&cTu contraseña tiene carácteres no admitidos, los cuales son: %valid_chars'
|
||||||
wrong_length: '&fTu contraseña es muy larga o muy corta'
|
wrong_length: '&fTu contraseña es muy larga o muy corta'
|
||||||
|
pwned_password: '&cLa contraseña elegida no es segura. ¡Se ha usado %pwned_count veces ya! Por favor, use una contraseña fuerte...'
|
||||||
|
|
||||||
# Login
|
# Login
|
||||||
login:
|
login:
|
||||||
@@ -41,7 +42,7 @@ error:
|
|||||||
max_registration: '&fHas excedido la cantidad máxima de registros para tu cuenta'
|
max_registration: '&fHas excedido la cantidad máxima de registros para tu cuenta'
|
||||||
logged_in: '&c¡Ya has iniciado sesión!'
|
logged_in: '&c¡Ya has iniciado sesión!'
|
||||||
kick_for_vip: '&c¡Un jugador VIP ha ingresado al servidor lleno!'
|
kick_for_vip: '&c¡Un jugador VIP ha ingresado al servidor lleno!'
|
||||||
# TODO kick_unresolved_hostname: '&cAn error occurred: unresolved player hostname!'
|
kick_unresolved_hostname: '&cSe produjo un error: nombre de host del jugador no resuelto!'
|
||||||
tempban_max_logins: '&cHas sido expulsado temporalmente por intentar iniciar sesión demasiadas veces.'
|
tempban_max_logins: '&cHas sido expulsado temporalmente por intentar iniciar sesión demasiadas veces.'
|
||||||
|
|
||||||
# AntiBot
|
# AntiBot
|
||||||
@@ -58,6 +59,7 @@ unregister:
|
|||||||
# Other messages
|
# Other messages
|
||||||
misc:
|
misc:
|
||||||
account_not_activated: '&fTu cuenta no está activada aún, ¡revisa tu correo!'
|
account_not_activated: '&fTu cuenta no está activada aún, ¡revisa tu correo!'
|
||||||
|
not_activated: '&cCuenta no activada, por favor regístrese y actívela antes de intentarlo de nuevo.'
|
||||||
password_changed: '&c¡Contraseña cambiada!'
|
password_changed: '&c¡Contraseña cambiada!'
|
||||||
logout: '&cDesconectado correctamente.'
|
logout: '&cDesconectado correctamente.'
|
||||||
reload: '&fLa configuración y la base de datos han sido recargados'
|
reload: '&fLa configuración y la base de datos han sido recargados'
|
||||||
@@ -156,3 +158,17 @@ two_factor:
|
|||||||
not_enabled_error: 'La autenticación de dos factores no está habilitada para tu cuenta. Por favor usa /2fa add'
|
not_enabled_error: 'La autenticación de dos factores no está habilitada para tu cuenta. Por favor usa /2fa add'
|
||||||
removed_success: 'Se ha eliminado correctamente la autenticación de dos factores de tu cuenta'
|
removed_success: 'Se ha eliminado correctamente la autenticación de dos factores de tu cuenta'
|
||||||
invalid_code: '¡Código incorrecto!'
|
invalid_code: '¡Código incorrecto!'
|
||||||
|
|
||||||
|
# 3rd party features: Bedrock Auto Login
|
||||||
|
bedrock_auto_login:
|
||||||
|
success: '&a¡Inicio de sesión automático de Bedrock exitoso!'
|
||||||
|
|
||||||
|
# 3rd party features: Login Location Fix
|
||||||
|
login_location_fix:
|
||||||
|
fix_portal: '&aEstás atascado en el portal durante el inicio de sesión.'
|
||||||
|
fix_underground: '&aEstás atascado bajo tierra durante el inicio de sesión.'
|
||||||
|
cannot_fix_underground: '&aEstás atascado bajo tierra durante el inicio de sesión, pero no podemos solucionarlo.'
|
||||||
|
|
||||||
|
# 3rd party features: Double Login Fix
|
||||||
|
double_login_fix:
|
||||||
|
fix_message: '&cHas sido desconectado debido a un inicio de sesión doble.'
|
||||||
|
|||||||
@@ -5,13 +5,13 @@
|
|||||||
|
|
||||||
# Registration
|
# Registration
|
||||||
registration:
|
registration:
|
||||||
register_request: '&3Palun registreeri käsklusega: /register <parool> <KinnitaParool>'
|
|
||||||
command_usage: '&cKasutus: /register <parool> <KinnitaParool>'
|
|
||||||
reg_only: '&4Vaid registreeritud mängijad saavad serveriga liituda! Enda kasutaja registreerimiseks külasta http://example.com!'
|
|
||||||
kicked_admin_registered: 'Administraator registreeris su kasutaja, palun logi uuesti sisse.'
|
|
||||||
success: '&2Edukalt registreeritud!'
|
|
||||||
disabled: '&cMängusisene registreerimine on välja lülitatud!'
|
disabled: '&cMängusisene registreerimine on välja lülitatud!'
|
||||||
name_taken: '&cSee kasutaja on juba registreeritud!'
|
name_taken: '&cSee kasutaja on juba registreeritud!'
|
||||||
|
register_request: '&3Palun registreeri käsklusega: /register <parool> <KinnitaParool>'
|
||||||
|
command_usage: '&cKasutus: /register <parool> <KinnitaParool>'
|
||||||
|
reg_only: '&4Vaid registreeritud mängijad saavad serveriga liituda! Enda kasutaja registreerimiseks külasta https://example.com!'
|
||||||
|
success: '&2Edukalt registreeritud!'
|
||||||
|
kicked_admin_registered: 'Administraator registreeris su kasutaja, palun logi uuesti sisse.'
|
||||||
|
|
||||||
# Password errors on registration
|
# Password errors on registration
|
||||||
password:
|
password:
|
||||||
@@ -20,6 +20,7 @@ password:
|
|||||||
unsafe_password: '&cSee parool ei ole turvaline, palun vali mõni teine parool.'
|
unsafe_password: '&cSee parool ei ole turvaline, palun vali mõni teine parool.'
|
||||||
forbidden_characters: '&4Sinu parool sisaldab keelatud tähemärke. Lubatud tähemärgid: %valid_chars'
|
forbidden_characters: '&4Sinu parool sisaldab keelatud tähemärke. Lubatud tähemärgid: %valid_chars'
|
||||||
wrong_length: '&cSinu parool on liiga pikk või lühike, palun vali mõni teine parool.'
|
wrong_length: '&cSinu parool on liiga pikk või lühike, palun vali mõni teine parool.'
|
||||||
|
pwned_password: '&cTeie valitud parool ei ole turvaline. Seda on kasutatud juba %pwned_count korda! Palun kasutage tugevat parooli...'
|
||||||
|
|
||||||
# Login
|
# Login
|
||||||
login:
|
login:
|
||||||
@@ -31,17 +32,17 @@ login:
|
|||||||
|
|
||||||
# Errors
|
# Errors
|
||||||
error:
|
error:
|
||||||
unregistered_user: '&cSee kasutaja ei ole registreeritud!'
|
|
||||||
denied_command: '&cSelle käskluse kasutamiseks pead olema sisselogitud!'
|
denied_command: '&cSelle käskluse kasutamiseks pead olema sisselogitud!'
|
||||||
denied_chat: '&cVestlemiseks pead olema sisselogitud!'
|
denied_chat: '&cVestlemiseks pead olema sisselogitud!'
|
||||||
|
unregistered_user: '&cSee kasutaja ei ole registreeritud!'
|
||||||
not_logged_in: '&cSa ei ole sisselogitud!'
|
not_logged_in: '&cSa ei ole sisselogitud!'
|
||||||
tempban_max_logins: '&cSind on ajutiselt serverist blokeeritud, kuna sisestasid mitu korda vale parooli.'
|
|
||||||
max_registration: '&cSinu IP-aadressile on registreeritud liiga palju kasutajaid! (%reg_count/%max_acc %reg_names)'
|
|
||||||
no_permission: '&4Sul puudub selle käskluse kasutamiseks luba.'
|
no_permission: '&4Sul puudub selle käskluse kasutamiseks luba.'
|
||||||
unexpected_error: '&4Esines ootamatu tõrge, palun teavita administraatorit!'
|
unexpected_error: '&4Esines ootamatu tõrge, palun teavita administraatorit!'
|
||||||
kick_for_vip: '&3VIP-mängija liitus serveriga ajal, mil see oli täis!'
|
max_registration: '&cSinu IP-aadressile on registreeritud liiga palju kasutajaid! (%reg_count/%max_acc %reg_names)'
|
||||||
logged_in: '&cSa oled juba sisselogitud!'
|
logged_in: '&cSa oled juba sisselogitud!'
|
||||||
|
kick_for_vip: '&3VIP-mängija liitus serveriga ajal, mil see oli täis!'
|
||||||
kick_unresolved_hostname: '&cEsines tõrge: mängija hostinimi on lahendamata!'
|
kick_unresolved_hostname: '&cEsines tõrge: mängija hostinimi on lahendamata!'
|
||||||
|
tempban_max_logins: '&cSind on ajutiselt serverist blokeeritud, kuna sisestasid mitu korda vale parooli.'
|
||||||
|
|
||||||
# AntiBot
|
# AntiBot
|
||||||
antibot:
|
antibot:
|
||||||
@@ -49,57 +50,59 @@ antibot:
|
|||||||
auto_enabled: '&4[AntiBotTeenus] AntiBot sisselülitatud!'
|
auto_enabled: '&4[AntiBotTeenus] AntiBot sisselülitatud!'
|
||||||
auto_disabled: '&2[AntiBotTeenus] AntiBot välja lülitatud peale %m minutit!'
|
auto_disabled: '&2[AntiBotTeenus] AntiBot välja lülitatud peale %m minutit!'
|
||||||
|
|
||||||
|
# Unregister
|
||||||
unregister:
|
unregister:
|
||||||
success: '&cKasutaja edukalt kustutatud!'
|
success: '&cKasutaja edukalt kustutatud!'
|
||||||
command_usage: '&cKasutus: /unregister <parool>'
|
command_usage: '&cKasutus: /unregister <parool>'
|
||||||
|
|
||||||
# Other messages
|
# Other messages
|
||||||
misc:
|
misc:
|
||||||
accounts_owned_self: 'Sa omad %count kontot:'
|
|
||||||
accounts_owned_other: 'Mängijal %name on %count kontot:'
|
|
||||||
account_not_activated: '&cSinu konto ei ole veel aktiveeritud, kontrolli oma meili!'
|
account_not_activated: '&cSinu konto ei ole veel aktiveeritud, kontrolli oma meili!'
|
||||||
|
not_activated: '&cKonto ei ole aktiveeritud, palun registreerige ja aktiveerige see enne uuesti proovimist.'
|
||||||
password_changed: '&2Parool edukalt vahetatud!'
|
password_changed: '&2Parool edukalt vahetatud!'
|
||||||
logout: '&2Edukalt välja logitud!'
|
logout: '&2Edukalt välja logitud!'
|
||||||
reload: '&2Seadistused ning andmebaas on edukalt taaslaaditud!'
|
reload: '&2Seadistused ning andmebaas on edukalt taaslaaditud!'
|
||||||
usage_change_password: '&cKasutus: /changepassword <vanaParool> <uusParool>'
|
usage_change_password: '&cKasutus: /changepassword <vanaParool> <uusParool>'
|
||||||
|
accounts_owned_self: 'Sa omad %count kontot:'
|
||||||
|
accounts_owned_other: 'Mängijal %name on %count kontot:'
|
||||||
|
|
||||||
# Session messages
|
# Session messages
|
||||||
session:
|
session:
|
||||||
invalid_session: '&cSinu IP-aadress muutus, seega sinu sessioon aegus!'
|
|
||||||
valid_session: '&2Sisse logitud sessiooni jätkumise tõttu.'
|
valid_session: '&2Sisse logitud sessiooni jätkumise tõttu.'
|
||||||
|
invalid_session: '&cSinu IP-aadress muutus, seega sinu sessioon aegus!'
|
||||||
|
|
||||||
# Error messages when joining
|
# Error messages when joining
|
||||||
on_join_validation:
|
on_join_validation:
|
||||||
|
same_ip_online: 'Sama IP-aadressiga mängija juba mängib!'
|
||||||
|
same_nick_online: '&4Sama kasutaja on juba serveriga ühendatud!'
|
||||||
name_length: '&4Sinu kasutajanimi on liiga pikk või liiga lühike!'
|
name_length: '&4Sinu kasutajanimi on liiga pikk või liiga lühike!'
|
||||||
characters_in_name: '&4Sinu kasutajanimi sisaldab keelatud tähemärke. Lubatud tähemärgid: %valid_chars'
|
characters_in_name: '&4Sinu kasutajanimi sisaldab keelatud tähemärke. Lubatud tähemärgid: %valid_chars'
|
||||||
country_banned: '&4Sinu riigist ei ole võimalik sellesse serverisse ühenduda!'
|
country_banned: '&4Sinu riigist ei ole võimalik sellesse serverisse ühenduda!'
|
||||||
not_owner_error: 'Sa ei ole selle konto omanik. Vali teine nimi!'
|
not_owner_error: 'Sa ei ole selle konto omanik. Vali teine nimi!'
|
||||||
kick_full_server: '&4Server on täis, proovi hiljem uuesti!'
|
kick_full_server: '&4Server on täis, proovi hiljem uuesti!'
|
||||||
same_nick_online: '&4Sama kasutaja on juba serveriga ühendatud!'
|
|
||||||
invalid_name_case: 'Sa peaksid liituma nimega %valid, mitte nimega %invalid.'
|
invalid_name_case: 'Sa peaksid liituma nimega %valid, mitte nimega %invalid.'
|
||||||
same_ip_online: 'Sama IP-aadressiga mängija juba mängib!'
|
|
||||||
quick_command: 'Sa kasutasid käsklust liiga kiiresti! Palun liitu serveriga uuesti ning oota enne mõne käskluse kasutamist kauem.'
|
quick_command: 'Sa kasutasid käsklust liiga kiiresti! Palun liitu serveriga uuesti ning oota enne mõne käskluse kasutamist kauem.'
|
||||||
|
|
||||||
# Email
|
# Email
|
||||||
email:
|
email:
|
||||||
|
add_email_request: '&3Palun seo oma kasutajaga meiliaadress kasutades käsklust: /email add <sinuEmail> <kinnitaEmail>'
|
||||||
usage_email_add: '&cKasutus: /email add <email> <kinnitaEmail>'
|
usage_email_add: '&cKasutus: /email add <email> <kinnitaEmail>'
|
||||||
usage_email_change: '&cKasutus: /email change <vanaEmail> <uusEmail>'
|
usage_email_change: '&cKasutus: /email change <vanaEmail> <uusEmail>'
|
||||||
new_email_invalid: '&cUus meiliaadress on sobimatu, proovi uuesti!'
|
new_email_invalid: '&cUus meiliaadress on sobimatu, proovi uuesti!'
|
||||||
old_email_invalid: '&cVana meiliaadress on sobimatu, proovi uuesti!'
|
old_email_invalid: '&cVana meiliaadress on sobimatu, proovi uuesti!'
|
||||||
invalid: '&cSobimatu meiliaadress, proovi uuesti!'
|
invalid: '&cSobimatu meiliaadress, proovi uuesti!'
|
||||||
added: '&2Meiliaadress edukalt lisatud!'
|
added: '&2Meiliaadress edukalt lisatud!'
|
||||||
|
add_not_allowed: '&cMeiliaadressi lisamine ei ole lubatud.'
|
||||||
request_confirmation: '&cPalun kinnita oma meiliaadress!'
|
request_confirmation: '&cPalun kinnita oma meiliaadress!'
|
||||||
changed: '&2Meiliaadress edukalt muudetud!'
|
changed: '&2Meiliaadress edukalt muudetud!'
|
||||||
|
change_not_allowed: '&cMeiliaadressi muutmine ei ole lubatud.'
|
||||||
email_show: '&2Sinu praegune meiliaadress on: &f%email'
|
email_show: '&2Sinu praegune meiliaadress on: &f%email'
|
||||||
incomplete_settings: 'Viga: meili saatmiseks pole kõik vajalikud seaded seadistatud. Teata sellest administraatorit.'
|
|
||||||
already_used: '&4See meiliaadress on juba kasutuses!'
|
|
||||||
send_failure: 'Meili ei õnnestunud saata. Teata sellest administraatorit.'
|
|
||||||
no_email_for_account: '&2Selle kasutajaga ei ole seotud ühtegi meiliaadressi.'
|
no_email_for_account: '&2Selle kasutajaga ei ole seotud ühtegi meiliaadressi.'
|
||||||
add_email_request: '&3Palun seo oma kasutajaga meiliaadress kasutades käsklust: /email add <sinuEmail> <kinnitaEmail>'
|
already_used: '&4See meiliaadress on juba kasutuses!'
|
||||||
|
incomplete_settings: 'Viga: meili saatmiseks pole kõik vajalikud seaded seadistatud. Teata sellest administraatorit.'
|
||||||
|
send_failure: 'Meili ei õnnestunud saata. Teata sellest administraatorit.'
|
||||||
change_password_expired: 'Selle käsklusega ei saa sa enam parooli muuta.'
|
change_password_expired: 'Selle käsklusega ei saa sa enam parooli muuta.'
|
||||||
email_cooldown_error: '&cMeil on juba saadetud. Sa pead ootama %time enne kui saad küsida uue saatmist.'
|
email_cooldown_error: '&cMeil on juba saadetud. Sa pead ootama %time enne kui saad küsida uue saatmist.'
|
||||||
add_not_allowed: '&cMeiliaadressi lisamine ei ole lubatud.'
|
|
||||||
change_not_allowed: '&cMeiliaadressi muutmine ei ole lubatud.'
|
|
||||||
|
|
||||||
# Password recovery by email
|
# Password recovery by email
|
||||||
recovery:
|
recovery:
|
||||||
@@ -131,6 +134,17 @@ verification:
|
|||||||
code_expired: '&3Kood on aegunud! Kasuta mõnda ohtlikku käsklust, et saada uus kood!'
|
code_expired: '&3Kood on aegunud! Kasuta mõnda ohtlikku käsklust, et saada uus kood!'
|
||||||
email_needed: '&3Konto kinnitamiseks pead siduma oma kontoga enda meiliaadressi!'
|
email_needed: '&3Konto kinnitamiseks pead siduma oma kontoga enda meiliaadressi!'
|
||||||
|
|
||||||
|
# Time units
|
||||||
|
time:
|
||||||
|
second: 'sekund'
|
||||||
|
seconds: 'sekundit'
|
||||||
|
minute: 'minut'
|
||||||
|
minutes: 'minutit'
|
||||||
|
hour: 'tund'
|
||||||
|
hours: 'tundi'
|
||||||
|
day: 'päev'
|
||||||
|
days: 'päeva'
|
||||||
|
|
||||||
# Two-factor authentication
|
# Two-factor authentication
|
||||||
two_factor:
|
two_factor:
|
||||||
code_created: '&2Sinu privaatne kood on %code. Sa saad selle skännida aadressil %url'
|
code_created: '&2Sinu privaatne kood on %code. Sa saad selle skännida aadressil %url'
|
||||||
@@ -144,13 +158,16 @@ two_factor:
|
|||||||
removed_success: 'Sinu kontolt on edukalt eemaldatud kaheastmeline autentimine.'
|
removed_success: 'Sinu kontolt on edukalt eemaldatud kaheastmeline autentimine.'
|
||||||
invalid_code: 'Vale kood!'
|
invalid_code: 'Vale kood!'
|
||||||
|
|
||||||
# Time units
|
# 3rd party features: Bedrock Auto Login
|
||||||
time:
|
bedrock_auto_login:
|
||||||
second: 'sekund'
|
success: '&aBedrocki automaatne sisselogimine õnnestus!'
|
||||||
seconds: 'sekundit'
|
|
||||||
minute: 'minut'
|
# 3rd party features: Login Location Fix
|
||||||
minutes: 'minutit'
|
login_location_fix:
|
||||||
hour: 'tund'
|
fix_portal: '&aOlete sisselogimise ajal portaalis kinni.'
|
||||||
hours: 'tundi'
|
fix_underground: '&aOlete sisselogimise ajal maa all kinni.'
|
||||||
day: 'päev'
|
cannot_fix_underground: '&aOlete sisselogimise ajal maa all kinni, kuid me ei saa seda parandada.'
|
||||||
days: 'päeva'
|
|
||||||
|
# 3rd party features: Double Login Fix
|
||||||
|
double_login_fix:
|
||||||
|
fix_message: '&cTeid on ühendatud lahti kahekordse sisselogimise tõttu.'
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ password:
|
|||||||
unsafe_password: '&cAukeratutako pasahitza ez da segurua.Mesedez, aukeratu beste bat...'
|
unsafe_password: '&cAukeratutako pasahitza ez da segurua.Mesedez, aukeratu beste bat...'
|
||||||
forbidden_characters: '&4Pasahitzak ondorengo karaktereak bakarrik izan ditzake: %valid_chars'
|
forbidden_characters: '&4Pasahitzak ondorengo karaktereak bakarrik izan ditzake: %valid_chars'
|
||||||
wrong_length: '&fZure pasahitza motzegia edo luzeegia da'
|
wrong_length: '&fZure pasahitza motzegia edo luzeegia da'
|
||||||
|
pwned_password: '&cAukeratutako pasahitza ez da segurua. %pwned_count aldiz erabili da dagoeneko! Mesedez, erabili pasahitz sendo bat...'
|
||||||
|
|
||||||
# Login
|
# Login
|
||||||
login:
|
login:
|
||||||
@@ -57,6 +58,7 @@ unregister:
|
|||||||
# Other messages
|
# Other messages
|
||||||
misc:
|
misc:
|
||||||
account_not_activated: '&fZure kontua aktibatu gabe dago. Mesedez, berretsi zure posta elektronikoa!'
|
account_not_activated: '&fZure kontua aktibatu gabe dago. Mesedez, berretsi zure posta elektronikoa!'
|
||||||
|
not_activated: '&cKontua ez dago aktibatuta, mesedez erregistratu eta aktibatu berriro saiatu aurretik.'
|
||||||
password_changed: '&cPasahitza ondo aldatu duzu!'
|
password_changed: '&cPasahitza ondo aldatu duzu!'
|
||||||
logout: '&cSaioa itxi duzu'
|
logout: '&cSaioa itxi duzu'
|
||||||
reload: '&fEzarpenak eta datu-basea berrabiarazi dira'
|
reload: '&fEzarpenak eta datu-basea berrabiarazi dira'
|
||||||
@@ -155,3 +157,17 @@ two_factor:
|
|||||||
not_enabled_error: 'Ez duzu 2 faktore autentikazioa konfiguratu. Erabaili /2fa add'
|
not_enabled_error: 'Ez duzu 2 faktore autentikazioa konfiguratu. Erabaili /2fa add'
|
||||||
removed_success: '2 faktoreko autentikazioa desaktibatu duzu'
|
removed_success: '2 faktoreko autentikazioa desaktibatu duzu'
|
||||||
invalid_code: 'Kode okerra!'
|
invalid_code: 'Kode okerra!'
|
||||||
|
|
||||||
|
# 3rd party features: Bedrock Auto Login
|
||||||
|
bedrock_auto_login:
|
||||||
|
success: '&aBedrock automatikoki saioa hasi da!'
|
||||||
|
|
||||||
|
# 3rd party features: Login Location Fix
|
||||||
|
login_location_fix:
|
||||||
|
fix_portal: '&aPortal batean trabatuta zaude saioa hasten ari zarela.'
|
||||||
|
fix_underground: '&aLur azpian trabatuta zaude saioa hasten ari zarela.'
|
||||||
|
cannot_fix_underground: '&aLur azpian trabatuta zaude saioa hasten ari zarela, baina ezin dugu konpondu.'
|
||||||
|
|
||||||
|
# 3rd party features: Double Login Fix
|
||||||
|
double_login_fix:
|
||||||
|
fix_message: '&cSistematik kanporatu zaitugu saio bikoitza egiteagatik.'
|
||||||
|
|||||||
@@ -9,17 +9,18 @@ registration:
|
|||||||
name_taken: '&cPelaaja on jo rekisteröity'
|
name_taken: '&cPelaaja on jo rekisteröity'
|
||||||
register_request: '&cRekisteröidy palvelimellemme komennolla "/register <salasana> <salasana>"'
|
register_request: '&cRekisteröidy palvelimellemme komennolla "/register <salasana> <salasana>"'
|
||||||
command_usage: '&cKäyttötapa: /register <salasana> <salasana>'
|
command_usage: '&cKäyttötapa: /register <salasana> <salasana>'
|
||||||
reg_only: '&fMene sivustolle: http://example.com rekisteröityäksesi!'
|
reg_only: '&fMene sivustolle: https://example.com rekisteröityäksesi!'
|
||||||
success: '&cRekisteröidyit onnistuneesti!'
|
success: '&cRekisteröidyit onnistuneesti!'
|
||||||
# TODO kicked_admin_registered: 'An admin just registered you; please log in again'
|
kicked_admin_registered: 'Ylläpitäjä rekisteröi sinut juuri; kirjaudu sisään uudelleen.'
|
||||||
|
|
||||||
# Password errors on registration
|
# Password errors on registration
|
||||||
password:
|
password:
|
||||||
match_error: '&fSalasanat ei täsmää'
|
match_error: '&fSalasanat ei täsmää'
|
||||||
# TODO name_in_password: '&cYou can''t use your name as password, please choose another one...'
|
name_in_password: '&cEt voi käyttää nimeäsi salasanana, valitse toinen...'
|
||||||
# TODO unsafe_password: '&cThe chosen password isn''t safe, please choose another one...'
|
unsafe_password: '&cValitsemasi salasana ei ole turvallinen, valitse toinen...'
|
||||||
# TODO forbidden_characters: '&4Your password contains illegal characters. Allowed chars: %valid_chars'
|
forbidden_characters: '&4Salasanassasi on kiellettyjä merkkejä. Sallitut merkit: %valid_chars'
|
||||||
wrong_length: '&fSalasanasi on liian pitkä tai lyhyt.'
|
wrong_length: '&fSalasanasi on liian pitkä tai lyhyt.'
|
||||||
|
pwned_password: '&cValitsemasi salasana ei ole turvallinen. Sitä on käytetty %pwned_count kertaa jo! Käytä vahvaa salasanaa...'
|
||||||
|
|
||||||
# Login
|
# Login
|
||||||
login:
|
login:
|
||||||
@@ -31,8 +32,8 @@ login:
|
|||||||
|
|
||||||
# Errors
|
# Errors
|
||||||
error:
|
error:
|
||||||
# TODO denied_command: '&cIn order to use this command you must be authenticated!'
|
denied_command: '&cSinun on oltava todennettu käyttääksesi tätä komentoa!'
|
||||||
# TODO denied_chat: '&cIn order to chat you must be authenticated!'
|
denied_chat: '&cSinun on oltava todennettu voidaksesi chattailla!'
|
||||||
unregistered_user: '&cSalasanat eivät täsmää'
|
unregistered_user: '&cSalasanat eivät täsmää'
|
||||||
not_logged_in: '&cEt ole kirjautunut sisään!'
|
not_logged_in: '&cEt ole kirjautunut sisään!'
|
||||||
no_permission: '&cEi oikeuksia'
|
no_permission: '&cEi oikeuksia'
|
||||||
@@ -40,14 +41,14 @@ error:
|
|||||||
max_registration: '&fSinulla ei ole oikeuksia tehdä enempää pelaajatilejä!'
|
max_registration: '&fSinulla ei ole oikeuksia tehdä enempää pelaajatilejä!'
|
||||||
logged_in: '&cOlet jo kirjautunut!'
|
logged_in: '&cOlet jo kirjautunut!'
|
||||||
kick_for_vip: '&cVIP pelaaja liittyi täyteen palvelimeen!'
|
kick_for_vip: '&cVIP pelaaja liittyi täyteen palvelimeen!'
|
||||||
# TODO kick_unresolved_hostname: '&cAn error occurred: unresolved player hostname!'
|
kick_unresolved_hostname: '&cTapahtui virhe: pelaajan verkkonimiä ei voitu ratkaista!'
|
||||||
# TODO tempban_max_logins: '&cYou have been temporarily banned for failing to log in too many times.'
|
tempban_max_logins: '&cSinut on tilapäisesti kielletty liian monen kirjautumisen epäonnistumisen vuoksi.'
|
||||||
|
|
||||||
# AntiBot
|
# AntiBot
|
||||||
antibot:
|
antibot:
|
||||||
# TODO kick_antibot: 'AntiBot protection mode is enabled! You have to wait some minutes before joining the server.'
|
kick_antibot: 'Antibot-suojatila on käytössä! Sinun on odotettava muutama minuutti ennen kuin voit liittyä palvelimelle.'
|
||||||
# TODO auto_enabled: '&4[AntiBotService] AntiBot enabled due to the huge number of connections!'
|
auto_enabled: '&4[AntiBotService] Antibot otettu käyttöön suuren yhteyksien määrän vuoksi!'
|
||||||
# TODO auto_disabled: '&2[AntiBotService] AntiBot disabled after %m minutes!'
|
auto_disabled: '&2[AntiBotService] Antibot poistettu käytöstä %m minuutin kuluttua!'
|
||||||
|
|
||||||
# Unregister
|
# Unregister
|
||||||
unregister:
|
unregister:
|
||||||
@@ -57,12 +58,13 @@ unregister:
|
|||||||
# Other messages
|
# Other messages
|
||||||
misc:
|
misc:
|
||||||
account_not_activated: '&fKäyttäjäsi ei ole vahvistettu!'
|
account_not_activated: '&fKäyttäjäsi ei ole vahvistettu!'
|
||||||
|
not_activated: '&cTiliä ei ole aktivoitu, rekisteröidy ja aktivoi se ennen kuin yrität uudelleen.'
|
||||||
password_changed: '&cSalasana vaihdettu!!'
|
password_changed: '&cSalasana vaihdettu!!'
|
||||||
logout: '&cKirjauduit ulos palvelimelta.'
|
logout: '&cKirjauduit ulos palvelimelta.'
|
||||||
reload: '&fAsetukset uudelleenladattu'
|
reload: '&fAsetukset uudelleenladattu'
|
||||||
usage_change_password: '&fKäyttötapa: /changepassword vanhaSalasana uusiSalasana'
|
usage_change_password: '&fKäyttötapa: /changepassword vanhaSalasana uusiSalasana'
|
||||||
# TODO accounts_owned_self: 'You own %count accounts:'
|
accounts_owned_self: 'Omistat %count tiliä:'
|
||||||
# TODO accounts_owned_other: 'The player %name has %count accounts:'
|
accounts_owned_other: 'Pelaajalla %name on %count tiliä:'
|
||||||
|
|
||||||
# Session messages
|
# Session messages
|
||||||
session:
|
session:
|
||||||
@@ -71,15 +73,15 @@ session:
|
|||||||
|
|
||||||
# Error messages when joining
|
# Error messages when joining
|
||||||
on_join_validation:
|
on_join_validation:
|
||||||
# TODO same_ip_online: 'A player with the same IP is already in game!'
|
same_ip_online: 'Sama IP-osoitteella oleva pelaaja on jo pelissä!'
|
||||||
same_nick_online: '&COlet jo palvelimella! &COdota käyttäjän aikakatkaisua tai ota yhteyttä palveluntarjoojaan.'
|
same_nick_online: '&COlet jo palvelimella! &COdota käyttäjän aikakatkaisua tai ota yhteyttä palveluntarjoojaan.'
|
||||||
name_length: '&cPelaajanimesi on liian lyhyt tai pitkä'
|
name_length: '&cPelaajanimesi on liian lyhyt tai pitkä'
|
||||||
characters_in_name: '&cPelaajanimesi sisältää luvattomia merkkejä. Hyväksytyt merkit: %valid_chars'
|
characters_in_name: '&cPelaajanimesi sisältää luvattomia merkkejä. Hyväksytyt merkit: %valid_chars'
|
||||||
kick_full_server: '&cPalvelin on täynnä, Yritä pian uudelleen!'
|
kick_full_server: '&cPalvelin on täynnä, Yritä pian uudelleen!'
|
||||||
# TODO country_banned: '&4Your country is banned from this server!'
|
country_banned: '&4Maasi on estetty tästä palvelimesta!'
|
||||||
# TODO not_owner_error: 'You are not the owner of this account. Please choose another name!'
|
not_owner_error: 'Et ole tämän tilin omistaja. Valitse toinen nimi!'
|
||||||
# TODO invalid_name_case: 'You should join using username %valid, not %invalid.'
|
invalid_name_case: 'Sinun pitäisi liittyä käyttäen käyttäjänimeä %valid, ei %invalid.'
|
||||||
# TODO quick_command: 'You used a command too fast! Please, join the server again and wait more before using any command.'
|
quick_command: 'Käytit komentoa liian nopeasti! Kirjaudu sisään uudelleen ja odota enemmän ennen minkään komennon käyttöä.'
|
||||||
|
|
||||||
# Email
|
# Email
|
||||||
email:
|
email:
|
||||||
@@ -90,17 +92,17 @@ email:
|
|||||||
old_email_invalid: '[AuthMe] Vanha sähköposti on väärä!'
|
old_email_invalid: '[AuthMe] Vanha sähköposti on väärä!'
|
||||||
invalid: '[AuthMe] Väärä sähköposti'
|
invalid: '[AuthMe] Väärä sähköposti'
|
||||||
added: '[AuthMe] Sähköposti lisätty!'
|
added: '[AuthMe] Sähköposti lisätty!'
|
||||||
# TODO add_not_allowed: '&cAdding email was not allowed'
|
add_not_allowed: '&cSähköpostin lisääminen ei ollut sallittua.'
|
||||||
request_confirmation: '[AuthMe] Vahvistuta sähköposti!'
|
request_confirmation: '[AuthMe] Vahvistuta sähköposti!'
|
||||||
changed: '[AuthMe] Sähköposti vaihdettu!'
|
changed: '[AuthMe] Sähköposti vaihdettu!'
|
||||||
# TODO change_not_allowed: '&cChanging email was not allowed'
|
change_not_allowed: '&cSähköpostin muuttaminen ei ollut sallittua.'
|
||||||
# TODO email_show: '&2Your current email address is: &f%email'
|
email_show: '&2Nykyinen sähköpostiosoitteesi on: &f%email'
|
||||||
# TODO no_email_for_account: '&2You currently don''t have email address associated with this account.'
|
no_email_for_account: '&2Sinulla ei tällä hetkellä ole liitettyä sähköpostiosoitetta tähän tiliin.'
|
||||||
# TODO already_used: '&4The email address is already being used'
|
already_used: '&4Sähköpostiosoite on jo käytössä'
|
||||||
# TODO incomplete_settings: 'Error: not all required settings are set for sending emails. Please contact an admin.'
|
incomplete_settings: 'Virhe: kaikki tarvittavat asetukset eivät ole asetettu sähköpostien lähettämistä varten. Ota yhteyttä ylläpitäjään.'
|
||||||
# TODO send_failure: 'The email could not be sent. Please contact an administrator.'
|
send_failure: 'Sähköpostia ei voitu lähettää. Ota yhteyttä järjestelmänvalvojaan.'
|
||||||
# TODO change_password_expired: 'You cannot change your password using this command anymore.'
|
change_password_expired: 'Et voi enää vaihtaa salasanaa tällä komennolla.'
|
||||||
# TODO email_cooldown_error: '&cAn email was already sent recently. You must wait %time before you can send a new one.'
|
email_cooldown_error: '&cSähköpostia on jo lähetetty äskettäin. Sinun on odotettava %time ennen kuin voit lähettää uuden.'
|
||||||
|
|
||||||
# Password recovery by email
|
# Password recovery by email
|
||||||
recovery:
|
recovery:
|
||||||
@@ -108,50 +110,64 @@ recovery:
|
|||||||
command_usage: '&fKäyttötapa: /email recovery <Email>'
|
command_usage: '&fKäyttötapa: /email recovery <Email>'
|
||||||
email_sent: '[AuthMe] Palautus sähköposti lähetetty!'
|
email_sent: '[AuthMe] Palautus sähköposti lähetetty!'
|
||||||
code:
|
code:
|
||||||
# TODO code_sent: 'A recovery code to reset your password has been sent to your email.'
|
code_sent: 'Salasanasi palauttamiseksi lähetetty palautuskoodi on lähetetty sähköpostiisi.'
|
||||||
# TODO incorrect: 'The recovery code is not correct! You have %count tries remaining.'
|
incorrect: 'Palautuskoodi ei ole oikea! Sinulla on %count yritystä jäljellä.'
|
||||||
# TODO tries_exceeded: 'You have exceeded the maximum number attempts to enter the recovery code. Use "/email recovery [email]" to generate a new one.'
|
tries_exceeded: 'Olet ylittänyt enimmäisyritysten määrän palautuskoodin syöttämisessä. Käytä "/email recovery [email]" luodaksesi uuden.'
|
||||||
# TODO correct: 'Recovery code entered correctly!'
|
correct: 'Palautuskoodi syötetty oikein!'
|
||||||
# TODO change_password: 'Please use the command /email setpassword <new password> to change your password immediately.'
|
change_password: 'Käytä komentoa /email setpassword <uusi salasana> vaihtaaksesi salasanasi välittömästi.'
|
||||||
|
|
||||||
# Captcha
|
# Captcha
|
||||||
captcha:
|
captcha:
|
||||||
usage_captcha: '&cKäyttötapa: /captcha %captcha_code'
|
usage_captcha: '&cKäyttötapa: /captcha %captcha_code'
|
||||||
wrong_captcha: '&cVäärä varmistus, käytä : /captcha %captcha_code'
|
wrong_captcha: '&cVäärä varmistus, käytä : /captcha %captcha_code'
|
||||||
valid_captcha: '&cSinun varmistus onnistui.!'
|
valid_captcha: '&cSinun varmistus onnistui.!'
|
||||||
# TODO captcha_for_registration: 'To register you have to solve a captcha first, please use the command: /captcha %captcha_code'
|
captcha_for_registration: 'Rekisteröityäksesi sinun on ensin ratkaistava captcha, käytä komentoa: /captcha %captcha_code'
|
||||||
# TODO register_captcha_valid: '&2Valid captcha! You may now register with /register'
|
register_captcha_valid: '&2Validi captcha! Voit nyt rekisteröityä käyttäen komentoa /register'
|
||||||
|
|
||||||
# Verification code
|
# Verification code
|
||||||
verification:
|
verification:
|
||||||
# TODO code_required: '&3This command is sensitive and requires an email verification! Check your inbox and follow the email''s instructions.'
|
code_required: '&3Tämä komento on herkkä ja vaatii sähköpostivahvistuksen! Tarkista sähköpostisi ja seuraa sähköpostin ohjeita.'
|
||||||
# TODO command_usage: '&cUsage: /verification <code>'
|
command_usage: '&cKäyttö: /verification <koodi>'
|
||||||
# TODO incorrect_code: '&cIncorrect code, please type "/verification <code>" into the chat, using the code you received by email'
|
incorrect_code: '&cVirheellinen koodi, kirjoita "/verification <koodi>" chatiin, käyttäen koodia, jonka sait sähköpostitse'
|
||||||
# TODO success: '&2Your identity has been verified! You can now execute all commands within the current session!'
|
success: '&2Henkilöllisyytesi on varmennettu! Voit nyt suorittaa kaikki komennot tämän istunnon aikana!'
|
||||||
# TODO already_verified: '&2You can already execute every sensitive command within the current session!'
|
already_verified: '&2Voit jo suorittaa jokaisen herkän komennon tämän istunnon aikana!'
|
||||||
# TODO code_expired: '&3Your code has expired! Execute another sensitive command to get a new code!'
|
code_expired: '&3Koodisi on vanhentunut! Suorita toinen herkkä komento saadaksesi uuden koodin!'
|
||||||
# TODO email_needed: '&3To verify your identity you need to link an email address with your account!!'
|
email_needed: '&3Vahvistaaksesi henkilöllisyytesi sinun on liitettävä sähköpostiosoite tilillesi!!'
|
||||||
|
|
||||||
# Time units
|
# Time units
|
||||||
time:
|
time:
|
||||||
# TODO second: 'second'
|
second: 'sekunti'
|
||||||
# TODO seconds: 'seconds'
|
seconds: 'sekuntia'
|
||||||
# TODO minute: 'minute'
|
minute: 'minuutti'
|
||||||
# TODO minutes: 'minutes'
|
minutes: 'minuuttia'
|
||||||
# TODO hour: 'hour'
|
hour: 'tunti'
|
||||||
# TODO hours: 'hours'
|
hours: 'tuntia'
|
||||||
# TODO day: 'day'
|
day: 'päivä'
|
||||||
# TODO days: 'days'
|
days: 'päivää'
|
||||||
|
|
||||||
# Two-factor authentication
|
# Two-factor authentication
|
||||||
two_factor:
|
two_factor:
|
||||||
# TODO code_created: '&2Your secret code is %code. You can scan it from here %url'
|
code_created: '&2Salainen koodisi on %code. Voit skannata sen täältä %url'
|
||||||
# TODO confirmation_required: 'Please confirm your code with /2fa confirm <code>'
|
confirmation_required: 'Vahvista koodisi komennolla /2fa confirm <koodi>'
|
||||||
# TODO code_required: 'Please submit your two-factor authentication code with /2fa code <code>'
|
code_required: 'Lähetä kaksivaiheisen todennuksen koodisi komennolla /2fa code <koodi>'
|
||||||
# TODO already_enabled: 'Two-factor authentication is already enabled for your account!'
|
already_enabled: 'Kaksivaiheinen todennus on jo käytössä tililläsi!'
|
||||||
# TODO enable_error_no_code: 'No 2fa key has been generated for you or it has expired. Please run /2fa add'
|
enable_error_no_code: 'Sinulle ei ole luotu kaksivaiheisen todennuksen avainta tai se on vanhentunut. Suorita komento /2fa add'
|
||||||
# TODO enable_success: 'Successfully enabled two-factor authentication for your account'
|
enable_success: 'Kaksivaiheinen todennus onnistuneesti käytössä tililläsi'
|
||||||
# TODO enable_error_wrong_code: 'Wrong code or code has expired. Please run /2fa add'
|
enable_error_wrong_code: 'Väärä koodi tai koodi on vanhentunut. Suorita komento /2fa add'
|
||||||
# TODO not_enabled_error: 'Two-factor authentication is not enabled for your account. Run /2fa add'
|
not_enabled_error: 'Kaksivaiheista todennusta ei ole käytössä tililläsi. Suorita komento /2fa add'
|
||||||
# TODO removed_success: 'Successfully removed two-factor auth from your account'
|
removed_success: 'Kaksivaiheinen todennus poistettu tililtäsi onnistuneesti'
|
||||||
# TODO invalid_code: 'Invalid code!'
|
invalid_code: 'Virheellinen koodi!'
|
||||||
|
|
||||||
|
# 3rd party features: Bedrock Auto Login
|
||||||
|
bedrock_auto_login:
|
||||||
|
success: '&aBedrock-automaattinen sisäänkirjautuminen onnistui!'
|
||||||
|
|
||||||
|
# 3rd party features: Login Location Fix
|
||||||
|
login_location_fix:
|
||||||
|
fix_portal: '&aOlet jumissa portaalissa sisäänkirjautumisen aikana.'
|
||||||
|
fix_underground: '&aOlet jumissa maan alla sisäänkirjautumisen aikana.'
|
||||||
|
cannot_fix_underground: '&aOlet jumissa maan alla sisäänkirjautumisen aikana, mutta emme voi korjata sitä.'
|
||||||
|
|
||||||
|
# 3rd party features: Double Login Fix
|
||||||
|
double_login_fix:
|
||||||
|
fix_message: '&cSinut on katkaistu kaksoiskirjautumisen vuoksi.'
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ password:
|
|||||||
unsafe_password: '&cCe mot de passe n''est pas accepté, choisissez-en un autre.'
|
unsafe_password: '&cCe mot de passe n''est pas accepté, choisissez-en un autre.'
|
||||||
forbidden_characters: '&cVotre mot de passe contient des caractères non autorisés. Caractères permis : %valid_chars'
|
forbidden_characters: '&cVotre mot de passe contient des caractères non autorisés. Caractères permis : %valid_chars'
|
||||||
wrong_length: '&cVotre mot de passe est trop court ou trop long !'
|
wrong_length: '&cVotre mot de passe est trop court ou trop long !'
|
||||||
|
pwned_password: '&cLe mot de passe choisi n''est pas sécurisé. Il a déjà été utilisé %pwned_count fois ! Veuillez utiliser un mot de passe fort...'
|
||||||
|
|
||||||
# Identification
|
# Identification
|
||||||
login:
|
login:
|
||||||
@@ -60,6 +61,7 @@ unregister:
|
|||||||
# Autres messages
|
# Autres messages
|
||||||
misc:
|
misc:
|
||||||
account_not_activated: '&fCe compte n''est pas actif, consultez vos mails !'
|
account_not_activated: '&fCe compte n''est pas actif, consultez vos mails !'
|
||||||
|
not_activated: '&cCompte non activé, veuillez vous inscrire et l''activer avant de réessayer.'
|
||||||
password_changed: '&aMot de passe changé avec succès !'
|
password_changed: '&aMot de passe changé avec succès !'
|
||||||
logout: '&cVous avez été déconnecté !'
|
logout: '&cVous avez été déconnecté !'
|
||||||
reload: '&aAuthMe a été relancé avec succès.'
|
reload: '&aAuthMe a été relancé avec succès.'
|
||||||
@@ -158,3 +160,17 @@ two_factor:
|
|||||||
not_enabled_error: '&cL''authentification à double facteur n''est pas active sur votre compte. Faites "/2fa add" pour l''activer.'
|
not_enabled_error: '&cL''authentification à double facteur n''est pas active sur votre compte. Faites "/2fa add" pour l''activer.'
|
||||||
removed_success: '&cL''authentification à double facteur a été désactivé pour votre compte !'
|
removed_success: '&cL''authentification à double facteur a été désactivé pour votre compte !'
|
||||||
invalid_code: '&cCode secret invalide !'
|
invalid_code: '&cCode secret invalide !'
|
||||||
|
|
||||||
|
# 3rd party features: Bedrock Auto Login
|
||||||
|
bedrock_auto_login:
|
||||||
|
success: '&aConnexion automatique Bedrock réussie !'
|
||||||
|
|
||||||
|
# 3rd party features: Login Location Fix
|
||||||
|
login_location_fix:
|
||||||
|
fix_portal: '&aVous êtes bloqué dans un portail lors de la connexion.'
|
||||||
|
fix_underground: '&aVous êtes bloqué sous terre lors de la connexion.'
|
||||||
|
cannot_fix_underground: '&aVous êtes bloqué sous terre lors de la connexion, mais nous ne pouvons pas le corriger.'
|
||||||
|
|
||||||
|
# 3rd party features: Double Login Fix
|
||||||
|
double_login_fix:
|
||||||
|
fix_message: '&cVous avez été déconnecté en raison d''une double connexion.'
|
||||||
|
|||||||
@@ -9,17 +9,18 @@ registration:
|
|||||||
name_taken: '&cEse nome de usuario xa está rexistrado'
|
name_taken: '&cEse nome de usuario xa está rexistrado'
|
||||||
register_request: '&cPor favor, rexístrate con "/register <contrasinal> <confirmarContrasinal>"'
|
register_request: '&cPor favor, rexístrate con "/register <contrasinal> <confirmarContrasinal>"'
|
||||||
command_usage: '&cUso: /register contrasinal confirmarContrasinal'
|
command_usage: '&cUso: /register contrasinal confirmarContrasinal'
|
||||||
reg_only: '&fSó xogadores rexistrados! Por favor, visita http://example.com para rexistrarte'
|
reg_only: '&fSó xogadores rexistrados! Por favor, visita https://example.com para rexistrarte'
|
||||||
success: '&cRexistrado con éxito!'
|
success: '&cRexistrado con éxito!'
|
||||||
# TODO kicked_admin_registered: 'An admin just registered you; please log in again'
|
kicked_admin_registered: 'Un administrador acaba de rexistrarte; por favor, volve a iniciar sesión.'
|
||||||
|
|
||||||
# Password errors on registration
|
# Password errors on registration
|
||||||
password:
|
password:
|
||||||
match_error: '&fO contrasinal non coincide'
|
match_error: '&fO contrasinal non coincide'
|
||||||
# TODO name_in_password: '&cYou can''t use your name as password, please choose another one...'
|
name_in_password: '&cNon podes usar o teu nome como contrasinal, por favor, escolle outro...'
|
||||||
# TODO unsafe_password: '&cThe chosen password isn''t safe, please choose another one...'
|
unsafe_password: '&cO contrasinal escollido non é seguro, por favor, escolle outro...'
|
||||||
# TODO forbidden_characters: '&4Your password contains illegal characters. Allowed chars: %valid_chars'
|
forbidden_characters: '&4O teu contrasinal contén caracteres non permitidos. Caracteres permitidos: %valid_chars'
|
||||||
wrong_length: '&fO teu contrasinal non alcanza a lonxitude mínima ou excede a lonxitude máxima'
|
wrong_length: '&fO teu contrasinal non alcanza a lonxitude mínima ou excede a lonxitude máxima'
|
||||||
|
pwned_password: '&cO contrasinal elixido non é seguro. Foi usado %pwned_count veces xa! Por favor, use un contrasinal forte...'
|
||||||
|
|
||||||
# Login
|
# Login
|
||||||
login:
|
login:
|
||||||
@@ -31,8 +32,8 @@ login:
|
|||||||
|
|
||||||
# Errors
|
# Errors
|
||||||
error:
|
error:
|
||||||
# TODO denied_command: '&cIn order to use this command you must be authenticated!'
|
denied_command: '&cPara usar este comando debes estar autenticado!'
|
||||||
# TODO denied_chat: '&cIn order to chat you must be authenticated!'
|
denied_chat: '&cPara chatear debes estar autenticado!'
|
||||||
unregistered_user: '&cEse nome de usuario non está rexistrado'
|
unregistered_user: '&cEse nome de usuario non está rexistrado'
|
||||||
not_logged_in: '&cNon te identificaches!'
|
not_logged_in: '&cNon te identificaches!'
|
||||||
no_permission: '&cNon tes o permiso'
|
no_permission: '&cNon tes o permiso'
|
||||||
@@ -40,12 +41,12 @@ error:
|
|||||||
max_registration: '&fExcediches o máximo de rexistros para a túa Conta'
|
max_registration: '&fExcediches o máximo de rexistros para a túa Conta'
|
||||||
logged_in: '&cXa estás identificado!'
|
logged_in: '&cXa estás identificado!'
|
||||||
kick_for_vip: '&cUn xogador VIP uniuse ao servidor cheo!'
|
kick_for_vip: '&cUn xogador VIP uniuse ao servidor cheo!'
|
||||||
# TODO kick_unresolved_hostname: '&cAn error occurred: unresolved player hostname!'
|
kick_unresolved_hostname: '&cProduciuse un erro: nome do xogador non resolto!'
|
||||||
# TODO tempban_max_logins: '&cYou have been temporarily banned for failing to log in too many times.'
|
tempban_max_logins: '&cEstás temporalmente expulsado por fallar ao acceder en demasiadas ocasións.'
|
||||||
|
|
||||||
# AntiBot
|
# AntiBot
|
||||||
antibot:
|
antibot:
|
||||||
# TODO kick_antibot: 'AntiBot protection mode is enabled! You have to wait some minutes before joining the server.'
|
kick_antibot: 'O modo de protección AntiBot está activado! Tes que agardar uns minutos antes de unirte ao servidor.'
|
||||||
auto_enabled: '[AuthMe] AntiBotMod conectouse automáticamente debido a conexións masivas!'
|
auto_enabled: '[AuthMe] AntiBotMod conectouse automáticamente debido a conexións masivas!'
|
||||||
auto_disabled: '[AuthMe] AntiBotMod desactivouse automáticamente despois de %m minutos, esperemos que a invasión se detivera'
|
auto_disabled: '[AuthMe] AntiBotMod desactivouse automáticamente despois de %m minutos, esperemos que a invasión se detivera'
|
||||||
|
|
||||||
@@ -57,12 +58,13 @@ unregister:
|
|||||||
# Other messages
|
# Other messages
|
||||||
misc:
|
misc:
|
||||||
account_not_activated: '&fA túa conta aínda non está activada, comproba a túa bandexa de correo!!'
|
account_not_activated: '&fA túa conta aínda non está activada, comproba a túa bandexa de correo!!'
|
||||||
|
not_activated: '&cConta non activada, por favor rexístrese e actívea antes de tentalo de novo.'
|
||||||
password_changed: '&cCambiouse o contrasinal!'
|
password_changed: '&cCambiouse o contrasinal!'
|
||||||
logout: '&cSesión pechada con éxito'
|
logout: '&cSesión pechada con éxito'
|
||||||
reload: '&fRecargáronse a configuración e a base de datos'
|
reload: '&fRecargáronse a configuración e a base de datos'
|
||||||
usage_change_password: '&fUso: /changepassword <contrasinalVello> <contrasinalNovo>'
|
usage_change_password: '&fUso: /changepassword <contrasinalVello> <contrasinalNovo>'
|
||||||
# TODO accounts_owned_self: 'You own %count accounts:'
|
accounts_owned_self: 'Tes %count contas:'
|
||||||
# TODO accounts_owned_other: 'The player %name has %count accounts:'
|
accounts_owned_other: 'O xogador %name ten %count contas:'
|
||||||
|
|
||||||
# Session messages
|
# Session messages
|
||||||
session:
|
session:
|
||||||
@@ -71,15 +73,15 @@ session:
|
|||||||
|
|
||||||
# Error messages when joining
|
# Error messages when joining
|
||||||
on_join_validation:
|
on_join_validation:
|
||||||
# TODO same_ip_online: 'A player with the same IP is already in game!'
|
same_ip_online: 'Un xogador coa mesma IP xa está en xogo!'
|
||||||
same_nick_online: '&fXa está xogando alguén co mesmo nome'
|
same_nick_online: '&fXa está xogando alguén co mesmo nome'
|
||||||
name_length: '&cO teu nome é demasiado curto ou demasiado longo'
|
name_length: '&cO teu nome é demasiado curto ou demasiado longo'
|
||||||
characters_in_name: '&cO teu nome contén caracteres ilegais. Caracteres permitidos: %valid_chars'
|
characters_in_name: '&cO teu nome contén caracteres ilegais. Caracteres permitidos: %valid_chars'
|
||||||
kick_full_server: '&cO servidor está actualmente cheo, sentímolo!'
|
kick_full_server: '&cO servidor está actualmente cheo, sentímolo!'
|
||||||
country_banned: 'O teu país está bloqueado neste servidor'
|
country_banned: '&4O teu país está prohibido neste servidor!'
|
||||||
# TODO not_owner_error: 'You are not the owner of this account. Please choose another name!'
|
not_owner_error: 'Non es o dono desta conta. Por favor, escolle outro nome!'
|
||||||
# TODO invalid_name_case: 'You should join using username %valid, not %invalid.'
|
invalid_name_case: 'Deberías unirte usando o nome de usuario %valid, non %invalid.'
|
||||||
# TODO quick_command: 'You used a command too fast! Please, join the server again and wait more before using any command.'
|
quick_command: 'Usaches un comando moi rápido! Por favor, úneste ao servidor de novo e agarda máis antes de usar calquera comando.'
|
||||||
|
|
||||||
# Email
|
# Email
|
||||||
email:
|
email:
|
||||||
@@ -90,17 +92,16 @@ email:
|
|||||||
old_email_invalid: '[AuthMe] O correo vello non é válido!'
|
old_email_invalid: '[AuthMe] O correo vello non é válido!'
|
||||||
invalid: '[AuthMe] Correo non válido'
|
invalid: '[AuthMe] Correo non válido'
|
||||||
added: '[AuthMe] Correo engadido!'
|
added: '[AuthMe] Correo engadido!'
|
||||||
# TODO add_not_allowed: '&cAdding email was not allowed'
|
add_not_allowed: '&cEngadir o correo electrónico non estaba permitido.'
|
||||||
request_confirmation: '[AuthMe] Confirma o teu correo!'
|
request_confirmation: '[AuthMe] Confirma o teu correo!'
|
||||||
changed: '[AuthMe] Cambiouse o correo!'
|
changed: '[AuthMe] Cambiouse o correo!'
|
||||||
# TODO change_not_allowed: '&cChanging email was not allowed'
|
email_show: '&2O teu enderezo de correo electrónico actual é: &f%email'
|
||||||
# TODO email_show: '&2Your current email address is: &f%email'
|
no_email_for_account: '&2Actualmente non tes ningún enderezo de correo electrónico asociado con esta conta.'
|
||||||
# TODO no_email_for_account: '&2You currently don''t have email address associated with this account.'
|
already_used: '&4O enderezo de correo electrónico xa está a ser usado'
|
||||||
# TODO already_used: '&4The email address is already being used'
|
incomplete_settings: 'Erro: non todos os axustes necesarios están configurados para enviar correos electrónicos. Por favor, contacta cun administrador.'
|
||||||
# TODO incomplete_settings: 'Error: not all required settings are set for sending emails. Please contact an admin.'
|
send_failure: 'O correo electrónico non puido ser enviado. Por favor, contacta cun administrador.'
|
||||||
# TODO send_failure: 'The email could not be sent. Please contact an administrator.'
|
change_password_expired: 'Non podes cambiar o teu contrasinal usando este comando máis.'
|
||||||
# TODO change_password_expired: 'You cannot change your password using this command anymore.'
|
email_cooldown_error: '&cUn correo electrónico xa foi enviado recentemente. Debes agardar %time antes de poder enviar un novo.'
|
||||||
# TODO email_cooldown_error: '&cAn email was already sent recently. You must wait %time before you can send a new one.'
|
|
||||||
|
|
||||||
# Password recovery by email
|
# Password recovery by email
|
||||||
recovery:
|
recovery:
|
||||||
@@ -108,50 +109,64 @@ recovery:
|
|||||||
command_usage: '&fUso: /email recovery <correo>'
|
command_usage: '&fUso: /email recovery <correo>'
|
||||||
email_sent: '[AuthMe] Enviouse o correo de confirmación!'
|
email_sent: '[AuthMe] Enviouse o correo de confirmación!'
|
||||||
code:
|
code:
|
||||||
# TODO code_sent: 'A recovery code to reset your password has been sent to your email.'
|
code_sent: 'Enviouse un código de recuperación para restablecer o teu contrasinal ao teu correo electrónico.'
|
||||||
# TODO incorrect: 'The recovery code is not correct! You have %count tries remaining.'
|
incorrect: 'O código de recuperación non é correcto! Tes %count intentos restantes.'
|
||||||
# TODO tries_exceeded: 'You have exceeded the maximum number attempts to enter the recovery code. Use "/email recovery [email]" to generate a new one.'
|
tries_exceeded: 'Excedeches o número máximo de intentos para ingresar o código de recuperación. Usa "/email recovery [email]" para xerar un novo.'
|
||||||
# TODO correct: 'Recovery code entered correctly!'
|
correct: 'O código de recuperación foi ingresado correctamente!'
|
||||||
# TODO change_password: 'Please use the command /email setpassword <new password> to change your password immediately.'
|
change_password: 'Usa o comando /email setpassword <novo contrasinal> para cambiar o teu contrasinal inmediatamente.'
|
||||||
|
|
||||||
# Captcha
|
# Captcha
|
||||||
captcha:
|
captcha:
|
||||||
usage_captcha: '&cNecesitas escribir un captcha, por favor escribe: /captcha %captcha_code'
|
usage_captcha: '&cNecesitas escribir un captcha, por favor escribe: /captcha %captcha_code'
|
||||||
wrong_captcha: '&cCaptcha equivocado, por favor usa: /captcha %captcha_code'
|
wrong_captcha: '&cCaptcha equivocado, por favor usa: /captcha %captcha_code'
|
||||||
valid_captcha: '&cO teu captcha é válido !'
|
valid_captcha: '&cO teu captcha é válido !'
|
||||||
# TODO captcha_for_registration: 'To register you have to solve a captcha first, please use the command: /captcha %captcha_code'
|
captcha_for_registration: 'Para rexistrarte debes resolver un captcha primeiro, por favor, usa o comando: /captcha %captcha_code'
|
||||||
# TODO register_captcha_valid: '&2Valid captcha! You may now register with /register'
|
register_captcha_valid: '&2Captcha válido! Agora podes rexistrarte con /register'
|
||||||
|
|
||||||
# Verification code
|
# Verification code
|
||||||
verification:
|
verification:
|
||||||
# TODO code_required: '&3This command is sensitive and requires an email verification! Check your inbox and follow the email''s instructions.'
|
code_required: '&3Este comando é sensible e require unha verificación por correo electrónico! Comproba a túa bandeixa de entrada e segue as instrucións do correo electrónico.'
|
||||||
# TODO command_usage: '&cUsage: /verification <code>'
|
command_usage: '&cUso: /verification <código>'
|
||||||
# TODO incorrect_code: '&cIncorrect code, please type "/verification <code>" into the chat, using the code you received by email'
|
incorrect_code: '&cCódigo incorrecto, por favor, escribe "/verification <código>" no chat, usando o código que recibiches por correo electrónico'
|
||||||
# TODO success: '&2Your identity has been verified! You can now execute all commands within the current session!'
|
success: '&2A túa identidade foi verificada! Agora podes executar todos os comandos dentro da sesión actual!'
|
||||||
# TODO already_verified: '&2You can already execute every sensitive command within the current session!'
|
already_verified: '&2Xa podes executar todos os comandos sensibles dentro da sesión actual!'
|
||||||
# TODO code_expired: '&3Your code has expired! Execute another sensitive command to get a new code!'
|
code_expired: '&3O teu código caducou! Executa outro comando sensible para obter un novo código!'
|
||||||
# TODO email_needed: '&3To verify your identity you need to link an email address with your account!!'
|
email_needed: '&3Para verificar a túa identidade debes vincular un enderezo de correo electrónico á túa conta!!'
|
||||||
|
|
||||||
# Time units
|
# Time units
|
||||||
time:
|
time:
|
||||||
# TODO second: 'second'
|
second: 'segundo'
|
||||||
# TODO seconds: 'seconds'
|
seconds: 'segundos'
|
||||||
# TODO minute: 'minute'
|
minute: 'minuto'
|
||||||
# TODO minutes: 'minutes'
|
minutes: 'minutos'
|
||||||
# TODO hour: 'hour'
|
hour: 'hora'
|
||||||
# TODO hours: 'hours'
|
hours: 'horas'
|
||||||
# TODO day: 'day'
|
day: 'día'
|
||||||
# TODO days: 'days'
|
days: 'días'
|
||||||
|
|
||||||
# Two-factor authentication
|
# Two-factor authentication
|
||||||
two_factor:
|
two_factor:
|
||||||
# TODO code_created: '&2Your secret code is %code. You can scan it from here %url'
|
code_created: '&2O teu código secreto é %code. Podes escanealo desde aquí %url'
|
||||||
# TODO confirmation_required: 'Please confirm your code with /2fa confirm <code>'
|
confirmation_required: 'Por favor, confirma o teu código con /2fa confirm <código>'
|
||||||
# TODO code_required: 'Please submit your two-factor authentication code with /2fa code <code>'
|
code_required: 'Por favor, envía o teu código de autenticación en dous pasos con /2fa code <código>'
|
||||||
# TODO already_enabled: 'Two-factor authentication is already enabled for your account!'
|
already_enabled: 'A autenticación en dous pasos xa está activada para a túa conta!'
|
||||||
# TODO enable_error_no_code: 'No 2fa key has been generated for you or it has expired. Please run /2fa add'
|
enable_error_no_code: 'Non se xerou ningún clave 2fa para ti ou caducou. Por favor, executa /2fa add'
|
||||||
# TODO enable_success: 'Successfully enabled two-factor authentication for your account'
|
enable_success: 'Autenticación en dous pasos activada con éxito para a túa conta'
|
||||||
# TODO enable_error_wrong_code: 'Wrong code or code has expired. Please run /2fa add'
|
enable_error_wrong_code: 'Código incorrecto ou caducado. Por favor, executa /2fa add'
|
||||||
# TODO not_enabled_error: 'Two-factor authentication is not enabled for your account. Run /2fa add'
|
not_enabled_error: 'A autenticación en dous pasos non está activada para a túa conta. Executa /2fa add'
|
||||||
# TODO removed_success: 'Successfully removed two-factor auth from your account'
|
removed_success: 'Autenticación en dous pasos eliminada con éxito da túa conta'
|
||||||
# TODO invalid_code: 'Invalid code!'
|
invalid_code: 'Código incorrecto!'
|
||||||
|
|
||||||
|
# 3rd party features: Bedrock Auto Login
|
||||||
|
bedrock_auto_login:
|
||||||
|
success: '&aInicio de sesión automático de Bedrock exitoso!'
|
||||||
|
|
||||||
|
# 3rd party features: Login Location Fix
|
||||||
|
login_location_fix:
|
||||||
|
fix_portal: '&aEstá atrapado no portal durante o inicio de sesión.'
|
||||||
|
fix_underground: '&aEstá atrapado baixo terra durante o inicio de sesión.'
|
||||||
|
cannot_fix_underground: '&aEstá atrapado baixo terra durante o inicio de sesión, pero non podemos arranxalo.'
|
||||||
|
|
||||||
|
# 3rd party features: Double Login Fix
|
||||||
|
double_login_fix:
|
||||||
|
fix_message: '&cFoi desconectado debido a un inicio de sesión dobre.'
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ password:
|
|||||||
unsafe_password: '&cA választott jelszó nem biztonságos, kérlek, válassz másikat...'
|
unsafe_password: '&cA választott jelszó nem biztonságos, kérlek, válassz másikat...'
|
||||||
forbidden_characters: '&4A választott jelszó nem engedélyezett karaktereket tartalmaz. Engedélyezett karakterek: %valid_chars'
|
forbidden_characters: '&4A választott jelszó nem engedélyezett karaktereket tartalmaz. Engedélyezett karakterek: %valid_chars'
|
||||||
wrong_length: 'A jelszavad nem éri el a minimális hosszúságot!'
|
wrong_length: 'A jelszavad nem éri el a minimális hosszúságot!'
|
||||||
|
pwned_password: '&cA választott jelszavad nem biztonságos. Már %pwned_count alkalommal használták! Kérlek használj erős jelszót...'
|
||||||
|
|
||||||
# Login
|
# Login
|
||||||
login:
|
login:
|
||||||
@@ -40,7 +41,7 @@ error:
|
|||||||
max_registration: '&cElérted a maximálisan beregisztrálható karakterek számát. (%reg_count/%max_acc %reg_names)'
|
max_registration: '&cElérted a maximálisan beregisztrálható karakterek számát. (%reg_count/%max_acc %reg_names)'
|
||||||
logged_in: '&cMár be vagy jelentkezve!'
|
logged_in: '&cMár be vagy jelentkezve!'
|
||||||
kick_for_vip: '&3VIP játékos csatlakozott a szerverhez!'
|
kick_for_vip: '&3VIP játékos csatlakozott a szerverhez!'
|
||||||
# TODO kick_unresolved_hostname: '&cAn error occurred: unresolved player hostname!'
|
kick_unresolved_hostname: '&cHiba történt: feloldatlan játékos hosztnév!'
|
||||||
tempban_max_logins: '&cIdeiglenesen ki lettél tiltva, mert túl sok alkalommal rontottad el a jelszavad!'
|
tempban_max_logins: '&cIdeiglenesen ki lettél tiltva, mert túl sok alkalommal rontottad el a jelszavad!'
|
||||||
|
|
||||||
# AntiBot
|
# AntiBot
|
||||||
@@ -57,6 +58,7 @@ unregister:
|
|||||||
# Other messages
|
# Other messages
|
||||||
misc:
|
misc:
|
||||||
account_not_activated: '&cA felhasználód aktiválása még nem történt meg, ellenőrizd a megadott emailed!'
|
account_not_activated: '&cA felhasználód aktiválása még nem történt meg, ellenőrizd a megadott emailed!'
|
||||||
|
not_activated: '&cA fiók nincs aktiválva, kérlek regisztrálj és aktiváld azt mielőtt újra megpróbálkoznál.'
|
||||||
password_changed: '&cA jelszó sikeresen megváltoztatva!'
|
password_changed: '&cA jelszó sikeresen megváltoztatva!'
|
||||||
logout: '&cSikeresen kijelentkeztél!'
|
logout: '&cSikeresen kijelentkeztél!'
|
||||||
reload: 'Beállítások és az adatbázis újratöltve!'
|
reload: 'Beállítások és az adatbázis újratöltve!'
|
||||||
@@ -155,3 +157,17 @@ two_factor:
|
|||||||
not_enabled_error: 'Kétszámjegyű hitelesítés nincs engedélyezve a fiókodban. Futtasd a /2fa add'
|
not_enabled_error: 'Kétszámjegyű hitelesítés nincs engedélyezve a fiókodban. Futtasd a /2fa add'
|
||||||
removed_success: 'Sikeresen eltávolítottad a fiók két számjegyű hitelesítőjét'
|
removed_success: 'Sikeresen eltávolítottad a fiók két számjegyű hitelesítőjét'
|
||||||
invalid_code: 'Érvénytelen kód!'
|
invalid_code: 'Érvénytelen kód!'
|
||||||
|
|
||||||
|
# 3rd party features: Bedrock Auto Login
|
||||||
|
bedrock_auto_login:
|
||||||
|
success: '&aBedrock automatikus bejelentkezés sikeres!'
|
||||||
|
|
||||||
|
# 3rd party features: Login Location Fix
|
||||||
|
login_location_fix:
|
||||||
|
fix_portal: '&aBeragadtál a portálban a bejelentkezés közben.'
|
||||||
|
fix_underground: '&aBeragadtál a föld alatt a bejelentkezés közben.'
|
||||||
|
cannot_fix_underground: '&aBeragadtál a föld alatt a bejelentkezés közben, de nem tudjuk megjavítani.'
|
||||||
|
|
||||||
|
# 3rd party features: Double Login Fix
|
||||||
|
double_login_fix:
|
||||||
|
fix_message: '&cKét bejelentkezés miatt lecsatlakoztattak.'
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ registration:
|
|||||||
name_taken: '&cKamu telah mendaftarkan username ini!'
|
name_taken: '&cKamu telah mendaftarkan username ini!'
|
||||||
register_request: '&3Silahkan mendaftar ke server menggunakan perintah "/register <password> <ulangiPassword>"'
|
register_request: '&3Silahkan mendaftar ke server menggunakan perintah "/register <password> <ulangiPassword>"'
|
||||||
command_usage: '&cPenggunaan: /register <password> <KonfirmasiPassword>'
|
command_usage: '&cPenggunaan: /register <password> <KonfirmasiPassword>'
|
||||||
reg_only: '&4Hanya pengguna terdaftar yang bisa bergabung! Silahkan kunjungi http://example.com untuk mendaftar!'
|
reg_only: '&4Hanya pengguna terdaftar yang bisa bergabung! Silahkan kunjungi https://example.com untuk mendaftar!'
|
||||||
success: '&2Register berhasil!'
|
success: '&2Register berhasil!'
|
||||||
kicked_admin_registered: 'Administrator sudah meregistrasi kamu; dimohon untuk login kembali'
|
kicked_admin_registered: 'Administrator sudah meregistrasi kamu; dimohon untuk login kembali'
|
||||||
|
|
||||||
@@ -40,7 +40,7 @@ error:
|
|||||||
max_registration: '&Kamu telah mencapai batas maksimum pendaftaran di server ini!'
|
max_registration: '&Kamu telah mencapai batas maksimum pendaftaran di server ini!'
|
||||||
logged_in: '&cKamu telah login!'
|
logged_in: '&cKamu telah login!'
|
||||||
kick_for_vip: '&3Player VIP mencoba masuk pada saat server sedang penuh!'
|
kick_for_vip: '&3Player VIP mencoba masuk pada saat server sedang penuh!'
|
||||||
# TODO kick_unresolved_hostname: '&cAn error occurred: unresolved player hostname!'
|
kick_unresolved_hostname: '&cTerjadi kesalahan: nama host pemain tidak dapat dipecahkan!'
|
||||||
tempban_max_logins: '&cKamu untuk sementara diblokir karena terlalu sering salah saat login.'
|
tempban_max_logins: '&cKamu untuk sementara diblokir karena terlalu sering salah saat login.'
|
||||||
|
|
||||||
# AntiBot
|
# AntiBot
|
||||||
@@ -57,6 +57,7 @@ unregister:
|
|||||||
# Other messages
|
# Other messages
|
||||||
misc:
|
misc:
|
||||||
account_not_activated: '&cAkunmu belum diaktifkan, silahkan periksa email kamu!'
|
account_not_activated: '&cAkunmu belum diaktifkan, silahkan periksa email kamu!'
|
||||||
|
not_activated: '&cAkun belum diaktifkan, silakan daftar dan aktivasi sebelum mencoba lagi.'
|
||||||
password_changed: '&2Berhasil mengubah password!'
|
password_changed: '&2Berhasil mengubah password!'
|
||||||
logout: '&2Berhasil logout!'
|
logout: '&2Berhasil logout!'
|
||||||
reload: '&2Konfigurasi dan database telah dimuat ulang!'
|
reload: '&2Konfigurasi dan database telah dimuat ulang!'
|
||||||
@@ -124,13 +125,13 @@ captcha:
|
|||||||
|
|
||||||
# Verification code
|
# Verification code
|
||||||
verification:
|
verification:
|
||||||
# TODO code_required: '&3This command is sensitive and requires an email verification! Check your inbox and follow the email''s instructions.'
|
code_required: '&3Perintah ini sensitif dan memerlukan verifikasi email! Periksa kotak masuk Anda dan ikuti petunjuk email.'
|
||||||
# TODO command_usage: '&cUsage: /verification <code>'
|
command_usage: '&cPenggunaan: /verification <kode>'
|
||||||
# TODO incorrect_code: '&cIncorrect code, please type "/verification <code>" into the chat, using the code you received by email'
|
incorrect_code: '&cKode salah, ketik "/verification <kode>" di chat, menggunakan kode yang Anda terima melalui email'
|
||||||
# TODO success: '&2Your identity has been verified! You can now execute all commands within the current session!'
|
success: '&2Identitas Anda telah diverifikasi! Anda sekarang dapat menjalankan semua perintah dalam sesi saat ini!'
|
||||||
# TODO already_verified: '&2You can already execute every sensitive command within the current session!'
|
already_verified: '&2Anda sudah dapat menjalankan setiap perintah sensitif dalam sesi saat ini!'
|
||||||
# TODO code_expired: '&3Your code has expired! Execute another sensitive command to get a new code!'
|
code_expired: '&3Kode Anda telah kedaluwarsa! Jalankan perintah sensitif lain untuk mendapatkan kode baru!'
|
||||||
# TODO email_needed: '&3To verify your identity you need to link an email address with your account!!'
|
email_needed: '&3Untuk memverifikasi identitas Anda, Anda perlu menyambungkan alamat email dengan akun Anda!!'
|
||||||
|
|
||||||
# Time units
|
# Time units
|
||||||
time:
|
time:
|
||||||
@@ -155,3 +156,17 @@ two_factor:
|
|||||||
not_enabled_error: 'Autentikasi dua langkah tidak diaktifkan untuk akunmu. Jalankan /2fa add'
|
not_enabled_error: 'Autentikasi dua langkah tidak diaktifkan untuk akunmu. Jalankan /2fa add'
|
||||||
removed_success: 'Sukses menghapus autentikasi dua langkah dari akunmu'
|
removed_success: 'Sukses menghapus autentikasi dua langkah dari akunmu'
|
||||||
invalid_code: 'Kode tidak valid!'
|
invalid_code: 'Kode tidak valid!'
|
||||||
|
|
||||||
|
# 3rd party features: Bedrock Auto Login
|
||||||
|
bedrock_auto_login:
|
||||||
|
success: '&aLogin otomatis Bedrock berhasil!'
|
||||||
|
|
||||||
|
# 3rd party features: Login Location Fix
|
||||||
|
login_location_fix:
|
||||||
|
fix_portal: '&aAnda terjebak di portal selama proses login.'
|
||||||
|
fix_underground: '&aAnda terjebak di bawah tanah selama proses login.'
|
||||||
|
cannot_fix_underground: '&aAnda terjebak di bawah tanah selama proses login, tetapi kami tidak dapat memperbaikinya.'
|
||||||
|
|
||||||
|
# 3rd party features: Double Login Fix
|
||||||
|
double_login_fix:
|
||||||
|
fix_message: '&cAnda telah terputus karena login ganda.'
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ registration:
|
|||||||
name_taken: '&cHai già eseguito la registrazione!'
|
name_taken: '&cHai già eseguito la registrazione!'
|
||||||
register_request: '&3Per favore, esegui la registrazione con il comando: /register <password> <confermaPassword>'
|
register_request: '&3Per favore, esegui la registrazione con il comando: /register <password> <confermaPassword>'
|
||||||
command_usage: '&cUtilizzo: /register <password> <confermaPassword>'
|
command_usage: '&cUtilizzo: /register <password> <confermaPassword>'
|
||||||
reg_only: '&4Puoi giocare in questo server solo dopo aver eseguito la registrazione attraverso il sito web! Per favore, vai su http://esempio.it per procedere!'
|
reg_only: '&4Puoi giocare in questo server solo dopo aver eseguito la registrazione attraverso il sito web! Per favore, vai su https://esempio.it per procedere!'
|
||||||
success: '&2Registrato correttamente!'
|
success: '&2Registrato correttamente!'
|
||||||
kicked_admin_registered: 'Un amministratore ti ha appena registrato, per favore rientra nel server'
|
kicked_admin_registered: 'Un amministratore ti ha appena registrato, per favore rientra nel server'
|
||||||
|
|
||||||
@@ -21,6 +21,7 @@ password:
|
|||||||
unsafe_password: '&cLa password che hai inserito non è sicura, per favore scegline un''altra...'
|
unsafe_password: '&cLa password che hai inserito non è sicura, per favore scegline un''altra...'
|
||||||
forbidden_characters: '&4La tua password contiene caratteri non consentiti. I caratteri consentiti sono: %valid_chars'
|
forbidden_characters: '&4La tua password contiene caratteri non consentiti. I caratteri consentiti sono: %valid_chars'
|
||||||
wrong_length: '&cLa password che hai inserito è troppo corta o troppo lunga, per favore scegline un''altra...'
|
wrong_length: '&cLa password che hai inserito è troppo corta o troppo lunga, per favore scegline un''altra...'
|
||||||
|
pwned_password: '&cLa password scelta non è sicura. È stata già utilizzata %pwned_count volte! Si prega di utilizzare una password sicura...'
|
||||||
|
|
||||||
# Login
|
# Login
|
||||||
login:
|
login:
|
||||||
@@ -58,6 +59,7 @@ unregister:
|
|||||||
# Other messages
|
# Other messages
|
||||||
misc:
|
misc:
|
||||||
account_not_activated: '&cIl tuo account non è stato ancora verificato, controlla fra le tue email per scoprire come attivarlo!'
|
account_not_activated: '&cIl tuo account non è stato ancora verificato, controlla fra le tue email per scoprire come attivarlo!'
|
||||||
|
not_activated: '&cAccount non attivato, si prega di registrarsi e attivarlo prima di riprovare.'
|
||||||
password_changed: '&2Password cambiata correttamente!'
|
password_changed: '&2Password cambiata correttamente!'
|
||||||
logout: '&2Disconnessione avvenuta correttamente!'
|
logout: '&2Disconnessione avvenuta correttamente!'
|
||||||
reload: '&2La configurazione e il database sono stati ricaricati correttamente!'
|
reload: '&2La configurazione e il database sono stati ricaricati correttamente!'
|
||||||
@@ -156,3 +158,17 @@ two_factor:
|
|||||||
not_enabled_error: 'L''autenticazione a 2 fattori non è ancora abilitata per il tuo account. Scrivi: /2fa add'
|
not_enabled_error: 'L''autenticazione a 2 fattori non è ancora abilitata per il tuo account. Scrivi: /2fa add'
|
||||||
removed_success: 'Autenticazione a 2 fattori rimossa correttamente'
|
removed_success: 'Autenticazione a 2 fattori rimossa correttamente'
|
||||||
invalid_code: 'Il codice inserito non è valido, riprova!'
|
invalid_code: 'Il codice inserito non è valido, riprova!'
|
||||||
|
|
||||||
|
# 3rd party features: Bedrock Auto Login
|
||||||
|
bedrock_auto_login:
|
||||||
|
success: '&aAccesso automatico Bedrock riuscito!'
|
||||||
|
|
||||||
|
# 3rd party features: Login Location Fix
|
||||||
|
login_location_fix:
|
||||||
|
fix_portal: '&aSei bloccato nel portale durante il login.'
|
||||||
|
fix_underground: '&aSei bloccato sottoterra durante il login.'
|
||||||
|
cannot_fix_underground: '&aSei bloccato sottoterra durante il login, ma non possiamo risolverlo.'
|
||||||
|
|
||||||
|
# 3rd party features: Double Login Fix
|
||||||
|
double_login_fix:
|
||||||
|
fix_message: '&cSei stato disconnesso a causa di un login doppio.'
|
||||||
|
|||||||
@@ -5,13 +5,13 @@
|
|||||||
|
|
||||||
# Registration
|
# Registration
|
||||||
registration:
|
registration:
|
||||||
register_request: '&3サーバーに登録するには、次のコマンドを使用してください: /register <パスワード> <パスワードの確認>'
|
|
||||||
command_usage: '&c使用方法: /register <パスワード> <パスワードの確認>'
|
|
||||||
reg_only: '&4登録済みのユーザーのみサーバーに参加できます! 自分自身を登録するには、http://example.com にアクセスしてください!'
|
|
||||||
kicked_admin_registered: '管理者があなたを登録しました。再度ログインしてください。'
|
|
||||||
success: '&2登録が完了しました!'
|
|
||||||
disabled: '&cゲーム内での登録は無効になっています!'
|
disabled: '&cゲーム内での登録は無効になっています!'
|
||||||
name_taken: '&cこのユーザー名はすでに登録されています!'
|
name_taken: '&cこのユーザー名はすでに登録されています!'
|
||||||
|
register_request: '&3サーバーに登録するには、次のコマンドを使用してください: /register <パスワード> <パスワードの確認>'
|
||||||
|
command_usage: '&c使用方法: /register <パスワード> <パスワードの確認>'
|
||||||
|
reg_only: '&4登録済みのユーザーのみサーバーに参加できます! 自分自身を登録するには、https://example.com にアクセスしてください!'
|
||||||
|
success: '&2登録が完了しました!'
|
||||||
|
kicked_admin_registered: '管理者があなたを登録しました。再度ログインしてください。'
|
||||||
|
|
||||||
# Password errors on registration
|
# Password errors on registration
|
||||||
password:
|
password:
|
||||||
@@ -20,6 +20,7 @@ password:
|
|||||||
unsafe_password: '&c選択したパスワードは安全ではありません。別のパスワードを選択してください...'
|
unsafe_password: '&c選択したパスワードは安全ではありません。別のパスワードを選択してください...'
|
||||||
forbidden_characters: '&4パスワードに不正な文字が含まれています。許可されている文字: %valid_chars'
|
forbidden_characters: '&4パスワードに不正な文字が含まれています。許可されている文字: %valid_chars'
|
||||||
wrong_length: '&cパスワードが短すぎるか長すぎます!別のパスワードを試してください!'
|
wrong_length: '&cパスワードが短すぎるか長すぎます!別のパスワードを試してください!'
|
||||||
|
pwned_password: '&c選択されたパスワードは安全ではありません。すでに %pwned_count 回使用されています!強力なパスワードを使用してください...'
|
||||||
|
|
||||||
# Login
|
# Login
|
||||||
login:
|
login:
|
||||||
@@ -31,17 +32,17 @@ login:
|
|||||||
|
|
||||||
# Errors
|
# Errors
|
||||||
error:
|
error:
|
||||||
unregistered_user: '&cこのユーザーは登録されていません!'
|
|
||||||
denied_command: '&cこのコマンドを使用するには認証が必要です!'
|
denied_command: '&cこのコマンドを使用するには認証が必要です!'
|
||||||
denied_chat: '&cチャットするには認証が必要です!'
|
denied_chat: '&cチャットするには認証が必要です!'
|
||||||
|
unregistered_user: '&cこのユーザーは登録されていません!'
|
||||||
not_logged_in: '&cログインしていません!'
|
not_logged_in: '&cログインしていません!'
|
||||||
tempban_max_logins: '&cログインに失敗した回数が多すぎるため、一時的にアクセスが制限されています。'
|
|
||||||
max_registration: '&c接続ごとの登録数が最大値を超えています(%reg_count/%max_acc %reg_names)!'
|
|
||||||
no_permission: '&4この操作を実行する権限がありません!'
|
no_permission: '&4この操作を実行する権限がありません!'
|
||||||
unexpected_error: '&4予期しないエラーが発生しました。管理者に連絡してください!'
|
unexpected_error: '&4予期しないエラーが発生しました。管理者に連絡してください!'
|
||||||
kick_for_vip: '&3VIPプレイヤーがサーバーが満員の状態で参加しました!'
|
max_registration: '&c接続ごとの登録数が最大値を超えています(%reg_count/%max_acc %reg_names)!'
|
||||||
logged_in: '&cすでにログイン済みです!'
|
logged_in: '&cすでにログイン済みです!'
|
||||||
|
kick_for_vip: '&3VIPプレイヤーがサーバーが満員の状態で参加しました!'
|
||||||
kick_unresolved_hostname: '&cエラーが発生しました:解決できないプレイヤーのホスト名!'
|
kick_unresolved_hostname: '&cエラーが発生しました:解決できないプレイヤーのホスト名!'
|
||||||
|
tempban_max_logins: '&cログインに失敗した回数が多すぎるため、一時的にアクセスが制限されています。'
|
||||||
|
|
||||||
# AntiBot
|
# AntiBot
|
||||||
antibot:
|
antibot:
|
||||||
@@ -49,57 +50,59 @@ antibot:
|
|||||||
auto_enabled: '&4[AntiBotService] 接続数が非常に多いため、AntiBotが有効になりました!'
|
auto_enabled: '&4[AntiBotService] 接続数が非常に多いため、AntiBotが有効になりました!'
|
||||||
auto_disabled: '&2[AntiBotService] %m 分後にAntiBotが無効になりました!'
|
auto_disabled: '&2[AntiBotService] %m 分後にAntiBotが無効になりました!'
|
||||||
|
|
||||||
|
# Unregister
|
||||||
unregister:
|
unregister:
|
||||||
success: '&c登録が正常に解除されました!'
|
success: '&c登録が正常に解除されました!'
|
||||||
command_usage: '&c使用方法: /unregister <パスワード>'
|
command_usage: '&c使用方法: /unregister <パスワード>'
|
||||||
|
|
||||||
# Other messages
|
# Other messages
|
||||||
misc:
|
misc:
|
||||||
accounts_owned_self: '所持しているアカウント数:%count 個'
|
|
||||||
accounts_owned_other: 'プレイヤー %name のアカウント数:%count 個'
|
|
||||||
account_not_activated: '&cアカウントはまだ有効化されていません。メールを確認してください!'
|
account_not_activated: '&cアカウントはまだ有効化されていません。メールを確認してください!'
|
||||||
|
not_activated: '&cアカウントは有効化されていません。再試行する前に登録してアクティブ化してください。'
|
||||||
password_changed: '&2パスワードが正常に変更されました!'
|
password_changed: '&2パスワードが正常に変更されました!'
|
||||||
logout: '&2正常にログアウトしました!'
|
logout: '&2正常にログアウトしました!'
|
||||||
reload: '&2設定とデータベースが正常に再読み込みされました!'
|
reload: '&2設定とデータベースが正常に再読み込みされました!'
|
||||||
usage_change_password: '&c使用方法: /changepassword <旧パスワード> <新パスワード>'
|
usage_change_password: '&c使用方法: /changepassword <旧パスワード> <新パスワード>'
|
||||||
|
accounts_owned_self: '所持しているアカウント数:%count 個'
|
||||||
|
accounts_owned_other: 'プレイヤー %name のアカウント数:%count 個'
|
||||||
|
|
||||||
# Session messages
|
# Session messages
|
||||||
session:
|
session:
|
||||||
invalid_session: '&cIPアドレスが変更され、セッションのデータが期限切れです!'
|
|
||||||
valid_session: '&2セッションの再接続によるログインです。'
|
valid_session: '&2セッションの再接続によるログインです。'
|
||||||
|
invalid_session: '&cIPアドレスが変更され、セッションのデータが期限切れです!'
|
||||||
|
|
||||||
# Error messages when joining
|
# Error messages when joining
|
||||||
on_join_validation:
|
on_join_validation:
|
||||||
|
same_ip_online: '同じIPアドレスを持つプレイヤーが既にゲーム内にいます!'
|
||||||
|
same_nick_online: '&4同じユーザー名のプレイヤーが既にサーバーでプレイしています!'
|
||||||
name_length: '&4ユーザー名が短すぎるか長すぎます!'
|
name_length: '&4ユーザー名が短すぎるか長すぎます!'
|
||||||
characters_in_name: '&4ユーザー名に無効な文字が含まれています。許可される文字:%valid_chars'
|
characters_in_name: '&4ユーザー名に無効な文字が含まれています。許可される文字:%valid_chars'
|
||||||
|
kick_full_server: '&4サーバーが満員です。後でもう一度お試しください!'
|
||||||
country_banned: '&4このサーバーへのアクセスは、お使いの国から制限されています!'
|
country_banned: '&4このサーバーへのアクセスは、お使いの国から制限されています!'
|
||||||
not_owner_error: 'このアカウントの所有者ではありません。別の名前を選択してください!'
|
not_owner_error: 'このアカウントの所有者ではありません。別の名前を選択してください!'
|
||||||
kick_full_server: '&4サーバーが満員です。後でもう一度お試しください!'
|
|
||||||
same_nick_online: '&4同じユーザー名のプレイヤーが既にサーバーでプレイしています!'
|
|
||||||
invalid_name_case: '正しいユーザー名は %valid です。%invalid ではなく、このユーザー名で参加してください。'
|
invalid_name_case: '正しいユーザー名は %valid です。%invalid ではなく、このユーザー名で参加してください。'
|
||||||
same_ip_online: '同じIPアドレスを持つプレイヤーが既にゲーム内にいます!'
|
|
||||||
quick_command: 'コマンドを速すぎる速度で使用しました!もう一度サーバーに参加してから、コマンドを使用する前にしばらくお待ちください。'
|
quick_command: 'コマンドを速すぎる速度で使用しました!もう一度サーバーに参加してから、コマンドを使用する前にしばらくお待ちください。'
|
||||||
|
|
||||||
# Email
|
# Email
|
||||||
email:
|
email:
|
||||||
|
add_email_request: '&3コマンド「/email add <あなたのメールアドレス> <確認用メールアドレス>」を使用して、アカウントにメールアドレスを追加してください。'
|
||||||
usage_email_add: '&c使用方法:/email add <メールアドレス> <メールアドレスの確認>'
|
usage_email_add: '&c使用方法:/email add <メールアドレス> <メールアドレスの確認>'
|
||||||
usage_email_change: '&c使用方法:/email change <古いメールアドレス> <新しいメールアドレス>'
|
usage_email_change: '&c使用方法:/email change <古いメールアドレス> <新しいメールアドレス>'
|
||||||
new_email_invalid: '&c無効な新しいメールアドレスです。もう一度やり直してください!'
|
new_email_invalid: '&c無効な新しいメールアドレスです。もう一度やり直してください!'
|
||||||
old_email_invalid: '&c無効な古いメールアドレスです。もう一度やり直してください!'
|
old_email_invalid: '&c無効な古いメールアドレスです。もう一度やり直してください!'
|
||||||
invalid: '&c無効なメールアドレスです。もう一度やり直してください!'
|
invalid: '&c無効なメールアドレスです。もう一度やり直してください!'
|
||||||
added: '&2メールアドレスがアカウントに正常に追加されました!'
|
added: '&2メールアドレスがアカウントに正常に追加されました!'
|
||||||
|
add_not_allowed: '&cメールアドレスの追加は許可されていません。'
|
||||||
request_confirmation: '&cメールアドレスを確認してください!'
|
request_confirmation: '&cメールアドレスを確認してください!'
|
||||||
changed: '&2メールアドレスが正しく変更されました!'
|
changed: '&2メールアドレスが正しく変更されました!'
|
||||||
|
change_not_allowed: '&cメールアドレスの変更は許可されていません。'
|
||||||
email_show: '&2現在のメールアドレスは:%email'
|
email_show: '&2現在のメールアドレスは:%email'
|
||||||
incomplete_settings: 'エラー:メールの送信に必要なすべての設定が設定されていません。管理者に連絡してください。'
|
|
||||||
already_used: '&4そのメールアドレスは既に使用されています'
|
|
||||||
send_failure: 'メールを送信できませんでした。管理者に連絡してください。'
|
|
||||||
no_email_for_account: '&2現在、このアカウントに関連付けられたメールアドレスはありません。'
|
no_email_for_account: '&2現在、このアカウントに関連付けられたメールアドレスはありません。'
|
||||||
add_email_request: '&3コマンド「/email add <あなたのメールアドレス> <確認用メールアドレス>」を使用して、アカウントにメールアドレスを追加してください。'
|
already_used: '&4そのメールアドレスは既に使用されています'
|
||||||
|
incomplete_settings: 'エラー:メールの送信に必要なすべての設定が設定されていません。管理者に連絡してください。'
|
||||||
|
send_failure: 'メールを送信できませんでした。管理者に連絡してください。'
|
||||||
change_password_expired: 'このコマンドを使用してパスワードを変更することはできません。'
|
change_password_expired: 'このコマンドを使用してパスワードを変更することはできません。'
|
||||||
email_cooldown_error: '&c最近すでにメールが送信されています。新しいメールを送信する前に、%time 待つ必要があります。'
|
email_cooldown_error: '&c最近すでにメールが送信されています。新しいメールを送信する前に、%time 待つ必要があります。'
|
||||||
add_not_allowed: '&cメールアドレスの追加は許可されていません。'
|
|
||||||
change_not_allowed: '&cメールアドレスの変更は許可されていません。'
|
|
||||||
|
|
||||||
# Password recovery by email
|
# Password recovery by email
|
||||||
recovery:
|
recovery:
|
||||||
@@ -131,6 +134,17 @@ verification:
|
|||||||
code_expired: '&3コードの有効期限が切れています!新しいコードを取得するには、別のセンシティブなコマンドを実行してください!'
|
code_expired: '&3コードの有効期限が切れています!新しいコードを取得するには、別のセンシティブなコマンドを実行してください!'
|
||||||
email_needed: '&3アカウントにはメールアドレスのリンクが必要です。身元を確認するためにはメールアドレスを関連付けてください!'
|
email_needed: '&3アカウントにはメールアドレスのリンクが必要です。身元を確認するためにはメールアドレスを関連付けてください!'
|
||||||
|
|
||||||
|
# Time units
|
||||||
|
time:
|
||||||
|
second: '秒'
|
||||||
|
seconds: '秒'
|
||||||
|
minute: '分'
|
||||||
|
minutes: '分'
|
||||||
|
hour: '時間'
|
||||||
|
hours: '時間'
|
||||||
|
day: '日'
|
||||||
|
days: '日'
|
||||||
|
|
||||||
# Two-factor authentication
|
# Two-factor authentication
|
||||||
two_factor:
|
two_factor:
|
||||||
code_created: '&2秘密コードは %code です。こちらからスキャンできます:%url'
|
code_created: '&2秘密コードは %code です。こちらからスキャンできます:%url'
|
||||||
@@ -144,13 +158,16 @@ two_factor:
|
|||||||
removed_success: 'アカウントから二要素認証が正常に削除されました'
|
removed_success: 'アカウントから二要素認証が正常に削除されました'
|
||||||
invalid_code: '無効なコードです!'
|
invalid_code: '無効なコードです!'
|
||||||
|
|
||||||
# Time units
|
# 3rd party features: Bedrock Auto Login
|
||||||
time:
|
bedrock_auto_login:
|
||||||
second: '秒'
|
success: '&aBedrock 自動ログイン成功!'
|
||||||
seconds: '秒'
|
|
||||||
minute: '分'
|
# 3rd party features: Login Location Fix
|
||||||
minutes: '分'
|
login_location_fix:
|
||||||
hour: '時間'
|
fix_portal: '&aログイン中にポータルに閉じ込められました。'
|
||||||
hours: '時間'
|
fix_underground: '&aログイン中に地下に閉じ込められました。'
|
||||||
day: '日'
|
cannot_fix_underground: '&aログイン中に地下に閉じ込められましたが、修正できません。'
|
||||||
days: '日'
|
|
||||||
|
# 3rd party features: Double Login Fix
|
||||||
|
double_login_fix:
|
||||||
|
fix_message: '&c二重ログインのため、切断されました。'
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ password:
|
|||||||
unsafe_password: '&c이 비밀번호는 안전하지 않습니다, 다른 비밀번호를 사용하세요...'
|
unsafe_password: '&c이 비밀번호는 안전하지 않습니다, 다른 비밀번호를 사용하세요...'
|
||||||
forbidden_characters: '&4비밀번호에 잘못된 문자가 있습니다. 허용된 문자: %valid_chars'
|
forbidden_characters: '&4비밀번호에 잘못된 문자가 있습니다. 허용된 문자: %valid_chars'
|
||||||
wrong_length: '&c비밀번호가 너무 짧거나 너무 깁니다!'
|
wrong_length: '&c비밀번호가 너무 짧거나 너무 깁니다!'
|
||||||
|
pwned_password: '&c선택한 비밀번호가 안전하지 않습니다. 이미 %pwned_count 번 사용되었습니다! 강력한 비밀번호를 사용하세요...'
|
||||||
|
|
||||||
# Login
|
# Login
|
||||||
login:
|
login:
|
||||||
@@ -42,7 +43,7 @@ error:
|
|||||||
max_registration: '&c당신은 가입할 수 있는 계정 한도를 초과했습니다 (%reg_count/%max_acc %reg_names)!'
|
max_registration: '&c당신은 가입할 수 있는 계정 한도를 초과했습니다 (%reg_count/%max_acc %reg_names)!'
|
||||||
logged_in: '&c이미 로그인되어 있습니다!'
|
logged_in: '&c이미 로그인되어 있습니다!'
|
||||||
kick_for_vip: '&3서버가 꽉 차있을 때는 VIP 플레이어만 접속이 가능합니다!'
|
kick_for_vip: '&3서버가 꽉 차있을 때는 VIP 플레이어만 접속이 가능합니다!'
|
||||||
# TODO kick_unresolved_hostname: '&cAn error occurred: unresolved player hostname!'
|
kick_unresolved_hostname: '&c오류 발생: 확인되지 않은 플레이어 호스트 이름!'
|
||||||
tempban_max_logins: '&c너무 많이 로그인에 실패하여 잠시 서버에서 차단되었습니다.'
|
tempban_max_logins: '&c너무 많이 로그인에 실패하여 잠시 서버에서 차단되었습니다.'
|
||||||
|
|
||||||
# AntiBot
|
# AntiBot
|
||||||
@@ -59,6 +60,7 @@ unregister:
|
|||||||
# Other messages
|
# Other messages
|
||||||
misc:
|
misc:
|
||||||
account_not_activated: '&c계정이 아직 활성화되지 않았습니다. 이메일을 확인해보세요!'
|
account_not_activated: '&c계정이 아직 활성화되지 않았습니다. 이메일을 확인해보세요!'
|
||||||
|
not_activated: '&c계정이 활성화되지 않았습니다. 다시 시도하기 전에 등록하고 활성화하세요.'
|
||||||
password_changed: '&2비밀번호가 변경되었습니다!'
|
password_changed: '&2비밀번호가 변경되었습니다!'
|
||||||
logout: '&2로그아웃 되었습니다!'
|
logout: '&2로그아웃 되었습니다!'
|
||||||
reload: '&2설정과 데이터 베이스가 새로고침 되었습니다!'
|
reload: '&2설정과 데이터 베이스가 새로고침 되었습니다!'
|
||||||
@@ -157,3 +159,17 @@ two_factor:
|
|||||||
not_enabled_error: '2단계 인증 기능을 활성화하시지 않았습니다. /2fa add 명령어를 통해 활성화해주세요.'
|
not_enabled_error: '2단계 인증 기능을 활성화하시지 않았습니다. /2fa add 명령어를 통해 활성화해주세요.'
|
||||||
removed_success: '2단계 인증 기능을 성공적으로 비활성화하였습니다.'
|
removed_success: '2단계 인증 기능을 성공적으로 비활성화하였습니다.'
|
||||||
invalid_code: '올바르지 않은 인증 코드입니다!'
|
invalid_code: '올바르지 않은 인증 코드입니다!'
|
||||||
|
|
||||||
|
# 3rd party features: Bedrock Auto Login
|
||||||
|
bedrock_auto_login:
|
||||||
|
success: '&aBedrock 자동 로그인 성공!'
|
||||||
|
|
||||||
|
# 3rd party features: Login Location Fix
|
||||||
|
login_location_fix:
|
||||||
|
fix_portal: '&a로그인 중에 포탈에 갇혔습니다.'
|
||||||
|
fix_underground: '&a로그인 중에 지하에 갇혔습니다.'
|
||||||
|
cannot_fix_underground: '&a로그인 중에 지하에 갇혔지만, 수정할 수 없습니다.'
|
||||||
|
|
||||||
|
# 3rd party features: Double Login Fix
|
||||||
|
double_login_fix:
|
||||||
|
fix_message: '&c중복 로그인으로 인해 연결이 종료되었습니다.'
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ registration:
|
|||||||
name_taken: '&cVartotojo vardas jau užregistruotas'
|
name_taken: '&cVartotojo vardas jau užregistruotas'
|
||||||
register_request: '&ePrašome prisiregistruoti: /register slaptažodis pakartotiSlaptažodį'
|
register_request: '&ePrašome prisiregistruoti: /register slaptažodis pakartotiSlaptažodį'
|
||||||
command_usage: '&eNaudojimas: /register slaptažodis pakartotiSlaptažodį'
|
command_usage: '&eNaudojimas: /register slaptažodis pakartotiSlaptažodį'
|
||||||
reg_only: '&cTik prisiregistravusiems žaidėjams: apsilankykite: http://example.com tam, kad užsiregistruoti.'
|
reg_only: '&cTik prisiregistravusiems žaidėjams: apsilankykite: https://example.com tam, kad užsiregistruoti.'
|
||||||
success: '&aSėkmingai prisiregistravote.'
|
success: '&aSėkmingai prisiregistravote.'
|
||||||
kicked_admin_registered: 'Administatorius Jus užregistravo. Prisijunkite iš naujo'
|
kicked_admin_registered: 'Administatorius Jus užregistravo. Prisijunkite iš naujo'
|
||||||
|
|
||||||
@@ -20,6 +20,7 @@ password:
|
|||||||
unsafe_password: '&cŠį Slaptažodį lengva nulaužti, pasirinkite kitą slaptažodį'
|
unsafe_password: '&cŠį Slaptažodį lengva nulaužti, pasirinkite kitą slaptažodį'
|
||||||
forbidden_characters: '&4Jūsų slaptažodis turi netinkamų simbolių. Leidžiami simboliai: %valid_chars'
|
forbidden_characters: '&4Jūsų slaptažodis turi netinkamų simbolių. Leidžiami simboliai: %valid_chars'
|
||||||
wrong_length: '&cJūsų pasirinktas slaptažodis per ilgas arba per trumpas.'
|
wrong_length: '&cJūsų pasirinktas slaptažodis per ilgas arba per trumpas.'
|
||||||
|
pwned_password: '&cJūsų pasirinktas slaptažodis nėra saugus. Jis buvo naudotas %pwned_count kartų! Prašome naudoti stiprų slaptažodį...'
|
||||||
|
|
||||||
# Login
|
# Login
|
||||||
login:
|
login:
|
||||||
@@ -57,6 +58,7 @@ unregister:
|
|||||||
# Other messages
|
# Other messages
|
||||||
misc:
|
misc:
|
||||||
account_not_activated: '&aJūsų vartotojas nėra patvirtintas, pasitikrinkite el.paštą.'
|
account_not_activated: '&aJūsų vartotojas nėra patvirtintas, pasitikrinkite el.paštą.'
|
||||||
|
not_activated: '&cPaskyra neaktyvuota, prašome užsiregistruoti ir aktyvuoti prieš bandant dar kartą.'
|
||||||
password_changed: '&aSlaptažodis pakeistas'
|
password_changed: '&aSlaptažodis pakeistas'
|
||||||
logout: '&aSėkmingai atsijungėte'
|
logout: '&aSėkmingai atsijungėte'
|
||||||
reload: '&aNustatymai ir duomenų bazė buvo perkrauta.'
|
reload: '&aNustatymai ir duomenų bazė buvo perkrauta.'
|
||||||
@@ -155,3 +157,17 @@ two_factor:
|
|||||||
not_enabled_error: 'Dviejų faktorių autentifikavimas nėra įjungtas ant jūsų paskyros. Rašykite /2fa add'
|
not_enabled_error: 'Dviejų faktorių autentifikavimas nėra įjungtas ant jūsų paskyros. Rašykite /2fa add'
|
||||||
removed_success: 'Dviejų faktorių autentifikavimas sėkmingai pašalintas iš jūsų paskyros.'
|
removed_success: 'Dviejų faktorių autentifikavimas sėkmingai pašalintas iš jūsų paskyros.'
|
||||||
invalid_code: 'Neteisingas kodas!'
|
invalid_code: 'Neteisingas kodas!'
|
||||||
|
|
||||||
|
# 3rd party features: Bedrock Auto Login
|
||||||
|
bedrock_auto_login:
|
||||||
|
success: '&aBedrock automatinis prisijungimas sėkmingas!'
|
||||||
|
|
||||||
|
# 3rd party features: Login Location Fix
|
||||||
|
login_location_fix:
|
||||||
|
fix_portal: '&aJūs užstrigote portale prisijungimo metu.'
|
||||||
|
fix_underground: '&aJūs užstrigote po žeme prisijungimo metu.'
|
||||||
|
cannot_fix_underground: '&aJūs užstrigote po žeme prisijungimo metu, bet mes negalime to pataisyti.'
|
||||||
|
|
||||||
|
# 3rd party features: Double Login Fix
|
||||||
|
double_login_fix:
|
||||||
|
fix_message: '&cJūs buvote atjungtas dėl dvigubo prisijungimo.'
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ registration:
|
|||||||
name_taken: '&cJe hebt deze gebruikersnaam al geregistreerd!'
|
name_taken: '&cJe hebt deze gebruikersnaam al geregistreerd!'
|
||||||
register_request: '&cRegistreer met het commando: /register <wachtwoord> <herhaal wachtwoord>'
|
register_request: '&cRegistreer met het commando: /register <wachtwoord> <herhaal wachtwoord>'
|
||||||
command_usage: '&cGebruik: /register <wachtwoord> <herhaal wachtwoord>'
|
command_usage: '&cGebruik: /register <wachtwoord> <herhaal wachtwoord>'
|
||||||
reg_only: 'Alleen voor geregistreerde spelers! Bezoek http://example.com om te registreren!'
|
reg_only: 'Alleen voor geregistreerde spelers! Bezoek https://example.com om te registreren!'
|
||||||
success: '&cSuccesvol geregistreerd!'
|
success: '&cSuccesvol geregistreerd!'
|
||||||
kicked_admin_registered: 'Een administrator heeft je net geregistreerd; log alsjeblieft opnieuw in.'
|
kicked_admin_registered: 'Een administrator heeft je net geregistreerd; log alsjeblieft opnieuw in.'
|
||||||
|
|
||||||
@@ -20,6 +20,7 @@ password:
|
|||||||
unsafe_password: '&fDit wachtwoord is onveilig, kies een ander wachtwoord...'
|
unsafe_password: '&fDit wachtwoord is onveilig, kies een ander wachtwoord...'
|
||||||
forbidden_characters: '&cJouw wachtwoord bevat ongeldige tekens. Toegestane karakters zijn: %valid_chars'
|
forbidden_characters: '&cJouw wachtwoord bevat ongeldige tekens. Toegestane karakters zijn: %valid_chars'
|
||||||
wrong_length: 'Jouw gekozen wachtwoord voldoet niet aan de minimum of maximum lengte, kies een ander wachtwoord...'
|
wrong_length: 'Jouw gekozen wachtwoord voldoet niet aan de minimum of maximum lengte, kies een ander wachtwoord...'
|
||||||
|
pwned_password: '&cHet gekozen wachtwoord is niet veilig. Het is al %pwned_count keer gebruikt! Gebruik alstublieft een sterk wachtwoord...'
|
||||||
|
|
||||||
# Login
|
# Login
|
||||||
login:
|
login:
|
||||||
@@ -57,6 +58,7 @@ unregister:
|
|||||||
# Other messages
|
# Other messages
|
||||||
misc:
|
misc:
|
||||||
account_not_activated: 'Je account is nog niet geactiveerd, controleer je mailbox!'
|
account_not_activated: 'Je account is nog niet geactiveerd, controleer je mailbox!'
|
||||||
|
not_activated: '&cAccount niet geactiveerd, registreer en activeer het alstublieft voordat u het opnieuw probeert.'
|
||||||
password_changed: '&cWachtwoord succesvol aangepast!'
|
password_changed: '&cWachtwoord succesvol aangepast!'
|
||||||
logout: '&2Je bent succesvol uitgelogd!'
|
logout: '&2Je bent succesvol uitgelogd!'
|
||||||
reload: '&2De configuratie en database zijn succesvol herladen!'
|
reload: '&2De configuratie en database zijn succesvol herladen!'
|
||||||
@@ -155,3 +157,17 @@ two_factor:
|
|||||||
not_enabled_error: 'Twee-factor authenticatie is uitgeschakeld voor jou account. Voer "/2fa add" uit'
|
not_enabled_error: 'Twee-factor authenticatie is uitgeschakeld voor jou account. Voer "/2fa add" uit'
|
||||||
removed_success: 'Twee-factor authenticatie is met succes van jouw account verwijderd.'
|
removed_success: 'Twee-factor authenticatie is met succes van jouw account verwijderd.'
|
||||||
invalid_code: 'Ongeldige code!'
|
invalid_code: 'Ongeldige code!'
|
||||||
|
|
||||||
|
# 3rd party features: Bedrock Auto Login
|
||||||
|
bedrock_auto_login:
|
||||||
|
success: '&aBedrock automatisch inloggen gelukt!'
|
||||||
|
|
||||||
|
# 3rd party features: Login Location Fix
|
||||||
|
login_location_fix:
|
||||||
|
fix_portal: '&aU zit vast in een portal tijdens het inloggen.'
|
||||||
|
fix_underground: '&aU zit vast onder de grond tijdens het inloggen.'
|
||||||
|
cannot_fix_underground: '&aU zit vast onder de grond tijdens het inloggen, maar we kunnen het niet repareren.'
|
||||||
|
|
||||||
|
# 3rd party features: Double Login Fix
|
||||||
|
double_login_fix:
|
||||||
|
fix_message: '&cU bent losgekoppeld vanwege een dubbele inlog.'
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ password:
|
|||||||
unsafe_password: '&cTwoje hasło nie jest bezpieczne, wybierz inne...'
|
unsafe_password: '&cTwoje hasło nie jest bezpieczne, wybierz inne...'
|
||||||
forbidden_characters: '&4W twoim haśle występują niedozwolone znaki, dozwolone znaki to: %valid_chars'
|
forbidden_characters: '&4W twoim haśle występują niedozwolone znaki, dozwolone znaki to: %valid_chars'
|
||||||
wrong_length: '&fTwoje hasło jest za krótkie lub za długie! Spróbuj ponownie...'
|
wrong_length: '&fTwoje hasło jest za krótkie lub za długie! Spróbuj ponownie...'
|
||||||
|
pwned_password: '&cTwoje wybrane hasło nie jest bezpieczne. Zostało już użyte %pwned_count razy! Proszę użyj silnego hasła...'
|
||||||
|
|
||||||
# Login
|
# Login
|
||||||
login:
|
login:
|
||||||
@@ -57,6 +58,7 @@ unregister:
|
|||||||
# Other messages
|
# Other messages
|
||||||
misc:
|
misc:
|
||||||
account_not_activated: '&fTwoje konto nie zostało aktywowane! Sprawdź maila.'
|
account_not_activated: '&fTwoje konto nie zostało aktywowane! Sprawdź maila.'
|
||||||
|
not_activated: '&cKonto nieaktywowane, proszę zarejestruj się i aktywuj konto przed ponowną próbą.'
|
||||||
password_changed: '&fHasło zostało zmienione!'
|
password_changed: '&fHasło zostało zmienione!'
|
||||||
logout: '&cPomyślnie wylogowany'
|
logout: '&cPomyślnie wylogowany'
|
||||||
reload: '&fKonfiguracja bazy danych została przeładowana.'
|
reload: '&fKonfiguracja bazy danych została przeładowana.'
|
||||||
@@ -155,3 +157,17 @@ two_factor:
|
|||||||
not_enabled_error: 'Weryfikacja dwuetapowa nie jest włączona dla twojego konta. Wpisz komende /2fa add'
|
not_enabled_error: 'Weryfikacja dwuetapowa nie jest włączona dla twojego konta. Wpisz komende /2fa add'
|
||||||
removed_success: '&aPomyślnie usunięto weryfikacje dwuetapową z Twojego konta.'
|
removed_success: '&aPomyślnie usunięto weryfikacje dwuetapową z Twojego konta.'
|
||||||
invalid_code: '&cWpisany kod jest nieprawidłowy, spróbuj jeszcze raz.'
|
invalid_code: '&cWpisany kod jest nieprawidłowy, spróbuj jeszcze raz.'
|
||||||
|
|
||||||
|
# 3rd party features: Bedrock Auto Login
|
||||||
|
bedrock_auto_login:
|
||||||
|
success: '&aAutomatyczne logowanie na Bedrocku udane!'
|
||||||
|
|
||||||
|
# 3rd party features: Login Location Fix
|
||||||
|
login_location_fix:
|
||||||
|
fix_portal: '&aUtknąłeś w portalu podczas logowania.'
|
||||||
|
fix_underground: '&aUtknąłeś pod ziemią podczas logowania.'
|
||||||
|
cannot_fix_underground: '&aUtknąłeś pod ziemią podczas logowania, ale nie możemy tego naprawić.'
|
||||||
|
|
||||||
|
# 3rd party features: Double Login Fix
|
||||||
|
double_login_fix:
|
||||||
|
fix_message: '&cZostałeś rozłączony z powodu podwójnego logowania.'
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ registration:
|
|||||||
name_taken: '&cUtilizador já registado'
|
name_taken: '&cUtilizador já registado'
|
||||||
register_request: '&cPor favor registe-se com "/register <password> <confirmePassword>"'
|
register_request: '&cPor favor registe-se com "/register <password> <confirmePassword>"'
|
||||||
command_usage: '&cUse: /register <password> <confirmePassword>'
|
command_usage: '&cUse: /register <password> <confirmePassword>'
|
||||||
reg_only: '&fApenas jogadores registados podem entrar no servidor! Visite http://example.com para se registar'
|
reg_only: '&fApenas jogadores registados podem entrar no servidor! Visite https://example.com para se registar'
|
||||||
success: '&cRegistado com sucesso!'
|
success: '&cRegistado com sucesso!'
|
||||||
kicked_admin_registered: 'Um administrador registou-te, por favor entre novamente'
|
kicked_admin_registered: 'Um administrador registou-te, por favor entre novamente'
|
||||||
|
|
||||||
@@ -20,6 +20,7 @@ password:
|
|||||||
unsafe_password: '&cA senha escolhida não é segura, por favor, escolha outra ...'
|
unsafe_password: '&cA senha escolhida não é segura, por favor, escolha outra ...'
|
||||||
forbidden_characters: '&4Sua senha contém caracteres ilegais. Caracteres permitidos: %valid_chars'
|
forbidden_characters: '&4Sua senha contém caracteres ilegais. Caracteres permitidos: %valid_chars'
|
||||||
wrong_length: '&fPassword demasiado curta ou longa! Por favor escolhe outra outra!'
|
wrong_length: '&fPassword demasiado curta ou longa! Por favor escolhe outra outra!'
|
||||||
|
pwned_password: '&cA senha escolhida não é segura. Ela foi usada %pwned_count vezes! Por favor, use uma senha forte...'
|
||||||
|
|
||||||
# Login
|
# Login
|
||||||
login:
|
login:
|
||||||
@@ -57,6 +58,7 @@ unregister:
|
|||||||
# Other messages
|
# Other messages
|
||||||
misc:
|
misc:
|
||||||
account_not_activated: '&fA sua conta não foi ainda activada, verifique o seu email onde irá receber indicações para activação de conta. '
|
account_not_activated: '&fA sua conta não foi ainda activada, verifique o seu email onde irá receber indicações para activação de conta. '
|
||||||
|
not_activated: '&cConta não ativada, por favor, registre-se e ative antes de tentar novamente.'
|
||||||
password_changed: '&cPassword alterada!'
|
password_changed: '&cPassword alterada!'
|
||||||
logout: '&cSaida com sucesso'
|
logout: '&cSaida com sucesso'
|
||||||
reload: '&fConfiguração e base de dados foram recarregadas'
|
reload: '&fConfiguração e base de dados foram recarregadas'
|
||||||
@@ -155,3 +157,17 @@ two_factor:
|
|||||||
not_enabled_error: 'Autenticação de duas etapas não está habilitada na sua conta. Digite /2fa add'
|
not_enabled_error: 'Autenticação de duas etapas não está habilitada na sua conta. Digite /2fa add'
|
||||||
removed_success: 'Autenticação de duas etapas removida com sucesso da sua conta'
|
removed_success: 'Autenticação de duas etapas removida com sucesso da sua conta'
|
||||||
invalid_code: 'Codigo invalido!'
|
invalid_code: 'Codigo invalido!'
|
||||||
|
|
||||||
|
# 3rd party features: Bedrock Auto Login
|
||||||
|
bedrock_auto_login:
|
||||||
|
success: '&aLogin automático no Bedrock bem-sucedido!'
|
||||||
|
|
||||||
|
# 3rd party features: Login Location Fix
|
||||||
|
login_location_fix:
|
||||||
|
fix_portal: '&aVocê está preso no portal durante o login.'
|
||||||
|
fix_underground: '&aVocê está preso no subsolo durante o login.'
|
||||||
|
cannot_fix_underground: '&aVocê está preso no subsolo durante o login, mas não podemos consertar.'
|
||||||
|
|
||||||
|
# 3rd party features: Double Login Fix
|
||||||
|
double_login_fix:
|
||||||
|
fix_message: '&cVocê foi desconectado devido a um login duplicado.'
|
||||||
|
|||||||
@@ -5,13 +5,13 @@
|
|||||||
|
|
||||||
# Registration
|
# Registration
|
||||||
registration:
|
registration:
|
||||||
register_request: '&3Te rugam sa te inregistrezi folosind comanda "/register <Parola> <CorfirmareParola>"'
|
|
||||||
command_usage: '&cFoloseste comanda: /register <Parola> <ConfirmareParola>'
|
|
||||||
reg_only: '&4Doar jucatori inregistrati pot intra pe server! Te rugam foloseste http://example.com pentru a te inregistra!'
|
|
||||||
kicked_admin_registered: 'Un administrator tocmai te-a inregistrat, te rog autentifica-te din nou.'
|
|
||||||
success: '&2Te-ai inregistrat cu succes!'
|
|
||||||
disabled: '&cInregistrarea in joc nu este activata!'
|
disabled: '&cInregistrarea in joc nu este activata!'
|
||||||
name_taken: '&cCineva este inregistrat cu acest nume!'
|
name_taken: '&cCineva este inregistrat cu acest nume!'
|
||||||
|
register_request: '&3Te rugam sa te inregistrezi folosind comanda "/register <Parola> <CorfirmareParola>"'
|
||||||
|
command_usage: '&cFoloseste comanda: /register <Parola> <ConfirmareParola>'
|
||||||
|
reg_only: '&4Doar jucatori inregistrati pot intra pe server! Te rugam foloseste https://example.com pentru a te inregistra!'
|
||||||
|
success: '&2Te-ai inregistrat cu succes!'
|
||||||
|
kicked_admin_registered: 'Un administrator tocmai te-a inregistrat, te rog autentifica-te din nou.'
|
||||||
|
|
||||||
# Password errors on registration
|
# Password errors on registration
|
||||||
password:
|
password:
|
||||||
@@ -20,6 +20,7 @@ password:
|
|||||||
unsafe_password: '&cParola aleasa nu este sigura. Te rugam sa folosesti alta parola...'
|
unsafe_password: '&cParola aleasa nu este sigura. Te rugam sa folosesti alta parola...'
|
||||||
forbidden_characters: '&4Parola ta contine caractere nepermise. Caractere permise: %valid_chars'
|
forbidden_characters: '&4Parola ta contine caractere nepermise. Caractere permise: %valid_chars'
|
||||||
wrong_length: '&cParola ta este prea scurta pentru a te inregistra! Te rugam incearca alta parola!'
|
wrong_length: '&cParola ta este prea scurta pentru a te inregistra! Te rugam incearca alta parola!'
|
||||||
|
pwned_password: '&cParola aleasă nu este sigură. A fost folosită de %pwned_count ori! Vă rugăm să utilizați o parolă puternică...'
|
||||||
|
|
||||||
# Login
|
# Login
|
||||||
login:
|
login:
|
||||||
@@ -31,17 +32,17 @@ login:
|
|||||||
|
|
||||||
# Errors
|
# Errors
|
||||||
error:
|
error:
|
||||||
unregistered_user: '&cAcest jucator nu este inregistrat!'
|
|
||||||
denied_command: '&cPentru a utiliza aceasta comanda trebuie sa fi autentificat!'
|
denied_command: '&cPentru a utiliza aceasta comanda trebuie sa fi autentificat!'
|
||||||
denied_chat: '&cPentru a utiliza chat-ul trebuie sa fi autentificat!'
|
denied_chat: '&cPentru a utiliza chat-ul trebuie sa fi autentificat!'
|
||||||
|
unregistered_user: '&cAcest jucator nu este inregistrat!'
|
||||||
not_logged_in: '&cNu esti autentificat!'
|
not_logged_in: '&cNu esti autentificat!'
|
||||||
tempban_max_logins: '&cAi fost banat temporar deoarece ai esuat sa te autentifici de prea multe ori.'
|
|
||||||
max_registration: '&cAi depasit numarul maxim de inregistrari (%reg_count /%max_acc %reg_names) pentru conexiunea dvs.!'
|
|
||||||
no_permission: '&4Nu ai permisiunea de a efectua aceasta actiune!'
|
no_permission: '&4Nu ai permisiunea de a efectua aceasta actiune!'
|
||||||
unexpected_error: '&4A aparut o eroare, te rugam contacteaza un administrator!'
|
unexpected_error: '&4A aparut o eroare, te rugam contacteaza un administrator!'
|
||||||
kick_for_vip: '&3Un VIP a intrat pe server cand era plin!'
|
max_registration: '&cAi depasit numarul maxim de inregistrari (%reg_count /%max_acc %reg_names) pentru conexiunea dvs.!'
|
||||||
logged_in: '&cEsti deja autentificat!'
|
logged_in: '&cEsti deja autentificat!'
|
||||||
|
kick_for_vip: '&3Un VIP a intrat pe server cand era plin!'
|
||||||
kick_unresolved_hostname: '&cA aparut o eroare: nume gazda nerezolvat!'
|
kick_unresolved_hostname: '&cA aparut o eroare: nume gazda nerezolvat!'
|
||||||
|
tempban_max_logins: '&cAi fost banat temporar deoarece ai esuat sa te autentifici de prea multe ori.'
|
||||||
|
|
||||||
# AntiBot
|
# AntiBot
|
||||||
antibot:
|
antibot:
|
||||||
@@ -55,51 +56,52 @@ unregister:
|
|||||||
|
|
||||||
# Other messages
|
# Other messages
|
||||||
misc:
|
misc:
|
||||||
accounts_owned_self: 'Detii %count conturi:'
|
|
||||||
accounts_owned_other: 'Jucatorul %name are %count conturi:'
|
|
||||||
account_not_activated: '&cContul tau nu este activat, te rugam verifica-ti email-ul!'
|
account_not_activated: '&cContul tau nu este activat, te rugam verifica-ti email-ul!'
|
||||||
|
not_activated: '&cContul nu este activat, vă rugăm să vă înregistrați și să îl activați înainte de a încerca din nou.'
|
||||||
password_changed: '&2Parola a fost schimbata cu succes!'
|
password_changed: '&2Parola a fost schimbata cu succes!'
|
||||||
logout: '&2Te-ai deconectat cu succes!'
|
logout: '&2Te-ai deconectat cu succes!'
|
||||||
reload: '&2Configuratiile si baza de date s-au reincarcat corect!'
|
reload: '&2Configuratiile si baza de date s-au reincarcat corect!'
|
||||||
usage_change_password: '&cFoloseste comanda: /changepassword <ParolaVeche> <ParolaNoua>'
|
usage_change_password: '&cFoloseste comanda: /changepassword <ParolaVeche> <ParolaNoua>'
|
||||||
|
accounts_owned_self: 'Detii %count conturi:'
|
||||||
|
accounts_owned_other: 'Jucatorul %name are %count conturi:'
|
||||||
|
|
||||||
# Session messages
|
# Session messages
|
||||||
session:
|
session:
|
||||||
invalid_session: '&cIP-ul tau a fost schimbat si sesiunea ta a expirat!'
|
|
||||||
valid_session: '&2Conectat datorita reconectarii sesiunii.'
|
valid_session: '&2Conectat datorita reconectarii sesiunii.'
|
||||||
|
invalid_session: '&cIP-ul tau a fost schimbat si sesiunea ta a expirat!'
|
||||||
|
|
||||||
# Error messages when joining
|
# Error messages when joining
|
||||||
on_join_validation:
|
on_join_validation:
|
||||||
|
same_ip_online: 'Un jucator cu acelasi IP este deja in joc!'
|
||||||
|
same_nick_online: '&4Acelasi nume apartine unui jucator care e deja pe server!'
|
||||||
name_length: '&4Numele tau este fie prea scurt, fie prea lung!'
|
name_length: '&4Numele tau este fie prea scurt, fie prea lung!'
|
||||||
characters_in_name: '&4Numele tau contine caractere ilegale. Caractere permise: %valid_chars'
|
characters_in_name: '&4Numele tau contine caractere ilegale. Caractere permise: %valid_chars'
|
||||||
|
kick_full_server: '&4Server-ul este plin, incearca mai tarziu!'
|
||||||
country_banned: '&4Tara ta este interzisa pe acest server!'
|
country_banned: '&4Tara ta este interzisa pe acest server!'
|
||||||
not_owner_error: 'Tu nu esti detinatorul acestui cont. Te rugam alege alt nume!'
|
not_owner_error: 'Tu nu esti detinatorul acestui cont. Te rugam alege alt nume!'
|
||||||
kick_full_server: '&4Server-ul este plin, incearca mai tarziu!'
|
|
||||||
same_nick_online: '&4Acelasi nume apartine unui jucator care e deja pe server!'
|
|
||||||
invalid_name_case: 'Ar trebui sa intri cu numele %valid, nu %invalid'
|
invalid_name_case: 'Ar trebui sa intri cu numele %valid, nu %invalid'
|
||||||
same_ip_online: 'Un jucator cu acelasi IP este deja in joc!'
|
|
||||||
quick_command: 'Ai folosit o comanda prea repede! Te rugam, intra din nou pe server si astepta mai mult inainte de a utiliza orice comanda.'
|
quick_command: 'Ai folosit o comanda prea repede! Te rugam, intra din nou pe server si astepta mai mult inainte de a utiliza orice comanda.'
|
||||||
|
|
||||||
# Email
|
# Email
|
||||||
email:
|
email:
|
||||||
|
add_email_request: '&3Te rugam adaugati email-ul la contul tau folosind comanda "/email add <Email> <ConfrimaEmail>"'
|
||||||
usage_email_add: '&cFoloseste comanda: /email add <Email> <ConfrimareEmail>'
|
usage_email_add: '&cFoloseste comanda: /email add <Email> <ConfrimareEmail>'
|
||||||
usage_email_change: '&cFoloseste comanda: /email change <EmailVechi> <EmailNou>'
|
usage_email_change: '&cFoloseste comanda: /email change <EmailVechi> <EmailNou>'
|
||||||
new_email_invalid: '&cNoul email este nevalid, incearca din nou!'
|
new_email_invalid: '&cNoul email este nevalid, incearca din nou!'
|
||||||
old_email_invalid: '&cEmail-ul vechi este nevalid, incearca din nou!'
|
old_email_invalid: '&cEmail-ul vechi este nevalid, incearca din nou!'
|
||||||
invalid: '&cEmail-ul este nevalid, incearca din nou!'
|
invalid: '&cEmail-ul este nevalid, incearca din nou!'
|
||||||
added: '&2Email-ul a fost adaugat cu succes la contul tau!'
|
added: '&2Email-ul a fost adaugat cu succes la contul tau!'
|
||||||
|
add_not_allowed: '&cAdaugarea email-ului nu a fost permisa.'
|
||||||
request_confirmation: '&cTe rugam sa confirmi adresa ta de email!'
|
request_confirmation: '&cTe rugam sa confirmi adresa ta de email!'
|
||||||
changed: '&2Email-ul a fost schimbat cu succes!'
|
changed: '&2Email-ul a fost schimbat cu succes!'
|
||||||
|
change_not_allowed: '&cModificarea email-ului nu a fost permisa.'
|
||||||
email_show: '&2Adresa ta curenta de email este: &f%email'
|
email_show: '&2Adresa ta curenta de email este: &f%email'
|
||||||
incomplete_settings: 'Eroare: Nu indeplinesti conditiile trimiterii unui email! Te rugam contacteaza un administrator.'
|
|
||||||
already_used: '&4Email-ul acesta este deja folosit de altcineva'
|
|
||||||
send_failure: 'Email-ul nu a putut fi trimis. Ta rugam contactatezi un administrator.'
|
|
||||||
no_email_for_account: '&2Nu ai nici o adresa de email asociata cu acest cont.'
|
no_email_for_account: '&2Nu ai nici o adresa de email asociata cu acest cont.'
|
||||||
add_email_request: '&3Te rugam adaugati email-ul la contul tau folosind comanda "/email add <Email> <ConfrimaEmail>"'
|
already_used: '&4Email-ul acesta este deja folosit de altcineva'
|
||||||
|
incomplete_settings: 'Eroare: Nu indeplinesti conditiile trimiterii unui email! Te rugam contacteaza un administrator.'
|
||||||
|
send_failure: 'Email-ul nu a putut fi trimis. Ta rugam contactatezi un administrator.'
|
||||||
change_password_expired: 'Nu mai iti poti schimba parola folosind aceasta comanda.'
|
change_password_expired: 'Nu mai iti poti schimba parola folosind aceasta comanda.'
|
||||||
email_cooldown_error: '&cAi primit deja un mail pentru schimbarea parolei. Trebuie sa astepti %time inainte de a trimite unul nou.'
|
email_cooldown_error: '&cAi primit deja un mail pentru schimbarea parolei. Trebuie sa astepti %time inainte de a trimite unul nou.'
|
||||||
add_not_allowed: '&cAdaugarea email-ului nu a fost permisa.'
|
|
||||||
change_not_allowed: '&cModificarea email-ului nu a fost permisa.'
|
|
||||||
|
|
||||||
# Password recovery by email
|
# Password recovery by email
|
||||||
recovery:
|
recovery:
|
||||||
@@ -131,6 +133,17 @@ verification:
|
|||||||
code_expired: '&3Codul tau a expirat! Executa o alta comanda sensibila pentru a obtine un cod nou!'
|
code_expired: '&3Codul tau a expirat! Executa o alta comanda sensibila pentru a obtine un cod nou!'
|
||||||
email_needed: '&3Pentru ati verifica identitatea, trebuie sa conectezi o adresa de email cu contul tau!!'
|
email_needed: '&3Pentru ati verifica identitatea, trebuie sa conectezi o adresa de email cu contul tau!!'
|
||||||
|
|
||||||
|
# Time units
|
||||||
|
time:
|
||||||
|
second: 'secunda'
|
||||||
|
seconds: 'secunde'
|
||||||
|
minute: 'minut'
|
||||||
|
minutes: 'minute'
|
||||||
|
hour: 'ora'
|
||||||
|
hours: 'ore'
|
||||||
|
day: 'zi'
|
||||||
|
days: 'zile'
|
||||||
|
|
||||||
# Two-factor authentication
|
# Two-factor authentication
|
||||||
two_factor:
|
two_factor:
|
||||||
code_created: '&2Codul tau secret este %code. Il poti scana de aici %url'
|
code_created: '&2Codul tau secret este %code. Il poti scana de aici %url'
|
||||||
@@ -144,13 +157,16 @@ two_factor:
|
|||||||
removed_success: 'Eliminare cu succes a autentificarii in doi pasi de pe cont'
|
removed_success: 'Eliminare cu succes a autentificarii in doi pasi de pe cont'
|
||||||
invalid_code: 'Cod invalid!'
|
invalid_code: 'Cod invalid!'
|
||||||
|
|
||||||
# Time units
|
# 3rd party features: Bedrock Auto Login
|
||||||
time:
|
bedrock_auto_login:
|
||||||
second: 'secunda'
|
success: '&aAutentificare automată Bedrock reușită!'
|
||||||
seconds: 'secunde'
|
|
||||||
minute: 'minut'
|
# 3rd party features: Login Location Fix
|
||||||
minutes: 'minute'
|
login_location_fix:
|
||||||
hour: 'ora'
|
fix_portal: '&aSunteți blocat în portal în timpul autentificării.'
|
||||||
hours: 'ore'
|
fix_underground: '&aSunteți blocat sub pământ în timpul autentificării.'
|
||||||
day: 'zi'
|
cannot_fix_underground: '&aSunteți blocat sub pământ în timpul autentificării, dar nu putem remedia.'
|
||||||
days: 'zile'
|
|
||||||
|
# 3rd party features: Double Login Fix
|
||||||
|
double_login_fix:
|
||||||
|
fix_message: '&cAți fost deconectat din cauza unei autentificări duble.'
|
||||||
|
|||||||
@@ -1,10 +1,15 @@
|
|||||||
|
# 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
|
||||||
registration:
|
registration:
|
||||||
disabled: '&cРегистрация отключена.'
|
disabled: '&cРегистрация отключена.'
|
||||||
name_taken: '&cИгрок с таким никнеймом уже зарегистрирован.'
|
name_taken: '&cИгрок с таким никнеймом уже зарегистрирован.'
|
||||||
register_request: '&3Регистрация: /reg <пароль> <повтор пароля>'
|
register_request: '&3Регистрация: /reg <пароль> <повтор пароля>'
|
||||||
command_usage: '&cИспользование: /reg <пароль> <повтор пароля>'
|
command_usage: '&cИспользование: /reg <пароль> <повтор пароля>'
|
||||||
reg_only: '&4Вход только для зарегистрированных! Посетите http://сайт_сервера.ru для регистрации.'
|
reg_only: '&4Вход только для зарегистрированных! Посетите https://сайт_сервера.ru для регистрации.'
|
||||||
success: '&2Вы успешно зарегистрировались!'
|
success: '&2Вы успешно зарегистрировались!'
|
||||||
kicked_admin_registered: 'Администратор зарегистрировал вас. Авторизуйтесь снова.'
|
kicked_admin_registered: 'Администратор зарегистрировал вас. Авторизуйтесь снова.'
|
||||||
|
|
||||||
@@ -15,6 +20,7 @@ password:
|
|||||||
unsafe_password: '&cТакой пароль небезопасен.'
|
unsafe_password: '&cТакой пароль небезопасен.'
|
||||||
forbidden_characters: '&4Пароль содержит запрещённые символы. Разрешённые: %valid_chars'
|
forbidden_characters: '&4Пароль содержит запрещённые символы. Разрешённые: %valid_chars'
|
||||||
wrong_length: '&cПароль слишком длинный/короткий.'
|
wrong_length: '&cПароль слишком длинный/короткий.'
|
||||||
|
pwned_password: '&cВыбранный вами пароль небезопасен. Он уже был использован %pwned_count раз! Пожалуйста, используйте надежный пароль...'
|
||||||
|
|
||||||
# Login
|
# Login
|
||||||
login:
|
login:
|
||||||
@@ -44,7 +50,6 @@ antibot:
|
|||||||
auto_enabled: '&4[AuthMe] AntiBot-режим включился из-за большого количества входов!'
|
auto_enabled: '&4[AuthMe] AntiBot-режим включился из-за большого количества входов!'
|
||||||
auto_disabled: '&2[AuthMe] AntiBot-режим отключился спустя %m мин.'
|
auto_disabled: '&2[AuthMe] AntiBot-режим отключился спустя %m мин.'
|
||||||
|
|
||||||
# Unregister
|
|
||||||
unregister:
|
unregister:
|
||||||
success: '&cУчётная запись успешно удалена!'
|
success: '&cУчётная запись успешно удалена!'
|
||||||
command_usage: '&cИспользование: /unregister <пароль>'
|
command_usage: '&cИспользование: /unregister <пароль>'
|
||||||
@@ -52,8 +57,9 @@ unregister:
|
|||||||
# Other messages
|
# Other messages
|
||||||
misc:
|
misc:
|
||||||
account_not_activated: '&cВаша уч. запись ещё не активирована. Проверьте электронную почту!'
|
account_not_activated: '&cВаша уч. запись ещё не активирована. Проверьте электронную почту!'
|
||||||
|
not_activated: '&cАккаунт не активирован, пожалуйста, зарегистрируйтесь и активируйте его перед повторной попыткой.'
|
||||||
password_changed: '&2Ваш пароль изменён!'
|
password_changed: '&2Ваш пароль изменён!'
|
||||||
logout: '&2Вы успешно вышли.'
|
logout: '&2Успешно вышли из системы!'
|
||||||
reload: '&6Конфигурация и база данных перезагружены.'
|
reload: '&6Конфигурация и база данных перезагружены.'
|
||||||
usage_change_password: '&cИспользование: /changepassword <пароль> <новый пароль>'
|
usage_change_password: '&cИспользование: /changepassword <пароль> <новый пароль>'
|
||||||
accounts_owned_self: 'У вас %count уч. записей:'
|
accounts_owned_self: 'У вас %count уч. записей:'
|
||||||
@@ -150,3 +156,17 @@ two_factor:
|
|||||||
not_enabled_error: 'Двухфакторная аутентификация не включена для вашего аккаунта. Введите /2fa add'
|
not_enabled_error: 'Двухфакторная аутентификация не включена для вашего аккаунта. Введите /2fa add'
|
||||||
removed_success: 'Двухфакторная аутентификация успешно удалена с вашего аккаунта!'
|
removed_success: 'Двухфакторная аутентификация успешно удалена с вашего аккаунта!'
|
||||||
invalid_code: 'Неверный код!'
|
invalid_code: 'Неверный код!'
|
||||||
|
|
||||||
|
# 3rd party features: Bedrock Auto Login
|
||||||
|
bedrock_auto_login:
|
||||||
|
success: '&aВы автоматически авторизовались потому что вы играете с Bedrock!'
|
||||||
|
|
||||||
|
# 3rd party features: Login Location Fix
|
||||||
|
login_location_fix:
|
||||||
|
fix_portal: '&aВы застряли в портале во время авторизации.'
|
||||||
|
fix_underground: '&aВы застряли под землей во время авторизации.'
|
||||||
|
cannot_fix_underground: '&aВы застряли под землей во время авторизации, но мы не можем это исправить.'
|
||||||
|
|
||||||
|
# 3rd party features: Double Login Fix
|
||||||
|
double_login_fix:
|
||||||
|
fix_message: '&cВы были отключены из-за двойного входа.'
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ registration:
|
|||||||
name_taken: '&cTo uporabniško ime ste ze registrirali!'
|
name_taken: '&cTo uporabniško ime ste ze registrirali!'
|
||||||
register_request: '&3Registrirajte se z ukazom "/register <geslo> <PotrdiGeslo>"'
|
register_request: '&3Registrirajte se z ukazom "/register <geslo> <PotrdiGeslo>"'
|
||||||
command_usage: '&cUporaba: /register <geslo> <PotrdiGeslo>'
|
command_usage: '&cUporaba: /register <geslo> <PotrdiGeslo>'
|
||||||
reg_only: '&4Samo registrirani uporabniki se lahko povezejo! Obiscite http://example.com , da se registrirate!'
|
reg_only: '&4Samo registrirani uporabniki se lahko povezejo! Obiscite https://example.com , da se registrirate!'
|
||||||
success: '&2Uspešno registriran!'
|
success: '&2Uspešno registriran!'
|
||||||
kicked_admin_registered: 'Administrator vas je registriral; prosimo, da se prijavite.'
|
kicked_admin_registered: 'Administrator vas je registriral; prosimo, da se prijavite.'
|
||||||
|
|
||||||
@@ -20,6 +20,7 @@ password:
|
|||||||
unsafe_password: '&cIzbrano geslo ni varno, izberite drugo...'
|
unsafe_password: '&cIzbrano geslo ni varno, izberite drugo...'
|
||||||
forbidden_characters: '&4Vaše geslo vsebuje nedovoljene znake. Dovoljeni znaki: %valid_chars'
|
forbidden_characters: '&4Vaše geslo vsebuje nedovoljene znake. Dovoljeni znaki: %valid_chars'
|
||||||
wrong_length: '&cVaše geslo je prekratko ali predolgo! Poskusite z drugim!'
|
wrong_length: '&cVaše geslo je prekratko ali predolgo! Poskusite z drugim!'
|
||||||
|
pwned_password: '&cIzbrano geslo ni varno. Uporabljeno je bilo že %pwned_count krat! Prosimo, uporabite močno geslo...'
|
||||||
|
|
||||||
# Login
|
# Login
|
||||||
login:
|
login:
|
||||||
@@ -40,7 +41,7 @@ error:
|
|||||||
max_registration: '&cPresegli ste največjo stevilo registracij (%reg_count/%max_acc %reg_names) za vašo povezavo!'
|
max_registration: '&cPresegli ste največjo stevilo registracij (%reg_count/%max_acc %reg_names) za vašo povezavo!'
|
||||||
logged_in: '&cSte že povezani!'
|
logged_in: '&cSte že povezani!'
|
||||||
kick_for_vip: '&3VIP igralec se je pridruzil serverju, ko je bil poln!'
|
kick_for_vip: '&3VIP igralec se je pridruzil serverju, ko je bil poln!'
|
||||||
# TODO kick_unresolved_hostname: '&cAn error occurred: unresolved player hostname!'
|
kick_unresolved_hostname: '&cPrišlo je do napake: ime gostitelja igralca ni razrešeno!'
|
||||||
tempban_max_logins: '&cBil si začasno izločen zaradi preveč neuspešnih prijav.'
|
tempban_max_logins: '&cBil si začasno izločen zaradi preveč neuspešnih prijav.'
|
||||||
|
|
||||||
# AntiBot
|
# AntiBot
|
||||||
@@ -57,6 +58,7 @@ unregister:
|
|||||||
# Other messages
|
# Other messages
|
||||||
misc:
|
misc:
|
||||||
account_not_activated: '&cVas račun se ni aktiviran, preverite e-mail!'
|
account_not_activated: '&cVas račun se ni aktiviran, preverite e-mail!'
|
||||||
|
not_activated: '&cRačun ni aktiviran, prosimo, registrirajte se in ga aktivirajte, preden poskusite znova.'
|
||||||
password_changed: '&2Geslo uspesno spremenjeno!'
|
password_changed: '&2Geslo uspesno spremenjeno!'
|
||||||
logout: '&2Odjavljeni uspesno!'
|
logout: '&2Odjavljeni uspesno!'
|
||||||
reload: '&2Konfiguracija in baza podatkov sta bila uspesno osvezena!'
|
reload: '&2Konfiguracija in baza podatkov sta bila uspesno osvezena!'
|
||||||
@@ -155,3 +157,17 @@ two_factor:
|
|||||||
not_enabled_error: 'Dvo stopična prijava ni vključena za vaš račun. Uporabite /2fa add'
|
not_enabled_error: 'Dvo stopična prijava ni vključena za vaš račun. Uporabite /2fa add'
|
||||||
removed_success: 'Usprešno ste odstranili dvo stopično prijavo za vaš račun.'
|
removed_success: 'Usprešno ste odstranili dvo stopično prijavo za vaš račun.'
|
||||||
invalid_code: 'Nepravilna koda!'
|
invalid_code: 'Nepravilna koda!'
|
||||||
|
|
||||||
|
# 3rd party features: Bedrock Auto Login
|
||||||
|
bedrock_auto_login:
|
||||||
|
success: '&aSamodejno prijavljanje v Bedrocku uspešno!'
|
||||||
|
|
||||||
|
# 3rd party features: Login Location Fix
|
||||||
|
login_location_fix:
|
||||||
|
fix_portal: '&aMed prijavo ste obtičali v portalu.'
|
||||||
|
fix_underground: '&aMed prijavo ste obtičali pod zemljo.'
|
||||||
|
cannot_fix_underground: '&aMed prijavo ste obtičali pod zemljo, vendar tega ne moremo popraviti.'
|
||||||
|
|
||||||
|
# 3rd party features: Double Login Fix
|
||||||
|
double_login_fix:
|
||||||
|
fix_message: '&cBili ste odklopljeni zaradi podvojenega prijave.'
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ registration:
|
|||||||
name_taken: '&cZadané meno je už zaregistrované.'
|
name_taken: '&cZadané meno je už zaregistrované.'
|
||||||
register_request: '&cZaregistruj sa príkazom "/register <heslo> <zopakujHeslo>".'
|
register_request: '&cZaregistruj sa príkazom "/register <heslo> <zopakujHeslo>".'
|
||||||
command_usage: '&cPoužitie: /register <heslo> <zopakujHeslo>'
|
command_usage: '&cPoužitie: /register <heslo> <zopakujHeslo>'
|
||||||
reg_only: '&fIba zaregistrovaný hráči sa môžu pripojiť na tento server! Navštív http://example.com pre registráciu.'
|
reg_only: '&fIba zaregistrovaný hráči sa môžu pripojiť na tento server! Navštív https://example.com pre registráciu.'
|
||||||
success: '&cBol si úspešne zaregistrovaný.'
|
success: '&cBol si úspešne zaregistrovaný.'
|
||||||
kicked_admin_registered: 'Admin ťa zaregistroval. Prosím, prihlás sa znovu.'
|
kicked_admin_registered: 'Admin ťa zaregistroval. Prosím, prihlás sa znovu.'
|
||||||
|
|
||||||
@@ -26,6 +26,7 @@ password:
|
|||||||
unsafe_password: '&cTvoje heslo nieje bezpečné. Prosím, zvoľ si iné...'
|
unsafe_password: '&cTvoje heslo nieje bezpečné. Prosím, zvoľ si iné...'
|
||||||
forbidden_characters: '&4Tvoje heslo obsahuje zakázané znaky. Povolené znaky: %valid_chars'
|
forbidden_characters: '&4Tvoje heslo obsahuje zakázané znaky. Povolené znaky: %valid_chars'
|
||||||
wrong_length: '&fHeslo je veľmi krátke alebo veľmi dlhé.'
|
wrong_length: '&fHeslo je veľmi krátke alebo veľmi dlhé.'
|
||||||
|
pwned_password: '&cVaše zvolené heslo nie je bezpečné. Bolo použité %pwned_count krát! Prosím, použite silné heslo...'
|
||||||
|
|
||||||
# Login
|
# Login
|
||||||
login:
|
login:
|
||||||
@@ -46,7 +47,7 @@ error:
|
|||||||
max_registration: '&fPrekročil si maximum registrovaných účtov(%reg_count/%max_acc|%reg_names).'
|
max_registration: '&fPrekročil si maximum registrovaných účtov(%reg_count/%max_acc|%reg_names).'
|
||||||
logged_in: '&cAktuálne si už prihlásený!'
|
logged_in: '&cAktuálne si už prihlásený!'
|
||||||
kick_for_vip: '&3Uvoľnil si miesto pre VIP hráča!'
|
kick_for_vip: '&3Uvoľnil si miesto pre VIP hráča!'
|
||||||
# TODO kick_unresolved_hostname: '&cAn error occurred: unresolved player hostname!'
|
kick_unresolved_hostname: '&cDošlo k chybe: nerozpoznaný hostname hráča!'
|
||||||
tempban_max_logins: '&cBol si dočasne zabanovaný za opakované zadanie zlého hesla.'
|
tempban_max_logins: '&cBol si dočasne zabanovaný za opakované zadanie zlého hesla.'
|
||||||
|
|
||||||
# AntiBot
|
# AntiBot
|
||||||
@@ -63,6 +64,7 @@ unregister:
|
|||||||
# Other messages
|
# Other messages
|
||||||
misc:
|
misc:
|
||||||
account_not_activated: '&fTvoj účet nie je aktivovaný. Prezri si svoj e-mail!'
|
account_not_activated: '&fTvoj účet nie je aktivovaný. Prezri si svoj e-mail!'
|
||||||
|
not_activated: '&cÚčet nie je aktivovaný, prosím, zaregistrujte sa a aktivujte ho pred pokusom o prihlásenie znova.'
|
||||||
password_changed: '&cHeslo zmenené!'
|
password_changed: '&cHeslo zmenené!'
|
||||||
logout: '&cBol si úspešne odhlásený.'
|
logout: '&cBol si úspešne odhlásený.'
|
||||||
reload: '&fZnovu načítanie konfigurácie a databázy bolo úspešné.'
|
reload: '&fZnovu načítanie konfigurácie a databázy bolo úspešné.'
|
||||||
@@ -85,7 +87,7 @@ on_join_validation:
|
|||||||
country_banned: '&4Tvoja krajina je zabanovaná na tomto serveri!'
|
country_banned: '&4Tvoja krajina je zabanovaná na tomto serveri!'
|
||||||
not_owner_error: 'Nie si majiteľom tohto účtu. Prosím zvoľ si iné meno!'
|
not_owner_error: 'Nie si majiteľom tohto účtu. Prosím zvoľ si iné meno!'
|
||||||
invalid_name_case: 'Mal by si sa pripojiť s nickom %valid, nie %invalid - pozor na veľké a malé písmená.'
|
invalid_name_case: 'Mal by si sa pripojiť s nickom %valid, nie %invalid - pozor na veľké a malé písmená.'
|
||||||
# TODO quick_command: 'You used a command too fast! Please, join the server again and wait more before using any command.'
|
quick_command: 'Príkaz ste použili príliš rýchlo! Prosím, znovu sa pripojte na server a počkajte dlhšie pred použitím akéhokoľvek príkazu.'
|
||||||
|
|
||||||
# Email
|
# Email
|
||||||
email:
|
email:
|
||||||
@@ -96,10 +98,10 @@ email:
|
|||||||
old_email_invalid: '&cNeplatný starý email, skús to znovu!'
|
old_email_invalid: '&cNeplatný starý email, skús to znovu!'
|
||||||
invalid: '&cNeplatná emailová adresa, skús to znovu!'
|
invalid: '&cNeplatná emailová adresa, skús to znovu!'
|
||||||
added: '&2Emailová adresa bola úspešne pridaná k tvojmu účtu!'
|
added: '&2Emailová adresa bola úspešne pridaná k tvojmu účtu!'
|
||||||
# TODO add_not_allowed: '&cAdding email was not allowed'
|
add_not_allowed: '&cPridanie emailu nebolo povolené.'
|
||||||
request_confirmation: '&cProsím potvrď svoju emailovú adresu!'
|
request_confirmation: '&cProsím potvrď svoju emailovú adresu!'
|
||||||
changed: '&2Emailová adresa bola úspešne zmenená!'
|
changed: '&2Emailová adresa bola úspešne zmenená!'
|
||||||
# TODO change_not_allowed: '&cChanging email was not allowed'
|
change_not_allowed: '&cZmena emailu nebola povolená.'
|
||||||
email_show: '&2Tvoja súčastná emailová adresa je: &f%email'
|
email_show: '&2Tvoja súčastná emailová adresa je: &f%email'
|
||||||
no_email_for_account: '&2Momentálne nemáš emailovú adresu spojenú s týmto účtom.'
|
no_email_for_account: '&2Momentálne nemáš emailovú adresu spojenú s týmto účtom.'
|
||||||
already_used: '&4Túto emailovú adresu už niekto používa.'
|
already_used: '&4Túto emailovú adresu už niekto používa.'
|
||||||
@@ -125,18 +127,18 @@ captcha:
|
|||||||
usage_captcha: '&3Pre prihlásenie musíš vyriešiť captcha kód, prosím použi príkaz: /captcha %captcha_code'
|
usage_captcha: '&3Pre prihlásenie musíš vyriešiť captcha kód, prosím použi príkaz: /captcha %captcha_code'
|
||||||
wrong_captcha: '&cNesprávny kód captcha, prosím napíš "/captcha %captcha_code" do chatu!'
|
wrong_captcha: '&cNesprávny kód captcha, prosím napíš "/captcha %captcha_code" do chatu!'
|
||||||
valid_captcha: '&2Správne si vyriešil captcha kód!'
|
valid_captcha: '&2Správne si vyriešil captcha kód!'
|
||||||
# TODO captcha_for_registration: 'To register you have to solve a captcha first, please use the command: /captcha %captcha_code'
|
captcha_for_registration: 'Ak sa chcete zaregistrovať, musíte najskôr vyriešiť captcha, prosím, použite príkaz: /captcha %captcha_code'
|
||||||
# TODO register_captcha_valid: '&2Valid captcha! You may now register with /register'
|
register_captcha_valid: '&2Platná captcha! Teraz sa môžete zaregistrovať pomocou /register'
|
||||||
|
|
||||||
# Verification code
|
# Verification code
|
||||||
verification:
|
verification:
|
||||||
# TODO code_required: '&3This command is sensitive and requires an email verification! Check your inbox and follow the email''s instructions.'
|
code_required: '&3Tento príkaz je citlivý a vyžaduje overenie emailom! Skontrolujte svoju schránku a postupujte podľa pokynov v emaile.'
|
||||||
# TODO command_usage: '&cUsage: /verification <code>'
|
command_usage: '&cPoužitie: /verification <code>'
|
||||||
# TODO incorrect_code: '&cIncorrect code, please type "/verification <code>" into the chat, using the code you received by email'
|
incorrect_code: '&cNesprávny kód, prosím, zadajte "/verification <code>" do chatu, pomocou kódu, ktorý ste dostali emailom'
|
||||||
# TODO success: '&2Your identity has been verified! You can now execute all commands within the current session!'
|
success: '&2Vaša identita bola overená! Teraz môžete vykonávať všetky príkazy v rámci aktuálnej relácie!'
|
||||||
# TODO already_verified: '&2You can already execute every sensitive command within the current session!'
|
already_verified: '&2Už môžete vykonávať každý citlivý príkaz v rámci aktuálnej relácie!'
|
||||||
# TODO code_expired: '&3Your code has expired! Execute another sensitive command to get a new code!'
|
code_expired: '&3Váš kód vypršal! Vykonajte ďalší citlivý príkaz na získanie nového kódu!'
|
||||||
# TODO email_needed: '&3To verify your identity you need to link an email address with your account!!'
|
email_needed: '&3Na overenie vašej identity potrebujete prepojiť emailovú adresu so svojím účtom!!'
|
||||||
|
|
||||||
# Time units
|
# Time units
|
||||||
time:
|
time:
|
||||||
@@ -152,12 +154,26 @@ time:
|
|||||||
# Two-factor authentication
|
# Two-factor authentication
|
||||||
two_factor:
|
two_factor:
|
||||||
code_created: '&2Tvoj tajný kód je %code. Môžeš ho oskenovať tu: %url'
|
code_created: '&2Tvoj tajný kód je %code. Môžeš ho oskenovať tu: %url'
|
||||||
# TODO confirmation_required: 'Please confirm your code with /2fa confirm <code>'
|
confirmation_required: 'Prosím, potvrďte svoj kód pomocou /2fa confirm <code>'
|
||||||
# TODO code_required: 'Please submit your two-factor authentication code with /2fa code <code>'
|
code_required: 'Prosím, zadajte svoj dvojfaktorový autentifikačný kód pomocou /2fa code <code>'
|
||||||
# TODO already_enabled: 'Two-factor authentication is already enabled for your account!'
|
already_enabled: 'Dvojfaktorová autentifikácia je už pre váš účet povolená!'
|
||||||
# TODO enable_error_no_code: 'No 2fa key has been generated for you or it has expired. Please run /2fa add'
|
enable_error_no_code: 'Nebolo pre vás vygenerované žiadne 2fa kľúč alebo vypršal jeho platnosť. Prosím, použite príkaz /2fa add'
|
||||||
# TODO enable_success: 'Successfully enabled two-factor authentication for your account'
|
enable_success: 'Dvojfaktorová autentifikácia bola úspešne povolená pre váš účet'
|
||||||
# TODO enable_error_wrong_code: 'Wrong code or code has expired. Please run /2fa add'
|
enable_error_wrong_code: 'Nesprávny kód alebo kód vypršal. Prosím, použite príkaz /2fa add'
|
||||||
# TODO not_enabled_error: 'Two-factor authentication is not enabled for your account. Run /2fa add'
|
not_enabled_error: 'Dvojfaktorová autentifikácia nie je pre váš účet povolená. Použite príkaz /2fa add'
|
||||||
# TODO removed_success: 'Successfully removed two-factor auth from your account'
|
removed_success: 'Dvojfaktorová autentifikácia bola úspešne odstránená z vášho účtu'
|
||||||
# TODO invalid_code: 'Invalid code!'
|
invalid_code: 'Neplatný kód!'
|
||||||
|
|
||||||
|
# 3rd party features: Bedrock Auto Login
|
||||||
|
bedrock_auto_login:
|
||||||
|
success: '&aAutomatické prihlásenie do Bedrocku úspešné!'
|
||||||
|
|
||||||
|
# 3rd party features: Login Location Fix
|
||||||
|
login_location_fix:
|
||||||
|
fix_portal: '&aPočas prihlasovania ste uviazli v portáli.'
|
||||||
|
fix_underground: '&aPočas prihlasovania ste uviazli pod zemou.'
|
||||||
|
cannot_fix_underground: '&aPočas prihlasovania ste uviazli pod zemou, ale nemôžeme to opraviť.'
|
||||||
|
|
||||||
|
# 3rd party features: Double Login Fix
|
||||||
|
double_login_fix:
|
||||||
|
fix_message: '&cBoli ste odpojení kvôli zdvojenému prihláseniu.'
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ registration:
|
|||||||
name_taken: '&cKorisnik je već registrovan!'
|
name_taken: '&cKorisnik je već registrovan!'
|
||||||
register_request: '&3Molimo Vas, registrujte se na server komandom: /register <lozinka> <PotvrditeLozinku>'
|
register_request: '&3Molimo Vas, registrujte se na server komandom: /register <lozinka> <PotvrditeLozinku>'
|
||||||
command_usage: '&cUpotreba: /register <lozinka> <PotvrditeLozinku>'
|
command_usage: '&cUpotreba: /register <lozinka> <PotvrditeLozinku>'
|
||||||
reg_only: '&4Samo registrovani igrači mogu ući na server! Molimo Vas posetite http://example.com da biste se registrovali!'
|
reg_only: '&4Samo registrovani igrači mogu ući na server! Molimo Vas posetite https://example.com da biste se registrovali!'
|
||||||
success: '&2Uspešno registrovani!'
|
success: '&2Uspešno registrovani!'
|
||||||
kicked_admin_registered: 'Admin vas je upravo registrovao; molimo Vas uđite ponovo'
|
kicked_admin_registered: 'Admin vas je upravo registrovao; molimo Vas uđite ponovo'
|
||||||
|
|
||||||
@@ -20,6 +20,7 @@ password:
|
|||||||
unsafe_password: '&cIzabrana lozinka nije bezbedna, molimo vas da izaberete drugu...'
|
unsafe_password: '&cIzabrana lozinka nije bezbedna, molimo vas da izaberete drugu...'
|
||||||
forbidden_characters: '&4Vaša lozinka sadrži nedozvoljene karaktere. Dozvoljeni karakteri: %valid_chars'
|
forbidden_characters: '&4Vaša lozinka sadrži nedozvoljene karaktere. Dozvoljeni karakteri: %valid_chars'
|
||||||
wrong_length: '&cVaša lozinka je prekratka ili predugačka! Molimo Vas da probate drugu!'
|
wrong_length: '&cVaša lozinka je prekratka ili predugačka! Molimo Vas da probate drugu!'
|
||||||
|
pwned_password: '&cVaša izabrana lozinka nije sigurna. Već je korišćena %pwned_count puta! Molimo koristite jaku lozinku...'
|
||||||
|
|
||||||
# Login
|
# Login
|
||||||
login:
|
login:
|
||||||
@@ -40,7 +41,7 @@ error:
|
|||||||
max_registration: '&cDostigli ste maksimalan broj registracija (%reg_count/%max_acc %reg_names) za vaše povezivanje!'
|
max_registration: '&cDostigli ste maksimalan broj registracija (%reg_count/%max_acc %reg_names) za vaše povezivanje!'
|
||||||
logged_in: '&cVeć ste ulogovani!'
|
logged_in: '&cVeć ste ulogovani!'
|
||||||
kick_for_vip: '&3VIP igrač je ušao na server dok je bio pun!'
|
kick_for_vip: '&3VIP igrač je ušao na server dok je bio pun!'
|
||||||
# TODO kick_unresolved_hostname: '&cAn error occurred: unresolved player hostname!'
|
kick_unresolved_hostname: '&cDošlo je do greške: nerešeno ime domaćina igrača!'
|
||||||
tempban_max_logins: '&cPrivremeno ste banovani zbog previše pogrešnih pokušaja ulogovanja.'
|
tempban_max_logins: '&cPrivremeno ste banovani zbog previše pogrešnih pokušaja ulogovanja.'
|
||||||
|
|
||||||
# AntiBot
|
# AntiBot
|
||||||
@@ -57,6 +58,7 @@ unregister:
|
|||||||
# Other messages
|
# Other messages
|
||||||
misc:
|
misc:
|
||||||
account_not_activated: '&cVaš nalog još uvek nije aktiviran, molimo Vas proverite svoj email!'
|
account_not_activated: '&cVaš nalog još uvek nije aktiviran, molimo Vas proverite svoj email!'
|
||||||
|
not_activated: '&cNalog nije aktiviran, molimo registrujte se i aktivirajte pre nego što pokušate ponovo.'
|
||||||
password_changed: '&2Lozinka uspešno promenjena!'
|
password_changed: '&2Lozinka uspešno promenjena!'
|
||||||
logout: '&2Uspešno ste se odlogovali!'
|
logout: '&2Uspešno ste se odlogovali!'
|
||||||
reload: '&2Konfiguracija i databaza su uspešno osveženi!'
|
reload: '&2Konfiguracija i databaza su uspešno osveženi!'
|
||||||
@@ -155,3 +157,17 @@ two_factor:
|
|||||||
not_enabled_error: 'Dvo-faktorna autentifikacija nije aktivirana za vaš nalog. Kucajte /2fa add'
|
not_enabled_error: 'Dvo-faktorna autentifikacija nije aktivirana za vaš nalog. Kucajte /2fa add'
|
||||||
removed_success: 'Uspešno ste uklonili dvo-faktornu autentifikaciju sa vašeg naloga'
|
removed_success: 'Uspešno ste uklonili dvo-faktornu autentifikaciju sa vašeg naloga'
|
||||||
invalid_code: 'Nevažeći kod!'
|
invalid_code: 'Nevažeći kod!'
|
||||||
|
|
||||||
|
# 3rd party features: Bedrock Auto Login
|
||||||
|
bedrock_auto_login:
|
||||||
|
success: '&aBedrock automatsko prijavljivanje uspešno!'
|
||||||
|
|
||||||
|
# 3rd party features: Login Location Fix
|
||||||
|
login_location_fix:
|
||||||
|
fix_portal: '&aZaglavljeni ste u portalu tokom prijavljivanja.'
|
||||||
|
fix_underground: '&aZaglavljeni ste pod zemljom tokom prijavljivanja.'
|
||||||
|
cannot_fix_underground: '&aZaglavljeni ste pod zemljom tokom prijavljivanja, ali ne možemo to popraviti.'
|
||||||
|
|
||||||
|
# 3rd party features: Double Login Fix
|
||||||
|
double_login_fix:
|
||||||
|
fix_message: '&cPrekinuti ste zbog duplog prijavljivanja.'
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ registration:
|
|||||||
name_taken: '&cSenin adinda daha once birisi kaydolmus!'
|
name_taken: '&cSenin adinda daha once birisi kaydolmus!'
|
||||||
register_request: '&3Lutfen kayit komutunu kullanin "/register <sifre> <TekrarSifre>"'
|
register_request: '&3Lutfen kayit komutunu kullanin "/register <sifre> <TekrarSifre>"'
|
||||||
command_usage: '&cKullanim: /register <sifre> <TekrarSifre>'
|
command_usage: '&cKullanim: /register <sifre> <TekrarSifre>'
|
||||||
reg_only: '&4Sunucuya kayit sadece internet uzerinden yapilmakta! Lutfen http://ornek.com sitesini kayit icin ziyaret edin!'
|
reg_only: '&4Sunucuya kayit sadece internet uzerinden yapilmakta! Lutfen https://ornek.com sitesini kayit icin ziyaret edin!'
|
||||||
success: '&2Basariyla kaydoldun!'
|
success: '&2Basariyla kaydoldun!'
|
||||||
kicked_admin_registered: 'Bir yetkili seni kayit etti; tekrardan giris yap'
|
kicked_admin_registered: 'Bir yetkili seni kayit etti; tekrardan giris yap'
|
||||||
|
|
||||||
@@ -20,6 +20,7 @@ password:
|
|||||||
unsafe_password: '&cSectiginiz sifre guvenli degil, lutfen farkli bir sifre secin...'
|
unsafe_password: '&cSectiginiz sifre guvenli degil, lutfen farkli bir sifre secin...'
|
||||||
forbidden_characters: '&4Sifrenizde izin verilmeyen karakterler bulunmakta. Izin verilen karakterler: %valid_chars'
|
forbidden_characters: '&4Sifrenizde izin verilmeyen karakterler bulunmakta. Izin verilen karakterler: %valid_chars'
|
||||||
wrong_length: '&cSenin sifren ya cok kisa yada cok uzun! Lutfen farkli birsey dene!'
|
wrong_length: '&cSenin sifren ya cok kisa yada cok uzun! Lutfen farkli birsey dene!'
|
||||||
|
pwned_password: '&cSeçtiğiniz şifre güvenli değil. Zaten %pwned_count kez kullanılmış! Lütfen güçlü bir şifre kullanın...'
|
||||||
|
|
||||||
# Login
|
# Login
|
||||||
login:
|
login:
|
||||||
@@ -57,6 +58,7 @@ unregister:
|
|||||||
# Other messages
|
# Other messages
|
||||||
misc:
|
misc:
|
||||||
account_not_activated: '&cHeabiniz henuz aktif edilmemis, e-postanizi kontrol edin!'
|
account_not_activated: '&cHeabiniz henuz aktif edilmemis, e-postanizi kontrol edin!'
|
||||||
|
not_activated: '&cHesap aktif değil, lütfen tekrar denemeden önce kaydolun ve aktif hale getirin.'
|
||||||
password_changed: '&2Sifre basariyla degistirildi!'
|
password_changed: '&2Sifre basariyla degistirildi!'
|
||||||
logout: '&2Basariyla cikis yaptin!'
|
logout: '&2Basariyla cikis yaptin!'
|
||||||
reload: '&2Ayarlar ve veritabani yenilendi!'
|
reload: '&2Ayarlar ve veritabani yenilendi!'
|
||||||
@@ -155,3 +157,17 @@ two_factor:
|
|||||||
not_enabled_error: 'Iki-faktorlu kimlik dogrulama kodu hesabiniz icin aktif edilmemis. /2fa add komutunu calistirin'
|
not_enabled_error: 'Iki-faktorlu kimlik dogrulama kodu hesabiniz icin aktif edilmemis. /2fa add komutunu calistirin'
|
||||||
removed_success: 'Iki-faktorlu dogrulama hesabinizdan basariyla kaldirilmistir'
|
removed_success: 'Iki-faktorlu dogrulama hesabinizdan basariyla kaldirilmistir'
|
||||||
invalid_code: 'Gecersiz kod!'
|
invalid_code: 'Gecersiz kod!'
|
||||||
|
|
||||||
|
# 3rd party features: Bedrock Auto Login
|
||||||
|
bedrock_auto_login:
|
||||||
|
success: '&aBedrock otomatik giriş başarılı!'
|
||||||
|
|
||||||
|
# 3rd party features: Login Location Fix
|
||||||
|
login_location_fix:
|
||||||
|
fix_portal: '&aGiriş sırasında portalda sıkıştınız.'
|
||||||
|
fix_underground: '&aGiriş sırasında yeraltında sıkıştınız.'
|
||||||
|
cannot_fix_underground: '&aGiriş sırasında yeraltında sıkıştınız, ancak bunu düzeltemiyoruz.'
|
||||||
|
|
||||||
|
# 3rd party features: Double Login Fix
|
||||||
|
double_login_fix:
|
||||||
|
fix_message: '&cÇifte giriş nedeniyle bağlantınız kesildi.'
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ registration:
|
|||||||
name_taken: '&cТакий нікнейм вже зареєстровано.'
|
name_taken: '&cТакий нікнейм вже зареєстровано.'
|
||||||
register_request: '&3Перш ніж почати гру, вам потрібно зареєструвати свій нікнейм!%nl%&3Для цього просто введіть команду "/register <пароль> <повторПароля>"'
|
register_request: '&3Перш ніж почати гру, вам потрібно зареєструвати свій нікнейм!%nl%&3Для цього просто введіть команду "/register <пароль> <повторПароля>"'
|
||||||
command_usage: '&cСинтаксис: /register <пароль> <повторПароля>'
|
command_usage: '&cСинтаксис: /register <пароль> <повторПароля>'
|
||||||
reg_only: '&4Лише зареєстровані гравці можуть підключатись до сервера!%nl%&4Будь ласка, відвідайте http://example.com для реєстрації.'
|
reg_only: '&4Лише зареєстровані гравці можуть підключатись до сервера!%nl%&4Будь ласка, відвідайте https://example.com для реєстрації.'
|
||||||
success: '&2Реєстрація пройшла успішно!'
|
success: '&2Реєстрація пройшла успішно!'
|
||||||
kicked_admin_registered: 'Адміністратор вас зареєстрував; Будь ласка, авторизуйтесь знову!'
|
kicked_admin_registered: 'Адміністратор вас зареєстрував; Будь ласка, авторизуйтесь знову!'
|
||||||
|
|
||||||
@@ -20,6 +20,7 @@ password:
|
|||||||
unsafe_password: '&cЦей пароль надто простий! Будь ласка, придумайте інакший...'
|
unsafe_password: '&cЦей пароль надто простий! Будь ласка, придумайте інакший...'
|
||||||
forbidden_characters: '&4Ваш пароль містить недопустимі символи. Підберіть інакший...%nl%&4(Reg-ex: %valid_chars)'
|
forbidden_characters: '&4Ваш пароль містить недопустимі символи. Підберіть інакший...%nl%&4(Reg-ex: %valid_chars)'
|
||||||
wrong_length: '&cВаш пароль надто короткий або надто довгий! Спробуйте інакший...'
|
wrong_length: '&cВаш пароль надто короткий або надто довгий! Спробуйте інакший...'
|
||||||
|
pwned_password: '&cВаш вибраний пароль небезпечний. Він вже використовувався %pwned_count разів! Будь ласка, використовуйте надійний пароль...'
|
||||||
|
|
||||||
# Login
|
# Login
|
||||||
login:
|
login:
|
||||||
@@ -57,6 +58,7 @@ unregister:
|
|||||||
# Other messages
|
# Other messages
|
||||||
misc:
|
misc:
|
||||||
account_not_activated: '&cВаш акаунт ще не активовано. Будь ласка, провірте свою електронну пошту!'
|
account_not_activated: '&cВаш акаунт ще не активовано. Будь ласка, провірте свою електронну пошту!'
|
||||||
|
not_activated: '&cАкаунт не активовано, будь ласка, зареєструйтесь і активуйте його перед повторною спробою.'
|
||||||
password_changed: '&2Пароль успішно змінено!'
|
password_changed: '&2Пароль успішно змінено!'
|
||||||
logout: '&2Ви вийшли зі свого акаунта!'
|
logout: '&2Ви вийшли зі свого акаунта!'
|
||||||
reload: '&2Конфігурації та базу даних було успішно перезавантажено!'
|
reload: '&2Конфігурації та базу даних було успішно перезавантажено!'
|
||||||
@@ -76,7 +78,7 @@ on_join_validation:
|
|||||||
name_length: '&4Ваш нікнейм надто короткий або надто довгий!'
|
name_length: '&4Ваш нікнейм надто короткий або надто довгий!'
|
||||||
characters_in_name: '&4Ваш нікнейм містить недопустимі символи! Reg-ex: %valid_chars'
|
characters_in_name: '&4Ваш нікнейм містить недопустимі символи! Reg-ex: %valid_chars'
|
||||||
kick_full_server: '&4Сервер переповнено! Доведеться зачекати доки хтось вийде.'
|
kick_full_server: '&4Сервер переповнено! Доведеться зачекати доки хтось вийде.'
|
||||||
country_banned: '&4Your country is banned from this server!'
|
country_banned: '&4Ваша країна заборонена на цьому сервері!'
|
||||||
not_owner_error: 'Цей акаунт вам не належить! Будь ласка, оберіть інакший нікнейм!'
|
not_owner_error: 'Цей акаунт вам не належить! Будь ласка, оберіть інакший нікнейм!'
|
||||||
invalid_name_case: 'Регістр у вашому нікнеймі відрізняється від регістру при реєстрації.%nl%Поточний регістр: &c%invalid&f. Валідний регістр: &a%valid&f.%nl%Будь ласка, перезайдіть з валідним регістром!'
|
invalid_name_case: 'Регістр у вашому нікнеймі відрізняється від регістру при реєстрації.%nl%Поточний регістр: &c%invalid&f. Валідний регістр: &a%valid&f.%nl%Будь ласка, перезайдіть з валідним регістром!'
|
||||||
quick_command: 'Ви занадто швидко використовували команду! Будь ласка, приєднайтесь знову до сервера і почекайте, перш ніж використовувати будь-яку команду.'
|
quick_command: 'Ви занадто швидко використовували команду! Будь ласка, приєднайтесь знову до сервера і почекайте, перш ніж використовувати будь-яку команду.'
|
||||||
@@ -155,3 +157,17 @@ two_factor:
|
|||||||
not_enabled_error: 'Двофакторна аутентифікація не включена для вашого акаунту. Використовуйте: /2fa add'
|
not_enabled_error: 'Двофакторна аутентифікація не включена для вашого акаунту. Використовуйте: /2fa add'
|
||||||
removed_success: 'Двофакторну авторизацію успішно видалено з вашого акаунту'
|
removed_success: 'Двофакторну авторизацію успішно видалено з вашого акаунту'
|
||||||
invalid_code: 'Невірний код!'
|
invalid_code: 'Невірний код!'
|
||||||
|
|
||||||
|
# 3rd party features: Bedrock Auto Login
|
||||||
|
bedrock_auto_login:
|
||||||
|
success: '&aАвтоматичний вхід Bedrock успішний!'
|
||||||
|
|
||||||
|
# 3rd party features: Login Location Fix
|
||||||
|
login_location_fix:
|
||||||
|
fix_portal: '&aВи застрягли в порталі під час входу.'
|
||||||
|
fix_underground: '&aВи застрягли під землею під час входу.'
|
||||||
|
cannot_fix_underground: '&aВи застрягли під землею під час входу, але ми не можемо це виправити.'
|
||||||
|
|
||||||
|
# 3rd party features: Double Login Fix
|
||||||
|
double_login_fix:
|
||||||
|
fix_message: '&cВас відключено через подвійний вхід.'
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ registration:
|
|||||||
name_taken: '&cTài khoản này đã được đăng ký!'
|
name_taken: '&cTài khoản này đã được đăng ký!'
|
||||||
register_request: '&2Xin vui lòng đăng ký tài khoản với lệnh "/register <mật khẩu> <nhập lại mật khẩu>"'
|
register_request: '&2Xin vui lòng đăng ký tài khoản với lệnh "/register <mật khẩu> <nhập lại mật khẩu>"'
|
||||||
command_usage: '&cSử dụng: /register <mật khẩu> <nhập lại mật khẩu>'
|
command_usage: '&cSử dụng: /register <mật khẩu> <nhập lại mật khẩu>'
|
||||||
reg_only: '&4Chỉ có thành viên mới có thể tham gia máy chủ, vui lòng truy cập trang web http://example.com để đăng ký thành viên!'
|
reg_only: '&4Chỉ có thành viên mới có thể tham gia máy chủ, vui lòng truy cập trang web https://example.com để đăng ký thành viên!'
|
||||||
success: '&2Đăng ký thành công!'
|
success: '&2Đăng ký thành công!'
|
||||||
kicked_admin_registered: 'Một quản trị viên đã đăng ký cho bạn; vui lòng đăng nhập lại'
|
kicked_admin_registered: 'Một quản trị viên đã đăng ký cho bạn; vui lòng đăng nhập lại'
|
||||||
|
|
||||||
@@ -20,6 +20,7 @@ password:
|
|||||||
unsafe_password: '&cMật khẩu của bạn vừa đặt không an toàn, vui lòng đặt lại...'
|
unsafe_password: '&cMật khẩu của bạn vừa đặt không an toàn, vui lòng đặt lại...'
|
||||||
forbidden_characters: '&4Mật khẩu của bạn chứa ký tự không hợp lệ. Các ký tự cho phép: %valid_chars'
|
forbidden_characters: '&4Mật khẩu của bạn chứa ký tự không hợp lệ. Các ký tự cho phép: %valid_chars'
|
||||||
wrong_length: '&cMật khẩu của bạn đặt quá dài hoặc quá ngắn, vui lòng đặt lại!'
|
wrong_length: '&cMật khẩu của bạn đặt quá dài hoặc quá ngắn, vui lòng đặt lại!'
|
||||||
|
pwned_password: '&cMật khẩu bạn chọn không an toàn. Nó đã được sử dụng %pwned_count lần! Vui lòng sử dụng mật khẩu mạnh...'
|
||||||
|
|
||||||
# Login
|
# Login
|
||||||
login:
|
login:
|
||||||
@@ -57,6 +58,7 @@ unregister:
|
|||||||
# Other messages
|
# Other messages
|
||||||
misc:
|
misc:
|
||||||
account_not_activated: '&cTài khoản của bạn chưa được kích hoạt, vui lòng kiểm tra email!'
|
account_not_activated: '&cTài khoản của bạn chưa được kích hoạt, vui lòng kiểm tra email!'
|
||||||
|
not_activated: '&cTài khoản chưa được kích hoạt, vui lòng đăng ký và kích hoạt trước khi thử lại.'
|
||||||
password_changed: '&2Thay đổi mật khẩu thành công!'
|
password_changed: '&2Thay đổi mật khẩu thành công!'
|
||||||
logout: '&2Bạn đã đăng xuất!'
|
logout: '&2Bạn đã đăng xuất!'
|
||||||
reload: '&2Cấu hình và cơ sở dử liệu đã được tải lại thành công!'
|
reload: '&2Cấu hình và cơ sở dử liệu đã được tải lại thành công!'
|
||||||
@@ -156,3 +158,16 @@ two_factor:
|
|||||||
removed_success: 'Đã thành công tắt xác thực 2 lớp khỏi tài khoản của bạn'
|
removed_success: 'Đã thành công tắt xác thực 2 lớp khỏi tài khoản của bạn'
|
||||||
invalid_code: 'Mã xác thực không hợp lệ!'
|
invalid_code: 'Mã xác thực không hợp lệ!'
|
||||||
|
|
||||||
|
# 3rd party features: Bedrock Auto Login
|
||||||
|
bedrock_auto_login:
|
||||||
|
success: '&aĐăng nhập tự động Bedrock thành công!'
|
||||||
|
|
||||||
|
# 3rd party features: Login Location Fix
|
||||||
|
login_location_fix:
|
||||||
|
fix_portal: '&aBạn bị kẹt trong cổng khi đăng nhập.'
|
||||||
|
fix_underground: '&aBạn bị kẹt dưới lòng đất khi đăng nhập.'
|
||||||
|
cannot_fix_underground: '&aBạn bị kẹt dưới lòng đất khi đăng nhập, nhưng chúng tôi không thể khắc phục điều này.'
|
||||||
|
|
||||||
|
# 3rd party features: Double Login Fix
|
||||||
|
double_login_fix:
|
||||||
|
fix_message: '&cBạn đã bị ngắt kết nối do đăng nhập đôi.'
|
||||||
|
|||||||
@@ -166,17 +166,6 @@ two_factor:
|
|||||||
removed_success: '&c双重验证已从您的账号上禁用'
|
removed_success: '&c双重验证已从您的账号上禁用'
|
||||||
invalid_code: '&c无效的验证码'
|
invalid_code: '&c无效的验证码'
|
||||||
|
|
||||||
# 3rd party features: GUI Captcha
|
|
||||||
gui_captcha:
|
|
||||||
success: '&a*** 验证完成 ***'
|
|
||||||
bedrock_auto_verify_success: '&a*** 基岩版自动验证完成 ***'
|
|
||||||
captcha_window_name: '&k%random&r&n请验证你是真人'
|
|
||||||
captcha_clickable_name: '&k%random&r&n我是真人'
|
|
||||||
message_on_retry: '&c验证失败,你还有 %times 次机会'
|
|
||||||
denied_message_sending: '&c请先完成验证再聊天!'
|
|
||||||
kick_on_failed: '&c请先完成验证!'
|
|
||||||
kick_on_timeout: '&c验证超时'
|
|
||||||
|
|
||||||
# 3rd party features: Bedrock Auto Login
|
# 3rd party features: Bedrock Auto Login
|
||||||
bedrock_auto_login:
|
bedrock_auto_login:
|
||||||
success: "&a基岩版自动登录完成"
|
success: "&a基岩版自动登录完成"
|
||||||
@@ -190,5 +179,3 @@ login_location_fix:
|
|||||||
# 3rd party features: Double Login Fix
|
# 3rd party features: Double Login Fix
|
||||||
double_login_fix:
|
double_login_fix:
|
||||||
fix_message: '&a已修复幽灵玩家, 请重新进入'
|
fix_message: '&a已修复幽灵玩家, 请重新进入'
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user