Compare commits

...

169 Commits

Author SHA1 Message Date
蛟龙 a1a7285df0 Chores & Migrate to libs.versions.toml (#243)
* update dependenices & workflows

* Migrate to libs.versions.toml
2025-02-11 17:26:19 +08:00
Dreeam cd73603e3f Update Gradle and other stuff (#241)
* Update

* Don't filter files under `META-INF`

* Update workflow
2025-01-28 11:08:23 +08:00
HaHaWTH ed3091994d Update 2024-12-13 08:16:43 -08:00
HaHaWTH 4bd22c1e91 Merge remote-tracking branch 'origin/master' into gradle
# Conflicts:
#	.github/workflows/maven.yml
#	pom.xml
#	src/main/resources/plugin.yml
2024-12-13 07:44:32 -08:00
Deichor b630df850f Update Multiverse and removed unused folialib 2024-12-10 02:33:35 +03:00
dependabot[bot] da99cad206 Bump org.apache.maven.plugins:maven-javadoc-plugin from 3.10.1 to 3.11.1 (#224) 2024-12-08 12:57:07 +00:00
Kobe ⑧ 22027b5fdd Merge pull request #231 from HaHaWTH/dependabot/maven/org.xerial-sqlite-jdbc-3.47.1.0
Bump org.xerial:sqlite-jdbc from 3.47.0.0 to 3.47.1.0
2024-12-04 09:00:07 -08:00
dependabot[bot] 7f00c4183f Bump org.xerial:sqlite-jdbc from 3.47.0.0 to 3.47.1.0
Bumps [org.xerial:sqlite-jdbc](https://github.com/xerial/sqlite-jdbc) from 3.47.0.0 to 3.47.1.0.
- [Release notes](https://github.com/xerial/sqlite-jdbc/releases)
- [Changelog](https://github.com/xerial/sqlite-jdbc/blob/master/CHANGELOG)
- [Commits](https://github.com/xerial/sqlite-jdbc/compare/3.47.0.0...3.47.1.0)

---
updated-dependencies:
- dependency-name: org.xerial:sqlite-jdbc
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-26 04:25:26 +00:00
HaHaWTH 2bde2fd8ac default false 2024-11-04 21:57:28 +08:00
HaHaWTH 48a48f0c07 Remove menu plugin 2024-11-04 19:38:31 +08:00
HaHaWTH a70d1d7268 Update workflow 2024-11-04 19:36:07 +08:00
HaHaWTH 5cc4167e4f Reformat email.html 2024-11-04 19:31:55 +08:00
HaHaWTH b9e2514556 Cleanup 2024-11-04 19:24:24 +08:00
Kobe ⑧ 0b11781329 Merge pull request #221 from HaHaWTH/dependabot/maven/org.xerial-sqlite-jdbc-3.47.0.0
Bump org.xerial:sqlite-jdbc from 3.46.1.2 to 3.47.0.0
2024-10-24 21:21:53 +08:00
Kobe ⑧ 645d11ea54 Merge pull request #222 from HaHaWTH/dependabot/maven/org.apache.maven.plugins-maven-site-plugin-3.21.0
Bump org.apache.maven.plugins:maven-site-plugin from 3.12.1 to 3.21.0
2024-10-24 21:21:36 +08:00
dependabot[bot] 3e87b9f44a Bump org.apache.maven.plugins:maven-site-plugin from 3.12.1 to 3.21.0
Bumps [org.apache.maven.plugins:maven-site-plugin](https://github.com/apache/maven-site-plugin) from 3.12.1 to 3.21.0.
- [Release notes](https://github.com/apache/maven-site-plugin/releases)
- [Commits](https://github.com/apache/maven-site-plugin/compare/maven-site-plugin-3.12.1...maven-site-plugin-3.21.0)

---
updated-dependencies:
- dependency-name: org.apache.maven.plugins:maven-site-plugin
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-23 05:04:58 +00:00
dependabot[bot] a6dc4514f2 Bump org.xerial:sqlite-jdbc from 3.46.1.2 to 3.47.0.0
Bumps [org.xerial:sqlite-jdbc](https://github.com/xerial/sqlite-jdbc) from 3.46.1.2 to 3.47.0.0.
- [Release notes](https://github.com/xerial/sqlite-jdbc/releases)
- [Changelog](https://github.com/xerial/sqlite-jdbc/blob/master/CHANGELOG)
- [Commits](https://github.com/xerial/sqlite-jdbc/compare/3.46.1.2...3.47.0.0)

---
updated-dependencies:
- dependency-name: org.xerial:sqlite-jdbc
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-23 05:04:50 +00:00
Kobe ⑧ 69ea9a1d43 Merge pull request #216 from HaHaWTH/dependabot/maven/org.apache.maven.plugins-maven-javadoc-plugin-3.10.1
Bump org.apache.maven.plugins:maven-javadoc-plugin from 3.10.0 to 3.10.1
2024-10-12 22:40:12 +08:00
Kobe ⑧ 1dfbbb543c Merge pull request #217 from HaHaWTH/dependabot/maven/org.checkerframework-checker-qual-3.48.0
Bump org.checkerframework:checker-qual from 3.47.0 to 3.48.0
2024-10-12 22:39:58 +08:00
dependabot[bot] 092df678a8 Bump org.checkerframework:checker-qual from 3.47.0 to 3.48.0
Bumps [org.checkerframework:checker-qual](https://github.com/typetools/checker-framework) from 3.47.0 to 3.48.0.
- [Release notes](https://github.com/typetools/checker-framework/releases)
- [Changelog](https://github.com/typetools/checker-framework/blob/master/docs/CHANGELOG.md)
- [Commits](https://github.com/typetools/checker-framework/compare/checker-framework-3.47.0...checker-framework-3.48.0)

---
updated-dependencies:
- dependency-name: org.checkerframework:checker-qual
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-03 05:07:53 +00:00
dependabot[bot] 5f165eed75 Bump org.apache.maven.plugins:maven-javadoc-plugin from 3.10.0 to 3.10.1
Bumps [org.apache.maven.plugins:maven-javadoc-plugin](https://github.com/apache/maven-javadoc-plugin) from 3.10.0 to 3.10.1.
- [Release notes](https://github.com/apache/maven-javadoc-plugin/releases)
- [Commits](https://github.com/apache/maven-javadoc-plugin/compare/maven-javadoc-plugin-3.10.0...maven-javadoc-plugin-3.10.1)

---
updated-dependencies:
- dependency-name: org.apache.maven.plugins:maven-javadoc-plugin
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-02 04:22:40 +00:00
Kobe ⑧ a988422302 Merge pull request #214 from HaHaWTH/dependabot/maven/org.xerial-sqlite-jdbc-3.46.1.2
Bump org.xerial:sqlite-jdbc from 3.46.1.1 to 3.46.1.2
2024-09-26 13:00:19 +08:00
dependabot[bot] e5f6e31af2 Bump org.xerial:sqlite-jdbc from 3.46.1.1 to 3.46.1.2
Bumps [org.xerial:sqlite-jdbc](https://github.com/xerial/sqlite-jdbc) from 3.46.1.1 to 3.46.1.2.
- [Release notes](https://github.com/xerial/sqlite-jdbc/releases)
- [Changelog](https://github.com/xerial/sqlite-jdbc/blob/master/CHANGELOG)
- [Commits](https://github.com/xerial/sqlite-jdbc/compare/3.46.1.1...3.46.1.2)

---
updated-dependencies:
- dependency-name: org.xerial:sqlite-jdbc
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-26 04:37:04 +00:00
Kobe ⑧ f4bd83e86a Merge pull request #213 from HaHaWTH/dependabot/maven/org.xerial-sqlite-jdbc-3.46.1.1
Bump org.xerial:sqlite-jdbc from 3.46.1.0 to 3.46.1.1
2024-09-25 13:45:39 +08:00
dependabot[bot] 7713ee499d Bump org.xerial:sqlite-jdbc from 3.46.1.0 to 3.46.1.1
Bumps [org.xerial:sqlite-jdbc](https://github.com/xerial/sqlite-jdbc) from 3.46.1.0 to 3.46.1.1.
- [Release notes](https://github.com/xerial/sqlite-jdbc/releases)
- [Changelog](https://github.com/xerial/sqlite-jdbc/blob/master/CHANGELOG)
- [Commits](https://github.com/xerial/sqlite-jdbc/compare/3.46.1.0...3.46.1.1)

---
updated-dependencies:
- dependency-name: org.xerial:sqlite-jdbc
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-25 04:54:43 +00:00
Kobe ⑧ 6fb2d93650 Merge pull request #210 from HaHaWTH/dependabot/maven/org.checkerframework-checker-qual-3.47.0
Bump org.checkerframework:checker-qual from 3.46.0 to 3.47.0
2024-09-07 23:39:13 +08:00
Kobe ⑧ 81db29f76f Merge pull request #208 from HaHaWTH/dependabot/maven/org.apache.maven.plugins-maven-javadoc-plugin-3.10.0
Bump org.apache.maven.plugins:maven-javadoc-plugin from 3.8.0 to 3.10.0
2024-09-07 23:38:55 +08:00
dependabot[bot] fd2018186c Bump org.checkerframework:checker-qual from 3.46.0 to 3.47.0
Bumps [org.checkerframework:checker-qual](https://github.com/typetools/checker-framework) from 3.46.0 to 3.47.0.
- [Release notes](https://github.com/typetools/checker-framework/releases)
- [Changelog](https://github.com/typetools/checker-framework/blob/master/docs/CHANGELOG.md)
- [Commits](https://github.com/typetools/checker-framework/compare/checker-framework-3.46.0...checker-framework-3.47.0)

---
updated-dependencies:
- dependency-name: org.checkerframework:checker-qual
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-05 05:00:38 +00:00
dependabot[bot] bb85a7c619 Bump org.apache.maven.plugins:maven-javadoc-plugin from 3.8.0 to 3.10.0
Bumps [org.apache.maven.plugins:maven-javadoc-plugin](https://github.com/apache/maven-javadoc-plugin) from 3.8.0 to 3.10.0.
- [Release notes](https://github.com/apache/maven-javadoc-plugin/releases)
- [Commits](https://github.com/apache/maven-javadoc-plugin/compare/maven-javadoc-plugin-3.8.0...maven-javadoc-plugin-3.10.0)

---
updated-dependencies:
- dependency-name: org.apache.maven.plugins:maven-javadoc-plugin
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-28 04:44:19 +00:00
Kobe ⑧ 9e7e90db6c Update pom.xml 2024-08-22 18:36:50 +08:00
HaHaWTH 007e01156b B53 release 2024-08-20 23:52:40 +08:00
Kobe ⑧ d2ec62ac7f Merge pull request #203 from HaHaWTH/dependabot/maven/org.apache.maven.plugins-maven-deploy-plugin-3.1.3
Bump org.apache.maven.plugins:maven-deploy-plugin from 3.1.2 to 3.1.3
2024-08-20 18:46:24 +08:00
Kobe ⑧ da32bdec94 Merge pull request #204 from HaHaWTH/dependabot/maven/org.apache.maven.plugins-maven-install-plugin-3.1.3
Bump org.apache.maven.plugins:maven-install-plugin from 3.1.2 to 3.1.3
2024-08-20 18:46:14 +08:00
Kobe ⑧ 7d58e90557 Merge pull request #202 from HaHaWTH/dependabot/maven/org.xerial-sqlite-jdbc-3.46.1.0
Bump org.xerial:sqlite-jdbc from 3.46.0.1 to 3.46.1.0
2024-08-20 18:45:54 +08:00
dependabot[bot] 08dabda7c7 Bump org.apache.maven.plugins:maven-install-plugin from 3.1.2 to 3.1.3
Bumps [org.apache.maven.plugins:maven-install-plugin](https://github.com/apache/maven-install-plugin) from 3.1.2 to 3.1.3.
- [Release notes](https://github.com/apache/maven-install-plugin/releases)
- [Commits](https://github.com/apache/maven-install-plugin/compare/maven-install-plugin-3.1.2...maven-install-plugin-3.1.3)

---
updated-dependencies:
- dependency-name: org.apache.maven.plugins:maven-install-plugin
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-20 04:34:00 +00:00
dependabot[bot] feea348ec3 Bump org.apache.maven.plugins:maven-deploy-plugin from 3.1.2 to 3.1.3
Bumps [org.apache.maven.plugins:maven-deploy-plugin](https://github.com/apache/maven-deploy-plugin) from 3.1.2 to 3.1.3.
- [Release notes](https://github.com/apache/maven-deploy-plugin/releases)
- [Commits](https://github.com/apache/maven-deploy-plugin/compare/maven-deploy-plugin-3.1.2...maven-deploy-plugin-3.1.3)

---
updated-dependencies:
- dependency-name: org.apache.maven.plugins:maven-deploy-plugin
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-20 04:32:17 +00:00
dependabot[bot] 67eb7dee0f Bump org.xerial:sqlite-jdbc from 3.46.0.1 to 3.46.1.0
Bumps [org.xerial:sqlite-jdbc](https://github.com/xerial/sqlite-jdbc) from 3.46.0.1 to 3.46.1.0.
- [Release notes](https://github.com/xerial/sqlite-jdbc/releases)
- [Changelog](https://github.com/xerial/sqlite-jdbc/blob/master/CHANGELOG)
- [Commits](https://github.com/xerial/sqlite-jdbc/compare/3.46.0.1...3.46.1.0)

---
updated-dependencies:
- dependency-name: org.xerial:sqlite-jdbc
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-19 04:42:25 +00:00
Kobe ⑧ 6fb1d2855e Merge pull request #196 from HaHaWTH/dependabot/maven/net.kyori-adventure-platform-bukkit-4.3.4
Bump net.kyori:adventure-platform-bukkit from 4.3.3 to 4.3.4
2024-08-16 19:40:48 +08:00
dependabot[bot] faa3d9320c Bump net.kyori:adventure-platform-bukkit from 4.3.3 to 4.3.4
Bumps [net.kyori:adventure-platform-bukkit](https://github.com/KyoriPowered/adventure-platform) from 4.3.3 to 4.3.4.
- [Release notes](https://github.com/KyoriPowered/adventure-platform/releases)
- [Commits](https://github.com/KyoriPowered/adventure-platform/compare/v4.3.3...v4.3.4)

---
updated-dependencies:
- dependency-name: net.kyori:adventure-platform-bukkit
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-13 05:06:28 +00:00
Kobe ⑧ 497cd543fd Merge pull request #194 from HaHaWTH/dependabot/maven/org.checkerframework-checker-qual-3.46.0
Bump org.checkerframework:checker-qual from 3.45.0 to 3.46.0
2024-08-02 12:38:37 +08:00
Kobe ⑧ 71d5205df0 Merge pull request #192 from HaHaWTH/dependabot/maven/org.xerial-sqlite-jdbc-3.46.0.1
Bump org.xerial:sqlite-jdbc from 3.46.0.0 to 3.46.0.1
2024-08-02 12:38:26 +08:00
dependabot[bot] bba90d93f1 Bump org.checkerframework:checker-qual from 3.45.0 to 3.46.0
Bumps [org.checkerframework:checker-qual](https://github.com/typetools/checker-framework) from 3.45.0 to 3.46.0.
- [Release notes](https://github.com/typetools/checker-framework/releases)
- [Changelog](https://github.com/typetools/checker-framework/blob/master/docs/CHANGELOG.md)
- [Commits](https://github.com/typetools/checker-framework/compare/checker-framework-3.45.0...checker-framework-3.46.0)

---
updated-dependencies:
- dependency-name: org.checkerframework:checker-qual
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-02 04:33:38 +00:00
HaHaWTH ab40b1b82d fix papi NPE 2024-07-31 23:48:32 +08:00
HaHaWTH 22a6cefbdc Merge remote-tracking branch 'origin/master' 2024-07-31 13:54:34 +08:00
HaHaWTH 9ca3a24862 Temporarily fix inventory loss 2024-07-31 13:53:54 +08:00
dependabot[bot] 91f0dfa5c5 Bump org.xerial:sqlite-jdbc from 3.46.0.0 to 3.46.0.1
Bumps [org.xerial:sqlite-jdbc](https://github.com/xerial/sqlite-jdbc) from 3.46.0.0 to 3.46.0.1.
- [Release notes](https://github.com/xerial/sqlite-jdbc/releases)
- [Changelog](https://github.com/xerial/sqlite-jdbc/blob/master/CHANGELOG)
- [Commits](https://github.com/xerial/sqlite-jdbc/compare/3.46.0.0...3.46.0.1)

---
updated-dependencies:
- dependency-name: org.xerial:sqlite-jdbc
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-31 04:21:56 +00:00
Kobe ⑧ f0e935a5d8 Merge pull request #186 from luketeam5/patch-1
Better Regex e-mail
2024-07-23 09:39:45 +08:00
luketeam5 f0fae0fce0 Update RestrictionSettings.java 2024-07-23 03:34:10 +02:00
luketeam5 4c40ba36a6 Better regex 2024-07-23 00:07:34 +02:00
HaHaWTH bd7a25560f Added config to disable changepassword email verification 2024-07-23 03:52:01 +08:00
Kobe ⑧ e02659d850 Merge pull request #183 from HaHaWTH/dependabot/maven/net.kyori-adventure-platform-bukkit-4.3.3
Bump net.kyori:adventure-platform-bukkit from 4.3.2 to 4.3.3
2024-07-22 13:37:10 +08:00
Kobe ⑧ c95f96572c Merge pull request #182 from HaHaWTH/dependabot/maven/org.apache.maven.plugins-maven-javadoc-plugin-3.8.0
Bump org.apache.maven.plugins:maven-javadoc-plugin from 3.7.0 to 3.8.0
2024-07-22 13:36:52 +08:00
dependabot[bot] 1c1356a4d1 Bump net.kyori:adventure-platform-bukkit from 4.3.2 to 4.3.3
Bumps [net.kyori:adventure-platform-bukkit](https://github.com/KyoriPowered/adventure-platform) from 4.3.2 to 4.3.3.
- [Release notes](https://github.com/KyoriPowered/adventure-platform/releases)
- [Commits](https://github.com/KyoriPowered/adventure-platform/compare/v4.3.2...v4.3.3)

---
updated-dependencies:
- dependency-name: net.kyori:adventure-platform-bukkit
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-22 04:18:17 +00:00
dependabot[bot] f206deb8ed Bump org.apache.maven.plugins:maven-javadoc-plugin from 3.7.0 to 3.8.0
Bumps [org.apache.maven.plugins:maven-javadoc-plugin](https://github.com/apache/maven-javadoc-plugin) from 3.7.0 to 3.8.0.
- [Release notes](https://github.com/apache/maven-javadoc-plugin/releases)
- [Commits](https://github.com/apache/maven-javadoc-plugin/compare/maven-javadoc-plugin-3.7.0...maven-javadoc-plugin-3.8.0)

---
updated-dependencies:
- dependency-name: org.apache.maven.plugins:maven-javadoc-plugin
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-22 04:17:53 +00:00
Kobe ⑧ 9bf6aae8e9 [ci skip] Update README.md 2024-07-17 02:07:28 +08:00
HaHaWTH 63bfc7a5c1 B52 release 2024-07-14 17:48:25 +08:00
HaHaWTH 731c6477a5 PlaceholderAPI hook 2024-07-14 16:24:04 +08:00
HaHaWTH e0bf35284c Update runtime test to 1.21 2024-07-13 04:08:55 +08:00
HaHaWTH 02ebb0b0ab hehe 2024-07-12 23:26:14 +08:00
HaHaWTH 92741daaa8 fix: #178 mail sending lags server 2024-07-11 15:10:40 +08:00
Kobe ⑧ 18ce05d07d Merge pull request #174 from HaHaWTH/dependabot/maven/org.checkerframework-checker-qual-3.45.0
Bump org.checkerframework:checker-qual from 3.40.0 to 3.45.0
2024-07-02 13:38:18 +08:00
dependabot[bot] 37e6e9feb6 Bump org.checkerframework:checker-qual from 3.40.0 to 3.45.0
Bumps [org.checkerframework:checker-qual](https://github.com/typetools/checker-framework) from 3.40.0 to 3.45.0.
- [Release notes](https://github.com/typetools/checker-framework/releases)
- [Changelog](https://github.com/typetools/checker-framework/blob/master/docs/CHANGELOG.md)
- [Commits](https://github.com/typetools/checker-framework/compare/checker-framework-3.40.0...checker-framework-3.45.0)

---
updated-dependencies:
- dependency-name: org.checkerframework:checker-qual
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-02 05:07:13 +00:00
Kobe ⑧ 655c5ca42c Bump version to 5.7.0-Fork 2024-06-30 12:20:05 +08:00
Kobe ⑧ c99fc5c389 Update plugin.yml 2024-06-30 12:19:19 +08:00
Kobe ⑧ 9b0a4a003e Bump version to 5.7.0-FORK 2024-06-30 12:18:46 +08:00
HaHaWTH f25610c90b Fix workflow 2024-06-27 12:10:57 +08:00
HaHaWTH 7130d3989c Bump version number 2024-06-27 12:02:24 +08:00
HaHaWTH 900d2bd2e9 Merge remote-tracking branch 'origin/master' 2024-06-27 11:57:55 +08:00
HaHaWTH 7d255dfa30 Sync with upstream & Bump version number 2024-06-27 11:57:17 +08:00
DGun Otto 0cce930260 Merge pull request #172 from HaHaWTH/dependabot/maven/org.apache.maven.plugins-maven-jar-plugin-3.4.2
Bump org.apache.maven.plugins:maven-jar-plugin from 3.4.1 to 3.4.2
2024-06-20 14:37:48 +08:00
DGun Otto 0671a54b20 Merge pull request #171 from HaHaWTH/dependabot/maven/org.apache.maven.plugins-maven-clean-plugin-3.4.0
Bump org.apache.maven.plugins:maven-clean-plugin from 3.3.2 to 3.4.0
2024-06-20 14:37:37 +08:00
dependabot[bot] 4df4a1fa4b Bump org.apache.maven.plugins:maven-jar-plugin from 3.4.1 to 3.4.2
Bumps [org.apache.maven.plugins:maven-jar-plugin](https://github.com/apache/maven-jar-plugin) from 3.4.1 to 3.4.2.
- [Release notes](https://github.com/apache/maven-jar-plugin/releases)
- [Commits](https://github.com/apache/maven-jar-plugin/compare/maven-jar-plugin-3.4.1...maven-jar-plugin-3.4.2)

---
updated-dependencies:
- dependency-name: org.apache.maven.plugins:maven-jar-plugin
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-20 04:48:58 +00:00
dependabot[bot] 5b52a0ff00 Bump org.apache.maven.plugins:maven-clean-plugin from 3.3.2 to 3.4.0
Bumps [org.apache.maven.plugins:maven-clean-plugin](https://github.com/apache/maven-clean-plugin) from 3.3.2 to 3.4.0.
- [Release notes](https://github.com/apache/maven-clean-plugin/releases)
- [Commits](https://github.com/apache/maven-clean-plugin/compare/maven-clean-plugin-3.3.2...maven-clean-plugin-3.4.0)

---
updated-dependencies:
- dependency-name: org.apache.maven.plugins:maven-clean-plugin
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-20 04:48:06 +00:00
HaHaWTH 5186d09116 Revert some changes 2024-06-18 16:17:03 +08:00
HaHaWTH a5b06bbd07 Merge remote-tracking branch 'origin/master' 2024-06-12 01:46:32 +08:00
HaHaWTH 9b74cb5a00 Fix Folia join commands 2024-06-12 01:45:57 +08:00
DGun Otto 280e441227 Update build.yml 2024-06-11 21:53:21 +08:00
DGun Otto be97e7faa0 Update maven.yml 2024-06-11 21:43:35 +08:00
HaHaWTH 253822a056 Merge remote-tracking branch 'origin/master' 2024-06-11 07:28:59 +08:00
HaHaWTH 0fcc45039d Add openInventory method to API 2024-06-11 07:28:13 +08:00
DGun Otto 4700e2ae90 Merge pull request #169 from Dreeam-qwq/fix/i18n-opt
Remove locale data from locale map when player quit to save ram
2024-06-10 06:51:49 +08:00
Dreeam d9c89e1dc6 Remove locale data from locale map when player quit to save mem 2024-06-10 06:15:48 +08:00
DGun Otto 2080e227ef Merge branch 'master' into gradle 2024-06-07 20:34:55 +08:00
DGun Otto b513fd37cb [ci skip] Update link 2024-06-06 03:20:54 +08:00
DGun Otto a89358e362 Update build.gradle 2024-06-05 21:42:14 +08:00
DGun Otto 5c91e6083d Update plugin.yml 2024-06-05 21:40:50 +08:00
DGun Otto 276e87c5e7 Merge pull request #167 from TheFloodDragon/master
[Experimental] Switch Dependency Management Tool to Gradle Kotlin DSL
2024-06-05 21:39:29 +08:00
MC~蛟龙 45eabafacc Correct plugin.yml 2024-06-05 21:38:04 +08:00
MC~蛟龙 6664612b73 Correct plugin.yml 2024-06-05 21:34:11 +08:00
MC~蛟龙 82ed075ee8 Clean Up
Completely remove maven build (pom.xml and maven.yml)
Delete some useless(might) files
2024-06-05 21:14:22 +08:00
MC~蛟龙 c7dc203687 Install Gradle 2024-06-05 21:00:51 +08:00
HaHaWTH 304eca4b6a B50 release 2024-06-04 20:56:24 +08:00
HaHaWTH 13315e6132 pom cleanup 2024-06-04 17:49:53 +08:00
DGun Otto 90684451d8 Merge pull request #162 from HaHaWTH/dependabot/maven/org.apache.maven.plugins-maven-javadoc-plugin-3.7.0
Bump org.apache.maven.plugins:maven-javadoc-plugin from 3.4.1 to 3.7.0
2024-06-04 04:11:17 +08:00
DGun Otto 799849920f Merge pull request #161 from HaHaWTH/dependabot/maven/org.apache.maven.plugins-maven-shade-plugin-3.6.0
Bump org.apache.maven.plugins:maven-shade-plugin from 3.5.3 to 3.6.0
2024-06-04 04:11:05 +08:00
DGun Otto f7d83f1459 Merge pull request #155 from Dreeam-qwq/feat/i18n
i18n messages sending support
2024-06-03 23:55:23 +08:00
Dreeam fbf5f32415 Instantly return null if didn't receive locale packet before calling messages sending method 2024-06-03 20:04:54 +08:00
Dreeam e922422922 Adjust code style 2024-06-03 19:58:44 +08:00
Dreeam b9648393a7 Remove deprecated feature lang 2024-06-03 19:54:03 +08:00
dependabot[bot] d20cc6514b Bump org.apache.maven.plugins:maven-javadoc-plugin from 3.4.1 to 3.7.0
Bumps [org.apache.maven.plugins:maven-javadoc-plugin](https://github.com/apache/maven-javadoc-plugin) from 3.4.1 to 3.7.0.
- [Release notes](https://github.com/apache/maven-javadoc-plugin/releases)
- [Commits](https://github.com/apache/maven-javadoc-plugin/compare/maven-javadoc-plugin-3.4.1...maven-javadoc-plugin-3.7.0)

---
updated-dependencies:
- dependency-name: org.apache.maven.plugins:maven-javadoc-plugin
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-03 04:37:24 +00:00
dependabot[bot] 6a20976370 Bump org.apache.maven.plugins:maven-shade-plugin from 3.5.3 to 3.6.0
Bumps [org.apache.maven.plugins:maven-shade-plugin](https://github.com/apache/maven-shade-plugin) from 3.5.3 to 3.6.0.
- [Release notes](https://github.com/apache/maven-shade-plugin/releases)
- [Commits](https://github.com/apache/maven-shade-plugin/compare/maven-shade-plugin-3.5.3...maven-shade-plugin-3.6.0)

---
updated-dependencies:
- dependency-name: org.apache.maven.plugins:maven-shade-plugin
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-03 04:37:07 +00:00
HaHaWTH 3e56aacb4e Improved inventory whitelist check & prepare for better MiniMessage support 2024-06-03 00:21:03 +08:00
Dreeam a8e18d1bb8 Decrease timeout limit to prevent main thread waiting too long 2024-06-02 21:19:52 +08:00
Dreeam 32ed70f099 Use Protocollib to get locale packet for lower server version (< 1.15.2) 2024-06-02 18:59:27 +08:00
Dreeam e89b6182a7 Merge remote-tracking branch 'upstream/master' into feat/i18n 2024-06-02 17:19:47 +08:00
HaHaWTH 41d04c7604 Merge remote-tracking branch 'origin/master' 2024-06-01 15:14:50 +08:00
HaHaWTH d7a5869e99 Cleanup & Fix 2024-06-01 15:13:04 +08:00
DGun Otto 3139902b37 [ci skip] Update README.md 2024-06-01 05:04:42 +08:00
HaHaWTH dc599fe5c3 Completely removed gui captcha things 2024-05-31 23:48:12 +08:00
Dreeam 5829bfeaa2 [ci skip] Update messages translations 2024-05-31 22:00:36 +08:00
Dreeam 100805da8b Merge branch 'master' into feat/i18n 2024-05-31 20:36:27 +08:00
Dreeam 0679087e53 Try to reduce complexity 2024-05-31 20:23:47 +08:00
Dreeam b6476dcb79 Revert 2024-05-31 20:17:02 +08:00
Dreeam 471e1c0d2c [ci skip] Update messages translations 2024-05-31 20:13:19 +08:00
Dreeam 3d6b1a059c [ci skip] Update messages translations 2024-05-31 18:20:42 +08:00
Dreeam f56ca830cf [ci skip] Update messages_en.yml 2024-05-31 17:26:57 +08:00
HaHaWTH 0fbe7d99cb Fixes 2024-05-31 16:32:54 +08:00
DGun Otto bbdf64415c Merge pull request #159 from HaHaWTH/dependabot/maven/org.apache.maven.plugins-maven-enforcer-plugin-3.5.0
Bump org.apache.maven.plugins:maven-enforcer-plugin from 3.2.1 to 3.5.0
2024-05-31 16:26:34 +08:00
HaHaWTH 5981af630a Merge remote-tracking branch 'origin/master' 2024-05-31 14:38:12 +08:00
HaHaWTH 7e14bd8675 skip Paper plugin remap 2024-05-31 14:37:51 +08:00
dependabot[bot] 0f407f9658 Bump org.apache.maven.plugins:maven-enforcer-plugin from 3.2.1 to 3.5.0
Bumps [org.apache.maven.plugins:maven-enforcer-plugin](https://github.com/apache/maven-enforcer) from 3.2.1 to 3.5.0.
- [Release notes](https://github.com/apache/maven-enforcer/releases)
- [Commits](https://github.com/apache/maven-enforcer/compare/enforcer-3.2.1...enforcer-3.5.0)

---
updated-dependencies:
- dependency-name: org.apache.maven.plugins:maven-enforcer-plugin
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-31 05:00:31 +00:00
DGun Otto 9439098472 Merge pull request #140 from HaHaWTH/dependabot/maven/org.apache.maven.plugins-maven-install-plugin-3.1.2
Bump org.apache.maven.plugins:maven-install-plugin from 3.1.0 to 3.1.2
2024-05-31 02:37:58 +08:00
DGun Otto 6618c004c3 Merge pull request #154 from HaHaWTH/dependabot/maven/org.xerial-sqlite-jdbc-3.46.0.0
Bump org.xerial:sqlite-jdbc from 3.45.3.0 to 3.46.0.0
2024-05-31 02:37:23 +08:00
DGun Otto 18ab6623ff Support for latest Leaves 2024-05-31 02:24:22 +08:00
HaHaWTH 2fe0da569b Cleanup 2024-05-30 23:53:08 +08:00
HaHaWTH 42e907580c Async teleport is now default >v< 2024-05-30 22:15:21 +08:00
DGun Otto ae76066db6 Merge pull request #158 from HaHaWTH/feat/minimessage
Minimessage support
2024-05-30 18:40:59 +08:00
HaHaWTH 5c74580866 Revert message changes 2024-05-30 18:04:19 +08:00
HaHaWTH 2dd5ebcb8c Fix Folia compatibility 2024-05-30 13:38:04 +08:00
HaHaWTH 69f3d9838d Change default quickCommandProtection value 2024-05-30 02:17:10 +08:00
Dreeam e8010782fd Cleanup reflection 2024-05-30 01:39:40 +08:00
Dreeam 4e54d86712 Fix getting locale in lower version client by delaying message sending 2024-05-30 01:21:57 +08:00
Dreeam fdc0d31632 Fix reflect error 2024-05-30 00:27:38 +08:00
Dreeam 0d903d23b0 Add strict locale-code-redirect config format check 2024-05-29 23:20:34 +08:00
Dreeam e79036d42f Revert "[ci skip] Try to decrease complexity"
This reverts commit 39e94c6ea7.
2024-05-29 23:06:47 +08:00
Dreeam 39e94c6ea7 [ci skip] Try to decrease complexity 2024-05-29 23:04:58 +08:00
Dreeam 0c10cb0ead Fix code style 2024-05-29 22:55:19 +08:00
Dreeam 7301a22d44 [ci skip] Update docs/config.md 2024-05-29 21:05:11 +08:00
Dreeam 89817d420c Move utils to I18NUtils 2024-05-29 20:34:27 +08:00
Dreeam c53f622e94 Cleanup 2024-05-29 20:19:33 +08:00
Dreeam eb43dc3960 Clean up locale to language code matching 2024-05-29 18:59:41 +08:00
Dreeam 6001ee6979 Add configurable locale code to AuthMe language code redirect 2024-05-29 18:46:57 +08:00
Dreeam d09e545554 Add hard mapping to convert to AuthMe language code from locale code 2024-05-29 17:07:30 +08:00
HaHaWTH 642270e4c3 Reapply "Always save quit location and fixes #2769 issue 1"
This reverts commit 8c4da6288e.
2024-05-29 14:44:28 +08:00
HaHaWTH d648725b10 Silent login for BedrockAutoLoginListener 2024-05-29 13:40:46 +08:00
HaHaWTH 0f6ecb8f03 Merge remote-tracking branch 'origin/master' 2024-05-29 13:38:35 +08:00
HaHaWTH ce60648233 Expose silentForceLogin to api (#2819) 2024-05-29 13:37:37 +08:00
DGun Otto 186860c1fa Merge pull request #156 from F3F5/master
yay the Russian translation is up to date
2024-05-29 13:12:19 +08:00
MISHA 3beed667b4 refresh the translation 2024-05-29 00:34:13 +04:00
Dreeam 2219dd55dd Intial i18n messages support
Send different languages of messages based on player's client setting
2024-05-29 00:11:25 +08:00
DGun Otto 3e73a5090a Merge pull request #139 from HaHaWTH/dependabot/maven/org.apache.maven.plugins-maven-deploy-plugin-3.1.2
Bump org.apache.maven.plugins:maven-deploy-plugin from 3.0.0 to 3.1.2
2024-05-28 19:36:20 +08:00
HaHaWTH 583a275100 Exclude bungee-chat
Nothing uses this lol
2024-05-28 14:20:31 +08:00
dependabot[bot] a4c1dd6f5b Bump org.xerial:sqlite-jdbc from 3.45.3.0 to 3.46.0.0
Bumps [org.xerial:sqlite-jdbc](https://github.com/xerial/sqlite-jdbc) from 3.45.3.0 to 3.46.0.0.
- [Release notes](https://github.com/xerial/sqlite-jdbc/releases)
- [Changelog](https://github.com/xerial/sqlite-jdbc/blob/master/CHANGELOG)
- [Commits](https://github.com/xerial/sqlite-jdbc/compare/3.45.3.0...3.46.0.0)

---
updated-dependencies:
- dependency-name: org.xerial:sqlite-jdbc
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-28 04:31:50 +00:00
HaHaWTH de69919c01 Fix some issues with Velocity support 2024-05-27 19:40:50 +08:00
HaHaWTH 6dea065ed2 Support plain text password storage method (NOCRYPT) 2024-05-27 05:11:15 +08:00
HaHaWTH 9e208532d3 Initial MiniMessage support 2024-05-27 04:56:50 +08:00
DGun Otto c0b6d87678 Allow dot in the email username 2024-05-27 00:56:40 +08:00
HaHaWTH 778edac895 B49 release 2024-05-24 16:41:36 +08:00
HaHaWTH 17d1cf1665 Update SpigotAPI 2024-05-24 00:55:58 +08:00
HaHaWTH 3f3671c95c Fix #146 and cleanup 2024-05-24 00:42:47 +08:00
HaHaWTH 52c06917c3 Add repository 2024-05-23 18:02:47 +08:00
HaHaWTH b2ea5cbef8 Dynamically download H2 2024-05-23 17:55:42 +08:00
HaHaWTH 99c7466b37 Better handling teleportUnAuthedToSpawn 2024-05-22 23:55:34 +08:00
HaHaWTH e60c18d8a8 Merge remote-tracking branch 'origin/master' 2024-05-22 23:49:33 +08:00
HaHaWTH 8c4da6288e Revert "Always save quit location and fixes #2769 issue 1"
This reverts commit c1eee8e139.
2024-05-22 23:48:28 +08:00
DGun Otto 1a73adf414 Remove relocation 2024-05-11 14:28:38 +08:00
HaHaWTH cb76ae01e1 Fix potential NPE when using velocity 2024-05-08 08:32:19 +08:00
dependabot[bot] f99b4bd0ad Bump org.apache.maven.plugins:maven-install-plugin from 3.1.0 to 3.1.2
Bumps [org.apache.maven.plugins:maven-install-plugin](https://github.com/apache/maven-install-plugin) from 3.1.0 to 3.1.2.
- [Release notes](https://github.com/apache/maven-install-plugin/releases)
- [Commits](https://github.com/apache/maven-install-plugin/compare/maven-install-plugin-3.1.0...maven-install-plugin-3.1.2)

---
updated-dependencies:
- dependency-name: org.apache.maven.plugins:maven-install-plugin
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-30 04:24:30 +00:00
dependabot[bot] 930f889745 Bump org.apache.maven.plugins:maven-deploy-plugin from 3.0.0 to 3.1.2
Bumps [org.apache.maven.plugins:maven-deploy-plugin](https://github.com/apache/maven-deploy-plugin) from 3.0.0 to 3.1.2.
- [Release notes](https://github.com/apache/maven-deploy-plugin/releases)
- [Commits](https://github.com/apache/maven-deploy-plugin/compare/maven-deploy-plugin-3.0.0...maven-deploy-plugin-3.1.2)

---
updated-dependencies:
- dependency-name: org.apache.maven.plugins:maven-deploy-plugin
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-30 04:24:10 +00:00
108 changed files with 3079 additions and 3626 deletions
-203
View File
@@ -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>
-44
View File
@@ -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'
-13
View File
@@ -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
+55
View File
@@ -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
-49
View File
@@ -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
View File
@@ -1,117 +1,16 @@
### Java files ###
*.class
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
# Mac filesystem dust
.DS_Store/
.DS_Store
### Intellij ###
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm
# Ignore project files
*.iml
*.java___jb_tmp___
# Linux temp files
*~
# Ignore IDEA directory
.idea/*
.idea/
# Include the project's code style settings file
# File-based project format:
*.ipr
*.iws
### Plugin-specific files: ###
# IntelliJ
/out/
*.iml
.idea
# mpeltonen/sbt-idea plugin
.idea_modules/
# 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/wrapper/gradle-wrapper.jar
.gradle
bin/
tmp/
*.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/
build
outs
-3
View File
@@ -1,3 +0,0 @@
# 默认忽略的文件
/shelf/
/workspace.xml
-291
View File
@@ -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="&#10;" />
<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
View File
@@ -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
+29 -12
View File
@@ -27,27 +27,44 @@
10. Player login logic improvement to reduce lag
11. Automatically purge bot data
12. **Folia support (in active testing)**
13. Offhand Menu compatibility(Thats amazing)
14. **Velocity support (See [Velocity Support](./vc-support.md))**
15. Support Virtual Threads caching
16. Automatically fix portal stuck issue
17. Automatically login for Bedrock players(configurable)
18. Fix shulker box crash bug on legacy versions(MC 1.13-)
19. **H2 database support**
20. **100% compatibility with original authme and extensions**
21. More......
13. **Velocity support (See [Velocity Support](./vc-support.md))**
14. Support Virtual Threads caching
15. Automatically fix portal stuck issue
16. Automatically login for Bedrock players(configurable)
17. Fix shulker box crash bug on legacy versions(MC 1.13-)
18. **H2 database support**
19. **100% compatibility with original authme and extensions**
20. More......
**Download links:**
[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)
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!**
## 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
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>
<source
+190
View File
@@ -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
View File
@@ -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
View File
@@ -1,7 +1,8 @@
<!-- 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
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
the generated config.yml file.
@@ -14,11 +15,21 @@ DataSource:
# Enable the database caching system, should be disabled on bungeecord environments
# or when a website integration is being used.
caching: true
# Should we try to use VirtualThreads(Java 21+) for database cache loader?
useVirtualThreadsCache: false
# Database host address
mySQLHost: 127.0.0.1
# Database port
mySQLPort: '3306'
# Replacement of Mysql's useSsl (for MariaDB only).
# - disable: No SSL
# - trust: Trust blindly (no validation)
# - verify_ca: Encryption, certificates validation, BUT no hostname verification
# - verify_full: Encryption, certificate validation and hostname validation
# Read more: https://bit.ly/mariadb-sslmode
MariaDbSslMode: disabled
# Connect to MySQL database over SSL
# If you're using MariaDB, use sslMode instead
mySQLUseSSL: true
# Verification of server's certificate.
# We would not recommend to set this option to false.
@@ -26,6 +37,7 @@ DataSource:
mySQLCheckServerCertificate: true
# Authorize client to retrieve RSA server public key.
# Advanced option, ignore if you don't know what it means.
# If you are using MariaDB, use MariaDbSslMode instead.
mySQLAllowPublicKeyRetrieval: true
# Username to connect to the MySQL database
mySQLUsername: authme
@@ -105,6 +117,64 @@ ExternalBoardOptions:
XFActivatedGroupId: 2
# Wordpress prefix defined during WordPress installation
wordpressTablePrefix: wp_
3rdPartyFeature:
compatibility:
# Should we execute /help command when unregistered players press Shift+F?
# This keeps compatibility with some menu plugins
# If you are using TrMenu, don't enable this because TrMenu already implemented this.
menuPlugins: false
features:
i18nMessages:
# Send i18n messages to player based on their client settings, this option will override `settings.messagesLanguage`
# 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:
sessions:
# Do you want to enable the session feature?
@@ -113,12 +183,13 @@ settings:
# The next time the player joins the server, if his IP
# is the same as last time and the timeout hasn't
# expired, he will not need to authenticate.
enabled: false
enabled: true
# After how many minutes should a session expire?
# A player's session ends after the timeout or if his IP has changed
timeout: 10
timeout: 43200
# Message language, available languages:
# https://github.com/AuthMe/AuthMeReloaded/blob/master/docs/translations.md
# Example: zhcn, en
messagesLanguage: en
# Forces authme to hook into Vault instead of a specific permission handler system.
forceVaultHook: false
@@ -151,7 +222,7 @@ settings:
- /totp
# Max number of allowed registrations per IP
# The value 0 means an unlimited number of registrations!
maxRegPerIp: 1
maxRegPerIp: 3
# Minimum allowed username length
minNicknameLength: 3
# Maximum allowed username length
@@ -177,7 +248,7 @@ settings:
SaveQuitLocation: false
# To activate the restricted user feature you need
# to enable this option and configure the AllowedRestrictedUser field.
AllowRestrictedUser: false
AllowRestrictedUser: true
# The restricted user feature will kick players listed below
# if they don't match the defined IP address. Names are case-insensitive.
# You can use * as wildcard (127.0.0.*), or regex with a "regex:" prefix regex:127\.0\.0\..*
@@ -185,13 +256,31 @@ settings:
# AllowedRestrictedUser:
# - playername;127.0.0.1
# - 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?
banUnsafedIP: false
# Should unregistered players be kicked immediately?
kickNonRegistered: false
# Should players be kicked on wrong password?
kickOnWrongPassword: true
kickOnWrongPassword: false
# Should not logged in players be teleported to the spawn?
# After the authentication they will be teleported back to
# their normal position.
@@ -200,31 +289,33 @@ settings:
allowMovement: false
# After how many seconds should players who fail to login or register
# be kicked? Set to 0 to disable.
timeout: 30
timeout: 120
# Regex pattern of allowed characters in the player name.
allowedNicknameCharacters: '[a-zA-Z0-9_]*'
# How far can unregistered players walk?
# Set to 0 for unlimited radius
allowedMovementRadius: 100
allowedMovementRadius: 0
# 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.
DenyTabCompleteBeforeLogin: false
# Should we display all other accounts from a player when he joins?
# permission: /authme.admin.accounts
displayOtherAccounts: true
displayOtherAccounts: false
# Spawn priority; values: authme, essentials, cmi, multiverse, default
spawnPriority: authme,essentials,cmi,multiverse,default
# Maximum Login authorized by IP
maxLoginPerIp: 0
maxLoginPerIp: 3
# Maximum Join authorized by IP
maxJoinPerIp: 0
maxJoinPerIp: 3
# AuthMe will NEVER teleport players if set to true!
noTeleport: false
# Regex syntax for allowed chars in passwords. The default [!-~] allows all visible ASCII
# characters, which is what we recommend. See also http://asciitable.com
# You can test your regex with https://regex101.com
allowedPasswordCharacters: '[!-~]*'
# Regex syntax for allowed chars in email.
allowedEmailCharacters: ^[A-Za-z0-9_.]{3,20}@(qq|outlook|163|gmail|icloud)\.com$
GameMode:
# Force survival gamemode when player joins?
ForceSurvivalMode: false
@@ -247,12 +338,12 @@ settings:
UnrestrictedInventories: []
security:
# Minimum length of password
minPasswordLength: 5
minPasswordLength: 8
# Maximum length of password
passwordMaxLength: 30
passwordMaxLength: 26
# Possible values: SHA256, BCRYPT, BCRYPT2Y, PBKDF2, SALTEDSHA512,
# 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
# If you use ARGON2, check that you have the argon2 c library on your system
passwordHash: SHA256
@@ -273,13 +364,19 @@ settings:
# - 'password'
# - 'help'
unsafePasswords:
- '123456'
- '12345678'
- password
- qwerty
- '12345'
- '54321'
- qwertyui
- '123456789'
- help
- '87654321'
- '1234567890'
- asdfghjkl
- zxcvbnm,
- asdfghjk
- '12312312'
- '123123123'
- '32132132'
- '321321321'
registration:
# Enable registration on the server?
enabled: true
@@ -294,21 +391,26 @@ settings:
# EMAIL = password is generated and sent to the email provided by the user.
# More info at https://github.com/AuthMe/AuthMeReloaded/wiki/Registration
type: PASSWORD
# Second argument the /register command should take: NONE = no 2nd argument
# Second argument the /register command should take:
# NONE = no 2nd argument
# CONFIRMATION = must repeat first argument (pass or email)
# EMAIL_OPTIONAL = for password register: 2nd argument can be empty or have email address
# EMAIL_MANDATORY = for password register: 2nd argument MUST be an email address
secondArg: CONFIRMATION
email:
# Should we unregister the player when he didn't verify the email?
# This only works if you enabled email registration.
unregisterOnEmailVerificationFailure: false
# How many minutes should we wait before unregister the player
# when he didn't verify the email?
unregisterAfterMinutes: 10
# Do we force kick a player after a successful registration?
# Do not use with login feature below
forceKickAfterRegister: false
# Does AuthMe need to enforce a /login after a successful registration?
forceLoginAfterRegister: false
# 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?
delayJoinMessage: false
delayJoinMessage: true
# The custom join message that will be sent after a successful login,
# keep empty to use the original one.
# Available variables:
@@ -317,11 +419,11 @@ settings:
# {DISPLAYNAMENOCOLOR}: the player display name (without colors)
customJoinMessage: ''
# Should we remove the leave messages of unlogged users?
removeUnloggedLeaveMessage: false
removeUnloggedLeaveMessage: true
# Should we remove join messages altogether?
removeJoinMessage: false
removeJoinMessage: true
# Should we remove leave messages altogether?
removeLeaveMessage: false
removeLeaveMessage: true
# Do we need to add potion effect Blinding before login/register?
applyBlindEffect: false
# Do we need to prevent people to login with another case?
@@ -347,7 +449,7 @@ GroupOptions:
unregisteredPlayerGroup: ''
Email:
# Email SMTP server host
mailSMTP: smtp.gmail.com
mailSMTP: smtp.163.com
# Email SMTP server port
mailPort: 465
# Only affects port 25: enable TLS/STARTTLS?
@@ -361,7 +463,7 @@ Email:
# Custom sender name, replacing the mailAccount name in the email
mailSenderName: ''
# Recovery password length
RecoveryPasswordLength: 8
RecoveryPasswordLength: 12
# Mail Subject
mailSubject: Your new AuthMe password
# Like maxRegPerIP but with email
@@ -370,20 +472,30 @@ Email:
recallPlayers: false
# Delay in minute for the recall scheduler
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?
generateImage: false
# The OAuth2 token
emailOauth2Token: ''
# Email notifications when the server shuts down
shutDownEmail: false
# Email notification address when the server is shut down
shutDownEmailAddress: your@mail.com
Hooks:
# Do we need to hook with multiverse for spawn checking?
multiverse: true
# Do we need to hook with BungeeCord?
bungeecord: false
# Do we need to hook with Velocity?
velocity: false
# How many ticks should we wait before sending login info to proxy?
# Change this to higher if your player has high ping.
# See: https://www.spigotmc.org/wiki/bukkit-bungee-plugin-messaging-channel/
proxySendDelay: 10
# Hook into floodgate.
# This must be true if you want to use other bedrock features.
floodgate: false
# Allow bedrock players join without check isValidName?
ignoreBedrockNameCheck: true
# Send player to this BungeeCord server after register/login
sendPlayerTo: ''
# Do we need to disable Essentials SocialSpy on join?
@@ -394,24 +506,12 @@ Protection:
# Enable some servers protection (country based login, antibot)
enableProtection: false
# Apply the protection also to registered usernames
enableProtectionRegistered: true
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: ''
enableProtectionRegistered: false
# Countries allowed to join the server and register. For country codes, see
# https://dev.maxmind.com/geoip/legacy/codes/iso3166/
# Use "LOCALHOST" for local addresses.
# PLEASE USE QUOTES!
countries:
- US
- GB
- LOCALHOST
# Countries not allowed to join the server and register
# PLEASE USE QUOTES!
@@ -430,7 +530,7 @@ Protection:
antiBotDelay: 60
quickCommands:
# Kicks the player that issued a command before the defined time after the join process
denyCommandsBeforeMilliseconds: 1000
denyCommandsBeforeMilliseconds: 3000
Purge:
# If enabled, AuthMe automatically purges old, unused accounts
useAutoPurge: false
@@ -453,26 +553,33 @@ Security:
# Stop the server if we can't contact the sql database
# Take care with this, if you set this to false,
# AuthMe will automatically disable and the server won't be protected!
stopServer: true
stopServer: false
console:
# Copy AuthMe log output in a separate file as well?
logConsole: true
account:
haveIBeenPwned:
# Query haveibeenpwned.com with a hashed version of the password.
# This is used to check whether it is safe.
check: false
# If the password is used more than this number of times, it is considered unsafe.
limit: 0
captcha:
# Enable captcha when a player uses wrong password too many times
useCaptcha: false
# Max allowed tries before a captcha is required
maxLoginTry: 5
maxLoginTry: 8
# Captcha length
captchaLength: 5
captchaLength: 6
# Minutes after which login attempts count is reset for a player
captchaCountReset: 60
captchaCountReset: 120
# Require captcha before a player may register?
requireForRegistration: false
tempban:
# Tempban a user's IP address if they enter the wrong password too many times
enableTempban: false
# How many times a user can attempt to login before their IP being tempbanned
maxLoginTries: 10
maxLoginTries: 8
# The length of time a IP address will be tempbanned in minutes
# Default: 480 minutes, or 8 hours
tempbanLength: 480
@@ -486,13 +593,13 @@ Security:
# Number of characters a recovery code should have (0 to disable)
length: 8
# How many hours is a recovery code valid for?
validForHours: 4
validForHours: 6
# Max number of tries to enter recovery code
maxTries: 3
maxTries: 4
# How long a player has after password recovery to change their password
# without logging in. This is in minutes.
# Default: 2 minutes
passwordChangeTimeout: 2
passwordChangeTimeout: 5
emailRecovery:
# Seconds a user has to wait for before a password recovery mail may be sent again
# This prevents an attacker from abusing AuthMe's email feature.
@@ -505,6 +612,13 @@ Security:
enableEmailMasking: false
# Minutes after which a verification code will expire
verificationCodeExpiration: 10
Plugin:
updates:
# Check for updates on enabled from GitHub?
checkForUpdates: true
banners:
# Should we show the AuthMe banner on startup?
showBanners: true
# Before a user logs in, various properties are temporarily removed from the player,
# such as OP status, ability to fly, and walk/fly speed.
# Once the user is logged in, we add back the properties we previously saved.
@@ -553,13 +667,6 @@ BackupSystem:
MysqlWindowsPath: C:\Program Files\MySQL\MySQL Server 5.1\
# Converter settings: see https://github.com/AuthMe/AuthMeReloaded/wiki/Converters
Converter:
Rakamak:
# Rakamak file name
fileName: users.rak
# Rakamak use IP?
useIP: false
# Rakamak IP file name
ipFileName: UsersIp.rak
CrazyLogin:
# CrazyLogin database file name
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
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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
View File
@@ -1,47 +1,49 @@
<!-- 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
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.
Code | Language | Translated | &nbsp;
---- | -------- | ---------: | ------
[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" />
[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" />
[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" />
[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" />
[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" />
[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" />
[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" />
[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" />
[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" />
[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" />
[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" />
[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" />
[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" />
[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" />
[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" />
[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" />
[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" />
[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" />
[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" />
[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" />
[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" />
[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" />
[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" />
| Code | Language | Translated | &nbsp; |
|------------------------------------------------------------------------------------------------------------|---------------------|-----------:|---------------------------------------------------------------------------|
| [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 | 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" /> |
| [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 | 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 | 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" /> |
| [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" /> |
| [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 | 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 | 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" /> |
| [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" /> |
| [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" /> |
| [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" /> |
| [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 | 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 | 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 | 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" /> |
| [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" /> |
| [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) | 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
+4
View File
@@ -0,0 +1,4 @@
group=fr.xephi
version=5.7.0-FORK-b53
mainClass = fr.xephi.authme.AuthMe
authors = [sgdc3, games647, Hex3l, krusic22]
+56
View File
@@ -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" }
Binary file not shown.
+7
View File
@@ -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
Vendored
+251
View File
@@ -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
View File
@@ -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
-1180
View File
File diff suppressed because it is too large Load Diff
+1
View File
@@ -0,0 +1 @@
rootProject.name = "AuthMeReReloaded"
+21 -63
View File
@@ -2,6 +2,7 @@ package fr.xephi.authme;
import ch.jalu.injector.Injector;
import ch.jalu.injector.InjectorBuilder;
import com.alessiodp.libby.BukkitLibraryManager;
import com.github.Anon8281.universalScheduler.UniversalScheduler;
import com.github.Anon8281.universalScheduler.scheduling.schedulers.TaskScheduler;
import fr.xephi.authme.api.v3.AuthMeApi;
@@ -19,7 +20,6 @@ import fr.xephi.authme.listener.BedrockAutoLoginListener;
import fr.xephi.authme.listener.BlockListener;
import fr.xephi.authme.listener.DoubleLoginFixListener;
import fr.xephi.authme.listener.EntityListener;
import fr.xephi.authme.listener.GuiCaptchaHandler;
import fr.xephi.authme.listener.LoginLocationFixListener;
import fr.xephi.authme.listener.PlayerListener;
import fr.xephi.authme.listener.PlayerListener111;
@@ -43,6 +43,7 @@ import fr.xephi.authme.settings.properties.EmailSettings;
import fr.xephi.authme.settings.properties.HooksSettings;
import fr.xephi.authme.settings.properties.SecuritySettings;
import fr.xephi.authme.task.CleanupTask;
import fr.xephi.authme.task.Updater;
import fr.xephi.authme.task.purge.PurgeService;
import fr.xephi.authme.util.ExceptionUtils;
import org.bukkit.Server;
@@ -54,15 +55,10 @@ import org.jetbrains.annotations.NotNull;
import javax.inject.Inject;
import java.io.File;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Objects;
import java.util.Scanner;
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.util.Utils.isClassLoaded;
@@ -78,9 +74,9 @@ public class AuthMe extends JavaPlugin {
private static final int CLEANUP_INTERVAL = 5 * TICKS_PER_MINUTE;
// 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 String pluginBuildNumber = "48";
private static String pluginBuildNumber = "53";
// Private instances
private EmailService emailService;
private CommandHandler commandHandler;
@@ -143,6 +139,11 @@ public class AuthMe extends JavaPlugin {
return scheduler;
}
/**
* The library manager
*/
public static BukkitLibraryManager libraryManager;
/**
* Method called when the server enables the plugin.
*/
@@ -151,6 +152,7 @@ public class AuthMe extends JavaPlugin {
// Load the plugin version data from the plugin description file
loadPluginInfo(getDescription().getVersion());
scheduler = UniversalScheduler.getScheduler(this);
libraryManager = new BukkitLibraryManager(this);
// Set the Logger instance and log file path
ConsoleLogger.initialize(getLogger(), new File(getDataFolder(), LOG_FILENAME));
@@ -211,14 +213,15 @@ public class AuthMe extends JavaPlugin {
}
//detect server brand with classloader
checkServerType();
try {
Objects.requireNonNull(getCommand("register")).setTabCompleter(new TabCompleteHandler());
Objects.requireNonNull(getCommand("login")).setTabCompleter(new TabCompleteHandler());
} catch (NullPointerException ignored) {
}
logger.info("AuthMeReReloaded is enabled successfully!");
// Purge on start if enabled
PurgeService purgeService = injector.getSingleton(PurgeService.class);
purgeService.runAutoPurge();
// 注册玩家加入事件监听
// register3rdPartyListeners();
logger.info("GitHub: https://github.com/HaHaWTH/AuthMeReReloaded/");
if (settings.getProperty(SecuritySettings.CHECK_FOR_UPDATES)) {
checkForUpdates();
@@ -226,8 +229,6 @@ public class AuthMe extends JavaPlugin {
}
//Migrated
/**
* Load the version and build number of the plugin from the description file.
*
@@ -345,13 +346,6 @@ public class AuthMe extends JavaPlugin {
}
//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) {
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)) {
@@ -366,7 +360,7 @@ public class AuthMe extends JavaPlugin {
if (settings.getProperty(SecuritySettings.ADVANCED_SHULKER_FIX) && !isClassLoaded("org.bukkit.event.player.PlayerCommandSendEvent")) {
pluginManager.registerEvents(injector.getSingleton(AdvancedShulkerFixListener.class), this);
} 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)) {
pluginManager.registerEvents(injector.getSingleton(PurgeListener.class), this);
@@ -395,7 +389,7 @@ public class AuthMe extends JavaPlugin {
if (onShutdownPlayerSaver != null) {
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");
Date date = new Date(System.currentTimeMillis());
emailService.sendShutDown(settings.getProperty(EmailSettings.SHUTDOWN_MAIL_ADDRESS),dateFormat.format(date));
@@ -415,55 +409,19 @@ public class AuthMe extends JavaPlugin {
ConsoleLogger.closeFileWriter();
}
private static final String owner = "HaHaWTH";
// private static final String owner_gitee = "Shixuehan114514";
private static final String repo = "AuthMeReReloaded";
private void checkForUpdates() {
logger.info("Checking for updates...");
Updater updater = new Updater(pluginBuild + pluginBuildNumber);
bukkitService.runTaskAsynchronously(() -> {
try {
// 从南通集线器获取最新版本号
URL url = new URL("https://api.github.com/repos/" + owner + "/" + repo + "/releases/latest");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
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");
if (updater.isUpdateAvailable()) {
String message = "New version available! Latest:" + updater.getLatestVersion() + " Current:" + pluginBuild + pluginBuildNumber;
logger.warning(message);
logger.warning("Download from here: https://modrinth.com/plugin/authmerereloaded");
} else {
getLogger().log(Level.INFO, "You are running the latest version.");
}
} catch (IOException ignored) {
logger.info("You are running the latest version.");
}
});
}
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() {
@@ -32,6 +32,7 @@ import java.util.Optional;
* AuthMeApi authmeApi = AuthMeApi.getInstance();
* </code>
*/
@SuppressWarnings("unused")
public class AuthMeApi {
private static AuthMeApi singleton;
@@ -265,6 +266,16 @@ public class AuthMeApi {
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.
*
@@ -1,9 +1,9 @@
package fr.xephi.authme.command.executable.authme;
import fr.xephi.authme.command.PlayerCommand;
import fr.xephi.authme.service.BukkitService;
import fr.xephi.authme.settings.Settings;
import fr.xephi.authme.settings.SpawnLoader;
import fr.xephi.authme.settings.properties.SecuritySettings;
import fr.xephi.authme.util.TeleportUtils;
import org.bukkit.entity.Player;
@@ -18,17 +18,17 @@ public class FirstSpawnCommand extends PlayerCommand {
private Settings settings;
@Inject
private SpawnLoader spawnLoader;
@Inject
private BukkitService bukkitService;
@Override
public void runCommand(Player player, List<String> arguments) {
if (spawnLoader.getFirstSpawn() == null) {
player.sendMessage("[AuthMe] First spawn has failed, please try to define the first spawn");
} else {
//String name= player.getName();
if(settings.getProperty(SecuritySettings.SMART_ASYNC_TELEPORT)) {
bukkitService.runTaskIfFolia(player, () -> {
TeleportUtils.teleport(player, spawnLoader.getFirstSpawn());
} else {
player.teleport(spawnLoader.getFirstSpawn());
}
});
//player.teleport(spawnLoader.getFirstSpawn());
}
}
@@ -1,7 +1,9 @@
package fr.xephi.authme.command.executable.authme;
import fr.xephi.authme.command.PlayerCommand;
import fr.xephi.authme.service.BukkitService;
import fr.xephi.authme.settings.SpawnLoader;
import fr.xephi.authme.util.TeleportUtils;
import org.bukkit.entity.Player;
import javax.inject.Inject;
@@ -11,13 +13,15 @@ public class SpawnCommand extends PlayerCommand {
@Inject
private SpawnLoader spawnLoader;
@Inject
private BukkitService bukkitService;
@Override
public void runCommand(Player player, List<String> arguments) {
if (spawnLoader.getSpawn() == null) {
player.sendMessage("[AuthMe] Spawn has failed, please try to define the spawn");
} else {
player.teleport(spawnLoader.getSpawn());
bukkitService.runTaskIfFolia(player, () -> TeleportUtils.teleport(player, spawnLoader.getSpawn()));
}
}
}
@@ -8,6 +8,7 @@ import fr.xephi.authme.process.Management;
import fr.xephi.authme.service.CommonService;
import fr.xephi.authme.service.ValidationService;
import fr.xephi.authme.service.ValidationService.ValidationResult;
import fr.xephi.authme.settings.properties.SecuritySettings;
import org.bukkit.entity.Player;
import javax.inject.Inject;
@@ -42,12 +43,15 @@ public class ChangePasswordCommand extends PlayerCommand {
commonService.send(player, MessageKey.NOT_LOGGED_IN);
return;
}
if (commonService.getProperty(SecuritySettings.CHANGE_PASSWORD_EMAIL_VERIFICATION_REQUIRED)) {
// Check if the user has been verified or not
if (codeManager.isVerificationRequired(player)) {
codeManager.codeExistOrGenerateNew(name);
commonService.send(player, MessageKey.VERIFICATION_CODE_REQUIRED);
return;
}
}
String oldPassword = arguments.get(0);
String newPassword = arguments.get(1);
@@ -22,6 +22,8 @@ import java.util.Locale;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import static fr.xephi.authme.AuthMe.getScheduler;
public class VerificationCodeManager implements SettingsDependent, HasCleanup {
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
*/
private void generateCode(String name) {
getScheduler().runTaskAsynchronously(() -> {
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());
if (emailResult.rowExists()) {
final String email = emailResult.getValue();
@@ -144,6 +147,7 @@ public class VerificationCodeManager implements SettingsDependent, HasCleanup {
emailService.sendVerificationMail(name, email, code, dateFormat.format(date));
}
}
});
}
/**
@@ -1,5 +1,6 @@
package fr.xephi.authme.initialization;
import com.alessiodp.libby.Library;
import fr.xephi.authme.ConsoleLogger;
import fr.xephi.authme.data.auth.PlayerCache;
import fr.xephi.authme.datasource.CacheDataSource;
@@ -21,6 +22,8 @@ import javax.inject.Provider;
import java.io.File;
import java.sql.SQLException;
import static fr.xephi.authme.AuthMe.libraryManager;
/**
* Creates the AuthMe data source.
*/
@@ -78,8 +81,14 @@ public class DataSourceProvider implements Provider<DataSource> {
dataSource = new SQLite(settings, dataFolder);
break;
case H2:
Library h2 = Library.builder()
.groupId("com.h2database")
.artifactId("h2")
.version("2.2.224")
.build();
libraryManager.addMavenCentral();
libraryManager.loadLibrary(h2);
dataSource = new H2(settings, dataFolder);
logger.warning("You are using H2 database, which is still in development!\nMake sure to backup and report any issues you encounter on GitHub!");
break;
default:
throw new UnsupportedOperationException("Unknown data source type '" + dataSourceType + "'");
@@ -46,7 +46,7 @@ public class BedrockAutoLoginListener implements Listener {
UUID uuid = event.getPlayer().getUniqueId();
bukkitService.runTaskLater(player, () -> {
if (isBedrockPlayer(uuid) && !authmeApi.isAuthenticated(player) && authmeApi.isRegistered(name)) {
authmeApi.forceLogin(player);
authmeApi.forceLogin(player, true);
messages.send(player, MessageKey.BEDROCK_AUTO_LOGGED_IN);
}
},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;
import fr.xephi.authme.AuthMe;
import fr.xephi.authme.api.v3.AuthMeApi;
import fr.xephi.authme.data.auth.PlayerCache;
import fr.xephi.authme.datasource.DataSource;
import fr.xephi.authme.initialization.SettingsDependent;
import fr.xephi.authme.service.ValidationService;
import fr.xephi.authme.settings.Settings;
import fr.xephi.authme.settings.properties.RegistrationSettings;
import fr.xephi.authme.settings.properties.SecuritySettings;
import fr.xephi.authme.util.PlayerUtils;
import org.bukkit.entity.Entity;
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.
*/
class ListenerService implements SettingsDependent {
private final AuthMeApi authmeApi = AuthMeApi.getInstance();
private final DataSource dataSource;
private final PlayerCache playerCache;
private final ValidationService validationService;
@@ -79,19 +75,9 @@ class ListenerService implements SettingsDependent {
* @param player the player to verify
* @return true if the associated event should be canceled, false otherwise
*/
public boolean shouldCancelEvent(Player 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
public void reload(Settings settings) {
isRegistrationForced = settings.getProperty(RegistrationSettings.FORCE);
@@ -75,11 +75,7 @@ public class LoginLocationFixListener implements Listener {
boolean solved = false;
for (BlockFace face : faces) {
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));
} else {
player.teleport(JoinBlock.getRelative(face).getLocation().add(0.5, 0.1, 0.5));
}
solved = true;
break;
}
@@ -107,20 +103,12 @@ public class LoginLocationFixListener implements Listener {
if (JoinBlock.getRelative(BlockFace.DOWN).getType().equals(Material.LAVA)) {
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));
} else {
player.teleport(JoinBlock.getLocation().add(0.5, 0.1, 0.5));
}
messages.send(player, MessageKey.LOCATION_FIX_UNDERGROUND);
break;
}
if (i == MaxHeight) {
if (settings.getProperty(SecuritySettings.SMART_ASYNC_TELEPORT)) {
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);
}
}
@@ -1,6 +1,5 @@
package fr.xephi.authme.listener;
import fr.xephi.authme.api.v3.AuthMeApi;
import fr.xephi.authme.data.QuickCommandsProtectionManager;
import fr.xephi.authme.data.auth.PlayerAuth;
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.SpawnLoader;
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.RestrictionSettings;
import fr.xephi.authme.settings.properties.SecuritySettings;
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.Location;
import org.bukkit.entity.HumanEntity;
@@ -64,12 +65,7 @@ import static org.bukkit.Bukkit.getServer;
/**
* Listener class for player events.
*/
public class PlayerListener implements Listener{
private final AuthMeApi authmeApi = AuthMeApi.getInstance();
public class PlayerListener implements Listener {
@Inject
private Settings settings;
@Inject
@@ -99,7 +95,6 @@ public class PlayerListener implements Listener{
@Inject
private QuickCommandsProtectionManager quickCommandsProtectionManager;
// Lowest priority to apply fast protection checks
@EventHandler(priority = EventPriority.LOWEST)
public void onAsyncPlayerPreLoginEventLowest(AsyncPlayerPreLoginEvent event) {
@@ -193,7 +188,6 @@ public class PlayerListener implements Listener{
@EventHandler(priority = EventPriority.NORMAL)
public void onPlayerJoin(PlayerJoinEvent event) {
final Player player = event.getPlayer();
final AuthMeApi authmeApi = AuthMeApi.getInstance();
if (!PlayerListener19Spigot.isPlayerSpawnLocationEventCalled()) {
teleportationService.teleportOnJoin(player);
}
@@ -220,7 +214,7 @@ public class PlayerListener implements Listener{
String customJoinMessage = settings.getProperty(RegistrationSettings.CUSTOM_JOIN_MESSAGE);
if (!customJoinMessage.isEmpty()) {
customJoinMessage = ChatColor.translateAlternateColorCodes('&', customJoinMessage);
customJoinMessage = ChatColor.translateAlternateColorCodes('&', MiniMessageUtils.parseMiniMessageToLegacy(customJoinMessage));
event.setJoinMessage(customJoinMessage
.replace("{PLAYERNAME}", player.getName())
.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())) {
return;
}
@@ -375,17 +374,9 @@ public class PlayerListener implements Listener{
Location spawn = spawnLoader.getSpawnLocation(player);
if (spawn != null && spawn.getWorld() != null) {
if (!player.getWorld().equals(spawn.getWorld())) {
if(settings.getProperty(SecuritySettings.SMART_ASYNC_TELEPORT)) {
TeleportUtils.teleport(player,spawn);
} else {
player.teleport(spawn);
}
} else if (spawn.distance(player.getLocation()) > settings.getProperty(ALLOWED_MOVEMENT_RADIUS)) {
if(settings.getProperty(SecuritySettings.SMART_ASYNC_TELEPORT)) {
TeleportUtils.teleport(player,spawn);
} else {
player.teleport(spawn);
}
}
}
}
@@ -504,21 +495,33 @@ public class PlayerListener implements Listener{
}
}
@SuppressWarnings("all")
private boolean isInventoryWhitelisted(InventoryView inventory) {
if (inventory == null) {
return false;
}
Set<String> whitelist = settings.getProperty(RestrictionSettings.UNRESTRICTED_INVENTORIES);
if (whitelist.isEmpty()) {
return false;
}
//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)
public void onPlayerInventoryOpen(InventoryOpenEvent event) {
final HumanEntity player = event.getPlayer();
Player ply = (Player) event.getPlayer();
if (listenerService.shouldCancelEvent(player)
&& !isInventoryWhitelisted(event.getView()) && listenerService.shouldCancelInvEvent(ply)) {
&& !isInventoryWhitelisted(event.getView())) {
event.setCancelled(true);
/*
@@ -536,12 +539,4 @@ public class PlayerListener implements Listener{
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;
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.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityPickupItemEvent;
import org.bukkit.event.player.PlayerSwapHandItemsEvent;
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)) {
protocolLibService.disable();
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();
} else if ("ProtocolLib".equalsIgnoreCase(pluginName)) {
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.service.BukkitService;
import fr.xephi.authme.settings.Settings;
import fr.xephi.authme.settings.properties.PluginSettings;
import fr.xephi.authme.settings.properties.RestrictionSettings;
import fr.xephi.authme.util.Utils;
import org.bukkit.entity.Player;
import javax.inject.Inject;
@@ -22,10 +24,12 @@ public class ProtocolLibService implements SettingsDependent {
/* Packet Adapters */
private InventoryPacketAdapter inventoryPacketAdapter;
private TabCompletePacketAdapter tabCompletePacketAdapter;
private I18NGetLocalePacketAdapter i18nGetLocalePacketAdapter;
/* Settings */
private boolean protectInvBeforeLogin;
private boolean denyTabCompleteBeforeLogin;
private boolean i18nMessagesSending;
/* Service */
private boolean isEnabled;
@@ -58,6 +62,10 @@ public class ProtocolLibService implements SettingsDependent {
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;
return;
}
@@ -84,6 +92,16 @@ public class ProtocolLibService implements SettingsDependent {
tabCompletePacketAdapter = null;
}
if (i18nMessagesSending) {
if (i18nGetLocalePacketAdapter == null) {
i18nGetLocalePacketAdapter = new I18NGetLocalePacketAdapter(plugin);
i18nGetLocalePacketAdapter.register();
}
} else if (i18nGetLocalePacketAdapter != null) {
i18nGetLocalePacketAdapter.unregister();
i18nGetLocalePacketAdapter = null;
}
this.isEnabled = true;
}
@@ -101,6 +119,10 @@ public class ProtocolLibService implements SettingsDependent {
tabCompletePacketAdapter.unregister();
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.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
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.properties.PluginSettings;
import fr.xephi.authme.util.FileUtils;
import fr.xephi.authme.util.message.I18NUtils;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;
import javax.annotation.PostConstruct;
import javax.inject.Inject;
import java.io.File;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import static fr.xephi.authme.message.MessagePathHelper.DEFAULT_LANGUAGE;
@@ -33,6 +36,7 @@ public abstract class AbstractMessageFileHandler implements Reloadable {
private String filename;
private FileConfiguration configuration;
private Map<String, FileConfiguration> i18nConfiguration;
private final String defaultFile;
protected AbstractMessageFileHandler() {
@@ -46,6 +50,7 @@ public abstract class AbstractMessageFileHandler implements Reloadable {
filename = createFilePath(language);
File messagesFile = initializeFile(filename);
configuration = YamlConfiguration.loadConfiguration(messagesFile);
i18nConfiguration = null;
}
protected String getLanguage() {
@@ -83,6 +88,24 @@ public abstract class AbstractMessageFileHandler implements Reloadable {
: 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,
* i.e. without falling back to the default file.
@@ -94,6 +117,27 @@ public abstract class AbstractMessageFileHandler implements Reloadable {
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.
*
@@ -29,46 +29,6 @@ public enum MessageKey {
*/
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!
*/
@@ -5,6 +5,8 @@ import fr.xephi.authme.ConsoleLogger;
import fr.xephi.authme.mail.EmailService;
import fr.xephi.authme.output.ConsoleLoggerFactory;
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.command.CommandSender;
import org.bukkit.entity.Player;
@@ -120,13 +122,16 @@ public class Messages {
* @return The message from the file
*/
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();
if (sender instanceof Player) {
displayName = ((Player) sender).getDisplayName();
}
return ChatColor.translateAlternateColorCodes('&', message)
return ChatColor.translateAlternateColorCodes('&', MiniMessageUtils.parseMiniMessageToLegacy(message))
.replace(NEWLINE_TAG, "\n")
.replace(USERNAME_TAG, sender.getName())
.replace(DISPLAYNAME_TAG, displayName);
@@ -142,7 +147,7 @@ public class Messages {
private String retrieveMessage(MessageKey key, String name) {
String message = messagesFileHandler.getMessage(key.getKey());
return ChatColor.translateAlternateColorCodes('&', message)
return ChatColor.translateAlternateColorCodes('&', MiniMessageUtils.parseMiniMessageToLegacy(message))
.replace(NEWLINE_TAG, "\n")
.replace(USERNAME_TAG, name)
.replace(DISPLAYNAME_TAG, name);
@@ -149,7 +149,6 @@ public class MessageUpdater {
.put("verification", "Verification code")
.put("time", "Time units")
.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("login_location_fix", "3rd party features: Login Location Fix")
.put("double_login_fix", "3rd party features: Double Login Fix")
@@ -171,7 +170,7 @@ public class MessageUpdater {
// Create ConfigurationData instance
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);
}
@@ -29,8 +29,6 @@ import fr.xephi.authme.util.PlayerUtils;
import org.bukkit.GameMode;
import org.bukkit.Server;
import org.bukkit.entity.Player;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
import javax.inject.Inject;
import java.util.Locale;
@@ -137,6 +135,10 @@ public class AsynchronousJoin implements AsynchronousProcess {
// Session logic
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);
// Run commands
bukkitService.scheduleSyncTaskFromOptionallyAsyncTask(
@@ -204,7 +206,7 @@ public class AsynchronousJoin implements AsynchronousProcess {
int blindTimeOut = (registrationTimeout <= 0) ? 99999 : registrationTimeout;
// 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);
});
@@ -26,7 +26,6 @@ import fr.xephi.authme.service.CommonService;
import fr.xephi.authme.service.SessionService;
import fr.xephi.authme.service.bungeecord.BungeeSender;
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.settings.Settings;
import fr.xephi.authme.settings.properties.DatabaseSettings;
@@ -314,10 +313,6 @@ public class AsynchronousLogin implements AsynchronousProcess {
bukkitService.scheduleSyncDelayedTask(() ->
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
// 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.TeleportationService;
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.properties.HooksSettings;
import fr.xephi.authme.settings.properties.RegistrationSettings;
import org.bukkit.entity.Player;
import org.bukkit.potion.PotionEffectType;
@@ -30,6 +33,9 @@ public class ProcessSyncPlayerLogin implements SynchronousProcess {
@Inject
private BungeeSender bungeeSender;
@Inject
private VelocitySender velocitySender;
@Inject
private LimboService limboService;
@@ -102,6 +108,13 @@ public class ProcessSyncPlayerLogin implements SynchronousProcess {
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
bukkitService.callEvent(new LoginEvent(player));
@@ -14,8 +14,6 @@ import fr.xephi.authme.settings.commandconfig.CommandManager;
import fr.xephi.authme.settings.properties.RegistrationSettings;
import fr.xephi.authme.settings.properties.RestrictionSettings;
import org.bukkit.entity.Player;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
import javax.inject.Inject;
@@ -75,7 +73,7 @@ public class ProcessSyncPlayerLogout implements SynchronousProcess {
// Apply Blindness effect
if (service.getProperty(RegistrationSettings.APPLY_BLIND_EFFECT)) {
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
@@ -1,5 +1,6 @@
package fr.xephi.authme.process.quit;
import com.github.Anon8281.universalScheduler.UniversalScheduler;
import fr.xephi.authme.data.limbo.LimboService;
import fr.xephi.authme.process.SynchronousProcess;
import fr.xephi.authme.settings.commandconfig.CommandManager;
@@ -27,7 +28,9 @@ public class ProcessSyncPlayerQuit implements SynchronousProcess {
commandManager.runCommandsOnLogout(player);
} else {
limboService.restoreData(player);
player.saveData(); // #1238: Speed is sometimes not restored properly
if (!UniversalScheduler.isFolia) { // AuthMeReReloaded - Fix #146 (Very stupid solution, but works)
// player.saveData(); // #1238: Speed is sometimes not restored properly
}
}
player.leaveVehicle();
}
@@ -23,8 +23,6 @@ import fr.xephi.authme.settings.properties.RegistrationSettings;
import fr.xephi.authme.settings.properties.RestrictionSettings;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
import javax.inject.Inject;
@@ -103,7 +101,7 @@ public class AsynchronousUnregister implements AsynchronousProcess {
public void adminUnregister(CommandSender initiator, String name, Player player) {
if (dataSource.removeAuth(name)) {
performPostUnregisterActions(name, player);
velocitySender.sendAuthMeVelocityMessage(player, VMessageType.FORCE_UNREGISTER);
if (player != null) velocitySender.sendAuthMeVelocityMessage(player, VMessageType.FORCE_UNREGISTER);
bukkitService.createAndCallEvent(isAsync -> new UnregisterByAdminEvent(player, name, isAsync, initiator));
if (initiator == null) {
logger.info(name + " was unregistered");
@@ -150,7 +148,7 @@ public class AsynchronousUnregister implements AsynchronousProcess {
private void applyBlindEffect(Player player) {
if (service.getProperty(RegistrationSettings.APPLY_BLIND_EFFECT)) {
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),
XAUTH(fr.xephi.authme.security.crypts.XAuth.class),
XFBCRYPT(fr.xephi.authme.security.crypts.XfBCrypt.class),
NOCRYPT(fr.xephi.authme.security.crypts.NoCrypt.class),
CUSTOM(null),
@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;
}
}
@@ -1,12 +1,12 @@
package fr.xephi.authme.service;
import com.github.Anon8281.universalScheduler.UniversalRunnable;
import com.github.Anon8281.universalScheduler.UniversalScheduler;
import com.github.Anon8281.universalScheduler.scheduling.tasks.MyScheduledTask;
import fr.xephi.authme.AuthMe;
import fr.xephi.authme.initialization.SettingsDependent;
import fr.xephi.authme.settings.Settings;
import fr.xephi.authme.settings.properties.PluginSettings;
import fr.xephi.authme.util.Utils;
import org.bukkit.BanEntry;
import org.bukkit.BanList;
import org.bukkit.Bukkit;
@@ -18,6 +18,8 @@ import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.event.Event;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
import javax.inject.Inject;
import java.util.Collection;
@@ -38,7 +40,7 @@ public class BukkitService implements SettingsDependent {
/** Number of ticks per minute. */
public static final int TICKS_PER_MINUTE = 60 * TICKS_PER_SECOND;
/** Whether the server is running Folia. */
private static final boolean IS_FOLIA = Utils.isClassLoaded("io.papermc.paper.threadedregions.RegionizedServer");
private static final boolean isFolia = UniversalScheduler.isFolia;
private final AuthMe authMe;
private boolean useAsyncTasks;
@@ -68,7 +70,7 @@ public class BukkitService implements SettingsDependent {
* @param delay Delay in server ticks before executing task
*/
public void scheduleSyncDelayedTask(Runnable task, long delay) {
if (IS_FOLIA) {
if (isFolia) {
runTaskLater(task, delay);
} else {
Bukkit.getScheduler().runTaskLater(authMe, task, delay); // We must do this to keep compatibility
@@ -98,7 +100,7 @@ public class BukkitService implements SettingsDependent {
* @throws IllegalArgumentException if task is null
*/
public void runTask(Runnable task) {
if (IS_FOLIA) {
if (isFolia) {
getScheduler().runTask(task);
} else {
Bukkit.getScheduler().runTask(authMe, task);
@@ -106,7 +108,7 @@ public class BukkitService implements SettingsDependent {
}
public void runTask(Entity entity, Runnable task) {
if (IS_FOLIA) {
if (isFolia) {
getScheduler().runTask(entity, task);
} else {
Bukkit.getScheduler().runTask(authMe, task);
@@ -122,7 +124,7 @@ public class BukkitService implements SettingsDependent {
* @param task the task to be run
*/
public void runTaskIfFolia(Runnable task) {
if (IS_FOLIA) {
if (isFolia) {
runTask(task);
} else {
task.run();
@@ -134,7 +136,7 @@ public class BukkitService implements SettingsDependent {
* @param task the task to be run
*/
public void runTaskIfFolia(Entity entity, Runnable task) {
if (IS_FOLIA) {
if (isFolia) {
runTask(entity, task);
} else {
task.run();
@@ -146,7 +148,7 @@ public class BukkitService implements SettingsDependent {
* @param task the task to be run
*/
public void runTaskIfFolia(Location location, Runnable task) {
if (IS_FOLIA) {
if (isFolia) {
runTask(location, task);
} else {
task.run();
@@ -196,7 +198,7 @@ public class BukkitService implements SettingsDependent {
* @throws IllegalArgumentException if task is null
*/
public void runTaskAsynchronously(Runnable task) {
if (IS_FOLIA) {
if (isFolia) {
getScheduler().runTaskAsynchronously(task);
} else {
Bukkit.getScheduler().runTaskAsynchronously(authMe, task);
@@ -327,6 +329,16 @@ public class BukkitService implements SettingsDependent {
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.
*
@@ -380,7 +392,11 @@ public class BukkitService implements SettingsDependent {
* @param bytes the message
*/
public void sendVelocityMessage(Player player, byte[] bytes) {
if (player != null) {
player.sendPluginMessage(authMe, "authmevelocity:main", bytes);
} else {
Bukkit.getServer().sendPluginMessage(authMe, "authmevelocity:main", bytes);
}
}
@@ -37,7 +37,7 @@ public class GeoIpService {
private volatile boolean downloading;
@Inject
GeoIpService(@DataFolder File dataFolder){
GeoIpService(@DataFolder File dataFolder) {
this.dataFile = dataFolder.toPath().resolve(DATABASE_FILE);
// Fires download of recent data or the initialization of the look up service
@@ -6,6 +6,8 @@ import com.onarandombox.MultiverseCore.MultiverseCore;
import com.onarandombox.MultiverseCore.api.MVWorldManager;
import fr.xephi.authme.ConsoleLogger;
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.World;
import org.bukkit.entity.Player;
@@ -26,6 +28,8 @@ public class PluginHookService {
private Essentials essentials;
private Plugin cmi;
private MultiverseCore multiverse;
private PlaceholderAPIPlugin placeholderApi;
private AuthMeExpansion authMeExpansion;
/**
* Constructor.
@@ -38,6 +42,7 @@ public class PluginHookService {
tryHookToEssentials();
tryHookToCmi();
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.
*/
@@ -180,6 +199,16 @@ public class PluginHookService {
multiverse = null;
}
/**
* Unhooks from PlaceholderAPI.
*/
public void unhookPlaceholderApi() {
if (placeholderApi != null) {
authMeExpansion.unregister();
placeholderApi = null;
}
}
// ------
// Helpers
// ------
@@ -14,7 +14,6 @@ import fr.xephi.authme.output.ConsoleLoggerFactory;
import fr.xephi.authme.settings.Settings;
import fr.xephi.authme.settings.SpawnLoader;
import fr.xephi.authme.settings.properties.RestrictionSettings;
import fr.xephi.authme.settings.properties.SecuritySettings;
import fr.xephi.authme.util.TeleportUtils;
import org.bukkit.Location;
import org.bukkit.World;
@@ -144,7 +143,9 @@ public class TeleportationService implements Reloadable {
} else if (settings.getProperty(TELEPORT_UNAUTHED_TO_SPAWN)) {
if (settings.getProperty(RestrictionSettings.SAVE_QUIT_LOCATION)) {
Location location = buildLocationFromAuth(player, auth);
if (location.equals(player.getLocation())) return;
Location playerLoc = player.getLocation();
if (location.getX() == playerLoc.getX() && location.getY() == playerLoc.getY() && location.getZ() == playerLoc.getZ()
&& location.getWorld() == playerLoc.getWorld()) return;
logger.debug("Teleporting `{0}` after login, based on the player auth", player.getName());
teleportBackFromSpawn(player, location);
} else if (limbo != null && limbo.getLocation() != null) {
@@ -187,10 +188,8 @@ public class TeleportationService implements Reloadable {
private void performTeleportation(final Player player, final AbstractTeleportEvent event) {
bukkitService.scheduleSyncTaskFromOptionallyAsyncTask(() -> {
bukkitService.callEvent(event);
if (player.isOnline() && isEventValid(event) && settings.getProperty(SecuritySettings.SMART_ASYNC_TELEPORT)) {
if (player.isOnline() && isEventValid(event)) {
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)) {
long delay = cmd.getDelay();
if (delay > 0) {
bukkitService.scheduleSyncDelayedTask(() -> dispatchCommand(player, cmd), delay);
bukkitService.runTaskLater(player, () -> dispatchCommand(player, cmd), delay);
} 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 =
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?")
public static final Property<Boolean> BUNGEECORD =
newProperty("Hooks.bungeecord", false);
@@ -5,16 +5,32 @@ import ch.jalu.configme.SettingsHolder;
import ch.jalu.configme.properties.Property;
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;
public final class PluginSettings implements SettingsHolder {
@Comment({
"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."
"Send i18n messages to player based on their client settings, this option will override `settings.messagesLanguage`",
"(Requires ProtocolLib)",
"This will not affect language of AuthMe help command."
})
public static final Property<Boolean> MENU_UNREGISTER_COMPATIBILITY =
newProperty("3rdPartyFeature.compatibility.menuPlugins", false);
public static final Property<Boolean> I18N_MESSAGES =
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({
"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")
public static final Property<Integer> QUICK_COMMANDS_DENIED_BEFORE_MILLISECONDS =
newProperty("Protection.quickCommands.denyCommandsBeforeMilliseconds", 3000);
newProperty("Protection.quickCommands.denyCommandsBeforeMilliseconds", 1000);
private ProtectionSettings() {
}
@@ -173,7 +173,7 @@ public final class RestrictionSettings implements SettingsHolder {
@Comment("Regex syntax for allowed chars in email.")
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?")
@@ -205,6 +205,10 @@ public final class RestrictionSettings implements SettingsHolder {
public static final Property<Set<String>> UNRESTRICTED_INVENTORIES =
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() {
@@ -6,10 +6,8 @@ import ch.jalu.configme.properties.Property;
import fr.xephi.authme.security.HashAlgorithm;
import fr.xephi.authme.settings.EnumSetProperty;
import java.util.List;
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.newProperty;
@@ -21,11 +19,6 @@ public final class SecuritySettings implements SettingsHolder {
public static final Property<Boolean> STOP_SERVER_ON_PROBLEM =
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?",
"(Requires hookFloodgate to be true & floodgate loaded)",
"(**THIS IS SAFE DO NOT WORRY**)"})
@@ -48,25 +41,6 @@ public final class SecuritySettings implements SettingsHolder {
public static final Property<Boolean> ADVANCED_SHULKER_FIX =
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?")
public static final Property<Boolean> LOGIN_LOC_FIX_SUB_PORTAL =
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 =
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")
public static final Property<Boolean> ENABLE_LOGIN_FAILURE_CAPTCHA =
newProperty("Security.captcha.useCaptcha", false);
@@ -127,7 +106,7 @@ public final class SecuritySettings implements SettingsHolder {
@Comment({
"Possible values: SHA256, BCRYPT, BCRYPT2Y, PBKDF2, SALTEDSHA512,",
"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",
"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
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.
@@ -29,7 +29,7 @@ public final class PlayerUtils {
* @return True if the player is an NPC, false otherwise
*/
public static boolean isNpc(Player player) {
if (IS_LEAVES_SERVER) {
if (isLeavesServer) {
return player.hasMetadata("NPC") || player.getAddress() == null;
} else {
return player.hasMetadata("NPC");
@@ -3,24 +3,24 @@ package fr.xephi.authme.util;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.invoke.MethodHandle;
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.
*/
public class TeleportUtils {
private static Method teleportAsyncMethod;
private static MethodHandle teleportAsyncMethodHandle;
static {
try {//Detect Paper class
Class<?> paperClass = Class.forName("com.destroystokyo.paper.PaperConfig");
teleportAsyncMethod = Player.class.getMethod("teleportAsync", Location.class);
teleportAsyncMethod.setAccessible(true);
// if detected,use teleportAsync()
} catch (ClassNotFoundException | NoSuchMethodException e) {
teleportAsyncMethod = null;
//if not, set method to null
try {
MethodHandles.Lookup lookup = MethodHandles.lookup();
teleportAsyncMethodHandle = lookup.findVirtual(Player.class, "teleportAsync", MethodType.methodType(CompletableFuture.class, Location.class));
} catch (NoSuchMethodException | IllegalAccessException e) {
teleportAsyncMethodHandle = null;
// if not, set method handle to null
}
}
@@ -31,10 +31,10 @@ public class TeleportUtils {
* @param location Where should the player be teleported
*/
public static void teleport(Player player, Location location) {
if (teleportAsyncMethod != null) {
if (teleportAsyncMethodHandle != null) {
try {
teleportAsyncMethod.invoke(player, location);
} catch (IllegalAccessException | InvocationTargetException e) {
teleportAsyncMethodHandle.invoke(player, location);
} catch (Throwable throwable) {
player.teleport(location);
}
} else {
@@ -2,6 +2,7 @@ package fr.xephi.authme.util;
import fr.xephi.authme.ConsoleLogger;
import fr.xephi.authme.output.ConsoleLoggerFactory;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.command.ConsoleCommandSender;
@@ -107,4 +108,12 @@ public final class Utils {
public static boolean isEmailEmpty(String 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() {
}
}
+1 -1
View File
@@ -104,7 +104,7 @@
<td>
<p style="color:#b0adc5;">© 2024 HomoCraft. All rights reserved.</p>
<a href="1919810.com" target="_blank"
style="text-decoration: none; font-size: 16px">wdsj.in</a>
style="text-decoration: none; font-size: 16px">example.com</a>
</td>
</tr>
</tbody>
+18 -2
View File
@@ -9,7 +9,7 @@ registration:
name_taken: '&cПотребителското име е заетo!'
register_request: '&3Моля регистрирайте се с: /register парола парола.'
command_usage: '&cКоманда: /register парола парола'
reg_only: '&4Само регистрирани потребители могат да влизат в сървъра! Моля посетете http://example.com, за да се регистрирате!'
reg_only: '&4Само регистрирани потребители могат да влизат в сървъра! Моля посетете https://example.com, за да се регистрирате!'
success: '&2Успешна регистрация!'
kicked_admin_registered: 'Вие бяхте регистриран от администратора, моля да влезете отново!'
@@ -20,6 +20,7 @@ password:
unsafe_password: '&cИзбраната парола не е безопасна, моля изберете друга парола.'
forbidden_characters: '&4Паролата съдържа непозволени символи. Позволени символи: %valid_chars'
wrong_length: '&cПаролата е твърде къса или прекалено дълга! Моля опитайте с друга парола.'
pwned_password: '&cИзбраната парола не е сигурна. Тя е използвана %pwned_count пъти вече! Моля, използвайте силна парола...'
# Login
login:
@@ -40,7 +41,7 @@ error:
max_registration: '&cВие сте достигнали максималният брой регистрации (%reg_count/%max_acc %reg_names)!'
logged_in: '&cВече сте влезли!'
kick_for_vip: '&3VIP потребител влезе докато сървъра беше пълен, вие бяхте изгонен!'
# TODO kick_unresolved_hostname: '&cAn error occurred: unresolved player hostname!'
kick_unresolved_hostname: '&cВъзникна грешка: неразрешено име на играч!'
tempban_max_logins: '&cВие бяхте баннат временно, понеже сте си сгрешили паролата прекалено много пъти.'
# AntiBot
@@ -57,6 +58,7 @@ unregister:
# Other messages
misc:
account_not_activated: '&cВашият акаунт все още не е актириван, моля провете своят email адрес!'
not_activated: '&cАкаунтът не е активиран, моля регистрирайте се и го активирайте преди да опитате отново.'
password_changed: '&2Паротала е променена успешно!'
logout: '&2Излязохте успешно!'
reload: '&2Конфигурацията и база данните бяха презаредени правилно!'
@@ -155,3 +157,17 @@ two_factor:
not_enabled_error: 'Защитата със секретен код не е включена за Вашият акаунт. Моля изпълнете команда /2fa add'
removed_success: 'Успешно изключихте защитата със секретен код от Вашият акаунт!'
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Бяхте изключени поради двойно влизане.'
+43 -27
View File
@@ -8,13 +8,13 @@
# Registro
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>"'
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!'
success: '&2Registrado com sucesso!'
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
password:
@@ -23,6 +23,7 @@ password:
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'
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:
@@ -34,17 +35,17 @@ login:
# Erros
error:
unregistered_user: '&cEste usuário não está registrado!'
denied_command: '&cPara utilizar este comando é 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!'
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!'
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!'
kick_for_vip: '&3Um jogador VIP juntou-se ao servidor enquanto ele estava cheio!'
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:
@@ -59,13 +60,14 @@ unregister:
# Outras mensagens
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!'
not_activated: '&cConta não ativada, por favor registre e ative antes de tentar novamente.'
password_changed: '&2Senha alterada com sucesso!'
logout: '&2Desconectado com sucesso!'
reload: '&2A configuração e o banco de dados foram recarregados corretamente!'
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
session:
@@ -74,36 +76,36 @@ session:
# Mensagens de erro ao entrar
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!'
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!'
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.'
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.'
# E-mail
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_change: '&cUse: /email change <emailAntigo> <novoEmail>'
new_email_invalid: '&cE-mail novo inválido, tente novamente!'
old_email_invalid: '&cE-mail antigo inválido, tente novamente!'
invalid: '&E-mail inválido, tente novamente!'
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!'
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'
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.'
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!'
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
recovery:
@@ -135,6 +137,17 @@ verification:
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!'
# 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
two_factor:
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!'
invalid_code: 'Código inválido!'
# Unidades de tempo
time:
second: 'segundo'
seconds: 'segundos'
minute: 'minuto'
minutes: 'minutos'
hour: 'hora'
hours: 'horas'
day: 'dia'
days: 'dias'
# 3rd party features: Bedrock Auto Login
bedrock_auto_login:
success: '&aLogin automático 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 corrigir.'
# 3rd party features: Double Login Fix
double_login_fix:
fix_message: '&cVocê foi desconectado devido a login duplo.'
+17 -1
View File
@@ -19,7 +19,8 @@ password:
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...'
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:
@@ -57,6 +58,7 @@ unregister:
# Other messages
misc:
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!'
logout: '&cÚspěšně jsi se odhlásil.'
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'
removed_success: 'Dvoufaktorovka byla úspěšně odebrána z tvého účtu'
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í.'
+18 -2
View File
@@ -9,7 +9,7 @@ registration:
name_taken: '&cDieser Benutzername ist schon vergeben'
register_request: '&3Bitte registriere dich mit "/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!'
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.'
forbidden_characters: '&4Dein Passwort enthält unerlaubte Zeichen. Zulässige Zeichen: %valid_chars'
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:
@@ -40,7 +41,7 @@ error:
max_registration: '&cDu hast die maximale Anzahl an Accounts erreicht (%reg_count/%max_acc %reg_names).'
logged_in: '&cBereits eingeloggt!'
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!'
# AntiBot
@@ -57,6 +58,7 @@ unregister:
# Other messages
misc:
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!'
logout: '&2Erfolgreich ausgeloggt'
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'
removed_success: 'Die Zwei-Faktor-Authentifizierung wurde erfolgreich von deinem Konto entfernt'
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.'
+36 -45
View File
@@ -5,13 +5,13 @@
# 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!'
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:
@@ -32,17 +32,17 @@ login:
# Errors
error:
unregistered_user: '&cThis user isn''t registered!'
denied_command: '&cIn order to use this command you must be authenticated!'
denied_chat: '&cIn order to chat you must be authenticated!'
unregistered_user: '&cThis user isn''t registered!'
not_logged_in: '&cYou''re not logged in!'
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!'
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!'
kick_for_vip: '&3A VIP player has joined the server when it was full!'
kick_unresolved_hostname: '&cAn error occurred: unresolved player hostname!'
tempban_max_logins: '&cYou have been temporarily banned for failing to log in too many times.'
# AntiBot
antibot:
@@ -50,19 +50,21 @@ antibot:
auto_enabled: '&4[AntiBotService] AntiBot enabled due to the huge number of connections!'
auto_disabled: '&2[AntiBotService] AntiBot disabled after %m minutes!'
# Unregister
unregister:
success: '&cSuccessfully unregistered!'
command_usage: '&cUsage: /unregister <password>'
# Other messages
misc:
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!'
not_activated: '&cAccount not activated, please register and activate it before trying again.'
password_changed: '&2Password changed successfully!'
logout: '&2Logged out successfully!'
reload: '&2Configuration and database have been reloaded correctly!'
usage_change_password: '&cUsage: /changepassword <oldPassword> <newPassword>'
accounts_owned_self: 'You own %count accounts:'
accounts_owned_other: 'The player %name has %count accounts:'
# Session messages
session:
@@ -71,36 +73,36 @@ session:
# Error messages when joining
on_join_validation:
same_ip_online: 'A player with the same IP is already in game!'
same_nick_online: '&4The same username is already playing on the server!'
name_length: '&4Your username is either too short or too long!'
characters_in_name: '&4Your username contains illegal characters. Allowed chars: %valid_chars'
kick_full_server: '&4The server is full, try again later!'
country_banned: '&4Your country is banned from this server!'
not_owner_error: 'You are not the owner of this account. Please choose another name!'
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.'
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.'
# Email
email:
add_email_request: '&3Please add your email to your account with the command: /email add <yourEmail> <confirmEmail>'
usage_email_add: '&cUsage: /email add <email> <confirmEmail>'
usage_email_change: '&cUsage: /email change <oldEmail> <newEmail>'
new_email_invalid: '&cInvalid new email, try again!'
old_email_invalid: '&cInvalid old email, try again!'
invalid: '&cInvalid email address, try again!'
added: '&2Email address successfully added to your account!'
add_not_allowed: '&cAdding email was not allowed.'
request_confirmation: '&cPlease confirm your email address!'
changed: '&2Email address changed correctly!'
change_not_allowed: '&cChanging email was not allowed.'
email_show: '&2Your current email address is: &f%email'
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.'
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.'
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
recovery:
@@ -132,6 +134,17 @@ verification:
code_expired: '&3Your code has expired! Execute another sensitive command to get a new code!'
email_needed: '&3To verify your identity you need to link an email address with your account!!'
# Time units
time:
second: 'second'
seconds: 'seconds'
minute: 'minute'
minutes: 'minutes'
hour: 'hour'
hours: 'hours'
day: 'day'
days: 'days'
# Two-factor authentication
two_factor:
code_created: '&2Your secret code is %code. You can scan it from here %url'
@@ -145,37 +158,15 @@ two_factor:
removed_success: 'Successfully removed two-factor auth from your account'
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
bedrock_auto_login:
success: '&aBedrock auto login success!'
# 3rd party features: Login Location Fix
login_location_fix:
fix_portal: '&aYou are stuck in portal during Login.'
fix_underground: '&aYou are stuck underground during Login.'
cannot_fix_underground: '&aYou are stuck underground during Login, but we cant fix it.'
fix_portal: '&aYou are stuck in portal during login.'
fix_underground: '&aYou are stuck underground during login.'
cannot_fix_underground: '&aYou are stuck underground during login, but we cant fix it.'
# 3rd party features: Double Login Fix
double_login_fix:
+39 -23
View File
@@ -9,7 +9,7 @@ registration:
name_taken: '&cVi jam registris tiun uzantnomon!'
register_request: '&3Bonvolu registri al la servilo per la komando: /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!'
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...'
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!'
pwned_password: '&cVia elektita pasvorto ne estas sekura. Ĝi estis uzita %pwned_count fojojn jam! Bonvolu uzi fortan pasvorton...'
# 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!'
logged_in: '&cVi jam estas ensalutinta!'
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.'
# AntiBot
@@ -57,6 +58,7 @@ unregister:
# Other messages
misc:
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!'
logout: '&2Elsalutita sukcese!'
reload: '&2Agordo kaj datumbazo estis larditaj korekte!'
@@ -79,7 +81,7 @@ on_join_validation:
country_banned: '&4Via lando estas malpermesitaj de tiu servilo!'
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.'
# 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:
@@ -90,10 +92,10 @@ email:
old_email_invalid: '&cNevalida malnovaj retpoŝto, provu denove!'
invalid: '&cNevalida retadreso, provu denove!'
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!'
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'
no_email_for_account: '&2Vi aktuale ne havas retadreson asociita kun ĉi tiu konto.'
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'
wrong_captcha: '&cMalĝusta captcha, bonvolu tajpi "/captcha %captcha_code" en la babilejo!'
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'
# TODO register_captcha_valid: '&2Valid captcha! You may now register with /register'
captcha_for_registration: 'Por registri vi devas unue solvi kapĉon, bonvolu uzi la komandon: /captcha %captcha_code'
register_captcha_valid: '&2Valida kapĉo! Vi nun povas registri per /register'
# Verification code
verification:
# TODO code_required: '&3This command is sensitive and requires an email verification! Check your inbox and follow the email''s instructions.'
# TODO command_usage: '&cUsage: /verification <code>'
# TODO incorrect_code: '&cIncorrect code, please type "/verification <code>" into the chat, using the code you received by email'
# TODO success: '&2Your identity has been verified! You can now execute all commands within the current session!'
# TODO already_verified: '&2You can already execute every sensitive command within the current session!'
# TODO code_expired: '&3Your code has expired! Execute another sensitive command to get a new code!'
# TODO email_needed: '&3To verify your identity you need to link an email address with your account!!'
code_required: '&3Tiu ĉi komando estas sentema kaj postulas retpoŝtan kontrolon! Kontrolu vian leterkeston kaj sekvu la instrukciojn en la retpoŝto.'
command_usage: '&cUzado: /verification <code>'
incorrect_code: '&cMalĝusta kodo, bonvolu tajpi "/verification <code>" en la babilejo, uzante la kodon, kiun vi ricevis per retpoŝto'
success: '&2Via identeco estis kontrolita! Vi nun povas ekzekuti ĉiujn komandojn dum la aktuala sesio!'
already_verified: '&2Vi jam povas ekzekuti ĉiujn sentemajn komandojn dum la aktuala sesio!'
code_expired: '&3Via kodo eksvalidiĝis! Ekzekutu alian senteman komandon por ricevi novan kodon!'
email_needed: '&3Por kontroli vian identecon vi devas ligi retpoŝtan adreson kun via konto!'
# Time units
time:
@@ -146,12 +148,26 @@ time:
# Two-factor authentication
two_factor:
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>'
# TODO code_required: 'Please submit your two-factor authentication code with /2fa code <code>'
# TODO already_enabled: 'Two-factor authentication is already enabled for your account!'
# TODO enable_error_no_code: 'No 2fa key has been generated for you or it has expired. Please run /2fa add'
# TODO enable_success: 'Successfully enabled two-factor authentication for your account'
# TODO enable_error_wrong_code: 'Wrong code or code has expired. Please run /2fa add'
# TODO not_enabled_error: 'Two-factor authentication is not enabled for your account. Run /2fa add'
# TODO removed_success: 'Successfully removed two-factor auth from your account'
# TODO invalid_code: 'Invalid code!'
confirmation_required: 'Bonvolu konfirmi vian kodon per /2fa confirm <code>'
code_required: 'Bonvolu sendi vian du-faktoran aŭtentikigan kodon per /2fa code <code>'
already_enabled: 'Du-faktora aŭtentikigo jam estas ebligita por via konto!'
enable_error_no_code: 'Neniu 2fa ŝlosilo estis generita por vi aŭ ĝi eksvalidiĝis. Bonvolu kuri /2fa add'
enable_success: 'Sukcese ebligis du-faktoran aŭtentikigon por via konto'
enable_error_wrong_code: 'Malĝusta kodo aŭ kodo eksvalidiĝis. Bonvolu kuri /2fa add'
not_enabled_error: 'Du-faktora aŭtentikigo ne estas ebligita por via konto. Kuru /2fa add'
removed_success: 'Sukcese forigis du-faktoran aŭtentikigon de via konto'
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.'
+18 -2
View File
@@ -10,7 +10,7 @@ registration:
name_taken: '&cUsuario ya registrado'
register_request: '&cPor favor, regístrate con "/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!'
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...'
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'
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:
@@ -41,7 +42,7 @@ error:
max_registration: '&fHas excedido la cantidad máxima de registros para tu cuenta'
logged_in: '&c¡Ya has iniciado sesión!'
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.'
# AntiBot
@@ -58,6 +59,7 @@ unregister:
# Other messages
misc:
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!'
logout: '&cDesconectado correctamente.'
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'
removed_success: 'Se ha eliminado correctamente la autenticación de dos factores de tu cuenta'
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.'
+47 -30
View File
@@ -5,13 +5,13 @@
# 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!'
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:
@@ -20,6 +20,7 @@ password:
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'
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:
@@ -31,17 +32,17 @@ login:
# Errors
error:
unregistered_user: '&cSee kasutaja ei ole registreeritud!'
denied_command: '&cSelle käskluse kasutamiseks pead olema sisselogitud!'
denied_chat: '&cVestlemiseks pead olema sisselogitud!'
unregistered_user: '&cSee kasutaja ei ole registreeritud!'
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.'
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!'
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!'
tempban_max_logins: '&cSind on ajutiselt serverist blokeeritud, kuna sisestasid mitu korda vale parooli.'
# AntiBot
antibot:
@@ -49,57 +50,59 @@ antibot:
auto_enabled: '&4[AntiBotTeenus] AntiBot sisselülitatud!'
auto_disabled: '&2[AntiBotTeenus] AntiBot välja lülitatud peale %m minutit!'
# Unregister
unregister:
success: '&cKasutaja edukalt kustutatud!'
command_usage: '&cKasutus: /unregister <parool>'
# Other messages
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!'
not_activated: '&cKonto ei ole aktiveeritud, palun registreerige ja aktiveerige see enne uuesti proovimist.'
password_changed: '&2Parool edukalt vahetatud!'
logout: '&2Edukalt välja logitud!'
reload: '&2Seadistused ning andmebaas on edukalt taaslaaditud!'
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:
invalid_session: '&cSinu IP-aadress muutus, seega sinu sessioon aegus!'
valid_session: '&2Sisse logitud sessiooni jätkumise tõttu.'
invalid_session: '&cSinu IP-aadress muutus, seega sinu sessioon aegus!'
# Error messages when joining
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!'
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!'
not_owner_error: 'Sa ei ole selle konto omanik. Vali teine nimi!'
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.'
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.'
# 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_change: '&cKasutus: /email change <vanaEmail> <uusEmail>'
new_email_invalid: '&cUus meiliaadress on sobimatu, proovi uuesti!'
old_email_invalid: '&cVana meiliaadress on sobimatu, proovi uuesti!'
invalid: '&cSobimatu meiliaadress, proovi uuesti!'
added: '&2Meiliaadress edukalt lisatud!'
add_not_allowed: '&cMeiliaadressi lisamine ei ole lubatud.'
request_confirmation: '&cPalun kinnita oma meiliaadress!'
changed: '&2Meiliaadress edukalt muudetud!'
change_not_allowed: '&cMeiliaadressi muutmine ei ole lubatud.'
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.'
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.'
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
recovery:
@@ -131,6 +134,17 @@ verification:
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!'
# 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:
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.'
invalid_code: 'Vale kood!'
# Time units
time:
second: 'sekund'
seconds: 'sekundit'
minute: 'minut'
minutes: 'minutit'
hour: 'tund'
hours: 'tundi'
day: 'päev'
days: 'päeva'
# 3rd party features: Bedrock Auto Login
bedrock_auto_login:
success: '&aBedrocki automaatne sisselogimine õnnestus!'
# 3rd party features: Login Location Fix
login_location_fix:
fix_portal: '&aOlete sisselogimise ajal portaalis kinni.'
fix_underground: '&aOlete sisselogimise ajal maa all kinni.'
cannot_fix_underground: '&aOlete sisselogimise ajal maa all kinni, kuid me ei saa seda parandada.'
# 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...'
forbidden_characters: '&4Pasahitzak ondorengo karaktereak bakarrik izan ditzake: %valid_chars'
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:
@@ -57,6 +58,7 @@ unregister:
# Other messages
misc:
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!'
logout: '&cSaioa itxi duzu'
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'
removed_success: '2 faktoreko autentikazioa desaktibatu duzu'
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.'
+76 -60
View File
@@ -9,17 +9,18 @@ registration:
name_taken: '&cPelaaja on jo rekisteröity'
register_request: '&cRekisteröidy palvelimellemme komennolla "/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!'
# 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:
match_error: '&fSalasanat ei täsmää'
# TODO name_in_password: '&cYou can''t use your name as password, please choose another one...'
# TODO unsafe_password: '&cThe chosen password isn''t safe, please choose another one...'
# TODO forbidden_characters: '&4Your password contains illegal characters. Allowed chars: %valid_chars'
name_in_password: '&cEt voi käyttää nimeäsi salasanana, valitse toinen...'
unsafe_password: '&cValitsemasi salasana ei ole turvallinen, valitse toinen...'
forbidden_characters: '&4Salasanassasi on kiellettyjä merkkejä. Sallitut merkit: %valid_chars'
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:
@@ -31,8 +32,8 @@ login:
# Errors
error:
# TODO denied_command: '&cIn order to use this command you must be authenticated!'
# TODO denied_chat: '&cIn order to chat you must be authenticated!'
denied_command: '&cSinun on oltava todennettu käyttääksesi tätä komentoa!'
denied_chat: '&cSinun on oltava todennettu voidaksesi chattailla!'
unregistered_user: '&cSalasanat eivät täsmää'
not_logged_in: '&cEt ole kirjautunut sisään!'
no_permission: '&cEi oikeuksia'
@@ -40,14 +41,14 @@ error:
max_registration: '&fSinulla ei ole oikeuksia tehdä enempää pelaajatilejä!'
logged_in: '&cOlet jo kirjautunut!'
kick_for_vip: '&cVIP pelaaja liittyi täyteen palvelimeen!'
# TODO kick_unresolved_hostname: '&cAn error occurred: unresolved player hostname!'
# TODO tempban_max_logins: '&cYou have been temporarily banned for failing to log in too many times.'
kick_unresolved_hostname: '&cTapahtui virhe: pelaajan verkkonimiä ei voitu ratkaista!'
tempban_max_logins: '&cSinut on tilapäisesti kielletty liian monen kirjautumisen epäonnistumisen vuoksi.'
# AntiBot
antibot:
# TODO kick_antibot: 'AntiBot protection mode is enabled! You have to wait some minutes before joining the server.'
# TODO auto_enabled: '&4[AntiBotService] AntiBot enabled due to the huge number of connections!'
# TODO auto_disabled: '&2[AntiBotService] AntiBot disabled after %m minutes!'
kick_antibot: 'Antibot-suojatila on käytössä! Sinun on odotettava muutama minuutti ennen kuin voit liittyä palvelimelle.'
auto_enabled: '&4[AntiBotService] Antibot otettu käyttöön suuren yhteyksien määrän vuoksi!'
auto_disabled: '&2[AntiBotService] Antibot poistettu käytöstä %m minuutin kuluttua!'
# Unregister
unregister:
@@ -57,12 +58,13 @@ unregister:
# Other messages
misc:
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!!'
logout: '&cKirjauduit ulos palvelimelta.'
reload: '&fAsetukset uudelleenladattu'
usage_change_password: '&fKäyttötapa: /changepassword vanhaSalasana uusiSalasana'
# TODO accounts_owned_self: 'You own %count accounts:'
# TODO accounts_owned_other: 'The player %name has %count accounts:'
accounts_owned_self: 'Omistat %count tiliä:'
accounts_owned_other: 'Pelaajalla %name on %count tiliä:'
# Session messages
session:
@@ -71,15 +73,15 @@ session:
# Error messages when joining
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.'
name_length: '&cPelaajanimesi on liian lyhyt tai pitkä'
characters_in_name: '&cPelaajanimesi sisältää luvattomia merkkejä. Hyväksytyt merkit: %valid_chars'
kick_full_server: '&cPalvelin on täynnä, Yritä pian uudelleen!'
# TODO country_banned: '&4Your country is banned from this server!'
# TODO not_owner_error: 'You are not the owner of this account. Please choose another name!'
# TODO invalid_name_case: 'You should join using username %valid, not %invalid.'
# TODO quick_command: 'You used a command too fast! Please, join the server again and wait more before using any command.'
country_banned: '&4Maasi on estetty tästä palvelimesta!'
not_owner_error: 'Et ole tämän tilin omistaja. Valitse toinen nimi!'
invalid_name_case: 'Sinun pitäisi liittyä käyttäen käyttäjänimeä %valid, ei %invalid.'
quick_command: 'Käytit komentoa liian nopeasti! Kirjaudu sisään uudelleen ja odota enemmän ennen minkään komennon käyttöä.'
# Email
email:
@@ -90,17 +92,17 @@ email:
old_email_invalid: '[AuthMe] Vanha sähköposti on väärä!'
invalid: '[AuthMe] Väärä sähköposti'
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!'
changed: '[AuthMe] Sähköposti vaihdettu!'
# TODO change_not_allowed: '&cChanging email was not allowed'
# TODO email_show: '&2Your current email address is: &f%email'
# TODO no_email_for_account: '&2You currently don''t have email address associated with this account.'
# TODO already_used: '&4The email address is already being used'
# TODO incomplete_settings: 'Error: not all required settings are set for sending emails. Please contact an admin.'
# TODO send_failure: 'The email could not be sent. Please contact an administrator.'
# TODO change_password_expired: 'You cannot change your password using this command anymore.'
# TODO email_cooldown_error: '&cAn email was already sent recently. You must wait %time before you can send a new one.'
change_not_allowed: '&cSähköpostin muuttaminen ei ollut sallittua.'
email_show: '&2Nykyinen sähköpostiosoitteesi on: &f%email'
no_email_for_account: '&2Sinulla ei tällä hetkellä ole liitettyä sähköpostiosoitetta tähän tiliin.'
already_used: '&4Sähköpostiosoite on jo käytössä'
incomplete_settings: 'Virhe: kaikki tarvittavat asetukset eivät ole asetettu sähköpostien lähettämistä varten. Ota yhteyttä ylläpitäjään.'
send_failure: 'Sähköpostia ei voitu lähettää. Ota yhteyttä järjestelmänvalvojaan.'
change_password_expired: 'Et voi enää vaihtaa salasanaa tällä komennolla.'
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
recovery:
@@ -108,50 +110,64 @@ recovery:
command_usage: '&fKäyttötapa: /email recovery <Email>'
email_sent: '[AuthMe] Palautus sähköposti lähetetty!'
code:
# TODO code_sent: 'A recovery code to reset your password has been sent to your email.'
# TODO incorrect: 'The recovery code is not correct! You have %count tries remaining.'
# TODO tries_exceeded: 'You have exceeded the maximum number attempts to enter the recovery code. Use "/email recovery [email]" to generate a new one.'
# TODO correct: 'Recovery code entered correctly!'
# TODO change_password: 'Please use the command /email setpassword <new password> to change your password immediately.'
code_sent: 'Salasanasi palauttamiseksi lähetetty palautuskoodi on lähetetty sähköpostiisi.'
incorrect: 'Palautuskoodi ei ole oikea! Sinulla on %count yritystä jäljellä.'
tries_exceeded: 'Olet ylittänyt enimmäisyritysten määrän palautuskoodin syöttämisessä. Käytä "/email recovery [email]" luodaksesi uuden.'
correct: 'Palautuskoodi syötetty oikein!'
change_password: 'Käytä komentoa /email setpassword <uusi salasana> vaihtaaksesi salasanasi välittömästi.'
# Captcha
captcha:
usage_captcha: '&cKäyttötapa: /captcha %captcha_code'
wrong_captcha: '&cVäärä varmistus, käytä : /captcha %captcha_code'
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'
# TODO register_captcha_valid: '&2Valid captcha! You may now register with /register'
captcha_for_registration: 'Rekisteröityäksesi sinun on ensin ratkaistava captcha, käytä komentoa: /captcha %captcha_code'
register_captcha_valid: '&2Validi captcha! Voit nyt rekisteröityä käyttäen komentoa /register'
# Verification code
verification:
# TODO code_required: '&3This command is sensitive and requires an email verification! Check your inbox and follow the email''s instructions.'
# TODO command_usage: '&cUsage: /verification <code>'
# TODO incorrect_code: '&cIncorrect code, please type "/verification <code>" into the chat, using the code you received by email'
# TODO success: '&2Your identity has been verified! You can now execute all commands within the current session!'
# TODO already_verified: '&2You can already execute every sensitive command within the current session!'
# TODO code_expired: '&3Your code has expired! Execute another sensitive command to get a new code!'
# TODO email_needed: '&3To verify your identity you need to link an email address with your account!!'
code_required: '&3Tämä komento on herkkä ja vaatii sähköpostivahvistuksen! Tarkista sähköpostisi ja seuraa sähköpostin ohjeita.'
command_usage: '&cKäyttö: /verification <koodi>'
incorrect_code: '&cVirheellinen koodi, kirjoita "/verification <koodi>" chatiin, käyttäen koodia, jonka sait sähköpostitse'
success: '&2Henkilöllisyytesi on varmennettu! Voit nyt suorittaa kaikki komennot tämän istunnon aikana!'
already_verified: '&2Voit jo suorittaa jokaisen herkän komennon tämän istunnon aikana!'
code_expired: '&3Koodisi on vanhentunut! Suorita toinen herkkä komento saadaksesi uuden koodin!'
email_needed: '&3Vahvistaaksesi henkilöllisyytesi sinun on liitettävä sähköpostiosoite tilillesi!!'
# Time units
time:
# TODO second: 'second'
# TODO seconds: 'seconds'
# TODO minute: 'minute'
# TODO minutes: 'minutes'
# TODO hour: 'hour'
# TODO hours: 'hours'
# TODO day: 'day'
# TODO days: 'days'
second: 'sekunti'
seconds: 'sekuntia'
minute: 'minuutti'
minutes: 'minuuttia'
hour: 'tunti'
hours: 'tuntia'
day: 'päivä'
days: 'päivää'
# Two-factor authentication
two_factor:
# TODO code_created: '&2Your secret code is %code. You can scan it from here %url'
# TODO confirmation_required: 'Please confirm your code with /2fa confirm <code>'
# TODO code_required: 'Please submit your two-factor authentication code with /2fa code <code>'
# TODO already_enabled: 'Two-factor authentication is already enabled for your account!'
# TODO enable_error_no_code: 'No 2fa key has been generated for you or it has expired. Please run /2fa add'
# TODO enable_success: 'Successfully enabled two-factor authentication for your account'
# TODO enable_error_wrong_code: 'Wrong code or code has expired. Please run /2fa add'
# TODO not_enabled_error: 'Two-factor authentication is not enabled for your account. Run /2fa add'
# TODO removed_success: 'Successfully removed two-factor auth from your account'
# TODO invalid_code: 'Invalid code!'
code_created: '&2Salainen koodisi on %code. Voit skannata sen täältä %url'
confirmation_required: 'Vahvista koodisi komennolla /2fa confirm <koodi>'
code_required: 'Lähetä kaksivaiheisen todennuksen koodisi komennolla /2fa code <koodi>'
already_enabled: 'Kaksivaiheinen todennus on jo käytössä tililläsi!'
enable_error_no_code: 'Sinulle ei ole luotu kaksivaiheisen todennuksen avainta tai se on vanhentunut. Suorita komento /2fa add'
enable_success: 'Kaksivaiheinen todennus onnistuneesti käytössä tililläsi'
enable_error_wrong_code: 'Väärä koodi tai koodi on vanhentunut. Suorita komento /2fa add'
not_enabled_error: 'Kaksivaiheista todennusta ei ole käytössä tililläsi. Suorita komento /2fa add'
removed_success: 'Kaksivaiheinen todennus poistettu tililtäsi onnistuneesti'
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.'
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 !'
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
login:
@@ -60,6 +61,7 @@ unregister:
# Autres messages
misc:
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 !'
logout: '&cVous avez été déconnecté !'
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.'
removed_success: '&cL''authentification à double facteur a été désactivé pour votre compte !'
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.'
+73 -58
View File
@@ -9,17 +9,18 @@ registration:
name_taken: '&cEse nome de usuario xa está rexistrado'
register_request: '&cPor favor, rexístrate con "/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!'
# 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:
match_error: '&fO contrasinal non coincide'
# TODO name_in_password: '&cYou can''t use your name as password, please choose another one...'
# TODO unsafe_password: '&cThe chosen password isn''t safe, please choose another one...'
# TODO forbidden_characters: '&4Your password contains illegal characters. Allowed chars: %valid_chars'
name_in_password: '&cNon podes usar o teu nome como contrasinal, por favor, escolle outro...'
unsafe_password: '&cO contrasinal escollido non é seguro, por favor, escolle outro...'
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'
pwned_password: '&cO contrasinal elixido non é seguro. Foi usado %pwned_count veces xa! Por favor, use un contrasinal forte...'
# Login
login:
@@ -31,8 +32,8 @@ login:
# Errors
error:
# TODO denied_command: '&cIn order to use this command you must be authenticated!'
# TODO denied_chat: '&cIn order to chat you must be authenticated!'
denied_command: '&cPara usar este comando debes estar autenticado!'
denied_chat: '&cPara chatear debes estar autenticado!'
unregistered_user: '&cEse nome de usuario non está rexistrado'
not_logged_in: '&cNon te identificaches!'
no_permission: '&cNon tes o permiso'
@@ -40,12 +41,12 @@ error:
max_registration: '&fExcediches o máximo de rexistros para a túa Conta'
logged_in: '&cXa estás identificado!'
kick_for_vip: '&cUn xogador VIP uniuse ao servidor cheo!'
# TODO kick_unresolved_hostname: '&cAn error occurred: unresolved player hostname!'
# TODO tempban_max_logins: '&cYou have been temporarily banned for failing to log in too many times.'
kick_unresolved_hostname: '&cProduciuse un erro: nome do xogador non resolto!'
tempban_max_logins: '&cEstás temporalmente expulsado por fallar ao acceder en demasiadas ocasións.'
# 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_disabled: '[AuthMe] AntiBotMod desactivouse automáticamente despois de %m minutos, esperemos que a invasión se detivera'
@@ -57,12 +58,13 @@ unregister:
# Other messages
misc:
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!'
logout: '&cSesión pechada con éxito'
reload: '&fRecargáronse a configuración e a base de datos'
usage_change_password: '&fUso: /changepassword <contrasinalVello> <contrasinalNovo>'
# TODO accounts_owned_self: 'You own %count accounts:'
# TODO accounts_owned_other: 'The player %name has %count accounts:'
accounts_owned_self: 'Tes %count contas:'
accounts_owned_other: 'O xogador %name ten %count contas:'
# Session messages
session:
@@ -71,15 +73,15 @@ session:
# Error messages when joining
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'
name_length: '&cO teu nome é demasiado curto ou demasiado longo'
characters_in_name: '&cO teu nome contén caracteres ilegais. Caracteres permitidos: %valid_chars'
kick_full_server: '&cO servidor está actualmente cheo, sentímolo!'
country_banned: 'O teu país está bloqueado neste servidor'
# TODO not_owner_error: 'You are not the owner of this account. Please choose another name!'
# TODO invalid_name_case: 'You should join using username %valid, not %invalid.'
# TODO quick_command: 'You used a command too fast! Please, join the server again and wait more before using any command.'
country_banned: '&4O teu país está prohibido neste servidor!'
not_owner_error: 'Non es o dono desta conta. Por favor, escolle outro nome!'
invalid_name_case: 'Deberías unirte usando o nome de usuario %valid, non %invalid.'
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:
@@ -90,17 +92,16 @@ email:
old_email_invalid: '[AuthMe] O correo vello non é válido!'
invalid: '[AuthMe] Correo non válido'
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!'
changed: '[AuthMe] Cambiouse o correo!'
# TODO change_not_allowed: '&cChanging email was not allowed'
# TODO email_show: '&2Your current email address is: &f%email'
# TODO no_email_for_account: '&2You currently don''t have email address associated with this account.'
# TODO already_used: '&4The email address is already being used'
# TODO incomplete_settings: 'Error: not all required settings are set for sending emails. Please contact an admin.'
# TODO send_failure: 'The email could not be sent. Please contact an administrator.'
# TODO change_password_expired: 'You cannot change your password using this command anymore.'
# TODO email_cooldown_error: '&cAn email was already sent recently. You must wait %time before you can send a new one.'
email_show: '&2O teu enderezo de correo electrónico actual é: &f%email'
no_email_for_account: '&2Actualmente non tes ningún enderezo de correo electrónico asociado con esta conta.'
already_used: '&4O enderezo de correo electrónico xa está a ser usado'
incomplete_settings: 'Erro: non todos os axustes necesarios están configurados para enviar correos electrónicos. Por favor, contacta cun administrador.'
send_failure: 'O correo electrónico non puido ser enviado. Por favor, contacta cun administrador.'
change_password_expired: 'Non podes cambiar o teu contrasinal usando este comando máis.'
email_cooldown_error: '&cUn correo electrónico xa foi enviado recentemente. Debes agardar %time antes de poder enviar un novo.'
# Password recovery by email
recovery:
@@ -108,50 +109,64 @@ recovery:
command_usage: '&fUso: /email recovery <correo>'
email_sent: '[AuthMe] Enviouse o correo de confirmación!'
code:
# TODO code_sent: 'A recovery code to reset your password has been sent to your email.'
# TODO incorrect: 'The recovery code is not correct! You have %count tries remaining.'
# TODO tries_exceeded: 'You have exceeded the maximum number attempts to enter the recovery code. Use "/email recovery [email]" to generate a new one.'
# TODO correct: 'Recovery code entered correctly!'
# TODO change_password: 'Please use the command /email setpassword <new password> to change your password immediately.'
code_sent: 'Enviouse un código de recuperación para restablecer o teu contrasinal ao teu correo electrónico.'
incorrect: 'O código de recuperación non é correcto! Tes %count intentos restantes.'
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.'
correct: 'O código de recuperación foi ingresado correctamente!'
change_password: 'Usa o comando /email setpassword <novo contrasinal> para cambiar o teu contrasinal inmediatamente.'
# Captcha
captcha:
usage_captcha: '&cNecesitas escribir un captcha, por favor escribe: /captcha %captcha_code'
wrong_captcha: '&cCaptcha equivocado, por favor usa: /captcha %captcha_code'
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'
# TODO register_captcha_valid: '&2Valid captcha! You may now register with /register'
captcha_for_registration: 'Para rexistrarte debes resolver un captcha primeiro, por favor, usa o comando: /captcha %captcha_code'
register_captcha_valid: '&2Captcha válido! Agora podes rexistrarte con /register'
# Verification code
verification:
# TODO code_required: '&3This command is sensitive and requires an email verification! Check your inbox and follow the email''s instructions.'
# TODO command_usage: '&cUsage: /verification <code>'
# TODO incorrect_code: '&cIncorrect code, please type "/verification <code>" into the chat, using the code you received by email'
# TODO success: '&2Your identity has been verified! You can now execute all commands within the current session!'
# TODO already_verified: '&2You can already execute every sensitive command within the current session!'
# TODO code_expired: '&3Your code has expired! Execute another sensitive command to get a new code!'
# TODO email_needed: '&3To verify your identity you need to link an email address with your account!!'
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.'
command_usage: '&cUso: /verification <código>'
incorrect_code: '&cCódigo incorrecto, por favor, escribe "/verification <código>" no chat, usando o código que recibiches por correo electrónico'
success: '&2A túa identidade foi verificada! Agora podes executar todos os comandos dentro da sesión actual!'
already_verified: '&2Xa podes executar todos os comandos sensibles dentro da sesión actual!'
code_expired: '&3O teu código caducou! Executa outro comando sensible para obter un novo código!'
email_needed: '&3Para verificar a túa identidade debes vincular un enderezo de correo electrónico á túa conta!!'
# Time units
time:
# TODO second: 'second'
# TODO seconds: 'seconds'
# TODO minute: 'minute'
# TODO minutes: 'minutes'
# TODO hour: 'hour'
# TODO hours: 'hours'
# TODO day: 'day'
# TODO days: 'days'
second: 'segundo'
seconds: 'segundos'
minute: 'minuto'
minutes: 'minutos'
hour: 'hora'
hours: 'horas'
day: 'día'
days: 'días'
# Two-factor authentication
two_factor:
# TODO code_created: '&2Your secret code is %code. You can scan it from here %url'
# TODO confirmation_required: 'Please confirm your code with /2fa confirm <code>'
# TODO code_required: 'Please submit your two-factor authentication code with /2fa code <code>'
# TODO already_enabled: 'Two-factor authentication is already enabled for your account!'
# TODO enable_error_no_code: 'No 2fa key has been generated for you or it has expired. Please run /2fa add'
# TODO enable_success: 'Successfully enabled two-factor authentication for your account'
# TODO enable_error_wrong_code: 'Wrong code or code has expired. Please run /2fa add'
# TODO not_enabled_error: 'Two-factor authentication is not enabled for your account. Run /2fa add'
# TODO removed_success: 'Successfully removed two-factor auth from your account'
# TODO invalid_code: 'Invalid code!'
code_created: '&2O teu código secreto é %code. Podes escanealo desde aquí %url'
confirmation_required: 'Por favor, confirma o teu código con /2fa confirm <código>'
code_required: 'Por favor, envía o teu código de autenticación en dous pasos con /2fa code <código>'
already_enabled: 'A autenticación en dous pasos xa está activada para a túa conta!'
enable_error_no_code: 'Non se xerou ningún clave 2fa para ti ou caducou. Por favor, executa /2fa add'
enable_success: 'Autenticación en dous pasos activada con éxito para a túa conta'
enable_error_wrong_code: 'Código incorrecto ou caducado. Por favor, executa /2fa add'
not_enabled_error: 'A autenticación en dous pasos non está activada para a túa conta. Executa /2fa add'
removed_success: 'Autenticación en dous pasos eliminada con éxito da túa conta'
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.'
+17 -1
View File
@@ -20,6 +20,7 @@ password:
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'
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:
@@ -40,7 +41,7 @@ error:
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!'
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!'
# AntiBot
@@ -57,6 +58,7 @@ unregister:
# Other messages
misc:
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!'
logout: '&cSikeresen kijelentkeztél!'
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'
removed_success: 'Sikeresen eltávolítottad a fiók két számjegyű hitelesítőjét'
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.'
+24 -9
View File
@@ -9,7 +9,7 @@ registration:
name_taken: '&cKamu telah mendaftarkan username ini!'
register_request: '&3Silahkan mendaftar ke server menggunakan perintah "/register <password> <ulangiPassword>"'
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!'
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!'
logged_in: '&cKamu telah login!'
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.'
# AntiBot
@@ -57,6 +57,7 @@ unregister:
# Other messages
misc:
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!'
logout: '&2Berhasil logout!'
reload: '&2Konfigurasi dan database telah dimuat ulang!'
@@ -124,13 +125,13 @@ captcha:
# Verification code
verification:
# TODO code_required: '&3This command is sensitive and requires an email verification! Check your inbox and follow the email''s instructions.'
# TODO command_usage: '&cUsage: /verification <code>'
# TODO incorrect_code: '&cIncorrect code, please type "/verification <code>" into the chat, using the code you received by email'
# TODO success: '&2Your identity has been verified! You can now execute all commands within the current session!'
# TODO already_verified: '&2You can already execute every sensitive command within the current session!'
# TODO code_expired: '&3Your code has expired! Execute another sensitive command to get a new code!'
# TODO email_needed: '&3To verify your identity you need to link an email address with your account!!'
code_required: '&3Perintah ini sensitif dan memerlukan verifikasi email! Periksa kotak masuk Anda dan ikuti petunjuk email.'
command_usage: '&cPenggunaan: /verification <kode>'
incorrect_code: '&cKode salah, ketik "/verification <kode>" di chat, menggunakan kode yang Anda terima melalui email'
success: '&2Identitas Anda telah diverifikasi! Anda sekarang dapat menjalankan semua perintah dalam sesi saat ini!'
already_verified: '&2Anda sudah dapat menjalankan setiap perintah sensitif dalam sesi saat ini!'
code_expired: '&3Kode Anda telah kedaluwarsa! Jalankan perintah sensitif lain untuk mendapatkan kode baru!'
email_needed: '&3Untuk memverifikasi identitas Anda, Anda perlu menyambungkan alamat email dengan akun Anda!!'
# Time units
time:
@@ -155,3 +156,17 @@ two_factor:
not_enabled_error: 'Autentikasi dua langkah tidak diaktifkan untuk akunmu. Jalankan /2fa add'
removed_success: 'Sukses menghapus autentikasi dua langkah dari akunmu'
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.'
+17 -1
View File
@@ -10,7 +10,7 @@ registration:
name_taken: '&cHai già eseguito la registrazione!'
register_request: '&3Per favore, esegui la registrazione con il comando: /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!'
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...'
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...'
pwned_password: '&cLa password scelta non è sicura. È stata già utilizzata %pwned_count volte! Si prega di utilizzare una password sicura...'
# Login
login:
@@ -58,6 +59,7 @@ unregister:
# Other messages
misc:
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!'
logout: '&2Disconnessione avvenuta 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'
removed_success: 'Autenticazione a 2 fattori rimossa correttamente'
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.'
+48 -31
View File
@@ -5,13 +5,13 @@
# Registration
registration:
register_request: '&3サーバーに登録するには、次のコマンドを使用してください: /register <パスワード> <パスワードの確認>'
command_usage: '&c使用方法: /register <パスワード> <パスワードの確認>'
reg_only: '&4登録済みのユーザーのみサーバーに参加できます! 自分自身を登録するには、http://example.com にアクセスしてください!'
kicked_admin_registered: '管理者があなたを登録しました。再度ログインしてください。'
success: '&2登録が完了しました!'
disabled: '&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:
@@ -20,6 +20,7 @@ password:
unsafe_password: '&c選択したパスワードは安全ではありません。別のパスワードを選択してください...'
forbidden_characters: '&4パスワードに不正な文字が含まれています。許可されている文字: %valid_chars'
wrong_length: '&cパスワードが短すぎるか長すぎます!別のパスワードを試してください!'
pwned_password: '&c選択されたパスワードは安全ではありません。すでに %pwned_count 回使用されています!強力なパスワードを使用してください...'
# Login
login:
@@ -31,17 +32,17 @@ login:
# Errors
error:
unregistered_user: '&cこのユーザーは登録されていません!'
denied_command: '&cこのコマンドを使用するには認証が必要です!'
denied_chat: '&cチャットするには認証が必要です!'
unregistered_user: '&cこのユーザーは登録されていません!'
not_logged_in: '&cログインしていません!'
tempban_max_logins: '&cログインに失敗した回数が多すぎるため、一時的にアクセスが制限されています。'
max_registration: '&c接続ごとの登録数が最大値を超えています(%reg_count/%max_acc %reg_names)!'
no_permission: '&4この操作を実行する権限がありません!'
unexpected_error: '&4予期しないエラーが発生しました。管理者に連絡してください!'
kick_for_vip: '&3VIPプレイヤーがサーバーが満員の状態で参加しました'
max_registration: '&c接続ごとの登録数が最大値を超えています(%reg_count/%max_acc %reg_names'
logged_in: '&cすでにログイン済みです!'
kick_for_vip: '&3VIPプレイヤーがサーバーが満員の状態で参加しました!'
kick_unresolved_hostname: '&cエラーが発生しました:解決できないプレイヤーのホスト名!'
tempban_max_logins: '&cログインに失敗した回数が多すぎるため、一時的にアクセスが制限されています。'
# AntiBot
antibot:
@@ -49,57 +50,59 @@ antibot:
auto_enabled: '&4[AntiBotService] 接続数が非常に多いため、AntiBotが有効になりました!'
auto_disabled: '&2[AntiBotService] %m 分後にAntiBotが無効になりました!'
# Unregister
unregister:
success: '&c登録が正常に解除されました!'
command_usage: '&c使用方法: /unregister <パスワード>'
# Other messages
misc:
accounts_owned_self: '所持しているアカウント数:%count 個'
accounts_owned_other: 'プレイヤー %name のアカウント数:%count 個'
account_not_activated: '&cアカウントはまだ有効化されていません。メールを確認してください!'
not_activated: '&cアカウントは有効化されていません。再試行する前に登録してアクティブ化してください。'
password_changed: '&2パスワードが正常に変更されました!'
logout: '&2正常にログアウトしました!'
reload: '&2設定とデータベースが正常に再読み込みされました!'
usage_change_password: '&c使用方法: /changepassword <旧パスワード> <新パスワード>'
accounts_owned_self: '所持しているアカウント数:%count 個'
accounts_owned_other: 'プレイヤー %name のアカウント数:%count 個'
# Session messages
session:
invalid_session: '&cIPアドレスが変更され、セッションのデータが期限切れです!'
valid_session: '&2セッションの再接続によるログインです。'
invalid_session: '&cIPアドレスが変更され、セッションのデータが期限切れです!'
# Error messages when joining
on_join_validation:
same_ip_online: '同じIPアドレスを持つプレイヤーが既にゲーム内にいます!'
same_nick_online: '&4同じユーザー名のプレイヤーが既にサーバーでプレイしています!'
name_length: '&4ユーザー名が短すぎるか長すぎます!'
characters_in_name: '&4ユーザー名に無効な文字が含まれています。許可される文字:%valid_chars'
kick_full_server: '&4サーバーが満員です。後でもう一度お試しください!'
country_banned: '&4このサーバーへのアクセスは、お使いの国から制限されています!'
not_owner_error: 'このアカウントの所有者ではありません。別の名前を選択してください!'
kick_full_server: '&4サーバーが満員です。後でもう一度お試しください!'
same_nick_online: '&4同じユーザー名のプレイヤーが既にサーバーでプレイしています!'
invalid_name_case: '正しいユーザー名は %valid です。%invalid ではなく、このユーザー名で参加してください。'
same_ip_online: '同じIPアドレスを持つプレイヤーが既にゲーム内にいます!'
quick_command: 'コマンドを速すぎる速度で使用しました!もう一度サーバーに参加してから、コマンドを使用する前にしばらくお待ちください。'
# Email
email:
add_email_request: '&3コマンド「/email add <あなたのメールアドレス> <確認用メールアドレス>」を使用して、アカウントにメールアドレスを追加してください。'
usage_email_add: '&c使用方法:/email add <メールアドレス> <メールアドレスの確認>'
usage_email_change: '&c使用方法:/email change <古いメールアドレス> <新しいメールアドレス>'
new_email_invalid: '&c無効な新しいメールアドレスです。もう一度やり直してください!'
old_email_invalid: '&c無効な古いメールアドレスです。もう一度やり直してください!'
invalid: '&c無効なメールアドレスです。もう一度やり直してください!'
added: '&2メールアドレスがアカウントに正常に追加されました!'
add_not_allowed: '&cメールアドレスの追加は許可されていません。'
request_confirmation: '&cメールアドレスを確認してください!'
changed: '&2メールアドレスが正しく変更されました!'
change_not_allowed: '&cメールアドレスの変更は許可されていません。'
email_show: '&2現在のメールアドレスは:%email'
incomplete_settings: 'エラー:メールの送信に必要なすべての設定が設定されていません。管理者に連絡してください。'
already_used: '&4そのメールアドレスは既に使用されています'
send_failure: 'メールを送信できませんでした。管理者に連絡してください。'
no_email_for_account: '&2現在、このアカウントに関連付けられたメールアドレスはありません。'
add_email_request: '&3コマンド「/email add <あなたのメールアドレス> <確認用メールアドレス>」を使用して、アカウントにメールアドレスを追加してください。'
already_used: '&4そのメールアドレスは既に使用されています'
incomplete_settings: 'エラー:メールの送信に必要なすべての設定が設定されていません。管理者に連絡してください。'
send_failure: 'メールを送信できませんでした。管理者に連絡してください。'
change_password_expired: 'このコマンドを使用してパスワードを変更することはできません。'
email_cooldown_error: '&c最近すでにメールが送信されています。新しいメールを送信する前に、%time 待つ必要があります。'
add_not_allowed: '&cメールアドレスの追加は許可されていません。'
change_not_allowed: '&cメールアドレスの変更は許可されていません。'
# Password recovery by email
recovery:
@@ -131,6 +134,17 @@ verification:
code_expired: '&3コードの有効期限が切れています!新しいコードを取得するには、別のセンシティブなコマンドを実行してください!'
email_needed: '&3アカウントにはメールアドレスのリンクが必要です。身元を確認するためにはメールアドレスを関連付けてください!'
# Time units
time:
second: '秒'
seconds: '秒'
minute: '分'
minutes: '分'
hour: '時間'
hours: '時間'
day: '日'
days: '日'
# Two-factor authentication
two_factor:
code_created: '&2秘密コードは %code です。こちらからスキャンできます:%url'
@@ -144,13 +158,16 @@ two_factor:
removed_success: 'アカウントから二要素認証が正常に削除されました'
invalid_code: '無効なコードです!'
# Time units
time:
second: ''
seconds: '秒'
minute: '分'
minutes: '分'
hour: '時間'
hours: '時間'
day: ''
days: '日'
# 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二重ログインのため、切断されました。'
+17 -1
View File
@@ -22,6 +22,7 @@ password:
unsafe_password: '&c이 비밀번호는 안전하지 않습니다, 다른 비밀번호를 사용하세요...'
forbidden_characters: '&4비밀번호에 잘못된 문자가 있습니다. 허용된 문자: %valid_chars'
wrong_length: '&c비밀번호가 너무 짧거나 너무 깁니다!'
pwned_password: '&c선택한 비밀번호가 안전하지 않습니다. 이미 %pwned_count 번 사용되었습니다! 강력한 비밀번호를 사용하세요...'
# Login
login:
@@ -42,7 +43,7 @@ error:
max_registration: '&c당신은 가입할 수 있는 계정 한도를 초과했습니다 (%reg_count/%max_acc %reg_names)!'
logged_in: '&c이미 로그인되어 있습니다!'
kick_for_vip: '&3서버가 꽉 차있을 때는 VIP 플레이어만 접속이 가능합니다!'
# TODO kick_unresolved_hostname: '&cAn error occurred: unresolved player hostname!'
kick_unresolved_hostname: '&c오류 발생: 확인되지 않은 플레이어 호스트 이름!'
tempban_max_logins: '&c너무 많이 로그인에 실패하여 잠시 서버에서 차단되었습니다.'
# AntiBot
@@ -59,6 +60,7 @@ unregister:
# Other messages
misc:
account_not_activated: '&c계정이 아직 활성화되지 않았습니다. 이메일을 확인해보세요!'
not_activated: '&c계정이 활성화되지 않았습니다. 다시 시도하기 전에 등록하고 활성화하세요.'
password_changed: '&2비밀번호가 변경되었습니다!'
logout: '&2로그아웃 되었습니다!'
reload: '&2설정과 데이터 베이스가 새로고침 되었습니다!'
@@ -157,3 +159,17 @@ two_factor:
not_enabled_error: '2단계 인증 기능을 활성화하시지 않았습니다. /2fa add 명령어를 통해 활성화해주세요.'
removed_success: '2단계 인증 기능을 성공적으로 비활성화하였습니다.'
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중복 로그인으로 인해 연결이 종료되었습니다.'
+17 -1
View File
@@ -9,7 +9,7 @@ registration:
name_taken: '&cVartotojo vardas jau užregistruotas'
register_request: '&ePrašome prisiregistruoti: /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.'
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į'
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.'
pwned_password: '&cJūsų pasirinktas slaptažodis nėra saugus. Jis buvo naudotas %pwned_count kartų! Prašome naudoti stiprų slaptažodį...'
# Login
login:
@@ -57,6 +58,7 @@ unregister:
# Other messages
misc:
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'
logout: '&aSėkmingai atsijungėte'
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'
removed_success: 'Dviejų faktorių autentifikavimas sėkmingai pašalintas iš jūsų paskyros.'
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.'
+17 -1
View File
@@ -9,7 +9,7 @@ registration:
name_taken: '&cJe hebt deze gebruikersnaam al geregistreerd!'
register_request: '&cRegistreer met het commando: /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!'
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...'
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...'
pwned_password: '&cHet gekozen wachtwoord is niet veilig. Het is al %pwned_count keer gebruikt! Gebruik alstublieft een sterk wachtwoord...'
# Login
login:
@@ -57,6 +58,7 @@ unregister:
# Other messages
misc:
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!'
logout: '&2Je bent succesvol uitgelogd!'
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'
removed_success: 'Twee-factor authenticatie is met succes van jouw account verwijderd.'
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...'
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...'
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:
@@ -57,6 +58,7 @@ unregister:
# Other messages
misc:
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!'
logout: '&cPomyślnie wylogowany'
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'
removed_success: '&aPomyślnie usunięto weryfikacje dwuetapową z Twojego konta.'
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.'
+17 -1
View File
@@ -9,7 +9,7 @@ registration:
name_taken: '&cUtilizador já registado'
register_request: '&cPor favor registe-se com "/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!'
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 ...'
forbidden_characters: '&4Sua senha contém caracteres ilegais. Caracteres permitidos: %valid_chars'
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:
@@ -57,6 +58,7 @@ unregister:
# Other messages
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. '
not_activated: '&cConta não ativada, por favor, registre-se e ative antes de tentar novamente.'
password_changed: '&cPassword alterada!'
logout: '&cSaida com sucesso'
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'
removed_success: 'Autenticação de duas etapas removida com sucesso da sua conta'
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.'
+47 -31
View File
@@ -5,13 +5,13 @@
# 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!'
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:
@@ -20,6 +20,7 @@ password:
unsafe_password: '&cParola aleasa nu este sigura. Te rugam sa folosesti alta parola...'
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!'
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:
@@ -31,17 +32,17 @@ login:
# Errors
error:
unregistered_user: '&cAcest jucator nu este inregistrat!'
denied_command: '&cPentru a utiliza aceasta comanda 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!'
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!'
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!'
kick_for_vip: '&3Un VIP a intrat pe server cand era plin!'
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:
@@ -55,51 +56,52 @@ unregister:
# Other messages
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!'
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!'
logout: '&2Te-ai deconectat cu succes!'
reload: '&2Configuratiile si baza de date s-au reincarcat corect!'
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:
invalid_session: '&cIP-ul tau a fost schimbat si sesiunea ta a expirat!'
valid_session: '&2Conectat datorita reconectarii sesiunii.'
invalid_session: '&cIP-ul tau a fost schimbat si sesiunea ta a expirat!'
# Error messages when joining
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!'
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!'
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'
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.'
# 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_change: '&cFoloseste comanda: /email change <EmailVechi> <EmailNou>'
new_email_invalid: '&cNoul email este nevalid, incearca din nou!'
old_email_invalid: '&cEmail-ul vechi este nevalid, incearca din nou!'
invalid: '&cEmail-ul este nevalid, incearca din nou!'
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!'
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'
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.'
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.'
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
recovery:
@@ -131,6 +133,17 @@ verification:
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!!'
# Time units
time:
second: 'secunda'
seconds: 'secunde'
minute: 'minut'
minutes: 'minute'
hour: 'ora'
hours: 'ore'
day: 'zi'
days: 'zile'
# Two-factor authentication
two_factor:
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'
invalid_code: 'Cod invalid!'
# Time units
time:
second: 'secunda'
seconds: 'secunde'
minute: 'minut'
minutes: 'minute'
hour: 'ora'
hours: 'ore'
day: 'zi'
days: 'zile'
# 3rd party features: Bedrock Auto Login
bedrock_auto_login:
success: '&aAutentificare automată Bedrock reușită!'
# 3rd party features: Login Location Fix
login_location_fix:
fix_portal: '&aSunteți blocat în portal în timpul autentificării.'
fix_underground: '&aSunteți blocat sub pământ în timpul autentificării.'
cannot_fix_underground: '&aSunteți blocat sub pământ în timpul autentificării, dar nu putem remedia.'
# 3rd party features: Double Login Fix
double_login_fix:
fix_message: '&cAți fost deconectat din cauza unei autentificări duble.'
+23 -3
View File
@@ -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:
disabled: '&cРегистрация отключена.'
name_taken: '&cИгрок с таким никнеймом уже зарегистрирован.'
register_request: '&3Регистрация: /reg <пароль> <повтор пароля>'
command_usage: '&cИспользование: /reg <пароль> <повтор пароля>'
reg_only: '&4Вход только для зарегистрированных! Посетите http://сайт_сервера.ru для регистрации.'
reg_only: '&4Вход только для зарегистрированных! Посетите https://сайт_сервера.ru для регистрации.'
success: '&2Вы успешно зарегистрировались!'
kicked_admin_registered: 'Администратор зарегистрировал вас. Авторизуйтесь снова.'
@@ -15,6 +20,7 @@ password:
unsafe_password: '&cТакой пароль небезопасен.'
forbidden_characters: '&4Пароль содержит запрещённые символы. Разрешённые: %valid_chars'
wrong_length: '&cПароль слишком длинный/короткий.'
pwned_password: '&cВыбранный вами пароль небезопасен. Он уже был использован %pwned_count раз! Пожалуйста, используйте надежный пароль...'
# Login
login:
@@ -44,7 +50,6 @@ antibot:
auto_enabled: '&4[AuthMe] AntiBot-режим включился из-за большого количества входов!'
auto_disabled: '&2[AuthMe] AntiBot-режим отключился спустя %m мин.'
# Unregister
unregister:
success: '&cУчётная запись успешно удалена!'
command_usage: '&cИспользование: /unregister <пароль>'
@@ -52,8 +57,9 @@ unregister:
# Other messages
misc:
account_not_activated: '&cВаша уч. запись ещё не активирована. Проверьте электронную почту!'
not_activated: '&cАккаунт не активирован, пожалуйста, зарегистрируйтесь и активируйте его перед повторной попыткой.'
password_changed: '&2Ваш пароль изменён!'
logout: '&2Вы успешно вышли.'
logout: '&2Успешно вышли из системы!'
reload: '&6Конфигурация и база данных перезагружены.'
usage_change_password: '&cИспользование: /changepassword <пароль> <новый пароль>'
accounts_owned_self: 'У вас %count уч. записей:'
@@ -150,3 +156,17 @@ two_factor:
not_enabled_error: 'Двухфакторная аутентификация не включена для вашего аккаунта. Введите /2fa add'
removed_success: 'Двухфакторная аутентификация успешно удалена с вашего аккаунта!'
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Вы были отключены из-за двойного входа.'
+18 -2
View File
@@ -9,7 +9,7 @@ registration:
name_taken: '&cTo uporabniško ime ste ze registrirali!'
register_request: '&3Registrirajte se z ukazom "/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!'
kicked_admin_registered: 'Administrator vas je registriral; prosimo, da se prijavite.'
@@ -20,6 +20,7 @@ password:
unsafe_password: '&cIzbrano geslo ni varno, izberite drugo...'
forbidden_characters: '&4Vaše geslo vsebuje nedovoljene znake. Dovoljeni znaki: %valid_chars'
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:
@@ -40,7 +41,7 @@ error:
max_registration: '&cPresegli ste največjo stevilo registracij (%reg_count/%max_acc %reg_names) za vašo povezavo!'
logged_in: '&cSte že povezani!'
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.'
# AntiBot
@@ -57,6 +58,7 @@ unregister:
# Other messages
misc:
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!'
logout: '&2Odjavljeni uspesno!'
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'
removed_success: 'Usprešno ste odstranili dvo stopično prijavo za vaš račun.'
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.'
+39 -23
View File
@@ -15,7 +15,7 @@ registration:
name_taken: '&cZadané meno je už zaregistrované.'
register_request: '&cZaregistruj sa príkazom "/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ý.'
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é...'
forbidden_characters: '&4Tvoje heslo obsahuje zakázané znaky. Povolené znaky: %valid_chars'
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:
@@ -46,7 +47,7 @@ error:
max_registration: '&fPrekročil si maximum registrovaných účtov(%reg_count/%max_acc|%reg_names).'
logged_in: '&cAktuálne si už prihlásený!'
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.'
# AntiBot
@@ -63,6 +64,7 @@ unregister:
# Other messages
misc:
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é!'
logout: '&cBol si úspešne odhlásený.'
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!'
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á.'
# 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:
@@ -96,10 +98,10 @@ email:
old_email_invalid: '&cNeplatný starý email, skús to znovu!'
invalid: '&cNeplatná emailová adresa, skús to znovu!'
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!'
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'
no_email_for_account: '&2Momentálne nemáš emailovú adresu spojenú s týmto účtom.'
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'
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!'
# TODO captcha_for_registration: 'To register you have to solve a captcha first, please use the command: /captcha %captcha_code'
# TODO register_captcha_valid: '&2Valid captcha! You may now register with /register'
captcha_for_registration: 'Ak sa chcete zaregistrovať, musíte najskôr vyriešiť captcha, prosím, použite príkaz: /captcha %captcha_code'
register_captcha_valid: '&2Platná captcha! Teraz sa môžete zaregistrovať pomocou /register'
# Verification code
verification:
# TODO code_required: '&3This command is sensitive and requires an email verification! Check your inbox and follow the email''s instructions.'
# TODO command_usage: '&cUsage: /verification <code>'
# TODO incorrect_code: '&cIncorrect code, please type "/verification <code>" into the chat, using the code you received by email'
# TODO success: '&2Your identity has been verified! You can now execute all commands within the current session!'
# TODO already_verified: '&2You can already execute every sensitive command within the current session!'
# TODO code_expired: '&3Your code has expired! Execute another sensitive command to get a new code!'
# TODO email_needed: '&3To verify your identity you need to link an email address with your account!!'
code_required: '&3Tento príkaz je citlivý a vyžaduje overenie emailom! Skontrolujte svoju schránku a postupujte podľa pokynov v emaile.'
command_usage: '&cPoužitie: /verification <code>'
incorrect_code: '&cNesprávny kód, prosím, zadajte "/verification <code>" do chatu, pomocou kódu, ktorý ste dostali emailom'
success: '&2Vaša identita bola overená! Teraz môžete vykonávať všetky príkazy v rámci aktuálnej relácie!'
already_verified: '&2Už môžete vykonávať každý citlivý príkaz v rámci aktuálnej relácie!'
code_expired: '&3Váš kód vypršal! Vykonajte ďalší citlivý príkaz na získanie nového kódu!'
email_needed: '&3Na overenie vašej identity potrebujete prepojiť emailovú adresu so svojím účtom!!'
# Time units
time:
@@ -152,12 +154,26 @@ time:
# Two-factor authentication
two_factor:
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>'
# TODO code_required: 'Please submit your two-factor authentication code with /2fa code <code>'
# TODO already_enabled: 'Two-factor authentication is already enabled for your account!'
# TODO enable_error_no_code: 'No 2fa key has been generated for you or it has expired. Please run /2fa add'
# TODO enable_success: 'Successfully enabled two-factor authentication for your account'
# TODO enable_error_wrong_code: 'Wrong code or code has expired. Please run /2fa add'
# TODO not_enabled_error: 'Two-factor authentication is not enabled for your account. Run /2fa add'
# TODO removed_success: 'Successfully removed two-factor auth from your account'
# TODO invalid_code: 'Invalid code!'
confirmation_required: 'Prosím, potvrďte svoj kód pomocou /2fa confirm <code>'
code_required: 'Prosím, zadajte svoj dvojfaktorový autentifikačný kód pomocou /2fa code <code>'
already_enabled: 'Dvojfaktorová autentifikácia je už pre váš účet povolená!'
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'
enable_success: 'Dvojfaktorová autentifikácia bola úspešne povolená pre váš účet'
enable_error_wrong_code: 'Nesprávny kód alebo kód vypršal. Prosím, použite príkaz /2fa add'
not_enabled_error: 'Dvojfaktorová autentifikácia nie je pre váš účet povolená. Použite príkaz /2fa add'
removed_success: 'Dvojfaktorová autentifikácia bola úspešne odstránená z vášho účtu'
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.'
+18 -2
View File
@@ -9,7 +9,7 @@ registration:
name_taken: '&cKorisnik je već registrovan!'
register_request: '&3Molimo Vas, registrujte se na server komandom: /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!'
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...'
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!'
pwned_password: '&cVaša izabrana lozinka nije sigurna. Već je korišćena %pwned_count puta! Molimo koristite jaku lozinku...'
# Login
login:
@@ -40,7 +41,7 @@ error:
max_registration: '&cDostigli ste maksimalan broj registracija (%reg_count/%max_acc %reg_names) za vaše povezivanje!'
logged_in: '&cVeć ste ulogovani!'
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.'
# AntiBot
@@ -57,6 +58,7 @@ unregister:
# Other messages
misc:
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!'
logout: '&2Uspešno ste se odlogovali!'
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'
removed_success: 'Uspešno ste uklonili dvo-faktornu autentifikaciju sa vašeg naloga'
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.'
+17 -1
View File
@@ -9,7 +9,7 @@ registration:
name_taken: '&cSenin adinda daha once birisi kaydolmus!'
register_request: '&3Lutfen kayit komutunu kullanin "/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!'
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...'
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!'
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:
@@ -57,6 +58,7 @@ unregister:
# Other messages
misc:
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!'
logout: '&2Basariyla cikis yaptin!'
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'
removed_success: 'Iki-faktorlu dogrulama hesabinizdan basariyla kaldirilmistir'
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.'
+18 -2
View File
@@ -9,7 +9,7 @@ registration:
name_taken: '&cТакий нікнейм вже зареєстровано.'
register_request: '&3Перш ніж почати гру, вам потрібно зареєструвати свій нікнейм!%nl%&3Для цього просто введіть команду "/register <пароль> <повторПароля>"'
command_usage: '&cСинтаксис: /register <пароль> <повторПароля>'
reg_only: '&4Лише зареєстровані гравці можуть підключатись до сервера!%nl%&4Будь ласка, відвідайте http://example.com для реєстрації.'
reg_only: '&4Лише зареєстровані гравці можуть підключатись до сервера!%nl%&4Будь ласка, відвідайте https://example.com для реєстрації.'
success: '&2Реєстрація пройшла успішно!'
kicked_admin_registered: 'Адміністратор вас зареєстрував; Будь ласка, авторизуйтесь знову!'
@@ -20,6 +20,7 @@ password:
unsafe_password: '&cЦей пароль надто простий! Будь ласка, придумайте інакший...'
forbidden_characters: '&4Ваш пароль містить недопустимі символи. Підберіть інакший...%nl%&4(Reg-ex: %valid_chars)'
wrong_length: '&cВаш пароль надто короткий або надто довгий! Спробуйте інакший...'
pwned_password: '&cВаш вибраний пароль небезпечний. Він вже використовувався %pwned_count разів! Будь ласка, використовуйте надійний пароль...'
# Login
login:
@@ -57,6 +58,7 @@ unregister:
# Other messages
misc:
account_not_activated: '&cВаш акаунт ще не активовано. Будь ласка, провірте свою електронну пошту!'
not_activated: '&cАкаунт не активовано, будь ласка, зареєструйтесь і активуйте його перед повторною спробою.'
password_changed: '&2Пароль успішно змінено!'
logout: '&2Ви вийшли зі свого акаунта!'
reload: '&2Конфігурації та базу даних було успішно перезавантажено!'
@@ -76,7 +78,7 @@ on_join_validation:
name_length: '&4Ваш нікнейм надто короткий або надто довгий!'
characters_in_name: '&4Ваш нікнейм містить недопустимі символи! Reg-ex: %valid_chars'
kick_full_server: '&4Сервер переповнено! Доведеться зачекати доки хтось вийде.'
country_banned: '&4Your country is banned from this server!'
country_banned: '&4Ваша країна заборонена на цьому сервері!'
not_owner_error: 'Цей акаунт вам не належить! Будь ласка, оберіть інакший нікнейм!'
invalid_name_case: 'Регістр у вашому нікнеймі відрізняється від регістру при реєстрації.%nl%Поточний регістр: &c%invalid&f. Валідний регістр: &a%valid&f.%nl%Будь ласка, перезайдіть з валідним регістром!'
quick_command: 'Ви занадто швидко використовували команду! Будь ласка, приєднайтесь знову до сервера і почекайте, перш ніж використовувати будь-яку команду.'
@@ -155,3 +157,17 @@ two_factor:
not_enabled_error: 'Двофакторна аутентифікація не включена для вашого акаунту. Використовуйте: /2fa add'
removed_success: 'Двофакторну авторизацію успішно видалено з вашого акаунту'
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Вас відключено через подвійний вхід.'
+16 -1
View File
@@ -9,7 +9,7 @@ registration:
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>"'
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!'
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...'
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!'
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:
@@ -57,6 +58,7 @@ unregister:
# Other messages
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!'
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!'
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!'
@@ -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'
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双重验证已从您的账号上禁用'
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
bedrock_auto_login:
success: "&a基岩版自动登录完成"
@@ -190,5 +179,3 @@ login_location_fix:
# 3rd party features: Double Login Fix
double_login_fix:
fix_message: '&a已修复幽灵玩家, 请重新进入'

Some files were not shown because too many files have changed in this diff Show More