Compare commits

...
85 Commits
Author SHA1 Message Date
Minat0_ fce8399840 GitBook: [#66] [DiscordSRV] Updated to relevant | English 2022-08-17 01:12:37 +00:00
Minat0_ cc2fc201fe GitBook: [tuerkce] 15 pages modified 2021-08-30 16:39:59 +00:00
Minat0_ 373f41f9ee GitBook: [tuerkce] no pages and one asset modified 2021-08-30 16:20:48 +00:00
Minat0_ f1e4bbf043 GitBook: [tuerkce] 15 pages and one asset modified 2021-08-30 15:45:06 +00:00
Minat0_ b902f5f71d GitBook: [tuerkce] no pages and 6 assets modified 2021-08-30 15:13:27 +00:00
Minat0_ 6461b5bc8c GitBook: [tuerkce] no pages and 2 assets modified 2021-07-06 15:54:35 +00:00
Minat0_ 169ebe543e GitBook: [tuerkce] no pages and 2 assets modified 2021-07-06 15:30:59 +00:00
Minat0_ 6018c793d4 GitBook: [tuerkce] no pages and 2 assets modified 2021-07-05 10:04:52 +00:00
Minat0_ ded9077dda GitBook: [tuerkce] 15 pages modified 2021-07-02 17:06:41 +00:00
mehmet yılmaz 0dd519dabd GitBook: [tuerkce] 16 pages modified 2021-06-24 20:47:17 +00:00
mehmet yılmaz 9563fc383c GitBook: [tuerkce] one page modified 2021-06-24 20:24:32 +00:00
mehmet yılmaz 846574e613 GitBook: [tuerkce] one page modified 2021-06-24 20:24:15 +00:00
mehmet yılmaz cd40fdc704 GitBook: [tuerkce] 16 pages modified 2021-06-24 20:18:35 +00:00
mehmet yılmaz 7f01696a56 GitBook: [tuerkce] 15 pages modified 2021-06-24 19:54:39 +00:00
mehmet yılmaz 52da3def88 GitBook: [tuerkce] 16 pages modified 2021-06-24 19:43:35 +00:00
mehmet yılmaz baea60473a GitBook: [tuerkce] 15 pages modified 2021-06-24 19:10:13 +00:00
mehmet yılmaz 4d6d2b550a GitBook: [tuerkce] 2 pages and one asset modified 2021-06-24 18:59:38 +00:00
mehmet yılmaz ae99204f58 GitBook: [tuerkce] one page modified 2021-06-24 18:41:02 +00:00
mehmet yılmaz 03e95cfa23 GitBook: [tuerkce] one page modified 2021-06-24 18:35:56 +00:00
mehmet yılmaz 25f854b155 GitBook: [tuerkce] one page modified 2021-06-24 18:34:21 +00:00
mehmet yılmaz a32c751aaa GitBook: [tuerkce] one page modified 2021-06-24 18:31:58 +00:00
mehmet yılmaz e212e17bef GitBook: [tuerkce] one page modified 2021-06-24 18:26:26 +00:00
mehmet yılmaz 4a7036cd82 GitBook: [tuerkce] 7 pages modified 2021-06-24 18:15:07 +00:00
mehmet yılmaz d7d7620c24 GitBook: [tuerkce] 4 pages modified 2021-06-24 17:55:35 +00:00
mehmet yılmaz 3d545acda5 GitBook: [tuerkce] 2 pages modified 2021-06-24 17:54:20 +00:00
Edson Passos 1d5a8beb3d Merge pull request #181 from RoinujNosde/dev
v2.15.2
2021-04-30 19:37:51 -03:00
RoinujNosde 82a14a8f24 Probably fixes kick command #180 2021-04-30 19:25:44 -03:00
RoinujNosde d07ff8aa17 Bump version 2021-04-30 19:18:28 -03:00
RoinujNosde 855927e1cd Fixes merge problem 2021-04-30 19:17:39 -03:00
RoinujNosde a67beb0fda Merge remote-tracking branch 'origin/master' into dev
# Conflicts:
#	src/main/java/net/sacredlabyrinth/phaed/simpleclans/Clan.java
#	src/main/java/net/sacredlabyrinth/phaed/simpleclans/commands/SCCommandManager.java
#	src/main/java/net/sacredlabyrinth/phaed/simpleclans/events/DeleteRankEvent.java
#	src/main/resources/messages.properties
#	src/main/resources/messages_af_ZA.properties
#	src/main/resources/messages_ar_SA.properties
#	src/main/resources/messages_ca_ES.properties
#	src/main/resources/messages_cs_CZ.properties
#	src/main/resources/messages_da_DK.properties
#	src/main/resources/messages_de_DE.properties
#	src/main/resources/messages_el_GR.properties
#	src/main/resources/messages_es_ES.properties
#	src/main/resources/messages_fi_FI.properties
#	src/main/resources/messages_fr_FR.properties
#	src/main/resources/messages_he_IL.properties
#	src/main/resources/messages_hu_HU.properties
#	src/main/resources/messages_it_IT.properties
#	src/main/resources/messages_ja_JP.properties
#	src/main/resources/messages_ko_KR.properties
#	src/main/resources/messages_nl_NL.properties
#	src/main/resources/messages_no_NO.properties
#	src/main/resources/messages_pl_PL.properties
#	src/main/resources/messages_pt_BR.properties
#	src/main/resources/messages_pt_PT.properties
#	src/main/resources/messages_ro_RO.properties
#	src/main/resources/messages_ru_RU.properties
#	src/main/resources/messages_sr_SP.properties
#	src/main/resources/messages_sv_SE.properties
#	src/main/resources/messages_tr_TR.properties
#	src/main/resources/messages_uk_UA.properties
#	src/main/resources/messages_vi_VN.properties
#	src/main/resources/messages_zh_CN.properties
#	src/main/resources/messages_zh_TW.properties
2021-04-30 19:13:40 -03:00
Edson Passos b3e2720bc9 New translations messages.properties (Russian) (#179) 2021-04-30 19:07:33 -03:00
Minat0_ 99cb9e332a Show bank balance on staff GUI #89 (#178) 2021-04-29 22:23:55 -03:00
RoinujNosde 541e775fdb Merge remote-tracking branch 'origin/dev' into dev 2021-04-29 18:51:11 -03:00
RoinujNosde 0c220c79f2 Adds ignore-list for block place listeners 2021-04-29 18:50:59 -03:00
Edson Passos abc0bfe3ae New Crowdin updates (#177) 2021-04-28 21:02:44 -03:00
Edson Passos ff28d67e4b New Crowdin updates (#168) 2021-04-28 18:47:13 -03:00
RoinujNosde a723e8acff Only saves to db if set balance cause is not LOADING 2021-04-28 18:36:09 -03:00
RoinujNosde 9c20ef0575 Actually fixes spaces in BB 2021-04-27 22:51:15 -03:00
RoinujNosde 00b19d8c99 Fixes spaces in BB #172 2021-04-27 22:38:51 -03:00
Minat0_andRoinujNosde 8bcb1f2177 Bank commands for admins #88 (#174)
Co-authored-by: RoinujNosde <edsonpassosjr@outlook.com>
2021-04-27 22:04:14 -03:00
Edson Passos 37be7fbfc7 Checks if the Connection is valid before returning 2021-04-27 20:12:45 -03:00
RoinujNosde 29ef92e3b8 Refactored Clan and ClanPlayer update statements 2021-04-25 21:42:00 -03:00
RoinujNosde accddf319d Fixes negative KDR 2021-04-24 22:09:33 -03:00
RoinujNosde dafae75b21 Adds ALLY as kill type #99 2021-04-20 18:59:01 -03:00
RoinujNosde 6e477ec091 Adds name and clean name placeholders 2021-04-15 21:04:42 -03:00
RoinujNosde 8ae504024e Merge remote-tracking branch 'origin/dev' into dev 2021-04-11 10:20:44 -03:00
RoinujNosde 665ac47150 Sets PlotSquared as provided 2021-04-11 10:20:24 -03:00
Minat0_ f6d1356873 Hide vanished players from the invite command #128 (#167) 2021-04-07 22:15:21 -03:00
Edson Passos 40a749b304 New Crowdin updates (#150) 2021-04-07 19:46:13 -03:00
Minat0_ 628b26543f Disabling war requests, PlayerRankUpdateEvent (#166) 2021-04-06 12:33:57 -03:00
RoinujNosde c25c982264 Suppresses stacktrace from ProtectionProvider#setup
Adds support for PlotSquared 3 (untested)
2021-04-03 22:15:18 -03:00
RoinujNosde 32e21dbf50 Fixes clan home teleporting to surface if set in cave 2021-04-02 21:12:25 -03:00
RoinujNosde 7653b494fe Adds support for PlotSquared 5 (untested)
Attempts to add compatibility with CMI chat
2021-04-02 15:00:09 -03:00
RoinujNosde d20def4647 Adds support for WorldGuard 6 2021-03-29 23:44:26 -03:00
RoinujNosde 759796402e Fixes exception when using WG <7 2021-03-29 22:38:06 -03:00
RoinujNosde 13281ebff9 Fixes javadoc 2021-03-27 11:17:21 -03:00
Minat0_andRoinujNosde 2d52da106b Permanent clans (#157)
* Added permanent command
* Permanent clans are not purged
* Shows permanent status on profile
* Shows infinity symbol if a clan is permanent or purging is disabled

Co-authored-by: RoinujNosde <edsonpassosjr@outlook.com>
2021-03-26 16:01:52 -03:00
RoinujNosde 587f74e6aa Fixes NPE on ProtectionManager 2021-03-26 13:47:50 -03:00
RoinujNosde 74ba2ff568 Adds KDR resolver for placeholders
Changes KDR format to #.## in placeholders

Adds getClan() to PreCreateRankEvent
2021-03-20 22:05:31 -03:00
Minat0_andRoinujNosde 7e658c08b6 Rank events (PreCreateRankEvent, CreateRankEvent, DeleteRankEvent) (#151)
Adds events PreCreateRankEvent, CreateRankEvent, DeleteRankEvent

Co-authored-by: RoinujNosde <edsonpassosjr@outlook.com>
2021-03-20 13:32:08 -03:00
RoinujNosde cdda69d8b6 Adds option to edit all lands or only one 2021-03-19 22:37:47 -03:00
RoinujNosde 41721b02a7 Fixes ally invite still sent after disband #143 2021-03-19 22:20:46 -03:00
RoinujNosde 6bb3afb707 Revert "Adds compatibility with mute plugins"
This reverts commit 1f0b2518
2021-03-19 21:19:43 -03:00
RoinujNosde 3550d3909e Merge remote-tracking branch 'origin/dev' into dev 2021-03-18 21:46:06 -03:00
RoinujNosde 1f0b251885 Adds compatibility with mute plugins 2021-03-18 21:45:53 -03:00
Edson Passos 701d70681f Merge pull request #146 from RoinujNosde/l10n_dev
New Crowdin updates
2021-03-18 12:28:50 -03:00
Edson Passos 9f312800e1 New translations messages.properties (German) 2021-03-17 19:26:15 -03:00
Edson Passos d892b03142 Bump version 2021-03-16 19:44:31 -03:00
Edson PassosandMinat0_ 105ed018b1 v2.15.1 (#145)
Updated messages
Add event for deleting a rank
Fixes InventoryOpenEvent on older versions
Fixed players without rank unable to send chat messages

Co-authored-by: Minat0_ <42711312+Tomut0@users.noreply.github.com>
2021-03-16 19:39:00 -03:00
Edson Passos 7d872f1a4b New Crowdin updates (#142) 2021-03-16 19:31:38 -03:00
Minat0_ 5a1173f257 Add event for deleting a rank (#144) 2021-03-15 21:40:02 -03:00
Edson Passos 567e64462b New translations messages.properties (Russian) (#139) 2021-03-11 09:56:58 -03:00
RoinujNosde 95c5b11352 Merge remote-tracking branch 'origin/dev' into dev 2021-03-10 13:24:17 -03:00
RoinujNosde 26ceb59564 Fixes InventoryOpenEvent on older versions 2021-03-10 13:23:36 -03:00
Edson Passos ddf11b732f New Crowdin updates (#137)
* Update source file messages.properties
* New translations messages.properties (Polish)
* New translations messages.properties (Portuguese, Brazilian)
2021-03-07 14:29:22 -03:00
Edson Passos d35007b369 Updated messages 2021-03-06 15:01:16 -03:00
RoinujNosde aa011357bc Fixed players without rank unable to send chat messages 2021-03-06 13:59:27 -03:00
Edson Passos 53296485e8 Update Crowdin configuration file 2021-03-06 00:07:26 -03:00
Edson Passos 3f4fe0429f Update Crowdin configuration file 2021-03-06 00:00:16 -03:00
Edson Passos 31389485fd Deleted test action 2021-03-05 23:23:34 -03:00
Edson Passos c84f88b607 Fixed wrong path in publish action 2021-03-05 23:20:53 -03:00
Edson Passos a3cee92371 Update test_curseforge.yml 2021-03-05 22:54:52 -03:00
Edson Passos 8ae79e6b3d Testing curse forge action 2021-03-05 22:42:39 -03:00
Edson Passos 93fb4eafd4 Attemps to fix publish_curseforge action 2021-03-05 22:39:22 -03:00
RoinujNosde 5f2c20fe13 Deleted bintray action
Updated readme with new repo
2021-03-05 22:16:09 -03:00
123 changed files with 4276 additions and 1843 deletions

No files matched your search

-29
View File
@@ -1,29 +0,0 @@
name: Publish to Bintray
on:
release:
types: [created]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up JDK 1.8
uses: actions/setup-java@v1
with:
java-version: 1.8
server-id: bintray-roinujnosde-bukkit-plugins # Value of the distributionManagement/repository/id field of the pom.xml
server-username: MAVEN_USERNAME
server-password: MAVEN_PASSWORD
- name: Build with Maven
run: mvn -B package --file pom.xml
- name: Publish to Bintray
run: mvn -B deploy
env:
MAVEN_USERNAME: ${{ secrets.BINTRAY_USERNAME }}
MAVEN_PASSWORD: ${{ secrets.BINTRAY_TOKEN }}
+10 -9
View File
@@ -1,13 +1,10 @@
name: Publish to CurseForge
on:
release:
types: [created]
jobs:
build:
runs-on: ubuntu-latest
steps:
@@ -19,10 +16,14 @@ jobs:
- name: Build with Maven
run: mvn -B package --file pom.xml
- name: Upload artifact
uses: fjogeleit/http-request-action@v1.7.1
uses: itsmeow/curseforge-upload@v3
with:
url: 'https://minecraft.curseforge.com/api/projects/380814/upload-file'
method: 'POST'
contentType: 'multipart/form-data'
files: '{"file": "${{ env.GITHUB_WORKSPACE }}/target/SimpleClans.jar"}'
data: '{"token": "${{ secrets.CURSEFORGE_TOKEN }}","metadata": {"displayName":"${{ github.event.release.tag_name }}", "changelog": "${{ github.event.release.body }}","gameVersions": [7915,7667,7330,7105,6588,630,585,531],"releaseType": "release"}}'
token: ${{ secrets.CURSEFORGE_TOKEN }}
project_id: 380814
game_endpoint: minecraft
file_path: target/SimpleClans.jar
changelog: ${{ github.event.release.body }}
display_name: ${{ github.event.release.tag_name }}
game_versions: 7915,7667,7330,7105,6588,630,591,585,531
release_type: release
relations: vault:optionalDependency,worldguard:optionalDependency,grief-prevention:optionalDependency
+1
View File
@@ -6,3 +6,4 @@
/dependency-reduced-pom.xml
*.jar
.settings
.factorypath
+6 -7
View File
@@ -50,8 +50,8 @@ Including SimpleClans with Maven:
```xml
<repositories>
<repository>
<id>bintray-roinujnosde-bukkit-plugins</id>
<url>https://dl.bintray.com/roinujnosde/bukkit-plugins</url>
<id>codemc-repo</id>
<url>https://repo.codemc.org/repository/maven-public</url>
</repository>
</repositories>
```
@@ -60,7 +60,7 @@ Including SimpleClans with Maven:
<dependency>
<groupId>net.sacredlabyrinth.phaed.simpleclans</groupId>
<artifactId>SimpleClans</artifactId>
<version>2.14.3</version> <!-- You can find the latest version at the bottom -->
<version>2.15.0</version> <!-- You can find the latest version at the bottom -->
<scope>provided</scope>
</dependency>
</dependencies>
@@ -70,16 +70,15 @@ Using Gradle:
```groovy
repositories {
maven {
url "https://dl.bintray.com/roinujnosde/bukkit-plugins"
url "https://repo.codemc.org/repository/maven-public"
}
}
dependencies {
compileOnly "net.sacredlabyrinth.phaed.simpleclans:SimpleClans:2.14.3"
compileOnly "net.sacredlabyrinth.phaed.simpleclans:SimpleClans:2.15.0"
}
```
##### Latest version:
[![Bintray](https://img.shields.io/bintray/v/roinujnosde/bukkit-plugins/SimpleClans)](https://bintray.com/roinujnosde/bukkit-plugins/SimpleClans/_latestVersion)
[![](https://jitpack.io/v/roinujnosde/simpleclans.svg?label=Maven)]()
##### API Examples
* [Examples of how to use the API](https://simpleclans.gitbook.io/simpleclans/other/simpleclans-api)
+5 -57
View File
@@ -20,63 +20,6 @@
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.sk89q.worldguard:worldguard-bukkit:7.0.4" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.sk89q.worldedit:worldedit-bukkit:7.2.0-SNAPSHOT" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.sk89q.worldguard:worldguard-core:7.0.4" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.sk89q.worldguard.worldguard-libs:core:7.0.4" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.sk89q.worldedit:worldedit-core:7.2.0-SNAPSHOT" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.sk89q.worldedit.worldedit-libs:core:7.2.0-SNAPSHOT" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: de.schlichtherle:truezip:6.8.3" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.java.truevfs:truevfs-profile-default_2.13:0.12.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.scala-lang:scala-library:2.13.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.java.truevfs:truevfs-driver-http:0.12.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.java.truevfs:truevfs-kernel-spec:0.12.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.java.truecommons:truecommons-annotations:2.5.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.google.code.findbugs:annotations:3.0.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.java.truecommons:truecommons-cio:2.5.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.java.truecommons:truecommons-io:2.5.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.java.truecommons:truecommons-services:2.5.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.java.truecommons:truecommons-logging:2.5.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: javax.inject:javax.inject:1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.httpcomponents:httpclient:4.5.10" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.httpcomponents:httpcore:4.4.12" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: commons-codec:commons-codec:1.11" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.slf4j:jcl-over-slf4j:1.7.28" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.java.truevfs:truevfs-driver-odf:0.12.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.java.truevfs:truevfs-comp-zipdriver:0.12.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.java.truevfs:truevfs-comp-zip:0.12.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.bouncycastle:bcprov-jdk15on:1.63" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.java.truevfs:truevfs-driver-tar:0.12.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.java.truevfs:truevfs-comp-tardriver:0.12.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.commons:commons-compress:1.19" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.java.truevfs:truevfs-driver-tar-bzip2:0.12.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.java.truevfs:truevfs-driver-tar-gzip:0.12.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.java.truevfs:truevfs-driver-tar-xz:0.12.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.tukaani:xz:1.8" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.java.truevfs:truevfs-driver-zip-raes:0.12.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.java.truevfs:truevfs-profile-base_2.13:0.12.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.java.truevfs:truevfs-access-swing:0.12.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.java.truevfs:truevfs-access:0.12.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.java.truevfs:truevfs-driver-file:0.12.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.java.truevfs:truevfs-driver-jar:0.12.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.java.truevfs:truevfs-driver-zip:0.12.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.java.truevfs:truevfs-comp-ibm437:0.12.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.java.truevfs:truevfs-kernel-impl_2.13:0.12.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.java.truecommons:truecommons-key-console:2.5.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.java.truecommons:truecommons-key-default:2.5.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.java.truecommons:truecommons-key-swing:2.5.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.java.truecommons:truecommons-key-macosx:2.5.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.java.truecommons:truecommons-key-spec:2.5.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.java.truecommons:truecommons-shed:2.5.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.java.dev.jna:jna:4.1.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.mozilla:rhino-runtime:1.7.12" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.google.code.findbugs:jsr305:1.3.9" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.slf4j:slf4j-api:1.7.26" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: it.unimi.dsi:fastutil:8.2.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.antlr:antlr4-runtime:4.7.2" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.flywaydb:flyway-core:3.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.sk89q:commandbook:2.3" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.github.TechFortress:GriefPrevention:16.17.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.spigotmc:spigot-api:1.16.4-R0.1-SNAPSHOT" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: commons-lang:commons-lang:2.6" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.google.guava:guava:21.0" level="project" />
@@ -157,5 +100,10 @@
<orderEntry type="library" scope="PROVIDED" name="Maven: org.flywaydb:flyway-core:3.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.sk89q:commandbook:2.3" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.github.TechFortress:GriefPrevention:16.17.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.plotsquared:PlotSquared-Core:5.13.3" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.plotsquared:PlotSquared-Bukkit:5.13.3" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.plotsquared:plotsquared-api:3.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.plotsquared:plotsquared-bukkitapi:3.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.milkbowl.vault:VaultAPI:1.7" level="project" />
</component>
</module>
+3
View File
@@ -0,0 +1,3 @@
files:
- source: src/main/resources/messages.properties
translation: /src/main/resources/%file_name%_%locale_with_underscore%.%file_extension%
+85 -8
View File
@@ -4,7 +4,7 @@
<groupId>net.sacredlabyrinth.phaed.simpleclans</groupId>
<artifactId>SimpleClans</artifactId>
<name>SimpleClans</name>
<version>2.14.7</version>
<version>2.15.1</version>
<url>http://dev.bukkit.org/server-mods/simpleclans/</url>
<build>
<resources>
@@ -103,10 +103,6 @@
<id>bstats-repo</id>
<url>https://repo.codemc.org/repository/maven-public</url>
</repository>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
<repository>
<id>papermc</id>
<url>https://papermc.io/repo/repository/maven-public/</url>
@@ -119,6 +115,18 @@
<id>sk89q-repo</id>
<url>https://maven.enginehub.org/repo/</url>
</repository>
<repository>
<id>IntellectualSites</id>
<url>https://mvn.intellectualsites.com/content/groups/public/</url>
</repository>
<repository>
<id>plotsquared</id>
<url>https://plotsquared.com/mvn/</url>
</repository>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
<dependencies>
<dependency>
@@ -235,13 +243,82 @@
<version>16.17.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.plotsquared</groupId>
<artifactId>PlotSquared-Core</artifactId>
<version>5.13.3</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.plotsquared</groupId>
<artifactId>PlotSquared-Bukkit</artifactId>
<version>5.13.3</version>
<scope>provided</scope>
<exclusions>
<exclusion>
<artifactId>PlotSquared-Core</artifactId>
<groupId>*</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.plotsquared</groupId>
<artifactId>plotsquared-api</artifactId>
<version>3.1</version>
<scope>provided</scope>
<exclusions>
<exclusion>
<artifactId>*</artifactId>
<groupId>com.sk89q.worldedit</groupId>
</exclusion>
<exclusion>
<artifactId>snakeyaml</artifactId>
<groupId>org.yaml</groupId>
</exclusion>
<exclusion>
<artifactId>gson</artifactId>
<groupId>com.google.code.gson</groupId>
</exclusion>
<exclusion>
<artifactId>guava</artifactId>
<groupId>com.google.guava</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.plotsquared</groupId>
<artifactId>plotsquared-bukkitapi</artifactId>
<version>3.1</version>
<scope>provided</scope>
<exclusions>
<exclusion>
<artifactId>*</artifactId>
<groupId>com.sk89q.worldedit</groupId>
</exclusion>
<exclusion>
<artifactId>Core</artifactId>
<groupId>PlotSquared</groupId>
</exclusion>
<exclusion>
<artifactId>VaultAPI</artifactId>
<groupId>net.milkbowl.vault</groupId>
</exclusion>
<exclusion>
<artifactId>guava</artifactId>
<groupId>com.google.guava</groupId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<distributionManagement>
<repository>
<id>bintray-roinujnosde-bukkit-plugins</id>
<name>roinujnosde-bukkit-plugins</name>
<url>https://api.bintray.com/maven/roinujnosde/bukkit-plugins/SimpleClans/;publish=1</url>
<id>codemc-releases</id>
<url>https://repo.codemc.io/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>codemc-snapshots</id>
<url>https://repo.codemc.io/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+55 -1
View File
@@ -3,7 +3,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>net.sacredlabyrinth.phaed.simpleclans</groupId>
<artifactId>SimpleClans</artifactId>
<version>2.15.0</version>
<version>2.15.2</version>
<name>SimpleClans</name>
<url>http://dev.bukkit.org/server-mods/simpleclans/</url>
@@ -182,6 +182,52 @@
<version>16.17.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.plotsquared</groupId>
<artifactId>PlotSquared-Core</artifactId>
<version>5.13.3</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.plotsquared</groupId>
<artifactId>PlotSquared-Bukkit</artifactId>
<version>5.13.3</version>
<scope>provided</scope>
<exclusions>
<exclusion>
<groupId>*</groupId>
<artifactId>PlotSquared-Core</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.plotsquared</groupId>
<artifactId>plotsquared-api</artifactId>
<version>3.1</version>
<scope>provided</scope>
<exclusions>
<exclusion>
<groupId>com.sk89q.worldedit</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.plotsquared</groupId>
<artifactId>plotsquared-bukkitapi</artifactId>
<version>3.1</version>
<scope>provided</scope>
<exclusions>
<exclusion>
<groupId>com.sk89q.worldedit</groupId>
<artifactId>*</artifactId>
</exclusion>
<exclusion>
<groupId>PlotSquared</groupId>
<artifactId>Core</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<!-- Repositories -->
@@ -210,6 +256,14 @@
<id>sk89q-repo</id>
<url>https://maven.enginehub.org/repo/</url>
</repository>
<repository>
<id>IntellectualSites</id>
<url>https://mvn.intellectualsites.com/content/groups/public/</url>
</repository>
<repository>
<id>plotsquared</id>
<url>https://plotsquared.com/mvn/</url>
</repository>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
@@ -3,6 +3,7 @@ package net.sacredlabyrinth.phaed.simpleclans;
import net.sacredlabyrinth.phaed.simpleclans.utils.ChatUtils;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -10,7 +11,6 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
import java.util.logging.Logger;
import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
@@ -28,33 +28,23 @@ public class ChatBlock {
private boolean padRight = true;
public void setCropRight(boolean cropRight) {
this.cropRight = cropRight;
this.cropRight = cropRight;
}
public void setPadRight(boolean padRight) {
this.padRight = padRight;
this.padRight = padRight;
}
/**
* @param columnAlignment
*/
public void setAlignment(String... columnAlignment) {
columnAlignments.addAll(Arrays.asList(columnAlignment));
}
/**
* @param columnFlex
*/
public void setFlexibility(boolean... columnFlex) {
for (boolean flex : columnFlex) {
columnFlexes.add(flex);
}
}
/**
* @param columnPercentages
* @param prefix
*/
public void setColumnSizes(String prefix, double... columnPercentages) {
int ll = LINE_LENGTH;
@@ -67,73 +57,38 @@ public class ChatBlock {
}
}
/**
* @return
*/
public boolean hasContent() {
return !rows.isEmpty();
}
/**
* @param contents
*/
public void addRow(String... contents) {
rows.add(contents);
}
/**
* @return
*/
public int size() {
return rows.size();
}
/**
* @return
*/
public boolean isEmpty() {
return rows.isEmpty();
}
/**
*
*/
public void clear() {
rows.clear();
}
/**
* @param player
* @return
*/
public boolean sendBlock(CommandSender player) {
return sendBlock(player, null, 0);
}
/**
* @param player
* @param prefix
* @return
*/
public boolean sendBlock(CommandSender player, String prefix) {
return sendBlock(player, prefix, 0);
}
/**
* @param player
* @param amount
* @return
*/
public boolean sendBlock(CommandSender player, int amount) {
return sendBlock(player, null, amount);
}
/**
* @param player
* @param prefix
* @param amount
* @return
*/
boolean sendBlock(CommandSender player, String prefix, int amount) {
if (player == null) {
return false;
@@ -194,27 +149,27 @@ public class ChatBlock {
}
} else if (align.equalsIgnoreCase("l")) {
if (msgLength(section) > colsize) {
if (cropRight) {
col = cropRightToFit(section, colsize);
if (cropRight) {
col = cropRightToFit(section, colsize);
} else {
col = section;
col = section;
}
} else if (msgLength(section) < colsize) {
if (padRight) {
col = paddRightToFit(section, colsize);
} else {
col = section;
}
if (padRight) {
col = paddRightToFit(section, colsize);
} else {
col = section;
}
}
} else if (align.equalsIgnoreCase("c")) {
if (msgLength(section) > colsize) {
if (cropRight) {
col = cropRightToFit(section, colsize);
} else {
col = section;
}
if (cropRight) {
col = cropRightToFit(section, colsize);
} else {
col = section;
}
} else if (msgLength(section) < colsize) {
col = centerInLineOf(section, colsize);
col = centerInLineOf(section, colsize);
}
}
@@ -279,7 +234,7 @@ public class ChatBlock {
// crop and print out
String msg = (prefix_used ? empty_prefix : prefix + " ") + finalString;
if (cropRight) {
msg = cropRightToFit(msg, LINE_LENGTH);
msg = cropRightToFit(msg, LINE_LENGTH);
}
if (color.length() > 0) {
msg = color + msg;
@@ -304,10 +259,6 @@ public class ChatBlock {
return out;
}
/**
* @param col
* @return
*/
int getMaxWidth(int col) {
double maxWidth = 0;
@@ -318,19 +269,10 @@ public class ChatBlock {
return (int) maxWidth;
}
/**
* @param msg
* @return
*/
public static String centerInLine(String msg) {
return centerInLineOf(msg, LINE_LENGTH);
}
/**
* @param msg
* @param lineLength
* @return
*/
private static String centerInLineOf(String msg, double lineLength) {
double length = msgLength(msg);
double diff = lineLength - length;
@@ -355,10 +297,6 @@ public class ChatBlock {
return msg;
}
/**
* @param str
* @return
*/
public static String makeEmpty(String str) {
if (str == null) {
return "";
@@ -367,11 +305,6 @@ public class ChatBlock {
return paddLeftToFit("", msgLength(str));
}
/**
* @param msg
* @param length
* @return
*/
private static String cropRightToFit(String msg, double length) {
if (msg == null || msg.length() == 0 || length == 0) {
return "";
@@ -384,11 +317,6 @@ public class ChatBlock {
return msg;
}
/**
* @param msg
* @param length
* @return
*/
private static String cropLeftToFit(String msg, double length) {
if (msg == null || msg.length() == 0 || length == 0) {
return "";
@@ -402,11 +330,11 @@ public class ChatBlock {
}
/**
* Padds left til the string is a certain size
* Pads left til the string is a certain size
*
* @param msg
* @param length
* @return
* @param msg the message to pad
* @param length the message length
* @return the padded message
*/
private static String paddLeftToFit(String msg, double length) {
if (msgLength(msg) >= length) {
@@ -421,11 +349,11 @@ public class ChatBlock {
}
/**
* Padds right til the string is a certain size
* Pads right til the string is a certain size
*
* @param msg
* @param length
* @return
* @param msg the message to pad
* @param length the message length
* @return the padded message
*/
private static String paddRightToFit(String msg, double length) {
if (msgLength(msg) >= length) {
@@ -441,9 +369,6 @@ public class ChatBlock {
/**
* Finds the length on the screen of a string. Ignores colors.
*
* @param str
* @return
*/
private static double msgLength(String str) {
double length = 0;
@@ -464,9 +389,6 @@ public class ChatBlock {
/**
* Finds the visual length of the character on the screen.
*
* @param x
* @return
*/
private static int charLength(char x) {
String normalized = StringSimplifier.simplifiedString(x + "");
@@ -492,7 +414,6 @@ public class ChatBlock {
/**
* Cuts the message apart into whole words short enough to fit on one line
*
*/
private static String[] wordWrap(String msg) {
// Split each word apart
@@ -546,8 +467,6 @@ public class ChatBlock {
return out.toArray(new String[0]);
}
/**
*/
private static String combineSplit(String[] string) {
StringBuilder builder = new StringBuilder();
for (String aString : string) {
@@ -561,7 +480,6 @@ public class ChatBlock {
/**
* Cuts apart a word that is too long to fit on one line
*
*/
private static String[] wordCut(int lengthBefore, String str) {
int length = lengthBefore;
@@ -595,7 +513,6 @@ public class ChatBlock {
/**
* Outputs a single line out, crops overflow
*
*/
public static void saySingle(CommandSender receiver, String msg) {
if (receiver == null) {
@@ -607,7 +524,6 @@ public class ChatBlock {
/**
* Outputs a message to a user
*
*/
public static void sendMessage(@Nullable CommandSender receiver, @NotNull String msg) {
if (receiver == null) {
@@ -622,6 +538,19 @@ public class ChatBlock {
// }
}
public static void sendMessage(@Nullable ClanPlayer receiver, @NotNull String msg) {
if (receiver == null) {
return;
}
Player player = receiver.toPlayer();
if (player == null) {
return;
}
player.sendMessage(ChatUtils.parseColors(msg));
}
public static void sendMessageKey(@Nullable CommandSender receiver, @NotNull String key, @NotNull Object... args) {
sendMessage(receiver, lang(key, receiver, args));
}
@@ -632,7 +561,6 @@ public class ChatBlock {
/**
* Send blank line
*
*/
public static void sendBlank(CommandSender receiver) {
if (receiver == null) {
@@ -644,12 +572,11 @@ public class ChatBlock {
/**
* Colors each line
*
*/
public static String[] say(String message) {
return colorize(wordWrap(message));
}
public static String[] getColorizedMessage(String msg) {
return colorize(wordWrap(msg));
}
@@ -663,7 +590,7 @@ public class ChatBlock {
}
public static @Nullable String colorize(String message) {
return colorizeBase(new String[]{ message })[0];
return colorizeBase(new String[]{message})[0];
}
File diff suppressed because it is too large. Load diff
@@ -31,9 +31,7 @@ public class ClanPlayer implements Serializable, Comparable<ClanPlayer> {
private String tag;
private @Nullable Clan clan;
private boolean friendlyFire;
private int neutralKills;
private int rivalKills;
private int civilianKills;
private final Map<Kill.Type, Integer> kills = new HashMap<>();
private int deaths;
private long lastSeen;
private long joinDate;
@@ -76,9 +74,6 @@ public class ClanPlayer implements Serializable, Comparable<ClanPlayer> {
}
this.lastSeen = (new Date()).getTime();
this.joinDate = (new Date()).getTime();
this.neutralKills = 0;
this.rivalKills = 0;
this.civilianKills = 0;
this.tag = "";
}
@@ -112,6 +107,7 @@ public class ClanPlayer implements Serializable, Comparable<ClanPlayer> {
*
* @return the name
*/
@Placeholder("name")
public String getName() {
return displayName;
}
@@ -130,6 +126,7 @@ public class ClanPlayer implements Serializable, Comparable<ClanPlayer> {
*
* @return the name
*/
@Placeholder("clean_name")
public String getCleanName() {
return displayName.toLowerCase();
}
@@ -266,7 +263,7 @@ public class ClanPlayer implements Serializable, Comparable<ClanPlayer> {
@Placeholder("total_kills")
public int getTotalKills() {
return getRivalKills() + getCivilianKills() + getNeutralKills();
return getRivalKills() + getCivilianKills() + getNeutralKills() + getAllyKills();
}
/**
@@ -276,7 +273,7 @@ public class ClanPlayer implements Serializable, Comparable<ClanPlayer> {
*/
@Placeholder("rival_kills")
public int getRivalKills() {
return rivalKills;
return kills.getOrDefault(Kill.Type.RIVAL, 0);
}
/**
@@ -285,7 +282,7 @@ public class ClanPlayer implements Serializable, Comparable<ClanPlayer> {
* @param rivalKills the rivalKills to set
*/
public void setRivalKills(int rivalKills) {
this.rivalKills = rivalKills;
kills.put(Kill.Type.RIVAL, rivalKills);
}
/**
@@ -303,7 +300,7 @@ public class ClanPlayer implements Serializable, Comparable<ClanPlayer> {
*/
@Placeholder("civilian_kills")
public int getCivilianKills() {
return civilianKills;
return kills.getOrDefault(Kill.Type.CIVILIAN, 0);
}
/**
@@ -312,7 +309,7 @@ public class ClanPlayer implements Serializable, Comparable<ClanPlayer> {
* @param civilianKills the civilianKills to set
*/
public void setCivilianKills(int civilianKills) {
this.civilianKills = civilianKills;
kills.put(Kill.Type.CIVILIAN, civilianKills);
}
/**
@@ -330,7 +327,7 @@ public class ClanPlayer implements Serializable, Comparable<ClanPlayer> {
*/
@Placeholder("neutral_kills")
public int getNeutralKills() {
return neutralKills;
return kills.getOrDefault(Kill.Type.NEUTRAL, 0);
}
/**
@@ -339,7 +336,7 @@ public class ClanPlayer implements Serializable, Comparable<ClanPlayer> {
* @param neutralKills the neutralKills to set
*/
public void setNeutralKills(int neutralKills) {
this.neutralKills = neutralKills;
kills.put(Kill.Type.NEUTRAL, neutralKills);
}
/**
@@ -350,20 +347,20 @@ public class ClanPlayer implements Serializable, Comparable<ClanPlayer> {
setNeutralKills(getNeutralKills() + 1);
}
public void setAllyKills(int allyKills) {
kills.put(Kill.Type.ALLY, allyKills);
}
@Placeholder("ally_kills")
public int getAllyKills() {
return kills.getOrDefault(Kill.Type.ALLY, 0);
}
/**
* Adds one kill to this player (does not update to db)
*/
public void addKill(Kill.Type type) {
switch (type) {
case CIVILIAN:
civilianKills++;
break;
case NEUTRAL:
neutralKills++;
break;
case RIVAL:
rivalKills++;
}
kills.compute(type, (t, c) -> c == null ? 1 : c + 1);
}
/**
@@ -435,13 +432,20 @@ public class ClanPlayer implements Serializable, Comparable<ClanPlayer> {
@Placeholder("weighted_kills")
public double getWeightedKills() {
SimpleClans plugin = SimpleClans.getInstance();
return ((double) rivalKills * plugin.getSettingsManager().getKwRival()) + ((double) neutralKills * plugin.getSettingsManager().getKwNeutral()) + ((double) civilianKills * plugin.getSettingsManager().getKwCivilian());
double kills = ((double) getRivalKills() * plugin.getSettingsManager().getKwRival()) +
((double) getNeutralKills() * plugin.getSettingsManager().getKwNeutral()) +
((double) getAllyKills() * plugin.getSettingsManager().getKwAlly()) +
((double) getCivilianKills() * plugin.getSettingsManager().getKwCivilian());
if (kills < 0) {
return 0;
}
return kills;
}
/**
* Returns weighted-kill/death ratio
*/
@Placeholder("kdr")
@Placeholder(value = "kdr", resolver = "kdr")
@Placeholder(value = "topplayers_position", resolver = "ranking_position")
public float getKDR() {
int totalDeaths = getDeaths();
@@ -814,8 +818,8 @@ public class ClanPlayer implements Serializable, Comparable<ClanPlayer> {
}
@Placeholder("rank")
public @Nullable String getRankId() {
return flags.getString("rank");
public @NotNull String getRankId() {
return flags.getString("rank", "");
}
/**
@@ -0,0 +1,5 @@
package net.sacredlabyrinth.phaed.simpleclans;
public enum EconomyResponse {
SUCCESS, NEGATIVE_VALUE, NOT_ENOUGH_BALANCE, CANCELLED
}
@@ -45,6 +45,15 @@ public class Flags {
return String.valueOf(object);
}
@NotNull
public String getString(@NotNull String key, @NotNull String def) {
String string = getString(key);
if (string == null) {
return def;
}
return string;
}
@NotNull
public Number getNumber(@NotNull String key) {
Object object = flags.get(key);
@@ -8,6 +8,7 @@ import net.sacredlabyrinth.phaed.simpleclans.utils.VanishUtils;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.Contract;
@@ -18,6 +19,8 @@ import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
import java.io.IOException;
import java.lang.reflect.Method;
import java.net.HttpURLConnection;
@@ -28,6 +31,7 @@ import java.time.LocalTime;
import java.time.temporal.ChronoUnit;
import java.util.*;
import java.util.Map.Entry;
import java.util.stream.Collectors;
/**
* @author phaed
@@ -97,7 +101,7 @@ public class Helper {
* @param jo the JSON Object
* @return a list of ranks or null if the JSON String is null/empty
*/
public static @Nullable List<Rank> ranksFromJson(JSONObject jo) {
public static @Nullable List<Rank> ranksFromJson(@Nullable JSONObject jo) {
if (jo != null && !jo.isEmpty()) {
Object ranks = jo.get("ranks");
if (ranks != null) {
@@ -127,7 +131,7 @@ public class Helper {
* @param jo the JSON object
* @return the default rank or null if not found and/or it does not exist
*/
public static @Nullable String defaultRankFromJson(JSONObject jo) {
public static @Nullable String defaultRankFromJson(@Nullable JSONObject jo) {
if (jo != null && !jo.isEmpty()) {
if (!jo.containsKey("defaultRank")) {
return null;
@@ -900,7 +904,7 @@ public class Helper {
*
* @param cp Sender
* @param msg The chat message
* @return The formated message
* @return The formatted message
*/
public static String formatSpyClanChat(ClanPlayer cp, String msg) {
msg = stripColors(msg);
@@ -911,4 +915,47 @@ public class Helper {
return ChatColor.DARK_GRAY + "[" + cp.getTag() + "] " + msg;
}
}
/**
* Formats max inactive days to an infinity symbol if it's negative or 0
*
* @param max inactive days
* @return formatted message
*/
public static String formatMaxInactiveDays(int max) {
if (max <= 0) {
return "∞";
} else {
return String.valueOf(max);
}
}
@NotNull
public static String getFormattedClanStatus(Clan clan, CommandSender sender) {
ArrayList<String> statuses = new ArrayList<>();
if (clan.isPermanent()) {
statuses.add(lang("permanent", sender));
}
if (clan.isVerified()) {
statuses.add(lang("verified", sender));
} else {
statuses.add(lang("unverified", sender));
}
return String.join(", ", statuses);
}
/**
* Checks if all passed materials are some kind of AIR
*
* @param materials materials to test
* @return true if all materials are AIR
*/
public static boolean isAir(@NotNull Material... materials) {
for (Material m : materials) {
if (!m.name().contains("AIR")) {
return false;
}
}
return true;
}
}
@@ -27,7 +27,7 @@ public class Kill {
}
public enum Type {
CIVILIAN("c"), RIVAL("r"), NEUTRAL("n");
CIVILIAN("c"), RIVAL("r"), NEUTRAL("n"), ALLY("a");
Type(String shortName) {
this.shortName = shortName;
@@ -218,7 +218,7 @@ public class SCCommandManager extends PaperCommandManager {
"alliances", "leaderboard", "allow", "block", "auto", "check", "assign", "unassign", "delete", "me",
"setdisplayname", "permissions", "tag", "deposit", "withdraw", "set", "status", "tp", "all", "everyone",
"lookup", "roster", "profile", "list", "create", "description", "start", "end", "admin", "help", "mod",
"setdefault", "removedefault", "land", "break", "interact", "place", "damage", "interact_entity",
"container");
"setdefault", "removedefault", "land", "break", "interact", "place_block", "damage", "interact_entity",
"container", "permanent", "take", "give");
}
}
@@ -4,7 +4,13 @@ import co.aikar.commands.BaseCommand;
import co.aikar.commands.annotation.*;
import net.sacredlabyrinth.phaed.simpleclans.ChatBlock;
import net.sacredlabyrinth.phaed.simpleclans.Clan;
import net.sacredlabyrinth.phaed.simpleclans.EconomyResponse;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
import net.sacredlabyrinth.phaed.simpleclans.events.BankDepositEvent;
import net.sacredlabyrinth.phaed.simpleclans.events.BankWithdrawEvent;
import net.sacredlabyrinth.phaed.simpleclans.events.ClanBalanceUpdateEvent;
import net.sacredlabyrinth.phaed.simpleclans.managers.PermissionsManager;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
@@ -42,6 +48,7 @@ public class BankCommand extends BaseCommand {
processWithdraw(player, clan, amount);
}
@SuppressWarnings("deprecation")
private void processWithdraw(Player player, Clan clan, double amount) {
if (!clan.isAllowWithdraw()) {
String message = getCurrentCommandManager().getCommandReplacements()
@@ -50,7 +57,25 @@ public class BankCommand extends BaseCommand {
return;
}
amount = Math.abs(amount);
clan.withdraw(amount, player);
BankWithdrawEvent event = new BankWithdrawEvent(player, clan, amount);
Bukkit.getPluginManager().callEvent(event);
if (event.isCancelled()) {
return;
}
switch (clan.withdraw(player, ClanBalanceUpdateEvent.Cause.COMMAND, amount)) {
case SUCCESS:
if (SimpleClans.getInstance().getPermissionsManager().playerGrantMoney(player, amount)) {
player.sendMessage(AQUA + lang("player.clan.withdraw", player, amount));
clan.addBb(player.getName(), AQUA + lang("bb.clan.withdraw", amount));
} else {
clan.setBalance(player, ClanBalanceUpdateEvent.Cause.REVERT, clan.getBalance() + amount);
}
break;
case NOT_ENOUGH_BALANCE:
player.sendMessage(lang("clan.bank.not.enough.money", player));
break;
}
}
@Subcommand("%deposit %all")
@@ -69,6 +94,7 @@ public class BankCommand extends BaseCommand {
processDeposit(player, clan, amount);
}
@SuppressWarnings("deprecation")
private void processDeposit(Player player, Clan clan, double amount) {
if (!clan.isAllowDeposit()) {
String message = getCurrentCommandManager().getCommandReplacements()
@@ -77,6 +103,24 @@ public class BankCommand extends BaseCommand {
return;
}
amount = Math.abs(amount);
clan.deposit(amount, player);
BankDepositEvent event = new BankDepositEvent(player, clan, amount);
Bukkit.getPluginManager().callEvent(event);
if (event.isCancelled()) {
return;
}
if (!permissions.playerHasMoney(player, amount)) {
player.sendMessage(AQUA + lang("not.sufficient.money", player));
return;
}
EconomyResponse response = clan.deposit(player, ClanBalanceUpdateEvent.Cause.COMMAND, amount);
if (response == EconomyResponse.SUCCESS) {
if (permissions.playerChargeMoney(player, amount)) {
player.sendMessage(AQUA + lang("player.clan.deposit", player, amount));
clan.addBb(player.getName(), AQUA + lang("bb.clan.deposit", amount));
} else {
//Reverts the deposit if something went wrong with Vault
clan.setBalance(player, ClanBalanceUpdateEvent.Cause.REVERT, clan.getBalance() - amount);
}
}
}
}
@@ -36,30 +36,29 @@ public class ClanCommands extends BaseCommand {
private PermissionsManager permissions;
@Dependency
private RequestManager requestManager;
@Dependency
private ProtectionManager protectionManager;
@Subcommand("%war %start")
@CommandPermission("simpleclans.leader.war")
@Conditions("verified|rank:name=WAR_START")
@Description("{@@command.description.war.start}")
@CommandCompletion("@rivals")
public void startWar(Player player, ClanPlayer cp, Clan issuerClan, @Name("clan") ClanInput other) {
Clan war = other.getClan();
if (!issuerClan.isRival(war.getTag())) {
ChatBlock.sendMessage(player, RED + lang("you.can.only.start.war.with.rivals", player));
return;
}
if (!issuerClan.isWarring(war.getTag())) {
List<ClanPlayer> onlineLeaders = Helper.stripOffLinePlayers(issuerClan.getLeaders());
public void startWar(Player player, ClanPlayer requester, Clan requestClan, @Conditions("can_war_target") @Name("clan") ClanInput targetClanInput) {
Clan targetClan = targetClanInput.getClan();
List<ClanPlayer> onlineLeaders = Helper.stripOffLinePlayers(requestClan.getLeaders());
if (settings.isWarRequestEnabled()) {
if (!onlineLeaders.isEmpty()) {
requestManager.addWarStartRequest(cp, war, issuerClan);
requestManager.addWarStartRequest(requester, targetClan, requestClan);
ChatBlock.sendMessage(player, AQUA + lang("leaders.have.been.asked.to.accept.the.war.request",
player, war.getName()));
player, targetClan.getName()));
} else {
ChatBlock.sendMessage(player, RED + lang("at.least.one.leader.accept.the.alliance", player));
}
} else {
ChatBlock.sendMessage(player, RED + lang("clans.already.at.war", player));
protectionManager.addWar(requester, requestClan, targetClan);
}
}
@@ -127,11 +126,11 @@ public class ClanCommands extends BaseCommand {
@Subcommand("%invite")
@CommandPermission("simpleclans.leader.invite")
@CommandCompletion("@non_members")
@CommandCompletion("@non_members:ignore_vanished")
@Conditions("rank:name=INVITE")
@Description("{@@command.description.invite}")
public void invite(Player sender, ClanPlayer cp, Clan clan,
@Conditions("not_banned|not_in_clan|online") @Name("player") ClanPlayerInput invited) {
@Conditions("not_banned|not_in_clan|online:ignore_vanished") @Name("player") ClanPlayerInput invited) {
Player invitedPlayer = invited.getClanPlayer().toPlayer();
if (invitedPlayer == null) return;
if (!permissions.has(invitedPlayer, "simpleclans.member.can-join")) {
@@ -40,10 +40,10 @@ public class HomeCommands extends BaseCommand {
return;
}
processTeleport(player, cp, clan, player.getLocation());
processRegroup(player, cp, clan, player.getLocation());
}
private void processTeleport(Player player, ClanPlayer cp, Clan clan, Location location) {
private void processRegroup(Player player, ClanPlayer cp, Clan clan, Location location) {
HomeRegroupEvent homeRegroupEvent = new HomeRegroupEvent(clan, cp, VanishUtils.getNonVanished(player, clan), location);
plugin.getServer().getPluginManager().callEvent(homeRegroupEvent);
@@ -69,7 +69,7 @@ public class HomeCommands extends BaseCommand {
return;
}
processTeleport(player, cp, clan, location);
processRegroup(player, cp, clan, location);
}
@Subcommand("%home")
@@ -6,11 +6,13 @@ import net.sacredlabyrinth.phaed.simpleclans.ChatBlock;
import net.sacredlabyrinth.phaed.simpleclans.ClanPlayer;
import net.sacredlabyrinth.phaed.simpleclans.hooks.protection.Land;
import net.sacredlabyrinth.phaed.simpleclans.managers.ProtectionManager;
import net.sacredlabyrinth.phaed.simpleclans.managers.SettingsManager;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import java.util.Objects;
import java.util.Set;
import java.util.stream.Collectors;
@CommandAlias("%clan")
@Subcommand("%land")
@@ -20,6 +22,18 @@ public class LandCommand extends BaseCommand {
@Dependency
private ProtectionManager protection;
@Dependency
private SettingsManager settings;
private Set<Land> getLands(ClanPlayer cp, Location location) {
Player player = Objects.requireNonNull(cp.toPlayer());
if (settings.isEditAllLands()) {
return protection.getLands(player, location);
} else {
return protection.getLandsAt(location).stream().filter(l -> l.getOwners().contains(player.getUniqueId()))
.collect(Collectors.toSet());
}
}
@Subcommand("%allow")
public class AllowCommand extends BaseCommand {
@@ -29,8 +43,7 @@ public class LandCommand extends BaseCommand {
}
private void allow(ClanPlayer cp, ProtectionManager.Action action, Location location, boolean notify) {
Set<Land> lands = protection.getLands(Objects.requireNonNull(cp.toPlayer()), location);
for (Land land : lands) {
for (Land land : getLands(cp, location)) {
cp.allow(action, land.getId());
}
if (notify) {
@@ -99,8 +112,7 @@ public class LandCommand extends BaseCommand {
}
private void block(ClanPlayer cp, ProtectionManager.Action action, Location location, boolean notify) {
Set<Land> lands = protection.getLands(Objects.requireNonNull(cp.toPlayer()), location);
for (Land land : lands) {
for (Land land : getLands(cp, location)) {
cp.disallow(action, land.getId());
}
if (notify) {
@@ -102,8 +102,7 @@ public class LeaderCommands extends BaseCommand {
return;
}
clan.clanAnnounce(player.getName(), AQUA + lang("clan.has.been.disbanded", clan.getName()));
clan.disband();
clan.disband(player, true, false);
}
@Subcommand("%verify")
@@ -5,9 +5,12 @@ import co.aikar.commands.annotation.*;
import net.sacredlabyrinth.phaed.simpleclans.*;
import net.sacredlabyrinth.phaed.simpleclans.commands.ClanPlayerInput;
import net.sacredlabyrinth.phaed.simpleclans.conversation.CreateRankNamePrompt;
import net.sacredlabyrinth.phaed.simpleclans.events.DeleteRankEvent;
import net.sacredlabyrinth.phaed.simpleclans.events.PlayerRankUpdateEvent;
import net.sacredlabyrinth.phaed.simpleclans.managers.PermissionsManager;
import net.sacredlabyrinth.phaed.simpleclans.managers.StorageManager;
import net.sacredlabyrinth.phaed.simpleclans.utils.ChatUtils;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.conversations.Conversation;
import org.bukkit.conversations.ConversationFactory;
@@ -37,11 +40,17 @@ public class RankCommand extends BaseCommand {
@CommandPermission("simpleclans.leader.rank.assign")
@CommandCompletion("@clan_members @ranks")
@Description("{@@command.description.rank.assign}")
public void assign(Player player,
public void assign(ClanPlayer player,
Clan clan,
@Name("member") @Conditions("same_clan") ClanPlayerInput member,
@Name("rank") Rank rank) {
ClanPlayer memberInput = member.getClanPlayer();
PlayerRankUpdateEvent event = new PlayerRankUpdateEvent(player, memberInput, clan, clan.getRank(memberInput.getRankId()), rank);
Bukkit.getPluginManager().callEvent(event);
if (event.isCancelled()) return;
if (memberInput.getRankId().equals(rank.getName())) {
ChatBlock.sendMessage(player, lang("player.already.has.that.rank", player));
return;
@@ -56,10 +65,16 @@ public class RankCommand extends BaseCommand {
@CommandPermission("simpleclans.leader.rank.unassign")
@CommandCompletion("@clan_members")
@Description("{@@command.description.rank.unassign}")
public void unassign(Player player, @Conditions("same_clan") @Name("member") ClanPlayerInput cp) {
ClanPlayer cpInput = cp.getClanPlayer();
cpInput.setRank(null);
storage.updateClanPlayer(cpInput);
public void unassign(ClanPlayer player, Clan clan, @Conditions("same_clan") @Name("member") ClanPlayerInput cp) {
ClanPlayer memberInput = cp.getClanPlayer();
PlayerRankUpdateEvent event = new PlayerRankUpdateEvent(player, memberInput, clan, clan.getRank(memberInput.getRankId()), null);
Bukkit.getPluginManager().callEvent(event);
if (event.isCancelled()) return;
memberInput.setRank(null);
storage.updateClanPlayer(memberInput);
ChatBlock.sendMessage(player, AQUA + lang("player.unassigned.from.rank", player));
}
@@ -78,9 +93,14 @@ public class RankCommand extends BaseCommand {
@CommandCompletion("@ranks")
@Description("{@@command.description.rank.delete}")
public void delete(Player player, Clan clan, @Name("rank") Rank rank) {
clan.deleteRank(rank.getName());
storage.updateClan(clan, true);
ChatBlock.sendMessage(player, AQUA + lang("rank.0.deleted", player, rank.getDisplayName()));
DeleteRankEvent event = new DeleteRankEvent(player, clan, rank);
Bukkit.getServer().getPluginManager().callEvent(event);
if (!event.isCancelled()) {
clan.deleteRank(rank.getName());
storage.updateClan(clan, true);
ChatBlock.sendMessage(player, AQUA + lang("rank.0.deleted", player, rank.getDisplayName()));
}
}
@Subcommand("%list")
@@ -3,12 +3,13 @@ package net.sacredlabyrinth.phaed.simpleclans.commands.completions;
import co.aikar.commands.BukkitCommandCompletionContext;
import co.aikar.commands.InvalidCommandArgument;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
import net.sacredlabyrinth.phaed.simpleclans.utils.VanishUtils;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
import java.util.Collection;
import java.util.stream.Collectors;
@SuppressWarnings("unused")
public class NonMembersCompletion extends AbstractSyncCompletion {
@@ -23,10 +24,16 @@ public class NonMembersCompletion extends AbstractSyncCompletion {
@Override
public Collection<String> getCompletions(BukkitCommandCompletionContext c) throws InvalidCommandArgument {
Player player = c.getPlayer();
return Bukkit.getOnlinePlayers().stream()
.filter(p -> clanManager.getClanByPlayerUniqueId(p.getUniqueId()) == null
&& (player == null || player.canSee(p)))
.map(Player::getName).collect(Collectors.toList());
Collection<String> onlinePlayers = new ArrayList<>();
for (Player onlinePlayer : Bukkit.getOnlinePlayers()) {
boolean vanished = VanishUtils.isVanished(c.getSender(), onlinePlayer);
if (clanManager.getClanByPlayerUniqueId(onlinePlayer.getUniqueId()) != null || (c.hasConfig("ignore_vanished") && vanished)) {
continue;
}
onlinePlayers.add(onlinePlayer.getName());
}
return onlinePlayers;
}
}
@@ -0,0 +1,49 @@
package net.sacredlabyrinth.phaed.simpleclans.commands.conditions;
import co.aikar.commands.*;
import net.sacredlabyrinth.phaed.simpleclans.Clan;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
import net.sacredlabyrinth.phaed.simpleclans.commands.ClanInput;
import org.jetbrains.annotations.NotNull;
import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
public class CanWarTargetCondition extends AbstractParameterCondition<ClanInput> {
public CanWarTargetCondition(@NotNull SimpleClans plugin) {
super(plugin);
}
@Override
public Class<ClanInput> getType() {
return ClanInput.class;
}
@Override
public void validateCondition(ConditionContext<BukkitCommandIssuer> context, BukkitCommandExecutionContext execContext, ClanInput target) throws InvalidCommandArgument {
BukkitCommandIssuer issuer = execContext.getIssuer();
Clan issuerClan = Conditions.assertClanMember(clanManager, issuer);
Clan targetClan = target.getClan();
if (!issuerClan.isRival(targetClan.getTag())) {
throw new ConditionFailedException(lang("you.can.only.start.war.with.rivals", issuer));
}
if (issuerClan.isWarring(targetClan)) {
throw new ConditionFailedException(lang("clans.already.at.war", issuer));
}
boolean isWarRequestEnabled = settingsManager.isWarRequestEnabled();
int maxDifference = settingsManager.getMembersOnlineMaxDifference();
if (!isWarRequestEnabled && maxDifference >= 0) {
int difference = Math.abs(issuerClan.getOnlineMembers().size() - targetClan.getOnlineMembers().size());
if (difference > maxDifference)
throw new ConditionFailedException(lang("you.cant.start.war.online.members.difference", issuer));
}
}
@Override
public @NotNull String getId() {
return "can_war_target";
}
}
@@ -3,6 +3,8 @@ package net.sacredlabyrinth.phaed.simpleclans.commands.conditions;
import co.aikar.commands.*;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
import net.sacredlabyrinth.phaed.simpleclans.commands.ClanPlayerInput;
import net.sacredlabyrinth.phaed.simpleclans.utils.VanishUtils;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
@@ -21,9 +23,16 @@ public class OnlineCondition extends AbstractParameterCondition<ClanPlayerInput>
@Override
public void validateCondition(ConditionContext<BukkitCommandIssuer> context, BukkitCommandExecutionContext execContext, ClanPlayerInput value) throws InvalidCommandArgument {
if (value.getClanPlayer().toPlayer() == null) {
throw new ConditionFailedException(lang("other.player.must.be.online", execContext.getSender()));
Player player = value.getClanPlayer().toPlayer();
if (player != null) {
boolean isVanished = VanishUtils.isVanished(execContext.getSender(), player);
if (!isVanished || !context.hasConfig("ignore_vanished")) {
return;
}
}
throw new ConditionFailedException(lang("other.player.must.be.online", execContext.getSender()));
}
@Override
@@ -18,9 +18,12 @@ public class ClanPlayerInputContextResolver extends AbstractInputOnlyContextReso
@Override
public ClanPlayerInput getContext(BukkitCommandExecutionContext context) throws InvalidCommandArgument {
String arg = context.popFirstArg();
@SuppressWarnings("deprecation")
OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(arg);
ClanPlayer cp = clanManager.getCreateClanPlayer(offlinePlayer.getUniqueId());
ClanPlayer cp = clanManager.getAnyClanPlayer(arg);
if (cp == null) {
@SuppressWarnings("deprecation")
OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(arg);
cp = clanManager.getCreateClanPlayer(offlinePlayer.getUniqueId());
}
return new ClanPlayerInput(cp);
}
@@ -1,6 +1,7 @@
package net.sacredlabyrinth.phaed.simpleclans.commands.data;
import net.sacredlabyrinth.phaed.simpleclans.Clan;
import net.sacredlabyrinth.phaed.simpleclans.Helper;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
import net.sacredlabyrinth.phaed.simpleclans.utils.KDRFormat;
import net.sacredlabyrinth.phaed.simpleclans.utils.VanishUtils;
@@ -23,7 +24,7 @@ public class ClanProfile extends Sendable {
String message = lang("clan.profile").replace("%clan_name%", clan.getName())
.replace("%clan_color_tag%", clan.getColorTag())
.replace("%clan_description%", getDescription())
.replace("%clan_verified%", getVerifiedStatus())
.replace("%clan_status%", Helper.getFormattedClanStatus(clan, sender))
.replace("%clan_leaders%", clan.getLeadersString(sm.getPageLeaderColor(), subColor + ", "))
.replace("%clan_online_count%", String.valueOf(VanishUtils.getNonVanished(sender, clan).size()))
.replace("%clan_size%", String.valueOf(clan.getSize()))
@@ -31,6 +32,7 @@ public class ClanProfile extends Sendable {
.replace("%clan_rival_kills%", String.valueOf(clan.getTotalRival()))
.replace("%clan_neutral_kills%", String.valueOf(clan.getTotalNeutral()))
.replace("%clan_civilian_kills%", String.valueOf(clan.getTotalCivilian()))
.replace("%clan_ally_kills%", String.valueOf(clan.getTotalAlly()))
.replace("%clan_deaths%", String.valueOf(clan.getTotalDeaths()))
.replace("%clan_fee_enabled%", getFeeEnabled())
.replace("%clan_fee_value%", String.valueOf(clan.getMemberFee()))
@@ -38,27 +40,15 @@ public class ClanProfile extends Sendable {
.replace("%clan_rivals%", clan.getRivalString(subColor + ", "))
.replace("%clan_founded%", clan.getFoundedString())
.replace("%clan_inactive_days%", String.valueOf(clan.getInactiveDays()))
.replace("%clan_max_inactive_days%", getMaxInactiveDays());
.replace("%clan_max_inactive_days%", Helper.formatMaxInactiveDays(clan.getMaxInactiveDays()));
sender.sendMessage(message);
}
@NotNull
private String getMaxInactiveDays() {
return String.valueOf(clan.isVerified() ?
sm.getPurgeClan() : sm.getPurgeUnverified());
}
@NotNull
private String getFeeEnabled() {
return clan.isMemberFeeEnabled() ? lang("fee.enabled", sender) : lang("fee.disabled", sender);
}
@NotNull
private String getVerifiedStatus() {
return clan.isVerified() ? sm.getPageTrustedColor() + lang("verified", sender) :
sm.getPageUnTrustedColor() + lang("unverified", sender);
}
@NotNull
private String getDescription() {
return clan.getDescription() != null && !clan.getDescription().isEmpty() ? clan.getDescription() :
@@ -1,6 +1,7 @@
package net.sacredlabyrinth.phaed.simpleclans.commands.data;
import net.sacredlabyrinth.phaed.simpleclans.*;
import net.sacredlabyrinth.phaed.simpleclans.utils.ChatUtils;
import net.sacredlabyrinth.phaed.simpleclans.utils.KDRFormat;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@@ -38,18 +39,19 @@ public class Lookup extends Sendable {
String lookup = lang("player.lookup", sender)
.replace("%player_name%", target.getName())
.replace("%clan_name%", getClanName())
.replace("%player_rank%", Helper.parseColors(target.getRankDisplayName()))
.replace("%player_rank%", ChatUtils.parseColors(target.getRankDisplayName()))
.replace("%player_status%", getPlayerStatus())
.replace("%player_kdr%", KDRFormat.format(target.getKDR()))
.replace("%player_rival_kills%", String.valueOf(target.getRivalKills()))
.replace("%player_neutral_kills%", String.valueOf(target.getNeutralKills()))
.replace("%player_civilian_kills%", String.valueOf(target.getCivilianKills()))
.replace("%player_ally_kills%", String.valueOf(target.getAllyKills()))
.replace("%player_deaths%", String.valueOf(target.getDeaths()))
.replace("%player_join_date%", target.getJoinDateString())
.replace("%player_last_seen%", target.getLastSeenString(sender))
.replace("%player_past_clans%", target.getPastClansString(headColor + ", "))
.replace("%player_inactive_days%", String.valueOf(target.getInactiveDays()))
.replace("%player_max_inactive_days%", String.valueOf(sm.getPurgePlayers()))
.replace("%player_max_inactive_days%", Helper.formatMaxInactiveDays(sm.getPurgePlayers()))
.replace("%kill_type_line%", getKillTypeLine());
sender.sendMessage(lookup);
} else {
@@ -84,7 +86,7 @@ public class Lookup extends Sendable {
if (target.isTrusted()) {
return sm.getPageTrustedColor() + lang("trusted", sender);
}
if (target.getRankId() != null && !target.getRankId().isEmpty()) {
if (!target.getRankId().isEmpty()) {
return sm.getPageTrustedColor() + lang("in.rank", sender);
}
return sm.getPageUnTrustedColor() + lang("untrusted", sender);
@@ -98,8 +100,13 @@ public class Lookup extends Sendable {
if (targetClan == null) {
killType = DARK_GRAY + lang("civilian", sender);
} else if (senderClan != null && senderClan.isRival(targetClan.getTag())) {
killType = WHITE + lang("rival", sender);
} else if (senderClan != null) {
if (senderClan.isRival(targetClan.getTag())) {
killType = WHITE + lang("rival", sender);
}
if (senderClan.equals(targetClan) || senderClan.isAlly(targetClan.getTag())) {
killType = RED + lang("ally", sender);
}
}
killTypeLine = lang("player.lookup.killtype", sender).replace("%player_kill_type%", killType);
@@ -0,0 +1,79 @@
package net.sacredlabyrinth.phaed.simpleclans.commands.staff;
import co.aikar.commands.BaseCommand;
import co.aikar.commands.annotation.*;
import net.sacredlabyrinth.phaed.simpleclans.ChatBlock;
import net.sacredlabyrinth.phaed.simpleclans.Clan;
import net.sacredlabyrinth.phaed.simpleclans.EconomyResponse;
import net.sacredlabyrinth.phaed.simpleclans.commands.ClanInput;
import net.sacredlabyrinth.phaed.simpleclans.events.ClanBalanceUpdateEvent;
import org.bukkit.command.CommandSender;
import static net.md_5.bungee.api.ChatColor.RED;
import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
import static org.bukkit.ChatColor.AQUA;
@CommandAlias("%clan")
@Conditions("%basic_conditions")
@Subcommand("%admin %bank")
public class BankCommand extends BaseCommand {
@Subcommand("%status")
@CommandPermission("simpleclans.admin.bank.status")
@CommandCompletion("@clans")
@Description("{@@command.description.bank.admin.status}")
public void status(CommandSender sender, @Name("clan") ClanInput clanInput) {
Clan clan = clanInput.getClan();
ChatBlock.sendMessage(sender, AQUA + lang("clan.admin.balance", sender, clan.getName(), clan.getBalance()));
}
@Subcommand("%take")
@CommandPermission("simpleclans.admin.bank.take")
@CommandCompletion("@clans")
@Description("{@@command.description.bank.admin.take}")
public void take(CommandSender sender, @Name("clan") ClanInput clanInput, @Name("amount") double amount) {
Clan clan = clanInput.getClan();
amount = Math.abs(amount);
EconomyResponse economyResponse = clan.withdraw(sender, ClanBalanceUpdateEvent.Cause.COMMAND, amount);
switch (economyResponse) {
case SUCCESS:
ChatBlock.sendMessage(sender, AQUA + lang("clan.admin.take", sender, amount, clan.getName()));
clan.addBb(sender.getName(), AQUA + lang("bb.clan.take", sender, amount));
break;
case NOT_ENOUGH_BALANCE:
sender.sendMessage(RED + lang("clan.admin.bank.not.enough.money", sender, clan.getName()));
break;
}
}
@Subcommand("%give")
@CommandPermission("simpleclans.admin.bank.give")
@CommandCompletion("@clans")
@Description("{@@command.description.bank.admin.give}")
public void give(CommandSender sender, @Name("clan") ClanInput clanInput, @Name("amount") double amount) {
Clan clan = clanInput.getClan();
amount = Math.abs(amount);
EconomyResponse economyResponse = clan.deposit(sender, ClanBalanceUpdateEvent.Cause.COMMAND, amount);
if (economyResponse == EconomyResponse.SUCCESS) {
ChatBlock.sendMessage(sender, AQUA + lang("clan.admin.give", sender, amount, clan.getName()));
clan.addBb(sender.getName(), AQUA + lang("bb.clan.give", sender, amount));
}
}
@Subcommand("%set")
@CommandPermission("simpleclans.admin.bank.set")
@CommandCompletion("@clans")
@Description("{@@command.description.bank.admin.set}")
public void set(CommandSender sender, @Name("clan") ClanInput clanInput, @Name("amount") double amount) {
Clan clan = clanInput.getClan();
amount = Math.abs(amount);
EconomyResponse response = clan.setBalance(sender, ClanBalanceUpdateEvent.Cause.COMMAND, amount);
if (response == EconomyResponse.SUCCESS) {
ChatBlock.sendMessage(sender, AQUA + lang("clan.admin.set", sender, clan.getName(), amount));
clan.addBb(sender.getName(), AQUA + lang("bb.clan.set", sender, amount));
}
}
}
@@ -60,8 +60,7 @@ public class StaffCommands extends BaseCommand {
ChatBlock.sendMessage(sender, lang("player.already.in.this.clan", sender));
return;
}
if (oldClan.isLeader(player) && oldClan.getLeaders().size() <= 1) {
if (!oldClan.isPermanent() && oldClan.isLeader(player) && oldClan.getLeaders().size() <= 1) {
ChatBlock.sendMessage(sender, RED + lang("you.cannot.move.the.last.leader", sender));
return;
} else {
@@ -245,7 +244,7 @@ public class StaffCommands extends BaseCommand {
Clan clan = player.getClanPlayer().getClan();
if (clan != null && clan.getMembers().size() == 1) {
clan.disband();
clan.disband(sender, false, false);
}
cm.deleteClanPlayer(player.getClanPlayer());
ChatBlock.sendMessage(sender, AQUA + lang("player.purged", sender));
@@ -273,8 +272,7 @@ public class StaffCommands extends BaseCommand {
@CommandPermission("simpleclans.mod.disband")
@Description("{@@command.description.mod.disband}")
public void disband(CommandSender sender, @Name("clan") ClanInput clan) {
cm.serverAnnounce(AQUA + lang("clan.has.been.disbanded", clan.getClan().getName()));
clan.getClan().disband();
clan.getClan().disband(sender, true, true);
}
@Subcommand("%admin %promote")
@@ -335,4 +333,15 @@ public class StaffCommands extends BaseCommand {
cm.resetKdr(cp);
ChatBlock.sendMessage(sender, RED + lang("you.have.reseted.0.kdr", sender, cp.getName()));
}
@Subcommand("%admin %permanent")
@CommandCompletion("@clans")
@CommandPermission("simpleclans.admin.permanent")
@Description("{@@command.description.admin.permanent}")
public void togglePermanent(CommandSender sender, @Name("clan") ClanInput clan) {
boolean permanent = !clan.getClan().isPermanent();
clan.getClan().setPermanent(permanent);
clan.getClan().addBb(sender.getName(), lang((permanent) ? "permanent.status.enabled" : "permanent.status.disabled", sender.getName()));
ChatBlock.sendMessage(sender, AQUA + lang("you.have.toggled.permanent.status", sender, clan.getClan().getName()));
}
}
@@ -2,9 +2,10 @@ package net.sacredlabyrinth.phaed.simpleclans.conversation;
import net.sacredlabyrinth.phaed.simpleclans.ChatBlock;
import net.sacredlabyrinth.phaed.simpleclans.Clan;
import net.sacredlabyrinth.phaed.simpleclans.Helper;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
import net.sacredlabyrinth.phaed.simpleclans.events.PreCreateClanEvent;
import net.sacredlabyrinth.phaed.simpleclans.utils.ChatUtils;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.conversations.ConversationContext;
@@ -84,12 +85,12 @@ public class CreateClanNamePrompt extends StringPrompt {
private Prompt validateName(@NotNull SimpleClans plugin, @NotNull Player player, @NotNull String input) {
boolean bypass = plugin.getPermissionsManager().has(player, "simpleclans.mod.bypass");
if (!bypass) {
if (Helper.stripColors(input).length() > plugin.getSettingsManager().getClanMaxLength()) {
if (ChatUtils.stripColors(input).length() > plugin.getSettingsManager().getClanMaxLength()) {
return new MessagePromptImpl(ChatColor.RED +
lang("your.clan.name.cannot.be.longer.than.characters", player,
plugin.getSettingsManager().getClanMaxLength()), this);
}
if (Helper.stripColors(input).length() <= plugin.getSettingsManager().getClanMinLength()) {
if (ChatUtils.stripColors(input).length() <= plugin.getSettingsManager().getClanMinLength()) {
return new MessagePromptImpl(ChatColor.RED +
lang("your.clan.name.must.be.longer.than.characters", player,
plugin.getSettingsManager().getClanMinLength()), this);
@@ -1,7 +1,7 @@
package net.sacredlabyrinth.phaed.simpleclans.conversation;
import net.sacredlabyrinth.phaed.simpleclans.Helper;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
import net.sacredlabyrinth.phaed.simpleclans.utils.ChatUtils;
import net.sacredlabyrinth.phaed.simpleclans.utils.TagValidator;
import org.bukkit.ChatColor;
import org.bukkit.conversations.ConversationContext;
@@ -46,7 +46,7 @@ public class CreateClanTagPrompt extends StringPrompt {
@Nullable
private Prompt validateTag(SimpleClans plugin, Player player, @NotNull String clanTag) {
String cleanTag = Helper.stripColors(clanTag);
String cleanTag = ChatUtils.stripColors(clanTag);
if (plugin.getClanManager().isClan(cleanTag)) {
return new MessagePromptImpl(ChatColor.RED +
lang("clan.with.this.tag.already.exists", player), this);
@@ -2,6 +2,9 @@ package net.sacredlabyrinth.phaed.simpleclans.conversation;
import net.sacredlabyrinth.phaed.simpleclans.Clan;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
import net.sacredlabyrinth.phaed.simpleclans.events.CreateRankEvent;
import net.sacredlabyrinth.phaed.simpleclans.events.PreCreateRankEvent;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.conversations.ConversationContext;
import org.bukkit.conversations.Prompt;
@@ -27,11 +30,19 @@ public class CreateRankNamePrompt extends StringPrompt {
if (input == null) return this;
String rank = input.toLowerCase().replace(" ", "_");
PreCreateRankEvent event = new PreCreateRankEvent(player, clan, rank);
Bukkit.getServer().getPluginManager().callEvent(event);
rank = event.getRankName();
if (event.isCancelled()) {
return null;
}
if (clan.hasRank(rank)) {
return new MessagePromptImpl(ChatColor.RED + lang("rank.already.exists", player), this);
}
clan.createRank(rank);
Bukkit.getServer().getPluginManager().callEvent(new CreateRankEvent(player, clan, clan.getRank(rank)));
plugin.getStorageManager().updateClan(clan, true);
return new MessagePromptImpl(ChatColor.AQUA + lang("rank.created", player));
}
@@ -1,9 +1,5 @@
package net.sacredlabyrinth.phaed.simpleclans.conversation;
import java.text.MessageFormat;
import java.util.Arrays;
import java.util.Objects;
import net.sacredlabyrinth.phaed.simpleclans.Clan;
import net.sacredlabyrinth.phaed.simpleclans.ClanPlayer;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
@@ -15,10 +11,13 @@ import org.bukkit.conversations.StringPrompt;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
import java.text.MessageFormat;
import java.util.Arrays;
import java.util.Objects;
import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
/**
*
* @author roinujnosde
*/
public class ResignPrompt extends StringPrompt {
@@ -35,26 +34,22 @@ public class ResignPrompt extends StringPrompt {
if (clan == null) {
return END_OF_CONVERSATION;
}
if (yes.equalsIgnoreCase(input)) {
if (!clan.isLeader(player) || clan.getLeaders().size() > 1) {
if (clan.isPermanent() || !clan.isLeader(player) || clan.getLeaders().size() > 1) {
clan.addBb(player.getName(), ChatColor.AQUA + lang("0.has.resigned", player.getName()));
cp.addResignTime(clan.getTag());
clan.removePlayerFromClan(player.getUniqueId());
return new MessagePromptImpl(ChatColor.AQUA + lang("resign.success", player));
} else if (clan.isLeader(player) && clan.getLeaders().size() == 1) {
clan.disband();
String msgKey = "clan.has.been.disbanded";
//message for the server
plugin.getClanManager().serverAnnounce(ChatColor.AQUA + lang(msgKey, clan.getName()));
//message for the player
return new MessagePromptImpl(ChatColor.AQUA + lang(msgKey, player, clan.getName()));
clan.disband(player, true, false);
return null;
} else {
return new MessagePromptImpl(ChatColor.RED + lang("last.leader.cannot.resign.you.must.appoint.another.leader.or.disband.the.clan", player));
}
} else {
return new MessagePromptImpl(ChatColor.RED + lang("resign.request.cancelled", player));
return new MessagePromptImpl(ChatColor.RED + lang("resign.request.cancelled", player));
}
}
@@ -63,7 +58,7 @@ public class ResignPrompt extends StringPrompt {
Player player = (Player) cc.getForWhom();
return ChatColor.RED + MessageFormat.format(
lang("resign.confirmation", player), Arrays.asList(
lang("resign.yes", player), lang("resign.no", player)));
lang("resign.yes", player), lang("resign.no", player)));
}
}
@@ -7,6 +7,10 @@ import org.bukkit.event.HandlerList;
import org.bukkit.event.player.PlayerEvent;
import org.jetbrains.annotations.NotNull;
/**
* @deprecated use {@link ClanBalanceUpdateEvent}
*/
@Deprecated
public class BankDepositEvent extends PlayerEvent implements Cancellable {
private static final HandlerList HANDLER_LIST = new HandlerList();
@@ -7,6 +7,10 @@ import org.bukkit.event.HandlerList;
import org.bukkit.event.player.PlayerEvent;
import org.jetbrains.annotations.NotNull;
/**
* @deprecated use {@link ClanBalanceUpdateEvent}
*/
@Deprecated
public class BankWithdrawEvent extends PlayerEvent implements Cancellable {
private final Clan clan;
@@ -0,0 +1,127 @@
package net.sacredlabyrinth.phaed.simpleclans.events;
import net.sacredlabyrinth.phaed.simpleclans.Clan;
import org.bukkit.command.CommandSender;
import org.bukkit.event.Cancellable;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public class ClanBalanceUpdateEvent extends Event implements Cancellable {
private static final HandlerList HANDLER_LIST = new HandlerList();
private final CommandSender updater;
private final Clan clan;
private final Cause cause;
private final double balance;
private double newBalance;
private boolean cancelled;
public ClanBalanceUpdateEvent(@Nullable CommandSender updater,
@NotNull Clan clan,
double balance,
double newBalance,
@NotNull Cause cause) {
this.updater = updater;
this.balance = balance;
this.newBalance = newBalance;
this.clan = clan;
this.cause = cause;
}
/**
* @return the balance updater, may be null
*/
public @Nullable CommandSender getUpdater() {
return updater;
}
/**
* @return the Clan involved
*/
public @NotNull Clan getClan() {
return clan;
}
/**
* @return the Clan's current balance
*/
public double getBalance() {
return balance;
}
/**
* @return the Clan's new balance
*/
public double getNewBalance() {
return newBalance;
}
/**
* Sets the Clan's new balance
*
* @param newBalance the new balance
* @throws IllegalArgumentException if newBalance is negative
*/
public void setNewBalance(double newBalance) {
if (newBalance < 0) {
throw new IllegalArgumentException("newBalance cannot be negative");
}
this.newBalance = newBalance;
}
/**
* @return the update cause
*/
public @NotNull Cause getCause() {
return cause;
}
@Override
public @NotNull HandlerList getHandlers() {
return HANDLER_LIST;
}
public static HandlerList getHandlerList() {
return HANDLER_LIST;
}
@Override
public boolean isCancelled() {
return cancelled;
}
/**
* @throws IllegalStateException if the cause of the event is {@link Cause#REVERT}
*/
@Override
public void setCancelled(boolean isCancelled) {
if (getCause() == Cause.REVERT) {
throw new IllegalStateException("cannot cancel REVERT update");
}
this.cancelled = isCancelled;
}
public enum Cause {
UPKEEP,
MEMBER_FEE,
/**
* When a command such as /clan bank deposit causes the update
*/
COMMAND,
/**
* When the balance is updated via API methods
*/
API,
/**
* When the clan data is being loaded and the balance is set, usually on server start up or plugin reload
*/
LOADING,
/**
* When a failed deposit is being refunded, cannot be cancelled
*/
REVERT
}
}
@@ -0,0 +1,43 @@
package net.sacredlabyrinth.phaed.simpleclans.events;
import net.sacredlabyrinth.phaed.simpleclans.Clan;
import net.sacredlabyrinth.phaed.simpleclans.Rank;
import org.bukkit.entity.Player;
import org.bukkit.event.HandlerList;
import org.bukkit.event.player.PlayerEvent;
import org.jetbrains.annotations.NotNull;
/**
* @author Minat0_
*/
public class CreateRankEvent extends PlayerEvent {
private static final HandlerList HANDLER_LIST = new HandlerList();
private final Rank rank;
private final Clan clan;
public CreateRankEvent(Player who, Clan clan, Rank rank) {
super(who);
this.clan = clan;
this.rank = rank;
}
@NotNull
public Rank getRank() {
return rank;
}
@NotNull
public Clan getClan() {
return clan;
}
@Override
public @NotNull HandlerList getHandlers() {
return HANDLER_LIST;
}
public static HandlerList getHandlerList() {
return HANDLER_LIST;
}
}
@@ -0,0 +1,53 @@
package net.sacredlabyrinth.phaed.simpleclans.events;
import net.sacredlabyrinth.phaed.simpleclans.Clan;
import net.sacredlabyrinth.phaed.simpleclans.Rank;
import org.bukkit.entity.Player;
import org.bukkit.event.Cancellable;
import org.bukkit.event.HandlerList;
import org.bukkit.event.player.PlayerEvent;
import org.jetbrains.annotations.NotNull;
/**
* @author Minat0_
*/
public class DeleteRankEvent extends PlayerEvent implements Cancellable {
private static final HandlerList HANDLER_LIST = new HandlerList();
private final Rank rank;
private final Clan clan;
private boolean cancelled;
public DeleteRankEvent(Player who, Clan clan, Rank rank) {
super(who);
this.rank = rank;
this.clan = clan;
}
public Rank getRank() {
return rank;
}
public Clan getClan() {
return clan;
}
@Override
public @NotNull HandlerList getHandlers() {
return HANDLER_LIST;
}
public static HandlerList getHandlerList() {
return HANDLER_LIST;
}
@Override
public boolean isCancelled() {
return cancelled;
}
@Override
public void setCancelled(boolean cancelled) {
this.cancelled = cancelled;
}
}
@@ -0,0 +1,78 @@
package net.sacredlabyrinth.phaed.simpleclans.events;
import net.sacredlabyrinth.phaed.simpleclans.Clan;
import net.sacredlabyrinth.phaed.simpleclans.ClanPlayer;
import net.sacredlabyrinth.phaed.simpleclans.Rank;
import org.bukkit.event.Cancellable;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
/**
* @author Minat0_
*/
public class PlayerRankUpdateEvent extends Event implements Cancellable {
private static final HandlerList HANDLER_LIST = new HandlerList();
private final ClanPlayer target;
private final ClanPlayer issuer;
private final Rank oldRank;
private final Rank newRank;
private final Clan clan;
private boolean cancelled;
public PlayerRankUpdateEvent(@NotNull ClanPlayer issuer, @NotNull ClanPlayer target, @NotNull Clan clan,
@Nullable Rank oldRank, @Nullable Rank newRank) {
this.target = target;
this.issuer = issuer;
this.oldRank = oldRank;
this.clan = clan;
this.newRank = newRank;
}
@Nullable
public Rank getOldRank() {
return oldRank;
}
@NotNull
public Clan getClan() {
return clan;
}
@Nullable
public Rank getNewRank() {
return newRank;
}
@NotNull
public ClanPlayer getIssuer() {
return issuer;
}
@NotNull
public ClanPlayer getTarget() {
return target;
}
@Override
public @NotNull HandlerList getHandlers() {
return HANDLER_LIST;
}
public static HandlerList getHandlerList() {
return HANDLER_LIST;
}
@Override
public boolean isCancelled() {
return cancelled;
}
@Override
public void setCancelled(boolean isCancelled) {
this.cancelled = isCancelled;
}
}
@@ -0,0 +1,58 @@
package net.sacredlabyrinth.phaed.simpleclans.events;
import net.sacredlabyrinth.phaed.simpleclans.Clan;
import org.bukkit.entity.Player;
import org.bukkit.event.Cancellable;
import org.bukkit.event.HandlerList;
import org.bukkit.event.player.PlayerEvent;
import org.jetbrains.annotations.NotNull;
/**
* @author Minat0_
*/
public class PreCreateRankEvent extends PlayerEvent implements Cancellable {
private static final HandlerList HANDLER_LIST = new HandlerList();
private String rankName;
private final Clan clan;
private boolean cancelled;
public PreCreateRankEvent(Player who, Clan clan, String rankName) {
super(who);
this.clan = clan;
this.rankName = rankName;
}
@NotNull
public Clan getClan() {
return clan;
}
@NotNull
public String getRankName() {
return rankName;
}
public void setRankName(@NotNull String rankName) {
this.rankName = rankName;
}
@Override
public @NotNull HandlerList getHandlers() {
return HANDLER_LIST;
}
public static HandlerList getHandlerList() {
return HANDLER_LIST;
}
@Override
public boolean isCancelled() {
return cancelled;
}
@Override
public void setCancelled(boolean isCancelled) {
this.cancelled = isCancelled;
}
}
@@ -0,0 +1,33 @@
package net.sacredlabyrinth.phaed.simpleclans.hooks.papi.resolvers;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
import net.sacredlabyrinth.phaed.simpleclans.hooks.papi.PlaceholderResolver;
import net.sacredlabyrinth.phaed.simpleclans.utils.KDRFormat;
import org.bukkit.OfflinePlayer;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.lang.reflect.Method;
import java.util.Map;
@SuppressWarnings("unused")
public class KdrResolver extends PlaceholderResolver {
public KdrResolver(@NotNull SimpleClans plugin) {
super(plugin);
}
@Override
public @NotNull String getId() {
return "kdr";
}
@Override
public @NotNull String resolve(@Nullable OfflinePlayer player, @NotNull Object object, @NotNull Method method,
@NotNull String placeholder, @NotNull Map<String, String> config) {
Object result = invoke(object, method, placeholder);
if (result instanceof Number) {
return KDRFormat.format(((Number) result).floatValue());
}
return "";
}
}
@@ -0,0 +1,104 @@
package net.sacredlabyrinth.phaed.simpleclans.hooks.protection.providers;
import com.intellectualcrafters.plot.PS;
import com.intellectualcrafters.plot.object.Plot;
import com.plotsquared.bukkit.events.PlayerClaimPlotEvent;
import com.plotsquared.bukkit.util.BukkitUtil;
import net.sacredlabyrinth.phaed.simpleclans.hooks.protection.Land;
import net.sacredlabyrinth.phaed.simpleclans.hooks.protection.ProtectionProvider;
import org.bukkit.Location;
import org.bukkit.OfflinePlayer;
import org.bukkit.World;
import org.bukkit.entity.Player;
import org.bukkit.event.Event;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Collection;
import java.util.Collections;
import java.util.Set;
import java.util.stream.Collectors;
@SuppressWarnings("unused")
public class PlotSquared3Provider implements ProtectionProvider {
private Method getLocation;
private Method getPlots;
@Override
public void setup() {
try {
Class.forName("com.intellectualcrafters.plot.object.Location");
Class.forName("com.intellectualcrafters.plot.object.Plot");
getLocation = BukkitUtil.class.getMethod("getLocation", Location.class);
} catch (NoSuchMethodException | ClassNotFoundException e) {
throw new RuntimeException(e);
}
}
@Override
public @NotNull Set<Land> getLandsAt(@NotNull Location location) {
Plot plot = getPlot(location);
if (plot != null) {
return Collections.singleton(getLand(plot));
}
return Collections.emptySet();
}
private @Nullable Plot getPlot(@NotNull Location location) {
try {
return Plot.getPlot((com.intellectualcrafters.plot.object.Location) getLocation.invoke(null, location));
} catch (IllegalAccessException | InvocationTargetException e) {
return null;
}
}
private Land getLand(@NotNull Plot plot) {
String id = getIdPrefix() + plot.getId().toString();
return new Land(id, plot.getOwners());
}
@Override
public @NotNull Set<Land> getLandsOf(@NotNull OfflinePlayer player, @NotNull World world) {
Set<Plot> plots = PS.get().getPlots(world.getName(), player.getUniqueId());
return plots.stream().map(this::getLand).collect(Collectors.toSet());
}
@Override
public @NotNull String getIdPrefix() {
return "ps";
}
@Override
public void deleteLand(@NotNull String id, @NotNull World world) {
id = id.replace(getIdPrefix(), "");
Collection<Plot> plots = PS.get().getPlots(world.getName());
for (Plot plot : plots) {
if (plot.getId().toString().equals(id)) {
plot.deletePlot(null);
break;
}
}
}
@Override
public @Nullable Class<? extends Event> getCreateLandEvent() {
return PlayerClaimPlotEvent.class;
}
@Override
public @Nullable Player getPlayer(Event event) {
if (event instanceof PlayerClaimPlotEvent) {
return ((PlayerClaimPlotEvent) event).getPlayer();
}
return null;
}
@Override
public @Nullable String getRequiredPluginName() {
return "PlotSquared";
}
}
@@ -0,0 +1,77 @@
package net.sacredlabyrinth.phaed.simpleclans.hooks.protection.providers;
import com.plotsquared.bukkit.util.BukkitUtil;
import com.plotsquared.core.PlotSquared;
import com.plotsquared.core.plot.Plot;
import net.sacredlabyrinth.phaed.simpleclans.hooks.protection.Land;
import net.sacredlabyrinth.phaed.simpleclans.hooks.protection.ProtectionProvider;
import org.bukkit.Location;
import org.bukkit.OfflinePlayer;
import org.bukkit.World;
import org.bukkit.entity.Player;
import org.bukkit.event.Event;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.Collections;
import java.util.Set;
import java.util.stream.Collectors;
@SuppressWarnings("unused")
public class PlotSquared5Provider implements ProtectionProvider {
@Override
public void setup() {
}
@Override
public @NotNull Set<Land> getLandsAt(@NotNull Location location) {
Plot plot = BukkitUtil.getPlot(location);
if (plot != null) {
return Collections.singleton(getLand(plot));
}
return Collections.emptySet();
}
@NotNull
private Land getLand(@NotNull Plot plot) {
return new Land(getIdPrefix() + plot.getId().toString(), plot.getOwners());
}
@Override
public @NotNull Set<Land> getLandsOf(@NotNull OfflinePlayer player, @NotNull World world) {
Set<Plot> plots = PlotSquared.get().getPlots(world.getName(), player.getUniqueId());
return plots.stream().map(this::getLand).collect(Collectors.toSet());
}
@Override
public @NotNull String getIdPrefix() {
return "ps";
}
@Override
public void deleteLand(@NotNull String id, @NotNull World world) {
id = id.replace(getIdPrefix(), "");
for (Plot plot : PlotSquared.get().getPlots(world.getName())) {
if (plot.getId().toString().equals(id)) {
plot.deletePlot(null);
break;
}
}
}
@Override
public @Nullable Class<? extends Event> getCreateLandEvent() {
return null;
}
@Override
public @Nullable Player getPlayer(Event event) {
return null;
}
@Override
public @Nullable String getRequiredPluginName() {
return "PlotSquared";
}
}
@@ -0,0 +1,122 @@
package net.sacredlabyrinth.phaed.simpleclans.hooks.protection.providers;
import com.sk89q.worldguard.bukkit.WorldGuardPlugin;
import com.sk89q.worldguard.protection.ApplicableRegionSet;
import com.sk89q.worldguard.protection.managers.RegionManager;
import com.sk89q.worldguard.protection.regions.ProtectedRegion;
import net.sacredlabyrinth.phaed.simpleclans.hooks.protection.Land;
import net.sacredlabyrinth.phaed.simpleclans.hooks.protection.ProtectionProvider;
import org.bukkit.Location;
import org.bukkit.OfflinePlayer;
import org.bukkit.World;
import org.bukkit.entity.Player;
import org.bukkit.event.Event;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
@SuppressWarnings("unused")
public class WorldGuard6Provider implements ProtectionProvider {
private WorldGuardPlugin worldGuard;
private Method getRegionManager;
private Method getApplicableRegions;
@Override
public void setup() {
worldGuard = WorldGuardPlugin.inst();
try {
getRegionManager = worldGuard.getClass().getMethod("getRegionManager", World.class);
//noinspection JavaReflectionMemberAccess
getApplicableRegions = RegionManager.class.getMethod("getApplicableRegions", Location.class);
} catch (NoSuchMethodException e) {
throw new RuntimeException(e);
}
}
private @Nullable RegionManager getRegionManager(@Nullable World world) {
if (world != null) {
try {
return (RegionManager) getRegionManager.invoke(worldGuard, world);
} catch (IllegalAccessException | InvocationTargetException ignored) {
}
}
return null;
}
private Set<ProtectedRegion> getApplicableRegions(RegionManager regionManager, Location location) {
try {
return ((ApplicableRegionSet) getApplicableRegions.invoke(regionManager, location)).getRegions();
} catch (IllegalAccessException | InvocationTargetException e) {
return Collections.emptySet();
}
}
@NotNull
private Land getLand(ProtectedRegion region) {
return new Land(getIdPrefix() + region.getId(), region.getOwners().getUniqueIds());
}
@Override
public @NotNull Set<Land> getLandsAt(@NotNull Location location) {
HashSet<Land> lands = new HashSet<>();
RegionManager regionManager = getRegionManager(location.getWorld());
if (regionManager != null) {
for (ProtectedRegion region : getApplicableRegions(regionManager, location)) {
lands.add(getLand(region));
}
}
return lands;
}
@Override
public @NotNull Set<Land> getLandsOf(@NotNull OfflinePlayer player, @NotNull World world) {
HashSet<Land> lands = new HashSet<>();
RegionManager regionManager = getRegionManager(world);
if (regionManager != null) {
for (ProtectedRegion region : regionManager.getRegions().values()) {
if (!region.getOwners().getUniqueIds().contains(player.getUniqueId())) {
continue;
}
lands.add(getLand(region));
}
}
return lands;
}
@Override
public @NotNull String getIdPrefix() {
return "wg";
}
@Override
public void deleteLand(@NotNull String id, @NotNull World world) {
id = id.replaceFirst(getIdPrefix(), "");
RegionManager regionManager = getRegionManager(world);
if (regionManager != null) {
regionManager.removeRegion(id);
}
}
@Override
public @Nullable Class<? extends Event> getCreateLandEvent() {
return null;
}
@Override
public @Nullable Player getPlayer(Event event) {
return null;
}
@Override
public @Nullable String getRequiredPluginName() {
return "WorldGuard";
}
}
@@ -12,6 +12,7 @@ import net.sacredlabyrinth.phaed.simpleclans.managers.SettingsManager;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.block.Block;
import org.bukkit.block.BlockState;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.event.*;
@@ -73,7 +74,7 @@ public class LandProtection implements Listener {
cancelWithMessage(player, event, "only.clan.members.can.create.lands");
return;
}
for (ClanPlayer member : clan.getAllMembers()) {
for (ClanPlayer member : clan.getMembers()) {
Set<Land> lands = protectionManager.getLandsOf(Bukkit.getOfflinePlayer(member.getUniqueId()), player.getWorld());
if (lands.size() > 0) {
cancelWithMessage(player, event, "only.one.land.per.clan");
@@ -110,7 +111,11 @@ public class LandProtection implements Listener {
return;
}
BlockPlaceEvent blockPlaceEvent = (BlockPlaceEvent) event;
if (protectionManager.can(PLACE, blockPlaceEvent.getBlock().getLocation(), blockPlaceEvent.getPlayer())) {
Block block = blockPlaceEvent.getBlock();
if (settingsManager.getIgnoredList(PLACE).contains(block.getType().name())) {
return;
}
if (protectionManager.can(PLACE, block.getLocation(), blockPlaceEvent.getPlayer())) {
blockPlaceEvent.setCancelled(false);
}
}, plugin, false);
@@ -153,7 +158,7 @@ public class LandProtection implements Listener {
}
InventoryOpenEvent event = ((InventoryOpenEvent) e);
InventoryHolder holder = event.getInventory().getHolder();
Location location = event.getInventory().getLocation();
Location location = getLocation(holder);
if (holder instanceof Entity && holder == event.getPlayer()) return;
if (location == null) return;
@@ -190,7 +195,11 @@ public class LandProtection implements Listener {
@EventHandler(priority = EventPriority.LOWEST)
public void onPlace(BlockPlaceEvent event) {
if (protectionManager.can(PLACE, event.getBlock().getLocation(), event.getPlayer())) {
Block block = event.getBlock();
if (settingsManager.getIgnoredList(PLACE).contains(block.getType().name())) {
return;
}
if (protectionManager.can(PLACE, block.getLocation(), event.getPlayer())) {
event.setCancelled(true);
}
}
@@ -210,7 +219,7 @@ public class LandProtection implements Listener {
@EventHandler(priority = EventPriority.LOWEST)
public void onInventoryOpen(InventoryOpenEvent event) {
InventoryHolder holder = event.getInventory().getHolder();
Location location = event.getInventory().getLocation();
Location location = getLocation(holder);
if (holder instanceof Entity && holder == event.getPlayer()) return;
if (location == null) return;
@@ -239,6 +248,13 @@ public class LandProtection implements Listener {
}
}
private @Nullable Location getLocation(@Nullable InventoryHolder holder) {
if (holder instanceof BlockState) {
return ((BlockState) holder).getLocation();
}
return null;
}
@NotNull
private ProtectionManager.Action getInteractEventAction(PlayerInteractEvent event) {
ProtectionManager.Action action;
@@ -72,11 +72,14 @@ public class PlayerDeath implements Listener {
}
private void addKill(@NotNull ClanPlayer victim, @NotNull ClanPlayer attacker) {
if (victim.getClan() == null || attacker.getClan() == null || !victim.getClan().isVerified() ||
!attacker.getClan().isVerified()) {
Clan victimClan = victim.getClan();
Clan attackerClan = attacker.getClan();
if (victimClan == null || attackerClan == null || !victimClan.isVerified() || !attackerClan.isVerified()) {
addKill(Kill.Type.CIVILIAN, attacker, victim);
} else if (attacker.getClan().isRival(victim.getTag())) {
} else if (attackerClan.isRival(victim.getTag())) {
addKill(Kill.Type.RIVAL, attacker, victim);
} else if (attackerClan.isAlly(victimClan.getTag()) || attackerClan.equals(victimClan)) {
addKill(Kill.Type.ALLY, attacker, victim);
} else {
addKill(Kill.Type.NEUTRAL, attacker, victim);
}
@@ -77,7 +77,7 @@ public class SCPlayerListener implements Listener {
}
}
@EventHandler
@EventHandler(priority = EventPriority.HIGH)
public void handleChatTags(AsyncPlayerChatEvent event) {
Player player = event.getPlayer();
if (settingsManager.isBlacklistedWorld(player.getWorld())) {
@@ -142,8 +142,7 @@ public class SCPlayerListener implements Listener {
@EventHandler(priority = EventPriority.HIGHEST)
public void onPlayerRespawn(PlayerRespawnEvent event) {
Player player = event.getPlayer();
if (!settingsManager.isTeleportOnSpawn() ||
settingsManager.isBlacklistedWorld(player.getWorld())) {
if (!settingsManager.isTeleportOnSpawn() || settingsManager.isBlacklistedWorld(player.getWorld())) {
return;
}
@@ -3,6 +3,7 @@ package net.sacredlabyrinth.phaed.simpleclans.managers;
import com.cryptomorin.xseries.XMaterial;
import net.sacredlabyrinth.phaed.simpleclans.*;
import net.sacredlabyrinth.phaed.simpleclans.events.ChatEvent;
import net.sacredlabyrinth.phaed.simpleclans.events.ClanBalanceUpdateEvent;
import net.sacredlabyrinth.phaed.simpleclans.events.CreateClanEvent;
import net.sacredlabyrinth.phaed.simpleclans.utils.VanishUtils;
import net.sacredlabyrinth.phaed.simpleclans.uuid.UUIDMigration;
@@ -54,46 +55,44 @@ public final class ClanManager {
/**
* Adds a kill to the memory
*
*/
public void addKill(Kill kill) {
if (kill == null) {
return;
}
if (kill == null) {
return;
}
List<Kill> list = kills.computeIfAbsent(kill.getKiller(), k -> new ArrayList<>());
Iterator<Kill> iterator = list.iterator();
while (iterator.hasNext()) {
Kill oldKill = iterator.next();
if (oldKill.getVictim().equals(kill.getKiller())) {
iterator.remove();
continue;
}
//cleaning
final int delay = plugin.getSettingsManager().getDelayBetweenKills();
long timePassed = oldKill.getTime().until(LocalDateTime.now(), ChronoUnit.MINUTES);
if (timePassed >= delay) {
iterator.remove();
}
}
list.add(kill);
while (iterator.hasNext()) {
Kill oldKill = iterator.next();
if (oldKill.getVictim().equals(kill.getKiller())) {
iterator.remove();
continue;
}
//cleaning
final int delay = plugin.getSettingsManager().getDelayBetweenKills();
long timePassed = oldKill.getTime().until(LocalDateTime.now(), ChronoUnit.MINUTES);
if (timePassed >= delay) {
iterator.remove();
}
}
list.add(kill);
}
/**
* Checks if this kill respects the delay
*
*/
public boolean isKillBeforeDelay(Kill kill) {
if (kill == null) {
return false;
}
List<Kill> list = kills.get(kill.getKiller());
if (list == null) {
return false;
}
public boolean isKillBeforeDelay(Kill kill) {
if (kill == null) {
return false;
}
List<Kill> list = kills.get(kill.getKiller());
if (list == null) {
return false;
}
for (Kill oldKill : list) {
if (oldKill.getVictim().equals(kill.getVictim())) {
@@ -106,12 +105,11 @@ public final class ClanManager {
}
}
return false;
}
return false;
}
/**
* Import a clan into the in-memory store
*
*/
public void importClan(Clan clan) {
this.clans.put(clan.getTag(), clan);
@@ -119,17 +117,15 @@ public final class ClanManager {
/**
* Import a clan player into the in-memory store
*
*/
public void importClanPlayer(ClanPlayer cp) {
if (cp.getUniqueId() != null) {
this.clanPlayers.put(cp.getUniqueId().toString(), cp);
}
if (cp.getUniqueId() != null) {
this.clanPlayers.put(cp.getUniqueId().toString(), cp);
}
}
/**
* Create a new clan
*
*/
public void createClan(Player player, String colorTag, String name) {
ClanPlayer cp = getCreateClanPlayer(player.getUniqueId());
@@ -151,7 +147,6 @@ public final class ClanManager {
/**
* Reset a player's KDR
*
*/
public void resetKdr(ClanPlayer cp) {
cp.setCivilianKills(0);
@@ -163,20 +158,18 @@ public final class ClanManager {
/**
* Delete a players data file
*
*/
public void deleteClanPlayer(ClanPlayer cp) {
Clan clan = cp.getClan();
if (clan != null) {
clan.removePlayerFromClan(cp.getUniqueId());
}
if (clan != null) {
clan.removePlayerFromClan(cp.getUniqueId());
}
clanPlayers.remove(cp.getUniqueId().toString());
plugin.getStorageManager().deleteClanPlayer(cp);
}
/**
* Delete a player data from memory
*
*/
public void deleteClanPlayerFromMemory(UUID playerUniqueId) {
clanPlayers.remove(playerUniqueId.toString());
@@ -184,7 +177,6 @@ public final class ClanManager {
/**
* Remove a clan from memory
*
*/
public void removeClan(String tag) {
clans.remove(tag);
@@ -192,7 +184,6 @@ public final class ClanManager {
/**
* Whether the tag belongs to a clan
*
*/
public boolean isClan(String tag) {
return clans.containsKey(Helper.cleanTag(tag));
@@ -200,7 +191,6 @@ public final class ClanManager {
/**
* Returns the clan the tag belongs to
*
*/
public Clan getClan(String tag) {
return clans.get(Helper.cleanTag(tag));
@@ -237,7 +227,6 @@ public final class ClanManager {
/**
* Returns the collection of all clan players, including the disabled ones
*
*/
public List<ClanPlayer> getAllClanPlayers() {
return new ArrayList<>(clanPlayers.values());
@@ -246,7 +235,6 @@ public final class ClanManager {
/**
* Gets the ClanPlayer data object if a player is currently in a clan, null
* if he's not in a clan Used for BungeeCord Reload ClanPlayer and your Clan
*
*/
public @Nullable ClanPlayer getClanPlayerJoinEvent(Player player) {
SimpleClans.getInstance().getStorageManager().importFromDatabaseOnePlayer(player);
@@ -256,16 +244,14 @@ public final class ClanManager {
/**
* Gets the ClanPlayer data object if a player is currently in a clan, null
* if he's not in a clan
*
*/
public @Nullable ClanPlayer getClanPlayer(OfflinePlayer player) {
return getClanPlayer(player.getUniqueId());
return getClanPlayer(player.getUniqueId());
}
/**
* Gets the ClanPlayer data object if a player is currently in a clan, null
* if he's not in a clan
*
*/
public @Nullable ClanPlayer getClanPlayer(Player player) {
return getClanPlayer((OfflinePlayer) player);
@@ -274,7 +260,6 @@ public final class ClanManager {
/**
* Gets the ClanPlayer data object if a player is currently in a clan, null
* if he's not in a clan
*
*/
public @Nullable ClanPlayer getClanPlayer(UUID playerUniqueId) {
ClanPlayer cp = clanPlayers.get(playerUniqueId.toString());
@@ -299,7 +284,6 @@ public final class ClanManager {
/**
* Gets the ClanPlayer data object if a player is currently in a clan, null
* if he's not in a clan
*
*/
public @Nullable ClanPlayer getClanPlayerName(String playerDisplayName) {
UUID uuid = UUIDMigration.getForcedPlayerUUID(playerDisplayName);
@@ -326,7 +310,6 @@ public final class ClanManager {
* clan players as well, these are players who used to be in a clan but are
* not currently in one, their data file persists and can be accessed. their
* clan will be null though.
*
*/
@Nullable
public ClanPlayer getAnyClanPlayer(UUID playerUniqueId) {
@@ -338,24 +321,24 @@ public final class ClanManager {
public ClanPlayer getAnyClanPlayer(String playerName) {
return getAnyClanPlayer(Bukkit.getOfflinePlayer(playerName).getUniqueId());
}
/**
* Gets the ClanPlayer object for the player, creates one if not found
*
*/
public @Nullable ClanPlayer getCreateClanPlayerUUID(String playerDisplayName) {
UUID playerUniqueId = UUIDMigration.getForcedPlayerUUID(playerDisplayName);
if (playerUniqueId != null) {
return getCreateClanPlayer(playerUniqueId);
} else {
return null;
}
UUID playerUniqueId = UUIDMigration.getForcedPlayerUUID(playerDisplayName);
if (playerUniqueId != null) {
return getCreateClanPlayer(playerUniqueId);
} else {
return null;
}
}
/**
* Gets the ClanPlayer object for the player, creates one if not found
*
*/
public ClanPlayer getCreateClanPlayer(UUID playerUniqueId) {
Objects.requireNonNull(playerUniqueId, "UUID must not be null");
if (clanPlayers.containsKey(playerUniqueId.toString())) {
return clanPlayers.get(playerUniqueId.toString());
}
@@ -394,7 +377,6 @@ public final class ClanManager {
/**
* Update the players display name with his clan's tag
*
*/
public void updateDisplayName(@Nullable Player player) {
// do not update displayname if in compat mode
@@ -435,7 +417,6 @@ public final class ClanManager {
/**
* Process a player and his clan's last seen date
*
*/
public void updateLastSeen(Player player) {
ClanPlayer cp = getAnyClanPlayer(player.getUniqueId());
@@ -457,22 +438,22 @@ public final class ClanManager {
public void ban(String playerName) {
ban(Bukkit.getOfflinePlayer(playerName).getUniqueId());
}
/**
* Bans a player from clan commands
*
*
* @param uuid the player's uuid
*/
public void ban(UUID uuid) {
ClanPlayer cp = getClanPlayer(uuid);
Clan clan = null;
if (cp != null) {
clan = cp.getClan();
clan = cp.getClan();
}
if (clan != null) {
if (clan.getSize() == 1) {
clan.disband();
clan.disband(null, false, false);
} else {
cp.setClan(null);
cp.addPastClan(clan.getColorTag() + (cp.isLeader() ? ChatColor.DARK_RED + "*" : ""));
@@ -490,7 +471,6 @@ public final class ClanManager {
/**
* Get a count of rivable clans
*
*/
public int getRivableClanCount() {
int clanCount = 0;
@@ -506,7 +486,6 @@ public final class ClanManager {
/**
* Returns a formatted string detailing the players armor
*
*/
public String getArmorString(PlayerInventory inv) {
String out = "";
@@ -516,7 +495,7 @@ public final class ClanManager {
Player player = null;
InventoryHolder holder = inv.getHolder();
if (holder instanceof Player) {
player = (Player) holder;
player = (Player) holder;
}
if (h != null) {
@@ -603,7 +582,6 @@ public final class ClanManager {
/**
* Returns a formatted string detailing the players weapons
*
*/
public String getWeaponString(PlayerInventory inv) {
String headColor = plugin.getSettingsManager().getPageHeadingsColor();
@@ -613,7 +591,7 @@ public final class ClanManager {
Player player = null;
InventoryHolder holder = inv.getHolder();
if (holder instanceof Player) {
player = (Player) holder;
player = (Player) holder;
}
int count = getItemCount(inv, XMaterial.DIAMOND_SWORD);
@@ -715,7 +693,7 @@ public final class ClanManager {
Player player = null;
InventoryHolder holder = inv.getHolder();
if (holder instanceof Player) {
player = (Player) holder;
player = (Player) holder;
}
double count = getFoodPoints(inv, XMaterial.APPLE, 4, 2.4);
@@ -763,7 +741,6 @@ public final class ClanManager {
/**
* Returns a formatted string detailing the players health
*
*/
public String getHealthString(double health) {
StringBuilder out = new StringBuilder();
@@ -785,7 +762,6 @@ public final class ClanManager {
/**
* Returns a formatted string detailing the players hunger
*
*/
public String getHungerString(int health) {
StringBuilder out = new StringBuilder();
@@ -804,85 +780,79 @@ public final class ClanManager {
return out.toString();
}
/**
* Sort clans by active
*
*/
public void sortClansByActive(List<Clan> clans, boolean asc) {
clans.sort((c1, c2) -> {
int o = 1;
if (!asc) {
o = -1;
}
return Long.compare(c1.getLastUsed(), c2.getLastUsed()) * o;
});
clans.sort((c1, c2) -> {
int o = 1;
if (!asc) {
o = -1;
}
return Long.compare(c1.getLastUsed(), c2.getLastUsed()) * o;
});
}
/**
* Sort clans by founded date
*
*/
public void sortClansByFounded(List<Clan> clans, boolean asc) {
clans.sort((c1, c2) -> {
int o = 1;
if (!asc) {
o = -1;
}
return Long.compare(c1.getFounded(), c2.getFounded()) * o;
});
clans.sort((c1, c2) -> {
int o = 1;
if (!asc) {
o = -1;
}
return Long.compare(c1.getFounded(), c2.getFounded()) * o;
});
}
/**
* Sort clans by kdr
*
*/
public void sortClansByKDR(List<Clan> clans, boolean asc) {
clans.sort((c1, c2) -> {
int o = 1;
if (!asc) {
o = -1;
}
return Float.compare(c1.getTotalKDR(), c2.getTotalKDR()) * o;
});
clans.sort((c1, c2) -> {
int o = 1;
if (!asc) {
o = -1;
}
return Float.compare(c1.getTotalKDR(), c2.getTotalKDR()) * o;
});
}
/**
* Sort clans by size
*
*/
public void sortClansBySize(List<Clan> clans, boolean asc) {
clans.sort((c1, c2) -> {
int o = 1;
if (!asc) {
o = -1;
}
return Integer.compare(c1.getSize(), c2.getSize()) * o;
});
clans.sort((c1, c2) -> {
int o = 1;
if (!asc) {
o = -1;
}
return Integer.compare(c1.getSize(), c2.getSize()) * o;
});
}
/**
* Sort clans by name
*
*/
public void sortClansByName(List<Clan> clans, boolean asc) {
clans.sort((c1, c2) -> {
int o = 1;
if (!asc) {
o = -1;
}
return c1.getName().compareTo(c2.getName()) * o;
});
clans.sort((c1, c2) -> {
int o = 1;
if (!asc) {
o = -1;
}
return c1.getName().compareTo(c2.getName()) * o;
});
}
/**
* Sort clans by KDR
*
*/
public void sortClansByKDR(List<Clan> clans) {
clans.sort((c1, c2) -> {
@@ -895,7 +865,6 @@ public final class ClanManager {
/**
* Sort clans by KDR
*
*/
public void sortClansBySize(List<Clan> clans) {
clans.sort((c1, c2) -> {
@@ -908,7 +877,6 @@ public final class ClanManager {
/**
* Sort clan players by KDR
*
*/
public void sortClanPlayersByKDR(List<ClanPlayer> cps) {
cps.sort((c1, c2) -> {
@@ -921,7 +889,6 @@ public final class ClanManager {
/**
* Sort clan players by last seen days
*
*/
public void sortClanPlayersByLastSeen(List<ClanPlayer> cps) {
cps.sort((c1, c2) -> {
@@ -949,7 +916,6 @@ public final class ClanManager {
/**
* Purchase member fee set
*
*/
public boolean purchaseMemberFeeSet(Player player) {
if (!plugin.getSettingsManager().isePurchaseMemberFeeSet()) {
@@ -957,13 +923,13 @@ public final class ClanManager {
}
double price = plugin.getSettingsManager().geteMemberFeeSetPrice();
if (plugin.getPermissionsManager().hasEconomy()) {
if (plugin.getPermissionsManager().playerHasMoney(player, price)) {
plugin.getPermissionsManager().playerChargeMoney(player, price);
player.sendMessage(ChatColor.RED + MessageFormat.format(lang("account.has.been.debited",player), price));
player.sendMessage(ChatColor.RED + MessageFormat.format(lang("account.has.been.debited", player), price));
} else {
player.sendMessage(ChatColor.RED + lang("not.sufficient.money",player));
player.sendMessage(ChatColor.RED + lang("not.sufficient.money", player));
return false;
}
}
@@ -973,7 +939,6 @@ public final class ClanManager {
/**
* Purchase clan creation
*
*/
public boolean purchaseCreation(Player player) {
if (!plugin.getSettingsManager().isePurchaseCreation()) {
@@ -985,9 +950,9 @@ public final class ClanManager {
if (plugin.getPermissionsManager().hasEconomy()) {
if (plugin.getPermissionsManager().playerHasMoney(player, price)) {
plugin.getPermissionsManager().playerChargeMoney(player, price);
player.sendMessage(ChatColor.RED + MessageFormat.format(lang("account.has.been.debited",player), price));
player.sendMessage(ChatColor.RED + MessageFormat.format(lang("account.has.been.debited", player), price));
} else {
player.sendMessage(ChatColor.RED + lang("not.sufficient.money",player));
player.sendMessage(ChatColor.RED + lang("not.sufficient.money", player));
return false;
}
}
@@ -997,7 +962,6 @@ public final class ClanManager {
/**
* Purchase invite
*
*/
public boolean purchaseInvite(Player player) {
if (!plugin.getSettingsManager().isePurchaseInvite()) {
@@ -1009,9 +973,9 @@ public final class ClanManager {
if (plugin.getPermissionsManager().hasEconomy()) {
if (plugin.getPermissionsManager().playerHasMoney(player, price)) {
plugin.getPermissionsManager().playerChargeMoney(player, price);
player.sendMessage(ChatColor.RED + MessageFormat.format(lang("account.has.been.debited",player), price));
player.sendMessage(ChatColor.RED + MessageFormat.format(lang("account.has.been.debited", player), price));
} else {
player.sendMessage(ChatColor.RED + lang("not.sufficient.money",player));
player.sendMessage(ChatColor.RED + lang("not.sufficient.money", player));
return false;
}
}
@@ -1021,7 +985,6 @@ public final class ClanManager {
/**
* Purchase Home Teleport
*
*/
public boolean purchaseHomeTeleport(Player player) {
if (!plugin.getSettingsManager().isePurchaseHomeTeleport()) {
@@ -1033,9 +996,9 @@ public final class ClanManager {
if (plugin.getPermissionsManager().hasEconomy()) {
if (plugin.getPermissionsManager().playerHasMoney(player, price)) {
plugin.getPermissionsManager().playerChargeMoney(player, price);
player.sendMessage(ChatColor.RED + MessageFormat.format(lang("account.has.been.debited",player), price));
player.sendMessage(ChatColor.RED + MessageFormat.format(lang("account.has.been.debited", player), price));
} else {
player.sendMessage(ChatColor.RED + lang("not.sufficient.money",player));
player.sendMessage(ChatColor.RED + lang("not.sufficient.money", player));
return false;
}
}
@@ -1045,7 +1008,6 @@ public final class ClanManager {
/**
* Purchase Home Teleport Set
*
*/
public boolean purchaseHomeTeleportSet(Player player) {
if (!plugin.getSettingsManager().isePurchaseHomeTeleportSet()) {
@@ -1057,9 +1019,9 @@ public final class ClanManager {
if (plugin.getPermissionsManager().hasEconomy()) {
if (plugin.getPermissionsManager().playerHasMoney(player, price)) {
plugin.getPermissionsManager().playerChargeMoney(player, price);
player.sendMessage(ChatColor.RED + MessageFormat.format(lang("account.has.been.debited",player), price));
player.sendMessage(ChatColor.RED + MessageFormat.format(lang("account.has.been.debited", player), price));
} else {
player.sendMessage(ChatColor.RED + lang("not.sufficient.money",player));
player.sendMessage(ChatColor.RED + lang("not.sufficient.money", player));
return false;
}
}
@@ -1069,7 +1031,6 @@ public final class ClanManager {
/**
* Purchase Reset Kdr
*
*/
public boolean purchaseResetKdr(Player player) {
if (!plugin.getSettingsManager().isePurchaseResetKdr()) {
@@ -1081,9 +1042,9 @@ public final class ClanManager {
if (plugin.getPermissionsManager().hasEconomy()) {
if (plugin.getPermissionsManager().playerHasMoney(player, price)) {
plugin.getPermissionsManager().playerChargeMoney(player, price);
player.sendMessage(ChatColor.RED + MessageFormat.format(lang("account.has.been.debited",player), price));
player.sendMessage(ChatColor.RED + MessageFormat.format(lang("account.has.been.debited", player), price));
} else {
player.sendMessage(ChatColor.RED + lang("not.sufficient.money",player));
player.sendMessage(ChatColor.RED + lang("not.sufficient.money", player));
return false;
}
}
@@ -1093,7 +1054,6 @@ public final class ClanManager {
/**
* Purchase Home Regroup
*
*/
public boolean purchaseHomeRegroup(Player player) {
ClanPlayer cp = plugin.getClanManager().getClanPlayer(player);
@@ -1112,27 +1072,32 @@ public final class ClanManager {
if (plugin.getPermissionsManager().hasEconomy()) {
if (plugin.getPermissionsManager().playerHasMoney(player, price)) {
plugin.getPermissionsManager().playerChargeMoney(player, price);
player.sendMessage(ChatColor.RED + MessageFormat.format(lang("account.has.been.debited",player), price));
player.sendMessage(ChatColor.RED + MessageFormat.format(lang("account.has.been.debited", player), price));
} else {
player.sendMessage(ChatColor.RED + lang("not.sufficient.money",player));
player.sendMessage(ChatColor.RED + lang("not.sufficient.money", player));
return false;
}
}
} else {
double balance = clan.getBalance();
if (price > balance) {
player.sendMessage(ChatColor.RED + lang("clan.bank.not.enough.money",player));
return false;
switch (clan.withdraw(player, ClanBalanceUpdateEvent.Cause.COMMAND, price)) {
case SUCCESS:
if (SimpleClans.getInstance().getPermissionsManager().playerGrantMoney(player, price)) {
player.sendMessage(ChatColor.AQUA + lang("player.clan.withdraw", player, price));
clan.addBb(player.getName(), ChatColor.AQUA + lang("bb.clan.withdraw", price));
return true;
}
break;
case NOT_ENOUGH_BALANCE:
player.sendMessage(lang("clan.bank.not.enough.money", player));
break;
}
clan.withdraw(price, player);
}
return true;
return false;
}
/**
* Purchase clan verification
*
*/
public boolean purchaseVerification(Player player) {
if (!plugin.getSettingsManager().isePurchaseVerification()) {
@@ -1144,9 +1109,9 @@ public final class ClanManager {
if (plugin.getPermissionsManager().hasEconomy()) {
if (plugin.getPermissionsManager().playerHasMoney(player, price)) {
plugin.getPermissionsManager().playerChargeMoney(player, price);
player.sendMessage(ChatColor.RED + MessageFormat.format(lang("account.has.been.debited",player), price));
player.sendMessage(ChatColor.RED + MessageFormat.format(lang("account.has.been.debited", player), price));
} else {
player.sendMessage(ChatColor.RED + lang("not.sufficient.money",player));
player.sendMessage(ChatColor.RED + lang("not.sufficient.money", player));
return false;
}
}
@@ -1156,7 +1121,6 @@ public final class ClanManager {
/**
* Processes a clan chat command
*
*/
public void processClanChat(Player player, String tag, String msg) {
Clan clan = plugin.getClanManager().getClan(tag);
@@ -1170,7 +1134,6 @@ public final class ClanManager {
/**
* Processes a clan chat command
*
*/
public void processClanChat(Player player, final String msg) {
final ClanPlayer cp = plugin.getClanManager().getClanPlayer(player);
@@ -1187,15 +1150,15 @@ public final class ClanManager {
String command = split[0];
if (command.equals(lang("join",player))) {
if (command.equals(lang("join", player))) {
cp.setChannel(ClanPlayer.Channel.CLAN);
plugin.getStorageManager().updateClanPlayer(cp);
ChatBlock.sendMessage(player, lang("joined.clan.chat", player));
} else if (command.equals(lang("leave",player))) {
} else if (command.equals(lang("leave", player))) {
cp.setChannel(ClanPlayer.Channel.NONE);
plugin.getStorageManager().updateClanPlayer(cp);
ChatBlock.sendMessage(player, lang("left.clan.chat", player));
} else if (command.equals(lang("mute",player))) {
} else if (command.equals(lang("mute", player))) {
if (!cp.isMuted()) {
cp.setMuted(true);
ChatBlock.sendMessage(player, lang("muted.clan.chat", player));
@@ -1263,7 +1226,6 @@ public final class ClanManager {
/**
* Processes a ally chat command
*
*/
public void processAllyChat(Player player, final String msg) {
final ClanPlayer cp = plugin.getClanManager().getClanPlayer(player);
@@ -1304,9 +1266,9 @@ public final class ClanManager {
if (ally.isMutedAlly()) {
continue;
}
if (player.getUniqueId().equals(ally.getUniqueId())) {
continue;
}
if (player.getUniqueId().equals(ally.getUniqueId())) {
continue;
}
receivers.add(ally);
}
@@ -1336,8 +1298,8 @@ public final class ClanManager {
/**
* Processes a global chat command
*
*/
@Deprecated
public boolean processGlobalChat(Player player, String msg) {
ClanPlayer cp = plugin.getClanManager().getClanPlayer(player.getUniqueId());
@@ -1353,11 +1315,11 @@ public final class ClanManager {
String command = split[0];
if (command.equals(lang("on",player))) {
if (command.equals(lang("on", player))) {
cp.setGlobalChat(true);
plugin.getStorageManager().updateClanPlayer(cp);
ChatBlock.sendMessage(player, ChatColor.AQUA + "You have enabled global chat");
} else if (command.equals(lang("off",player))) {
} else if (command.equals(lang("off", player))) {
cp.setGlobalChat(false);
plugin.getStorageManager().updateClanPlayer(cp);
ChatBlock.sendMessage(player, ChatColor.AQUA + "You have disabled global chat");
@@ -9,10 +9,7 @@ import net.sacredlabyrinth.phaed.simpleclans.events.WarStartEvent;
import net.sacredlabyrinth.phaed.simpleclans.hooks.protection.Land;
import net.sacredlabyrinth.phaed.simpleclans.hooks.protection.ProtectionProvider;
import net.sacredlabyrinth.phaed.simpleclans.listeners.LandProtection;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.OfflinePlayer;
import org.bukkit.World;
import org.bukkit.*;
import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitTask;
import org.jetbrains.annotations.NotNull;
@@ -50,6 +47,9 @@ public class ProtectionManager {
public void registerListeners() {
landProtection = new LandProtection(plugin);
if (!settingsManager.isWarEnabled() && !settingsManager.isLandSharing()) {
return;
}
landProtection.registerListeners();
}
@@ -103,6 +103,9 @@ public class ProtectionManager {
public boolean can(@NotNull Action action, @NotNull Location location, @NotNull Player player, @Nullable Player other) {
for (Land land : getLandsAt(location)) {
for (UUID owner : land.getOwners()) {
if (owner == null) {
continue;
}
Player involved;
if (other != null && player.getUniqueId().equals(owner)) {
involved = other;
@@ -118,16 +121,23 @@ public class ProtectionManager {
return false;
}
public boolean addWar(@NotNull War war) {
@SuppressWarnings("UnusedReturnValue")
public boolean addWar(@NotNull ClanPlayer requester, Clan requestClan, Clan targetClan) {
War war = new War(requestClan, targetClan);
if (wars.containsKey(war)) {
return false;
}
WarStartEvent event = new WarStartEvent(war);
Bukkit.getPluginManager().callEvent(event);
if (event.isCancelled()) {
return false;
}
requestClan.addWarringClan(requester, targetClan);
targetClan.addWarringClan(requester, requestClan);
wars.put(war, scheduleTask(war, settingsManager.getWarNormalExpirationTime()));
return true;
}
@@ -233,22 +243,34 @@ public class ProtectionManager {
logger.log(Level.WARNING, String.format("Error instantiating provider %s", className), ex);
}
if (instance instanceof ProtectionProvider) {
ProtectionProvider provider = (ProtectionProvider) instance;
String requiredPlugin = provider.getRequiredPluginName();
if (requiredPlugin != null && Bukkit.getPluginManager().getPlugin(requiredPlugin) == null) {
logger.warning(String.format("Required plugin %s for the provider %s was not found!",
requiredPlugin, instance.getClass().getSimpleName()));
continue;
}
provider.setup();
providers.add(provider);
landProtection.registerCreateLandEvent(provider, provider.getCreateLandEvent());
registerProvider((ProtectionProvider) instance);
} else {
logger.warning(String.format("%s is not an instance of ProtectionProvider", className));
}
}
}
private void registerProvider(ProtectionProvider provider) {
String requiredPlugin = provider.getRequiredPluginName();
String providerName = provider.getClass().getSimpleName();
if (requiredPlugin != null && Bukkit.getPluginManager().getPlugin(requiredPlugin) == null) {
logger.warning(String.format("Required plugin %s for the provider %s was not found!",
requiredPlugin, providerName));
return;
}
try {
provider.setup();
} catch (LinkageError | Exception throwable) {
logger.log(Level.WARNING, String.format("Error registering provider %s", providerName));
if (settingsManager.isDebugging()) {
throwable.printStackTrace();
}
return;
}
providers.add(provider);
landProtection.registerCreateLandEvent(provider, provider.getCreateLandEvent());
}
@NotNull
private Class<?> getProviderClass(String className) throws ClassNotFoundException {
try {
@@ -10,6 +10,8 @@ import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitRunnable;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.text.MessageFormat;
import java.util.*;
@@ -211,13 +213,15 @@ public final class RequestManager {
}
public void processResults(Request req) {
Clan requesterClan = req.getClan();
ClanPlayer requesterCp = req.getRequester();
Clan requestClan = req.getClan();
ClanPlayer requester = req.getRequester();
String target = req.getTarget();
//may be null
@Nullable
Clan targetClan = plugin.getClanManager().getClan(target);
//may be null
@Nullable
UUID targetPlayer = UUIDMigration.getForcedPlayerUUID(target);
List<String> accepts = req.getAccepts();
@@ -225,35 +229,35 @@ public final class RequestManager {
switch (req.getType()) {
case START_WAR:
processStartWar(requesterClan, requesterCp, targetClan, accepts, denies);
processStartWar(requester, requestClan, targetClan, accepts, denies);
break;
case END_WAR:
processEndWar(requesterClan, requesterCp, targetClan, accepts, denies);
processEndWar(requester, requestClan, targetClan, accepts, denies);
break;
case CREATE_ALLY:
processCreateAlly(requesterClan, requesterCp, targetClan, accepts, denies);
processCreateAlly(requester, requestClan, targetClan, accepts, denies);
break;
case BREAK_RIVALRY:
processBreakRivalry(requesterClan, requesterCp, targetClan, accepts, denies);
processBreakRivalry(requester, requestClan, targetClan, accepts, denies);
break;
case DEMOTE: case PROMOTE:
if (!req.votingFinished() || targetPlayer == null) {
return;
}
target = requesterClan.getTag();
target = requestClan.getTag();
if (req.getType() == ClanRequest.DEMOTE) {
processDemote(req, requesterClan, targetPlayer, denies);
processDemote(req, requestClan, targetPlayer, denies);
}
if (req.getType() == ClanRequest.PROMOTE) {
processPromote(req, requesterClan, targetPlayer, denies);
processPromote(req, requestClan, targetPlayer, denies);
}
break;
case DISBAND:
if (!req.votingFinished()) {
return;
}
processDisband(requesterClan, denies);
processDisband(requestClan, denies);
break;
default:
return;
@@ -264,106 +268,96 @@ public final class RequestManager {
req.cleanVotes();
}
private void processDisband(Clan requesterClan, List<String> denies) {
private void processDisband(Clan requestClan, List<String> denies) {
if (denies.isEmpty()) {
requesterClan.addBb(lang("leaders"), ChatColor.AQUA + lang("has.been.disbanded", requesterClan.getName()));
requesterClan.disband();
requestClan.disband();
} else {
String deniers = Helper.toMessage(Helper.toArray(denies), ", ");
requesterClan.leaderAnnounce(ChatColor.RED + lang("clan.deletion", deniers));
requestClan.leaderAnnounce(ChatColor.RED + lang("clan.deletion", deniers));
}
}
private void processPromote(Request req, Clan requesterClan, UUID targetPlayer, List<String> denies) {
private void processPromote(Request req, Clan requestClan, UUID targetPlayer, List<String> denies) {
String promotedName = req.getTarget();
if (denies.isEmpty()) {
requesterClan.addBb(lang("leaders"), ChatColor.AQUA + lang("promoted.to.leader", promotedName));
requesterClan.promote(targetPlayer);
requestClan.addBb(lang("leaders"), ChatColor.AQUA + lang("promoted.to.leader", promotedName));
requestClan.promote(targetPlayer);
} else {
String deniers = Helper.toMessage(Helper.toArray(denies), ", ");
requesterClan.leaderAnnounce(ChatColor.RED + lang("denied.the.promotion", deniers, promotedName));
requestClan.leaderAnnounce(ChatColor.RED + lang("denied.the.promotion", deniers, promotedName));
}
}
private void processDemote(Request req, Clan requesterClan, UUID targetPlayer, List<String> denies) {
private void processDemote(Request req, Clan requestClan, UUID targetPlayer, List<String> denies) {
String demotedName = req.getTarget();
if (denies.isEmpty()) {
requesterClan.addBb(lang("leaders"), ChatColor.AQUA
requestClan.addBb(lang("leaders"), ChatColor.AQUA
+ lang("demoted.back.to.member", demotedName));
requesterClan.demote(targetPlayer);
requestClan.demote(targetPlayer);
} else {
String deniers = Helper.toMessage(Helper.toArray(denies), ", ");
requesterClan.leaderAnnounce(
requestClan.leaderAnnounce(
ChatColor.RED + lang("denied.demotion", deniers, demotedName));
}
}
private void processBreakRivalry(Clan requesterClan, ClanPlayer requesterCp, Clan targetClan, List<String> accepts,
private void processBreakRivalry(ClanPlayer requester, Clan requestClan, Clan targetClan, List<String> accepts,
List<String> denies) {
if (targetClan != null && requesterClan != null) {
if (targetClan != null && requestClan != null) {
if (!accepts.isEmpty()) {
requesterClan.removeRival(targetClan);
targetClan.addBb(requesterCp.getName(), ChatColor.AQUA + lang("broken.the.rivalry", accepts.get(0), requesterClan.getName()));
requesterClan.addBb(requesterCp.getName(), ChatColor.AQUA + lang("broken.the.rivalry.with", requesterCp.getName(), targetClan.getName()));
requestClan.removeRival(targetClan);
targetClan.addBb(requester.getName(), ChatColor.AQUA + lang("broken.the.rivalry", accepts.get(0), requestClan.getName()));
requestClan.addBb(requester.getName(), ChatColor.AQUA + lang("broken.the.rivalry.with", requester.getName(), targetClan.getName()));
} else {
targetClan.addBb(requesterCp.getName(), ChatColor.AQUA + lang("denied.to.make.peace", denies.get(0), requesterClan.getName()));
requesterClan.addBb(requesterCp.getName(), ChatColor.AQUA + lang("peace.agreement.denied", targetClan.getName()));
targetClan.addBb(requester.getName(), ChatColor.AQUA + lang("denied.to.make.peace", denies.get(0), requestClan.getName()));
requestClan.addBb(requester.getName(), ChatColor.AQUA + lang("peace.agreement.denied", targetClan.getName()));
}
}
}
private void processCreateAlly(Clan requesterClan, ClanPlayer requesterCp, Clan targetClan, List<String> accepts,
private void processCreateAlly(ClanPlayer requester, Clan requestClan, Clan targetClan, List<String> accepts,
List<String> denies) {
if (targetClan != null && requesterClan != null) {
if (targetClan != null && requestClan != null) {
if (!accepts.isEmpty()) {
requesterClan.addAlly(targetClan);
requestClan.addAlly(targetClan);
targetClan.addBb(requesterCp.getName(), ChatColor.AQUA + lang("accepted.an.alliance", accepts.get(0), requesterClan.getName()));
requesterClan.addBb(requesterCp.getName(), ChatColor.AQUA + lang("created.an.alliance", requesterCp.getName(), targetClan.getName()));
targetClan.addBb(requester.getName(), ChatColor.AQUA + lang("accepted.an.alliance", accepts.get(0), requestClan.getName()));
requestClan.addBb(requester.getName(), ChatColor.AQUA + lang("created.an.alliance", requester.getName(), targetClan.getName()));
} else {
targetClan.addBb(requesterCp.getName(), ChatColor.AQUA + lang("denied.an.alliance", denies.get(0), requesterClan.getName()));
requesterClan.addBb(requesterCp.getName(), ChatColor.AQUA + lang("the.alliance.was.denied", targetClan.getName()));
targetClan.addBb(requester.getName(), ChatColor.AQUA + lang("denied.an.alliance", denies.get(0), requestClan.getName()));
requestClan.addBb(requester.getName(), ChatColor.AQUA + lang("the.alliance.was.denied", targetClan.getName()));
}
}
}
private void processEndWar(Clan requesterClan, ClanPlayer requesterCp, Clan targetClan, List<String> accepts,
List<String> denies) {
if (requesterClan != null && targetClan != null) {
private void processEndWar(ClanPlayer requester, Clan requestClan, Clan targetClan, List<String> accepts,
List<String> denies) {
if (requestClan != null && targetClan != null) {
if (!accepts.isEmpty()) {
War war = plugin.getProtectionManager().getWar(requesterClan, requesterClan);
War war = plugin.getProtectionManager().getWar(requestClan, requestClan);
plugin.getProtectionManager().removeWar(war, WarEndEvent.Reason.REQUEST);
requesterClan.removeWarringClan(targetClan);
targetClan.removeWarringClan(requesterClan);
requestClan.removeWarringClan(targetClan);
targetClan.removeWarringClan(requestClan);
targetClan.addBb(requesterCp.getName(), ChatColor.AQUA + lang("you.are.no.longer.at.war", accepts.get(0), requesterClan.getColorTag()));
requesterClan.addBb(requesterCp.getName(), ChatColor.AQUA + lang("you.are.no.longer.at.war", requesterClan.getName(), targetClan.getColorTag()));
targetClan.addBb(requester.getName(), ChatColor.AQUA + lang("you.are.no.longer.at.war", accepts.get(0), requestClan.getColorTag()));
requestClan.addBb(requester.getName(), ChatColor.AQUA + lang("you.are.no.longer.at.war", requestClan.getName(), targetClan.getColorTag()));
} else {
targetClan.addBb(requesterCp.getName(), ChatColor.AQUA + lang("denied.war.end", denies.get(0), requesterClan.getName()));
requesterClan.addBb(requesterCp.getName(), ChatColor.AQUA + lang("end.war.denied", targetClan.getName()));
targetClan.addBb(requester.getName(), ChatColor.AQUA + lang("denied.war.end", denies.get(0), requestClan.getName()));
requestClan.addBb(requester.getName(), ChatColor.AQUA + lang("end.war.denied", targetClan.getName()));
}
}
}
private void processStartWar(Clan requesterClan, ClanPlayer requesterCp, Clan targetClan, List<String> accepts,
private void processStartWar(ClanPlayer requester, Clan requestClan, Clan targetClan, List<String> accepts,
List<String> denies) {
if (requesterClan != null && targetClan != null) {
if (requestClan != null && targetClan != null) {
if (!accepts.isEmpty()) {
if (!plugin.getProtectionManager().addWar(new War(requesterClan, targetClan))) {
return;
}
requesterClan.addWarringClan(targetClan);
targetClan.addWarringClan(requesterClan);
targetClan.addBb(requesterCp.getName(), ChatColor.AQUA + lang("you.are.at.war",
targetClan.getName(), requesterClan.getColorTag()));
requesterClan.addBb(requesterCp.getName(), ChatColor.AQUA + lang("you.are.at.war",
requesterClan.getName(), targetClan.getColorTag()));
plugin.getProtectionManager().addWar(requester, requestClan, targetClan);
} else {
targetClan.addBb(requesterCp.getName(), ChatColor.AQUA + lang("denied.war.req", denies.get(0),
requesterClan.getName()));
requesterClan.addBb(requesterCp.getName(), ChatColor.AQUA + lang("end.war.denied",
targetClan.addBb(requester.getName(), ChatColor.AQUA + lang("denied.war.req", denies.get(0),
requestClan.getName()));
requestClan.addBb(requester.getName(), ChatColor.AQUA + lang("end.war.denied",
targetClan.getName()));
}
}
@@ -387,6 +381,19 @@ public final class RequestManager {
}
public void removeRequest(@NotNull String keyOrTarget) {
Iterator<Map.Entry<String, Request>> iterator = requests.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry<String, Request> entry = iterator.next();
final String requester = entry.getKey();
final String target = entry.getValue().getTarget();
if (keyOrTarget.equals(requester) || keyOrTarget.equals(target)) {
entry.getValue().cleanVotes();
iterator.remove();
}
}
}
/**
* Starts the task that asks for the votes of all requests
*/
@@ -1,24 +1,23 @@
package net.sacredlabyrinth.phaed.simpleclans.managers;
import java.io.File;
import java.io.IOException;
import java.util.*;
import com.cryptomorin.xseries.XMaterial;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import net.sacredlabyrinth.phaed.simpleclans.utils.RankingNumberResolver.RankingType;
import org.bukkit.World;
import org.bukkit.configuration.file.FileConfiguration;
import net.sacredlabyrinth.phaed.simpleclans.Helper;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
import net.sacredlabyrinth.phaed.simpleclans.utils.RankingNumberResolver.RankingType;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.event.EventPriority;
import org.bukkit.plugin.Plugin;
import org.jetbrains.annotations.Contract;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.io.File;
import java.io.IOException;
import java.util.*;
/**
* @author phaed
*/
@@ -201,7 +200,6 @@ public final class SettingsManager {
private boolean warEnabled;
private boolean landSharing;
private List<String> protectionProviders;
private EventPriority warListenerPriority;
private boolean onlyLeadersCanCreateLands;
private boolean onlyOneLandPerClan;
private boolean setBaseOnlyInLand;
@@ -418,7 +416,6 @@ public final class SettingsManager {
warEnabled = getConfig().getBoolean("war-and-protection.war-enabled", false);
landSharing = getConfig().getBoolean("war-and-protection.land-sharing", true);
protectionProviders = getConfig().getStringList("war-and-protection.protection-providers");
warListenerPriority = EventPriority.valueOf(getConfig().getString("war-and-protection.listener-priority", "HIGHEST"));
onlyLeadersCanCreateLands = getConfig().getBoolean("war-and-protection.land-creation.only-leaders", false);
onlyOneLandPerClan = getConfig().getBoolean("war-and-protection.land-creation.only-one-per-clan", false);
setBaseOnlyInLand = getConfig().getBoolean("war-and-protection.set-base-only-in-land", false);
@@ -451,6 +448,10 @@ public final class SettingsManager {
}
}
public boolean isWarRequestEnabled() {
return getConfig().getBoolean("war-and-protection.war-start.request-enabled", true);
}
@SuppressWarnings("BooleanMethodIsAlwaysInverted")
public boolean isWarEnabled() {
return warEnabled;
@@ -461,6 +462,10 @@ public final class SettingsManager {
return landSharing;
}
public boolean isEditAllLands() {
return getConfig().getBoolean("war-and-protection.edit-all-lands", false);
}
public int getWarNormalExpirationTime() {
return getConfig().getInt("war-and-protection.war-normal-expiration-time", 60) * 60 * 20;
}
@@ -474,7 +479,11 @@ public final class SettingsManager {
}
public EventPriority getWarListenerPriority() {
return warListenerPriority;
return EventPriority.valueOf(getConfig().getString("war-and-protection.listeners.priority", "HIGHEST"));
}
public List<String> getIgnoredList(ProtectionManager.Action action) {
return getConfig().getStringList("war-and-protection.listeners.ignored-list." + action.name());
}
public boolean isActionAllowedInWar(@NotNull ProtectionManager.Action action) {
@@ -1315,6 +1324,10 @@ public final class SettingsManager {
return clanChatPlayerBracketRight;
}
public double getKwAlly() {
return getConfig().getDouble("kill-weights.ally");
}
/**
* @return the kwRival
*/
@@ -1701,7 +1714,7 @@ public final class SettingsManager {
* @return the HomeRegroupPrice
*/
public double getHomeRegroupPrice() {
return eHomeRegroupPrice;
return Math.abs(eHomeRegroupPrice);
}
/**
@@ -1819,6 +1832,10 @@ public final class SettingsManager {
this.forceCommandPriority = forceCommandPriority;
}
public int getMembersOnlineMaxDifference() {
return getConfig().getInt("war-and-protection.war-start.members-online-max-difference", 5);
}
public int getMaxMembers() {
return this.maxMembers;
}
@@ -1,9 +1,8 @@
package net.sacredlabyrinth.phaed.simpleclans.managers;
import com.google.common.base.Charsets;
import net.sacredlabyrinth.phaed.simpleclans.*;
import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
import net.sacredlabyrinth.phaed.simpleclans.events.ClanBalanceUpdateEvent;
import net.sacredlabyrinth.phaed.simpleclans.storage.DBCore;
import net.sacredlabyrinth.phaed.simpleclans.storage.MySQLCore;
import net.sacredlabyrinth.phaed.simpleclans.storage.SQLiteCore;
@@ -11,22 +10,23 @@ import net.sacredlabyrinth.phaed.simpleclans.utils.ChatUtils;
import net.sacredlabyrinth.phaed.simpleclans.utils.YAMLSerializer;
import net.sacredlabyrinth.phaed.simpleclans.uuid.UUIDFetcher;
import net.sacredlabyrinth.phaed.simpleclans.uuid.UUIDMigration;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.scheduler.BukkitRunnable;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.json.simple.JSONObject;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.*;
import java.text.MessageFormat;
import java.util.*;
import java.util.Date;
import java.util.logging.Level;
import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
/**
* @author phaed
*/
@@ -51,8 +51,8 @@ public final class StorageManager {
/**
* Retrieve a player's pending chat lines
*
* @param player
* @return
* @param player the Player
* @return the ChatBlock
*/
public ChatBlock getChatBlock(Player player) {
return chatBlocks.get(player.getUniqueId().toString());
@@ -61,8 +61,6 @@ public final class StorageManager {
/**
* Store pending chat lines for a player
*
* @param player
* @param cb
*/
public void addChatBlock(CommandSender player, ChatBlock cb) {
UUID uuid = UUIDMigration.getForcedPlayerUUID(player.getName());
@@ -124,6 +122,7 @@ public final class StorageManager {
+ " `neutral_kills` int(11) default NULL,"
+ " `rival_kills` int(11) default NULL,"
+ " `civilian_kills` int(11) default NULL,"
+ " `ally_kills` int(11) default NULL,"
+ " `deaths` int(11) default NULL,"
+ " `last_seen` bigint NOT NULL,"
+ " `join_date` bigint NOT NULL,"
@@ -200,6 +199,7 @@ public final class StorageManager {
+ " `neutral_kills` int(11) default NULL,"
+ " `rival_kills` int(11) default NULL,"
+ " `civilian_kills` int(11) default NULL,"
+ " `ally_kills` int(11) default NULL,"
+ " `deaths` int(11) default NULL,"
+ " `last_seen` bigint NOT NULL,"
+ " `join_date` bigint NOT NULL,"
@@ -281,7 +281,6 @@ public final class StorageManager {
* Import one ClanPlayer data from database to memory
* Used for BungeeCord Reload ClanPlayer and your Clan
*
* @param player
*/
public void importFromDatabaseOnePlayer(Player player) {
plugin.getClanManager().deleteClanPlayerFromMemory(player.getUniqueId());
@@ -304,6 +303,9 @@ public final class StorageManager {
List<Clan> purge = new ArrayList<>();
for (Clan clan : clans) {
if (clan.isPermanent()) {
continue;
}
if (clan.isVerified()) {
int purgeClan = plugin.getSettingsManager().getPurgeClan();
if (clan.getInactiveDays() > purgeClan && purgeClan > 0) {
@@ -347,12 +349,11 @@ public final class StorageManager {
/**
* Retrieves all simple clans from the database
*
* @return
*/
public List<Clan> retrieveClans() {
List<Clan> out = new ArrayList<>();
String query = "SELECT * FROM `sc_clans`;";
String query = "SELECT * FROM `sc_clans`;";
ResultSet res = core.select(query);
if (res != null) {
@@ -398,7 +399,7 @@ public final class StorageManager {
clan.setPackedBb(packed_bb);
clan.setFounded(founded);
clan.setLastUsed(last_used);
clan.setBalance(balance);
clan.setBalance(null, ClanBalanceUpdateEvent.Cause.LOADING, balance);
clan.setMemberFee(feeValue);
clan.setMemberFeeEnabled(feeEnabled);
clan.setRanks(Helper.ranksFromJson(ranks));
@@ -422,11 +423,8 @@ public final class StorageManager {
/**
* Retrieves one Clan from the database
* Used for BungeeCord Reload ClanPlayer and your Clan
*
* @param tagClan
* @return
*/
public Clan retrieveOneClan(String tagClan) {
public @Nullable Clan retrieveOneClan(String tagClan) {
Clan out = null;
String query = "SELECT * FROM `sc_clans` WHERE `tag` = '" + tagClan + "';";
@@ -475,7 +473,7 @@ public final class StorageManager {
clan.setPackedBb(packed_bb);
clan.setFounded(founded);
clan.setLastUsed(last_used);
clan.setBalance(balance);
clan.setBalance(null, ClanBalanceUpdateEvent.Cause.LOADING, balance);
clan.setMemberFee(feeValue);
clan.setMemberFeeEnabled(feeEnabled);
clan.setRanks(Helper.ranksFromJson(ranks));
@@ -499,7 +497,6 @@ public final class StorageManager {
/**
* Retrieves all clan players from the database
*
* @return
*/
public List<ClanPlayer> retrieveClanPlayers() {
List<ClanPlayer> out = new ArrayList<>();
@@ -520,6 +517,7 @@ public final class StorageManager {
int neutral_kills = res.getInt("neutral_kills");
int rival_kills = res.getInt("rival_kills");
int civilian_kills = res.getInt("civilian_kills");
int ally_kills = res.getInt("ally_kills");
int deaths = res.getInt("deaths");
long last_seen = res.getLong("last_seen");
long join_date = res.getLong("join_date");
@@ -547,6 +545,7 @@ public final class StorageManager {
cp.setNeutralKills(neutral_kills);
cp.setRivalKills(rival_kills);
cp.setCivilianKills(civilian_kills);
cp.setAllyKills(ally_kills);
cp.setDeaths(deaths);
cp.setLastSeen(last_seen);
cp.setJoinDate(join_date);
@@ -580,11 +579,8 @@ public final class StorageManager {
/**
* Retrieves one clan player from the database
* Used for BungeeCord Reload ClanPlayer and your Clan
*
* @param playerUniqueId
* @return
*/
public ClanPlayer retrieveOneClanPlayer(UUID playerUniqueId) {
public @Nullable ClanPlayer retrieveOneClanPlayer(UUID playerUniqueId) {
ClanPlayer out = null;
String query = "SELECT * FROM `sc_players` WHERE `uuid` = '" + playerUniqueId.toString() + "';";
@@ -603,11 +599,12 @@ public final class StorageManager {
int neutral_kills = res.getInt("neutral_kills");
int rival_kills = res.getInt("rival_kills");
int civilian_kills = res.getInt("civilian_kills");
int ally_kills = res.getInt("ally_kills");
int deaths = res.getInt("deaths");
long last_seen = res.getLong("last_seen");
long join_date = res.getLong("join_date");
String flags = res.getString("flags");
String packed_past_clans = Helper.parseColors(res.getString("packed_past_clans"));
String packed_past_clans = ChatUtils.parseColors(res.getString("packed_past_clans"));
String resign_times = res.getString("resign_times");
Locale locale = Helper.forLanguageTag(res.getString("locale"));
@@ -630,6 +627,7 @@ public final class StorageManager {
cp.setNeutralKills(neutral_kills);
cp.setRivalKills(rival_kills);
cp.setCivilianKills(civilian_kills);
cp.setAllyKills(ally_kills);
cp.setDeaths(deaths);
cp.setLastSeen(last_seen);
cp.setJoinDate(join_date);
@@ -642,7 +640,7 @@ public final class StorageManager {
Clan clanDB = retrieveOneClan(tag);
Clan clan = SimpleClans.getInstance().getClanManager().getClan(tag);
if (clan != null) {
if (clan != null && clanDB != null) {
Clan clanReSync = SimpleClans.getInstance().getClanManager().getClan(tag);
clanReSync.setFlags(clanDB.getFlags());
clanReSync.setVerified(clanDB.isVerified());
@@ -655,7 +653,7 @@ public final class StorageManager {
clanReSync.setPackedBb(clanDB.getPackedBb());
clanReSync.setFounded(clanDB.getFounded());
clanReSync.setLastUsed(clanDB.getLastUsed());
clanReSync.setBalance(clanDB.getBalance());
clanReSync.setBalance(null, ClanBalanceUpdateEvent.Cause.LOADING, clanDB.getBalance());
cp.setClan(clanReSync);
} else {
plugin.getClanManager().importClan(clanDB);
@@ -682,7 +680,6 @@ public final class StorageManager {
/**
* Insert a clan into the database
*
* @param clan
*/
public void insertClan(Clan clan) {
String query = "INSERT INTO `sc_clans` (`banner`, `ranks`, `description`, `fee_enabled`, `fee_value`, `verified`, `tag`," +
@@ -713,7 +710,6 @@ public final class StorageManager {
/**
* Update a clan to the database asynchronously
*
* @param clan
*/
@Deprecated
public void updateClanAsync(final Clan clan) {
@@ -752,7 +748,6 @@ public final class StorageManager {
/**
* Update a clan to the database
*
* @param clan
*/
public void updateClan(Clan clan) {
updateClan(clan, true);
@@ -769,42 +764,48 @@ public final class StorageManager {
if (updateLastUsed) {
clan.updateLastUsed();
}
if (plugin.getSettingsManager().isSavePeriodically()) {
modifiedClans.add(clan);
return;
}
core.update(getUpdateClanQuery(clan));
if (plugin.getSettingsManager().isSavePeriodically()) {
modifiedClans.add(clan);
return;
}
try (PreparedStatement st = prepareUpdateClanStatement(core.getConnection())) {
setValues(st, clan);
st.executeUpdate();
} catch (SQLException ex) {
plugin.getLogger().log(Level.SEVERE, String.format("Error updating Clan %s", clan.getTag()), ex);
}
}
private String getUpdateClanQuery(Clan clan) {
String query = "UPDATE `sc_clans`" +
" SET ranks = '"+ Helper.escapeQuotes(Helper.ranksToJson(clan.getRanks(), clan.getDefaultRank())) +"'," +
" banner = '" + Helper.escapeQuotes(YAMLSerializer.serialize(clan.getBanner())) + "'," +
" description = '" + Helper.escapeQuotes(clan.getDescription())+ "'," +
" fee_enabled = "+ (clan.isMemberFeeEnabled() ? 1 : 0) +"," +
" fee_value = '" + clan.getMemberFee() + "'," +
" verified = " + (clan.isVerified() ? 1 : 0) + "," +
" tag = '" + Helper.escapeQuotes(clan.getTag()) + "'," +
" color_tag = '" + Helper.escapeQuotes(clan.getColorTag()) + "'," +
" name = '" + Helper.escapeQuotes(clan.getName()) + "'," +
" friendly_fire = " + (clan.isFriendlyFire() ? 1 : 0) + "," +
" founded = '" + clan.getFounded() + "'," +
" last_used = '" + clan.getLastUsed() + "'," +
" packed_allies = '" + Helper.escapeQuotes(clan.getPackedAllies()) + "'," +
" packed_rivals = '" + Helper.escapeQuotes(clan.getPackedRivals()) + "'," +
" packed_bb = '" + Helper.escapeQuotes(clan.getPackedBb()) + "'," +
" cape_url = '" + Helper.escapeQuotes(clan.getCapeUrl()) + "'," +
" cape_url = '" + Helper.escapeQuotes(String.valueOf(clan.getCapeUrl())) + "'," +
" balance = '" + clan.getBalance() + "'," +
" flags = '" + Helper.escapeQuotes(clan.getFlags())
+ "' WHERE tag = '" + Helper.escapeQuotes(clan.getTag()) + "';";
return query;
private PreparedStatement prepareUpdateClanStatement(Connection connection) throws SQLException {
String sql = "UPDATE `sc_clans` SET ranks = ?, banner = ?, description = ?, fee_enabled = ?, fee_value = ?, " +
"verified = ?, tag = ?, color_tag = ?, `name` = ?, friendly_fire = ?, founded = ?, last_used = ?, " +
"packed_allies = ?, packed_rivals = ?, packed_bb = ?, balance = ?, flags = ? WHERE tag = ?;";
return connection.prepareStatement(sql);
}
private void setValues(PreparedStatement statement, Clan clan) throws SQLException {
statement.setString(1, Helper.ranksToJson(clan.getRanks(), clan.getDefaultRank()));
statement.setString(2, YAMLSerializer.serialize(clan.getBanner()));
statement.setString(3, clan.getDescription());
statement.setInt(4, clan.isMemberFeeEnabled() ? 1 : 0);
statement.setDouble(5, clan.getMemberFee());
statement.setInt(6, clan.isVerified() ? 1 : 0);
statement.setString(7, clan.getTag());
statement.setString(8, clan.getColorTag());
statement.setString(9, clan.getName());
statement.setInt(10, clan.isFriendlyFire() ? 1 : 0);
statement.setLong(11, clan.getFounded());
statement.setLong(12, clan.getLastUsed());
statement.setString(13, clan.getPackedAllies());
statement.setString(14, clan.getPackedRivals());
statement.setString(15, clan.getPackedBb());
statement.setDouble(16, clan.getBalance());
statement.setString(17, clan.getFlags());
statement.setString(18, clan.getTag());
}
/**
* Delete a clan from the database
*
* @param clan
*/
public void deleteClan(Clan clan) {
String query = "DELETE FROM `sc_clans` WHERE tag = '" + clan.getTag() + "';";
@@ -814,7 +815,6 @@ public final class StorageManager {
/**
* Insert a clan player into the database
*
* @param cp
*/
public void insertClanPlayer(ClanPlayer cp) {
String query = "INSERT INTO `sc_players` (`locale`, `resign_times`, `uuid`, `name`, `leader`, `tag`, `friendly_fire`, `neutral_kills`, `rival_kills`, `civilian_kills`, `deaths`, `last_seen`, `join_date`, `packed_past_clans`, `flags`) ";
@@ -825,7 +825,6 @@ public final class StorageManager {
/**
* Update a clan player to the database asynchronously
*
* @param cp
*/
@Deprecated
public void updateClanPlayerAsync(final ClanPlayer cp) {
@@ -840,34 +839,49 @@ public final class StorageManager {
/**
* Update a clan player to the database
*
* @param cp
*/
public void updateClanPlayer(ClanPlayer cp) {
cp.updateLastSeen();
if (plugin.getSettingsManager().isSavePeriodically()) {
modifiedClanPlayers.add(cp);
return;
modifiedClanPlayers.add(cp);
return;
}
try (PreparedStatement st = prepareUpdateClanPlayerStatement(core.getConnection())) {
setValues(st, cp);
st.executeUpdate();
} catch (SQLException ex) {
plugin.getLogger().log(Level.SEVERE, String.format("Error updating ClanPlayer %s", cp.getName()), ex);
}
core.update(getUpdateClanPlayerQuery(cp));
}
private String getUpdateClanPlayerQuery(ClanPlayer cp) {
return "UPDATE `sc_players` SET" +
" locale = '" + cp.getLocale().toLanguageTag() + "'," +
" resign_times = '"+ Helper.escapeQuotes(Helper.resignTimesToJson(cp.getResignTimes())) +"'," +
" leader = " + (cp.isLeader() ? 1 : 0) + ", tag = '" + Helper.escapeQuotes(cp.getTag()) + "'," +
" friendly_fire = " + (cp.isFriendlyFire() ? 1 : 0) + ", neutral_kills = " + cp.getNeutralKills() + "," +
" rival_kills = " + cp.getRivalKills() + ", civilian_kills = " + cp.getCivilianKills() + "," +
" deaths = " + cp.getDeaths() + ", last_seen = '" + cp.getLastSeen() + "'," +
" packed_past_clans = '" + Helper.escapeQuotes(cp.getPackedPastClans()) + "'," +
" trusted = " + (cp.isTrusted() ? 1 : 0) + ", flags = '" + Helper.escapeQuotes(cp.getFlags()) + "'," +
" name = '" + cp.getName() + "' WHERE `uuid` = '" + cp.getUniqueId().toString() + "';";
private PreparedStatement prepareUpdateClanPlayerStatement(Connection connection) throws SQLException {
String sql = "UPDATE `sc_players` SET locale = ?, resign_times = ?, leader = ?, tag = ?, friendly_fire = ?," +
" neutral_kills = ?, ally_kills = ?, rival_kills = ?, civilian_kills = ?, deaths = ?, last_seen = ?," +
" packed_past_clans = ?, trusted = ?, flags = ?, `name` = ? WHERE `uuid` = ?;";
return connection.prepareStatement(sql);
}
private void setValues(PreparedStatement statement, ClanPlayer cp) throws SQLException {
statement.setString(1, cp.getLocale().toLanguageTag());
statement.setString(2, Helper.resignTimesToJson(cp.getResignTimes()));
statement.setInt(3, cp.isLeader() ? 1 : 0);
statement.setString(4, cp.getTag());
statement.setInt(5, cp.isFriendlyFire() ? 1 : 0);
statement.setInt(6, cp.getNeutralKills());
statement.setInt(7, cp.getAllyKills());
statement.setInt(8, cp.getRivalKills());
statement.setInt(9, cp.getCivilianKills());
statement.setInt(10, cp.getDeaths());
statement.setLong(11, cp.getLastSeen());
statement.setString(12, cp.getPackedPastClans());
statement.setInt(13, cp.isTrusted() ? 1 : 0);
statement.setString(14, cp.getFlags());
statement.setString(15, cp.getName());
statement.setString(16, cp.getUniqueId().toString());
}
/**
* Delete a clan player from the database
*
* @param cp
*/
public void deleteClanPlayer(ClanPlayer cp) {
final Clan clan = cp.getClan();
@@ -875,19 +889,14 @@ public final class StorageManager {
clan.addBbWithoutSaving(ChatColor.AQUA + MessageFormat.format(lang("has.been.purged"), cp.getName()));
updateClan(clan, false);
}
String query = "DELETE FROM `sc_players` WHERE uuid = '" + cp.getUniqueId() + "';";
core.delete(query);
deleteKills(cp.getUniqueId());
String query = "DELETE FROM `sc_players` WHERE uuid = '" + cp.getUniqueId() + "';";
core.delete(query);
deleteKills(cp.getUniqueId());
}
/**
* Insert a kill into the database
*
* @param attacker
* @param attackerTag
* @param victim
* @param victimTag
* @param type
*/
@Deprecated
public void insertKill(Player attacker, String attackerTag, Player victim, String victimTag, String type) {
@@ -914,7 +923,6 @@ public final class StorageManager {
/**
* Delete a player's kill record form the database
*
* @param playerName
*/
@Deprecated
public void deleteKills(String playerName) {
@@ -925,7 +933,6 @@ public final class StorageManager {
/**
* Delete a player's kill record form the database
*
* @param playerUniqueId
*/
public void deleteKills(UUID playerUniqueId) {
String query = "DELETE FROM `sc_kills` WHERE `attacker_uuid` = '" + playerUniqueId + "'";
@@ -935,8 +942,6 @@ public final class StorageManager {
/**
* Returns a map of victim->count of all kills that specific player did
*
* @param playerName
* @return
*/
public Map<String, Integer> getKillsPerPlayer(String playerName) {
HashMap<String, Integer> out = new HashMap<>();
@@ -969,7 +974,6 @@ public final class StorageManager {
/**
* Returns a map of tag->count of all kills
*
* @return
*/
public Map<String, Integer> getMostKilled() {
HashMap<String, Integer> out = new HashMap<>();
@@ -1003,7 +1007,6 @@ public final class StorageManager {
/**
* Gets, asynchronously, a map of tag->count of all kills and notifies via callback when it's ready
*
* @param callback
*/
public void getMostKilled(DataCallback<Map<String, Integer>> callback) {
new BukkitRunnable() {
@@ -1017,9 +1020,7 @@ public final class StorageManager {
/**
* Gets, asynchronously, a map of victim->count of all kills that specific player did and notifies via callback when it's ready
*
* @param playerName
* @param callback
*
*/
public void getKillsPerPlayer(final String playerName, final DataCallback<Map<String, Integer>> callback) {
new BukkitRunnable() {
@@ -1040,7 +1041,6 @@ public final class StorageManager {
/**
* Notifies when the result is ready
*
* @param data
*/
void onResultReady(T data);
}
@@ -1048,10 +1048,9 @@ public final class StorageManager {
/**
* Updates the database to the latest version
*
* @param
*/
private void updateDatabase() {
String query = null;
String query;
/*
* From 2.2.6.3 to 2.3
@@ -1106,6 +1105,11 @@ public final class StorageManager {
core.execute("ALTER TABLE sc_clans ADD COLUMN `banner` text;");
}
// From 2.15.1 to 2.15.2
if (!core.existsColumn("sc_players", "ally_kills")) {
core.execute("ALTER TABLE sc_players ADD COLUMN `ally_kills` int(11) DEFAULT NULL;");
}
if (plugin.getSettingsManager().isUseMysql()) {
core.execute("ALTER TABLE sc_clans MODIFY color_tag VARCHAR(255);");
}
@@ -1150,7 +1154,6 @@ public final class StorageManager {
/**
* Updates the database to the latest version
*
* @param
*/
private void updatePlayersToUUID() {
@@ -1203,28 +1206,31 @@ public final class StorageManager {
* @since 2.10.2
*/
public void saveModified() {
try (Statement statement = core.getConnection().createStatement()) {
List<Clan> allClans = plugin.getClanManager().getClans();
for (Clan clan : modifiedClans) {
if (!allClans.contains(clan)) {
continue;
}
statement.addBatch(getUpdateClanQuery(clan));
}
List<ClanPlayer> allClanPlayers = plugin.getClanManager().getAllClanPlayers();
for (ClanPlayer cp : modifiedClanPlayers) {
if (!allClanPlayers.contains(cp)) {
continue;
}
statement.addBatch(getUpdateClanPlayerQuery(cp));
}
statement.executeBatch();
modifiedClans.clear();
modifiedClanPlayers.clear();
} catch (SQLException e) {
plugin.getLogger().severe("Error saving modified Clans and ClanPlayers:");
e.printStackTrace();
}
}
try (PreparedStatement pst = prepareUpdateClanPlayerStatement(core.getConnection())) {
//removing purged players
modifiedClanPlayers.retainAll(plugin.getClanManager().getAllClanPlayers());
for (ClanPlayer cp : modifiedClanPlayers) {
setValues(pst, cp);
pst.addBatch();
}
pst.executeBatch();
modifiedClanPlayers.clear();
} catch (SQLException ex) {
plugin.getLogger().log(Level.SEVERE, "Error saving modified ClanPlayers:", ex);
}
try (PreparedStatement pst = prepareUpdateClanStatement(core.getConnection())) {
//removing disbanded clans
modifiedClans.retainAll(plugin.getClanManager().getClans());
for (Clan clan : modifiedClans) {
setValues(pst, clan);
pst.addBatch();
}
pst.executeBatch();
modifiedClans.clear();
} catch (SQLException ex) {
plugin.getLogger().log(Level.SEVERE, "Error saving modified Clans:", ex);
}
}
}
@@ -55,7 +55,7 @@ public class MySQLCore implements DBCore {
@Override
public Connection getConnection() {
try {
if (connection == null || connection.isClosed()) {
if (connection == null || connection.isClosed() || !connection.isValid(0)) {
initialize();
}
} catch (SQLException e) {
@@ -2,6 +2,7 @@ package net.sacredlabyrinth.phaed.simpleclans.tasks;
import java.text.MessageFormat;
import net.sacredlabyrinth.phaed.simpleclans.events.ClanBalanceUpdateEvent;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.scheduler.BukkitRunnable;
@@ -57,7 +58,7 @@ public class CollectFeeTask extends BukkitRunnable {
if (success) {
ChatBlock.sendMessage(cp.toPlayer(), ChatColor.AQUA +
MessageFormat.format(lang("fee.collected",cp.toPlayer()), memberFee));
clan.setBalance(clan.getBalance() + memberFee);
clan.deposit(cp.toPlayer(), ClanBalanceUpdateEvent.Cause.MEMBER_FEE, memberFee);
plugin.getStorageManager().updateClan(clan);
} else {
clan.removePlayerFromClan(cp.getUniqueId());
@@ -1,13 +1,17 @@
package net.sacredlabyrinth.phaed.simpleclans.tasks;
import java.text.MessageFormat;
import net.md_5.bungee.api.ChatColor;
import net.sacredlabyrinth.phaed.simpleclans.EconomyResponse;
import net.sacredlabyrinth.phaed.simpleclans.Helper;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
import net.sacredlabyrinth.phaed.simpleclans.events.ClanBalanceUpdateEvent;
import net.sacredlabyrinth.phaed.simpleclans.managers.SettingsManager;
import org.bukkit.scheduler.BukkitRunnable;
import java.text.MessageFormat;
import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
/**
*
* @author roinujnosde
@@ -48,12 +52,13 @@ public class CollectUpkeepTask extends BukkitRunnable {
if (settingsManager.isMultiplyUpkeepBySize()) {
upkeep = upkeep * clan.getSize();
}
final double balance = clan.getBalance();
if (balance >= upkeep) {
clan.setBalance(balance - upkeep);
EconomyResponse response = clan.withdraw(null, ClanBalanceUpdateEvent.Cause.UPKEEP, upkeep);
if (response == EconomyResponse.NOT_ENOUGH_BALANCE) {
clan.disband(null, true, false);
}
if (response == EconomyResponse.SUCCESS) {
clan.addBb(ChatColor.AQUA + MessageFormat.format(lang("upkeep.collected"), upkeep), false);
} else {
clan.disband();
}
});
}
@@ -3,10 +3,8 @@ package net.sacredlabyrinth.phaed.simpleclans.ui;
import net.sacredlabyrinth.phaed.simpleclans.ClanPlayer;
import net.sacredlabyrinth.phaed.simpleclans.RankPermission;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
import net.sacredlabyrinth.phaed.simpleclans.managers.PermissionsManager;
import java.util.*;
import net.sacredlabyrinth.phaed.simpleclans.events.ComponentClickEvent;
import net.sacredlabyrinth.phaed.simpleclans.managers.PermissionsManager;
import net.sacredlabyrinth.phaed.simpleclans.ui.frames.ConfirmationFrame;
import net.sacredlabyrinth.phaed.simpleclans.ui.frames.WarningFrame;
import org.bukkit.Bukkit;
@@ -23,6 +21,8 @@ import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.scheduler.BukkitRunnable;
import org.jetbrains.annotations.NotNull;
import java.util.*;
import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
/**
@@ -134,11 +134,11 @@ public class InventoryController implements Listener {
SimpleClans plugin = SimpleClans.getInstance();
PermissionsManager pm = plugin.getPermissionsManager();
if (permission instanceof String) {
String permS = (String) permission;
boolean leaderPerm = permS.contains("simpleclans.leader") && !permS.equalsIgnoreCase("simpleclans.leader.create");
String perms = (String) permission;
boolean leaderPerm = perms.contains("simpleclans.leader") && !perms.equalsIgnoreCase("simpleclans.leader.create");
ClanPlayer cp = plugin.getClanManager().getAnyClanPlayer(player.getUniqueId());
return pm.has(player, permS) && (!leaderPerm || (cp != null && cp.isLeader()));
return pm.has(player, perms) && (!leaderPerm || (cp != null && cp.isLeader()));
}
return pm.has(player, (RankPermission) permission, false);
}
@@ -3,6 +3,7 @@ package net.sacredlabyrinth.phaed.simpleclans.ui.frames;
import com.cryptomorin.xseries.XMaterial;
import net.sacredlabyrinth.phaed.simpleclans.Clan;
import net.sacredlabyrinth.phaed.simpleclans.ClanPlayer;
import net.sacredlabyrinth.phaed.simpleclans.Helper;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
import net.sacredlabyrinth.phaed.simpleclans.ui.*;
import net.sacredlabyrinth.phaed.simpleclans.utils.ChatUtils;
@@ -27,10 +28,10 @@ import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
public class Components {
private Components() {
}
private Components() {
}
public static SCComponent getPlayerComponent(SCFrame frame, Player viewer, OfflinePlayer subject, int slot,
public static SCComponent getPlayerComponent(SCFrame frame, Player viewer, OfflinePlayer subject, int slot,
boolean openDetails) {
ClanPlayer cp = SimpleClans.getInstance().getClanManager().getCreateClanPlayer(subject.getUniqueId());
@@ -40,17 +41,16 @@ public class Components {
public static SCComponent getPlayerComponent(SCFrame frame, Player viewer, ClanPlayer cp, int slot,
boolean openDetails) {
SimpleClans pl = SimpleClans.getInstance();
String status = getPlayerStatus(viewer, cp);
SCComponent c = new SCComponentImpl(lang("gui.playerdetails.player.title",viewer, cp.getName()),
SCComponent c = new SCComponentImpl(lang("gui.playerdetails.player.title", viewer, cp.getName()),
Arrays.asList(
cp.getClan() == null ? lang("gui.playerdetails.player.lore.noclan",viewer)
: lang("gui.playerdetails.player.lore.clan",viewer, cp.getClan().getColorTag(),
cp.getClan() == null ? lang("gui.playerdetails.player.lore.noclan", viewer)
: lang("gui.playerdetails.player.lore.clan", viewer, cp.getClan().getColorTag(),
cp.getClan().getName()),
lang("gui.playerdetails.player.lore.rank",viewer,
lang("gui.playerdetails.player.lore.rank", viewer,
ChatUtils.parseColors(cp.getRankDisplayName())),
lang("gui.playerdetails.player.lore.status",viewer, status),
lang("gui.playerdetails.player.lore.kdr",viewer,
lang("gui.playerdetails.player.lore.status", viewer, status),
lang("gui.playerdetails.player.lore.kdr", viewer,
new DecimalFormat("#.#").format(cp.getKDR())),
lang("gui.playerdetails.player.lore.kill.totals", viewer, cp.getRivalKills(),
cp.getNeutralKills(), cp.getCivilianKills()),
@@ -78,17 +78,17 @@ public class Components {
@NotNull
private static String getPlayerStatus(Player viewer, ClanPlayer cp) {
if (cp.getClan() == null) {
return lang("free.agent", viewer);
if (cp.getClan() == null) {
return lang("free.agent", viewer);
}
if (cp.isLeader()) {
return lang("leader", viewer);
if (cp.isLeader()) {
return lang("leader", viewer);
}
if (cp.isTrusted()) {
return lang("trusted", viewer);
if (cp.isTrusted()) {
return lang("trusted", viewer);
}
if (cp.getRankId() != null && !cp.getRankId().isEmpty()) {
return lang("in.rank", viewer);
if (cp.getRankId() != null && !cp.getRankId().isEmpty()) {
return lang("in.rank", viewer);
}
return lang("untrusted", viewer);
}
@@ -99,26 +99,24 @@ public class Components {
String name;
List<String> lore;
if (clan != null) {
name = lang("gui.clandetails.clan.title",viewer, clan.getColorTag(), clan.getName());
name = lang("gui.clandetails.clan.title", viewer, clan.getColorTag(), clan.getName());
lore = Arrays.asList(
lang("gui.clandetails.clan.lore.description",viewer,
clan.getDescription() != null && !clan.getDescription().isEmpty() ? clan.getDescription() : lang("no.description",viewer)),
lang("gui.clandetails.clan.lore.status",viewer, clan.isVerified() ? lang("verified",viewer) : lang("unverified",viewer)),
lang("gui.clandetails.clan.lore.leaders",viewer, clan.getLeadersString("", ", ")),
lang("gui.clandetails.clan.lore.online.members",viewer, VanishUtils.getNonVanished(viewer, clan).size(), clan.getMembers().size()),
lang("gui.clandetails.clan.lore.kdr",viewer, KDRFormat.format(clan.getTotalKDR())),
lang("gui.clandetails.clan.lore.kill.totals",viewer, clan.getTotalRival(), clan.getTotalNeutral(), clan.getTotalCivilian()),
lang("gui.clandetails.clan.lore.deaths",viewer, clan.getTotalDeaths()),
lang("gui.clandetails.clan.lore.fee",viewer, clan.isMemberFeeEnabled()
? lang("fee.enabled",viewer) : lang("fee.disabled",viewer), clan.getMemberFee()),
lang("gui.clandetails.clan.lore.allies",viewer, clan.getAllies().isEmpty() ? lang("none",viewer) : clan.getAllyString(lang("gui.clandetails.clan.lore.allies.separator",viewer))),
lang("gui.clandetails.clan.lore.rivals",viewer, clan.getRivals().isEmpty() ? lang("none",viewer) : clan.getRivalString(lang("gui.clandetails.clan.lore.rivals.separator",viewer))),
lang("gui.clandetails.clan.lore.founded",viewer, clan.getFoundedString()),
lang("gui.clandetails.clan.lore.inactive",viewer, clan.getInactiveDays(), (clan.isVerified() ?
pl.getSettingsManager().getPurgeClan() : pl.getSettingsManager().getPurgeUnverified())
));
lang("gui.clandetails.clan.lore.description", viewer,
clan.getDescription() != null && !clan.getDescription().isEmpty() ? clan.getDescription() : lang("no.description", viewer)),
lang("gui.clandetails.clan.lore.status", viewer, Helper.getFormattedClanStatus(clan, viewer)),
lang("gui.clandetails.clan.lore.leaders", viewer, clan.getLeadersString("", ", ")),
lang("gui.clandetails.clan.lore.online.members", viewer, VanishUtils.getNonVanished(viewer, clan).size(), clan.getMembers().size()),
lang("gui.clandetails.clan.lore.kdr", viewer, KDRFormat.format(clan.getTotalKDR())),
lang("gui.clandetails.clan.lore.kill.totals", viewer, clan.getTotalRival(), clan.getTotalNeutral(), clan.getTotalCivilian()),
lang("gui.clandetails.clan.lore.deaths", viewer, clan.getTotalDeaths()),
lang("gui.clandetails.clan.lore.fee", viewer, clan.isMemberFeeEnabled()
? lang("fee.enabled", viewer) : lang("fee.disabled", viewer), clan.getMemberFee()),
lang("gui.clandetails.clan.lore.allies", viewer, clan.getAllies().isEmpty() ? lang("none", viewer) : clan.getAllyString(lang("gui.clandetails.clan.lore.allies.separator", viewer))),
lang("gui.clandetails.clan.lore.rivals", viewer, clan.getRivals().isEmpty() ? lang("none", viewer) : clan.getRivalString(lang("gui.clandetails.clan.lore.rivals.separator", viewer))),
lang("gui.clandetails.clan.lore.founded", viewer, clan.getFoundedString()),
lang("gui.clandetails.clan.lore.inactive", viewer, clan.getInactiveDays(), Helper.formatMaxInactiveDays(clan.getMaxInactiveDays())));
} else {
name = lang("gui.clandetails.free.agent.title",viewer);
name = lang("gui.clandetails.free.agent.title", viewer);
double price = pl.getSettingsManager().isePurchaseCreation() ? pl.getSettingsManager().getCreationPrice() : 0;
lore = new ArrayList<>();
if (price != 0) {
@@ -163,8 +161,8 @@ public class Components {
}
public static @NotNull SCComponent getPreviousPageComponent(int slot, @Nullable Runnable listener, @NotNull Paginator paginator, @NotNull Player viewer) {
if (!paginator.hasPreviousPage()) {
return getPanelComponent(slot);
if (!paginator.hasPreviousPage()) {
return getPanelComponent(slot);
}
SCComponent c = new SCComponentImpl(lang("gui.previous.page.title", viewer), null,
XMaterial.STONE_BUTTON, slot);
@@ -21,103 +21,111 @@ import java.util.List;
import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
public class ClanDetailsFrame extends SCFrame {
private final Clan clan;
private final Clan clan;
public ClanDetailsFrame(@Nullable SCFrame parent, @NotNull Player viewer, @NotNull Clan clan) {
super(parent, viewer);
this.clan = clan;
}
public ClanDetailsFrame(@Nullable SCFrame parent, @NotNull Player viewer, @NotNull Clan clan) {
super(parent, viewer);
this.clan = clan;
}
@Override
public void createComponents() {
for (int slot = 0; slot < 9; slot++) {
if (slot == 4)
continue;
add(Components.getPanelComponent(slot));
}
@Override
public void createComponents() {
for (int slot = 0; slot < 9; slot++) {
if (slot == 4)
continue;
add(Components.getPanelComponent(slot));
}
add(Components.getBackComponent(getParent(), 4, getViewer()));
add(Components.getClanComponent(this, getViewer(), clan, 13, false));
add(Components.getBackComponent(getParent(), 4, getViewer()));
add(Components.getClanComponent(this, getViewer(), clan, 13, false));
addRoster();
addHome();
addVerify();
addDisband();
}
addRoster();
addHome();
addBank();
addVerify();
addDisband();
}
private void addDisband() {
SCComponent disband = new SCComponentImpl(lang("gui.clandetails.disband.title", getViewer()),
Collections.singletonList(lang("gui.staffclandetails.disband.lore", getViewer())),
XMaterial.BARRIER, 34);
disband.setListener(ClickType.LEFT, () -> InventoryController.runSubcommand(getViewer(),
"mod disband", false, clan.getTag()));
disband.setConfirmationRequired(ClickType.LEFT);
disband.setPermission(ClickType.LEFT, "simpleclans.mod.disband");
add(disband);
}
private void addDisband() {
SCComponent disband = new SCComponentImpl(lang("gui.clandetails.disband.title", getViewer()),
Collections.singletonList(lang("gui.staffclandetails.disband.lore", getViewer())),
XMaterial.BARRIER, 34);
disband.setListener(ClickType.LEFT, () -> InventoryController.runSubcommand(getViewer(),
"mod disband", false, clan.getTag()));
disband.setConfirmationRequired(ClickType.LEFT);
disband.setPermission(ClickType.LEFT, "simpleclans.mod.disband");
add(disband);
}
private void addVerify() {
boolean verified = clan.isVerified();
private void addVerify() {
boolean verified = clan.isVerified();
XMaterial material = verified ? XMaterial.REDSTONE_TORCH : XMaterial.LEVER;
String title = verified ? lang("gui.clandetails.verified.title", getViewer())
: lang("gui.clandetails.not.verified.title", getViewer());
List<String> lore = verified ? null : new ArrayList<>();
if (!verified) {
lore.add(lang("gui.staffclandetails.not.verified.lore", getViewer()));
}
SCComponent verify = new SCComponentImpl(title, lore, material, 32);
if (!verified) {
verify.setPermission(ClickType.LEFT, "simpleclans.mod.verify");
verify.setConfirmationRequired(ClickType.LEFT);
verify.setListener(ClickType.LEFT, () -> InventoryController.runSubcommand(getViewer(),
"mod verify", false, clan.getTag()));
}
add(verify);
}
XMaterial material = verified ? XMaterial.REDSTONE_TORCH : XMaterial.LEVER;
String title = verified ? lang("gui.clandetails.verified.title", getViewer())
: lang("gui.clandetails.not.verified.title", getViewer());
List<String> lore = verified ? null : new ArrayList<>();
if (!verified) {
lore.add(lang("gui.staffclandetails.not.verified.lore", getViewer()));
}
SCComponent verify = new SCComponentImpl(title, lore, material, 32);
if (!verified) {
verify.setPermission(ClickType.LEFT, "simpleclans.mod.verify");
verify.setConfirmationRequired(ClickType.LEFT);
verify.setListener(ClickType.LEFT, () -> InventoryController.runSubcommand(getViewer(),
"mod verify", false, clan.getTag()));
}
add(verify);
}
private void addHome() {
List<String> lore = new ArrayList<>();
lore.add(lang("gui.staffclandetails.home.lore.teleport", getViewer()));
lore.add(lang("gui.staffclandetails.home.lore.set", getViewer()));
private void addHome() {
List<String> lore = new ArrayList<>();
lore.add(lang("gui.staffclandetails.home.lore.teleport", getViewer()));
lore.add(lang("gui.staffclandetails.home.lore.set", getViewer()));
SCComponent home = new SCComponentImpl(lang("gui.clandetails.home.title", getViewer()), lore,
XMaterial.MAGENTA_BED, 30);
home.setListener(ClickType.LEFT, () -> InventoryController.runSubcommand(getViewer(),
"mod home tp", false, clan.getTag()));
home.setPermission(ClickType.LEFT, "simpleclans.mod.hometp");
home.setListener(ClickType.RIGHT, () -> InventoryController.runSubcommand(getViewer(),
"mod home set", false, clan.getTag()));
home.setPermission(ClickType.RIGHT, "simpleclans.mod.home");
home.setConfirmationRequired(ClickType.RIGHT);
add(home);
}
SCComponent home = new SCComponentImpl(lang("gui.clandetails.home.title", getViewer()), lore,
XMaterial.MAGENTA_BED, 30);
home.setListener(ClickType.LEFT, () -> InventoryController.runSubcommand(getViewer(),
"mod home tp", false, clan.getTag()));
home.setPermission(ClickType.LEFT, "simpleclans.mod.hometp");
home.setListener(ClickType.RIGHT, () -> InventoryController.runSubcommand(getViewer(),
"mod home set", false, clan.getTag()));
home.setPermission(ClickType.RIGHT, "simpleclans.mod.home");
home.setConfirmationRequired(ClickType.RIGHT);
add(home);
}
private void addRoster() {
SCComponent roster = new SCComponentImpl(lang("gui.clandetails.roster.title", getViewer()),
Collections.singletonList(lang("gui.staffclandetails.roster.lore", getViewer())),
XMaterial.PLAYER_HEAD, 28);
private void addRoster() {
SCComponent roster = new SCComponentImpl(lang("gui.clandetails.roster.title", getViewer()),
Collections.singletonList(lang("gui.staffclandetails.roster.lore", getViewer())),
XMaterial.PLAYER_HEAD, 28);
List<ClanPlayer> members = clan.getMembers();
if (members.size() != 0) {
OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(
members.get((int) (Math.random() * members.size())).getUniqueId());
Components.setOwningPlayer(roster.getItem(), offlinePlayer);
}
List<ClanPlayer> members = clan.getMembers();
if (members.size() != 0) {
OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(
members.get((int) (Math.random() * members.size())).getUniqueId());
Components.setOwningPlayer(roster.getItem(), offlinePlayer);
}
roster.setListener(ClickType.LEFT, () -> InventoryDrawer.open(new RosterFrame(getViewer(), this, clan, true)));
add(roster);
}
roster.setListener(ClickType.LEFT, () -> InventoryDrawer.open(new RosterFrame(getViewer(), this, clan, true)));
add(roster);
}
@Override
public @NotNull String getTitle() {
return lang("gui.clandetails.title", getViewer(), ChatUtils.stripColors(clan.getColorTag()),
clan.getName());
}
private void addBank() {
List<String> lore = Collections.singletonList(lang("gui.clandetails.bank.balance.lore", getViewer(), clan.getBalance()));
@Override
public int getSize() {
return 5 * 9;
}
SCComponent bank = new SCComponentImpl(lang("gui.clandetails.bank.title", getViewer()), lore, XMaterial.GOLD_INGOT, 40);
add(bank);
}
@Override
public @NotNull String getTitle() {
return lang("gui.clandetails.title", getViewer(), ChatUtils.stripColors(clan.getColorTag()),
clan.getName());
}
@Override
public int getSize() {
return 5 * 9;
}
}
@@ -10,7 +10,7 @@ import java.text.ParseException;
* @author RoinujNosde
*/
public class KDRFormat {
private static final DecimalFormat FORMATTER = new DecimalFormat("#.#");
private static final DecimalFormat FORMATTER = new DecimalFormat("#.##");
static {
FORMATTER.setParseBigDecimal(true);
+15 -3
View File
@@ -56,12 +56,20 @@ war-and-protection:
war-enabled: false
land-sharing: true
protection-providers:
- WorldGuardProvider
- GriefPreventionProvider
listener-priority: HIGHEST
- WorldGuardProvider
- WorldGuard6Provider
- PlotSquared5Provider
- PlotSquared3Provider
- GriefPreventionProvider
listeners:
priority: HIGHEST
ignored-list:
PLACE:
- "PLAYER_HEAD"
set-base-only-in-land: false
war-normal-expiration-time: 0
war-disconnect-expiration-time: 0
edit-all-lands: false
land-creation:
only-leaders: false
only-one-per-clan: false
@@ -72,6 +80,9 @@ war-and-protection:
PLACE: true
DAMAGE: true
INTERACT_ENTITY: true
war-start:
request-enabled: true
members-online-max-difference: 5
kdr-grinding-prevention:
enable-max-kills: false
max-kills-per-victim: 10
@@ -118,6 +129,7 @@ kill-weights:
rival: 2.0
civilian: 0.0
neutral: 1.0
ally: -1.0
deny-same-ip-kills: false
clan:
homebase-teleport-wait-secs: 10
+46 -42
View File
@@ -44,6 +44,8 @@ withdraw.command=withdraw
invite.command=invite
kick.command=kick
bank.command=bank
give.command=give
take.command=take
status.command=status
fee.command=fee
set.command=set
@@ -160,19 +162,23 @@ command.description.clan=Opens the GUI
command.description.disband=Disbands your clan
command.description.mod.disband=Disbands a clan
command.description.mod.kick=Kicks a player from a clan
command.description.modtag=Modifies your clan's tag
command.description.purge=Purges some player's data
command.description.setbanner=Sets your clan's banner
command.description.modtag=Modifies your clan''s tag
command.description.purge=Purges some player''s data
command.description.setbanner=Sets your clan''s banner
command.description.verify=Verifies your clan
command.description.mod.verify=Verifies a clan
command.description.invite=Invites a player to your clan
command.description.fee.check=Checks the value of your clan's fee and if it's enabled
command.description.fee.set=Sets your clan's fee
command.description.bank.status=Checks your clan's bank balance
command.description.fee.check=Checks the value of your clan''s fee and if it''s enabled
command.description.fee.set=Sets your clan''s fee
command.description.bank.status=Checks your clan''s bank balance
command.description.bank.admin.status=Checks a clan''s bank balance
command.description.bank.withdraw.all=Withdraws all from your clan's bank
command.description.bank.withdraw.amount=Withdraws an amount from your clan's bank
command.description.bank.withdraw.amount=Withdraws an amount from your clan''s bank
command.description.bank.admin.take=Takes an amount of money from a clan''s bank
command.description.bank.deposit.all=Deposits all of your money into your clan's bank
command.description.bank.deposit.amount=Deposits an amount of your money into your clan's bank
command.description.bank.deposit.amount=Deposits an amount of your money into your clan''s bank
command.description.bank.admin.give=Gives an amount of money to a clan''s bank
command.description.bank.admin.set=Sets an amount of money to a clan''s bank
command.description.war.start=Starts a war
command.description.war.end=Ends a war
command.description.resetkdr.everyone=Resets everyone''s KDR
@@ -182,6 +188,7 @@ command.description.admin.demote=Demotes any leader from any clan
command.description.demote=Demotes a leader
command.description.admin.promote=Promotes any member from any clan
command.description.promote=Promotes a member to leader
command.description.admin.permanent=Toggles the permanent status of any clan
command.description.toggle.bb=Toggles whether the bulletin board should be displayed when you login
command.description.toggle.tag=Toggles whether your clan''s tag should be displayed next to your name
command.description.toggle.deposit=Toggles whether deposits are allowed on your clan
@@ -218,6 +225,7 @@ clans.lower=clans
rival=Rival
civilian=Civilian
neutral=Neutral
ally=Ally
free.agent=Free Agent
days=days
rivals=Rivals
@@ -240,6 +248,7 @@ food=Food
vitals=vitals
verified=Verified
unverified=Unverified
permanent=Permanent
profile=profile
civilian.abbreviation=Civ
rank=Rank
@@ -386,7 +395,7 @@ the.player.does.not.have.the.permissions.to.lead.a.clan=The player does not have
you.cannot.promote.yourself=You cannot promote yourself
the.player.is.already.a.leader=The player is already a leader
configuration.reloaded=Configuration reloaded
last.leader.cannot.resign.you.must.appoint.another.leader.or.disband.the.clan=Last leader cannot resign.You must appoint another leader or disband the clan
last.leader.cannot.resign.you.must.appoint.another.leader.or.disband.the.clan=Last leader cannot resign. You must appoint another leader or disband the clan
0.has.resigned={0} has resigned
you.cannot.trust.yourself=You cannot trust yourself
leaders.are.already.trusted=Leaders are already trusted
@@ -473,18 +482,29 @@ your.clans.are.already.rivals=Your clans are already rivals
player.got.money=You got {0} for killing {1} based on you KDR: {2}
cleared.bb=Cleared the bulletin board
clan.balance=Clan-Balance: {0}
clan.admin.balance={0}''s balance: {1} $
bb.fee.player.kicked={0} was kicked for not paying the fee
bb.fee.set={0} $ is the fee
bb.clan.deposit={0} $ were deposited
player.clan.deposit=You deposited {0}
bb.clan.withdraw={0} $ were withdrawn
bb.clan.take={0} $ were taken
bb.clan.give={0} $ were given
bb.clan.set={0} $ were set
player.clan.withdraw=You withdraw {0}
clan.admin.take=You took {0} $ from {1}''s bank
clan.admin.give=You gave {0} $ to {1}''s bank
clan.admin.set=You set {0}''s bank balance to {1}
clan.admin.bank.not.enough.money={0}''s bank has not enough money!
clan.bank.not.enough.money=Your clans bank has not enough money
your.clans.are.not.rivals=Your clans are not rivals
the.clan.members.reached.limit=Your clan members reached limit
you.have.reseted.your.kdr=You have reseted your KDR
you.have.reseted.0.kdr=You have reseted {0}''s KDR
you.have.reseted.kdr.of.all.players=You have reseted the KDR of all players
you.have.toggled.permanent.status=You have toggled permanent status for {0}
permanent.status.enabled=Your clan''s permanent status has been enabled by {0}
permanent.status.disabled=Your clan''s permanent status has been disabled by {0}
resign.yes=Yes
resign.no=No
resign.confirmation=Are you sure you want to resign? {0}
@@ -493,12 +513,12 @@ you.cannot.demote.the.last.leader=You cannot demote the last leader
you.cannot.move.the.last.leader=You cannot move the last leader
player.successfully.demoted=The player was successfully demoted
player.successfully.promoted=The player was successfully promoted
bb.ago= ago
bb.moments=moments
bb.seconds= seconds
bb.minutes= minutes
bb.ago= \ ago
bb.moments=\ moments
bb.seconds= \ seconds
bb.minutes= \ minutes
bb.one.minute=1 minute
bb.hours= hours
bb.hours= \ hours
bb.one.hour=1 hour
bb.days= days
bb.one.day=1 day
@@ -769,37 +789,11 @@ you.must.hold.a.banner=&cYou must have a banner in your hand!
you.changed.clan.banner=&bYou changed your clan''s banner!
your.clan.already.verified=&cYour clan is already verified!
# suppress inspection "TrailingSpacesInProperty"
clan.profile=\
\n&b%clan_name%&7 profile &8-------------------------------------------\n \n \
&7Name: &e[&8%clan_color_tag%&e] &b%clan_name%\n \
&7Description: &f%clan_description%\n \
&7Status: &f%clan_verified%\n \
&7Leaders: %clan_leaders%\n \
&7Members Online: &f%clan_online_count%&7/&f%clan_size%\n \
&7KDR: &e%clan_kdr%\n \
&7Kill Totals: &8[Rival:&f%clan_rival_kills% &8Neutral:&f%clan_neutral_kills% &8Civilian:&f%clan_civilian_kills%&8]\n \
&7Deaths: &f%clan_deaths%\n \
&7Fee: &f%clan_fee_enabled%&7, &f%clan_fee_value% $\n \
&7Allies: &f%clan_allies%\n \
&7Rivals: &f%clan_rivals%\n \
&7Founded: &f%clan_founded%\n \
&7Inactive: &f%clan_inactive_days%&7/&f%clan_max_inactive_days% days\n
clan.profile=\n&b%clan_name%&7 profile &8-------------------------------------------\n \n &7Name: &e[&8%clan_color_tag%&e] &b%clan_name%\n &7Description: &f%clan_description%\n &7Status: &f%clan_status%\n &7Leaders: %clan_leaders%\n &7Members Online: &f%clan_online_count%&7/&f%clan_size%\n &7KDR: &e%clan_kdr%\n &7Kill Totals: &8[Rival:&f%clan_rival_kills% &8Neutral:&f%clan_neutral_kills% &8Civilian:&f%clan_civilian_kills%&8]\n &7Deaths: &f%clan_deaths%\n &7Fee: &f%clan_fee_enabled%&7, &f%clan_fee_value% $\n &7Allies: &f%clan_allies%\n &7Rivals: &f%clan_rivals%\n &7Founded: &f%clan_founded%\n &7Inactive: &f%clan_inactive_days%&7/&f%clan_max_inactive_days% days\n
player.lookup.clanname=&e[&8%clan_color_tag%&e] &b%clan_name%
# suppress inspection "TrailingSpacesInProperty"
player.lookup.killtype=&7Kill Type: %player_kill_type%\n
player.lookup=\
\n&b%player_name%&7''s player info &8-------------------------------------------\n \n \
&7Clan: &f%clan_name%\n \
&7Rank: &f%player_rank%\n \
&7Status: &f%player_status%\n \
&7KDR: &e%player_kdr%\n \
&7Kill Totals: &8[Rival:&f%player_rival_kills% &8Neutral:&f%player_neutral_kills% &8Civilian:&f%player_civilian_kills%&8]\n \
&7Deaths: &f%player_deaths%\n \
&7Join Date: &f%player_join_date%\n \
&7Last Seen: &f%player_last_seen%\n \
&7Past Clans: &f%player_past_clans%\n \
&7Inactive: &f%player_inactive_days%&7/&f%player_max_inactive_days% days\n \
%kill_type_line%
player.lookup=\n&b%player_name%&7''s player info &8-------------------------------------------\n \n &7Clan: &f%clan_name%\n &7Rank: &f%player_rank%\n &7Status: &f%player_status%\n &7KDR: &e%player_kdr%\n &7Kill Totals: &8[Rival:&f%player_rival_kills% &8Neutral:&f%player_neutral_kills% &8Civilian:&f%player_civilian_kills%&8]\n &7Deaths: &f%player_deaths%\n &7Join Date: &f%player_join_date%\n &7Last Seen: &f%player_last_seen%\n &7Past Clans: &f%player_past_clans%\n &7Inactive: &f%player_inactive_days%&7/&f%player_max_inactive_days% days\n %kill_type_line%
economy.disabled=&cEconomy disabled!
has.been.purged={0}''s data has been purged
accepted.invitation=&bYou have accepted {0}''s invitation
@@ -814,6 +808,7 @@ cannot.change.member.fee.now=&cYou cannot change the member fee close to its col
cannot.change.member.fee.hours=&cTry again in {0} hours...
cannot.change.member.fee.minutes=&cTry again in {0} minute(s)...
cannot.kick.last.leader=&cYou cannot kick the last leader!
cannot.disband.permanent=&cYou cannot disband this clan. It has permanent status.
you.can.only.set.base.in.your.land=&cYou can only set home in your land!
only.leaders.can.create.lands=&cOnly leaders can create lands!
only.one.land.per.clan=&cYour clan already has a land!
@@ -825,3 +820,12 @@ land.blocked.action=&bBlocked action!
you.do.not.own.lands=&cYou do not own a land!
land.sharing.disabled=&cLand sharing is disabled!
war.expired=The war with {0} has expired!
you.cant.start.war.online.members.difference=You can''t start the war. One clan has more members online than the other.
land.command=land
break.command=break
interact.command=interact
place_block.command=place_block
damage.command=damage
interact_entity.command=interact_entity
container.command=container
@@ -0,0 +1,8 @@
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
@@ -0,0 +1,8 @@
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
@@ -0,0 +1,8 @@
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
+24 -1
View File
@@ -14,9 +14,32 @@ list.type.founded=nalezen
list.type.active=aktivní
profile.command=profil
roster.command=roster
leaderboard.command=žebříček
ally.command=spojenec
add.command=přidat
remove.command=odstranit
allow.command=povolit
assign.command=přiřadit
rival.command=soupeř
war.command=válka
acf-core.parameter.member=člen
acf-core.parameter.rank=hodnost
acf-core.parameter.leader=vůdce
acf-core.parameter.name=jmeno
acf-core.parameter.description=popis
command.description.create=Vytvoří klan
leader=vůdce
roster=roster
profile=profil
# suppress inspection "TrailingSpacesInProperty"
add=přidat
remove=odstranit
allow=povolit
war=válka
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
@@ -0,0 +1,8 @@
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
+468 -13
View File
@@ -1,11 +1,18 @@
description.command=beschreibung
description.command=Deschreibung
create.command=erstellen
delete.command=löschen
rank.command=rang
permissions.command=berechtigung
list.command=liste
list.type.name=name
rank.command=Rang
setdisplayname.command=setdisplayname
setdefault.command=setdefault
removedefault.command=removedefault
permissions.command=Berechtigungen
list.command=Liste
list.order.asc=aufsteigend
list.order.desc=absteigend
list.type.name=Name
list.type.kdr=kdr
list.type.size=groesse
list.type.founded=gegründet
list.type.active=aktiv
profile.command=profil
roster.command=mitglieder
@@ -21,7 +28,7 @@ add.command=anlegen
remove.command=entfernen
allow.command=zulassen
block.command=blockieren
auto.command=auto
auto.command=automatisch
check.command=prüfen
assign.command=zuweisen
unassign.command=aufheben
@@ -44,6 +51,7 @@ purge.command=bereinigen
trust.command=vertrauen
untrust.command=vertrauen entziehen
admin.command=admin
mod.command=mod
promote.command=befördern
demote.command=herunterstufen
clanff.command=clanff
@@ -56,17 +64,19 @@ unban.command=unban
reload.command=reload
globalff.command=globalff
kills.command=kills
mostkilled.command=mostkilled
mostkilled.command=am meisten getötet
war.command=krieg
start.command=start
end.command=ende
home.command=home
home.command=Basis
regroup.command=regroup
me.command=ich
tp.command=tp
setrank.command=setrank
place.command=platzieren
resetkdr.command=zurücksetzen kdr
everyone.command=jeder
setbanner.command=setbanner
help.command=hilfe
acf-core.parameter.member=mitglieder
acf-core.parameter.rank=rang
@@ -74,6 +84,8 @@ acf-core.parameter.leader=anfuehrer
acf-core.parameter.displayname=anzeigename
acf-core.parameter.permission=berechtigung
acf-core.parameter.message=nachricht
acf-core.parameter.tag=markieren
acf-core.parameter.name=Name
acf-core.parameter.fee=gebühr
acf-core.parameter.description=beschreibung
acf-core.parameter.player=spieler
@@ -81,9 +93,114 @@ acf-core.parameter.clan=clan
acf-core.parameter.type=typ
acf-core.parameter.order=bestellung
acf-core.parameter.help=seite oder schlüsselwörter
command.description.land.allow.all=Erlaubt alle Aktionen in deinem Land
command.description.land.allow.interact_entity=Ermöglicht Gildenmitgliedern die Interaktion mit Entitäten in deinem Land
command.description.land.allow.interact=Ermöglicht Clan-Mitgliedern mit deinem Land zu interagieren
command.description.land.allow.container=Erlaubt es Clan-Mitgliedern, Container in deinem Land zu öffnen
command.description.land.allow.place=Ermöglicht Clan Mitgliedern Blöcke in deinem Land zu platzieren
command.description.land.allow.break=Ermöglicht Clan Mitgliedern Blöcke in deinem Land zu zerstören
command.description.land.allow.damage=Ermöglicht Clan-Mitgliedern, Schaden in Ihrem Land zu verursachen
command.description.land.block.all=Blockiert alle Aktionen in deinem Land
command.description.land.block.interact_entity=Blockiert Clan-Mitgliedern die Interaktion mit Entitäten in deinem Land
command.description.land.block.interact=Blockiert Clan-Mitgliedern mit deinem Land zu interagieren
command.description.land.block.container=Blockiert es Clan-Mitgliedern, Container in deinem Land zu öffnen
command.description.land.block.place=Blockiert Clan Mitgliedern Blöcke in deinem Land zu platzieren
command.description.land.block.break=Blockiert Clan Mitgliedern Blöcke in deinem Land zu zerstören
command.description.land.block.damage=Ermöglicht Clan-Mitgliedern, Schaden in Ihrem Land zu verursachen
command.description.stats=Zeigt die Mitgliederstatistik deines Clans an
command.description.rivalries=Zeigt alle Clan-Rivalitäten
command.description.mostkilled=Am meisten getötete Spieler (Server-weit)
command.description.kills=Anzahl deiner Kills oder eines anderen Spielers
command.description.lookup=Zeigt deine Informationen an
command.description.lookup.other=Zeigt die Informationen eines anderen Spielers an
command.description.leaderboard=Zeigt die Bestenliste
command.description.roster.other=Listet Mitglieder eines anderen Clans auf
command.description.roster=Listet Mitglieder deines Clans auf
command.description.profile.other=Zeigt das Profil eines anderen Clans
command.description.profile=Zeigt das Profil deines Clans
command.description.vitals=Zeigt die Vitalwerte deines Clans und deiner Verbündeten an
command.description.list=Listet alle Clans
command.description.chat=Schreibe im Clan Chat
command.description.ally=Schreibe im Allianz Chat
command.description.deny=Lehnt eine Anfrage ab
command.description.accept=Anfrage akzeptieren
command.description.more=Mehr Informationen anzeigen
command.description.create=Erstellt einen Clan
command.description.ff.allow=Setzt dein persönliches Freundliches Feuer auf erlaubt
command.description.ff.auto=Setzt dein persönliches Freundliches Feuer auf automatisch
command.description.globalff.allow=Setzt das globale Freundliche Feuer auf erlaubt
command.description.globalff.auto=Setzt das globale Freundliche Feuer auf auto
command.description.clanff.allow=Setzt das Freundliche Feuer des Clans auf erlaubt
command.description.clanff.block=Setzt das Freundliche Feuer des Clans auf auto
command.description.description=Clanbeschreibung festlegen
command.description.ban=Bannt einen Spieler von Clan-Befehlen
command.description.unban=Entbannt einen Spieler von Clan-Befehlen
command.description.regroup.me=Gruppiert deine Gildenmitglieder an deinen Standort
command.description.regroup.home=Gruppiert deine Gildenmitglieder bei deiner Basis
command.description.home.tp=Teleportiert dich zu deiner Clan Basis
command.description.home.clear=Löscht die Basis deines Clans
command.description.home.set=Legt die Basis deines Clans fest
command.description.mod.home.set=Setzt die Basis eines Clans
command.description.mod.home.tp=Teleportiert dich zu einer Clan Basis
command.description.rival.remove=Entfernt einen Rivalen
command.description.rival.add=Fügt Rivalen hinzu
command.description.ally.remove=Entfernt einen Verbündeten
command.description.kick=Wirf ein Mitglied aus deinem Clan
command.description.bb.display=Zeige das schwarze Brett deines Clans
command.description.bb.clear=Lösche das schwarze Brett deines Clans
command.description.bb.post=Schreibe eine Nachricht auf das schwarze Brett deines Clans
command.description.place=Fügt einen Spieler dem Clan hinzu
command.description.reload=Lädt das Plugin und die Konfiguration neu
command.description.trust=Vertraue einem Clan-Mitglied
command.description.untrust=Vertrauen eines Clan-Mitglied zurückziehen
command.description.resign=Verlasse deinen Clan
command.description.help=Zeige die Hilfe an oder suche in ihr
command.description.ally.add=Eine Allianz hinzufügen
command.description.clan=Öffnet die GUI
command.description.disband=Löse deinen Clan auf
command.description.mod.disband=Löst einen Clan auf
command.description.mod.kick=Verbanne ein Mitglied aus deinem Clan
command.description.modtag=Ändere deinen Clan-Tag
command.description.purge=Löscht die Daten von Spieler
command.description.setbanner=Setze den Banner deines Clans
command.description.verify=Lasse deinen Clan verifizieren
command.description.mod.verify=Verifiziere einen Clan
command.description.invite=Lade einen Spieler zu deinem Clan ein
command.description.fee.check=Überprüft ob eine Clangebühr aktiviert ist und wie hoch diese eingestellt ist
command.description.fee.set=Bestimme die Clangebühr
command.description.bank.status=Überprüfe den Kontostand von deinem Clan
command.description.bank.withdraw.all=Hebe den kompletten Kontostand von deinem Clankonto ab
command.description.bank.withdraw.amount=Hebe einen bestimmten Betrag von deinem Clankonto ab
command.description.bank.deposit.all=Überweise dein komplettes Geld auf das Konto deines Clans
command.description.bank.deposit.amount=Überweise einen bestimmten Betrag auf das Konto deines Clans
command.description.war.start=Startet einen Krieg mit einem anderen Clan
command.description.war.end=Beende einen Clankrieg
command.description.resetkdr.everyone=Alle KDR zurücksetzen
command.description.resetkdr.player=KDR eines Spielers zurücksetzen
command.description.resetkdr=KDR zurücksetzen
command.description.admin.demote=Degradiert jeden Anführer von jedem Clan
command.description.demote=Degradiere einen Calnführer
command.description.admin.promote=Befördere jedes Mitglied von jedem Clan
command.description.promote=Befördere ein Mitglied zum Anführer
command.description.toggle.bb=Schaltet an, ob das Bulletinboard angezeigt werden soll, wenn du dich anmeldest
command.description.toggle.tag=Schaltet an, ob der Tag deines Clans neben deinem Namen angezeigt werden soll
command.description.toggle.deposit=Schalte um, ob Einzahlungen auf deinen Clan erlaubt sind
command.description.toggle.withdraw=Schaltet um, ob Auszahlungen für deinen Clan erlaubt sind
command.description.toggle.fee=Schaltet um, ob die Clan-Gebühr aktiviert ist
command.description.alliances=Listet alle Gildenallianzen auf
command.description.coords=Zeigt die Koordinaten der Mitglieder deines Clans an
command.description.rank.assign=Einem Mitglied einen Rang zuweisen
command.description.rank.unassign=Ein Mitglied aus einem Rang entfernen
command.description.rank.create=Erstellt einen Rang
command.description.rank.delete=Löscht einen Rang
command.description.rank.list=Listet die Ränge deines Clans auf
command.description.rank.setdisplayname=Legt den Anzeigenamen eines Rangs fest
command.description.rank.setdefault=Legt den Standardrang fest
command.description.rank.removedefault=Entfernt den Standardrang
command.description.rank.permissions.available=Listet die verfügbaren Rangberechtigungen
command.description.rank.permissions.rank=Listet die Berechtigungen eines Rangs auf
command.description.rank.permissions.add=Fügt eine Berechtigung zu einem Rang hinzu
command.description.rank.permissions.remove=Entfernt eine Berechtigung aus einem Rang
home-menu=/{0} Home{1} - Teleportiert dich in die Clan Basis
home-set-menu=/{0} Home set{1} - Setzt die Clan Basis
home-clear-menu=/{0} Home clear{1} - Entfernt die Clan Basis
@@ -110,8 +227,9 @@ player=Spieler
seen=Gesehen
leader=Anführer
roster=Dienstplan
trusted=Vertrauenswürdiger
untrusted=Unvertrauenswürdiger
trusted=Vertrauenswürdig
untrusted=Nicht Vertrauenswürdig
in.rank=im Rang
deaths=Tode
weights=Gewichte
stats=Statistiken
@@ -119,6 +237,7 @@ health=Gesundheit
armor=Rüstung
weapons=Waffen
food=Nahrung
vitals=vitale
verified=Verifiziert
unverified=Nicht verifiziert
profile=profil
@@ -157,7 +276,13 @@ proposing.an.alliance={0} schlägt vor ein Allianz mit {1} einzugehen
inviting.you.to.join={0} lädt dich zum Beitritt ein {1}
asking.for.the.deletion={0} fragt nach einer Löschung des Clans
asking.for.the.promotion={0} fragt nach einer Beförderung für {1}
asking.for.the.demotion={0} möchte, dass {1} degradiert wird
# suppress inspection "TrailingSpacesInProperty"
request.message= \n &8[&8{0}&8] &b{1}\n %accept% &bor %deny%\n
clickable.accept=&a&l[AKZEPTIEREN]
clickable.deny=&c&l[ABLEHNEN]
hover.click.to.accept=&aKlicken Sie hier, um zu akzeptieren
hover.click.to.deny=&cKlicken Sie hier, um abzulehnen
not.sufficient.money=Du hast nicht genügend Geld auf deinem Konto
account.has.been.debited=Ihr Konto wurde belastet {0}
mysql.connection.successful=Verbindung hergestellt
@@ -170,6 +295,7 @@ clan.players=Clan Spieler\: {0}
clans=Clans\: {0}
banned=Dir wurde verboten Clan-Commands zu benutzen
nothing.more.to.see=Nichts mehr zu sehen
nothing.to.vote=&cNichts zum Akzeptieren oder Ablehnen
no.leader.permissions=Du hast keine Anführer Berechtigungen
you.have.already.voted=Du hast bereits abgestimmt
has.voted.to.deny={0} hat fürs verweigern gestimmt
@@ -183,8 +309,11 @@ clan.disbanded=Clan aufgelöst
many.color.days={0}{1} Tage
insufficient.permissions=Unzureichende Berechtigungen
clan.is.not.verified=Clan ist nicht verifiziert
player.not.a.member.of.any.clan=&cDer Spieler ist kein Mitglied eines Clans
not.a.member.of.any.clan=Du bist kein Mitglied in einem Clan
minimum.to.make.alliance=Dein Clan muss mindestens {0} Spieler haben um Allianzen zu bilden
cannot.be.same.clan=&cDu musst einen anderen Clan als deinen einfügen\!
other.clan.not.verified=&cDer andere Clan wurde nicht verifiziert\!
your.clans.are.not.allies=Deine Clans sind keine Verbündeten
has.broken.the.alliance={0} hat die Allianz mit {1} aufgelöst
at.least.one.leader.accept.the.alliance=Mindestens ein Anführer des Clans muss online sein um die Allianz zu akzeptieren
@@ -244,17 +373,62 @@ rank.0=Rang\: {0}
kdr.0=KDR\: {0}
inactive.0=Inaktiv\: {0}
clan.commands=clan Befehle
you.can.only.modify.the.color.and.case.of.the.tag=Du kannst nur die Farbe und die Gros- / Kleinschreibung dieses Tags ändern
tag.changed.to.0=Tag geändert zu {0}
0.tag.changed.to.1=&bErfolgreich den Tag von {0} zu {1} geändert
name.0=Name\: {0}
description.0=Beschreibung\: {0}
leaders.0=Anführer\:{0}
allies.0=Allianz\: {0}
rivals.0=Rivalen\: {0}
other.player.must.be.online=&cDer Spieler muss online sein\!
the.player.does.not.have.the.permissions.to.lead.a.clan=Der Spieler hat nicht die Berechtigung einen Clan zu führen
you.cannot.promote.yourself=Du kannst dich nicht selbst befördern\!
the.player.is.already.a.leader=Der Spieler ist bereits Anführer
configuration.reloaded=Konfiguration neugeladen
last.leader.cannot.resign.you.must.appoint.another.leader.or.disband.the.clan=Letzter Anführer kann nicht zurücktreten. Du musst einen anderen Anführer ernennen oder den Clan auflösen
0.has.resigned={0} ist zurückgetreten
you.cannot.trust.yourself=Du kannst dir selbst nicht vertrauen
leaders.are.already.trusted=Anführer sind bereits vertrauenswürdig
this.player.is.already.trusted=Diesem Spieler wird schon vertraut
has.been.given.trusted.status.by={1} vertraut nun dem Spieler {0}
this.player.is.not.banned=Dieser Spieler ist nicht gebannt
player.removed.from.the.banned.list=Spieler wurde von der Bannliste entfernt
you.have.been.unbanned.from.clan.commands=Du wurdest von den Clan-Befehlen entbannt
you.cannot.untrust.yourself=Du kannst dir nicht selbst Misstrauen
leaders.cannot.be.untrusted=Anführern kann nicht Misstrauen werden
this.player.is.already.untrusted=Diesem Spieler wird schon nicht vertraut
has.been.given.untrusted.status.by={1} vertraut nun nicht mehr dem Spieler {0}
the.clan.does.not.exist=Der Clan existiert nicht
the.clan.is.already.verified=Der Clan ist bereits verifiziert
the.clan.has.been.verified=Der Clan wurde verifiziert
clan.0.has.been.verified=Gilde {0} wurde verifiziert\!
total.clan.players.0=Gesamt Clan-Spieler\: {0}
proposing.war={0} schlägt vor, mit dem Clan {1} einen Krieg zu beginnen
you.can.only.start.war.with.rivals=Du kannst einen Krieg nur mit einem Rivalen beginnen
leaders.have.been.asked.to.accept.the.war.request={0} Anführer wurden angefragt die Kriegsanfrage anzunehmen
leaders.asked.to.end.rivalry={0} Anführer wurden gebeten den Clankrieg zu beenden
proposing.to.end.the.war={0} möchte den Clankrieg mit {1} beenden
clans.already.at.war=Deine Clans sind bereits in einem Krieg
clans.not.at.war=Keiner deiner Clans führen aktuell einen Krieg
you.are.at.war={0} ist ist aktuell in einem Krieg mit {1}
denied.war.req={0} hat die Anfrage zu einem Clankrieg von {1} nicht angenommen
you.are.no.longer.at.war={0} ist nicht mehr in einem Krieg mit {1}
end.war.denied=Dein Antrag um den Krieg zu beenden wurde von {0} abgelehnt
denied.war.end=Der Antrag von {0} um den Krieg zu beenden wurde von {1} abgelehnt
has.initiated.a.rivalry={0} hat eine Rivalität mit {1} initiiert
start=start
end=ende
add=anlegen
remove=entfernen
allow=zulassen
block=blockieren
auto=automatisch
war=krieg
0.s.sword.1.2.b.bow.3.4.a.arrow={0}S\=Schwert{1}, {2}B\=Bogen{3}, {4}P\=Pfeile
weapon.S=S
weapon.B=B
weapon.A=P
materials=Materialien
armor.h=H
armor.c=B
armor.l=H
@@ -269,6 +443,8 @@ hunger=Hunger
stone=Stein
iron=Eisen
the.clan.cannot.be.rivaled=Der Clan kann nicht rivalieren
bboff=BB ausgeschaltet
bbon=BB angeschaltet
tagoff=Kürzel ausgeschaltet
tagon=Kürzel eingeschaltet
depositon=Einzahlung eingeschaltet
@@ -293,9 +469,227 @@ join=beitreten
mute=stummschalten
player.rank.changed=Rang würde gesetzt
your.clans.are.already.rivals=Eure Clans sind bereits Rivalen
player.got.money=Du hast für das töten von {1} Spielern basieren auf deiner KDR ({2}) {0} Geld bekommen
cleared.bb=Das schwarze Brett wurde gelöscht
clan.balance=Clan-Kontostand\: {0}
bb.fee.player.kicked={0} wurde aus dem Clan geschmissen, da er/sie die Clangebühr nicht bezahlt hat
bb.fee.set=Die Clangebühr beträgt {0} $
bb.clan.deposit=Es wurden {0} $ überwiesen
player.clan.deposit=Du hast {0} überwiesen
bb.clan.withdraw=Es wurden {0} $ abgebucht
player.clan.withdraw=Du hast {0} abgebucht
clan.bank.not.enough.money=Das Konto von deinem Clan ist nicht ausreichend gedeckt
your.clans.are.not.rivals=Eure Clans sind keine Rivalen
the.clan.members.reached.limit=Dein Clan hat das Limit an Clanmitglieder erreicht
you.have.reseted.your.kdr=Du hast deine KDR zurückgesetzt
you.have.reseted.0.kdr=Du hast die KDR von {0} zurückgesetzt
you.have.reseted.kdr.of.all.players=Du hast die KDR von allen Spielern zurückgesetzt
resign.yes=Ja
resign.no=Nein
resign.confirmation=Bist du sicher dass du zurücktreten möchtest, {0}?
resign.success=Du bist erfolgreich aus deinem Clan ausgetreten
you.cannot.demote.the.last.leader=Du kannst den letzten Anführer nicht degradieren
you.cannot.move.the.last.leader=Du kannst den letzten Anführer nicht versetzen
player.successfully.demoted=Der Spieler wurde erfolgreich degradiert
player.successfully.promoted=Der Spieler wurde erfolgreich befördert
bb.one.minute=1 Minute
bb.one.hour=1 Stunde
bb.days= tage
bb.one.day=1 Tag
the.fee.is.0.and.its.current.value.is.1=Die Clangebühr ist {0} und hat einen aktuellen Betrag von {1} $
fee.enabled=aktiviert
fee.disabled=deaktiviert
fee.set=Die Clangebühr wurde erfolgreich aktualisiert
max.fee.allowed.is.0=Max. zulässige Gebühr ist {0}
fee.collected=Es wurden dir {0} $ für die Clangebühr abgezogen
player.purged=Der Spieler wurde erfolgreich entfernt
upkeep.collected=Es wurden {0} $ für den Unterhalt abgezogen
balance.is.not.enough.for.upkeep=Das Clankonto ist für den Unterhalt in höhe von {0} $ nicht ausreichend gedeckt. Überweise den Betrag von {0} $ auf dein Clankonto, um zu verhindern aufgelöst zu werden.
your.clan.description.must.be.longer.than=Die Clanbeschreibung muss mehr als {0} Zeichen betragen
your.clan.description.cannot.be.longer.than=Deine Clanbeschreibung darf nicht länger als {0} Zeichen betragen
description.changed=Du hast erfolgreich die Beschreibung deines Clans geändert
no.description=Keine Beschreibung
the.player.must.wait.0.before.joining.your.clan.again=Dieser Spieler muss {0} Minute(n) warten, bevor er erneut deinem Clan beitreten kann
disabled.command=Deaktivierter Befehl
rank.displayname.updated=Der Anzeigename des Ranges wurde aktualisiert\!
rank.setdefault=Der Standardrang des Clans wurde zu {0} gesetzt
rank.removedefault=Der Standardrang des Clans wurde entfernt
rank.0.permissions=Rang {0}''s Berechtigungen\:
available.rank.permissions=Verfügbare Berechtigungen für Ränge\:
rank.already.exists=Rang existiert bereits
rank.0.does.not.exist=Rang {0} existiert nicht
rank.created=Rang erstellt
permission.0.added.to.rank.1=Die Berechtigung {0} wurde dem Rang {1} hinzugefügt
permission.0.removed.from.rank.1=Die Berechtigung {0} wurde von dem Rang {1} entfernt
rank.0.deleted=Rang {0} gelöscht
clans.ranks=Clan Ränge\:
ranks.list.item={0}\# {1} ({2})
no.ranks=Keine Ränge erstellt
rank.no.permissions=Dieser Rang hat bisher keinerlei Berechtigungen
player.unassigned.from.rank=Spieler ist dem Rang nicht zugewiesen
you.must.be.0.or.have.the.permission.1.to.use.this=Du musst {0} sein, oder dein Anführer muss deinem Rang die die Berechtigung {1} geben, um dies zu benutzen
deposit.not.allowed=Überweisung ist nicht erlaubt. Benutze /%clan %toggle %deposit um die Überweisung zu erlauben
withdraw.not.allowed=Abbuchen ist nicht erlaubt. Benutze /%clan %toggle %withdraw um das Abbuchen zu erlauben
resign.request.cancelled=Rücktrittsanfrage abgebrochen
promotion.vote.has.been.requested.from.all.leaders=Das Wählen der Beförderung wurde von allen Anführern angefordert
allowed=erlaubt
blocked=blockiert
chat.joined=beigetreten
chat.not.joined=nicht beigetreten
gui.loading=&7Wird geladen...
gui.back.title=&fZurück
gui.previous.page.title=&fVorherige Seite
gui.next.page.title=&fNächste Seite
gui.lore.no.permission=&cDu hast keine Berechtigung, dies zu sehen\!
gui.main.title={0} - Clan-Menü
gui.main.languageselector.title=&fWähle deine Sprache
gui.main.languageselector.lore.left.click=&7Linksklick, um Ihre Sprache zu wählen
gui.main.languageselector.lore.right.click=&7Rechtsklick um beim Übersetzen zu helfen
gui.main.other.commands.title=&fAndere Befehle
gui.main.other.commands.lore=&7Linksklick, um alle Clanbefehle anzuzeigen
gui.main.clan.list.title=&fClan Liste
gui.main.clan.list.lore=&7Linksklick, um die Clanliste anzuzeigen
gui.main.reset.kdr.title=&f Setze KDR zurück
gui.main.reset.kdr.lore.price=&7Preis\: &b{0}
gui.main.reset.kdr.lore=&7Linksklick zum Zurücksetzen deiner KDR
gui.main.leaderboard.title=&fRangliste
gui.main.leaderboard.lore=&7Linksklick, um die Rangliste zu sehen
gui.main.staff.title=&fTeam
gui.main.staff.lore=&7Linksklick zum Öffnen des Team Menüs
gui.staff.title=Team
gui.staff.clan.list.lore.left.click=&7Linksklick um alle Clans zu sehen
gui.staff.clan.list.lore.right.click=&7Rechtsklick um alle Clans anzeigen zu lassen, welche nicht verifiziert sind
gui.player.list.title=Spieler Liste
gui.staff.player.list.title=&fSpieler Liste
gui.staff.player.list.lore.left.click=&7Linksklick um alle Spieler anzuzeigen
gui.staff.player.list.lore.right.click=&7Rechtsklick um alle Spieler anzuzeigen, die gerade online sind
gui.staff.global.ff.title=&fGlobales Friendly Fire
gui.staff.global.ff.lore.status=&7Status\: &b{0}
gui.staff.global.ff.lore.toggle=&7Linksklick um den Friendly Fire Status umzuschalten
gui.staff.reload.title=&fneu laden
gui.staff.reload.lore=&7Linksklick um das Plugin neu zu laden
gui.staff.clanlist.unverified.title=Anzahl nicht verifizierter Clans\: {0}
gui.staff.clanlist.toplace.title=Wähle den neuen Clan von {0}
gui.warning.title=Warnung
gui.warning.no.permission.title=&fkeine Berechtigung
gui.warning.no.permission.plugin.lore=&7Du hast nicht die ausreichende Berechtigung um diese Aktion auszuführen\!
gui.warning.no.permission.leader.lore=&7Bist du einer der Anführer von dem Clans?
gui.warning.no.permission.rank.lore=&/Du musst den Rang {0} besitzen oder dein Anführer muss deinem Rank die Berechtigung {1} geben um das zu benutzen\!
gui.warning.not.verified.title=&fNicht verifiziert
gui.warning.not.verified.lore=&7Dein Clan muss verifiziert sein\!
gui.allies.title=Alliierte
gui.allies.clan.lore=&7Rechtsklick um diese Allianz zu entfernen
gui.allies.add.title=&fFüge eine Allianz hinzu
gui.add.ally.title=Füge eine Allianz hinzu
gui.add.ally.clan.lore=&7Linksklick um mit diesem Clan eine Allianz einzugehen
gui.rivals.title=Rivalen
gui.rivals.clan.lore=&7Rechtsklick um diese Rivalität zu beenden
gui.rivals.add.title=&fStarte eine Rivalität
gui.add.rival.title=Starte eine Rivalität
gui.add.rival.clan.lore=&7Linksklick um mit diesem Clan eine Rivalität zu Starten
gui.clanlist.title=Anzahl aller Clans\: {0}
gui.clanlist.clan.title=&fClan\: [{0}&f] {1}
gui.clanlist.clan.lore.position=&b\#{0}
gui.clanlist.clan.lore.kdr=&7KDR\: &b{0}
gui.clanlist.clan.lore.members=&Mitglieder\: &b{0}
gui.coords.title=Koordinaten
gui.coords.player.lore.distance=&7Distanz\: &b{0}
gui.coords.player.lore.coords=&7Koordinaten\: &b{0} {1} {2}
gui.coords.player.lore.world=&7Welt\: &b{0}
gui.invite.title=Lade einen Spieler ein
gui.invite.player.title=&f{0}
gui.invite.player.price.lore=&7Preis\: &b{0}
gui.invite.player.lore=&7Linksklick um einen Spieler einzuladen
gui.roster.title=Dienstplan von {0}
gui.roster.invite.title=&fEinladung
gui.roster.invite.lore=&7Lade einen Spieler zu deinem Clan ein
gui.leaderboard.title=Bestenliste - Spieler\: {0}
gui.leaderboard.player.title=&f\#{0} {1}
gui.ranks.title=Ränge
gui.ranks.title.set.rank=Rang Setzten - Aktuell\: {0}
gui.ranks.create.title=&fEinen Rang erstellen
gui.ranks.create.lore=&7Linksklick um einen Rang zu erstellen
gui.ranks.rank.title=&fRang\: {0}
gui.ranks.rank.displayname.lore=&7Anzeigename\: &b{0}
gui.ranks.rank.remove.lore=&7Rechtsklick um diesen Rang zu entfernen
gui.ranks.rank.edit.permissions.lore=&7Linksklick um die Berechtigung des Rangs zu bearbeiten
gui.ranks.rank.assign.lore=&7Linksklick um den Rang zu {0} zuzuweisen
gui.permissions.title={0}''s Berechtigungen
gui.permissions.add.title=&fFüge Berechtigungen hinzu
gui.permissions.permission.title=&f{0}
gui.permissions.permission.lore=&7Rechtsklick um diese Berechtigung von von dem Rang zu entfernen
gui.add.permission.title=Berechtigung hinzufügen
gui.add.permission.permission.title=&f{0}
gui.add.permission.permission.lore=&7Linksklick um diese Berechtigung dem Rang hinzuzufügen
gui.clandetails.title=[{0}] {1}
gui.clandetails.free.agent.title=&fFreier Agent
gui.clandetails.free.agent.create.clan.price.lore=&7Preis\: &b{0}
gui.clandetails.free.agent.create.clan.lore=&7Linksklick, um einen Clan zu erstellen
gui.clandetails.clan.title=&f[{0}&f] {1}
gui.clandetails.clan.lore.description=&7Beschreibung\: &b{0}
gui.clandetails.clan.lore.status=&7Status\: &b{0}
gui.clandetails.clan.lore.leaders=&7Anführer\: &b{0}
gui.clandetails.clan.lore.online.members=&7Mitglieder Online\: &b{0}/{1}
gui.clandetails.clan.lore.kdr=&7KDR\: &b{0}
gui.clandetails.clan.lore.kill.totals=&7Anzahl aller Kills\: &b[Rivalen\:{0} Neutral\:{1} Zivillisten\:{2}]
gui.clandetails.clan.lore.deaths=&7Tode\: &b{0}
gui.clandetails.clan.lore.fee=&7Gebühr\: &b{0}, {1}$
# suppress inspection "TrailingSpacesInProperty"
gui.clandetails.clan.lore.allies.separator=&b,
# suppress inspection "TrailingSpacesInProperty"
gui.clandetails.clan.lore.rivals.separator=&b,
gui.clandetails.clan.lore.allies=&7Allianz\: &b{0}
gui.clandetails.clan.lore.rivals=&7Rivalen\: &b{0}
gui.clandetails.clan.lore.founded=&7Gegründet\: &b{0}
gui.clandetails.clan.lore.inactive=&7Inaktiv\:{0}/{1} Tage
gui.clandetails.allies.title=&fAllianzen
gui.clandetails.allies.lore=&7Linksklick um deine Allianzen anzuzeigen oder um neue einzugehen
gui.clandetails.rivals.title=&fRivalen
gui.clandetails.rivals.lore=&7Linksklick um deine Rivalitäten anzuzeigen oder neue hinzuzufügen
gui.clandetails.roster.title=Dienstplan
gui.clandetails.roster.lore=&7Linksklick, um die Mitglieder deines Clans zu sehen oder mehr einzuladen
gui.staffclandetails.roster.lore=&7Linksklick, um die Mitglieder des Clans zu sehen
gui.clandetails.coords.title=&fKoordinaten
gui.clandetails.coords.lore=&7Linksklick, um die Koordinaten der Mitglieder deines Clans zu sehen
gui.clandetails.home.title=&fHaus
gui.clandetails.home.lore.teleport.price=&7Teleport-Preis\: &b{0}
gui.clandetails.home.lore.teleport=&7Linksklick um zu deiner Clan Basis zu kommen
gui.staffclandetails.home.lore.teleport=&7Linksklick um dich zur Basis deines Clans zu teleportieren
gui.clandetails.home.lore.clear=&7Mittel-Klick um das Haus deines Clans zu löschen
gui.clandetails.home.lore.set.price=&7Setze Preis\: &b{0}
gui.clandetails.home.lore.set=&7Rechtsklick um das Haus deines Clans zu setzen
gui.staffclandetails.home.lore.set=&7Rechtsklick um das Haus dieses Clans zu setzen
gui.clandetails.regroup.title=&fRegruppieren
gui.clandetails.regroup.lore.price=&7Preis\: &b{0}
gui.clandetails.regroup.lore.home=&7Linksklick, um die Mitglieder des Clans neu zu gruppieren
gui.clandetails.regroup.lore.me=&7Rechtsklick, um die Mitglieder deines Clans an deinem Standort neu zu gruppieren
gui.clandetails.ff.title=&fFreundliches Feuer
gui.clandetails.ff.personal.lore=&7Personal\: &b{0}
gui.clandetails.ff.clan.lore=&7Clan\: &b{0}
gui.clandetails.ff.personal.toggle.lore=&7Linksklick, um dein Friendly Fire umzuschalten
gui.clandetails.ff.clan.toggle.lore=&7Rechtsklick, um das Friendly Fire deines Clans umzuschalten
gui.clandetails.bank.title=&fBank
gui.clandetails.bank.balance.lore=&7Kontostand\: &b{0}
gui.clandetails.bank.withdraw.status.lore=&7Auszahlung\: &b{0}
gui.clandetails.bank.deposit.status.lore=&7Einzahlung\: &b{0}
gui.clandetails.bank.withdraw.toggle.lore=&7Mittel-Klick um den Status der Abhebungen umzuschalten
gui.clandetails.bank.deposit.toggle.lore=&7Rechtsklick, um den Status der Einzahlung umzuschalten
gui.clandetails.fee.title=&fGebühr
gui.clandetails.fee.status.lore=&7Status\: &b{0}
gui.clandetails.fee.value.lore=&7Wert\: &b{0}
gui.clandetails.fee.toggle.lore=&7Linksklick um den Status der Gebühr umzuschalten
gui.clandetails.rank.title=&fRang
gui.clandetails.rank.lore=&7Linksklick um den Rang von dem Clan zu sehen und um ihn zu bearbeiten
gui.clandetails.verified.title=&fVerifiziert
gui.clandetails.not.verified.title=&fNicht verifiziert
gui.clandetails.verify.price.lore=&7Preis\: &b{0}
gui.clandetails.not.verified.lore=&7Linksklick um deinen Clan zu verifizieren
gui.staffclandetails.not.verified.lore=&7Linksklick um diesen Clan zu verifizieren
gui.clandetails.resign.title=&fZurücktreten
gui.clandetails.resign.lore=&7Linksklick um aus deinem Clan zurückzutreten
gui.clandetails.disband.title=&fAuflösen
gui.clandetails.disband.lore=&7Middle-Klick, um deinen Clan aufzulösen
gui.staffclandetails.disband.lore=&7Linksklick um diesen Clan aufzulösen
gui.clandetails.chat.title=&fChat
gui.clandetails.chat.clan.chat.lore=&7/{0} [message] - &bSendet eine Nachricht an den Clan Chat
gui.clandetails.chat.clan.join.leave.lore=&7/{0} {1}/{2} - &bBetritt/verlässt den Clan-Chat
@@ -327,9 +721,26 @@ gui.playerdetails.demote.lore.right.click=&7Rechtsklick zum Degradieren
gui.playerdetails.assign.unassign.title=&fAssign/Unassign rank
gui.playerdetails.assign.lore.left.click=&7Linksklick zum Zuweisen
gui.playerdetails.unassign.lore.right.click=&7Rechtsklick zum Aufheben
gui.playerdetails.trust.untrust.title=&fVertrauenswürdig/nicht Vertrauenswürdig
gui.playerdetails.trust.untrust.title=&fVertrauenswürdig/Nicht Vertrauenswürdig
gui.playerdetails.trust.lore.left.click=&7Linksklick zum Vertrauen
gui.playerdetails.untrust.lore.right.click=&7Rechtsklick, um das Vertrauen aufzuheben
gui.playerdetails.ban.unban.title=&fBannen/Entbannen
gui.playerdetails.ban.left.click=&7Linksklick um diesen Spieler von Clans zu bannen
gui.playerdetails.unban.right.click=&7Rechtsklick um diesen Spieler zu entbannen
gui.playerdetails.resetkdr.lore=&7Linksklick um die KDR von diesem Spieler zurückzusetzen
gui.playerdetails.purge.title=&fEntfernen
gui.playerdetails.purge.lore=&7Linksklick um die Daten dieses Spielers zu entfernen
gui.playerdetails.place.title=&fPlatzieren
gui.playerdetails.place.lore=&7Linksklick, um einen Clan für diesen Spieler auszuwählen
gui.languageselector.title=Sprachen - Aktuell\: {0}
gui.languageselector.language.title=&f{0}
gui.languageselector.language.lore.left.click=&7Linksklick, um dies als Ihre Sprache zu setzen
gui.languageselector.language.lore.translation.status=&7Übersetzungsstatus\: &b{0}%
gui.languageselector.language.lore.right.click=&7Rechtsklick um beim Übersetzen zu helfen
gui.confirmation.title=Bestätigung
gui.confirmation.confirm=&7Klicke hier, um zu bestätigen
gui.confirmation.return=&7Hier klicken um zurückzukehren
gui.not.supported=&cWährend dem Öffnen der GUI ist ein Fehler aufgetretren... Deaktivieren der GUI... Hast du die richtige Version heruntergeladen?
staff.member.verify.clan=&cEin Admin muss deinen Clan verifizieren\!
player.already.has.that.rank=&cDer Spieler hat bereits diesen Rang\!
joined.clan.chat=&bDu bist dem Clan-Chat beigetreten
@@ -343,5 +754,49 @@ unmuted.ally.chat=&bDu hast den Allianzchat freigeschaltet
player.already.in.this.clan=&cDer Spieler ist bereits in diesem Clan
your.clan.reached.max.alliances=&cDein Clan hat die maximale Anzahl an Allianzen erreicht
other.clan.reached.max.alliances=&cDer andere Clan hat die maximale Anzahl an Allianzen erreicht
insert.clan.tag=&bDem Clan einen Tag hinzufügen\:
insert.clan.name=&bDem Clan einen Namen geben\:
insert.rank.name=&bDen Rangnamen einfügen\:
click.to.help.translating=&bKlicke auf diesen Link &r{0} &bum bei der Übersetzung zu helfen
your.clan.must.have.members.to.verify=&cDein Clan muss mindestens {0} Mitglieder haben um verifiziert werden zu können\!
you.must.hold.a.banner=&cDu musst einen Banner in deiner Hand halten\!
you.changed.clan.banner=&bDu hast den Banner deines Clans geändert\!
your.clan.already.verified=&cDein Clan ist bereits verifiziert\!
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
player.lookup.clanname=&e[&8%clan_color_tag%&e] &b%clan_name%
# suppress inspection "TrailingSpacesInProperty"
player.lookup.killtype=&7Kill-Typ\: %player_kill_type%\n
player.lookup=\n&b%player_name%&7's Spielerinfo &8-------------------------------------------\n \n &7Clan\: &f%clan_name%\n &7Rang\: &f%player_rank%\n &7Status\: &f%player_status%\n &7KDR\: &e%player_kdr%\n &7Anzahl Kills\: &8[Rivale\:&f%player_rival_kills% &8Neutrale\:&f%player_neutral_kills% &8Zivilisten\:&f%player_civilian_kills%&8]\n &7Tode\: &f%player_deaths%\n &7Beitrittsdatum\: &f%player_join_date%\n &7Zuletzt gesehen\: &f%player_last_seen%\n &7Vergangene Clans\: &f%player_past_clans%\n &7Inaktiv\: &f%player_inactive_days%&7/&f%player_max_inactive_days% Tage\n %kill_type_line%
economy.disabled=&cWirtschaft deaktiviert\!
has.been.purged=Die Daten von {0} wurden entfernt
accepted.invitation=&bDu hast die Einladung von {0} angenommen
denied.invitation=&cDu hast die Einladung von {0} abgelehnt
must.be.in.clan.to.pvp=&cDu und {0} müsst Mitglieder eines Clans sein um gegeneinander kämpfen zu können\!
clans.not.at.war.pvp.denied=&cDein clan ist nicht mit {0} im Krieg\!
cannot.attack.civilians=&cDu kannst keine Zivilisten angreifen\!
cannot.attack.clan.member=&cDu kannst kein anderes Clanmitglied angreifen\!
cannot.attack.ally=&cDu kannst keine Allianz angreifen\!
# suppress inspection "TrailingSpacesInProperty"
cannot.change.member.fee.now=&cWährend die Clangebühr eingezogen wird, kannst du diese nicht ändern.
cannot.change.member.fee.hours=&cVersuche es in {0} Stunden erneut...
cannot.change.member.fee.minutes=&cVersuche es in {0} Minute(n)...
cannot.kick.last.leader=&cDu kannst den letzten Anführer nicht rauswerfen\!
you.can.only.set.base.in.your.land=&cDu kannst dein Zuhause nur auf deinem eigenen Land in Anspruch nehmen\!
only.leaders.can.create.lands=&cNur ein Anführer kann ein Land erstellen\!
only.one.land.per.clan=&cDein Clan besitzt bereits ein Land\!
only.clan.members.can.create.lands=&cNur Clanmitglieder können Land erstellen\!
land.allowed.all.actions=&bAlle Aktionen sind nun erlaubt\!
land.blocked.all.actions=&bAlle Aktionen sind nicht mehr erlaubt\!
land.allowed.action=&bErlaubte Aktion\!
land.blocked.action=&bVerbotene Aktion\!
you.do.not.own.lands=&cDu besitzt kein Land\!
land.sharing.disabled=&cDas Teilen von Land ist deaktiviert\!
war.expired=Der Krieg mit {0} ist abgelaufen\!
land.command=Land
break.command=Abbauen
interact.command=interagieren
place_block.command=place_block
damage.command=Schaden
interact_entity.command=interact_entity
container.command=Behälter
@@ -0,0 +1,8 @@
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
+71 -16
View File
@@ -3,6 +3,8 @@ create.command=create
delete.command=eliminar
rank.command=rank
setdisplayname.command=setdisplayname
setdefault.command=setdefault
removedefault.command=removedefault
permissions.command=permisos
list.command=list
list.order.asc=asc
@@ -22,10 +24,10 @@ vitals.command=vitals
coords.command=coords
stats.command=stats
ally.command=ally
add.command=añadir
remove.command=eliminar
allow.command=permitir
block.command=bloquear
add.command=add
remove.command=remove
allow.command=allow
block.command=block
auto.command=auto
check.command=verificar
assign.command=asignar
@@ -49,6 +51,7 @@ purge.command=purge
trust.command=trust
untrust.command=untrust
admin.command=admin
mod.command=mod
promote.command=promote
demote.command=demote
clanff.command=clanff
@@ -63,8 +66,8 @@ globalff.command=globalff
kills.command=kills
mostkilled.command=mostkilled
war.command=war
start.command=iniciar
end.command=terminar
start.command=start
end.command=end
home.command=home
regroup.command=reagrupar
me.command=yo
@@ -82,6 +85,7 @@ acf-core.parameter.displayname=nombre de pantalla
acf-core.parameter.permission=permisos
acf-core.parameter.message=mensaje
acf-core.parameter.tag=etiqueta
acf-core.parameter.name=nombre
acf-core.parameter.fee=tarifa
acf-core.parameter.description=descripcion
acf-core.parameter.player=jugador
@@ -89,6 +93,20 @@ acf-core.parameter.clan=clan
acf-core.parameter.type=tipo
acf-core.parameter.order=orden
acf-core.parameter.help=pagina o palabras clave
command.description.land.allow.all=Permite todas las acciones en tu tierra
command.description.land.allow.interact_entity=Permite a los miembros del clan interactuar con entidades en tu tierra
command.description.land.allow.interact=Permite a los miembros del clan interactuar con tu tierra
command.description.land.allow.container=Permite a los miembros del clan abrir contenedores en tu tierra
command.description.land.allow.place=Permite a los miembros del clan colocar bloques en tu tierra
command.description.land.allow.break=Permite a los miembros del clan romper bloques en tu tierra
command.description.land.allow.damage=Permite a los miembros del clan causar daño en tu tierra
command.description.land.block.all=Bloquea todas las acciones en tu tierra
command.description.land.block.interact_entity=Bloquea a los miembros del clan de interactuar con entidades en tu tierra
command.description.land.block.interact=Bloquea que los miembros del clan interactúen con tu tierra
command.description.land.block.container=Bloquea a los miembros del clan de abrir contenedores en tu tierra
command.description.land.block.place=Bloquea a los miembros del clan de colocar bloques en tu tierra
command.description.land.block.break=Bloquea a los miembros del clan de romper bloques en tu tierra
command.description.land.block.damage=Bloquea a los miembros del clan de causar daño en tu tierra
command.description.stats=Muestra las estadisticas de los miembros de tu clan
command.description.rivalries=Muestra todas las rivalidades del clan
command.description.mostkilled=Muestra el top de asesinatos del server
@@ -141,6 +159,7 @@ command.description.ally.add=Añade un aliado
command.description.clan=Abre la interfaz grafica
command.description.disband=Disuelve tu clan
command.description.mod.disband=Disuelve un clan
command.description.mod.kick=Expulsa a un jugador del clan
command.description.modtag=Modifica la etiqueta de un clan
command.description.purge=Purga informacion de un jugador
command.description.setbanner=Establece la bandera de tu clan
@@ -163,6 +182,7 @@ command.description.admin.demote=Degrada algun lider de algun clan
command.description.demote=Degrada un lider
command.description.admin.promote=Promueve algun miembro de algun clan
command.description.promote=Promueve un miembro a lider
command.description.admin.permanent=Cambia el estado permanente de cualquier clan
command.description.toggle.bb=Establece si el tablero de anuncios debe mostrarse al entrar al servidor
command.description.toggle.tag=Establece si el tag de tu clan deberia mostrarse al lado de tu nombre
command.description.toggle.deposit=Establece si los depositos de dinero estan permitidos en tu clan
@@ -176,6 +196,8 @@ command.description.rank.create=Crea un rango
command.description.rank.delete=Elimina un rango
command.description.rank.list=Lista los rangos de tu clan
command.description.rank.setdisplayname=Establece el nombre de pantalla de tu rango
command.description.rank.setdefault=Establece el rango por defecto
command.description.rank.removedefault=Elimina el rango predeterminado
command.description.rank.permissions.available=Lista los permisos de rango disponibles
command.description.rank.permissions.rank=Lista los permisos de un rango
command.description.rank.permissions.add=Añade un permiso a un rango
@@ -208,6 +230,7 @@ leader=lider
roster=lista
trusted=confiado
untrusted=no confiado
in.rank=en rango
deaths=Muertes
weights=Cargas
stats=estadisticas
@@ -218,6 +241,7 @@ food=Comida
vitals=vitalidad
verified=Verificado
unverified=No Verificado
permanent=Permanente
profile=perfil
civilian.abbreviation=Civ
rank=Rango
@@ -256,6 +280,11 @@ asking.for.the.deletion={0} esta solicitando la eliminacion del clan
asking.for.the.promotion={0} esta solicitando promover a {1}
asking.for.the.demotion={0} esta solicitando degradar a {1}
# suppress inspection "TrailingSpacesInProperty"
request.message= \n &8[&8{0}&8] &b{1}\n %accept% &bo %deny%\n
clickable.accept=&a&l[ACEPTAR]
clickable.deny=&c&l[RECHAZAR]
hover.click.to.accept=&aClick aquí para aceptar
hover.click.to.deny=&cClick aquí para rechazar
not.sufficient.money=No tienes suficiente dinero en tu cuenta
account.has.been.debited=Se ha descontado de tu cuenta {0}
mysql.connection.successful=MySQL Connection successful
@@ -348,6 +377,7 @@ inactive.0=Inactivo\: {0}
clan.commands=comandos de clan
you.can.only.modify.the.color.and.case.of.the.tag=Solo se puede modificar el color de la etiqueta
tag.changed.to.0=Tag cambiado a {0}
0.tag.changed.to.1=&bTag correctamente cambiado de {0} a {1}
name.0=Nombre\: {0}
description.0=Descripcion\: {0}
leaders.0=Lideres\: {0}
@@ -358,7 +388,7 @@ the.player.does.not.have.the.permissions.to.lead.a.clan=El jugador no tiene perm
you.cannot.promote.yourself=No puedes promoverte a ti mismo
the.player.is.already.a.leader=El jugador ya es un lider
configuration.reloaded=Configuracion reiniciada
last.leader.cannot.resign.you.must.appoint.another.leader.or.disband.the.clan=El ultimo lider no puede abandonar. Debes agregar un nuevo lider o disolver el clan.
last.leader.cannot.resign.you.must.appoint.another.leader.or.disband.the.clan=El ultimo lider no puede abandonar el clan. Debes elegir otro lider o deshacer el clan
0.has.resigned={0} ha abandonado
you.cannot.trust.yourself=No puedes ponerte como confiable a vos mismo
leaders.are.already.trusted=Lideres ya son confiables
@@ -405,7 +435,7 @@ materials=Materiales
armor.h=H
armor.c=C
armor.l=L
armor.B=B
armor.B=A
diamond=diamante
gold=oro
wood=madera
@@ -457,18 +487,18 @@ the.clan.members.reached.limit=La cantidad de miembros de tu clan llego al limit
you.have.reseted.your.kdr=Has reseteado tu KDR
you.have.reseted.0.kdr=Has reseteado el KDR de {0}
you.have.reseted.kdr.of.all.players=Has reseteado el KDR de todos los jugadores
you.have.toggled.permanent.status=Has cambiado el estado permanente para {0}
permanent.status.enabled=El estado permanente de tu clan fue activado por {0}
permanent.status.disabled=El estado permanente de tu clan fue desactivado por {0}
resign.yes=Yes
resign.no=No
resign.confirmation=Estas seguro que quieres abandonar el clan? {0}
resign.success=Has abandonado el clan exitosamente
you.cannot.demote.the.last.leader=No puedes degradar al ultimo lider
you.cannot.move.the.last.leader=No puedes mover al último líder
player.successfully.demoted=El jugador fue degradado correctamente
bb.ago= ago
bb.moments=momentos
bb.seconds= segundos
bb.minutes= minutos
player.successfully.promoted=El jugador fue ascendido con éxito
bb.one.minute=1 minuto
bb.hours= horas
bb.one.hour=1 hora
bb.days= dias
bb.one.day=1 dia
@@ -488,6 +518,8 @@ no.description=No hay descripcion
the.player.must.wait.0.before.joining.your.clan.again=Este jugador debe esperar {0} minuto(s) antes de volver a entrar a tu clan
disabled.command=Comando deshabilitado
rank.displayname.updated=El nombre de muestra del clan fue actualizado\!
rank.setdefault=El rango predeterminado del clan se ha establecido a {0}
rank.removedefault=El rango predeterminado del clan ha sido eliminado
rank.0.permissions=Permisos del Rango {0}\:
available.rank.permissions=Permisos habilitados para rangos\:
rank.already.exists=El rango ya existe
@@ -502,7 +534,7 @@ no.ranks=Ningun rango fue creado
rank.no.permissions=Este rango no tiene ningun permiso
player.unassigned.from.rank=Jugador desasignado del rango
you.must.be.0.or.have.the.permission.1.to.use.this=Debes ser {0} o tu lider debe darle a tu rango el permiso {1} para usar esto
deposit.not.allowed=Depositos desactivados, usa /%clan %toggle %deposit para activarlo
deposit.not.allowed=Deposit is not allowed
withdraw.not.allowed=Retiros desactivados, usa /%clan %toggle %withdraw para activarlo
resign.request.cancelled=Solicitud para abandonar el clan cancelada.
promotion.vote.has.been.requested.from.all.leaders=Votacion para promover ha sido solicitada a todos los lideres
@@ -737,7 +769,7 @@ you.must.hold.a.banner=&cDebes tener un estandarte en tu mano\!
you.changed.clan.banner=&bHas cambiado el estandarte de tu clan\!
your.clan.already.verified=&cTu clan ya esta verificado\!
# suppress inspection "TrailingSpacesInProperty"
clan.profile=\n&7Perfil de &b%clan_name%&8-------------------------------------------\n \n &7Nombre\: &e[&8%clan_color_tag%&e] &b%clan_name%\n &7Descripcion\: &f%clan_description%\n &7Estatus\: &f%clan_verified%\n &7Lideres\: %clan_leaders%\n &7Miembros en Linea\: &f%clan_online_count%&7/&f%clan_size%\n &7KDR\: &e%clan_kdr%\n &7Asesinatos Totales\: &8[Rivales\:&f%clan_rival_kills% &8Neutrales\:&f%clan_neutral_kills% &8Civiles\:&f%clan_civilian_kills%&8]\n &7Muertes\: &f%clan_deaths%\n &7Tarifa\: &f%clan_fee_enabled%&7, &f%clan_fee_value% $\n &7Aliados\: &f%clan_allies%\n &7Rivales\: &f%clan_rivals%\n &7Fundado\: &f%clan_founded%\n &7Inactivo\: &f%clan_inactive_days%&7/&f%clan_max_inactive_days% dias\n
clan.profile=\n&7Perfil de &b%clan_name% &8-------------------------------------------\n \n &7Nombre\: &e[&8%clan_color_tag%&e] &b%clan_name%\n &7Descripcion\: &f%clan_description%\n &7Estatus\: &f%clan_status%\n &7Lideres\: %clan_leaders%\n &7Miembros Conectados\: &f%clan_online_count%&7/&f%clan_size%\n &7KDR\: &e%clan_kdr%\n &7Asesinatos Totales\: &8[Rivales\:&f%clan_rival_kills% &8Neutrales\:&f%clan_neutral_kills% &8Civiles\:&f%clan_civilian_kills%&8]\n &7Muertes\: &f%clan_deaths%\n &7Tarifa\: &f%clan_fee_enabled%&7, &f%clan_fee_value% $\n &7Aliados\: &f%clan_allies%\n &7Rivales\: &f%clan_rivals%\n &7Fundado\: &f%clan_founded%\n &7Inactivo\: &f%clan_inactive_days%&7/&f%clan_max_inactive_days% dias\n
player.lookup.clanname=&e[&8%clan_color_tag%&e] &b%clan_name%
# suppress inspection "TrailingSpacesInProperty"
player.lookup.killtype=&7Tipo de Asesinato\: %player_kill_type%\n
@@ -751,6 +783,29 @@ clans.not.at.war.pvp.denied=&cTu clan no esta en guerra con {0}\!
cannot.attack.civilians=&cNo puedes atacar civiles\!
cannot.attack.clan.member=&cNo puedes atacar miembros de tu clan\!
cannot.attack.ally=&cNo puedes atacar a un aliado\!
# suppress inspection "TrailingSpacesInProperty"
cannot.change.member.fee.now=&cNo puedes cambiar la cuota de miembro cerca de su tiempo de recogida.
cannot.change.member.fee.hours=&cInténtalo de nuevo en {0} horas...
cannot.change.member.fee.minutes=&cInténtalo de nuevo en {0} minuto(s)...
cannot.change.member.fee.minutes=&cInténtalo de nuevo en {0} minuto(s)...
cannot.kick.last.leader=&cNo puedes expulsar al último líder\!
cannot.disband.permanent=No puedes disolver este clan. Tiene un estatus de permanente.
you.can.only.set.base.in.your.land=&cSolo puedes establecer tu casa en tu tierra\!
only.leaders.can.create.lands=&cSolo los líderes pueden crear tierras\!
only.one.land.per.clan=&cTu clan ya tiene una tierra\!
only.clan.members.can.create.lands=&cSolo miembros del clan pueden crear tierras\!
land.allowed.all.actions=&bAhora todas las acciones están activadas\!
land.blocked.all.actions=&bAhora todas las acciones están bloqueadas\!
land.allowed.action=&bAcción permitida\!
land.blocked.action=&bAcción bloqueada\!
you.do.not.own.lands=&cNo posees una tierra\!
land.sharing.disabled=&cCompartir tierras está desactivado\!
war.expired=La guerra con {0} ha terminado\!
you.cant.start.war.online.members.difference=No puedes iniciar una guerra. Un clan tiene mas miembros conectados que el otro.
land.command=terreno
break.command=romper
interact.command=interactuar
place_block.command=colocar_bloque
damage.command=daño
interact_entity.command=interactuar_entidad
container.command=contenedor
@@ -0,0 +1,8 @@
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
+14 -7
View File
@@ -83,12 +83,20 @@ acf-core.parameter.permission=autorisation
acf-core.parameter.message=message
acf-core.parameter.tag=tag
acf-core.parameter.name=nom
acf-core.parameter.fee=frais
acf-core.parameter.description=description
acf-core.parameter.player=joueur
acf-core.parameter.clan=clan
acf-core.parameter.help=page ou mots-clés
command.description.stats=Montre les stats des membres de votre clan
command.description.rivalries=Voir tous les rivaux du clan
command.description.kills=Voir votre nombre de kills ou celui d'un autre joueur
command.description.leaderboard=Voir le classement
command.description.roster.other=Liste les membres d'un autre clan
command.description.profile.other=Voir le profil d'un autre clan
command.description.profile=Voir le profil de votre clan
command.description.list=Liste de tous les clans
command.description.chat=Parler dans le chat du clan
command.description.ally=Parle dans le chat des alliés
command.description.deny=Refuser une demande
command.description.accept=Accepter une demande
@@ -313,7 +321,6 @@ the.player.does.not.have.the.permissions.to.lead.a.clan=Le joueur n'a pas la per
you.cannot.promote.yourself=Vous ne pouvez pas vous promouvoir vous-même
the.player.is.already.a.leader=Le joueur est déjà un chef
configuration.reloaded=Configuration rechargée
last.leader.cannot.resign.you.must.appoint.another.leader.or.disband.the.clan=Le dernier chef ne peut pas démissionner. Vous devez nommer un autre chef ou dissoudre le clan
0.has.resigned={0} a démissionné
you.cannot.trust.yourself=Vous ne pouvez pas vous faire confiance
leaders.are.already.trusted=Les chefs sont déjà de confiance
@@ -418,12 +425,7 @@ resign.confirmation=Êtes-vous sûr de vouloir démissionner ? {0}
resign.success=Vous avez démissionné de votre clan avec succès
you.cannot.demote.the.last.leader=Vous ne pouvez pas rétrograder le dernier chef
player.successfully.demoted=Le lecteur a été rétrogradé avec succès
bb.ago= il y a
bb.moments=moments
bb.seconds= secondes
bb.minutes= minutes
bb.one.minute=1 minute
bb.hours= heures
bb.one.hour=1 heure
bb.days= jours
bb.one.day=1 jour
@@ -477,6 +479,7 @@ gui.main.reset.kdr.lore.price=&7Prix\: &b{0}
gui.main.reset.kdr.lore=&7Clic gauche pour réinitialiser votre KDR
gui.main.leaderboard.title=&fClassement
gui.main.leaderboard.lore=&fClique gauche pour voir le classement
gui.staff.global.ff.lore.status=&fStatus\: {0}
gui.warning.title=Avertissement
gui.warning.no.permission.title=&fAucune permission
gui.warning.no.permission.plugin.lore=Vous n'avez pas la permission pour effectuer cela\!
@@ -597,6 +600,7 @@ gui.clandetails.chat.title=&fChat
gui.clandetails.chat.clan.chat.lore=&7/{0} [message] - Envoie un message au chat du clan
gui.clandetails.chat.clan.join.leave.lore=&7/{0} {1}/{2} - &bRejoindre/quitte le chat du clan
gui.clandetails.chat.ally.chat.lore=&7/{0} [message] - Envoie un message au chat d''allié
gui.clandetails.chat.clan.status.lore=&fClan\: {0}
gui.playerdetails.title={0}
gui.playerdetails.player.title=&f{0}
gui.playerdetails.player.lore.noclan=&fClan\: Aucun
@@ -622,6 +626,7 @@ gui.playerdetails.unassign.lore.right.click=&fClic droit pour dés-assigner
gui.playerdetails.trust.untrust.title=&fFaire confiance/Ne pas faire confiance
gui.playerdetails.trust.lore.left.click=&fClic gauche pour faire confiance
gui.playerdetails.untrust.lore.right.click=&fClic droit pour ne pas faire confiance
gui.languageselector.language.title=&f{0}
joined.ally.chat=&bVous avez rejoint le chat allié
left.ally.chat=&bVous avez quitté le chat allié
muted.ally.chat=&bVous avez rendu muet le chat allié
@@ -631,4 +636,6 @@ your.clan.reached.max.alliances=&cVotre clan a atteint le nombre maximum d'allia
other.clan.reached.max.alliances=&cL'autre clan a atteint le nombre maximum d'alliances
you.changed.clan.banner=&bVous avez changé la bannière de votre clan\!
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
@@ -0,0 +1,8 @@
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
+11 -2
View File
@@ -1,4 +1,9 @@
description.command=Leírás
setdefault.command=simabeallitasa
removedefault.command=simatorlese
list.type.founded=megalapítva
acf-core.parameter.leader=vezető
acf-core.parameter.description=Leírás
home-menu=/{0} home{1} - Teleportálás a klán hazai bázisához
home-set-menu=/{0} home set{1} - Beállítsa a klán hazai bázisát
home-clear-menu=/{0} home clear{1} - Törli a klán hazai bázisát
@@ -165,7 +170,6 @@ the.player.does.not.have.the.permissions.to.lead.a.clan=A játékosnak nincs jog
you.cannot.promote.yourself=Nem reklámozhatod magad
the.player.is.already.a.leader=A játékos már vezető szerepet játszik
configuration.reloaded=A konfiguráció újratöltve
last.leader.cannot.resign.you.must.appoint.another.leader.or.disband.the.clan=A legutóbbi vezető nem tud lemondani. Új vezetőt kell kijelölni vagy fel kell oszlatni a klánt
0.has.resigned={0} lemondott
you.cannot.trust.yourself=Nem bízhatsz magadban
leaders.are.already.trusted=A vezetők már megbízhatóak
@@ -238,8 +242,13 @@ the.clan.members.reached.limit=A klán tagjai elérik a határt
you.have.reseted.your.kdr=Visszaállítottad KDR-t
you.have.reseted.0.kdr=Visszaállítottad a(z) {0} KDR-t
you.have.reseted.kdr.of.all.players=Visszaállítottad a játékosok KDR-jét
bb.days= nap
gui.allies.title=Szövetségesek
gui.rivals.title=Versenytárs
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
+179 -6
View File
@@ -2,12 +2,19 @@ description.command=descrizione
create.command=crea
delete.command=elimina
rank.command=rango
permissions.command=permessi
list.order.asc=aSC
profile.command=profilo
roster.command=membri
lookup.command=ricerca
alliances.command=alleanze
coords.command=coordinate
stats.command=statistiche
add.command=aggiungi
remove.command=rimuovi
allow.command=permetti
block.command=blocca
auto.command=automatico
bank.command=banca
admin.command=amministratore
verify.command=verifica
@@ -25,6 +32,17 @@ place.command=posiziona
resetkdr.command=resetkdr
everyone.command=tutti
help.command=aiuto
acf-core.parameter.rank=rango
acf-core.parameter.leader=leader
acf-core.parameter.description=descrizione
command.description.stats=Mostra le statistiche dei membri del tuo clan
command.description.rivalries=Mostra tutti i rivali del clan
command.description.lookup.other=Cerca le informazioni di un giocatore
command.description.leaderboard=Visualizza la classifica
command.description.roster.other=Elenca i membri di un altro clan
command.description.roster=Elenca i membri del tuo clan
command.description.profile.other=Mostra il profilo di un altro clan
command.description.profile=Mostra il profilo del tuo clan
command.description.list=Mostra tutti i clan
command.description.ally=Parli nella chat degli alleati
command.description.deny=Rifiuta una richiesta
@@ -56,11 +74,16 @@ command.description.bb.clear=Cancella il bollettino del tuo clan
command.description.bb.post=Invia un messaggio al bollettino del tuo clan
command.description.place=Colloca un giocatore in un clan
command.description.reload=Ricarica il plugin ed i file di configurazione
command.description.trust=Dai fiducia ad un membro
command.description.untrust=Annulla la fiducia di un membro
command.description.ally.add=Aggiungi un alleato
command.description.clan=Apre la GUI
command.description.disband=Sciogli il tuo clan
command.description.mod.disband=Sciogli un clan
command.description.mod.kick=Espelli un membro da un clan
command.description.modtag=Modifica il tag del tuo clan
command.description.purge=Elimina i dati di un giocatore
command.description.setbanner=Imposta il banner del tuo clan
command.description.verify=Verifica il tuo clan
command.description.mod.verify=Verifica un clan
command.description.invite=Invita un giocatore nel tuo clan
@@ -79,8 +102,13 @@ command.description.admin.demote=Retrocedi un leader da un clan
command.description.demote=Retrocedi un leader
command.description.admin.promote=Promuovi un membro da un clan
command.description.promote=Promuovi membro a Leader
command.description.alliances=Elenca tutte le alleanze del clan
command.description.rank.create=Crea un rango
command.description.rank.delete=Elimina un rango
command.description.rank.list=Elenca i ranghi del tuo clan
command.description.rank.setdisplayname=Imposta il nome visualizzato di un rango
command.description.rank.setdefault=Imposta il rango predefinito
command.description.rank.removedefault=Rimuovi il rango predefinito
clan=Clan
allies=Alleati
alliances=alleanze
@@ -145,6 +173,10 @@ inviting.you.to.join={0} ti sta invitando ad unirti a {1}
asking.for.the.deletion={0} chiede l''eliminazione del clan
asking.for.the.promotion={0} chiede la promozione di {1}
# suppress inspection "TrailingSpacesInProperty"
clickable.accept=&a&l[ACCETTA]
clickable.deny=&c&l[RIFIUTA]
hover.click.to.accept=&aClicca qui per accettare
hover.click.to.deny=&cClicca qui per rifiutare
not.sufficient.money=Non hai abbastanza soldi sul tuo conto
mysql.connection.successful=Connessione MySQL riuscita
mysql.connection.failed=Connessione MySQL fallita
@@ -154,6 +186,7 @@ clan.players=Giocatori di Clan\: {0}
banned=Sei bannato dall'usare i comandi del clan
nothing.more.to.see=Niente di più da vedere
nothing.to.vote=&cNulla da accettare o negare
no.leader.permissions=Non disponi dei diritti da leader
you.have.already.voted=Hai già votato
has.voted.to.deny={0} ha votato per negare
view.next.page=Digita /{0} per visualizzare la pagina successiva.
@@ -163,12 +196,17 @@ has.been.disbanded.alliance.ended={0} è stato sciolto. L''alleanza è finita.
clan.disbanded=Clan sciolto
1.color.day=1 {0}giorno
many.color.days={0}{1} giorni
insufficient.permissions=Permessi insufficienti
clan.is.not.verified=Il clan non è verificato
player.not.a.member.of.any.clan=&cIl giocatore non è membro di nessun clan
not.a.member.of.any.clan=Non sei membro di nessun clan
minimum.to.make.alliance=Il tuo clan deve avere almeno {0} giocatori per poter fare un''alleanza
cannot.be.same.clan=&cDevi inserire un clan diverso dal tuo\!
other.clan.not.verified=&cL'altro clan non è verificato\!
your.clans.are.not.allies=I tuoi clan non sono alleati
has.broken.the.alliance={0} ha rotto l''alleanza con {1}
at.least.one.leader.accept.the.alliance=Almeno un leader dell'alleato deve essere online per accettare l'alleanza
leaders.have.been.asked.for.an.alliance={0} leader richiedono un''alleanza
your.clans.are.already.allies=I tuoi clan sono già alleati
your.clan.cannot.create.rivals=Il tuo clan non può creare rivali
min.players.rivalries=Il tuo clan deve avere almeno {0} giocatori per poter fare rivalità
@@ -183,9 +221,30 @@ your.tag.cannot.contain.the.following.colors=Il tuo tag non può contenere i seg
your.tag.cannot.contain.color.codes=Il tuo tag non può contenere codici di colore
you.cannot.set.colored.ranks=Non puoi impostare ranghi colorati
your.clan.name.cannot.be.longer.than.characters=Il nome del tuo clan non può contenere più di {0} caratteri
your.clan.name.cannot.contain.color.codes=Il tuo tag non può contenere codici di colore
that.tag.name.is.disallowed=Quel nome tag non è consentito
you.must.first.resign=È necessario prima dimettersi da {0}
clan.with.this.tag.already.exists=Un clan con questo nome esiste già.
clan.created=Clan {0} creati
clan.has.been.disbanded=Il Clan {0} è stato sciolto
clan.disband.vote.has.been.requested.from.all.leaders=È stato richiesto il voto di scioglimento del clan da tutti i leader
friendy.fire.is.now.managed.by.your.clan=Il fuoco amichevole è ora gestito dal tuo clan
personal.friendly.fire.is.set.to.allowed=Il fuoco amichevole personale è impostato su permesso
global.friendy.fire.is.now.managed.by.each.clan=Il fuoco amichevole globale viene ora gestito da ogni clan
global.friendy.fire.is.already.being.managed.by.each.clan=Il fuoco amichevole globale è già gestito da ogni clan
global.friendly.fire.is.set.to.allowed=Il fuoco amichevole globale è impostato su consentito
global.friendly.fire.is.already.being.allowed=Il fuoco amichevole globale è già stato consentito
the.player.doesn.t.not.have.the.permissions.to.join.clans=Il giocatore non ha i permessi per unirsi ai clan
you.cannot.invite.yourself=Non puoi invitare te stesso
this.player.is.banned.from.using.clan.commands=Questo giocatore è bannato dall'utilizzo dei comandi clan
the.player.is.already.member.of.another.clan=Il giocatore è già membro di un altro clan
has.been.asked.to.join={0} è stato chiesto di unirsi a {1}
you.cannot.kick.yourself=Non puoi kickarti da solo\!
no.clans.have.been.created=Nessun clan è stato creato
total.clans=Clan totali\:
legend=Legenda\:
status.0=Stato\: {0}
rank.0=Rango\: {0}
leaders.0=Leader\: {0}
allies.0=Alleati\: {0}
rivals.0=Rivali\: {0}
@@ -207,46 +266,120 @@ leader.announce=Annuncio del Leader
hunger=Fame
stone=pietra
iron=ferro
the.clan.cannot.be.rivaled=Il clan non può essere rivale
home.base.only.once=La base principale può essere impostata una sola volta
now.at.homebase=Sei ora nella base del clan {0}
hombase.set=Base del clan impostata a\: {0}
hombase.cleared=Clan del base eliminata
hombase.mod.set=Base del clan {0} reimpostata a\:
hombase.not.set=la base del clan non è stata impostata ancora.
rival.limit.reached=Hai raggiunto il limite di rivali. Non puoi rivaleggiare più clan.
you.moved.teleport.cancelled=Ti sei mosso, teletrasporto annullato
waiting.for.teleport.stand.still.for.0.seconds=In attesa di teletrasporto, resta fermo per {0} secondi
player.rank.changed=Il Rango è stato impostato
your.clans.are.already.rivals=I vostri clan sono già rivali
player.got.money=Hai ottenuto {0} per aver ucciso {1} in base al tuo KDR\: {2}
cleared.bb=La bacheca è stata svuotata
resign.yes=Sì
resign.no=No
bb.ago= fa
bb.moments=momenti
bb.seconds= secondi
bb.minutes= minuti
resign.success=Ti sei dimesso con successo dal tuo clan
you.cannot.demote.the.last.leader=Non puoi far retrocedere l'ultimo leader rimasto
you.cannot.move.the.last.leader=Non puoi spostare l'ultimo leader rimasto
player.successfully.demoted=Il giocatore è stato retrocesso con successo
player.successfully.promoted=Il giocatore è stato promosso con successo
bb.one.minute=1 minuto
bb.hours= ore
bb.one.hour=1 ora
bb.days= giorni
bb.one.day=1 giorno
the.fee.is.0.and.its.current.value.is.1=La commissione è {0} e il suo valore attuale è {1}$
fee.enabled=abilitato
fee.disabled=disabilitato
fee.set=La tassa è stata impostata con successo
max.fee.allowed.is.0=La tariffa massima consentita è {0}
your.clan.description.must.be.longer.than=La descrizione del tuo clan deve essere più lunga di {0} caratteri
your.clan.description.cannot.be.longer.than=La descrizione del tuo clan non può essere più lunga di {0} caratteri
no.description=Nessuna descrizione
disabled.command=Comando disabilitato
rank.created=Rango creato
gui.loading=&7Caricamento...
gui.back.title=&fIndietro
gui.previous.page.title=Pagina Precedente
gui.next.page.title=&fPagina Successiva
gui.lore.no.permission=&7Non hai i permessi per vedere questo\!
gui.main.languageselector.title=Seleziona la tua lingua
gui.main.languageselector.lore.left.click=&7Click sinistro per selezionare la lingua
gui.main.languageselector.lore.right.click=&7Click destro per aiutare la traduzione
gui.main.other.commands.title=&fAltri comandi
gui.main.other.commands.lore=&7Click sinistro per vedere tutti i comandi del clan
gui.main.clan.list.title=&fLista Clan
gui.main.clan.list.lore=&7Click sinistro per vedere l'elenco dei clan
gui.main.reset.kdr.title=&fResetta il KDR
gui.main.reset.kdr.lore.price=&7Prezzo\: &b{0}
gui.main.reset.kdr.lore=&7Click sinistro per resettare il tuo KDR
gui.main.leaderboard.title=&fClassifica
gui.player.list.title=Elenco dei giocatori
gui.staff.global.ff.lore.status=&7Stato\: &b{0}
gui.warning.title=Attenzione
gui.warning.no.permission.plugin.lore=&7Non hai i permessi per eseguire questa azione\!
gui.warning.not.verified.title=&fNon verificato
gui.warning.not.verified.lore=&7Il tuo clan deve essere verificato\!
gui.allies.title=Alleati
gui.allies.clan.lore=&7Click destro per rimuovere questo alleato
gui.allies.add.title=&Aggiungi un alleato
gui.add.ally.title=Aggiungi un alleato
gui.add.ally.clan.lore=&7Click sinistro per alleare questo clan
gui.rivals.title=Rivali
gui.rivals.clan.lore=&7Click destro per rimuovere questo rivale
gui.rivals.add.title=&fAggiungi un rivale
gui.add.rival.title=Aggiungi un rivale
gui.add.rival.clan.lore=&7Click sinistro per rivaleggiare questo clan
gui.clanlist.title=Clans - Totale\: {0}
gui.clanlist.clan.lore.kdr=&7KDR\: &b{0}
gui.clanlist.clan.lore.members=&7Membri\: &b{0}
gui.coords.title=Coordinate
gui.coords.player.lore.distance=&7Distanza\: &b{0}
gui.coords.player.lore.coords=&7Coordinate\: &b{0} {1} {2}
gui.coords.player.lore.world=&7Mondo\: &b{0}
gui.invite.title=Invita un giocatore
gui.invite.player.title=&f{0}
gui.invite.player.price.lore=&7Prezzo\: &b{0}
gui.invite.player.lore=&7Click sinistro per invitare
gui.roster.title={0} Lista
gui.roster.invite.title=&fInvita
gui.roster.invite.lore=&Invita un giocatore nel tuo clan
gui.leaderboard.title=Classifica - Giocatori\: {0}
gui.leaderboard.player.title=&f\#{0} {1}
gui.ranks.title=Gradi
gui.ranks.title.set.rank=Imposta Rango - Attuale\: {0}
gui.ranks.create.title=&fCrea un rango
gui.ranks.create.lore=&7Click sinistro per creare un rango
gui.ranks.rank.title=&fRango\: {0}
gui.ranks.rank.displayname.lore=&7Nome visualizzato\: &b{0}
gui.ranks.rank.remove.lore=&7Click destro per rimuovere questo rango
gui.ranks.rank.edit.permissions.lore=&7Click sinistro per modificare i permessi del rango
gui.ranks.rank.assign.lore=&7Click sinistro per assegnare questo rango a {0}
gui.permissions.title=Permessi di {0}
gui.permissions.add.title=&fAggiungi un permesso
gui.permissions.permission.title=&f{0}
gui.permissions.permission.lore=&7Click destro per rimuovere questo permesso dal rango
gui.add.permission.title=Aggiungi un permesso
gui.add.permission.permission.title=&f{0}
gui.add.permission.permission.lore=&7Click sinistro per aggiungere questo permesso al rango
gui.clandetails.free.agent.create.clan.price.lore=&7Prezzo\: &b{0}
gui.clandetails.free.agent.create.clan.lore=&7Click sinistro per creare un clan
gui.clandetails.clan.lore.description=&7Descrizione\: &b{0}
gui.clandetails.clan.lore.status=&7Stato\: &b{0}
gui.clandetails.clan.lore.leaders=&7Leader\: &b{0}
gui.clandetails.clan.lore.online.members=&7Membri online\: &b{0}/{1}
gui.clandetails.clan.lore.kdr=&7KDR\: &b{0}
gui.clandetails.clan.lore.kill.totals=&7Uccisioni Totali\: &b[Rivali\:{0} Neutrali\:{1} Civili\:{2}]
gui.clandetails.clan.lore.deaths=&7Morti\: &b{0}
gui.clandetails.clan.lore.fee=&7Tassa\: &b{0}, {1}$
# suppress inspection "TrailingSpacesInProperty"
gui.clandetails.clan.lore.allies.separator=&b,
# suppress inspection "TrailingSpacesInProperty"
gui.clandetails.clan.lore.rivals.separator=&b,
gui.clandetails.clan.lore.allies=&7Alleati\: &b{0}
gui.clandetails.clan.lore.founded=&7Fondato\: &b{0}
gui.clandetails.clan.lore.inactive=&7Inattivo\: &b{0}/{1} giorni
gui.clandetails.home.title=&fCasa
@@ -255,8 +388,48 @@ gui.clandetails.regroup.lore.price=&7Prezzo\: &b{0}
gui.clandetails.bank.balance.lore=&7Saldo\: &b{0}
gui.clandetails.fee.status.lore=&7Stato\: &b{0}
gui.clandetails.fee.value.lore=&7Valore\: &b{0}
gui.clandetails.not.verified.title=&fNon verificato
gui.clandetails.verify.price.lore=&7Prezzo\: &b{0}
gui.clandetails.chat.ally.status.lore=&7Alleati\: &b{0}
gui.clandetails.chat.clan.toggle.lore=&7Click sinistro per attivare o disattivare lo stato della chat
gui.clandetails.chat.ally.toggle.lore=&7Click destro per attivare o disattivare lo stato della chat alleata
gui.playerdetails.title={0}
gui.playerdetails.player.title=&f{0}
gui.playerdetails.player.lore.noclan=&7Clan\: &bNessuno
gui.playerdetails.player.lore.clan=&7Clan\: &b[{0}&b] {1}
gui.playerdetails.player.lore.rank=&7Rango\: &b{0}
gui.playerdetails.player.lore.status=&7Stato\: &b{0}
gui.playerdetails.player.lore.kdr=&7KDR\: &b{0}
gui.playerdetails.player.lore.kill.totals=&7Uccisioni Totali\: &b[Rivali\:{0} Neutrali\:{1} Civili\:{2}]
gui.playerdetails.player.lore.deaths=&7Morti\: &b{0}
gui.playerdetails.player.lore.join.date=&7Data di iscrizione\: &b{0}
gui.playerdetails.player.lore.last.seen=&7Ultima vista\: &b{0}
# suppress inspection "TrailingSpacesInProperty"
gui.playerdetails.player.lore.past.clans.separator=&b,
gui.playerdetails.player.lore.past.clans=&7Clan precedenti\: &b{0}
gui.playerdetails.player.lore.inactive=&7Inattivo\: &b{0}/{1} giorni
gui.playerdetails.kick.title=&fEspelli
gui.playerdetails.promote.demote.title=&fPromuovi/Retrocedi
gui.playerdetails.promote.lore.left.click=&7Click sinistro per promuovere
gui.playerdetails.demote.lore.right.click=&7Click destro per retrocedere
gui.playerdetails.ban.unban.title=&fBandisci/Sbandisci
gui.languageselector.title=Lingue - Attuale\: {0}
gui.languageselector.language.title=&f{0}
gui.languageselector.language.lore.translation.status=&7Stato traduzione\: &b{0}%
gui.languageselector.language.lore.right.click=&7Click destro per aiutare la traduzione
gui.confirmation.title=Conferma
gui.confirmation.confirm=&7Clicca qui per confermare
gui.confirmation.return=&cClicca qui per ritornare indietro
gui.not.supported=&cSi è verificato un errore durante l'apertura della GUI\! Disattivazione... Hai scaricato la versione corretta?
staff.member.verify.clan=&cUn membro dello staff deve verificare il tuo clan\!
player.already.has.that.rank=&cIl giocatore ha già questo rango\!
joined.clan.chat=&bSei entrato nella chat del clan
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
cannot.attack.clan.member=&cNon puoi attaccare un altro membro del clan\!
cannot.attack.ally=&cNon puoi attaccare un alleato\!
# suppress inspection "TrailingSpacesInProperty"
cannot.change.member.fee.hours=&cRiprova tra {0} ore...
cannot.change.member.fee.minutes=&cRiprova tra {0} minuto/i...
cannot.kick.last.leader=&cNon puoi espellere l'ultimo leader\!
@@ -0,0 +1,8 @@
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
@@ -0,0 +1,12 @@
description.command=상세정보
create.command=만들기
delete.command=삭제하다
acf-core.parameter.description=상세정보
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
+113 -3
View File
@@ -3,6 +3,8 @@ create.command=maak
delete.command=verwijderen
rank.command=rang
setdisplayname.command=setschermnaam
setdefault.command=standaard instellingen
removedefault.command=verwijder standaard instellingen
permissions.command=toestemmingen
list.command=lijst
list.order.asc=oplopend
@@ -26,7 +28,6 @@ add.command=toevoegen
remove.command=verwijderen
allow.command=toestaan
block.command=blokkeren
auto.command=auto
check.command=controle
assign.command=toewijzen
unassign.command=loskoppelen
@@ -49,6 +50,7 @@ purge.command=verwijder
trust.command=vertrouwen
untrust.command=niet meer vertrouwen
admin.command=beheerder
mod.command=mod
promote.command=promoten
demote.command=degradeer
clanff.command=clanff
@@ -63,7 +65,6 @@ globalff.command=globalff
kills.command=moorden
mostkilled.command=meestemoorden
war.command=oorlog
start.command=start
end.command=einde
home.command=huis
regroup.command=hergroeperen
@@ -75,7 +76,35 @@ resetkdr.command=resetkdr
everyone.command=iedereen
setbanner.command=setbanner
help.command=help
acf-core.parameter.member=lid
acf-core.parameter.rank=rang
acf-core.parameter.leader=leider
acf-core.parameter.displayname=weergavenaam
acf-core.parameter.permission=machtigingen
acf-core.parameter.message=bricht
acf-core.parameter.tag=label
acf-core.parameter.name=naam
acf-core.parameter.fee=kosten
acf-core.parameter.description=beschrijving
acf-core.parameter.player=speler
acf-core.parameter.clan=clan
acf-core.parameter.type=type
acf-core.parameter.order=bestelling
acf-core.parameter.help=pagina of trefwoorden
command.description.stats=Toont de statistieken van de clan leden
command.description.rivalries=Toont alle clan rivaliteiten
command.description.mostkilled=Toont de meeste gedode aantallen op de hele server
command.description.kills=toont jouw of een andere speler zijn kill count
command.description.lookup=Kijk naar je info
command.description.lookup.other=Bekijk de informatie van een speler
command.description.leaderboard=toon het scorebord
command.description.roster.other=Toont de leden van een andere clan
command.description.roster=Geeft een lijst van de leden van uw clan
command.description.profile.other=toon een andere clan zijn profiel
command.description.profile=Toont jouw clan zijn profiel
command.description.vitals=Toont de vitaliteit van je clan en bondgenoten
command.description.list=Toon alle clans
command.description.chat=Praat in de clan chat
command.description.ally=Gesprekken in de ally chat
command.description.deny=Weigert een verzoek
command.description.accept=Accepteert een verzoek
@@ -91,9 +120,90 @@ command.description.description=Stel je clanomschrijving in
command.description.ban=Verbied een speler van clancommando's
command.description.unban=Deblokkeert een speler van clancommando's
command.description.regroup.me=Hergroepeert je clan leden naar je locatie
command.description.regroup.home=Hergroepeert je clanleden naar het huis van je clan
command.description.home.tp=Teleporteert naar het huis van je clan
command.description.home.clear=Verwijdert je clan's huis
command.description.home.set=Stelt je clan's huis in
command.description.mod.home.set=Zet het huis van een clan
command.description.mod.home.tp=Teleporteert naar het huis van een clan
command.description.rival.remove=Verwijdert een rivaal
command.description.rival.add=Voegt een rivaal toe
command.description.ally.remove=Verwijdert een bondgenoot
command.description.kick=Verwijdert een lid uit je clan
command.description.bb.display=Toont het prikbord van je clan
command.description.bb.clear=Wist het prikbord van je clan
command.description.bb.post=Post een bericht op het prikbord van je clan
command.description.place=Plaatst een speler in een clan
command.description.reload=Laadt de plug-in en zijn configuratie opnieuw
command.description.trust=Vertrouwt een lid
command.description.untrust=Vertrouwt een lid niet
command.description.resign=Neemt ontslag uit je clan
command.description.help=Toont deze hulp of zoekt in de help
allies=Bondgenoten
alliances=alliantie
coords=coördinaten
name=Naam
distance=Afstand
coords.upper=Coördinaten
world=Wereld
kdr=KDR
members=Leden
clans.lower=clan
rival=Rivaal
civilian=Burger
neutral=Neutraal
free.agent=De Vrije Agent
days=dagen
rivals=Rivalen
rivalries=rivaliteit
online=Actief
player=Speler
seen=Gezien
leader=leider
roster=rooster
trusted=vertrouwd
untrusted=niet meer vertrouwen
in.rank=in rang
deaths=Doden
weights=Gewichten
stats=statistieken
health=Gezondheid
armor=Pantser
weapons=Wapens
food=Eten
vitals=vitalen
verified=Geverifieerd
unverified=Niet Geverifieerd
profile=profiel
civilian.abbreviation=Civ
rank=Rang
leaders=Leiders
none=Geen
today=Vandaag
kills=Moorden
mostkilled=Meeste Kills
killcount=Aantal keren gedood
attacker=Aanvaller
victim=Slachtoffer
kill.death.ratio=Doden/Doodverhouding
nokillsfound=Geen doden gevonden
promoted.to.leader={0} is gepromoveerd tot leider
denied.demotion={0} heeft de demotie van {1} geweigerd. Consensus is mislukt.
# suppress inspection "TrailingSpacesInProperty"
end=einde
add=toevoegen
remove=verwijderen
allow=toestaan
block=blokkeren
war=oorlog
now.at.homebase=Je bent nu op de basis van {0}\n
bb.days= dagen
gui.allies.title=Bondgenoten
gui.rivals.title=Rivalen
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
+13 -1
View File
@@ -42,9 +42,21 @@ place.command=sted
resetkdr.command=tilbakesettekdr
setbanner.command=settebanner
help.command=hjelp
acf-core.parameter.fee=gebyr
acf-core.parameter.description=beskrivelse
alliances=allianser
coords=koord
rivalries=rivalisering
roster=roster
stats=statistikk
vitals=vitaler
profile=profil
# suppress inspection "TrailingSpacesInProperty"
war=krig
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
+23 -12
View File
@@ -1,15 +1,17 @@
description.command=Opis
create.command=utwórz
delete.command=usun
delete.command=usuń
rank.command=ranking
setdisplayname.command=ustaw nazwe wyswietlana
setdisplayname.command=ustaw wyświetlaną nazwę
setdefault.command=setdefault
removedefault.command=removedefault
permissions.command=uprawnienia
list.command=lista
list.order.asc=asc
list.order.desc=opis
list.type.name=nazwa
list.type.kdr=k/d/r
list.type.size=wielkosc
list.type.size=rozmiar
list.type.founded=reputacja
list.type.active=aktywne
profile.command=profil
@@ -49,6 +51,7 @@ purge.command=oczysc
trust.command=ufaj
untrust.command=nieufaj
admin.command=administrator
mod.command=mod
promote.command=awansuj
demote.command=degraduj
clanff.command=klanff
@@ -82,6 +85,7 @@ acf-core.parameter.displayname=Wyświetlana nazwa
acf-core.parameter.permission=Uprawnienia
acf-core.parameter.message=Wiadomość
acf-core.parameter.tag=Tag
acf-core.parameter.name=nazwa
acf-core.parameter.fee=Opłata
acf-core.parameter.description=Opis
acf-core.parameter.player=Gracz
@@ -89,6 +93,8 @@ acf-core.parameter.clan=Klan
acf-core.parameter.type=Typ
acf-core.parameter.order=Zamówienie
acf-core.parameter.help=Strona lub słowa kluczowe
command.description.land.allow.all=Pozwala na wszystkie działania na twoim terenie
command.description.land.allow.interact_entity=Pozwala członkom klanu na interakcję z obiektami na twoim terenie
command.description.stats=Pokaż statystyki członków twojego klanu
command.description.rivalries=Pokazuje wszystkie rywalizacje klanów
command.description.mostkilled=Pokazuje liczbę najczęściej zabitych na serwerze
@@ -208,6 +214,7 @@ leader=Przywodca
roster=list
trusted=zaufany
untrusted=niegodny
in.rank=w rankingu
deaths=Zgony
weights=Wagi
stats=staty
@@ -256,6 +263,11 @@ asking.for.the.deletion={0} wnioskuje za usunieciem klanu
asking.for.the.promotion={0} wnioskuje o awansowanie {1}
asking.for.the.demotion={0} wnioskuje o degradacje {1}
# suppress inspection "TrailingSpacesInProperty"
request.message= \n &8[&8{0}&8] &b{1}\n %accept% &blub %deny%\n
clickable.accept=&a&[ACCEPT]
clickable.deny=&c&[DENY]
hover.click.to.accept=&aKliknij tutaj, aby zaakceptować
hover.click.to.deny=&cKliknij tutaj, aby odrzucić
not.sufficient.money=Nie posiadasz wystarczajacej ilosci dukatow
account.has.been.debited=Twoje konto zostalo zmniejszone o {0}
mysql.connection.successful=MySQL udane polaczenie
@@ -348,6 +360,7 @@ inactive.0=Nieaktywny\: {0}
clan.commands=komendy klanowe
you.can.only.modify.the.color.and.case.of.the.tag=Możesz modyfikować tylko kolor i wielkość liter tagu
tag.changed.to.0=Tag zmieniony na {0}
0.tag.changed.to.1=&bPomyślnie zmieniono tag {0} na {1}
name.0=Nazwa\: {0}
description.0=Opis\: {0}
leaders.0=Przywódcy\: {0}
@@ -358,7 +371,6 @@ the.player.does.not.have.the.permissions.to.lead.a.clan=Ten gracz nie ma uprawni
you.cannot.promote.yourself=Nie możesz awansować samego siebie
the.player.is.already.a.leader=Ten gracz jest już przywódcą
configuration.reloaded=Przeładowano ustawienia
last.leader.cannot.resign.you.must.appoint.another.leader.or.disband.the.clan=Ostatni dowódca nie może zrezygnować. Musisz wyznaczyć innego dowódcę lub rozwiązać klan
0.has.resigned={0} zrezygnował
you.cannot.trust.yourself=Nie możesz oznaczyć samego siebie jako osobę zaufaną
leaders.are.already.trusted=Przywódcy są już oznaczeni jako zaufani
@@ -405,7 +417,7 @@ materials=Materiały
armor.h=H
armor.c=C
armor.l=L
armor.B=B
armor.B=K
diamond=diament
gold=złoto
wood=drewno
@@ -463,12 +475,7 @@ resign.confirmation=Czy na pewno chcesz zrezygnować? {0}
resign.success=Pomyślnie zrezygnowałeś z klanu
you.cannot.demote.the.last.leader=Nie możesz zdegradować ostatniego lidera
player.successfully.demoted=Gracz został pomyślnie obniżony
bb.ago= temu
bb.moments=chwile
bb.seconds= sekundy
bb.minutes= minuty
bb.one.minute=1 minuta
bb.hours= godziny
bb.one.hour=1 godzina
bb.days= Dni
bb.one.day=1 dzień
@@ -488,6 +495,8 @@ no.description=Bez opisu
the.player.must.wait.0.before.joining.your.clan.again=Ten gracz musi poczekać {0} minut przed ponownym dołączeniem do klanu
disabled.command=Wyłączone komendy
rank.displayname.updated=Nazwa wyświetlana rangi została zaktualizowana\!
rank.setdefault=Domyślny ranking klanu został ustawiony na {0}
rank.removedefault=Domyślny ranking klanu został usunięty
rank.0.permissions=Uprawnienia {0}rangi\:
available.rank.permissions=Dostępne uprawnienia dla rangi\:
rank.already.exists=Ranga już istnieje
@@ -737,7 +746,6 @@ you.must.hold.a.banner=&cMusisz mieć baner w ręce\!
you.changed.clan.banner=&bZmieniłeś baner Twojego klanu\!
your.clan.already.verified=&Ten klan jest już zweryfikowany\!
# suppress inspection "TrailingSpacesInProperty"
clan.profile=\n&b%clan_name%&7 profil &8-------------------------------------------\n \n &7Nazwa\: &e[&8%clan_color_tag%&e] &b%clan_name%\n &7Opis\: &f%clan_description%\n &7Status\: &f%clan_verified%\n &7Szef\: %clan_leaders%\n &7Online\: &f%clan_online_count%&7/&f%clan_size%\n &7KDR\: &e%clan_kdr%\n &7Zabojstwa\: &8[Rival\:&f%clan_rival_kills% &8Neutral\:&f%clan_neutral_kills% &8Civilian\:&f%clan_civilian_kills%&8]\n &7Zgony\: &f%clan_deaths%\n &7Oplata\: &f%clan_fee_enabled%&7, &f%clan_fee_value% $\n &7Sojusznicy\: &f%clan_allies%\n &7Wrogowie\: &f%clan_rivals%\n &7Zalozona\: &f%clan_founded%\n &7Nieaktywny\: &f%clan_inactive_days%&7/&f%clan_max_inactive_days% dni
player.lookup.clanname=&e[&8%clan_color_tag%&e] &b%clan_name%
# suppress inspection "TrailingSpacesInProperty"
player.lookup.killtype=&7Typ zabójstwa\: %player_kill_type%\n
@@ -751,6 +759,9 @@ clans.not.at.war.pvp.denied=&cTwój klan nie jest w wojnie z {0}\!
cannot.attack.civilians=&cNie możesz atakować cywilów\!
cannot.attack.clan.member=&cNie możesz zaatakować innego członka klanu\!
cannot.attack.ally=&cNie możesz zaatakować sojusznika\!
# suppress inspection "TrailingSpacesInProperty"
cannot.change.member.fee.now=&cNie możesz zmienić składki członkowskiej blisko czasu jej pobrania.
cannot.change.member.fee.hours=&cSpróbuj ponownie za {0} godzin...
cannot.change.member.fee.minutes=&cSpróbuj ponownie za {0} minut...
cannot.change.member.fee.minutes=&cSpróbuj ponownie za {0} minut...
cannot.kick.last.leader=&cNie możesz wyrzucić ostatniego lidera\!
+81 -15
View File
@@ -3,6 +3,8 @@ create.command=criar
delete.command=deletar
rank.command=cargo
setdisplayname.command=nomeexibicao
setdefault.command=definirpadrao
removedefault.command=removerpadrao
permissions.command=permissoes
list.command=listar
list.order.asc=asc
@@ -42,6 +44,8 @@ withdraw.command=sacar
invite.command=convidar
kick.command=expulsar
bank.command=banco
give.command=dar
take.command=tirar
status.command=estado
fee.command=taxa
set.command=definir
@@ -65,7 +69,7 @@ kills.command=mortes
mostkilled.command=maismatou
war.command=guerra
start.command=iniciar
end.command=terminar
end.command=finalizar
home.command=base
regroup.command=reagrupar
me.command=mim
@@ -91,6 +95,20 @@ acf-core.parameter.clan=clã
acf-core.parameter.type=tipo
acf-core.parameter.order=ordem
acf-core.parameter.help=página ou palavras-chave
command.description.land.allow.all=Permite todas as ações no seu terreno
command.description.land.allow.interact_entity=Permite que membros do clã interajam com entidades no seu terreno
command.description.land.allow.interact=Permite que membros do clã interajam com o seu terreno
command.description.land.allow.container=Permite que membros do clã abram baús (entre outros) no seu terreno
command.description.land.allow.place=Permite que membros do clã coloquem blocos no seu terreno
command.description.land.allow.break=Permite que membros do clã quebrem blocos no seu terreno
command.description.land.allow.damage=Permite que membros do clã causem dano em seu terreno
command.description.land.block.all=Bloqueia todas as ações em seu terreno
command.description.land.block.interact_entity=Bloqueia membros do clã de interagirem com entidades em seu terreno
command.description.land.block.interact=Bloqueia membros do clã de interagirem com seu terreno
command.description.land.block.container=Bloqueia membros do clã de abrirem baús (entre outros) em seu terreno
command.description.land.block.place=Bloqueia membros do clã de colocarem blocos em seu terreno
command.description.land.block.break=Bloqueia membros do clã de quebrarem blocos em seu terreno
command.description.land.block.damage=Bloqueia membros do clã de causarem dano em seu terreno
command.description.stats=Mostra as estatísticas dos membros do seu clã
command.description.rivalries=Mostra todas as rivalidades
command.description.mostkilled=Mostra o total de mortes de uma vítima para o mesmo assassino
@@ -143,6 +161,7 @@ command.description.ally.add=Adiciona um aliado
command.description.clan=Abre a GUI
command.description.disband=Debanda o seu clã
command.description.mod.disband=Debanda um clã
command.description.mod.kick=Expulsa um jogador de um clã
command.description.modtag=Modifica a tag do seu clã
command.description.purge=Apaga os dados de um jogador
command.description.setbanner=Define o estandarte do seu clã
@@ -152,10 +171,14 @@ command.description.invite=Convida um jogador para o seu clã
command.description.fee.check=Verifica o valor da taxa do clã e se está ativada
command.description.fee.set=Define a taxa do seu clã
command.description.bank.status=Verifica o saldo do banco do seu clã
command.description.bank.admin.status=Verifica o saldo bancário de um clã
command.description.bank.withdraw.all=Saca tudo do banco do seu clã
command.description.bank.withdraw.amount=Saca uma quantia do banco do seu clã
command.description.bank.admin.take=Tira uma quantia em dinheiro do banco de um clã
command.description.bank.deposit.all=Deposita todo o seu dinheiro no banco do seu clã
command.description.bank.deposit.amount=Deposita uma quantia no banco do seu clã
command.description.bank.admin.give=Dá uma quantia em dinheiro ao banco de um clã
command.description.bank.admin.set=Define uma quantia em dinheiro para o banco de um clã
command.description.war.start=Inicia uma guerra
command.description.war.end=Termina uma guerra
command.description.resetkdr.everyone=Redefine o KDR de todos os jogadores
@@ -165,6 +188,7 @@ command.description.admin.demote=Rebaixa qualquer líder de qualquer clã
command.description.demote=Rebaixa um líder
command.description.admin.promote=Promove qualquer membro de qualquer clã
command.description.promote=Promove um membro para líder
command.description.admin.permanent=Alterna o status permanente de qualquer clã
command.description.toggle.bb=Alterna se o quadro de avisos deve ser exibido quando você entra no servidor
command.description.toggle.tag=Alterna se a tag do seu clã deve ser exibida ao lado do seu nome
command.description.toggle.deposit=Alterna se os depósitos são permitidos em seu clã
@@ -178,6 +202,8 @@ command.description.rank.create=Cria um cargo
command.description.rank.delete=Apaga um cargo
command.description.rank.list=Lista os cargos do clã
command.description.rank.setdisplayname=Define o nome de exibição de um cargo
command.description.rank.setdefault=Define o cargo padrão
command.description.rank.removedefault=Remove o cargo padrão
command.description.rank.permissions.available=Lista as permissões de cargo disponíveis
command.description.rank.permissions.rank=Lista as permissões de um cargo
command.description.rank.permissions.add=Adiciona uma permissão a um cargo
@@ -199,6 +225,7 @@ clans.lower=clãs
rival=Rival
civilian=Civil
neutral=Neutro
ally=Aliado
free.agent=Agente Livre
days=dias
rivals=Rivais
@@ -210,7 +237,7 @@ leader=líder
roster=membros
trusted=confiável
untrusted=não-confiável
in.rank=no cargo
in.rank=em um cargo
deaths=Morreu
weights=Pesos
stats=estatísticas
@@ -221,6 +248,7 @@ food=Comida
vitals=Saúde
verified=Verificado
unverified=Não verificado
permanent=Permanente
profile=perfil
civilian.abbreviation=Civ
rank=Cargo
@@ -356,7 +384,7 @@ inactive.0=Inativo\: {0}
clan.commands=comandos de clã
you.can.only.modify.the.color.and.case.of.the.tag=Você pode modificar apenas a cor ou a caixa (maiúsculo ou minúsculo) da tag
tag.changed.to.0=Tag modificada para {0}
0.tag.changed.to.1=&bAlterou a tag do clã de {0} para {1}
0.tag.changed.to.1=&bAlterou a tag do clã {0} para {1} com sucesso
name.0=Nome\: {0}
description.0=Descrição\: {0}
leaders.0=Líderes\: {0}
@@ -367,7 +395,7 @@ the.player.does.not.have.the.permissions.to.lead.a.clan=O jogador não tem permi
you.cannot.promote.yourself=Você não pode se promover
the.player.is.already.a.leader=O jogador já é um líder
configuration.reloaded=Configuração recarregada
last.leader.cannot.resign.you.must.appoint.another.leader.or.disband.the.clan=O último líder não pode abandonar. Você deve apontar outro líder ou debandar o clã
last.leader.cannot.resign.you.must.appoint.another.leader.or.disband.the.clan=O último líder não pode renunciar. Você deve nomear outro líder ou dissolver o clã
0.has.resigned={0} abandonou
you.cannot.trust.yourself=Você não pode se marcar como confiável
leaders.are.already.trusted=Líderes já são confiáveis
@@ -414,7 +442,7 @@ materials=Materiais
armor.h=E
armor.c=P
armor.l=C
armor.B=B
armor.B=A
diamond=Diamante
gold=Ouro
wood=Madeira
@@ -424,7 +452,7 @@ leader.announce=Anúncio de Líder
hunger=Fome
stone=pedra
iron=ferro
the.clan.cannot.be.rivaled=O clã não pdoe ser rivalizado
the.clan.cannot.be.rivaled=O clã não pode ser rivalizado
bboff=BB desativado
bbon=BB ativado
tagoff=Tag desativada
@@ -454,30 +482,43 @@ your.clans.are.already.rivals=Seus clãs já são rivais
player.got.money=Você ganhou {0} por matar {1} baseado no seu KDR\: {2}
cleared.bb=Você limpou o quadro de avisos
clan.balance=Saldo do clã\: {0}
clan.admin.balance=Saldo de {0}\: {1}
bb.fee.player.kicked={0} foi expulso por não pagar a taxa
bb.fee.set=A taxa é {0} $
bb.clan.deposit={0} $ foram depositados
player.clan.deposit=Você depositou {0}
bb.clan.withdraw={0} $ foram sacados
bb.clan.take={0} $ foram tirados
bb.clan.give={0} $ foram dados
bb.clan.set={0} $ foram definidos
player.clan.withdraw=Você sacou {0}
clan.admin.take=Você tirou {0}$ do banco de {1}
clan.admin.give=Você deu {0}$ para o banco de {1}
clan.admin.set=Você definiu o saldo do banco de {0} para {1}
clan.admin.bank.not.enough.money=O banco de {0} não tem saldo suficiente
clan.bank.not.enough.money=O banco do seu clã não tem saldo suficiente
your.clans.are.not.rivals=Seus clãs não são rivais
the.clan.members.reached.limit=Seu clã atingiu o limite de membros
you.have.reseted.your.kdr=Você redefiniu o seu KDR
you.have.reseted.0.kdr=Você redefiniu o KDR de {0}
you.have.reseted.kdr.of.all.players=Você redefiniu o KDR de todos os jogadores
you.have.toggled.permanent.status=Você alternou o status permanente para {0}
permanent.status.enabled=O status permanente do seu clã foi ativado por {0}
permanent.status.disabled=O status permanente do seu clã foi desativado por {0}
resign.yes=Sim
resign.no=Não
resign.confirmation=Tem certeza de que quer abandonar o clã? {0}
resign.success=Você abandonou seu clã com sucesso
you.cannot.demote.the.last.leader=Você não pode rebaixar o último líder
you.cannot.move.the.last.leader=Você não pode mover o último líder
player.successfully.demoted=O jogador foi rebaixado com sucesso
bb.ago= atrás
bb.moments=momentos
bb.seconds= segundos
bb.minutes= minutos
player.successfully.promoted=O jogador foi promovido com sucesso
bb.ago= \ atrás
bb.moments=\ momentos
bb.seconds= \ segundos
bb.minutes= \ minutos
bb.one.minute=1 minuto
bb.hours= horas
bb.hours= \ horas
bb.one.hour=1 hora
bb.days= dias
bb.one.day=1 dia
@@ -497,6 +538,8 @@ no.description=Sem descrição
the.player.must.wait.0.before.joining.your.clan.again=Este jogador deve esperar {0} minuto(s) antes de poder entrar no seu clã de novo
disabled.command=Comando desativado
rank.displayname.updated=O nome de exibição do cargo foi atualizado\!
rank.setdefault=O cargo padrão do clã foi definido como {0}
rank.removedefault=O cargo padrão do clã foi removido
rank.0.permissions=Permissões do cargo {0}\:
available.rank.permissions=Permissões disponíveis para cargos\:
rank.already.exists=O cargo já existe
@@ -573,7 +616,7 @@ gui.add.rival.clan.lore=&7Clique com o botão esquerdo para rivalizar com este c
gui.clanlist.title=Clãs - Total\: {0}
gui.clanlist.clan.title=&fClã\: [{0}&f] {1}
gui.clanlist.clan.lore.position=&b\#{0}
gui.clanlist.clan.lore.kdr=&7KDR\: {0}
gui.clanlist.clan.lore.kdr=&7KDR\: &b{0}
gui.clanlist.clan.lore.members=&7Membros\: {0}
gui.coords.title=Coordenadas
gui.coords.player.lore.distance=&7Distância\: {0}
@@ -615,7 +658,7 @@ gui.clandetails.clan.lore.leaders=&7Líderes\: &b{0}
gui.clandetails.clan.lore.online.members=&7Membros Online\: &b{0}/{1}
gui.clandetails.clan.lore.kdr=&7KDR\: &b{0}
gui.clandetails.clan.lore.kill.totals=&7Matou\: &b[Rival\:{0} Neutro\:{1} Civil\:{2}]
gui.clandetails.clan.lore.deaths=&7Mortes\: &b{0}
gui.clandetails.clan.lore.deaths=&7Morreu\: &b{0}
gui.clandetails.clan.lore.fee=&7Taxa\: &b{0}, {1} $
# suppress inspection "TrailingSpacesInProperty"
gui.clandetails.clan.lore.allies.separator=&b,
@@ -746,7 +789,7 @@ you.must.hold.a.banner=&cVocê precisa ter um estandarte em sua mão\!
you.changed.clan.banner=&bVocê mudou o estandarte do seu clã\!
your.clan.already.verified=&cSeu clã já está verificado\!
# suppress inspection "TrailingSpacesInProperty"
clan.profile=\n&b%clan_name%&7 perfil &8-------------------------------------------\n \n &7Nome\: &e[&8%clan_color_tag%&e] &b%clan_name%\n &7Descrição\: &f%clan_description%\n &7Estado\: &f%clan_verified%\n &7Líderes\: %clan_leaders%\n &7Membros Online\: &f%clan_online_count%&7/&f%clan_size%\n &7KDR\: &e%clan_kdr%\n &7Total de Kills\: &8[Rival\:&f%clan_rival_kills% &8Neutro\:&f%clan_neutral_kills% &8Civil\:&f%clan_civilian_kills%&8]\n &7Mortes\: &f%clan_deaths%\n &7Taxa\: &f%clan_fee_enabled%&7, &f%clan_fee_value% $\n &7Aliados\: &f%clan_allies%\n &7Rivais\: &f%clan_rivals%\n &7Fundado em\: &f%clan_founded%\n &7Inativo\: &f%clan_inactive_days%&7/&f%clan_max_inactive_days% dias\n
clan.profile=&b%clan_name%&7 perfil &8-------------------------------------------\n \n &7Nome\: &e[&8%clan_color_tag%&e] &b%clan_name%\n &7Descrição\: &f%clan_description%\n &7Status\: &f%clan_status%\n &7Líderes\: %clan_leaders%\n &7Membros Online\: &f%clan_online_count%&7/&f%clan_size%\n &7KDR\: &e%clan_kdr%\n &7Total Kills\: &8[Rival\:&f%clan_rival_kills% &8Neutro\:&f%clan_neutral_kills% &8Civil\:&f%clan_civilian_kills%&8]\n &7Mortes\: &f%clan_deaths%\n &7Taxa\: &f%clan_fee_enabled%&7, &f%clan_fee_value% $\n &7Aliados\: &f%clan_allies%\n &7Rivais\: &f%clan_rivals%\n &7Fundado\: &f%clan_founded%\n &7Inativo\: &f%clan_inactive_days%&7/&f%clan_max_inactive_days% dias\n
player.lookup.clanname=&e[&8%clan_color_tag%&e] &b%clan_name%
# suppress inspection "TrailingSpacesInProperty"
player.lookup.killtype=&7Tipo de Morte\: %player_kill_type%\n
@@ -760,6 +803,29 @@ clans.not.at.war.pvp.denied=&cSeu clã não está em guerra com {0}\!
cannot.attack.civilians=&cVocê não pode atacar civis\!
cannot.attack.clan.member=&cVocê não pode atacar um membro do clã\!
cannot.attack.ally=&cVocê não pode atacar um aliado\!
# suppress inspection "TrailingSpacesInProperty"
cannot.change.member.fee.now=&cVocê não pode modificar a taxa perto do horário de coleta.
cannot.change.member.fee.hours=&cTente novamente em {0} horas...
cannot.change.member.fee.minutes=&cTente novamente em {0} minuto(s)...
cannot.change.member.fee.minutes=&cTente novamente em {0} minuto(s)...
cannot.kick.last.leader=&cVocê não pode expulsar o último líder\!
cannot.disband.permanent=&cVocê não pode dissolver este clã. Ele tem um status permanente.
you.can.only.set.base.in.your.land=&cVocê só pode definir a base em seu terreno\!
only.leaders.can.create.lands=&cApenas líderes podem criar terrenos\!
only.one.land.per.clan=&cSeu clã já tem um terreno\!
only.clan.members.can.create.lands=&cApenas membros de clã podem criar terrenos\!
land.allowed.all.actions=&bTodas as ações estão permitidas agora\!
land.blocked.all.actions=&bTodas as ações estão bloqueadas agora\!
land.allowed.action=&bAção permitida\!
land.blocked.action=&bAção bloqueada\!
you.do.not.own.lands=&cVocê não tem um terreno\!
land.sharing.disabled=&cCompartilhamento de terrenos está desabilitado\!
war.expired=A guerra com {0} expirou\!
you.cant.start.war.online.members.difference=Você não pode começar a guerra. Um clã tem mais membros online do que o outro.
land.command=terreno
break.command=quebrar
interact.command=interagir
place_block.command=colocar_bloco
damage.command=atacar
interact_entity.command=interagir_entidade
container.command=bau
@@ -0,0 +1,45 @@
description.command=descrição
create.command=adicionar
delete.command=apagar
rank.command=cargo
setdisplayname.command=definirnomededisplay
setdefault.command=definirnomevisível
removedefault.command=removerpadrão
permissions.command=permissões
list.command=lista
list.order.asc=asc
list.order.desc=desc
list.type.name=nome
list.type.kdr=kdr
list.type.size=tamanho
list.type.founded=fundado
list.type.active=ativo
profile.command=perfil
roster.command=membros
lookup.command=procurar
leaderboard.command=placar
alliances.command=aliança
rivalries.command=rivalidades
vitals.command=vitais
coords.command=coordenadas
kick.command=expulsar
bank.command=banco
purge.command=purgar
everyone.command=todos
acf-core.parameter.rank=cargo
acf-core.parameter.name=nome
acf-core.parameter.description=descrição
alliances=aliança
coords=coordenadas
rivalries=rivalidades
roster=membros
vitals=vitais
profile=perfil
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
+19 -2
View File
@@ -26,7 +26,6 @@ add.command=adauga
remove.command=elimina
allow.command=permite
block.command=blocheaza
auto.command=auto
check.command=verifica
assign.command=repartizeaza
unassign.command=anuleaza
@@ -48,6 +47,11 @@ set.command=seteaza
purge.command=sterge
trust.command=incredere
untrust.command=neincredere
acf-core.parameter.rank=grad
acf-core.parameter.tag=eticheta
acf-core.parameter.name=nume
acf-core.parameter.fee=tarif
acf-core.parameter.description=descriere
command.description.profile.other=Arata profilul altui clan
command.description.profile=Arata profilul clanului tau
command.description.vitals=Arata viata membrilor clanului tau si aliatilor
@@ -69,9 +73,22 @@ command.description.ban=Interzice comenzile unui membru din clan
command.description.unban=Dezinterzice comenzile unui membru din clan
command.description.regroup.me=Adu' membri clanului la locatia ta
command.description.regroup.home=Adu' membri clanului la casa ta
alliances=aliante
coords=coordonate
rivalries=rivali
roster=lista
stats=status
vitals=viata
profile=profil
# suppress inspection "TrailingSpacesInProperty"
add=adauga
remove=elimina
allow=permite
block=blocheaza
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
+91 -25
View File
@@ -3,6 +3,8 @@ create.command=создать
delete.command=удалить
rank.command=ранг
setdisplayname.command=установить отображаемое имя
setdefault.command=установить по умолчанию
removedefault.command=удалить по умолчанию
permissions.command=права
list.command=список
list.order.asc=по возрастанию
@@ -26,7 +28,7 @@ add.command=добавить
remove.command=удалить
allow.command=разрешить
block.command=блокировать
auto.command=по умолчанию
auto.command=авто
check.command=проверить
assign.command=назначить
unassign.command=забрать
@@ -42,6 +44,8 @@ withdraw.command=вывести
invite.command=пригласить
kick.command=выгнать
bank.command=банк
give.command=дать
take.command=взять
status.command=статус
fee.command=комиссия
set.command=установить
@@ -91,6 +95,20 @@ acf-core.parameter.clan=клан
acf-core.parameter.type=тип
acf-core.parameter.order=список заказов
acf-core.parameter.help=страница или ключевые слова
command.description.land.allow.all=Разрешить все действия на вашей территории
command.description.land.allow.interact_entity=Разрешить участникам клана взаимодействовать с сущностями на вашей территории
command.description.land.allow.interact=Разрешить участникам клана взаимодействовать с сущностями на вашей территории
command.description.land.allow.container=Разрешить участникам клана открывать сундуки, печки и другие хранилища на вашей территории
command.description.land.allow.place=Разрешить участникам клана размещать блоки на вашей территории
command.description.land.allow.break=Разрешить участникам клана ломать блоки на вашей территории
command.description.land.allow.damage=Разрешить участникам клана наносить и получать урон на вашей территории
command.description.land.block.all=Запретить все действия на вашей территории
command.description.land.block.interact_entity=Запретить участникам клана взаимодействовать с сущностями на вашей территории
command.description.land.block.interact=Запретить участникам клана взаимодействовать на вашей территории
command.description.land.block.container=Запретить участникам клана открывать сундуки, печки и другие хранилища на вашей территории
command.description.land.block.place=Запретить участникам клана размещать блоки на вашей территории
command.description.land.block.break=Запретить участникам клана ломать блоки на вашей территории
command.description.land.block.damage=Запретить участникам клана наносить и получать урон на вашей территории
command.description.stats=Показать статистику участников вашего клана
command.description.rivalries=Показать всех соперников клана
command.description.mostkilled=Показать общую статистику убийств на всём сервере
@@ -143,6 +161,7 @@ command.description.ally.add=Добавить союзника
command.description.clan=Открыть GUI
command.description.disband=Расформировать ваш клан
command.description.mod.disband=Расформировать клан
command.description.mod.kick=Выгнать игрока из клана
command.description.modtag=Изменить тег вашего клана
command.description.purge=Очистить некоторые данные об игроке
command.description.setbanner=Установить баннер вашего клана
@@ -152,10 +171,14 @@ command.description.invite=Пригласить игрока в ваш клан
command.description.fee.check=Узнать значение комиссии в вашем клане, если она включена
command.description.fee.set=Установить значение комиссии вашего клана
command.description.bank.status=Проверить баланс банка вашего клана
command.description.bank.admin.status=Проверить баланс вашего клана
command.description.bank.withdraw.all=Вывести все средства с банковского счета вашего клана
command.description.bank.withdraw.amount=Вывести указанную сумму с банковского счета вашего клана
command.description.bank.admin.take=Взять сумму из баланса клана
command.description.bank.deposit.all=Внести все ваши средства на банковский счет вашего клана
command.description.bank.deposit.amount=Внести указанную сумму на банковский счет вашего клана
command.description.bank.admin.give=Выдать сумму в баланс клана
command.description.bank.admin.set=Установить сумму баланса клана
command.description.war.start=Объявить войну
command.description.war.end=Закончить войну
command.description.resetkdr.everyone=Сбросить KDR всех игроков
@@ -165,6 +188,7 @@ command.description.admin.demote=Понизить лидера из любого
command.description.demote=Понизить лидера
command.description.admin.promote=Повысить любого участника из любого клана
command.description.promote=Повысить участника до лидера
command.description.admin.permanent=Переключает постоянный статус любого клана
command.description.toggle.bb=Следует ли показывать доску объявлений при входе на сервер
command.description.toggle.tag=Показывать ли рядом с вашим именем тег клана
command.description.toggle.deposit=Можно ли вносить средства в банковский счёт вашего клана
@@ -178,6 +202,8 @@ command.description.rank.create=Создать ранг
command.description.rank.delete=Удалить ранг
command.description.rank.list=Показать список рангов вашего клана
command.description.rank.setdisplayname=Установить отображаемое имя ранга
command.description.rank.setdefault=Установить ранг по умолчанию
command.description.rank.removedefault=Удалить ранг по умолчанию
command.description.rank.permissions.available=Вывести список доступных прав ранга
command.description.rank.permissions.rank=Показать список прав для ранга
command.description.rank.permissions.add=Добавить право для ранга
@@ -197,15 +223,16 @@ kdr=КДР
members=Участники
clans.lower=кланы
rival=Соперник
civilian=Гражданский
civilian=Мирный житель
neutral=Общие
ally=Союзник
free.agent=без клана
days=дней
rivals=Соперники
rivalries=соперничество
online=Онлайн
player=Игрок
seen=Узнать
seen=Был в сети
leader=лидер
roster=список
trusted=проверенный
@@ -221,6 +248,7 @@ food=Еда
vitals=боеспособность
verified=Подтвержденный
unverified=Не подтвержденный
permanent=Постоянный
profile=профиль
civilian.abbreviation=Жители
rank=Ранг
@@ -237,14 +265,14 @@ nokillsfound=Нет убийств
promoted.to.leader={0} был повышен до лидера
denied.demotion={0} отклонил понижение {1}. Не удалось придти к единому мнению.
membership.invitation={0} отклонил приглашение в клан
joined.the.clan={0} присоединился(-лась) к клану.
signed.off.request.cancelled={0} подписался. Запрос на {1} отменен.
joined.the.clan={0} присоединился к клану
signed.off.request.cancelled={0} дал добро. Запрос на {1} отменен.
clan.deletion={0} отказал в удалении клана. Не удалось придти к единому мнению.
has.been.disbanded=Клан {0} был распущен
denied.the.promotion={0} отказал в продвижении {1}. Не удалось придти к единому мнению.
demoted.back.to.member={0} был понижен обратно до участника
peace.agreement.denied=Мирное соглашение с {0} было отклонено
denied.to.make.peace={0} отказал в перемирие с {1}
denied.to.make.peace={0} отказал в перемирии с {1}
broken.the.rivalry={0} прекратили вражду с {1}
broken.the.rivalry.with={0} прекратили вражду с {1}
the.alliance.was.denied=Союз с {0} был отклонен
@@ -254,7 +282,7 @@ created.an.alliance={0} создал союз с {1}
has.joined={0} присоединился к {1}
proposing.to.end.the.rivalry={0} предлагает прекратить вражду с {1}
proposing.an.alliance={0} предлагает союз с {1}
inviting.you.to.join={0} пригласил вас присоединится к клану\: {1}
inviting.you.to.join={0} пригласил вас присоединиться к клану\: {1}
asking.for.the.deletion={0} предлагает удалить клан
asking.for.the.promotion={0} просит повышение {1}
asking.for.the.demotion={0} просит понизить {1}
@@ -345,8 +373,8 @@ you.cannot.kick.another.leader=Вы не можете выгнать друго
has.been.kicked.by={0} был выгнан из клана {1}
no.clans.have.been.created=Клан не был создан
total.clans=Всего кланов\:
legend=Легенда\:
kill.type.civilian=Тип убийства\: {0}Гражданский
legend=Цветовые обозначения\:
kill.type.civilian=Тип убийства\: {0}Мирный житель
no.player.data.found=Данные игрока не найдены
clan.0=Клан\: {0}
status.0=Статус\: {0}
@@ -367,7 +395,7 @@ the.player.does.not.have.the.permissions.to.lead.a.clan=У игрока нет
you.cannot.promote.yourself=Вы не можете повысить самого себя\!
the.player.is.already.a.leader=Игрок уже является лидером
configuration.reloaded=Конфигурация перезагружена
last.leader.cannot.resign.you.must.appoint.another.leader.or.disband.the.clan=Последний лидер не может выйти. Вы должны назначить другого лидера или распустить клан
last.leader.cannot.resign.you.must.appoint.another.leader.or.disband.the.clan=Последний лидер не может выйти в отставку. Вы должны назначить другого лидера или распустить клан
0.has.resigned={0} ушёл в отставку
you.cannot.trust.yourself=Вы не можете установить статус доверия самому себе
leaders.are.already.trusted=Лидерам уже доверяют
@@ -375,7 +403,7 @@ this.player.is.already.trusted=Игроку уже доверяют
has.been.given.trusted.status.by={0} получил доверенный статус от {1}
this.player.is.not.banned=Этот игрок не забанен
player.removed.from.the.banned.list=Игрок был удален из бан-листа
you.have.been.unbanned.from.clan.commands=Вы были разблокированы в участие кланов
you.have.been.unbanned.from.clan.commands=Вам был разблокирован доступ к командам клана
you.cannot.untrust.yourself=Вы не можете изменить это
leaders.cannot.be.untrusted=Нельзя портить репутацию лидера
this.player.is.already.untrusted=Этот игрок уже имеет статус недоверия
@@ -441,43 +469,56 @@ hombase.set=База клана\: {0}
hombase.cleared=База клана была удалена
hombase.mod.set=База клана {0}, была установлена на координатах\:
hombase.not.set=У клана нет базы
rival.limit.reached=Вы достигли лимита войн, пока что нельзя объявлять войны
rival.limit.reached=Вы достигли лимита соперников, нельзя соперничать больше.
you.moved.teleport.cancelled=Вы перемещены, телепортация отменена
waiting.for.teleport.stand.still.for.0.seconds=Ожидание телепортирования, оставайтесь на месте ещё {0} секунд
on=включить
off=выключить
leave=покинуть
join=присоединиться
mute=молчать
mute=заглушить
player.rank.changed=Ранг был установлен
your.clans.are.already.rivals=Между вашими кланами уже война
player.got.money=Вы получили {0} за убийство {1} , основанном на вашем KDR\: {2}
cleared.bb=Доска объявлений очищена
clan.balance=Баланс Клана\: {0}
clan.admin.balance={0} баланс\: {1}
bb.fee.player.kicked={0} был выгнан за невыплату комиссии
bb.fee.set={0} $ - это комиссия
bb.clan.deposit={0} $ сдано на хранение
player.clan.deposit=Вы вложили {0}
bb.clan.withdraw={0} $ снято
bb.clan.take={0} $ взято
bb.clan.give={0} $ получено
bb.clan.set={0} $ установлено
player.clan.withdraw=Вы снимаете {0}
clan.admin.take=Вы взяли {0}$ у {1}
clan.admin.give=Вы отдали {0}$ в банк {1}
clan.admin.set=Вы установили баланс {0} на {1}
clan.admin.bank.not.enough.money={0} имеет недостаточно денег
clan.bank.not.enough.money=У вашего клана недостаточно денег
your.clans.are.not.rivals=Ваши кланы не воюют
the.clan.members.reached.limit=Количество участников клана достигло лимита
you.have.reseted.your.kdr=Вы восстановили KDR
you.have.reseted.0.kdr=Вы восстановили {0} KDR
you.have.reseted.kdr.of.all.players=Вы восстановили KDR всех игроков
you.have.toggled.permanent.status=Вы переключили постоянный статус для {0}
permanent.status.enabled={0} включил постоянный статус вашего клана
permanent.status.disabled={0} выключил постоянный статус вашего клана
resign.yes=Да
resign.no=Нет
resign.confirmation=Вы уверены, что хотите выйти? {0}
resign.success=Вы покинули клан
you.cannot.demote.the.last.leader=Вы не можете понизить последнего лидера
you.cannot.move.the.last.leader=Вы не можете переместить последнего лидера
player.successfully.demoted=Игрок был понижен
bb.ago= назад
bb.moments=моменты
bb.seconds= секунд
bb.minutes= минут
player.successfully.promoted=Игрок был успешно повышен
bb.ago= \ назад
bb.moments=\ моменты
bb.seconds= \ секунд
bb.minutes= \ минут
bb.one.minute=1 минута
bb.hours= часов
bb.hours= \ часов
bb.one.hour=1 час
bb.days= дней
bb.one.day=1 день
@@ -486,7 +527,7 @@ fee.enabled=включено
fee.disabled=выключено
fee.set=Комиссия успешно установлена
max.fee.allowed.is.0=Максимальный размер комиссии {0}
fee.collected={0} $ были сняты за вознаграждение Клана
fee.collected={0} $ были сняты за комиссию клана
player.purged=Игрок был успешно очищен
upkeep.collected={0} $ были отозваны на содержание
balance.is.not.enough.for.upkeep=Баланс Клана недостаточно для оплаты содержания ({0} $), пополните счет чтобы избежать роспуска
@@ -497,6 +538,8 @@ no.description=Нет описания
the.player.must.wait.0.before.joining.your.clan.again=Этот игрок должен подождать {0} минут, прежде чем сможет вступить в ваш клан\!
disabled.command=Команда отключена
rank.displayname.updated=Отображаемое имя ранга обновлено\!
rank.setdefault=Ранг клана по умолчанию теперь установлен на {0}
rank.removedefault=Ранг клана по умолчанию был удалён
rank.0.permissions=Права {0} ранга\:
available.rank.permissions=Доступные права для ранга\:
rank.already.exists=Ранг уже существует
@@ -614,7 +657,7 @@ gui.clandetails.clan.lore.status=&7Статус\: &b{0}
gui.clandetails.clan.lore.leaders=&7Лидеры\: &b{0}
gui.clandetails.clan.lore.online.members=&7Участников онлайн\: &b{0}/{1}
gui.clandetails.clan.lore.kdr=&7KDR\: &b{0}
gui.clandetails.clan.lore.kill.totals=&7Убито всего\: &b[Соперники\: {0} Нейтралы\: {1} Без клана\: {2}]
gui.clandetails.clan.lore.kill.totals=&7Убито всего\: &b[Врагов\: {0} Нейтралов\: {1} Мирных жителей\: {2}]
gui.clandetails.clan.lore.deaths=&7Смертей\: &b{0}
gui.clandetails.clan.lore.fee=&7Комиссия\: &b{0}, {1}$
# suppress inspection "TrailingSpacesInProperty"
@@ -623,7 +666,7 @@ gui.clandetails.clan.lore.allies.separator=&b,
gui.clandetails.clan.lore.rivals.separator=&b,
gui.clandetails.clan.lore.allies=&7Союзники\: &b{0}
gui.clandetails.clan.lore.rivals=&7Соперники\: &b{0}
gui.clandetails.clan.lore.founded=&7Найдено\: &b{0}
gui.clandetails.clan.lore.founded=&7Основан\: &b{0}
gui.clandetails.clan.lore.inactive=&7Неактивен\: &b{0}/{1} дней
gui.clandetails.allies.title=&fСоюзники
gui.clandetails.allies.lore=&7ЛКМ\: Посмотреть список союзников или создать новый союз
@@ -689,7 +732,7 @@ gui.playerdetails.player.lore.clan=&7Клан\: &b[{0}&b] {1}
gui.playerdetails.player.lore.rank=&7Ранг\: &b{0}
gui.playerdetails.player.lore.status=&7Статус\: &b{0}
gui.playerdetails.player.lore.kdr=&7KDR\: &b{0}
gui.playerdetails.player.lore.kill.totals=&7Убито всего\: &b[Соперники\: {0} Нейтралы\: {1} Без клана\: {2}]
gui.playerdetails.player.lore.kill.totals=&7Убито всего\: &b[Врагов\: {0} Нейтралов\: {1} Мирных жителей\: {2}]
gui.playerdetails.player.lore.deaths=&7Смертей\: &b{0}
gui.playerdetails.player.lore.join.date=&7Дата вступления\: &b{0}
gui.playerdetails.player.lore.last.seen=&7Был в сети\: &b{0}
@@ -726,11 +769,11 @@ gui.confirmation.return=&7Нажмите, чтобы вернуться
gui.not.supported=&cПроизошла ошибка при открытии GUI\! Отключение... Вы скачали правильную версию?
staff.member.verify.clan=&cАдминистратор должен подтвердить ваш клан\!
player.already.has.that.rank=&cУ игрока уже есть этот ранг\!
joined.clan.chat=&bВы присоединились к Клану чата
joined.clan.chat=&bВы присоединились к клановому чату
left.clan.chat=&bВы покинули клановый чат
muted.clan.chat=&bВы заглушили чат Клана
unmuted.clan.chat=&bВы включили чат Клана
joined.ally.chat=&bВы присоединились к чату с союзниками
joined.ally.chat=&bВы присоединились к союзному чату
left.ally.chat=&bВы покинули чат с союзниками
muted.ally.chat=&bВы заглушили чат с союзниками
unmuted.ally.chat=&bВы включили чат с союзниками
@@ -760,6 +803,29 @@ clans.not.at.war.pvp.denied=&cВаш клан не воюет с {0}\!
cannot.attack.civilians=&cВы не можете атаковать гражданских\!
cannot.attack.clan.member=&cВы не можете атаковать участников других кланов\!
cannot.attack.ally=&cВы не можете атаковать союзников\!
# suppress inspection "TrailingSpacesInProperty"
cannot.change.member.fee.now=&cИзменить комиссию участника клана невозможно, так как приближается время её сбора
cannot.change.member.fee.hours=&cПовторите попытку через {0} часов...
cannot.change.member.fee.minutes=&cПовторите попытку через {0} минут(ы)...
cannot.change.member.fee.minutes=&cПовторите попытку через {0} минут(ы)...
cannot.kick.last.leader=&cВы не можете выгнать последнего лидера\!
cannot.disband.permanent=&cВы не можете распустить этот клан. Он имеет постоянный статус.
you.can.only.set.base.in.your.land=&cВы можете разместить точку базы только на вашей территории\!
only.leaders.can.create.lands=&cТолько лидеры клана могут создавать территории\!
only.one.land.per.clan=&cУ вашего клана уже есть территория\!
only.clan.members.can.create.lands=&cТолько участники клана могут создавать территории\!
land.allowed.all.actions=&bВсе действия теперь разрешены\!
land.blocked.all.actions=&bВсе действия теперь запрещены\!
land.allowed.action=&bДействие разрешено\!
land.blocked.action=&bДействие запрещено\!
you.do.not.own.lands=&cВы не владеете территорией\!
land.sharing.disabled=&cРазделение территорий отключено\!
war.expired=Война с {0} истекла\!
you.cant.start.war.online.members.difference=Вы не можете начать войну. Один из кланов имеет больше участников в сети, чем у другого.
land.command=территория
break.command=ломать
interact.command=взаимодействовать
place_block.command=разместить_блок
damage.command=урон
interact_entity.command=взаимодействование_с_сущностью
container.command=хранилище
@@ -0,0 +1,11 @@
description.command=опис
create.command=kреирај
acf-core.parameter.description=опис
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
+12 -1
View File
@@ -32,9 +32,20 @@ verify.command=verifiera
ban.command=ban
unban.command=avbanna
reload.command=omladda
acf-core.parameter.fee=avgift
acf-core.parameter.description=beskrivning
alliances=allianser
coords=kordinater
rivalries=fiender
roster=deltagarlista
stats=status
vitals=livsstatus
profile=profil
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
+8 -8
View File
@@ -20,6 +20,7 @@ ally.command=müttefik
add.command=ekle
remove.command=Kaldır
allow.command=izin ver
block.command=Blok
auto.command=Otomatik
check.command=kontrol
rival.command=rakip
@@ -61,6 +62,9 @@ help.command=yardım
acf-core.parameter.rank=Rütbe
acf-core.parameter.leader=Lider
acf-core.parameter.message=Mesaj
acf-core.parameter.name=isim
acf-core.parameter.fee=para
acf-core.parameter.description=Açıklama
acf-core.parameter.player=oyuncu
acf-core.parameter.clan=klan
acf-core.parameter.order=sıra
@@ -238,7 +242,6 @@ the.player.does.not.have.the.permissions.to.lead.a.clan=Oyuncu bir klana liderli
you.cannot.promote.yourself=Kendinizi tanımlayamazsınız
the.player.is.already.a.leader=Oyuncu zaten lider
configuration.reloaded=Konfigürasyon yenilendi.
last.leader.cannot.resign.you.must.appoint.another.leader.or.disband.the.clan=Son lider istifa edemez.Başka bir lider atamalı veya klanı dağıtmalısın
0.has.resigned={0} Klandan ayrıldı.
you.cannot.trust.yourself=Kendine güvenemezsin
leaders.are.already.trusted=Liderlere zaten güveniliyor
@@ -285,7 +288,7 @@ materials=Materyal
armor.h=K
armor.c=G
armor.l=P
armor.B=B
armor.B=Y
diamond=Elmas
gold=Altın
wood=Tahta
@@ -343,12 +346,7 @@ resign.confirmation=Ayrılmak istediğinden emin misin? {0}
resign.success=Klanından başarıyla ayrıldın.
you.cannot.demote.the.last.leader=Son liderin yetkisni düşüremezsin
player.successfully.demoted=Oyuncunun rütbesi başarıyla indirildi
bb.ago= Önce
bb.moments=An
bb.seconds= Saniye
bb.minutes= Dakika
bb.one.minute=1 Dakika
bb.hours= Saat
bb.one.hour=1 Saat
bb.days= Gün
bb.one.day=1 Gün
@@ -609,4 +607,6 @@ insert.rank.name=&bRütbe adını ekleyin\:
click.to.help.translating=&bÇeviriye yardımcı olmak için bu bağlantıyı tıklayın\:\n&r{0}
your.clan.must.have.members.to.verify=&cKlanınızın doğrulanması için en az {0} üyesi olmalı\!
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
+150 -1
View File
@@ -1,6 +1,19 @@
description.command=описання
create.command=створити
delete.command=Видалити
rank.command=Ранг
setdisplayname.command=установить отображаемое имя
setdefault.command=установить по умолчанию
removedefault.command=дистанційне сховище
permissions.command=дозволи
list.command=список
list.order.asc=зростання
list.order.desc=Опис
list.type.name=ім'я
list.type.kdr=kdr
list.type.size=розмір
list.type.founded=заснований
list.type.active=активний
profile.command=профіль
roster.command=\nперелік
lookup.command=пошук
@@ -11,19 +24,37 @@ vitals.command=Потужності
coords.command=координати
stats.command=статистика
ally.command=союзник
add.command=додавати
remove.command=вилучити
allow.command=дозволити
block.command=блокувати
auto.command=авто
check.command=перевірити
assign.command=призначити
rival.command=суперник
bb.command=оголошення
clear.command=очистити
modtag.command=Опис
toggle.command=перемкнути
tag.command=тег
deposit.command=внесок
all.command=усе
withdraw.command=зняти
invite.command=запрошення
kick.command=виключення
bank.command=банк
status.command=статус
fee.command=комісія
set.command=set
purge.command=Очистити
trust.command=довіра
untrust.command=не довіряти
admin.command=Адмін
mod.command=мод
promote.command=підвищити
demote.command=Понизити
clanff.command=кланфф
ff.command=союзні сутички
resign.command=залишити
disband.command=розпустити
verify.command=перевірити
@@ -34,14 +65,132 @@ globalff.command=глобальнийff
kills.command=вбивства
mostkilled.command=найбільша кількість убитих
war.command=війна
start.command=Розпочати
end.command=кінець
home.command=дім
regroup.command=Перегрупуватися
me.command=я
tp.command=Телепорт
setrank.command=\nвстановити ранг
place.command=місце
resetkdr.command=РесетКДР
everyone.command=Усi
setbanner.command=Встановити банер клану
help.command=допомогу
acf-core.parameter.member=Учасник
acf-core.parameter.rank=Ранг
acf-core.parameter.leader=Лідер
acf-core.parameter.displayname=назва екрана
acf-core.parameter.permission=Права доступу
acf-core.parameter.message=повідомлення
acf-core.parameter.tag=теги
acf-core.parameter.name=назва
acf-core.parameter.fee=комісія
acf-core.parameter.description=опис
acf-core.parameter.player=гравець
acf-core.parameter.clan=клан
acf-core.parameter.type=тип
acf-core.parameter.order=порядок
acf-core.parameter.help=сторінка або ключові слова
command.description.land.allow.interact_entity=Дозволити членам клану взаємодіяти з сутністями на вашій території
command.description.land.allow.container=Дозволити членам клану відчиняти сховища на вашій території
command.description.land.allow.place=Дозволити членам клану розміщувати блоки на вашій території
command.description.land.allow.break=Дозволити членам клану ламати блоки на вашій території
command.description.land.allow.damage=Дозволити членам клану наносити і отримувати пошкодження на вашій терреторії
command.description.land.block.all=Заборонити усі дії на вашій території
command.description.land.block.interact_entity=Заборонити членам клану взаємодіяти з сутністями на вашій території
command.description.land.block.interact=Заборонити членам клану взаємодіяти на вашій территорії
command.description.land.block.container=Заборонити членам клану відчиняти сховища на вашій территорії
command.description.land.block.place=Заборонити членам клану розміщувати блоки на вашій території
command.description.land.block.break=Заборонити членам клану ламати блоки на вашій території
command.description.stats=Показати статистику учасників вашого клану
command.description.rivalries=Показати усіх супротивників клану
command.description.mostkilled=Показати спільну статистику вбивств на усьому сервері
command.description.kills=Показати кількість вбивств вашого або другого гравця
command.description.lookup=Переглянути інформацію про себе
command.description.lookup.other=Переглянути інформацію гравця
command.description.leaderboard=Показати таблицю лідерів
command.description.roster.other=Показати список учасників іншого клану
command.description.roster=Показати список учасників вашого клану
command.description.profile.other=Показати профіль іншого клану
command.description.profile=Показати профіль вашого клану
command.description.vitals=Показати боєздатність вашого та союзних кланів
command.description.list=Список усіх кланів
command.description.chat=Розмовляти в клановому чаті
command.description.create=Створити клан
command.description.bb.display=Показати дошку оголошень вашого клану
command.description.bb.clear=Очистити дошку оголошень вашого клану
command.description.bb.post=Опублікувати повідомлення для дошки оголошень вашого клану
command.description.place=Розмістити гравця в клані
command.description.reload=Перезапустити плагін та його конфігурацію
command.description.trust=Довіряти учаснику
command.description.untrust=Не довіряти учаснику
command.description.resign=Вийти з вашого клану
command.description.help=Показати довідку або найти в довідці
command.description.ally.add=Додати союзника
command.description.clan=Відчинити GUI
command.description.disband=Розпустити ваш клан
command.description.mod.disband=Розпустити клан
command.description.mod.kick=Вигнати гравця з клану
command.description.modtag=Змінити тег вашого клану
command.description.purge=Очистити деякі данні про гравця
command.description.setbanner=Встановити стяг клану
command.description.verify=Підтвердити ваш клан
command.description.mod.verify=Підтвердити клан
command.description.invite=Запросити гравця в ваш клан
command.description.fee.check=Дізнатися значення комісії в вашому клану, якщо вона включена
command.description.fee.set=Встановити комісію клана
command.description.bank.status=Перевірити баланс банка вашого клану
command.description.bank.withdraw.all=Вивести усі засоби з банка вашого клану
command.description.bank.withdraw.amount=Вивести вказану суму з банківського рахунку вашого клану
command.description.war.start=Почати війну
command.description.war.end=Закінчити війну
command.description.resetkdr.everyone=Скинути KDR всіх гравців
command.description.resetkdr.player=Скинути KDR гравця
command.description.resetkdr=Скинути ваше KDR
command.description.admin.demote=Знизити лідера з будь-якого клану
command.description.demote=Знизити лідера
command.description.admin.promote=Підвищити будь-якого учасника з будь-якого клану
command.description.promote=Підвищити учасника до лідера
command.description.admin.permanent=Перемикає постійний статус гравця будь-якого клану
command.description.toggle.bb=Чи варто показувати дошку оголошень при вході на сервер
command.description.toggle.tag=Чи варто показувати близько вашого імені тег клану
command.description.toggle.deposit=Чи можна заносити засоби до банківського рахунку вашого клану
command.description.alliances=Показати список союзників клану
command.description.coords=Показати координати учасників вашого клану
command.description.rank.assign=Призначити ранг учаснику
command.description.rank.unassign=Відібрати ранг у учасника
command.description.rank.create=Створити ранг
command.description.rank.delete=Видалити ранг
command.description.rank.list=Показати список рангів вашого клану
command.description.rank.setdisplayname=Встановити відображене ім’я клану
alliances=союзники
coords=координати
rivalries=суперники
leader=Лідер
roster=\nперелік
stats=статистика
vitals=Потужності
profile=профіль
mostkilled=Найбільша кількість вбивств
killcount=Кількість вбивств
attacker=Атакуючий
victim=Жертва
kill.death.ratio=Співвідношення вбивств/смертей
nokillsfound=Немає вбивств
# suppress inspection "TrailingSpacesInProperty"
start=Розпочати
end=кінець
add=додавати
remove=вилучити
allow=дозволити
block=блокувати
auto=авто
war=війна
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
@@ -0,0 +1,51 @@
description.command=mô tả
create.command=Tạo
delete.command=xóa
rank.command=hạng
setdisplayname.command=tên hiển thị
permissions.command=quyền
list.command=danh sách
list.order.asc=tăn dần
list.order.desc=giảm
list.type.name=tên
list.type.kdr=kdr
list.type.size=kích thước
list.type.founded=đã tìm thấy
list.type.active=đang kích hoạt
profile.command=hồ sơ
roster.command=đội hình
lookup.command=tra cứu
leaderboard.command=bảng xếp hạng
alliances.command=đồng minh
coords.command=tọa độ
stats.command=thông số
ally.command=đồng minh
add.command=thêm
remove.command=xóa bỏ
allow.command=cho phép
block.command=khóa
auto.command=tự động
check.command=kiểm tra
assign.command=phân công
unassign.command=hủy phân công
acf-core.parameter.rank=hạng
acf-core.parameter.name=tên
acf-core.parameter.description=mô tả
alliances=đồng minh
coords=tọa độ
roster=đội hình
stats=thông số
profile=hồ sơ
# suppress inspection "TrailingSpacesInProperty"
add=thêm
remove=xóa bỏ
allow=cho phép
block=khóa
auto=tự động
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
+16 -6
View File
@@ -11,6 +11,11 @@ vitals.command=生命
coords.command=坐标
stats.command=统计
ally.command=联盟
add.command=添加
remove.command=移除
allow.command=允许
block.command=阻止
auto.command=自动
rival.command=敌对
bb.command=公告板
modtag.command=更改标签
@@ -36,11 +41,16 @@ globalff.command=全局友军伤害
kills.command=击杀
mostkilled.command=死亡排名
war.command=战争
start.command=开始
end.command=停止
home.command=基地
setrank.command=设置称号
place.command=移动
resetkdr.command=重置死亡比值
help.command=用户指南
acf-core.parameter.leader=老大
acf-core.parameter.fee=费用
acf-core.parameter.description=描述
home-menu=/{0} home{1} - 传送至帮派基地
home-set-menu=/{0} home set{1} - 设置帮派基地
home-clear-menu=/{0} home clear{1} - 清除帮派基地
@@ -208,7 +218,6 @@ the.player.does.not.have.the.permissions.to.lead.a.clan=玩家没有做老大的
you.cannot.promote.yourself=你不能提升你自己
the.player.is.already.a.leader=玩家已经是老大了
configuration.reloaded=配置已重载 by 754503921
last.leader.cannot.resign.you.must.appoint.another.leader.or.disband.the.clan=最后一位老大不能离职,你必须指定另一个老大或者解散此帮派
0.has.resigned={0} 已经离职
you.cannot.trust.yourself=你不能信任你自己
leaders.are.already.trusted=老大已经被信任
@@ -294,11 +303,7 @@ you.have.reseted.0.kdr=您已经重置 {0} 的 KD 比
you.have.reseted.kdr.of.all.players=您已重置所有玩家的 KD 比
resign.yes=是
resign.no=否
bb.ago= 前
bb.seconds= 秒
bb.minutes= 分
bb.one.minute=一分钟
bb.hours= 小时
bb.one.hour=一小时
bb.days= 天
bb.one.day=一天
@@ -310,10 +315,15 @@ gui.main.reset.kdr.title=&f重置 KD 比
gui.warning.title=警告
gui.warning.no.permission.title=&f没有权限
gui.warning.no.permission.plugin.lore=&7你没有这样做的权限!
gui.allies.title=联盟
gui.rivals.title=敌对
# suppress inspection "TrailingSpacesInProperty"
gui.clandetails.clan.lore.allies.separator=&b、
# suppress inspection "TrailingSpacesInProperty"
gui.clandetails.clan.lore.rivals.separator=&b、
# suppress inspection "TrailingSpacesInProperty"
gui.playerdetails.player.lore.past.clans.separator=&b、
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
+19 -1
View File
@@ -56,11 +56,29 @@ unban.command=解除封鎖
reload.command=重新載入
kills.command=殺敵數
help.command=幫助
acf-core.parameter.rank=階級
acf-core.parameter.name=類別名稱
acf-core.parameter.fee=費用
acf-core.parameter.description=說明
command.description.deny=拒絕請求
command.description.accept=接受請求
alliances=聯盟
coords=座標
rivalries=對手
roster=成員列表
stats=統計
vitals=命脈
profile=個人資料
# suppress inspection "TrailingSpacesInProperty"
add=加入
remove=移除
allow=允許
block=黑名單
auto=自動
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
# suppress inspection "TrailingSpacesInProperty"
+23 -2
View File
@@ -1,8 +1,14 @@
name: SimpleClans
main: net.sacredlabyrinth.phaed.simpleclans.SimpleClans
version: '${project.version}'
softdepend: [ VanishNoPacket, Permissions, PermissionsBukkit, Vault, PermissionsEx, mChat, mChatSuite, PlaceholderAPI, LuckPerms, WorldGuard ]
loadbefore: [ GriefPrevention ]
softdepend:
- Vault
- PlaceholderAPI
- LuckPerms
- WorldGuard
loadbefore:
- GriefPrevention
- PlotSquared
api-version: '1.13'
authors:
- Phaed
@@ -17,10 +23,20 @@ permissions:
description: Can promote players to clan leaders
simpleclans.admin.demote:
description: Can demote clan leaders to normal players
simpleclans.admin.permanent:
description: Can toggle clan permanent status
simpleclans.admin.all-seeing-eye:
description: Can see all clan chats
simpleclans.admin.resetkdr:
description: Can reset player kdr (of all or just one)
simpleclans.admin.bank.status:
description: Can check the balance of a clan
simpleclans.admin.bank.take:
description: Can take money from a clan
simpleclans.admin.bank.give:
description: Can give money to a clan
simpleclans.admin.bank.set:
description: Can set the balance of a clan
simpleclans.mod.verify:
description: Can verify simpleclans
simpleclans.mod.ban:
@@ -188,6 +204,11 @@ permissions:
simpleclans.admin.resetkdr: true
simpleclans.admin.demote: true
simpleclans.admin.promote: true
simpleclans.admin.permanent: true
simpleclans.admin.bank.status: true
simpleclans.admin.bank.take: true
simpleclans.admin.bank.give: true
simpleclans.admin.bank.set: true
simpleclans.mod.*:
description: Permissions for moderators
default: op
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Loaded 100 of 123 files, more files were not shown because too many files have changed in this diff. Show more