Compare commits

...
84 Commits
Author SHA1 Message Date
RoinujNosde dc7d414393 Fixed globalff usage
Fixed Russian translation for the ff commands ("allow", "block" and
"auto")
Closes #594
2020-05-13 20:38:26 -03:00
RoinujNosde f5c0920cc9 Fixed rank command and added new languages 2020-05-13 20:14:49 -03:00
RoinujNosde fe866d959a Now saving periodically to db
Added update checker
Removed usage of SimpleClans#getLog()
2020-05-08 18:31:06 -03:00
LucasandRoinujNosde 6083766a12 Added PlaceholderAPI support (#587)
Added PlaceholderAPI support
Refactored PlaceholderHook

Co-authored-by: RoinujNosde <edsonpassosjr@outlook.com>
2020-05-01 14:54:28 -03:00
14b663801d Added spanish translation
Removed the usage of Helper.capitalize()
Fixed some messages in English
Converted spanish file to properties

Co-authored-by: RoinujNosde <edsonpassosjr@outlook.com>
Co-authored-by: CrazyDev <hugosilvaf2@gmail.com>
2020-04-27 22:45:22 -03:00
RoinujNosde b331e2c236 Merge branch 'master' of https://github.com/marcelo-mason/SimpleClans.git 2020-04-27 20:18:18 -03:00
RoinujNosde b3d5be1ec0 Updated language system Closes #573
The language file format is now .properties
If a message is not present in the messages file in the plugin's folder,
the plugin will search inside the jar
You can switch languages in the config
Fixed the vote system
Added message "resign request cancelled" Closes #580
Chat command is on the Menu command
2020-04-27 20:17:33 -03:00
Edson Passos b6d9c3a605 Removed disclaimer 2020-04-27 11:32:22 -03:00
Edson Passos e2c7b109d9 Added translation badge 2020-04-27 07:32:52 -03:00
CrazyDev 6bb370facd Fix command /clan home regroup (#584)
Fix loc null in /clan home regroup
2020-04-23 11:05:42 -03:00
RoinujNosde b3c8131c96 Fixed confirmation for promote Closes #581
Refactored the code to process votes
2020-04-22 21:32:02 -03:00
RoinujNosde d4c9537296 Fixed KDR not recording
Changed the kdr-exempt permission to simpleclans.other.kdr-exempt Closes
#579
2020-04-21 19:32:56 -03:00
RoinujNosde f89d446ac0 Fixed confirmation for demote/promote still asking after voting
Closes #482
2020-04-21 19:29:19 -03:00
RoinujNosde 009564f732 Fixed leaders online to demote
Closes #575
2020-04-18 19:15:55 -03:00
RoinujNosde a6e10da510 Checking if connection is null or closed
Closes #572
2020-04-18 19:11:34 -03:00
RoinujNosde a9fe589794 Forgot to update table 2020-04-16 07:02:51 -03:00
RoinujNosde 2d0b524557 Removed forRemoval from @Deprecated 2020-04-15 21:43:19 -03:00
RoinujNosde ba66f16f54 Fixed last seen and menu command messages
Fixed last seen not updating Closes #566
Fixed weird space in Menu command Closes #483
Fixed Menu command messages getting cropped Closes #392
Fixed Mojang URL
Removed deprecated code
2020-04-15 21:32:57 -03:00
RoinujNosde 4d6a489b43 SQLite queries use threads if enabled
Fixes #568
2020-04-13 20:22:45 -03:00
xtomyserrax 92da40ca76 Small fixes on commands
Fixes a small issue when ally wasn't verified, it was sending a message but not returning the code.
Fixes NPE on Ban command.
ChatEvent is ignored if cancelled.
Menu command will show /clan fee only if member fee is enabled
Added disabled message to Fee command
2020-04-10 13:35:44 -03:00
Edson Passos f1d0741ac8 Corrected version number 2020-04-10 11:28:24 -03:00
RoinujNosde 03b2f73e74 Rank name is lowercase 2020-04-10 10:35:54 -03:00
Edson Passos 2a65295e8b Finalized ranks with permissions
Closes #544

Fixed config resetting. Closes #564
2020-04-10 01:37:07 -03:00
Edson Passos a7cb9ed171 Update pom.xml 2020-04-03 19:13:10 -03:00
RoinujNosde ac0a387198 Removed kdr-exempt from anyone.*
Closes #561
2020-04-02 07:35:59 -03:00
Edson Passos e3cd7d37a8 Merge pull request #559 from xtomyserrax/patch-1
Added check for null home on regroup
2020-03-31 07:58:22 -03:00
Edson Passos 63595258f4 Removed wrong message 2020-03-31 07:48:21 -03:00
xtomyserrax 0c866044df /clan home command fixes
- Fixes this error when there is no home set for the clan (I just copied and pasted the loc == null statement): https://pastebin.com/jiXneTvK

Also can you please fix this placeholder? I dont want to touch anything there as maybe it breaks some stuff or it meant to be something: https://imgur.com/a/KWPDTk7
It says: "Clan home-base set to: {0}" + Location. I guess the 0 meant to be the location? Maybe adding a replace would fix it, unless the idea was to make something else.

Thanks for the awesome plugin and sorry for making another merge for the same, I just noticed it! 

Also another idea, what if instead of saying Insufficient Permission when you write a command wrongly it sends a usage message? For example, if I type /clan home tp, I get a no permission message, if I write /clan home tp test, then I go to the home of test clan. 

Thanks!
2020-03-30 22:45:34 -03:00
Edson Passos 2217efa8a7 Merge pull request #558 from xtomyserrax/patch-1
Fix bypassing /clan home regroup
2020-03-30 21:22:49 -03:00
xtomyserrax df97e43c4d Fix bypassing /clan home regroup
Clan members can use /clan home regroup without being leaders and also without having the permission simpleclans.leader.home-regroup

Just added a return statement to both conditionals.
2020-03-30 21:05:03 -03:00
RoinujNosde 169b44e793 Added permission for using colors/formats on setrank
Closes #548
2020-03-26 20:19:45 -03:00
RoinujNosde f2303c5336 Allow server owners to edit the time to collect member fee and upkeep
Closes #543
2020-03-25 20:13:35 -03:00
RoinujNosde af8cd133c2 Added permission to prevent the player's kdr from being affected
Closes #549
2020-03-21 23:48:52 -03:00
RoinujNosde fa66424402 Prevents code &k to transform the spaces between columns on clan roster
Closes #554
2020-03-21 23:31:12 -03:00
RoinujNosde 2727203bed Fixed spy chat and banned list
- The remaining chat codes (k, m, n, o, r) are now stripped from the Spy
Chat messages. Closes #550
- The banned players list is now saved to the config. Closes #546
2020-02-07 19:48:26 -03:00
RoinujNosde eedc743d5b Created a full PT-BR language file 2019-09-20 22:07:49 -03:00
RoinujNosde 4e12e4d6f5 KDR grinding prevention
Added two ways to prevent players from grinding KDR. Closes #276
When a player joins a clan, they automatically receive the
"group.tagname permission". Closes #541
Removed the usage of SimpleClans#hasUUID()
2019-09-20 20:40:11 -03:00
RoinujNosde 32855c2611 Fixed database not being loaded #542 2019-09-10 21:34:08 -03:00
RoboMWM d7118aea82 Updated Bukkit dependency to 1.13
Now the plugin supports 1.13 and 1.14
2019-09-08 09:41:16 -03:00
RoinujNosde f472432eb6 Rejoin, clan list and member fee improved
- Cooldown on rejoining clans added. Closes #280
- You can now sort the clan list by name, size, etc. Closes #530
- Added a permission to bypass the member fee. Closes #540
2019-09-06 20:15:59 -03:00
RoinujNosde e07c8a9343 Updating download link 2019-08-26 22:02:05 -03:00
RoinujNosde b84e46d156 Clans can now have a description
It can be changed using the /clan description command
Its max and min length can be set in the config

Closes #537
2019-08-26 21:55:02 -03:00
RoinujNosde daba767a5a Charge upkeep if member fee is enabled
Closes #539
2019-08-26 19:27:25 -03:00
RoinujNosde e59a760776 Upkeep system implemented
Closes #524
2019-08-25 17:14:39 -03:00
RoinujNosde 6aa30a5d2d Closes #535 2019-08-14 19:42:29 -03:00
RoinujNosde 9fe944fe5b Fixing percentage formula + typos 2019-08-13 22:45:44 -03:00
RoinujNosde 178382e685 Purge command, percentage to demote & bb on purge
Command to purge a player was added, it can be used by the console or by an admin
Menu command edited to show the new command and the demote command for admins
When a player is purged, a message is added to the clan bb
The plugin now considers the percentage (set in the config) of online leaders to demote another player
Closes #528
Closes #526
Closes #517
2019-08-13 22:34:18 -03:00
RoinujNosde 2fcc765447 Players now can pay for setting the member fee
Closes #534
2019-08-13 20:30:10 -03:00
RoinujNosde 6d5dc79568 Fee on profile and feedback on wrong value
Fee status is now displayed on /clan profile
A message is sent to the player when he inserts an invalid value
Closes #529
2019-08-13 20:11:48 -03:00
RoinujNosde 29c8955f9d Fixed MySQL syntax error
Closes #525
2019-08-10 19:36:43 -03:00
RoinujNosde 62f69e0a1e Fixed messages not being sent on resign 2019-08-07 20:42:50 -03:00
RoinujNosde 3518024428 Improved resign confirmation
- the input is not case sensitive
- anything other than "yes", means "no"
- calling spigot() to send the hover message on bb to support 1.13
Closes #493
2019-08-07 20:25:17 -03:00
RoinujNosde ad7f6fd402 Member fee system implemented
- If enabled by the server and the clan, a fee set by the clan leader will be collected from non-leaders at 1am everyday; a player that doesn't have enough to pay it, will be kicked
Closes #254
2019-08-06 19:50:38 -03:00
RoinujNosde 732932763d Added messages related to the fee 2019-08-06 19:32:52 -03:00
RoinujNosde 6440e937bc Added login-size config node 2019-08-02 21:38:00 -03:00
RoinujNosde 72ffaaa7fe Fixed hardcoded messages 2019-08-02 21:17:27 -03:00
RoinujNosde 9b69020677 Merge branch 'better-bb' of https://github.com/MLG-Fortress/SimpleClans into MLG-Fortress-better-bb 2019-08-02 21:15:06 -03:00
RoinujNosde 50d25bb881 Merge origin/master 2019-08-01 20:10:53 -03:00
RoinujNosde 5fc0477e9f Admins can demote clan leaders
Permission added: "simpleclans.admin.demote"
3 new messages added as well
Closes #517
2019-08-01 19:58:01 -03:00
RoinujNosde 10482ecf23 Closes #519 2019-08-01 19:30:49 -03:00
Edson Passos 00158a3e3c Download link changed 2019-08-01 19:07:56 -03:00
RoinujNosde 96d65c2d8f Resign command now asks for confirmation
Closes #493
2019-08-01 18:56:20 -03:00
RoinujNosde 4036b13bad Added some missing messages 2019-08-01 18:50:15 -03:00
RoinujNosde 2abe64284b Instead of returning null, getLang will return a useful message 2019-08-01 18:49:10 -03:00
RoinujNosde 1b62ecf296 Verifying you want to leave a clan
Closes #493
2019-07-26 20:06:54 -03:00
RoinujNosde c59afd27b3 Updating version 2019-07-26 19:18:56 -03:00
RoinujNosde fecc50c083 Fixed clan and ally chats using the same format
Also removed unnecessary usage of replaceAll
Closes #516
2019-07-26 19:12:35 -03:00
Edson Passos 230a0e9ba5 Merge pull request #515 from marcelo-mason/patch-3
Fixing ChatEvent + Denying same IP kills
2019-07-21 10:23:08 -03:00
RoinujNosde 9f96f8c19f Merge branch 'ArtNRG-master' into patch-3
Deny calculating kills with the same IP
2019-07-21 10:15:31 -03:00
RoinujNosde 1b16fd3b2b Merge branch 'master' of https://github.com/ArtNRG/SimpleClans into ArtNRG-master
Testing
2019-07-21 10:10:26 -03:00
RoinujNosde 4e5461b533 ChatEvent is now triggered sync
Closes #514
2019-07-21 10:07:42 -03:00
ArtNRG 70f4a4a109 If some player is killed by another one, check both attacker and victim IP addresses.
If they are the same don't calculate that kill and send the message to the server console.
2018-05-04 11:33:15 +05:00
ArtNRG ae3ebee649 Add kill-weights.deny-same-ip-kills:false boolean to config.yml 2018-05-04 11:32:46 +05:00
ArtNRG 235a69cf15 Update SettingsManager to get kill-weights.deny-same-ip-kills boolean from config.yml 2018-05-04 11:31:31 +05:00
RoboMWM 2c18498f08 Have travis use Java 8
Since Minecraft requires Java 8 now anyways.
2018-04-12 15:31:36 -07:00
RoboMWM 2ac4085915 typod parenthesis 2018-03-26 09:06:10 -07:00
RoboMWM 9b5e727fed forgot that formatTime uses seconds, not milliseconds 2018-03-12 13:12:04 -07:00
RoboMWM dcf1659e6b and this one too 2018-03-12 13:04:25 -07:00
RoboMWM d64190cc8f typo 2018-03-12 13:03:19 -07:00
RoboMWM dc1c417222 refactor formatTime to Dates class 2018-03-12 12:47:50 -07:00
RoboMWM 3872790c25 rename config key bb.join-size to bb.login-size
This is to match the other key `show-on-login`
2018-03-12 12:42:05 -07:00
RoboMWM da1894e55d fix substring mistake 2018-03-12 12:38:53 -07:00
RoboMWM 63763e9afd Allow size of bb displayed on join to be configured
bb.join-size, defaults to value in bb.size
2018-03-12 12:25:49 -07:00
RoboMWM 756a30303e timestamp bb messages 2018-03-12 12:13:53 -07:00
100 changed files with 11051 additions and 5831 deletions

No files matched your search

+5 -1
View File
@@ -1,3 +1,7 @@
/target/
/.idea/
SimpleClans.iml
SimpleClans.iml
/bin/
/.classpath
/.project
/dependency-reduced-pom.xml
+1 -1
View File
@@ -5,7 +5,7 @@ language: java
script: mvn install
jdk: [openjdk7]
jdk: [openjdk8]
# if one build failed, exit testing
matrix:
+9 -15
View File
@@ -1,15 +1,9 @@
SimpleClans
==========
Full featured clan system for PVP Minecraft Servers
[![Build Status](https://travis-ci.org/marcelo-mason/SimpleClans.svg)](https://travis-ci.org/marcelo-mason/SimpleClans)
[![Download](https://img.shields.io/badge/snapshot-download-blue.svg)](http://104.236.246.108:8080/job/SimpleClans/)
[![Issues](https://img.shields.io/github/issues/marcelo-mason/SimpleClans.svg)](https://github.com/marcelo-mason/SimpleClans/issues)
[![ghit.me](https://ghit.me/badge.svg?repo=marcelo-mason/SimpleClans)](https://ghit.me/repo/marcelo-mason/SimpleClans)
## Disclaimer:
Active development for this plugin has stopped. It is in maintenance mode and will continue to be kept up to date as-is with any new Minecraft version indefinitely.
Pull-requests for bug fixes or new features are welcomed and will be merged in if they do not break existing functionalities.
SimpleClans
==========
Full featured clan system for PVP Minecraft Servers
[![Build Status](https://travis-ci.org/marcelo-mason/SimpleClans.svg)](https://travis-ci.org/marcelo-mason/SimpleClans)
[![Download](https://img.shields.io/badge/snapshot-download-blue.svg)](https://github.com/marcelo-mason/SimpleClans/releases)
[![Issues](https://img.shields.io/github/issues/marcelo-mason/SimpleClans.svg)](https://github.com/marcelo-mason/SimpleClans/issues)
[![Crowdin](https://badges.crowdin.net/simpleclans/localized.svg)](https://crowdin.com/project/simpleclans)
+28 -27
View File
@@ -1,28 +1,29 @@
<?xml version="1.0" encoding="UTF-8"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7" inherit-compiler-output="false">
<output url="file://$MODULE_DIR$/target/classes" />
<output-test url="file://$MODULE_DIR$/target/test-classes" />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
<excludeFolder url="file://$MODULE_DIR$/target" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.bukkit:bukkit:1.9-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.googlecode.json-simple:json-simple:1.1.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: junit:junit:4.10" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.hamcrest:hamcrest-core:1.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.google.guava:guava:17.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.google.code.gson:gson:2.2.4" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.avaje:ebean:2.8.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: javax.persistence:persistence-api:1.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.yaml:snakeyaml:1.15" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.milkbowl.vault:VaultAPI:1.4" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.nijikokun.bukkit:Permissions:2.7.4" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.sacredlabyrinth.Phaed:PreciousStones:9.7.0" level="project" />
<orderEntry type="library" name="Maven: org.getspout:spoutplugin:dev-SNAPSHOT" level="project" />
</component>
<?xml version="1.0" encoding="UTF-8"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7" inherit-compiler-output="false">
<output url="file://$MODULE_DIR$/target/classes" />
<output-test url="file://$MODULE_DIR$/target/test-classes" />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
<excludeFolder url="file://$MODULE_DIR$/target" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.bukkit:bukkit:1.9-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.googlecode.json-simple:json-simple:1.1.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: junit:junit:4.10" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.hamcrest:hamcrest-core:1.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.google.guava:guava:17.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.google.code.gson:gson:2.2.4" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.avaje:ebean:2.8.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: javax.persistence:persistence-api:1.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.yaml:snakeyaml:1.15" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.milkbowl.vault:VaultAPI:1.4" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.nijikokun.bukkit:Permissions:2.7.4" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.sacredlabyrinth.Phaed:PreciousStones:9.7.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: me.clip:placeholderapi:2.10.5" level="project" />
<orderEntry type="library" name="Maven: org.getspout:spoutplugin:dev-SNAPSHOT" level="project" />
</component>
</module>
+165 -124
View File
@@ -1,124 +1,165 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>net.sacredlabyrinth.phaed.simpleclans</groupId>
<artifactId>SimpleClans</artifactId>
<version>2.7.12</version>
<name>SimpleClans</name>
<url>http://dev.bukkit.org/server-mods/simpleclans/</url>
<build>
<finalName>${project.name}</finalName>
<!-- Resources -->
<resources>
<resource>
<targetPath>.</targetPath>
<filtering>true</filtering>
<directory>${basedir}/src/main/resources</directory>
<includes>
<include>plugin.yml</include>
<include>config.yml</include>
<include>language.yml</include>
<include>language-br.yml</include>
<include>language-zh.yml</include>
</includes>
</resource>
</resources>
<!-- Plugins -->
<plugins>
<!-- Compilation plugin -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
<showDeprecation>true</showDeprecation>
<showWarnings>true</showWarnings>
<fork>true</fork>
</configuration>
</plugin>
<!-- JAR creation plugin -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
</plugin>
<!-- Release plugin -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>2.3.2</version>
</plugin>
</plugins>
</build>
<!-- Dependencies -->
<dependencies>
<dependency>
<groupId>org.bukkit</groupId>
<artifactId>bukkit</artifactId>
<version>1.12-R0.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>net.milkbowl.vault</groupId>
<artifactId>VaultAPI</artifactId>
<version>1.6</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.googlecode.json-simple</groupId>
<artifactId>json-simple</artifactId>
<version>1.1.1</version>
</dependency>
</dependencies>
<!-- Repositories -->
<repositories>
<repository>
<id>vault-repo</id>
<url>http://nexus.hc.to/content/repositories/pub_releases</url>
</repository>
<repository>
<id>spigot-repo</id>
<url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url>
</repository>
</repositories>
<!-- GitHub/Jenkins -->
<ciManagement>
<system>jenkins</system>
<url>http://104.236.246.108:8080</url>
</ciManagement>
<scm>
<connection>scm:git:git:@github.com:marcelo-mason/SimpleClans.git</connection>
<developerConnection>scm:git:git:@github.com:marcelo-mason/SimpleClans.git</developerConnection>
<url>http://github.com/marcelo-mason/SimpleClans.git/tree/master/</url>
<tag>SimpleClans</tag>
</scm>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<!-- Upstream Distribution -->
<distributionManagement>
<repository>
<id>SacredCoding</id>
<name>SacredCoding-releases</name>
<url>http://104.236.246.108:8081/artifactory/plugins-release-local</url>
</repository>
<snapshotRepository>
<id>SacredCoding</id>
<name>SacredCoding-snapshots</name>
<url>http://104.236.246.108:8081/artifactory/plugins-release-local</url>
</snapshotRepository>
</distributionManagement>
</project>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>net.sacredlabyrinth.phaed.simpleclans</groupId>
<artifactId>SimpleClans</artifactId>
<version>2.10.3</version>
<name>SimpleClans</name>
<url>http://dev.bukkit.org/server-mods/simpleclans/</url>
<build>
<finalName>${project.name}</finalName>
<!-- Resources -->
<resources>
<resource>
<targetPath>.</targetPath>
<filtering>true</filtering>
<directory>${basedir}/src/main/resources</directory>
<includes>
<include>plugin.yml</include>
<include>config.yml</include>
<include>*.properties</include>
</includes>
</resource>
</resources>
<!-- Plugins -->
<plugins>
<!-- Compilation plugin -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<showDeprecation>true</showDeprecation>
<showWarnings>true</showWarnings>
<fork>true</fork>
</configuration>
</plugin>
<!-- JAR creation plugin -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
</plugin>
<!-- Release plugin -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>2.3.2</version>
</plugin>
<!-- Shade plugin -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.1.0</version>
<configuration>
<relocations>
<relocation>
<pattern>org.bstats.bukkit</pattern>
<shadedPattern>net.sacredlabyrinth.phaed.simpleclans.metrics</shadedPattern>
</relocation>
</relocations>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<!-- Dependencies -->
<dependencies>
<dependency>
<groupId>com.destroystokyo.paper</groupId>
<artifactId>paper-api</artifactId>
<version>1.13.2-R0.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>net.milkbowl.vault</groupId>
<artifactId>VaultAPI</artifactId>
<version>1.7</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.googlecode.json-simple</groupId>
<artifactId>json-simple</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>org.bstats</groupId>
<artifactId>bstats-bukkit</artifactId>
<version>1.7</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>me.clip</groupId>
<artifactId>placeholderapi</artifactId>
<version>2.10.5</version>
<scope>provided</scope>
</dependency>
</dependencies>
<!-- Repositories -->
<repositories>
<repository>
<id>CodeMC</id>
<url>https://repo.codemc.org/repository/maven-public</url>
</repository>
<repository>
<id>vault-repo</id>
<url>http://nexus.hc.to/content/repositories/pub_releases</url>
</repository>
<repository>
<id>paper-repo</id>
<url>https://repo.destroystokyo.com/repository/maven-public/</url>
</repository>
<repository>
<id>placeholderapi-repo</id>
<url>https://repo.extendedclip.com/content/repositories/placeholderapi/</url>
</repository>
</repositories>
<!-- GitHub/Jenkins -->
<ciManagement>
<system>jenkins</system>
<url>http://104.236.246.108:8080</url>
</ciManagement>
<scm>
<connection>scm:git:git:@github.com:marcelo-mason/SimpleClans.git</connection>
<developerConnection>scm:git:git:@github.com:marcelo-mason/SimpleClans.git</developerConnection>
<url>http://github.com/marcelo-mason/SimpleClans.git/tree/master/</url>
<tag>SimpleClans</tag>
</scm>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<!-- Upstream Distribution -->
<distributionManagement>
<repository>
<id>SacredCoding</id>
<name>SacredCoding-releases</name>
<url>http://104.236.246.108:8081/artifactory/plugins-release-local</url>
</repository>
<snapshotRepository>
<id>SacredCoding</id>
<name>SacredCoding-snapshots</name>
<url>http://104.236.246.108:8081/artifactory/plugins-release-local</url>
</snapshotRepository>
</distributionManagement>
</project>
@@ -19,11 +19,23 @@ public class ChatBlock {
private final ArrayList<String> columnAlignments = new ArrayList<>();
private final LinkedList<String[]> rows = new LinkedList<>();
private String color = "";
private boolean cropRight = true;
private boolean padRight = true;
/**
*
*/
public static final Logger LOG = Logger.getLogger("Minecraft");
public void setCropRight(boolean cropRight) {
this.cropRight = cropRight;
}
public void setPadRight(boolean padRight) {
this.padRight = padRight;
}
/**
* @param columnAlignment
*/
@@ -182,15 +194,27 @@ public class ChatBlock {
}
} else if (align.equalsIgnoreCase("l")) {
if (msgLength(section) > colsize) {
col = cropRightToFit(section, colsize);
if (cropRight) {
col = cropRightToFit(section, colsize);
} else {
col = section;
}
} else if (msgLength(section) < colsize) {
col = paddRightToFit(section, colsize);
if (padRight) {
col = paddRightToFit(section, colsize);
} else {
col = section;
}
}
} else if (align.equalsIgnoreCase("c")) {
if (msgLength(section) > colsize) {
col = cropRightToFit(section, colsize);
if (cropRight) {
col = cropRightToFit(section, colsize);
} else {
col = section;
}
} else if (msgLength(section) < colsize) {
col = centerInLineOf(section, colsize);
col = centerInLineOf(section, colsize);
}
}
@@ -253,9 +277,10 @@ public class ChatBlock {
}
// crop and print out
String msg = cropRightToFit((prefix_used ? empty_prefix : prefix + " ") + finalString, LINE_LENGTH);
String msg = (prefix_used ? empty_prefix : prefix + " ") + finalString;
if (cropRight) {
msg = cropRightToFit(msg, LINE_LENGTH);
}
if (color.length() > 0) {
msg = color + msg;
}
@@ -638,6 +663,10 @@ public class ChatBlock {
public static String[] say(String message) {
return colorize(wordWrap(message));
}
public static String[] getColorizedMessage(String msg) {
return colorize(wordWrap(msg));
}
/**
* @param message
@@ -697,4 +726,4 @@ public class ChatBlock {
return message;
}
}
}
@@ -7,10 +7,12 @@ import org.bukkit.configuration.file.FileConfiguration;
*
* @author RoinujNosde
*/
@SuppressWarnings("deprecation")
public class ChatFormatMigration {
SimpleClans plugin = SimpleClans.getInstance();
public void migrateClanChat() {
SettingsManager sm = plugin.getSettingsManager();
FileConfiguration c = sm.getConfig();
@@ -1,10 +1,14 @@
package net.sacredlabyrinth.phaed.simpleclans;
import net.sacredlabyrinth.phaed.simpleclans.uuid.UUIDMigration;
import net.md_5.bungee.api.chat.HoverEvent;
import net.md_5.bungee.api.chat.TextComponent;
import net.sacredlabyrinth.phaed.simpleclans.events.*;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.OfflinePlayer;
import org.bukkit.World;
import org.bukkit.entity.Player;
import org.json.simple.JSONArray;
@@ -15,6 +19,7 @@ import java.io.Serializable;
import java.sql.Timestamp;
import java.text.MessageFormat;
import java.util.*;
import java.util.stream.Collectors;
/**
* @author phaed
@@ -26,7 +31,9 @@ public class Clan implements Serializable, Comparable<Clan> {
private String tag;
private String colorTag;
private String name;
private String description;
private double balance;
private double fee;
private boolean friendlyFire;
private long founded;
private long lastUsed;
@@ -42,6 +49,8 @@ public class Clan implements Serializable, Comparable<Clan> {
private String homeWorld = "";
private boolean allowWithdraw = false;
private boolean allowDeposit = true;
private boolean feeEnabled;
private List<Rank> ranks = new ArrayList<>();
/**
*
@@ -152,7 +161,46 @@ public class Clan implements Serializable, Comparable<Clan> {
public void setName(String name) {
this.name = name;
}
/**
* Returns the clan's description
*
* @return the description or null if it doesn't have one
*/
public String getDescription() {
return description;
}
/**
* (used internally)
*
* @param description
*/
public void setDescription(String description) {
this.description = description;
}
/**
* Sets the clan's fee
*
* @param fee
*/
public void setMemberFee(double fee) {
if (fee < 0) {
fee = 0;
}
this.fee = fee;
}
/**
* Returns the clan's fee
*
* @return the fee
*/
public double getMemberFee() {
return fee;
}
/**
* Returns the clan's balance
*
@@ -249,31 +297,7 @@ public class Clan implements Serializable, Comparable<Clan> {
* @return confirmation
*/
public boolean isMember(Player player) {
if (SimpleClans.getInstance().hasUUID()) {
return this.members.contains(player.getUniqueId().toString());
} else {
return this.members.contains(player.getName().toLowerCase());
}
}
/**
* Check if the player is a member of this clan
*
* @param playerName
* @return confirmation
*/
@Deprecated
public boolean isMember(String playerName) {
if (SimpleClans.getInstance().hasUUID()) {
UUID PlayerUniqueId = UUIDMigration.getForcedPlayerUUID(playerName);
if (PlayerUniqueId != null) {
return this.members.contains(PlayerUniqueId.toString());
} else {
return false;
}
} else {
return this.members.contains(playerName.toLowerCase());
}
return this.members.contains(player.getUniqueId().toString());
}
/**
@@ -369,27 +393,33 @@ public class Clan implements Serializable, Comparable<Clan> {
* @param msg
*/
public void addBb(String msg) {
addBbWithoutSaving(msg);
SimpleClans.getInstance().getStorageManager().updateClan(this);
}
/**
* Adds a bulletin board message without saving it to the database
*
* @param msg
*/
public void addBbWithoutSaving(String msg) {
while (bb.size() > SimpleClans.getInstance().getSettingsManager().getBbSize()) {
bb.remove(0);
}
bb.add(msg);
SimpleClans.getInstance().getStorageManager().updateClan(this);
bb.add(System.currentTimeMillis() + "_" + msg);
}
/**
* Adds a bulletin board message without announcer
* Adds a bulletin board message without announcer and saves it to the database
*
* @param msg
*
* @param updateLastUsed should the clan's last used time be updated as well?
*/
public void addBb(String msg, boolean updateLastUsed) {
while (bb.size() > SimpleClans.getInstance().getSettingsManager().getBbSize()) {
bb.remove(0);
}
bb.add(msg);
addBbWithoutSaving(msg);
SimpleClans.getInstance().getStorageManager().updateClan(this, updateLastUsed);
}
@@ -407,35 +437,15 @@ public class Clan implements Serializable, Comparable<Clan> {
* @param cp
*/
public void importMember(ClanPlayer cp) {
String NameOrUUID;
if (SimpleClans.getInstance().hasUUID()) {
if (cp.getUniqueId() != null) {
NameOrUUID = cp.getUniqueId().toString();
} else {
return;
}
} else {
NameOrUUID = cp.getCleanName();
}
if (!this.members.contains(NameOrUUID)) {
this.members.add(NameOrUUID);
}
}
/**
* (used internally)
*
* @param playerName
*/
@Deprecated
public void removeMember(String playerName) {
if (SimpleClans.getInstance().hasUUID()) {
UUID PlayerUniqueId = UUIDMigration.getForcedPlayerUUID(playerName);
if (PlayerUniqueId != null) {
this.members.remove(PlayerUniqueId.toString());
}
} else {
this.members.remove(playerName.toLowerCase());
String uuid;
if (cp.getUniqueId() != null) {
uuid = cp.getUniqueId().toString();
} else {
return;
}
if (!this.members.contains(uuid)) {
this.members.add(uuid);
}
}
@@ -661,12 +671,7 @@ public class Clan implements Serializable, Comparable<Clan> {
String out = "";
for (String member : members) {
ClanPlayer cp;
if (SimpleClans.getInstance().hasUUID()) {
cp = SimpleClans.getInstance().getClanManager().getClanPlayer(UUID.fromString(member));
} else {
cp = SimpleClans.getInstance().getClanManager().getClanPlayer(member.toLowerCase());
}
ClanPlayer cp = SimpleClans.getInstance().getClanManager().getClanPlayer(UUID.fromString(member));
if (cp == null) {
continue;
}
@@ -686,31 +691,9 @@ public class Clan implements Serializable, Comparable<Clan> {
* @return the leaders
*/
public boolean isLeader(Player player) {
if (SimpleClans.getInstance().hasUUID()) {
return isLeader(player.getUniqueId());
} else {
return isLeader(player.getName());
}
return isLeader(player.getUniqueId());
}
/**
* Check if a player is a leader of a clan
*
* @param playerName
* @return the leaders
*/
@Deprecated
public boolean isLeader(String playerName) {
if (isMember(playerName)) {
ClanPlayer cp = SimpleClans.getInstance().getClanManager().getClanPlayer(playerName.toLowerCase());
if (cp != null && cp.isLeader()) {
return true;
}
}
return false;
}
/**
* Check if a player is a leader of a clan
@@ -730,6 +713,24 @@ public class Clan implements Serializable, Comparable<Clan> {
return false;
}
/**
* Get all members that must pay the fee (that excludes leaders and players with the permission to bypass it)
*
* @return the fee payers
*/
public Set<ClanPlayer> getFeePayers() {
Set<ClanPlayer> feePayers = new HashSet<>();
getNonLeaders().forEach(cp -> {
OfflinePlayer op= Bukkit.getOfflinePlayer(cp.getUniqueId());
if (!SimpleClans.getInstance().getPermissionsManager().has(null, op, "simpleclans.member.bypass-fee")) {
feePayers.add(cp);
}
});
return feePayers;
}
/**
* Get all members (leaders, and non-leaders) in the clan
*
@@ -739,12 +740,7 @@ public class Clan implements Serializable, Comparable<Clan> {
List<ClanPlayer> out = new ArrayList<>();
for (String member : members) {
ClanPlayer cp;
if (SimpleClans.getInstance().hasUUID()) {
cp = SimpleClans.getInstance().getClanManager().getClanPlayer(UUID.fromString(member));
} else {
cp = SimpleClans.getInstance().getClanManager().getClanPlayer(member.toLowerCase());
}
ClanPlayer cp = SimpleClans.getInstance().getClanManager().getClanPlayer(UUID.fromString(member));
if (cp == null) {
continue;
}
@@ -763,12 +759,7 @@ public class Clan implements Serializable, Comparable<Clan> {
List<ClanPlayer> out = new ArrayList<>();
for (String member : members) {
ClanPlayer cp;
if (SimpleClans.getInstance().hasUUID()) {
cp = SimpleClans.getInstance().getClanManager().getClanPlayer(UUID.fromString(member));
} else {
cp = SimpleClans.getInstance().getClanManager().getClanPlayer(member.toLowerCase());
}
ClanPlayer cp = SimpleClans.getInstance().getClanManager().getClanPlayer(UUID.fromString(member));
if (cp == null) {
continue;
}
@@ -789,12 +780,7 @@ public class Clan implements Serializable, Comparable<Clan> {
List<ClanPlayer> out = new ArrayList<>();
for (String member : members) {
ClanPlayer cp;
if (SimpleClans.getInstance().hasUUID()) {
cp = SimpleClans.getInstance().getClanManager().getClanPlayer(UUID.fromString(member));
} else {
cp = SimpleClans.getInstance().getClanManager().getClanPlayer(member.toLowerCase());
}
ClanPlayer cp = SimpleClans.getInstance().getClanManager().getClanPlayer(UUID.fromString(member));
if (cp == null) {
continue;
}
@@ -816,12 +802,7 @@ public class Clan implements Serializable, Comparable<Clan> {
List<ClanPlayer> out = new ArrayList<>();
for (String member : members) {
ClanPlayer cp;
if (SimpleClans.getInstance().hasUUID()) {
cp = SimpleClans.getInstance().getClanManager().getClanPlayer(UUID.fromString(member));
} else {
cp = SimpleClans.getInstance().getClanManager().getClanPlayer(member.toLowerCase());
}
ClanPlayer cp = SimpleClans.getInstance().getClanManager().getClanPlayer(UUID.fromString(member));
if (cp == null) {
continue;
}
@@ -845,12 +826,7 @@ public class Clan implements Serializable, Comparable<Clan> {
List<ClanPlayer> out = new ArrayList<>();
for (String member : members) {
ClanPlayer cp;
if (SimpleClans.getInstance().hasUUID()) {
cp = SimpleClans.getInstance().getClanManager().getClanPlayer(UUID.fromString(member));
} else {
cp = SimpleClans.getInstance().getClanManager().getClanPlayer(member.toLowerCase());
}
ClanPlayer cp = SimpleClans.getInstance().getClanManager().getClanPlayer(UUID.fromString(member));
if (cp == null) {
continue;
}
@@ -896,12 +872,7 @@ public class Clan implements Serializable, Comparable<Clan> {
int totalDeaths = 0;
for (String member : members) {
ClanPlayer cp;
if (SimpleClans.getInstance().hasUUID()) {
cp = SimpleClans.getInstance().getClanManager().getClanPlayer(UUID.fromString(member));
} else {
cp = SimpleClans.getInstance().getClanManager().getClanPlayer(member.toLowerCase());
}
ClanPlayer cp = SimpleClans.getInstance().getClanManager().getClanPlayer(UUID.fromString(member));
if (cp == null) {
continue;
}
@@ -930,12 +901,7 @@ public class Clan implements Serializable, Comparable<Clan> {
}
for (String member : members) {
ClanPlayer cp;
if (SimpleClans.getInstance().hasUUID()) {
cp = SimpleClans.getInstance().getClanManager().getClanPlayer(UUID.fromString(member));
} else {
cp = SimpleClans.getInstance().getClanManager().getClanPlayer(member.toLowerCase());
}
ClanPlayer cp = SimpleClans.getInstance().getClanManager().getClanPlayer(UUID.fromString(member));
if (cp == null) {
continue;
}
@@ -959,12 +925,7 @@ public class Clan implements Serializable, Comparable<Clan> {
}
for (String member : members) {
ClanPlayer cp;
if (SimpleClans.getInstance().hasUUID()) {
cp = SimpleClans.getInstance().getClanManager().getClanPlayer(UUID.fromString(member));
} else {
cp = SimpleClans.getInstance().getClanManager().getClanPlayer(member.toLowerCase());
}
ClanPlayer cp = SimpleClans.getInstance().getClanManager().getClanPlayer(UUID.fromString(member));
if (cp == null) {
continue;
}
@@ -988,12 +949,7 @@ public class Clan implements Serializable, Comparable<Clan> {
}
for (String member : members) {
ClanPlayer cp;
if (SimpleClans.getInstance().hasUUID()) {
cp = SimpleClans.getInstance().getClanManager().getClanPlayer(UUID.fromString(member));
} else {
cp = SimpleClans.getInstance().getClanManager().getClanPlayer(member.toLowerCase());
}
ClanPlayer cp = SimpleClans.getInstance().getClanManager().getClanPlayer(UUID.fromString(member));
if (cp == null) {
continue;
}
@@ -1017,12 +973,7 @@ public class Clan implements Serializable, Comparable<Clan> {
}
for (String member : members) {
ClanPlayer cp;
if (SimpleClans.getInstance().hasUUID()) {
cp = SimpleClans.getInstance().getClanManager().getClanPlayer(UUID.fromString(member));
} else {
cp = SimpleClans.getInstance().getClanManager().getClanPlayer(member.toLowerCase());
}
ClanPlayer cp = SimpleClans.getInstance().getClanManager().getClanPlayer(UUID.fromString(member));
if (cp == null) {
continue;
}
@@ -1046,12 +997,7 @@ public class Clan implements Serializable, Comparable<Clan> {
}
for (String member : members) {
ClanPlayer cp;
if (SimpleClans.getInstance().hasUUID()) {
cp = SimpleClans.getInstance().getClanManager().getClanPlayer(UUID.fromString(member));
} else {
cp = SimpleClans.getInstance().getClanManager().getClanPlayer(member.toLowerCase());
}
ClanPlayer cp = SimpleClans.getInstance().getClanManager().getClanPlayer(UUID.fromString(member));
if (cp == null) {
continue;
}
@@ -1095,13 +1041,9 @@ public class Clan implements Serializable, Comparable<Clan> {
// add clan permission
SimpleClans.getInstance().getPermissionsManager().addClanPermissions(cp);
SimpleClans.getInstance().getPermissionsManager().addPlayerPermissions(cp);
Player player;
if (SimpleClans.getInstance().hasUUID()) {
player = SimpleClans.getInstance().getServer().getPlayer(cp.getUniqueId());
} else {
player = SimpleClans.getInstance().getServer().getPlayerExact(cp.getName());
}
Player player = SimpleClans.getInstance().getServer().getPlayer(cp.getUniqueId());
if (player != null) {
SimpleClans.getInstance().getClanManager().updateDisplayName(player);
@@ -1109,39 +1051,6 @@ public class Clan implements Serializable, Comparable<Clan> {
SimpleClans.getInstance().getServer().getPluginManager().callEvent(new PlayerJoinedClanEvent(this, cp));
}
/**
* Remove a player from a clan
*
* @param playerName
*/
@Deprecated
public void removePlayerFromClan(String playerName) {
ClanPlayer cp = SimpleClans.getInstance().getClanManager().getClanPlayer(playerName);
// remove clan group-permission
SimpleClans.getInstance().getPermissionsManager().removeClanPermissions(cp);
// remove permissions
SimpleClans.getInstance().getPermissionsManager().removeClanPlayerPermissions(cp);
cp.setClan(null);
cp.addPastClan(getColorTag() + (cp.isLeader() ? ChatColor.DARK_RED + "*" : ""));
cp.setLeader(false);
cp.setTrusted(false);
cp.setJoinDate(0);
removeMember(playerName);
SimpleClans.getInstance().getStorageManager().updateClanPlayer(cp);
SimpleClans.getInstance().getStorageManager().updateClan(this);
Player matched = cp.toPlayer();
if (matched != null) {
SimpleClans.getInstance().getClanManager().updateDisplayName(matched);
}
SimpleClans.getInstance().getServer().getPluginManager().callEvent(new PlayerKickedClanEvent(this, cp));
}
/**
* Remove a player from a clan
*
@@ -1161,6 +1070,7 @@ public class Clan implements Serializable, Comparable<Clan> {
cp.setLeader(false);
cp.setTrusted(false);
cp.setJoinDate(0);
cp.setRank(null);
removeMember(playerUniqueId);
SimpleClans.getInstance().getStorageManager().updateClanPlayer(cp);
@@ -1174,27 +1084,6 @@ public class Clan implements Serializable, Comparable<Clan> {
SimpleClans.getInstance().getServer().getPluginManager().callEvent(new PlayerKickedClanEvent(this, cp));
}
/**
* Promote a member to a leader of a clan
*
* @param playerName
*/
@Deprecated
public void promote(String playerName) {
ClanPlayer cp = SimpleClans.getInstance().getClanManager().getClanPlayer(playerName);
cp.setLeader(true);
cp.setTrusted(true);
SimpleClans.getInstance().getStorageManager().updateClanPlayer(cp);
SimpleClans.getInstance().getStorageManager().updateClan(this);
// add clan permission
SimpleClans.getInstance().getPermissionsManager().addClanPermissions(cp);
SimpleClans.getInstance().getServer().getPluginManager().callEvent(new PlayerPromoteEvent(this, cp));
}
/**
* Promote a member to a leader of a clan
*
@@ -1214,25 +1103,6 @@ public class Clan implements Serializable, Comparable<Clan> {
SimpleClans.getInstance().getServer().getPluginManager().callEvent(new PlayerPromoteEvent(this, cp));
}
/**
* Demote a leader back to a member of a clan
*
* @param playerName
*/
@Deprecated
public void demote(String playerName) {
ClanPlayer cp = SimpleClans.getInstance().getClanManager().getClanPlayer(playerName);
cp.setLeader(false);
SimpleClans.getInstance().getStorageManager().updateClanPlayer(cp);
SimpleClans.getInstance().getStorageManager().updateClan(this);
// add clan permission
SimpleClans.getInstance().getPermissionsManager().addClanPermissions(cp);
SimpleClans.getInstance().getServer().getPluginManager().callEvent(new PlayerDemoteEvent(this, cp));
}
/**
* Demote a leader back to a member of a clan
*
@@ -1327,21 +1197,43 @@ public class Clan implements Serializable, Comparable<Clan> {
* @return
*/
public boolean isAnyOnline() {
for (String member : members) {
if (SimpleClans.getInstance().hasUUID()) {
if (Helper.isOnline(UUID.fromString(member))) {
return true;
}
} else {
if (Helper.isOnline(member)) {
return true;
}
}
}
for (String member : members) {
if (Helper.isOnline(UUID.fromString(member))) {
return true;
}
}
return false;
}
/**
* Checks if there are enough leaders online to vote
*
* @param cp the one to demote
* @return true if there are
*/
public boolean enoughLeadersOnlineToDemote(ClanPlayer cp) {
List<ClanPlayer> online = getOnlineLeaders();
online.remove(cp);
double minimum = SimpleClans.getInstance().getSettingsManager().getPercentageOnlineToDemote();
// all leaders minus the one being demoted
double totalLeaders = getLeaders().size() - 1;
double onlineLeaders = online.size();
return ((onlineLeaders / totalLeaders) * 100) >= minimum;
}
/**
* Gets the online leaders
*
* @return the online leaders
*/
public List<ClanPlayer> getOnlineLeaders() {
return getOnlineMembers().stream().filter(ClanPlayer::isLeader).collect(Collectors.toList());
}
/**
* Check whether all leaders of a clan are online
*
@@ -1350,17 +1242,11 @@ public class Clan implements Serializable, Comparable<Clan> {
public boolean allLeadersOnline() {
List<ClanPlayer> leaders = getLeaders();
for (ClanPlayer leader : leaders) {
if (SimpleClans.getInstance().hasUUID()) {
if (!Helper.isOnline(leader.getUniqueId())) {
return false;
}
} else {
if (!Helper.isOnline(leader.getName())) {
return false;
}
}
}
for (ClanPlayer leader : leaders) {
if (!Helper.isOnline(leader.getUniqueId())) {
return false;
}
}
return true;
}
@@ -1495,7 +1381,7 @@ public class Clan implements Serializable, Comparable<Clan> {
public void displayBb(Player player) {
if (isVerified()) {
ChatBlock.sendBlank(player);
ChatBlock.saySingle(player, MessageFormat.format(SimpleClans.getInstance().getLang("bulletin.board.header"), SimpleClans.getInstance().getSettingsManager().getBbAccentColor(), SimpleClans.getInstance().getSettingsManager().getPageHeadingsColor(), Helper.capitalize(getName())));
ChatBlock.saySingle(player, MessageFormat.format(SimpleClans.getInstance().getLang("bulletin.board.header"), SimpleClans.getInstance().getSettingsManager().getBbAccentColor(), SimpleClans.getInstance().getSettingsManager().getPageHeadingsColor(), getName()));
int maxSize = SimpleClans.getInstance().getSettingsManager().getBbSize();
@@ -1504,12 +1390,72 @@ public class Clan implements Serializable, Comparable<Clan> {
}
for (String msg : bb) {
ChatBlock.sendMessage(player, SimpleClans.getInstance().getSettingsManager().getBbAccentColor() + "* " + SimpleClans.getInstance().getSettingsManager().getBbColor() + Helper.parseColors(msg));
if (!sendBbTime(player, msg)) {
ChatBlock.sendMessage(player, SimpleClans.getInstance().getSettingsManager().getBbAccentColor() + "* " + SimpleClans.getInstance().getSettingsManager().getBbColor() + Helper.parseColors(msg));
}
}
ChatBlock.sendBlank(player);
}
}
/**
* Displays bb to a player
* @implNote may want to refactor displaybb(Player) to use this?
*
* @param player
* @param maxSize amount of lines to display
*/
public void displayBb(Player player, int maxSize) {
if (isVerified()) {
ChatBlock.sendBlank(player);
ChatBlock.saySingle(player, MessageFormat.format(SimpleClans.getInstance().getLang("bulletin.board.header"), SimpleClans.getInstance().getSettingsManager().getBbAccentColor(), SimpleClans.getInstance().getSettingsManager().getPageHeadingsColor(), getName()));
List<String> localBb = new ArrayList<>(bb);
while (localBb.size() > maxSize) {
localBb.remove(0);
}
for (String msg : localBb) {
if (!sendBbTime(player, msg)) {
ChatBlock.sendMessage(player, SimpleClans.getInstance().getSettingsManager().getBbAccentColor() + "* " + SimpleClans.getInstance().getSettingsManager().getBbColor() + Helper.parseColors(msg));
}
}
ChatBlock.sendBlank(player);
}
}
/**
* Sends a bb message with the timestamp in a hover message, if the bb message is timestamped
* @param msg the bb message
* @return true if sent
*/
private boolean sendBbTime(Player player, String msg) {
try {
int index = msg.indexOf("_");
if (index < 1)
return false;
long time;
time = (System.currentTimeMillis()
- Long.parseLong(msg.substring(0, index))) / 1000L;
msg = String.join("", ChatBlock
.getColorizedMessage(SimpleClans.getInstance()
.getSettingsManager().getBbAccentColor() + "* " +
SimpleClans.getInstance().getSettingsManager()
.getBbColor() + Helper.parseColors(
msg.substring(++index, msg.length()))));
TextComponent textComponent = new TextComponent(msg);
textComponent.setHoverEvent(
new HoverEvent(HoverEvent.Action.SHOW_TEXT,
TextComponent.fromLegacyText(
Dates.formatTime(time, 1) + SimpleClans
.getInstance().getLang("bb.ago"))));
player.spigot().sendMessage(textComponent);
return true;
} catch (Throwable rock) {
return false;
}
}
/**
* Disband a clan
*/
@@ -1537,15 +1483,15 @@ public class Clan implements Serializable, Comparable<Clan> {
String disbanded = SimpleClans.getInstance().getLang("clan.disbanded");
if (c.removeWarringClan(this)) {
c.addBb(disbanded, ChatColor.AQUA + MessageFormat.format(SimpleClans.getInstance().getLang("you.are.no.longer.at.war"), Helper.capitalize(c.getName()), getColorTag()));
c.addBb(disbanded, ChatColor.AQUA + MessageFormat.format(SimpleClans.getInstance().getLang("you.are.no.longer.at.war"), c.getName(), getColorTag()));
}
if (c.removeRival(getTag())) {
c.addBb(disbanded, ChatColor.AQUA + MessageFormat.format(SimpleClans.getInstance().getLang("has.been.disbanded.rivalry.ended"), Helper.capitalize(getName())));
c.addBb(disbanded, ChatColor.AQUA + MessageFormat.format(SimpleClans.getInstance().getLang("has.been.disbanded.rivalry.ended"), getName()));
}
if (c.removeAlly(getTag())) {
c.addBb(disbanded, ChatColor.AQUA + MessageFormat.format(SimpleClans.getInstance().getLang("has.been.disbanded.alliance.ended"), Helper.capitalize(getName())));
c.addBb(disbanded, ChatColor.AQUA + MessageFormat.format(SimpleClans.getInstance().getLang("has.been.disbanded.alliance.ended"), getName()));
}
}
@@ -1633,7 +1579,8 @@ public class Clan implements Serializable, Comparable<Clan> {
*
* @return the flags
*/
public String getFlags() {
@SuppressWarnings("unchecked")
public String getFlags() {
JSONObject json = new JSONObject();
// writing the list of flags to json
@@ -1703,8 +1650,8 @@ public class Clan implements Serializable, Comparable<Clan> {
}
public void validateWarring() {
for (Iterator iter = warringClans.keySet().iterator(); iter.hasNext(); ) {
String clanName = (String) iter.next();
for (Iterator<String> iter = warringClans.keySet().iterator(); iter.hasNext(); ) {
String clanName = iter.next();
Clan clan = SimpleClans.getInstance().getClanManager().getClan(clanName);
@@ -1776,6 +1723,24 @@ public class Clan implements Serializable, Comparable<Clan> {
}
}
/**
* Checks if the fee is enabled
*
* @return true if enabled
*/
public boolean isMemberFeeEnabled() {
return feeEnabled;
}
/**
* Enables or disables the fee
*
* @param enable
*/
public void setMemberFeeEnabled(boolean enable) {
feeEnabled = enable;
}
/**
* @return the allowWithdraw
*/
@@ -1803,4 +1768,79 @@ public class Clan implements Serializable, Comparable<Clan> {
public void setAllowDeposit(boolean allowDeposit) {
this.allowDeposit = allowDeposit;
}
/**
* Checks if the clan has the specified rank
*
* @param name the rank
* @return
*/
public boolean hasRank(String name) {
return getRank(name) != null;
}
/**
* Creates a rank
*
* @param name
*/
public void createRank(String name) {
ranks.add(new Rank(name));
}
/**
* Returns the clan's ranks
*
* @return the ranks
*/
public List<Rank> getRanks() {
return ranks;
}
/**
* Sets the clan's ranks
*
* @param ranks
*/
public void setRanks(List<Rank> ranks) {
if (ranks == null) {
ranks = new ArrayList<>();
}
this.ranks = ranks;
}
/**
* Deletes a rank with the specified name
*
* @param name
*/
public void deleteRank(String name) {
Rank r = getRank(name);
if (r != null) {
ranks.remove(r);
getMembers().forEach(cp -> {
if (cp.getRankId().equals(r.getName())) {
cp.setRank("");
SimpleClans.getInstance().getStorageManager().updateClanPlayer(cp);
}
});
}
}
/**
* Gets a rank with the specified name or null if not found
*
* @param name the rank name
* @return a rank or null
*/
public Rank getRank(String name) {
if (name != null) {
for (Rank r : ranks) {
if (r.getName().equals(name)) {
return r;
}
}
}
return null;
}
}
@@ -10,6 +10,8 @@ import org.json.simple.JSONValue;
import java.io.Serializable;
import java.sql.Timestamp;
import java.text.MessageFormat;
import java.time.Instant;
import java.time.temporal.ChronoUnit;
import java.util.*;
/**
@@ -32,6 +34,7 @@ public class ClanPlayer implements Serializable, Comparable<ClanPlayer>
private long lastSeen;
private long joinDate;
private Set<String> pastClans = new HashSet<>();
private Map<String, Long> resignTimes = new HashMap<>();
private VoteResult vote;
private Channel channel;
@@ -116,15 +119,8 @@ public class ClanPlayer implements Serializable, Comparable<ClanPlayer>
}
@Override
public int compareTo(ClanPlayer other)
{
if (SimpleClans.getInstance().hasUUID())
{
return this.getUniqueId().compareTo(other.getUniqueId());
} else
{
return this.getName().compareToIgnoreCase(other.getName());
}
public int compareTo(ClanPlayer other) {
return this.getUniqueId().compareTo(other.getUniqueId());
}
@Override
@@ -329,6 +325,7 @@ public class ClanPlayer implements Serializable, Comparable<ClanPlayer>
/**
* Adds one rival kill to this player (does not update clanplayer to db)
*/
@Deprecated
public void addRivalKill()
{
setRivalKills(getRivalKills() + 1);
@@ -357,6 +354,7 @@ public class ClanPlayer implements Serializable, Comparable<ClanPlayer>
/**
* Adds one civilian kill to this player (does not update clanplayer to db)
*/
@Deprecated
public void addCivilianKill()
{
setCivilianKills(getCivilianKills() + 1);
@@ -385,10 +383,27 @@ public class ClanPlayer implements Serializable, Comparable<ClanPlayer>
/**
* Adds one civilian kill to this player (does not update clanplayer to db)
*/
@Deprecated
public void addNeutralKill()
{
setNeutralKills(getNeutralKills() + 1);
}
/**
* 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++;
}
}
/**
* Whether this player is allowing friendly fire
@@ -528,6 +543,9 @@ public class ClanPlayer implements Serializable, Comparable<ClanPlayer>
*/
public String getLastSeenString()
{
if (toPlayer() != null) {
return SimpleClans.getInstance().getLang("online");
}
return new java.text.SimpleDateFormat("MMM dd, ''yy h:mm a").format(new Date(this.lastSeen));
}
@@ -628,6 +646,51 @@ public class ClanPlayer implements Serializable, Comparable<ClanPlayer>
// return pc;
return pastClans;
}
/**
* Returns a map containing the time the player resigned from certain clans
*
* @return the resign times
*/
public Map<String, Long> getResignTimes() {
return resignTimes;
}
/**
* Returns the time in millis when the player resigned from the clan
*
* @param tag
* @return the time in millis
*/
public Long getResignTime(String tag) {
return resignTimes.get(tag);
}
/**
* Sets the resign times (does not update to db)
*
* @param resignTimes
*/
public void setResignTimes(Map<String, Long> resignTimes) {
if (resignTimes != null) {
final int cooldown = SimpleClans.getInstance().getSettingsManager().getRejoinCooldown();
resignTimes.forEach((k, v) -> {
long timePassed = Instant.ofEpochMilli(v).until(Instant.now(), ChronoUnit.MINUTES);
if (timePassed < cooldown) {
this.resignTimes.put(k, v);
}
});
}
}
/**
* Adds the clan to the resign times map
*
* @param tag
*/
public void addResignTime(String tag) {
if (tag != null) resignTimes.put(tag, System.currentTimeMillis());
}
/**
* Returns this player's clan
@@ -708,7 +771,8 @@ public class ClanPlayer implements Serializable, Comparable<ClanPlayer>
*
* @return the flags
*/
public String getFlags()
@SuppressWarnings("unchecked")
public String getFlags()
{
JSONObject json = new JSONObject();
@@ -916,13 +980,46 @@ public class ClanPlayer implements Serializable, Comparable<ClanPlayer>
return useChatShortcut;
}
public String getRankDisplayName() {
if (clan != null) {
Rank r = clan.getRank(rank);
if (r != null) {
return r.getDisplayName();
}
}
return "";
}
/**
* Gets the rank id
*
* @return
*/
public String getRankId() {
return rank;
}
/**
* Gets the rank displayname
*
* @return
*/
@Deprecated
public String getRank()
{
return rank;
return getRankDisplayName();
}
/**
* Sets the rank id
*
* @param rank the rank id
*/
public void setRank(String rank)
{
if (rank == null) {
rank = "";
}
this.rank = rank;
}
@@ -1,138 +1,192 @@
package net.sacredlabyrinth.phaed.simpleclans;
import java.sql.Timestamp;
import java.util.Calendar;
import java.util.Date;
/**
* @author phaed
*/
public class Dates {
private Dates() {
}
/**
* @param date1
* @param date2
* @return
*/
public static double differenceInMonths(Timestamp date1, Timestamp date2) {
return differenceInMonths(new Date(date1.getTime()), new Date(date2.getTime()));
}
/**
* @param date1
* @param date2
* @return
*/
public static double differenceInYears(Timestamp date1, Timestamp date2) {
return differenceInYears(new Date(date1.getTime()), new Date(date2.getTime()));
}
/**
* @param date1
* @param date2
* @return
*/
public static double differenceInDays(Timestamp date1, Timestamp date2) {
return differenceInDays(new Date(date1.getTime()), new Date(date2.getTime()));
}
/**
* @param date1
* @param date2
* @return
*/
public static double differenceInHours(Timestamp date1, Timestamp date2) {
return differenceInHours(new Date(date1.getTime()), new Date(date2.getTime()));
}
/**
* @param date1
* @param date2
* @return
*/
public static double differenceInMinutes(Timestamp date1, Timestamp date2) {
return differenceInMinutes(new Date(date1.getTime()), new Date(date2.getTime()));
}
/**
* @param date1
* @param date2
* @return
*/
public static double differenceInSeconds(Timestamp date1, Timestamp date2) {
return differenceInSeconds(new Date(date1.getTime()), new Date(date2.getTime()));
}
private static double differenceInMilliseconds(Timestamp date1, Timestamp date2) {
return differenceInMilliseconds(new Date(date1.getTime()), new Date(date2.getTime()));
}
/**
* @param date1
* @param date2
* @return
*/
public static double differenceInMonths(Date date1, Date date2) {
return differenceInYears(date1, date2) * 12;
}
/**
* @param date1
* @param date2
* @return
*/
public static double differenceInYears(Date date1, Date date2) {
double days = differenceInDays(date1, date2);
return days / 365.2425;
}
/**
* @param date1
* @param date2
* @return
*/
public static double differenceInDays(Date date1, Date date2) {
return differenceInHours(date1, date2) / 24.0;
}
/**
* @param date1
* @param date2
* @return
*/
public static double differenceInHours(Date date1, Date date2) {
return differenceInMinutes(date1, date2) / 60.0;
}
/**
* @param date1
* @param date2
* @return
*/
public static double differenceInMinutes(Date date1, Date date2) {
return differenceInSeconds(date1, date2) / 60.0;
}
/**
* @param date1
* @param date2
* @return
*/
public static double differenceInSeconds(Date date1, Date date2) {
return differenceInMilliseconds(date1, date2) / 1000.0;
}
private static double differenceInMilliseconds(Date date1, Date date2) {
return Math.abs(getTimeInMilliseconds(date1) - getTimeInMilliseconds(date2));
}
private static long getTimeInMilliseconds(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
return cal.getTimeInMillis() + cal.getTimeZone().getOffset(cal.getTimeInMillis());
}
}
package net.sacredlabyrinth.phaed.simpleclans;
import java.sql.Timestamp;
import java.util.Calendar;
import java.util.Date;
/**
* @author phaed
*/
public class Dates {
private Dates() {
}
/**
* @param date1
* @param date2
* @return
*/
public static double differenceInMonths(Timestamp date1, Timestamp date2) {
return differenceInMonths(new Date(date1.getTime()), new Date(date2.getTime()));
}
/**
* @param date1
* @param date2
* @return
*/
public static double differenceInYears(Timestamp date1, Timestamp date2) {
return differenceInYears(new Date(date1.getTime()), new Date(date2.getTime()));
}
/**
* @param date1
* @param date2
* @return
*/
public static double differenceInDays(Timestamp date1, Timestamp date2) {
return differenceInDays(new Date(date1.getTime()), new Date(date2.getTime()));
}
/**
* @param date1
* @param date2
* @return
*/
public static double differenceInHours(Timestamp date1, Timestamp date2) {
return differenceInHours(new Date(date1.getTime()), new Date(date2.getTime()));
}
/**
* @param date1
* @param date2
* @return
*/
public static double differenceInMinutes(Timestamp date1, Timestamp date2) {
return differenceInMinutes(new Date(date1.getTime()), new Date(date2.getTime()));
}
/**
* @param date1
* @param date2
* @return
*/
public static double differenceInSeconds(Timestamp date1, Timestamp date2) {
return differenceInSeconds(new Date(date1.getTime()), new Date(date2.getTime()));
}
/**
* @param date1
* @param date2
* @return
*/
public static double differenceInMonths(Date date1, Date date2) {
return differenceInYears(date1, date2) * 12;
}
/**
* @param date1
* @param date2
* @return
*/
public static double differenceInYears(Date date1, Date date2) {
double days = differenceInDays(date1, date2);
return days / 365.2425;
}
/**
* @param date1
* @param date2
* @return
*/
public static double differenceInDays(Date date1, Date date2) {
return differenceInHours(date1, date2) / 24.0;
}
/**
* @param date1
* @param date2
* @return
*/
public static double differenceInHours(Date date1, Date date2) {
return differenceInMinutes(date1, date2) / 60.0;
}
/**
* @param date1
* @param date2
* @return
*/
public static double differenceInMinutes(Date date1, Date date2) {
return differenceInSeconds(date1, date2) / 60.0;
}
/**
* @param date1
* @param date2
* @return
*/
public static double differenceInSeconds(Date date1, Date date2) {
return differenceInMilliseconds(date1, date2) / 1000.0;
}
private static double differenceInMilliseconds(Date date1, Date date2) {
return Math.abs(getTimeInMilliseconds(date1) - getTimeInMilliseconds(date2));
}
private static long getTimeInMilliseconds(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
return cal.getTimeInMillis() + cal.getTimeZone().getOffset(cal.getTimeInMillis());
}
/**
* Returns the string representation of the amount of time labeled as days, hours, minutes, seconds
* @author RoboMWM, LaxWasHere
* @param seconds the time in seconds
* @param depth Max amount of detail (e.g. only display days and hours if set to 1 and seconds > 1 day)
* @return
*/
public static String formatTime(Long seconds, int depth)
{
SimpleClans plugin = SimpleClans.getInstance();
if (seconds == null || seconds < 1) {
return plugin.getLang("bb.moments");
}
if (seconds < 60) {
return seconds + plugin.getLang("bb.seconds");
}
if (seconds < 3600) {
Long count = (long) Math.ceil(seconds / 60);
String res;
if (count > 1) {
res = count + plugin.getLang("bb.minutes");
} else {
res = plugin.getLang("bb.one.minute");
}
Long remaining = seconds % 60;
if (depth > 0 && remaining >= 5) {
return res + ", " + formatTime(remaining, --depth);
}
return res;
}
if (seconds < 86400) {
Long count = (long) Math.ceil(seconds / 3600);
String res;
if (count > 1) {
res = count + plugin.getLang("bb.hours");
} else {
res = plugin.getLang("bb.one.hour");
}
if (depth > 0) {
return res + ", " + formatTime(seconds % 3600, --depth);
}
return res;
}
Long count = (long) Math.ceil(seconds / 86400);
String res;
if (count > 1) {
res = count + plugin.getLang("bb.days");
} else {
res = plugin.getLang("bb.one.day");
}
if (depth > 0) {
return res + ", " + formatTime(seconds % 86400, --depth);
}
return res;
}
}
@@ -5,14 +5,21 @@ import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
import java.io.IOException;
import java.lang.reflect.Method;
import java.net.HttpURLConnection;
import java.net.URL;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.temporal.ChronoUnit;
import java.util.*;
import java.util.Map.Entry;
import java.util.regex.Matcher;
import net.sacredlabyrinth.phaed.simpleclans.managers.SettingsManager;
/**
@@ -31,6 +38,137 @@ public class Helper {
SimpleClans.debug(el.toString());
}
}
/**
* Gets the Player locale
*
* @param player the player
* @return the locale
*/
public static Locale getLocale(Player player) {
String lang = player.getLocale();
String[] split = lang.split("_");
if (split.length == 2) {
return new Locale(split[0], split[1]);
}
return new Locale(lang);
}
/**
* Converts a JSON String to a list of Ranks
*
* @param json
* @return a list of ranks or null if the JSON String is null/empty
*/
public static List<Rank> ranksFromJson(String json) {
if (json != null && !json.isEmpty()) {
try {
JSONObject jo = (JSONObject) new JSONParser().parse(json);
Object ranks = jo.get("ranks");
if (ranks != null) {
JSONArray array = (JSONArray) ranks;
List<Rank> rankList = new ArrayList<>();
for (Object o : array) {
JSONObject r = (JSONObject) o;
String name = (String) r.get("name");
String displayName = (String) r.get("displayName");
Set<String> permissions = new HashSet<>();
for (Object p : (JSONArray) r.get("permissions")) {
permissions.add((String) p);
}
Rank rank = new Rank(name, displayName, permissions);
rankList.add(rank);
}
return rankList;
}
} catch (ParseException e) {
e.printStackTrace();
}
}
return null;
}
/**
* Converts a list of Ranks to a JSON String
*
* @param ranks
* @return a JSON String
*/
@SuppressWarnings("unchecked")
public static String ranksToJson(List<Rank> ranks) {
if (ranks == null)
ranks = new ArrayList<Rank>();
JSONArray array = new JSONArray();
for (Rank rank : ranks) {
JSONObject o = new JSONObject();
o.put("name", rank.getName());
o.put("displayName", rank.getDisplayName());
JSONArray permArray = new JSONArray();
for (String p : rank.getPermissions()) {
permArray.add(p);
}
o.put("permissions", permArray);
array.add(o);
}
JSONObject object = new JSONObject();
object.put("ranks", array);
return object.toJSONString();
}
/**
* Converts a resign times map to a JSON String
*
* @param resignTimes
* @return a JSON String
*/
public static String resignTimesToJson(Map<String, Long> resignTimes) {
return JSONObject.toJSONString(resignTimes);
}
/**
* Converts a JSON String to a resign times map
*
* @param json JSON String
* @return a map
*/
@SuppressWarnings("unchecked")
public static Map<String, Long> resignTimesFromJson(String json) {
if (json != null) {
try {
return (Map<String, Long>) new JSONParser().parse(json);
} catch (ParseException e) {
e.printStackTrace();
}
}
return null;
}
/**
* Returns the delay in seconds to the specified hour and minute.
*
* @param hour hour
* @param minute minute
* @return the delay in seconds
*/
public static long getDelayTo(int hour, int minute) {
if (hour < 0 || hour > 23) hour = 1;
if (minute < 0 || minute > 59) minute = 0;
LocalDateTime now = LocalDateTime.now();
LocalDateTime d = LocalDateTime.of(now.toLocalDate(), LocalTime.of(hour, minute));
long delay;
if (now.isAfter(d)) {
delay = now.until(d.plusDays(1), ChronoUnit.SECONDS);
} else {
delay = now.until(d, ChronoUnit.SECONDS);
}
return delay;
}
/**
* Get a players full color name if he is online
@@ -265,6 +403,20 @@ public class Helper {
public static String[] toArray(List<String> list) {
return list.toArray(new String[list.size()]);
}
/**
* Converts the Permission values array to a String array
*
* @return
*/
public static String[] fromPermissionArray() {
RankPermission[] permissions = RankPermission.values();
String[] sa = new String[permissions.length];
for (int i = 0; i < permissions.length; i++) {
sa[i] = permissions[i].toString();
}
return sa;
}
/**
* Removes first item from a string array
@@ -348,9 +500,9 @@ public class Helper {
* @return
*/
public static String stripColors(String msg) {
String out = msg.replaceAll("[&][0-9a-f]", "");
String out = msg.replaceAll("[&][0-9a-fk-or]", "");
out = out.replaceAll(String.valueOf((char) 194), "");
return out.replaceAll("[\u00a7][0-9a-f]", "");
return out.replaceAll("[\u00a7][0-9a-fk-or]", "");
}
/*
@@ -579,7 +731,7 @@ public class Helper {
}
return result;
}
public static boolean isVanished(Player player) {
if (player != null && player.hasMetadata("vanished") && !player.getMetadata("vanished").isEmpty()) {
return player.getMetadata("vanished").get(0).asBoolean();
@@ -587,7 +739,8 @@ public class Helper {
return false;
}
public static Collection<Player> getOnlinePlayers() {
@SuppressWarnings("unchecked")
public static Collection<Player> getOnlinePlayers() {
try {
Method method = Bukkit.class.getDeclaredMethod("getOnlinePlayers");
Object players = method.invoke(null);
@@ -605,11 +758,7 @@ public class Helper {
}
public static Player getPlayer(String playerName) {
if (SimpleClans.getInstance().hasUUID()) {
return SimpleClans.getInstance().getServer().getPlayer(UUIDMigration.getForcedPlayerUUID(playerName));
}
return SimpleClans.getInstance().getServer().getPlayer(playerName);
return SimpleClans.getInstance().getServer().getPlayer(UUIDMigration.getForcedPlayerUUID(playerName));
}
/**
@@ -625,25 +774,25 @@ public class Helper {
String leaderColor = sm.getAllyChatLeaderColor();
String memberColor = sm.getAllyChatMemberColor();
String rank = cp.getRank().isEmpty() ? null : ChatColor.translateAlternateColorCodes('&', cp.getRank());
String rankFormat = rank != null ? ChatColor.translateAlternateColorCodes('&', sm.getAllyChatRank()).replaceAll("%rank%", rank) : "";
String rank = cp.getRankId().isEmpty() ? null : ChatColor.translateAlternateColorCodes('&', cp.getRankDisplayName());
String rankFormat = rank != null ? ChatColor.translateAlternateColorCodes('&', sm.getAllyChatRank()).replace("%rank%", rank) : "";
String message = replacePlaceholders(sm, cp, leaderColor, memberColor, rankFormat, msg);
String message = replacePlaceholders(sm.getAllyChatFormat(), cp, leaderColor, memberColor, rankFormat, msg);
if (placeholders != null) {
for (Entry<String, String> e : placeholders.entrySet()) {
message = message.replaceAll("%"+e.getKey()+"%", e.getValue());
message = message.replace("%"+e.getKey()+"%", e.getValue());
}
}
return message;
}
private static String replacePlaceholders(SettingsManager sm, ClanPlayer cp, String leaderColor, String memberColor, String rankFormat, String msg) {
String message = ChatColor.translateAlternateColorCodes('&', sm.getAllyChatFormat())
.replaceAll("%clan%", cp.getClan().getColorTag())
.replaceAll("%nick-color%", (cp.isLeader() ? leaderColor : memberColor))
.replaceAll("%player%", cp.getName())
.replaceAll("%rank%", rankFormat)
.replaceAll("%message%", Matcher.quoteReplacement(msg));
private static String replacePlaceholders(String messageFormat, ClanPlayer cp, String leaderColor, String memberColor, String rankFormat, String msg) {
String message = ChatColor.translateAlternateColorCodes('&', messageFormat)
.replace("%clan%", cp.getClan().getColorTag())
.replace("%nick-color%", (cp.isLeader() ? leaderColor : memberColor))
.replace("%player%", cp.getName())
.replace("%rank%", rankFormat)
.replace("%message%", msg);
return message;
}
@@ -660,14 +809,14 @@ public class Helper {
String leaderColor = sm.getClanChatLeaderColor();
String memberColor = sm.getClanChatMemberColor();
String rank = cp.getRank().isEmpty() ? null : ChatColor.translateAlternateColorCodes('&', cp.getRank());
String rankFormat = rank != null ? ChatColor.translateAlternateColorCodes('&', sm.getClanChatRank()).replaceAll("%rank%", rank) : "";
String rank = cp.getRankId().isEmpty() ? null : ChatColor.translateAlternateColorCodes('&', cp.getRankDisplayName());
String rankFormat = rank != null ? ChatColor.translateAlternateColorCodes('&', sm.getClanChatRank()).replace("%rank%", rank) : "";
String message = replacePlaceholders(sm, cp, leaderColor, memberColor, rankFormat, msg);
String message = replacePlaceholders(sm.getClanChatFormat(), cp, leaderColor, memberColor, rankFormat, msg);
if (placeholders != null) {
for (Entry<String, String> e : placeholders.entrySet()) {
message = message.replaceAll("%"+e.getKey()+"%", e.getValue());
message = message.replace("%"+e.getKey()+"%", e.getValue());
}
}
return message;
@@ -0,0 +1,42 @@
package net.sacredlabyrinth.phaed.simpleclans;
import java.time.LocalDateTime;
public class Kill {
private final ClanPlayer killer;
private final ClanPlayer victim;
private final LocalDateTime time;
public Kill(ClanPlayer killer, ClanPlayer victim, LocalDateTime time) {
this.killer = killer;
this.victim = victim;
this.time = time;
}
public ClanPlayer getKiller() {
return killer;
}
public ClanPlayer getVictim() {
return victim;
}
public LocalDateTime getTime() {
return time;
}
public enum Type {
CIVILIAN("c"), RIVAL("r"), NEUTRAL("n");
Type(String shortName) {
this.shortName = shortName;
}
private final String shortName;
public String getShortname() {
return shortName;
}
}
}
@@ -0,0 +1,5 @@
package net.sacredlabyrinth.phaed.simpleclans;
public enum PermissionLevel {
LEADER, TRUSTED
}
@@ -1,6 +1,5 @@
package net.sacredlabyrinth.phaed.simpleclans;
import org.bukkit.ChatColor;
import org.bukkit.OfflinePlayer;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
@@ -0,0 +1,105 @@
package net.sacredlabyrinth.phaed.simpleclans;
import java.util.HashSet;
import java.util.Set;
/**
*
* @author RoinujNosde
*/
public class Rank implements Comparable<Rank> {
private String name;
private String displayName;
private Set<String> permissions;
public Rank(String name) {
setName(name);
permissions = new HashSet<String>();
setDisplayName(displayName);
}
public Rank(String name, String displayName, Set<String> permissions) {
setName(name);
setDisplayName(displayName);
setPermissions(permissions);
}
public void setName(String name) {
if (name == null || name.isEmpty()) {
throw new IllegalArgumentException("name cannot be null or empty");
}
this.name = name;
}
public void setDisplayName(String displayName) {
if (displayName == null || displayName.isEmpty()) {
displayName = name;
}
this.displayName = displayName;
}
public void setPermissions(Set<String> permissions) {
if (permissions == null) {
permissions = new HashSet<String>();
}
this.permissions = permissions;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Rank other = (Rank) obj;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
/**
* Returns the rank's permissions
*
* @return
*/
public Set<String> getPermissions() {
return permissions;
}
/**
* Returns the rank's display name
*
* @return
*/
public String getDisplayName() {
return displayName;
}
/**
* Returns the rank's name
*
* @return
*/
public String getName() {
return name;
}
@Override
public int compareTo(Rank other) {
return Integer.compare(permissions.size(), other.permissions.size());
}
}
@@ -0,0 +1,57 @@
package net.sacredlabyrinth.phaed.simpleclans;
/**
*
* @author RoinujNosde
*
*/
public enum RankPermission {
ALLY_ADD("simpleclans.leader.ally"), ALLY_CHAT("simpleclans.member.ally"), ALLY_REMOVE("simpleclans.leader.ally"),
BANK_BALANCE("simpleclans.member.bank"), BANK_DEPOSIT("simpleclans.member.bank"),
BANK_WITHDRAW("simpleclans.member.bank"), BB_ADD("simpleclans.member.bb-add"),
BB_CLEAR("simpleclans.leader.bb-clear"), COORDS("simpleclans.member.coords"),
FEE_ENABLE("simpleclans.leader.fee"), FEE_SET("simpleclans.leader.fee"),
HOME_REGROUP("simpleclans.leader.home-regroup"), HOME_SET("simpleclans.leader.home-set"),
HOME_TP("simpleclans.member.home"), INVITE("simpleclans.leader.invite"), KICK("simpleclans.leader.kick"),
MODTAG("simpleclans.leader.modtag"), RANK_DISPLAYNAME("simpleclans.leader.rank.setdisplayname"),
RANK_LIST("simpleclans.leader.rank.list"), RIVAL_ADD("simpleclans.leader.rival"),
RIVAL_REMOVE("simpleclans.leader.rival"), WAR_END("simpleclans.leader.war"), WAR_START("simpleclans.leader.war"),
STATS("simpleclans.member.stats"), VITALS("simpleclans.member.vitals"), KILLS("simpleclans.member.kills"),
DESCRIPTION("simpleclans.leader.description"), MOSTKILLED("simpleclans.mod.mostkilled");
private String bukkitPermission;
private RankPermission(String bukkitPermission) {
this.bukkitPermission = bukkitPermission;
}
/**
* Returns the Bukkit equivalent to this rank permission
*
* @return
*/
public String getBukkitPermission() {
return bukkitPermission;
}
@Override
public String toString() {
return super.toString().replace("_", ".").toLowerCase();
}
/**
* Checks if this is a valid rank permission.
*
* @param permission
* @return
*/
public static boolean isValid(String permission) {
for (RankPermission p : values()) {
if (p.toString().equalsIgnoreCase(permission)) {
return true;
}
}
return false;
}
}
@@ -1,186 +1,267 @@
package net.sacredlabyrinth.phaed.simpleclans;
import net.sacredlabyrinth.phaed.simpleclans.executors.*;
import net.sacredlabyrinth.phaed.simpleclans.listeners.SCEntityListener;
import net.sacredlabyrinth.phaed.simpleclans.listeners.SCPlayerListener;
import net.sacredlabyrinth.phaed.simpleclans.managers.*;
import net.sacredlabyrinth.phaed.simpleclans.uuid.UUIDMigration;
import org.bukkit.plugin.java.JavaPlugin;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
* @author Phaed
*/
public class SimpleClans extends JavaPlugin {
private ArrayList<String> messages = new ArrayList<>();
private static SimpleClans instance;
private static final Logger logger = Logger.getLogger("Minecraft");
private ClanManager clanManager;
private RequestManager requestManager;
private StorageManager storageManager;
private SettingsManager settingsManager;
private PermissionsManager permissionsManager;
private TeleportManager teleportManager;
private LanguageManager languageManager;
private ChatFormatMigration chatFormatMigration;
private boolean hasUUID;
/**
* @return the logger
*/
public static Logger getLog() {
return logger;
}
/**
* @param msg
*/
public static void debug(String msg) {
if (getInstance().getSettingsManager().isDebugging()) {
logger.log(Level.INFO, msg);
}
}
/**
* @return the instance
*/
public static SimpleClans getInstance() {
return instance;
}
public static void log(String msg, Object... arg) {
if (arg == null || arg.length == 0) {
logger.log(Level.INFO, msg);
} else {
logger.log(Level.INFO, MessageFormat.format(msg, arg));
}
}
@Override
public void onEnable() {
instance = this;
settingsManager = new SettingsManager();
this.hasUUID = UUIDMigration.canReturnUUID();
languageManager = new LanguageManager();
permissionsManager = new PermissionsManager();
requestManager = new RequestManager();
clanManager = new ClanManager();
storageManager = new StorageManager();
teleportManager = new TeleportManager();
chatFormatMigration = new ChatFormatMigration();
chatFormatMigration.migrateAllyChat();
chatFormatMigration.migrateClanChat();
logger.info(MessageFormat.format(getLang("version.loaded"), getDescription().getName(), getDescription().getVersion()));
getServer().getPluginManager().registerEvents(new SCEntityListener(), this);
getServer().getPluginManager().registerEvents(new SCPlayerListener(), this);
permissionsManager.loadPermissions();
CommandHelper.registerCommand(getSettingsManager().getCommandClan());
CommandHelper.registerCommand(getSettingsManager().getCommandAccept());
CommandHelper.registerCommand(getSettingsManager().getCommandDeny());
CommandHelper.registerCommand(getSettingsManager().getCommandMore());
CommandHelper.registerCommand(getSettingsManager().getCommandAlly());
CommandHelper.registerCommand(getSettingsManager().getCommandGlobal());
getCommand(getSettingsManager().getCommandClan()).setExecutor(new ClanCommandExecutor());
getCommand(getSettingsManager().getCommandAccept()).setExecutor(new AcceptCommandExecutor());
getCommand(getSettingsManager().getCommandDeny()).setExecutor(new DenyCommandExecutor());
getCommand(getSettingsManager().getCommandMore()).setExecutor(new MoreCommandExecutor());
getCommand(getSettingsManager().getCommandAlly()).setExecutor(new AllyCommandExecutor());
getCommand(getSettingsManager().getCommandGlobal()).setExecutor(new GlobalCommandExecutor());
getCommand(getSettingsManager().getCommandClan()).setTabCompleter(new PlayerNameTabCompleter());
logger.info("[SimpleClans] Online Mode: " + hasUUID); //TODO: Is this necessary?
logger.info("[SimpleClans] Modo Multithreading: " + SimpleClans.getInstance().getSettingsManager().getUseThreads());
logger.info("[SimpleClans] Modo BungeeCord: " + SimpleClans.getInstance().getSettingsManager().getUseBungeeCord());
}
@Override
public void onDisable() {
getServer().getScheduler().cancelTasks(this);
getStorageManager().closeConnection();
getPermissionsManager().savePermissions();
}
/**
* @return the clanManager
*/
public ClanManager getClanManager() {
return clanManager;
}
/**
* @return the requestManager
*/
public RequestManager getRequestManager() {
return requestManager;
}
/**
* @return the storageManager
*/
public StorageManager getStorageManager() {
return storageManager;
}
/**
* @return the settingsManager
*/
public SettingsManager getSettingsManager() {
return settingsManager;
}
/**
* @return the permissionsManager
*/
public PermissionsManager getPermissionsManager() {
return permissionsManager;
}
/**
* @param msg the path within the language file
* @return the lang
*/
public String getLang(String msg) {
return languageManager.get(msg);
}
public TeleportManager getTeleportManager() {
return teleportManager;
}
public List<String> getMessages() {
return messages;
}
/**
* @return the hasUUID
*/
public boolean hasUUID() {
return this.hasUUID;
}
/**
* @param trueOrFalse
*/
public void setUUID(boolean trueOrFalse) {
this.hasUUID = trueOrFalse;
}
public LanguageManager getLanguageManager() {
return languageManager;
}
}
package net.sacredlabyrinth.phaed.simpleclans;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.bstats.bukkit.Metrics;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
import net.sacredlabyrinth.phaed.simpleclans.executors.AcceptCommandExecutor;
import net.sacredlabyrinth.phaed.simpleclans.executors.AllyCommandExecutor;
import net.sacredlabyrinth.phaed.simpleclans.executors.ClanCommandExecutor;
import net.sacredlabyrinth.phaed.simpleclans.executors.DenyCommandExecutor;
import net.sacredlabyrinth.phaed.simpleclans.executors.GlobalCommandExecutor;
import net.sacredlabyrinth.phaed.simpleclans.executors.MoreCommandExecutor;
import net.sacredlabyrinth.phaed.simpleclans.language.LanguageMigration;
import net.sacredlabyrinth.phaed.simpleclans.language.LanguageResource;
import net.sacredlabyrinth.phaed.simpleclans.listeners.SCEntityListener;
import net.sacredlabyrinth.phaed.simpleclans.listeners.SCPlayerListener;
import net.sacredlabyrinth.phaed.simpleclans.managers.ClanManager;
import net.sacredlabyrinth.phaed.simpleclans.managers.PermissionsManager;
import net.sacredlabyrinth.phaed.simpleclans.managers.PlaceholdersManager;
import net.sacredlabyrinth.phaed.simpleclans.managers.RequestManager;
import net.sacredlabyrinth.phaed.simpleclans.managers.SettingsManager;
import net.sacredlabyrinth.phaed.simpleclans.managers.StorageManager;
import net.sacredlabyrinth.phaed.simpleclans.managers.TeleportManager;
import net.sacredlabyrinth.phaed.simpleclans.tasks.CollectFeeTask;
import net.sacredlabyrinth.phaed.simpleclans.tasks.CollectUpkeepTask;
import net.sacredlabyrinth.phaed.simpleclans.tasks.SaveDataTask;
import net.sacredlabyrinth.phaed.simpleclans.tasks.UpkeepWarningTask;
import net.sacredlabyrinth.phaed.simpleclans.uuid.UUIDMigration;
/**
* @author Phaed
*/
public class SimpleClans extends JavaPlugin {
private ArrayList<String> messages = new ArrayList<>();
private static SimpleClans instance;
private static final Logger logger = Logger.getLogger("Minecraft");
private ClanManager clanManager;
private RequestManager requestManager;
private StorageManager storageManager;
private SettingsManager settingsManager;
private PermissionsManager permissionsManager;
private TeleportManager teleportManager;
private ChatFormatMigration chatFormatMigration;
private boolean hasUUID;
/**
* @return the logger
*/
@Deprecated
public static Logger getLog() {
return logger;
}
/**
* @param msg
*/
public static void debug(String msg) {
if (getInstance().getSettingsManager().isDebugging()) {
logger.log(Level.INFO, msg);
}
}
/**
* @return the instance
*/
public static SimpleClans getInstance() {
return instance;
}
@Deprecated
public static void log(String msg, Object... arg) {
if (arg == null || arg.length == 0) {
logger.log(Level.INFO, msg);
} else {
logger.log(Level.INFO, MessageFormat.format(msg, arg));
}
}
@Override
public void onEnable() {
instance = this;
new LanguageMigration(this).migrate();
settingsManager = new SettingsManager();
this.hasUUID = UUIDMigration.canReturnUUID();
permissionsManager = new PermissionsManager();
requestManager = new RequestManager();
clanManager = new ClanManager();
storageManager = new StorageManager();
teleportManager = new TeleportManager();
chatFormatMigration = new ChatFormatMigration();
chatFormatMigration.migrateAllyChat();
chatFormatMigration.migrateClanChat();
getLogger().info(MessageFormat.format(getLang("version.loaded"), getDescription().getName(), getDescription().getVersion()));
getServer().getPluginManager().registerEvents(new SCEntityListener(), this);
getServer().getPluginManager().registerEvents(new SCPlayerListener(), this);
permissionsManager.loadPermissions();
CommandHelper.registerCommand(getSettingsManager().getCommandClan());
CommandHelper.registerCommand(getSettingsManager().getCommandAccept());
CommandHelper.registerCommand(getSettingsManager().getCommandDeny());
CommandHelper.registerCommand(getSettingsManager().getCommandMore());
CommandHelper.registerCommand(getSettingsManager().getCommandAlly());
CommandHelper.registerCommand(getSettingsManager().getCommandGlobal());
getCommand(getSettingsManager().getCommandClan()).setExecutor(new ClanCommandExecutor());
getCommand(getSettingsManager().getCommandAccept()).setExecutor(new AcceptCommandExecutor());
getCommand(getSettingsManager().getCommandDeny()).setExecutor(new DenyCommandExecutor());
getCommand(getSettingsManager().getCommandMore()).setExecutor(new MoreCommandExecutor());
getCommand(getSettingsManager().getCommandAlly()).setExecutor(new AllyCommandExecutor());
getCommand(getSettingsManager().getCommandGlobal()).setExecutor(new GlobalCommandExecutor());
getCommand(getSettingsManager().getCommandClan()).setTabCompleter(new PlayerNameTabCompleter());
getLogger().info("Multithreading: " + SimpleClans.getInstance().getSettingsManager().getUseThreads());
getLogger().info("BungeeCord: " + SimpleClans.getInstance().getSettingsManager().getUseBungeeCord());
if (!Locale.getDefault().getLanguage().equals("en")) {
getLogger().info("Help us translate SimpleClans to your language! Access https://crowdin.com/project/simpleclans/");
}
startTasks();
startMetrics();
hookIntoPAPI();
new UpdateChecker(this).check();
}
private void hookIntoPAPI() {
if (getServer().getPluginManager().getPlugin("PlaceholderAPI") != null) {
getLogger().info("PlaceholderAPI found. Registering hook...");
new PlaceholdersManager(this);
}
}
private void startMetrics() {
Metrics metrics = new Metrics(this, 7131);
SettingsManager sm = getSettingsManager();
ClanManager cm = getClanManager();
String on = "enabled";
String off = "disabled";
metrics.addCustomChart(new Metrics.SingleLineChart("clans", () -> cm.getClans().size()));
metrics.addCustomChart(new Metrics.SingleLineChart("clan_players", () -> cm.getAllClanPlayers().size()));
metrics.addCustomChart(new Metrics.SimplePie("language", () -> sm.getLanguage().toString()));
metrics.addCustomChart(new Metrics.SimplePie("machine_language", () -> Locale.getDefault().toString()));
metrics.addCustomChart(new Metrics.SimplePie("database", () -> sm.isUseMysql() ? "MySQL" : "SQLite"));
metrics.addCustomChart(new Metrics.SimplePie("save_periodically", () -> sm.isSavePeriodically() ? on : off));
metrics.addCustomChart(new Metrics.SimplePie("save_interval", () -> String.valueOf(sm.getSaveInterval())));
metrics.addCustomChart(new Metrics.SimplePie("upkeep", () -> sm.isClanUpkeep() ? on : off));
metrics.addCustomChart(new Metrics.SimplePie("member_fee", () -> sm.isMemberFee() ? on : off));
metrics.addCustomChart(new Metrics.SimplePie("rejoin_cooldown", () -> sm.isRejoinCooldown() ? on : off));
metrics.addCustomChart(new Metrics.SimplePie("clan_verification", () -> sm.isRequireVerification() ? on : off));
metrics.addCustomChart(new Metrics.SimplePie("money_per_kill", () -> sm.isMoneyPerKill() ? on : off));
metrics.addCustomChart(new Metrics.SimplePie("threads", () -> sm.getUseThreads() ? on : off));
metrics.addCustomChart(new Metrics.SimplePie("bungeecord", () -> sm.getUseBungeeCord() ? on : off));
}
private void startTasks() {
if (getSettingsManager().isSavePeriodically()) {
new SaveDataTask().start();
}
if (getSettingsManager().isMemberFee()) {
new CollectFeeTask().start();
}
if (getSettingsManager().isClanUpkeep()) {
new CollectUpkeepTask().start();
new UpkeepWarningTask().start();
}
}
@Override
public void onDisable() {
getServer().getScheduler().cancelTasks(this);
if (getSettingsManager().isSavePeriodically()) {
getStorageManager().saveModified();
}
getStorageManager().closeConnection();
getPermissionsManager().savePermissions();
}
/**
* @return the clanManager
*/
public ClanManager getClanManager() {
return clanManager;
}
/**
* @return the requestManager
*/
public RequestManager getRequestManager() {
return requestManager;
}
/**
* @return the storageManager
*/
public StorageManager getStorageManager() {
return storageManager;
}
/**
* @return the settingsManager
*/
public SettingsManager getSettingsManager() {
return settingsManager;
}
/**
* @return the permissionsManager
*/
public PermissionsManager getPermissionsManager() {
return permissionsManager;
}
/**
* @param key the path within the language file
* @return the lang
*/
public String getLang(String key) {
return getLang(key, null);
}
public String getLang(String key, Player player) {
Locale locale;
if (player == null) {
locale = getSettingsManager().getLanguage();
} else {
locale = Helper.getLocale(player);
}
return new LanguageResource().getLang(key, locale);
}
public TeleportManager getTeleportManager() {
return teleportManager;
}
public List<String> getMessages() {
return messages;
}
/**
* @return the hasUUID
*/
@Deprecated
public boolean hasUUID() {
return this.hasUUID;
}
/**
* @param trueOrFalse
*/
public void setUUID(boolean trueOrFalse) {
this.hasUUID = trueOrFalse;
}
}
@@ -7,7 +7,6 @@ import java.util.UUID;
public class TeleportState {
private UUID playerUniqueId;
private String playerName;
private Location playerLocation;
private Location destination;
private int counter;
@@ -17,7 +16,6 @@ public class TeleportState {
public TeleportState(Player player, Location dest, String clanName) {
this.destination = dest;
this.playerLocation = player.getLocation();
this.playerName = player.getName();
this.clanName = clanName;
this.counter = SimpleClans.getInstance().getSettingsManager().getWaitSecs();
this.playerUniqueId = player.getUniqueId();
@@ -50,11 +48,7 @@ public class TeleportState {
* @return
*/
public Player getPlayer() {
if (SimpleClans.getInstance().hasUUID()) {
return SimpleClans.getInstance().getServer().getPlayer(this.playerUniqueId);
} else {
return SimpleClans.getInstance().getServer().getPlayer(this.playerName);
}
return SimpleClans.getInstance().getServer().getPlayer(this.playerUniqueId);
}
/**
@@ -0,0 +1,70 @@
package net.sacredlabyrinth.phaed.simpleclans;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.logging.Level;
import org.bukkit.scheduler.BukkitRunnable;
import com.google.gson.JsonElement;
import com.google.gson.JsonParseException;
import com.google.gson.JsonParser;
/**
*
* @author RoinujNosde
* @since 2.10.2
*/
public class UpdateChecker {
private final SimpleClans plugin;
private static final String LATEST_VERSION_URL = "https://api.spiget.org/v2/resources/71242/versions/latest";
private final String version;
private final String userAgent;
public UpdateChecker(SimpleClans plugin) {
this.plugin = plugin;
version = plugin.getDescription().getVersion();
userAgent = "SimpleClans/" + version;
}
/**
* Checks if the version installed is up-to-date
*
*/
public void check() {
new BukkitRunnable() {
@Override
public void run() {
try {
URL url = new URL(LATEST_VERSION_URL);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.addRequestProperty("User-Agent", userAgent);
InputStreamReader reader = new InputStreamReader(connection.getInputStream());
JsonElement parse = new JsonParser().parse(reader);
if (parse.isJsonObject()) {
String latestVersion = parse.getAsJsonObject().get("name").getAsString();
if (!version.equals(latestVersion)) {
plugin.getLogger().info(String.format("You're running an outdated version (%s).", version));
plugin.getLogger().info(String.format("The latest version is %s. Download it at:", latestVersion));
plugin.getLogger().info("https://www.spigotmc.org/resources/simpleclans.71242/");
}
}
reader.close();
} catch (MalformedURLException ignored) {
} catch (IOException | JsonParseException ex) {
plugin.getLogger().log(Level.WARNING, "Error checking the plugin version...");
}
}
}.runTaskAsynchronously(plugin);
}
}
@@ -40,12 +40,7 @@ public class AllyCommand {
if (!clan.isVerified()) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("clan.is.not.verified"));
return;
}
if (!clan.isLeader(player)) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("no.leader.permissions"));
return;
}
}
if (arg.length != 2) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(plugin.getLang("usage.ally"), plugin.getSettingsManager().getCommandClan()));
@@ -67,9 +62,14 @@ public class AllyCommand {
if (!ally.isVerified()) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("cannot.ally.with.an.unverified.clan"));
return;
}
if (action.equals(plugin.getLang("add"))) {
if (!plugin.getPermissionsManager().has(player, RankPermission.ALLY_ADD, PermissionLevel.LEADER, true)) {
return;
}
if (clan.isAlly(ally.getTag())) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("your.clans.are.already.allies"));
return;
@@ -83,16 +83,20 @@ public class AllyCommand {
}
plugin.getRequestManager().addAllyRequest(cp, ally, clan);
ChatBlock.sendMessage(player, ChatColor.AQUA + MessageFormat.format(plugin.getLang("leaders.have.been.asked.for.an.alliance"), Helper.capitalize(ally.getName())));
ChatBlock.sendMessage(player, ChatColor.AQUA + MessageFormat.format(plugin.getLang("leaders.have.been.asked.for.an.alliance"), ally.getName()));
} else if (action.equals(plugin.getLang("remove"))) {
if (!plugin.getPermissionsManager().has(player, RankPermission.ALLY_REMOVE, PermissionLevel.LEADER, true)) {
return;
}
if (!clan.isAlly(ally.getTag())) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("your.clans.are.not.allies"));
return;
}
clan.removeAlly(ally);
ally.addBb(cp.getName(), ChatColor.AQUA + MessageFormat.format(plugin.getLang("has.broken.the.alliance"), Helper.capitalize(clan.getName()), ally.getName()), false);
clan.addBb(cp.getName(), ChatColor.AQUA + MessageFormat.format(plugin.getLang("has.broken.the.alliance"), Helper.capitalize(cp.getName()), Helper.capitalize(ally.getName())));
ally.addBb(cp.getName(), ChatColor.AQUA + MessageFormat.format(plugin.getLang("has.broken.the.alliance"), clan.getName(), ally.getName()), false);
clan.addBb(cp.getName(), ChatColor.AQUA + MessageFormat.format(plugin.getLang("has.broken.the.alliance"), cp.getName(), ally.getName()));
} else {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(plugin.getLang("usage.ally"), plugin.getSettingsManager().getCommandClan()));
}
@@ -36,38 +36,23 @@ public class BanCommand {
return;
}
String banned = arg[0];
UUID uuid = UUIDMigration.getForcedPlayerUUID(arg[0]);
if (uuid == null) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("no.player.matched"));
return;
}
if (plugin.getSettingsManager().isBanned(uuid)) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("this.player.is.already.banned"));
return;
}
if (SimpleClans.getInstance().hasUUID()) {
UUID PlayerUniqueId = UUIDMigration.getForcedPlayerUUID(banned);
if (plugin.getSettingsManager().isBanned(PlayerUniqueId)) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("this.player.is.already.banned"));
return;
}
Player pl = SimpleClans.getInstance().getServer().getPlayer(PlayerUniqueId);
if (pl != null) {
ChatBlock.sendMessage(pl, ChatColor.AQUA + plugin.getLang("you.banned"));
}
plugin.getClanManager().ban(banned);
ChatBlock.sendMessage(player, ChatColor.AQUA + plugin.getLang("player.added.to.banned.list"));
} else {
if (plugin.getSettingsManager().isBanned(banned)) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("this.player.is.already.banned"));
return;
}
Player pl = SimpleClans.getInstance().getServer().getPlayerExact(banned);
if (pl != null) {
ChatBlock.sendMessage(pl, ChatColor.AQUA + plugin.getLang("you.banned"));
}
plugin.getClanManager().ban(banned);
ChatBlock.sendMessage(player, ChatColor.AQUA + plugin.getLang("player.added.to.banned.list"));
}
plugin.getClanManager().ban(uuid);
ChatBlock.sendMessage(player, ChatColor.AQUA + plugin.getLang("player.added.to.banned.list"));
Player pl = SimpleClans.getInstance().getServer().getPlayer(uuid);
if (pl != null) {
ChatBlock.sendMessage(pl, ChatColor.AQUA + plugin.getLang("you.banned"));
}
}
}
@@ -3,6 +3,8 @@ package net.sacredlabyrinth.phaed.simpleclans.commands;
import net.sacredlabyrinth.phaed.simpleclans.ChatBlock;
import net.sacredlabyrinth.phaed.simpleclans.Clan;
import net.sacredlabyrinth.phaed.simpleclans.ClanPlayer;
import net.sacredlabyrinth.phaed.simpleclans.PermissionLevel;
import net.sacredlabyrinth.phaed.simpleclans.RankPermission;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
@@ -47,34 +49,39 @@ public class BankCommand {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("clan.is.not.verified"));
return;
}
if (!cp.isTrusted()) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("only.trusted.players.can.access.clan.stats"));
return;
}
if (arg.length == 1) {
if (arg[0].equalsIgnoreCase("status")) {
player.sendMessage(ChatColor.AQUA + MessageFormat.format(plugin.getLang("clan.balance"), clanbalance));
if (!plugin.getPermissionsManager().has(player, RankPermission.BANK_BALANCE, PermissionLevel.TRUSTED, true)) {
return;
}
player.sendMessage(ChatColor.AQUA + MessageFormat.format(plugin.getLang("clan.balance"), clanbalance));
}
} else if (arg.length == 2) {
if (arg[1].matches("[0-9]+")) {
money = Double.parseDouble(arg[1]);
}
if (arg[0].equalsIgnoreCase("deposit")) {
if (!cp.getClan().isLeader(player) && !clan.isAllowDeposit()) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("no.leader.permissions"));
if (!clan.isAllowDeposit()) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("deposit.not.allowed"));
return;
}
if (!plugin.getPermissionsManager().has(player, RankPermission.BANK_DEPOSIT, PermissionLevel.LEADER, true)) {
return;
}
if (arg[1].equalsIgnoreCase("all")) {
clan.deposit(plmoney, player);
} else {
clan.deposit(money, player);
}
} else if (arg[0].equalsIgnoreCase("withdraw")) {
if (!cp.getClan().isLeader(player) && !clan.isAllowWithdraw()) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("no.leader.permissions"));
if (!clan.isAllowWithdraw()) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("withdraw.not.allowed"));
return;
}
if (!plugin.getPermissionsManager().has(player, RankPermission.BANK_WITHDRAW, PermissionLevel.LEADER, true)) {
return;
}
if (arg[1].equalsIgnoreCase("all")) {
clan.withdraw(clanbalance, player);
} else {
@@ -45,12 +45,7 @@ public class BbCommand {
}
if (arg.length == 1 && arg[0].equalsIgnoreCase("clear")) {
if (!plugin.getPermissionsManager().has(player, "simpleclans.leader.bb-clear")) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("insufficient.permissions"));
return;
}
if (!cp.isTrusted() || !cp.isLeader()) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("no.leader.permissions"));
if (!plugin.getPermissionsManager().has(player, RankPermission.BB_CLEAR, PermissionLevel.LEADER, true)) {
return;
}
cp.getClan().clearBb();
@@ -58,13 +53,7 @@ public class BbCommand {
return;
}
if (!plugin.getPermissionsManager().has(player, "simpleclans.member.bb-add")) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("insufficient.permissions"));
return;
}
if (!cp.isTrusted()) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("no.leader.permissions"));
if (!plugin.getPermissionsManager().has(player, RankPermission.BB_ADD, PermissionLevel.TRUSTED, true)) {
return;
}
@@ -47,10 +47,10 @@ public class CoordsCommand {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("clan.is.not.verified"));
return;
}
if (!cp.isTrusted()) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("only.trusted.players.can.access.clan.coords"));
return;
if (!plugin.getPermissionsManager().has(player, RankPermission.COORDS, PermissionLevel.TRUSTED, true)) {
return;
}
if (arg.length != 0) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(plugin.getLang("usage.0.coords"), plugin.getSettingsManager().getCommandClan()));
return;
@@ -96,7 +96,7 @@ public class CoordsCommand {
}
ChatBlock.sendBlank(player);
ChatBlock.saySingle(player, plugin.getSettingsManager().getPageClanNameColor() + Helper.capitalize(clan.getName()) + subColor + " " + plugin.getLang("coords") + " " + headColor + Helper.generatePageSeparator(plugin.getSettingsManager().getPageSep()));
ChatBlock.saySingle(player, plugin.getSettingsManager().getPageClanNameColor() + clan.getName() + subColor + " " + plugin.getLang("coords") + " " + headColor + Helper.generatePageSeparator(plugin.getSettingsManager().getPageSep()));
ChatBlock.sendBlank(player);
boolean more = chatBlock.sendBlock(player, plugin.getSettingsManager().getPageSize());
@@ -17,6 +17,7 @@ import net.sacredlabyrinth.phaed.simpleclans.uuid.UUIDMigration;
* @author phaed
*/
public class DemoteCommand {
public DemoteCommand() {
}
@@ -29,6 +30,40 @@ public class DemoteCommand {
public void execute(Player player, String[] arg) {
SimpleClans plugin = SimpleClans.getInstance();
if (arg.length != 1) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(plugin.getLang("usage.demote.leader"), plugin.getSettingsManager().getCommandClan()));
return;
}
String demotedName = arg[0];
if (demotedName == null) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("no.player.matched"));
return;
}
ClanPlayer toDemote;
UUID uuid = UUIDMigration.getForcedPlayerUUID(demotedName);
toDemote = plugin.getClanManager().getAnyClanPlayer(uuid);
if (plugin.getPermissionsManager().has(player, "simpleclans.admin.demote")) {
if (!toDemote.isLeader()) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("player.is.not.a.leader.of.any.clan"));
return;
}
final Clan clan = toDemote.getClan();
if (clan.getLeaders().size() == 1) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("you.cannot.demote.the.last.leader"));
return;
}
clan.demote(toDemote.getUniqueId());
clan.addBb(player.getName(), ChatColor.AQUA + MessageFormat.format(plugin.getLang("demoted.back.to.member"), demotedName));
ChatBlock.sendMessage(player, ChatColor.AQUA + plugin.getLang("player.successfully.demoted"));
return;
}
if (!plugin.getPermissionsManager().has(player, "simpleclans.leader.demote")) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("insufficient.permissions"));
return;
@@ -46,61 +81,25 @@ public class DemoteCommand {
if (!clan.isLeader(player)) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("no.leader.permissions"));
return;
}
if (arg.length != 1) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(plugin.getLang("usage.demote.leader"), plugin.getSettingsManager().getCommandClan()));
}
if (!clan.enoughLeadersOnlineToDemote(toDemote)) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("not.enough.leaders.online.to.vote.on.demotion"));
return;
}
String demotedName = arg[0];
boolean allOtherLeadersOnline;
if (demotedName == null) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("no.player.matched"));
return;
}
if (SimpleClans.getInstance().hasUUID()) {
UUID PlayerUniqueId = UUIDMigration.getForcedPlayerUUID(demotedName);
if (PlayerUniqueId == null) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("no.player.matched"));
return;
}
allOtherLeadersOnline = clan.allOtherLeadersOnline(PlayerUniqueId);
} else {
allOtherLeadersOnline = clan.allOtherLeadersOnline(demotedName);
}
if (!allOtherLeadersOnline) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("leaders.must.be.online.to.vote.on.demotion"));
return;
}
if (SimpleClans.getInstance().hasUUID()) {
UUID PlayerUniqueId = UUIDMigration.getForcedPlayerUUID(demotedName);
if (!clan.isLeader(PlayerUniqueId)) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("player.is.not.a.leader.of.your.clan"));
return;
}
if (clan.getLeaders().size() != 1 && plugin.getSettingsManager().isConfirmationForDemote()) {
plugin.getRequestManager().addDemoteRequest(cp, demotedName, clan);
ChatBlock.sendMessage(player, ChatColor.AQUA + plugin.getLang("demotion.vote.has.been.requested.from.all.leaders"));
return;
}
clan.addBb(player.getName(), ChatColor.AQUA + MessageFormat.format(plugin.getLang("demoted.back.to.member"), Helper.capitalize(demotedName)));
clan.demote(PlayerUniqueId);
} else {
if (!clan.isLeader(demotedName)) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("player.is.not.a.leader.of.your.clan"));
return;
}
if (clan.getLeaders().size() != 1 && plugin.getSettingsManager().isConfirmationForDemote()) {
plugin.getRequestManager().addDemoteRequest(cp, demotedName, clan);
ChatBlock.sendMessage(player, ChatColor.AQUA + plugin.getLang("demotion.vote.has.been.requested.from.all.leaders"));
return;
}
clan.addBb(player.getName(), ChatColor.AQUA + MessageFormat.format(plugin.getLang("demoted.back.to.member"), Helper.capitalize(demotedName)));
clan.demote(demotedName);
}
if (!clan.isLeader(uuid)) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("player.is.not.a.leader.of.your.clan"));
return;
}
if (clan.getLeaders().size() > 2 && plugin.getSettingsManager().isConfirmationForDemote()) {
plugin.getRequestManager().addDemoteRequest(cp, demotedName, clan);
ChatBlock.sendMessage(player,
ChatColor.AQUA + plugin.getLang("demotion.vote.has.been.requested.from.all.leaders"));
return;
}
clan.addBb(player.getName(), ChatColor.AQUA
+ MessageFormat.format(plugin.getLang("demoted.back.to.member"), demotedName));
clan.demote(uuid);
}
}
@@ -0,0 +1,69 @@
package net.sacredlabyrinth.phaed.simpleclans.commands;
import java.text.MessageFormat;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import net.sacredlabyrinth.phaed.simpleclans.ChatBlock;
import net.sacredlabyrinth.phaed.simpleclans.Clan;
import net.sacredlabyrinth.phaed.simpleclans.ClanPlayer;
import net.sacredlabyrinth.phaed.simpleclans.Helper;
import net.sacredlabyrinth.phaed.simpleclans.PermissionLevel;
import net.sacredlabyrinth.phaed.simpleclans.RankPermission;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
import net.sacredlabyrinth.phaed.simpleclans.managers.SettingsManager;
public class DescriptionCommand {
/**
* Execute the command
*
* @param player
* @param args
*/
public void execute(Player player, String[] args) {
final SimpleClans plugin = SimpleClans.getInstance();
final SettingsManager sm = plugin.getSettingsManager();
if (!plugin.getPermissionsManager().has(player, "simpleclans.leader.description")) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("insufficient.permissions"));
return;
}
ClanPlayer cp = plugin.getClanManager().getClanPlayer(player);
if (cp == null) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("not.a.member.of.any.clan"));
return;
}
Clan clan = cp.getClan();
if (!clan.isVerified()) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("clan.is.not.verified"));
return;
}
if (!plugin.getPermissionsManager().has(player, RankPermission.DESCRIPTION, PermissionLevel.LEADER, true)) {
return;
}
if (args.length < 1) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(plugin.getLang("usage.description"), plugin.getSettingsManager().getCommandClan()));
return;
}
String description = Helper.toMessage(args);
if (description.length() < sm.getClanMinDescriptionLength()) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(plugin.getLang("your.clan.description.must.be.longer.than"), sm.getClanMinDescriptionLength()));
return;
}
if (description.length() > sm.getClanMaxDescriptionLength()) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(plugin.getLang("your.clan.description.cannot.be.longer.than"), sm.getClanMaxDescriptionLength()));
return;
}
clan.setDescription(description);
ChatBlock.sendMessage(player, ChatColor.AQUA + plugin.getLang("description.changed"));
plugin.getStorageManager().updateClan(clan);
}
}
@@ -0,0 +1,87 @@
package net.sacredlabyrinth.phaed.simpleclans.commands;
import java.text.MessageFormat;
import net.sacredlabyrinth.phaed.simpleclans.ChatBlock;
import net.sacredlabyrinth.phaed.simpleclans.Clan;
import net.sacredlabyrinth.phaed.simpleclans.ClanPlayer;
import net.sacredlabyrinth.phaed.simpleclans.PermissionLevel;
import net.sacredlabyrinth.phaed.simpleclans.RankPermission;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
/**
*
* @author roinujnosde
*/
public class FeeCommand {
/**
* Executes the command
*
* @param player
* @param args
*/
public void execute(Player player, String[] args) {
SimpleClans plugin = SimpleClans.getInstance();
if (!plugin.getSettingsManager().isMemberFee()) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("disabled.command"));
return;
}
if (args.length >= 1) {
ClanPlayer cp = plugin.getClanManager().getAnyClanPlayer(player.getUniqueId());
Clan clan = cp.getClan();
if (!clan.isVerified()) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("clan.is.not.verified"));
return;
}
if (args[0].equalsIgnoreCase("check")) {
if (!plugin.getPermissionsManager().has(player, "simpleclans.member.fee-check")) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("insufficient.permissions"));
return;
}
ChatBlock.sendMessage(player, ChatColor.AQUA
+ MessageFormat.format(
plugin.getLang("the.fee.is.0.and.its.current.value.is.1"),
clan.isMemberFeeEnabled() ? plugin.getLang("fee.enabled") : plugin.getLang("fee.disabled"),
clan.getMemberFee()
));
return;
}
if (args.length == 2 && args[0].equalsIgnoreCase("set")) {
if (!plugin.getPermissionsManager().has(player, RankPermission.FEE_SET, PermissionLevel.LEADER, true)) {
return;
}
if (!cp.isLeader()) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("no.leader.permissions"));
return;
}
double newFee = 0;
try {
newFee = Double.parseDouble(args[1]);
} catch (NumberFormatException ignored) {
player.sendMessage(ChatColor.RED + plugin.getLang("invalid.fee"));
return;
}
double maxFee = plugin.getSettingsManager().getMaxMemberFee();
if (newFee > maxFee) {
ChatBlock.sendMessage(player, ChatColor.RED
+ MessageFormat.format(plugin.getLang("max.fee.allowed.is.0"), maxFee));
return;
}
if (plugin.getClanManager().purchaseMemberFeeSet(player)) {
clan.setMemberFee(newFee);
clan.addBb(player.getName(), ChatColor.AQUA + MessageFormat.format(plugin.getLang("bb.fee.set"), newFee));
ChatBlock.sendMessage(player, ChatColor.AQUA + plugin.getLang("fee.set"));
plugin.getStorageManager().updateClan(clan);
}
return;
}
}
ChatBlock.sendMessage(player, ChatColor.RED
+ MessageFormat.format(plugin.getLang("usage.fee"), plugin.getSettingsManager().getCommandClan()));
}
}
@@ -4,7 +4,6 @@ import net.sacredlabyrinth.phaed.simpleclans.ChatBlock;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import java.text.MessageFormat;
@@ -25,7 +24,7 @@ public class GlobalffCommand {
SimpleClans plugin = SimpleClans.getInstance();
if (arg.length != 1) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(plugin.getLang("usage.0.ff.allow.auto"), plugin.getSettingsManager().getCommandClan()));
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(plugin.getLang("usage.0.globalff.allow.auto"), plugin.getSettingsManager().getCommandClan()));
return;
}
@@ -82,14 +82,9 @@ public class HomeCommand {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("clan.is.not.verified"));
return;
}
if (!cp.isTrusted()) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("only.trusted.players.can.access.clan.vitals"));
return;
}
if (arg.length == 0) {
if (!plugin.getPermissionsManager().has(player, "simpleclans.member.home")) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("insufficient.permissions"));
if (!plugin.getPermissionsManager().has(player, RankPermission.HOME_TP, PermissionLevel.TRUSTED, true)) {
return;
}
@@ -107,12 +102,7 @@ public class HomeCommand {
}
if (arg[0].equalsIgnoreCase("set")) {
if (!cp.isLeader()) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("no.leader.permissions"));
return;
}
if (!plugin.getPermissionsManager().has(player, "simpleclans.leader.home-set")) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("insufficient.permissions"));
if (!plugin.getPermissionsManager().has(player, RankPermission.HOME_SET, PermissionLevel.LEADER, true)) {
return;
}
if (plugin.getSettingsManager().isHomebaseSetOnce() && clan.getHomeLocation() != null && !plugin.getPermissionsManager().has(player, "simpleclans.mod.home")) {
@@ -133,12 +123,7 @@ public class HomeCommand {
}
if (arg[0].equalsIgnoreCase("clear")) {
if (!cp.isLeader()) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("no.leader.permissions"));
return;
}
if (!plugin.getPermissionsManager().has(player, "simpleclans.leader.home-set")) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("insufficient.permissions"));
if (!plugin.getPermissionsManager().has(player, RankPermission.HOME_SET, PermissionLevel.LEADER, true)) {
return;
}
if (plugin.getSettingsManager().isHomebaseSetOnce() && clan.getHomeLocation() != null && !plugin.getPermissionsManager().has(player, "simpleclans.mod.home")) {
@@ -156,20 +141,23 @@ public class HomeCommand {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("insufficient.permissions"));
return;
}
if (!plugin.getPermissionsManager().has(player, RankPermission.HOME_REGROUP, PermissionLevel.LEADER, true)) {
return;
}
Location loc;
if (arg.length >= 2 && arg[1].equalsIgnoreCase("me")) {
loc = player.getLocation();
} else {
loc = cp.getClan().getHomeLocation();
}
if (!cp.isLeader()) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("no.leader.permissions"));
if(loc == null) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("hombase.not.set"));
return;
}
if (!plugin.getPermissionsManager().has(player, "simpleclans.leader.home-regroup")) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("insufficient.permissions"));
}
HomeRegroupEvent homeRegroupEvent = new HomeRegroupEvent(clan, cp, clan.getOnlineMembers(), loc);
SimpleClans.getInstance().getServer().getPluginManager().callEvent(homeRegroupEvent);
@@ -200,10 +188,7 @@ public class HomeCommand {
plugin.getTeleportManager().addPlayer(player, new Location(loc.getWorld(), x + .5, loc.getBlockY(), z + .5), clan.getName());
}
ChatBlock.sendMessage(player, ChatColor.AQUA + plugin.getLang("hombase.set") + ChatColor.YELLOW + Helper.toLocationString(loc));
return;
}
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("insufficient.permissions"));
}
}
@@ -1,11 +1,19 @@
package net.sacredlabyrinth.phaed.simpleclans.commands;
import net.sacredlabyrinth.phaed.simpleclans.*;
import net.sacredlabyrinth.phaed.simpleclans.uuid.UUIDMigration;
import java.text.MessageFormat;
import java.time.Instant;
import java.time.temporal.ChronoUnit;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import java.text.MessageFormat;
import net.sacredlabyrinth.phaed.simpleclans.ChatBlock;
import net.sacredlabyrinth.phaed.simpleclans.Clan;
import net.sacredlabyrinth.phaed.simpleclans.ClanPlayer;
import net.sacredlabyrinth.phaed.simpleclans.Helper;
import net.sacredlabyrinth.phaed.simpleclans.PermissionLevel;
import net.sacredlabyrinth.phaed.simpleclans.RankPermission;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
/**
* @author phaed
@@ -37,15 +45,15 @@ public class InviteCommand {
Clan clan = cp.getClan();
if (!clan.isLeader(player)) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("no.leader.permissions"));
return;
if (!plugin.getPermissionsManager().has(player, RankPermission.INVITE, PermissionLevel.LEADER, true)) {
return;
}
if (arg.length != 1) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(plugin.getLang("usage.0.invite.player"), plugin.getSettingsManager().getCommandClan()));
return;
}
Player invited = Helper.getPlayer(arg[0]);
if (invited == null) {
@@ -60,17 +68,31 @@ public class InviteCommand {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("you.cannot.invite.yourself"));
return;
}
if (plugin.getSettingsManager().isBanned(player.getName())) {
if (plugin.getSettingsManager().isBanned(player.getUniqueId())) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("this.player.is.banned.from.using.clan.commands"));
return;
}
ClanPlayer cpInv = plugin.getClanManager().getClanPlayer(invited);
ClanPlayer cpInv = plugin.getClanManager().getAnyClanPlayer(invited.getUniqueId());
if (cpInv != null) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("the.player.is.already.member.of.another.clan"));
return;
if (cpInv.getClan() != null) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("the.player.is.already.member.of.another.clan"));
return;
}
if (plugin.getSettingsManager().isRejoinCooldown()) {
Long resign = cpInv.getResignTime(clan.getTag());
if (resign != null) {
long timePassed = Instant.ofEpochMilli(resign).until(Instant.now(), ChronoUnit.MINUTES);
int cooldown = plugin.getSettingsManager().getRejoinCooldown();
if (timePassed < cooldown) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(plugin.getLang("the.player.must.wait.0.before.joining.your.clan.again"), cooldown - timePassed));
return;
}
}
}
}
if (!plugin.getClanManager().purchaseInvite(player)) {
return;
}
@@ -78,8 +100,8 @@ public class InviteCommand {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("the.clan.members.reached.limit"));
return;
}
plugin.getRequestManager().addInviteRequest(cp, invited.getName(), clan);
ChatBlock.sendMessage(player, ChatColor.AQUA + MessageFormat.format(plugin.getLang("has.been.asked.to.join"), Helper.capitalize(invited.getName()), clan.getName()));
ChatBlock.sendMessage(player, ChatColor.AQUA + MessageFormat.format(plugin.getLang("has.been.asked.to.join"), invited.getName(), clan.getName()));
}
}
@@ -4,11 +4,14 @@ import net.sacredlabyrinth.phaed.simpleclans.ChatBlock;
import net.sacredlabyrinth.phaed.simpleclans.Clan;
import net.sacredlabyrinth.phaed.simpleclans.ClanPlayer;
import net.sacredlabyrinth.phaed.simpleclans.Helper;
import net.sacredlabyrinth.phaed.simpleclans.PermissionLevel;
import net.sacredlabyrinth.phaed.simpleclans.RankPermission;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import java.text.MessageFormat;
import java.util.UUID;
import net.sacredlabyrinth.phaed.simpleclans.uuid.UUIDMigration;
@@ -42,22 +45,21 @@ public class KickCommand {
Clan clan = cp.getClan();
if (!clan.isLeader(player)) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("no.leader.permissions"));
return;
if (!plugin.getPermissionsManager().has(player, RankPermission.KICK, PermissionLevel.LEADER, true)) {
return;
}
if (arg.length != 1) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(plugin.getLang("usage.kick.player"), plugin.getSettingsManager().getCommandClan()));
return;
}
String kicked = arg[0];
UUID kicked = UUIDMigration.getForcedPlayerUUID(arg[0]);
if (kicked == null) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("no.player.matched"));
return;
}
if (kicked.equalsIgnoreCase(player.getName())) {
if (kicked.equals(player.getUniqueId())) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("you.cannot.kick.yourself"));
return;
}
@@ -70,12 +72,7 @@ public class KickCommand {
return;
}
clan.addBb(player.getName(), ChatColor.AQUA + MessageFormat.format(plugin.getLang("has.been.kicked.by"), Helper.capitalize(kicked), player.getName()));
if (SimpleClans.getInstance().hasUUID()) {
clan.removePlayerFromClan(UUIDMigration.getForcedPlayerUUID(kicked));
} else {
clan.removePlayerFromClan(kicked);
}
clan.addBb(player.getName(), ChatColor.AQUA + MessageFormat.format(plugin.getLang("has.been.kicked.by"), arg[0], player.getName()));
clan.removePlayerFromClan(kicked);
}
}
@@ -1,90 +1,102 @@
package net.sacredlabyrinth.phaed.simpleclans.commands;
import net.sacredlabyrinth.phaed.simpleclans.*;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import java.text.MessageFormat;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
public class KillsCommand {
public KillsCommand() {
}
/**
* Execute the command
*
* @param player
* @param arg
*/
public void execute(Player player, String[] arg) {
SimpleClans plugin = SimpleClans.getInstance();
String headColor = plugin.getSettingsManager().getPageHeadingsColor();
String subColor = plugin.getSettingsManager().getPageSubTitleColor();
if (!plugin.getPermissionsManager().has(player, "simpleclans.member.kills")) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("insufficient.permissions"));
return;
}
ClanPlayer cp = plugin.getClanManager().getClanPlayer(player);
if (cp == null) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("not.a.member.of.any.clan"));
return;
}
Clan clan = cp.getClan();
if (!clan.isVerified()) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("clan.is.not.verified"));
return;
}
if (!cp.isTrusted()) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("only.trusted.players.can.access.clan.stats"));
return;
}
String polledPlayerName = player.getName();
if (arg.length == 1) {
polledPlayerName = arg[0];
}
ChatBlock chatBlock = new ChatBlock();
chatBlock.setFlexibility(true, false);
chatBlock.setAlignment("l", "c");
chatBlock.addRow(" " + headColor + plugin.getLang("victim"), plugin.getLang("killcount"));
Map<String, Integer> killsPerPlayerUnordered = plugin.getStorageManager().getKillsPerPlayer(polledPlayerName);
if (killsPerPlayerUnordered.isEmpty()) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("nokillsfound"));
return;
}
Map<String, Integer> killsPerPlayer = Helper.sortByValue(killsPerPlayerUnordered);
for (Entry<String, Integer> playerKills : killsPerPlayer.entrySet()) {
int count = playerKills.getValue();
chatBlock.addRow(" " + playerKills.getKey(), ChatColor.AQUA + "" + count);
}
ChatBlock.saySingle(player, plugin.getSettingsManager().getPageClanNameColor() + Helper.capitalize(polledPlayerName) + subColor + " " + plugin.getLang("kills") + " " + headColor + Helper.generatePageSeparator(plugin.getSettingsManager().getPageSep()));
ChatBlock.sendBlank(player);
boolean more = chatBlock.sendBlock(player, plugin.getSettingsManager().getPageSize());
if (more) {
plugin.getStorageManager().addChatBlock(player, chatBlock);
ChatBlock.sendBlank(player);
ChatBlock.sendMessage(player, headColor + MessageFormat.format(plugin.getLang("view.next.page"), plugin.getSettingsManager().getCommandMore()));
}
ChatBlock.sendBlank(player);
}
}
package net.sacredlabyrinth.phaed.simpleclans.commands;
import net.sacredlabyrinth.phaed.simpleclans.*;
import net.sacredlabyrinth.phaed.simpleclans.managers.StorageManager.DataCallback;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitRunnable;
import java.text.MessageFormat;
import java.util.Map;
import java.util.Map.Entry;
public class KillsCommand {
public KillsCommand() {
}
/**
* Execute the command
*
* @param player
* @param arg
*/
public void execute(Player player, String[] arg) {
SimpleClans plugin = SimpleClans.getInstance();
String headColor = plugin.getSettingsManager().getPageHeadingsColor();
String subColor = plugin.getSettingsManager().getPageSubTitleColor();
if (!plugin.getPermissionsManager().has(player, "simpleclans.member.kills")) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("insufficient.permissions"));
return;
}
ClanPlayer cp = plugin.getClanManager().getClanPlayer(player);
if (cp == null) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("not.a.member.of.any.clan"));
return;
}
Clan clan = cp.getClan();
if (!clan.isVerified()) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("clan.is.not.verified"));
return;
}
if (!plugin.getPermissionsManager().has(player, RankPermission.KILLS, PermissionLevel.TRUSTED, true)) {
return;
}
String polledPlayerName = player.getName();
if (arg.length == 1) {
polledPlayerName = arg[0];
}
final String name = polledPlayerName;
plugin.getStorageManager().getKillsPerPlayer(polledPlayerName, new DataCallback<Map<String, Integer>>() {
@Override
public void onResultReady(Map<String, Integer> data) {
new BukkitRunnable() {
@Override
public void run() {
ChatBlock chatBlock = new ChatBlock();
chatBlock.setFlexibility(true, false);
chatBlock.setAlignment("l", "c");
chatBlock.addRow(" " + headColor + plugin.getLang("victim"), plugin.getLang("killcount"));
if (data.isEmpty()) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("nokillsfound"));
return;
}
Map<String, Integer> killsPerPlayer = Helper.sortByValue(data);
for (Entry<String, Integer> playerKills : killsPerPlayer.entrySet()) {
int count = playerKills.getValue();
chatBlock.addRow(" " + playerKills.getKey(), ChatColor.AQUA + "" + count);
}
ChatBlock.saySingle(player, plugin.getSettingsManager().getPageClanNameColor() + name + subColor + " " + plugin.getLang("kills") + " " + headColor + Helper.generatePageSeparator(plugin.getSettingsManager().getPageSep()));
ChatBlock.sendBlank(player);
boolean more = chatBlock.sendBlock(player, plugin.getSettingsManager().getPageSize());
if (more) {
plugin.getStorageManager().addChatBlock(player, chatBlock);
ChatBlock.sendBlank(player);
ChatBlock.sendMessage(player, headColor + MessageFormat.format(plugin.getLang("view.next.page"), plugin.getSettingsManager().getCommandMore()));
}
ChatBlock.sendBlank(player);
}
}.runTask(plugin);
}
});
}
}
@@ -1,92 +1,137 @@
package net.sacredlabyrinth.phaed.simpleclans.commands;
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 org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import java.text.DecimalFormat;
import java.text.MessageFormat;
import java.text.NumberFormat;
import java.util.List;
/**
* @author phaed
*/
public class ListCommand {
public ListCommand() {
}
/**
* Execute the command
*
* @param player
* @param arg
*/
public void execute(Player player, String[] arg) {
SimpleClans plugin = SimpleClans.getInstance();
String headColor = plugin.getSettingsManager().getPageHeadingsColor();
String subColor = plugin.getSettingsManager().getPageSubTitleColor();
NumberFormat formatter = new DecimalFormat("#.#");
if (!plugin.getPermissionsManager().has(player, "simpleclans.anyone.list")) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("insufficient.permissions"));
return;
}
if (arg.length != 0) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(plugin.getLang("usage.list"), plugin.getSettingsManager().getCommandClan()));
return;
}
List<Clan> clans = plugin.getClanManager().getClans();
plugin.getClanManager().sortClansByKDR(clans);
if (clans.isEmpty()) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("no.clans.have.been.created"));
return;
}
ChatBlock chatBlock = new ChatBlock();
ChatBlock.sendBlank(player);
ChatBlock.saySingle(player, plugin.getSettingsManager().getServerName() + subColor + " " + plugin.getLang("clans.lower") + " " + headColor + Helper.generatePageSeparator(plugin.getSettingsManager().getPageSep()));
ChatBlock.sendBlank(player);
ChatBlock.sendMessage(player, headColor + plugin.getLang("total.clans") + " " + subColor + clans.size());
ChatBlock.sendBlank(player);
chatBlock.setAlignment("c", "l", "c", "c");
chatBlock.setFlexibility(false, true, false, false);
chatBlock.addRow(" " + headColor + plugin.getLang("rank"), plugin.getLang("name"), plugin.getLang("kdr"), plugin.getLang("members"));
int rank = 1;
for (Clan clan : clans) {
if (!plugin.getSettingsManager().isShowUnverifiedOnList() && !clan.isVerified()) {
continue;
}
String tag = plugin.getSettingsManager().getClanChatBracketColor() + plugin.getSettingsManager().getClanChatTagBracketLeft() + plugin.getSettingsManager().getTagDefaultColor() + clan.getColorTag() + plugin.getSettingsManager().getClanChatBracketColor() + plugin.getSettingsManager().getClanChatTagBracketRight();
String name = (clan.isVerified() ? plugin.getSettingsManager().getPageClanNameColor() : ChatColor.GRAY) + clan.getName();
String fullname = tag + " " + name;
String size = ChatColor.WHITE + "" + clan.getSize();
String kdr = clan.isVerified() ? ChatColor.YELLOW + "" + formatter.format(clan.getTotalKDR()) : "";
chatBlock.addRow(" " + rank, fullname, kdr, size);
rank++;
}
boolean more = chatBlock.sendBlock(player, plugin.getSettingsManager().getPageSize());
if (more) {
plugin.getStorageManager().addChatBlock(player, chatBlock);
ChatBlock.sendBlank(player);
ChatBlock.sendMessage(player, headColor + MessageFormat.format(plugin.getLang("view.next.page"), plugin.getSettingsManager().getCommandMore()));
}
ChatBlock.sendBlank(player);
}
}
package net.sacredlabyrinth.phaed.simpleclans.commands;
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.managers.ClanManager;
import net.sacredlabyrinth.phaed.simpleclans.managers.SettingsManager;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import java.text.DecimalFormat;
import java.text.MessageFormat;
import java.text.NumberFormat;
import java.util.List;
/**
* @author phaed
*/
public class ListCommand {
public ListCommand() {
}
/**
* Execute the command
*
* @param player
* @param args
*/
public void execute(Player player, String[] args) {
SimpleClans plugin = SimpleClans.getInstance();
String headColor = plugin.getSettingsManager().getPageHeadingsColor();
String subColor = plugin.getSettingsManager().getPageSubTitleColor();
NumberFormat formatter = new DecimalFormat("#.#");
if (!plugin.getPermissionsManager().has(player, "simpleclans.anyone.list")) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("insufficient.permissions"));
return;
}
if (args.length > 2) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(plugin.getLang("usage.list"), plugin.getSettingsManager().getCommandClan()));
return;
}
List<Clan> clans = plugin.getClanManager().getClans();
sort(plugin, clans, args);
if (clans.isEmpty()) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("no.clans.have.been.created"));
return;
}
ChatBlock chatBlock = new ChatBlock();
ChatBlock.sendBlank(player);
ChatBlock.saySingle(player, plugin.getSettingsManager().getServerName() + subColor + " " + plugin.getLang("clans.lower") + " " + headColor + Helper.generatePageSeparator(plugin.getSettingsManager().getPageSep()));
ChatBlock.sendBlank(player);
ChatBlock.sendMessage(player, headColor + plugin.getLang("total.clans") + " " + subColor + clans.size());
ChatBlock.sendBlank(player);
chatBlock.setAlignment("c", "l", "c", "c");
chatBlock.setFlexibility(false, true, false, false);
chatBlock.addRow(" " + headColor + plugin.getLang("rank"), plugin.getLang("name"), plugin.getLang("kdr"), plugin.getLang("members"));
int rank = 1;
for (Clan clan : clans) {
if (!plugin.getSettingsManager().isShowUnverifiedOnList() && !clan.isVerified()) {
continue;
}
String tag = plugin.getSettingsManager().getClanChatBracketColor() + plugin.getSettingsManager().getClanChatTagBracketLeft() + plugin.getSettingsManager().getTagDefaultColor() + clan.getColorTag() + plugin.getSettingsManager().getClanChatBracketColor() + plugin.getSettingsManager().getClanChatTagBracketRight();
String name = (clan.isVerified() ? plugin.getSettingsManager().getPageClanNameColor() : ChatColor.GRAY) + clan.getName();
String fullname = tag + " " + name;
String size = ChatColor.WHITE + "" + clan.getSize();
String kdr = clan.isVerified() ? ChatColor.YELLOW + "" + formatter.format(clan.getTotalKDR()) : "";
chatBlock.addRow(" " + rank, fullname, kdr, size);
rank++;
}
boolean more = chatBlock.sendBlock(player, plugin.getSettingsManager().getPageSize());
if (more) {
plugin.getStorageManager().addChatBlock(player, chatBlock);
ChatBlock.sendBlank(player);
ChatBlock.sendMessage(player, headColor + MessageFormat.format(plugin.getLang("view.next.page"), plugin.getSettingsManager().getCommandMore()));
}
ChatBlock.sendBlank(player);
}
private void sort(SimpleClans plugin, List<Clan> clans, String[] args) {
SettingsManager sm = plugin.getSettingsManager();
String type = sm.getListDefault();
String order = null;
if (args.length > 0) {
type = args[0];
}
String asc = sm.getListAsc();
String desc = sm.getListDesc();
if (args.length == 2) {
order = args[1];
if (!order.equalsIgnoreCase(asc) && !order.equalsIgnoreCase(desc)) {
order = null;
}
}
ClanManager cm = plugin.getClanManager();
//in case the default type is invalid
cm.sortClansByKDR(clans);
if (type.equalsIgnoreCase(sm.getListActive())) {
cm.sortClansByActive(clans, asc.equalsIgnoreCase(order));
}
if (type.equalsIgnoreCase(sm.getListFounded())) {
if (order == null) {
order = asc;
}
cm.sortClansByFounded(clans, asc.equalsIgnoreCase(order));
}
if (type.equalsIgnoreCase(sm.getListKdr())) {
cm.sortClansByKDR(clans, asc.equalsIgnoreCase(order));
}
if (type.equalsIgnoreCase(sm.getListName())) {
if (order == null) {
order = asc;
}
cm.sortClansByName(clans, asc.equalsIgnoreCase(order));
}
if (type.equalsIgnoreCase(sm.getListSize())) {
cm.sortClansBySize(clans, asc.equalsIgnoreCase(order));
}
}
}
@@ -1,111 +1,119 @@
package net.sacredlabyrinth.phaed.simpleclans.commands;
import net.sacredlabyrinth.phaed.simpleclans.*;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import java.text.DecimalFormat;
import java.text.MessageFormat;
import java.text.NumberFormat;
/**
* @author phaed
*/
public class LookupCommand {
public LookupCommand() {
}
/**
* Execute the command
*
* @param player
* @param arg
*/
public void execute(Player player, String[] arg) {
SimpleClans plugin = SimpleClans.getInstance();
String headColor = plugin.getSettingsManager().getPageHeadingsColor();
String subColor = plugin.getSettingsManager().getPageSubTitleColor();
NumberFormat formatter = new DecimalFormat("#.#");
String playerName = null;
if (arg.length == 0) {
if (!plugin.getPermissionsManager().has(player, "simpleclans.member.lookup")) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("insufficient.permissions"));
return;
}
playerName = player.getName();
} else if (arg.length == 1) {
if (!plugin.getPermissionsManager().has(player, "simpleclans.anyone.lookup")) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("insufficient.permissions"));
return;
}
playerName = arg[0];
} else {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(plugin.getLang("usage.lookup.tag"), plugin.getSettingsManager().getCommandClan()));
return;
}
ClanPlayer targetCp = plugin.getClanManager().getAnyClanPlayer(playerName);
ClanPlayer myCp = plugin.getClanManager().getClanPlayer(player.getName());
Clan myClan = myCp == null ? null : myCp.getClan();
if (targetCp != null) {
Clan targetClan = targetCp.getClan();
ChatBlock.sendBlank(player);
ChatBlock.saySingle(player, MessageFormat.format(plugin.getLang("s.player.info"), plugin.getSettingsManager().getPageClanNameColor() + targetCp.getName() + subColor) + " " + headColor + Helper.generatePageSeparator(plugin.getSettingsManager().getPageSep()));
ChatBlock.sendBlank(player);
String clanName = ChatColor.WHITE + plugin.getLang("none");
if (targetClan != null) {
clanName = plugin.getSettingsManager().getClanChatBracketColor() + plugin.getSettingsManager().getClanChatTagBracketLeft() + plugin.getSettingsManager().getTagDefaultColor() + targetClan.getColorTag() + plugin.getSettingsManager().getClanChatBracketColor() + plugin.getSettingsManager().getClanChatTagBracketRight() + " " + plugin.getSettingsManager().getPageClanNameColor() + targetClan.getName();
}
String status = targetClan == null ? ChatColor.WHITE + plugin.getLang("free.agent") : (targetCp.isLeader() ? plugin.getSettingsManager().getPageLeaderColor() + plugin.getLang("leader") : (targetCp.isTrusted() ? plugin.getSettingsManager().getPageTrustedColor() + plugin.getLang("trusted") : plugin.getSettingsManager().getPageUnTrustedColor() + plugin.getLang("untrusted")));
String rank = ChatColor.WHITE + "" + Helper.parseColors(targetCp.getRank());
String joinDate = ChatColor.WHITE + "" + targetCp.getJoinDateString();
String lastSeen = ChatColor.WHITE + "" + targetCp.getLastSeenString();
String inactive = ChatColor.WHITE + "" + targetCp.getInactiveDays() + subColor + "/" + ChatColor.WHITE + plugin.getSettingsManager().getPurgePlayers() + " days";
String rival = ChatColor.WHITE + "" + targetCp.getRivalKills();
String neutral = ChatColor.WHITE + "" + targetCp.getNeutralKills();
String civilian = ChatColor.WHITE + "" + targetCp.getCivilianKills();
String deaths = ChatColor.WHITE + "" + targetCp.getDeaths();
String kdr = ChatColor.YELLOW + "" + formatter.format(targetCp.getKDR());
String pastClans = ChatColor.WHITE + "" + targetCp.getPastClansString(headColor + ", ");
ChatBlock.sendMessage(player, " " + subColor + MessageFormat.format(plugin.getLang("clan.0"), clanName));
ChatBlock.sendMessage(player, " " + subColor + MessageFormat.format(plugin.getLang("rank.0"), rank));
ChatBlock.sendMessage(player, " " + subColor + MessageFormat.format(plugin.getLang("status.0"), status));
ChatBlock.sendMessage(player, " " + subColor + MessageFormat.format(plugin.getLang("kdr.0"), kdr));
ChatBlock.sendMessage(player, " " + subColor + plugin.getLang("kill.totals") + " " + headColor + "[" + plugin.getLang("rival") + ":" + rival + " " + headColor + "" + plugin.getLang("neutral") + ":" + neutral + " " + headColor + "" + plugin.getLang("civilian") + ":" + civilian + headColor + "]");
ChatBlock.sendMessage(player, " " + subColor + MessageFormat.format(plugin.getLang("deaths.0"), deaths));
ChatBlock.sendMessage(player, " " + subColor + MessageFormat.format(plugin.getLang("join.date.0"), joinDate));
ChatBlock.sendMessage(player, " " + subColor + MessageFormat.format(plugin.getLang("last.seen.0"), lastSeen));
ChatBlock.sendMessage(player, " " + subColor + MessageFormat.format(plugin.getLang("past.clans.0"), pastClans));
ChatBlock.sendMessage(player, " " + subColor + MessageFormat.format(plugin.getLang("inactive.0"), inactive));
if (arg.length == 1 && !targetCp.equals(myCp)) {
String killType = ChatColor.GRAY + plugin.getLang("neutral");
if (targetClan == null) {
killType = ChatColor.DARK_GRAY + plugin.getLang("civilian");
} else if (myClan != null && myClan.isRival(targetClan.getTag())) {
killType = ChatColor.WHITE + plugin.getLang("rival");
}
ChatBlock.sendMessage(player, " " + subColor + MessageFormat.format(plugin.getLang("kill.type.0"), killType));
}
ChatBlock.sendBlank(player);
} else {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("no.player.data.found"));
if (arg.length == 1 && myClan != null) {
ChatBlock.sendBlank(player);
ChatBlock.sendMessage(player, MessageFormat.format(plugin.getLang("kill.type.civilian"), ChatColor.DARK_GRAY));
}
}
}
}
package net.sacredlabyrinth.phaed.simpleclans.commands;
import net.sacredlabyrinth.phaed.simpleclans.*;
import net.sacredlabyrinth.phaed.simpleclans.uuid.UUIDMigration;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import java.text.DecimalFormat;
import java.text.MessageFormat;
import java.text.NumberFormat;
import java.util.UUID;
/**
* @author phaed
*/
public class LookupCommand {
public LookupCommand() {
}
/**
* Execute the command
*
* @param player
* @param arg
*/
public void execute(Player player, String[] arg) {
SimpleClans plugin = SimpleClans.getInstance();
String headColor = plugin.getSettingsManager().getPageHeadingsColor();
String subColor = plugin.getSettingsManager().getPageSubTitleColor();
NumberFormat formatter = new DecimalFormat("#.#");
String playerName = null;
if (arg.length == 0) {
if (!plugin.getPermissionsManager().has(player, "simpleclans.member.lookup")) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("insufficient.permissions"));
return;
}
playerName = player.getName();
} else if (arg.length == 1) {
if (!plugin.getPermissionsManager().has(player, "simpleclans.anyone.lookup")) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("insufficient.permissions"));
return;
}
playerName = arg[0];
} else {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(plugin.getLang("usage.lookup.tag"), plugin.getSettingsManager().getCommandClan()));
return;
}
UUID targetUuid = UUIDMigration.getForcedPlayerUUID(playerName);
if (targetUuid == null) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("no.player.matched"));
return;
}
ClanPlayer targetCp = plugin.getClanManager().getAnyClanPlayer(targetUuid);
ClanPlayer myCp = plugin.getClanManager().getClanPlayer(player.getUniqueId());
Clan myClan = myCp == null ? null : myCp.getClan();
if (targetCp != null) {
Clan targetClan = targetCp.getClan();
ChatBlock.sendBlank(player);
ChatBlock.saySingle(player, MessageFormat.format(plugin.getLang("s.player.info"), plugin.getSettingsManager().getPageClanNameColor() + targetCp.getName() + subColor) + " " + headColor + Helper.generatePageSeparator(plugin.getSettingsManager().getPageSep()));
ChatBlock.sendBlank(player);
String clanName = ChatColor.WHITE + plugin.getLang("none");
if (targetClan != null) {
clanName = plugin.getSettingsManager().getClanChatBracketColor() + plugin.getSettingsManager().getClanChatTagBracketLeft() + plugin.getSettingsManager().getTagDefaultColor() + targetClan.getColorTag() + plugin.getSettingsManager().getClanChatBracketColor() + plugin.getSettingsManager().getClanChatTagBracketRight() + " " + plugin.getSettingsManager().getPageClanNameColor() + targetClan.getName();
}
String status = targetClan == null ? ChatColor.WHITE + plugin.getLang("free.agent") : (targetCp.isLeader() ? plugin.getSettingsManager().getPageLeaderColor() + plugin.getLang("leader") : (targetCp.isTrusted() ? plugin.getSettingsManager().getPageTrustedColor() + plugin.getLang("trusted") : plugin.getSettingsManager().getPageUnTrustedColor() + plugin.getLang("untrusted")));
String rank = ChatColor.WHITE + "" + Helper.parseColors(targetCp.getRankDisplayName());
String joinDate = ChatColor.WHITE + "" + targetCp.getJoinDateString();
String lastSeen = ChatColor.WHITE + "" + targetCp.getLastSeenString();
String inactive = ChatColor.WHITE + "" + targetCp.getInactiveDays() + subColor + "/" + ChatColor.WHITE + plugin.getSettingsManager().getPurgePlayers() + " days";
String rival = ChatColor.WHITE + "" + targetCp.getRivalKills();
String neutral = ChatColor.WHITE + "" + targetCp.getNeutralKills();
String civilian = ChatColor.WHITE + "" + targetCp.getCivilianKills();
String deaths = ChatColor.WHITE + "" + targetCp.getDeaths();
String kdr = ChatColor.YELLOW + "" + formatter.format(targetCp.getKDR());
String pastClans = ChatColor.WHITE + "" + targetCp.getPastClansString(headColor + ", ");
ChatBlock.sendMessage(player, " " + subColor + MessageFormat.format(plugin.getLang("clan.0"), clanName));
ChatBlock.sendMessage(player, " " + subColor + MessageFormat.format(plugin.getLang("rank.0"), rank));
ChatBlock.sendMessage(player, " " + subColor + MessageFormat.format(plugin.getLang("status.0"), status));
ChatBlock.sendMessage(player, " " + subColor + MessageFormat.format(plugin.getLang("kdr.0"), kdr));
ChatBlock.sendMessage(player, " " + subColor + plugin.getLang("kill.totals") + " " + headColor + "[" + plugin.getLang("rival") + ":" + rival + " " + headColor + "" + plugin.getLang("neutral") + ":" + neutral + " " + headColor + "" + plugin.getLang("civilian") + ":" + civilian + headColor + "]");
ChatBlock.sendMessage(player, " " + subColor + MessageFormat.format(plugin.getLang("deaths.0"), deaths));
ChatBlock.sendMessage(player, " " + subColor + MessageFormat.format(plugin.getLang("join.date.0"), joinDate));
ChatBlock.sendMessage(player, " " + subColor + MessageFormat.format(plugin.getLang("last.seen.0"), lastSeen));
ChatBlock.sendMessage(player, " " + subColor + MessageFormat.format(plugin.getLang("past.clans.0"), pastClans));
ChatBlock.sendMessage(player, " " + subColor + MessageFormat.format(plugin.getLang("inactive.0"), inactive));
if (arg.length == 1 && !targetCp.equals(myCp)) {
String killType = ChatColor.GRAY + plugin.getLang("neutral");
if (targetClan == null) {
killType = ChatColor.DARK_GRAY + plugin.getLang("civilian");
} else if (myClan != null && myClan.isRival(targetClan.getTag())) {
killType = ChatColor.WHITE + plugin.getLang("rival");
}
ChatBlock.sendMessage(player, " " + subColor + MessageFormat.format(plugin.getLang("kill.type.0"), killType));
}
ChatBlock.sendBlank(player);
} else {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("no.player.data.found"));
if (arg.length == 1 && myClan != null) {
ChatBlock.sendBlank(player);
ChatBlock.sendMessage(player, MessageFormat.format(plugin.getLang("kill.type.civilian"), ChatColor.DARK_GRAY));
}
}
}
}
@@ -1,6 +1,7 @@
package net.sacredlabyrinth.phaed.simpleclans.commands;
import net.sacredlabyrinth.phaed.simpleclans.*;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@@ -25,7 +26,7 @@ public class MenuCommand {
*/
public void execute(Player player) {
SimpleClans plugin = SimpleClans.getInstance();
String headColor = plugin.getSettingsManager().getPageHeadingsColor();
String subColor = plugin.getSettingsManager().getPageSubTitleColor();
@@ -33,13 +34,14 @@ public class MenuCommand {
Clan clan = cp == null ? null : cp.getClan();
boolean isLeader = cp != null && cp.isLeader();
boolean isTrusted = cp != null && cp.isTrusted();
boolean isVerified = clan != null && clan.isVerified();
boolean isNonVerified = clan != null && !clan.isVerified();
String clanCommand = plugin.getSettingsManager().getCommandClan();
ChatBlock chatBlock = new ChatBlock();
chatBlock.setCropRight(false);
chatBlock.setPadRight(false);
if (clan == null && plugin.getPermissionsManager().has(player, "simpleclans.leader.create")) {
if (plugin.getSettingsManager().isePurchaseCreation()) {
@@ -48,6 +50,10 @@ public class MenuCommand {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(plugin.getLang("0.create.tag.name.1.create.a.new.clan"), clanCommand, ChatColor.WHITE));
}
}
if (clan != null && plugin.getPermissionsManager().has(player, "simpleclans.member.chat")) {
String chatCommand = plugin.getSettingsManager().isTagBasedClanChat() ? clan.getTag() : plugin.getSettingsManager().getCommandClanChat();
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(plugin.getLang("0.message.1.send.a.message.to.clan.chat"), chatCommand, ChatColor.WHITE));
}
if (isNonVerified && plugin.getSettingsManager().isRequireVerification() && plugin.getSettingsManager().isePurchaseVerification()) {
chatBlock.addRow(ChatColor.DARK_RED + " " + MessageFormat.format(plugin.getLang("0.verify.1.purchase.verification.of.your.clan"), clanCommand, ChatColor.WHITE));
}
@@ -81,40 +87,49 @@ public class MenuCommand {
if (plugin.getPermissionsManager().has(player, "simpleclans.anyone.roster")) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(plugin.getLang("0.roster.tag.1.view.a.clan.s.member.list"), clanCommand, ChatColor.WHITE));
}
if (isVerified && isTrusted && plugin.getPermissionsManager().has(player, "simpleclans.member.vitals")) {
if (isVerified && plugin.getPermissionsManager().has(player, RankPermission.VITALS, PermissionLevel.TRUSTED, false)) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(plugin.getLang("0.vitals.1.view.your.clan.member.s.vitals"), clanCommand, ChatColor.WHITE));
}
if (isVerified && isTrusted && plugin.getPermissionsManager().has(player, "simpleclans.member.coords")) {
if (isVerified && plugin.getPermissionsManager().has(player, RankPermission.COORDS, PermissionLevel.TRUSTED, false)) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(plugin.getLang("0.coords.1.view.your.clan.member.s.coordinates"), clanCommand, ChatColor.WHITE));
}
if (isVerified && isTrusted && plugin.getPermissionsManager().has(player, "simpleclans.member.stats")) {
if (isVerified && plugin.getPermissionsManager().has(player, RankPermission.STATS, PermissionLevel.TRUSTED, false)) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(plugin.getLang("0.stats.1.view.your.clan.member.s.stats"), clanCommand, ChatColor.WHITE));
}
if (isVerified && isTrusted && plugin.getPermissionsManager().has(player, "simpleclans.member.kills")) {
if (isVerified && plugin.getPermissionsManager().has(player, RankPermission.KILLS, PermissionLevel.TRUSTED, false)) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(plugin.getLang("0.kills"), clanCommand, ChatColor.WHITE));
}
if (isVerified && isTrusted && plugin.getPermissionsManager().has(player, "simpleclans.member.kills")) {
if (isVerified && plugin.getPermissionsManager().has(player, RankPermission.KILLS, PermissionLevel.TRUSTED, false)) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(plugin.getLang("0.killsplayer"), clanCommand, ChatColor.WHITE));
}
if (isVerified && isLeader && plugin.getPermissionsManager().has(player, "simpleclans.leader.ally")) {
if (plugin.getSettingsManager().isMemberFee() && isVerified && plugin.getPermissionsManager().has(player, "simpleclans.member.fee-check")) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(plugin.getLang("0.fee.check"), clanCommand, ChatColor.WHITE));
}
if (plugin.getSettingsManager().isMemberFee() && isVerified && plugin.getPermissionsManager().has(player, RankPermission.FEE_SET, PermissionLevel.LEADER, false)) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(plugin.getLang("0.fee.set"), clanCommand, ChatColor.WHITE));
}
if (isVerified && (plugin.getPermissionsManager().has(player, RankPermission.ALLY_ADD, PermissionLevel.LEADER, false)
|| plugin.getPermissionsManager().has(player, RankPermission.ALLY_REMOVE, PermissionLevel.LEADER, false))) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(plugin.getLang("0.ally.add.remove.tag.1.add.remove.an.ally.clan"), clanCommand, ChatColor.WHITE));
}
if (isVerified && isLeader && plugin.getPermissionsManager().has(player, "simpleclans.leader.rival")) {
if (isVerified && (plugin.getPermissionsManager().has(player, RankPermission.RIVAL_ADD, PermissionLevel.LEADER, false)
|| plugin.getPermissionsManager().has(player, RankPermission.RIVAL_REMOVE, PermissionLevel.LEADER, false))) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(plugin.getLang("0.rival.add.remove.tag.1.add.remove.a.rival.clan"), clanCommand, ChatColor.WHITE));
}
if (isVerified && plugin.getPermissionsManager().has(player, "simpleclans.member.home")) {
if (isVerified && plugin.getPermissionsManager().has(player, RankPermission.HOME_TP, PermissionLevel.TRUSTED, false)) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(plugin.getLang("home-menu"), clanCommand, ChatColor.WHITE));
}
if (isVerified && isLeader && plugin.getPermissionsManager().has(player, "simpleclans.leader.home-set")) {
if (isVerified && plugin.getPermissionsManager().has(player, RankPermission.HOME_SET, PermissionLevel.LEADER, false)) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(plugin.getLang("home-set-menu"), clanCommand, ChatColor.WHITE));
}
if (isVerified && isLeader && plugin.getPermissionsManager().has(player, "simpleclans.leader.home-set")) {
if (isVerified && plugin.getPermissionsManager().has(player, RankPermission.HOME_SET, PermissionLevel.LEADER, false)) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(plugin.getLang("home-clear-menu"), clanCommand, ChatColor.WHITE));
}
if (isVerified && isLeader && plugin.getPermissionsManager().has(player, "simpleclans.leader.home-regroup")) {
if (isVerified && plugin.getPermissionsManager().has(player, RankPermission.HOME_REGROUP, PermissionLevel.LEADER, false)) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(plugin.getLang("home-regroup-menu"), clanCommand, ChatColor.WHITE));
}
if (isVerified && isLeader && plugin.getPermissionsManager().has(player, "simpleclans.leader.war")) {
if (isVerified && (plugin.getPermissionsManager().has(player, RankPermission.WAR_END, PermissionLevel.LEADER, false)
|| plugin.getPermissionsManager().has(player, RankPermission.WAR_START, PermissionLevel.LEADER, false))) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(plugin.getLang("0.war"), clanCommand, ChatColor.WHITE));
}
if (plugin.getPermissionsManager().has(player, "simpleclans.member.resetkdr")) {
@@ -123,42 +138,76 @@ public class MenuCommand {
if (isVerified && plugin.getPermissionsManager().has(player, "simpleclans.member.bb")) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(plugin.getLang("0.bb.1.display.bulletin.board"), clanCommand, ChatColor.WHITE));
}
if (isVerified && isTrusted && plugin.getPermissionsManager().has(player, "simpleclans.member.bb-add")) {
if (isVerified && plugin.getPermissionsManager().has(player, RankPermission.BB_ADD, PermissionLevel.TRUSTED, false)) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(plugin.getLang("0.bb.msg.1.add.a.message.to.the.bulletin.board"), clanCommand, ChatColor.WHITE));
}
if (isVerified && isLeader && plugin.getPermissionsManager().has(player, "simpleclans.leader.modtag")) {
if (isVerified && plugin.getPermissionsManager().has(player, RankPermission.MODTAG, PermissionLevel.LEADER, false)) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(plugin.getLang("0.modtag.tag.1.modify.the.clan.s.tag"), clanCommand, ChatColor.WHITE));
}
if (isVerified && plugin.getPermissionsManager().has(player, RankPermission.DESCRIPTION, PermissionLevel.LEADER, false)) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(plugin.getLang("0.description.description.1.modify.the.clan.s.description"), clanCommand, ChatColor.WHITE));
}
String toggles = "";
if (isVerified && isTrusted && plugin.getPermissionsManager().has(player, "simpleclans.member.bb-toggle")) {
if (isVerified && plugin.getPermissionsManager().has(player, "simpleclans.member.bb-toggle")) {
toggles += "bb/";
}
if (isVerified && isTrusted && plugin.getPermissionsManager().has(player, "simpleclans.member.tag-toggle")) {
if (isVerified && plugin.getPermissionsManager().has(player, "simpleclans.member.tag-toggle")) {
toggles += "tag/";
}
if (plugin.getSettingsManager().isMemberFee() && isVerified && plugin.getPermissionsManager().has(player, RankPermission.FEE_ENABLE, PermissionLevel.LEADER, false)) {
toggles += "fee/";
}
if (!toggles.isEmpty()) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(plugin.getLang("0.toggle.command"), clanCommand, ChatColor.WHITE, Helper.stripTrailing(toggles, "/")));
}
if (isLeader && plugin.getPermissionsManager().has(player, "simpleclans.leader.invite")) {
if (plugin.getPermissionsManager().has(player, RankPermission.INVITE, PermissionLevel.LEADER, false)) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(plugin.getLang("0.invite.player.1.invite.a.player"), clanCommand, ChatColor.WHITE));
}
if (isLeader && plugin.getPermissionsManager().has(player, "simpleclans.leader.kick")) {
if (plugin.getPermissionsManager().has(player, RankPermission.KICK, PermissionLevel.LEADER, false)) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(plugin.getLang("0.kick.player.1.kick.a.player.from.the.clan"), clanCommand, ChatColor.WHITE));
}
if (isVerified && isLeader && plugin.getPermissionsManager().has(player, "simpleclans.leader.setrank")) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(plugin.getLang("0.trust.setrank"), clanCommand, ChatColor.WHITE));
}
if (isVerified && isLeader && plugin.getPermissionsManager().has(player, "simpleclans.leader.settrust")) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(plugin.getLang("0.trust.untrust.player.1.set.trust.level1"), clanCommand, ChatColor.WHITE));
}
if (isVerified && isLeader && plugin.getPermissionsManager().has(player, "simpleclans.leader.settrust")) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(plugin.getLang("0.trust.untrust.player.1.set.trust.level2"), clanCommand, ChatColor.WHITE));
}
if (isVerified && isLeader && plugin.getPermissionsManager().has(player, "simpleclans.leader.rank.create")) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(plugin.getLang("0.rank.create.rank.1.create.rank"), clanCommand, ChatColor.WHITE));
}
if (isVerified && isLeader && plugin.getPermissionsManager().has(player, "simpleclans.leader.rank.assign")) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(plugin.getLang("0.rank.assign.player.rank.1.assign.rank.to.player"), clanCommand, ChatColor.WHITE));
}
if (isVerified && isLeader && plugin.getPermissionsManager().has(player, "simpleclans.leader.rank.unassign")) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(plugin.getLang("0.rank.unassign.player.1.unassign.player.from.rank"), clanCommand, ChatColor.WHITE));
}
if (isVerified && isLeader && plugin.getPermissionsManager().has(player, "simpleclans.leader.rank.delete")) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(plugin.getLang("0.rank.delete.rank.1.delete.rank"), clanCommand, ChatColor.WHITE));
}
if (isVerified && plugin.getPermissionsManager().has(player, RankPermission.RANK_LIST, PermissionLevel.LEADER, false)) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(plugin.getLang("0.rank.list.1.list.ranks"), clanCommand, ChatColor.WHITE));
}
if (isVerified && plugin.getPermissionsManager().has(player, RankPermission.RANK_DISPLAYNAME, PermissionLevel.LEADER, false)) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(plugin.getLang("0.rank.setdisplayname.rank.displayname.1.set.rank.displayname"), clanCommand, ChatColor.WHITE));
}
if (isVerified && isLeader && plugin.getPermissionsManager().has(player, "simpleclans.leader.rank.permissions.available")) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(plugin.getLang("0.rank.permissions.1.list.available.permissions"), clanCommand, ChatColor.WHITE));
}
if (isVerified && isLeader && plugin.getPermissionsManager().has(player, "simpleclans.leader.rank.permissions.list")) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(plugin.getLang("0.rank.permissions.rank.1.list.rank.permissions"), clanCommand, ChatColor.WHITE));
}
if (isVerified && isLeader && plugin.getPermissionsManager().has(player, "simpleclans.leader.rank.permissions.add")) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(plugin.getLang("0.rank.permissions.rank.add.permission.1.add.a.permission.to.rank"), clanCommand, ChatColor.WHITE));
}
if (isVerified && isLeader && plugin.getPermissionsManager().has(player, "simpleclans.leader.rank.permissions.remove")) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(plugin.getLang("0.rank.permissions.rank.remove.permission.1.remove.a.permission.from.rank"), clanCommand, ChatColor.WHITE));
}
if (isLeader && plugin.getPermissionsManager().has(player, "simpleclans.leader.promote")) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(plugin.getLang("0.promote.member.1.promote.a.member.to.leader"), clanCommand, ChatColor.WHITE));
}
@@ -188,7 +237,7 @@ public class MenuCommand {
if (plugin.getPermissionsManager().has(player, "simpleclans.mod.place")) {
chatBlock.addRow(ChatColor.DARK_RED + " " + MessageFormat.format(plugin.getLang("0.place"), clanCommand, ChatColor.WHITE));
}
if (isVerified && isTrusted && plugin.getPermissionsManager().has(player, "simpleclans.mod.mostkilled")) {
if (isVerified && plugin.getPermissionsManager().has(player, RankPermission.MOSTKILLED, PermissionLevel.TRUSTED, false)) {
chatBlock.addRow(ChatColor.DARK_RED + " " + MessageFormat.format(plugin.getLang("0.mostkilled"), clanCommand, ChatColor.WHITE));
}
if (plugin.getPermissionsManager().has(player, "simpleclans.mod.disband")) {
@@ -203,6 +252,12 @@ public class MenuCommand {
if (plugin.getPermissionsManager().has(player, "simpleclans.mod.globalff")) {
chatBlock.addRow(ChatColor.DARK_RED + " " + MessageFormat.format(plugin.getLang("0.globalff.allow.auto.1.set.global.friendly.fire"), clanCommand, ChatColor.WHITE));
}
if (plugin.getPermissionsManager().has(player, "simpleclans.admin.demote")) {
chatBlock.addRow(ChatColor.DARK_RED + " " + MessageFormat.format(plugin.getLang("0.demote.leader.1.demote.a.leader.to.member"), clanCommand, ChatColor.WHITE));
}
if (plugin.getPermissionsManager().has(player, "simpleclans.admin.purge")) {
chatBlock.addRow(ChatColor.DARK_RED + " " + MessageFormat.format(plugin.getLang("0.purge.player.1.purge.a.player"), clanCommand, ChatColor.WHITE));
}
if (plugin.getPermissionsManager().has(player, "simpleclans.admin.resetkdr")) {
chatBlock.addRow(ChatColor.DARK_RED + " " + MessageFormat.format(plugin.getLang("0.resetkdr.1.resets.kdr"), clanCommand, ChatColor.WHITE));
}
@@ -244,6 +299,7 @@ public class MenuCommand {
ChatBlock chatBlock = new ChatBlock();
chatBlock.addRow(ChatColor.DARK_RED + " " + MessageFormat.format(plugin.getLang("0.purge.player.1.purge.a.player"), clanCommand, ChatColor.WHITE));
chatBlock.addRow(ChatColor.DARK_RED + " " + MessageFormat.format(plugin.getLang("0.verify.tag.1.verify.an.unverified.clan"), clanCommand, ChatColor.WHITE));
chatBlock.addRow(ChatColor.DARK_RED + " " + MessageFormat.format(plugin.getLang("0.reload.1.reload.configuration"), clanCommand, ChatColor.WHITE));
@@ -4,6 +4,8 @@ import net.sacredlabyrinth.phaed.simpleclans.ChatBlock;
import net.sacredlabyrinth.phaed.simpleclans.Clan;
import net.sacredlabyrinth.phaed.simpleclans.ClanPlayer;
import net.sacredlabyrinth.phaed.simpleclans.Helper;
import net.sacredlabyrinth.phaed.simpleclans.PermissionLevel;
import net.sacredlabyrinth.phaed.simpleclans.RankPermission;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
@@ -44,10 +46,10 @@ public class ModtagCommand {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("clan.is.not.verified"));
return;
}
if (!clan.isLeader(player)) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("no.leader.permissions"));
return;
if (!plugin.getPermissionsManager().has(player, RankPermission.MODTAG, PermissionLevel.LEADER, true)) {
return;
}
if (arg.length != 1) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(plugin.getLang("usage.0.modtag.tag"), plugin.getSettingsManager().getCommandClan()));
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("example.clan.modtag.4kfo.4l"));
@@ -1,93 +1,105 @@
package net.sacredlabyrinth.phaed.simpleclans.commands;
import net.sacredlabyrinth.phaed.simpleclans.*;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import java.text.MessageFormat;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
public class MostKilledCommand {
public MostKilledCommand() {
}
/**
* Execute the command
*
* @param player
* @param arg
*/
public void execute(Player player, String[] arg) {
SimpleClans plugin = SimpleClans.getInstance();
String headColor = plugin.getSettingsManager().getPageHeadingsColor();
String subColor = plugin.getSettingsManager().getPageSubTitleColor();
if (!plugin.getPermissionsManager().has(player, "simpleclans.mod.mostkilled")) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("insufficient.permissions"));
return;
}
ClanPlayer cp = plugin.getClanManager().getClanPlayer(player);
if (cp == null) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("not.a.member.of.any.clan"));
return;
}
Clan clan = cp.getClan();
if (!clan.isVerified()) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("clan.is.not.verified"));
return;
}
if (!cp.isTrusted()) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("only.trusted.players.can.access.clan.stats"));
return;
}
ChatBlock chatBlock = new ChatBlock();
chatBlock.setFlexibility(true, false, false);
chatBlock.setAlignment("l", "c", "l");
chatBlock.addRow(" " + headColor + plugin.getLang("victim"), headColor + plugin.getLang("killcount"), headColor + plugin.getLang("attacker"));
Map<String, Integer> killsPerPlayerUnordered = plugin.getStorageManager().getMostKilled();
if (killsPerPlayerUnordered.isEmpty()) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("nokillsfound"));
return;
}
Map<String, Integer> killsPerPlayer = Helper.sortByValue(killsPerPlayerUnordered);
for (Entry<String, Integer> attackerVictim : killsPerPlayer.entrySet()) {
String[] split = attackerVictim.getKey().split(" ");
if (split.length < 2) {
continue;
}
int count = attackerVictim.getValue();
String attacker = split[0];
String victim = split[1];
chatBlock.addRow(" " + ChatColor.WHITE + victim, ChatColor.AQUA + "" + count, ChatColor.YELLOW + attacker);
}
ChatBlock.saySingle(player, plugin.getSettingsManager().getServerName() + subColor + " " + plugin.getLang("mostkilled") + " " + headColor + Helper.generatePageSeparator(plugin.getSettingsManager().getPageSep()));
ChatBlock.sendBlank(player);
boolean more = chatBlock.sendBlock(player, plugin.getSettingsManager().getPageSize());
if (more) {
plugin.getStorageManager().addChatBlock(player, chatBlock);
ChatBlock.sendBlank(player);
ChatBlock.sendMessage(player, headColor + MessageFormat.format(plugin.getLang("view.next.page"), plugin.getSettingsManager().getCommandMore()));
}
ChatBlock.sendBlank(player);
}
}
package net.sacredlabyrinth.phaed.simpleclans.commands;
import net.sacredlabyrinth.phaed.simpleclans.*;
import net.sacredlabyrinth.phaed.simpleclans.managers.StorageManager.DataCallback;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitRunnable;
import java.text.MessageFormat;
import java.util.Collections;
import java.util.Map;
import java.util.Map.Entry;
public class MostKilledCommand {
public MostKilledCommand() {
}
/**
* Execute the command
*
* @param player
* @param arg
*/
public void execute(Player player, String[] arg) {
SimpleClans plugin = SimpleClans.getInstance();
String headColor = plugin.getSettingsManager().getPageHeadingsColor();
String subColor = plugin.getSettingsManager().getPageSubTitleColor();
if (!plugin.getPermissionsManager().has(player, "simpleclans.mod.mostkilled")) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("insufficient.permissions"));
return;
}
ClanPlayer cp = plugin.getClanManager().getClanPlayer(player);
if (cp == null) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("not.a.member.of.any.clan"));
return;
}
Clan clan = cp.getClan();
if (!clan.isVerified()) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("clan.is.not.verified"));
return;
}
if (!plugin.getPermissionsManager().has(player, RankPermission.MOSTKILLED, PermissionLevel.TRUSTED, true)) {
return;
}
plugin.getStorageManager().getMostKilled(new DataCallback<Map<String, Integer>>() {
@Override
public void onResultReady(Map<String, Integer> data) {
new BukkitRunnable() {
@Override
public void run() {
ChatBlock chatBlock = new ChatBlock();
chatBlock.setFlexibility(true, false, false);
chatBlock.setAlignment("l", "c", "l");
chatBlock.addRow(" " + headColor + plugin.getLang("victim"), headColor + plugin.getLang("killcount"), headColor + plugin.getLang("attacker"));
if (data.isEmpty()) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("nokillsfound"));
return;
}
Map<String, Integer> killsPerPlayer = Helper.sortByValue(data);
for (Entry<String, Integer> attackerVictim : killsPerPlayer.entrySet()) {
String[] split = attackerVictim.getKey().split(" ");
if (split.length < 2) {
continue;
}
int count = attackerVictim.getValue();
String attacker = split[0];
String victim = split[1];
chatBlock.addRow(" " + ChatColor.WHITE + victim, ChatColor.AQUA + "" + count, ChatColor.YELLOW + attacker);
}
ChatBlock.saySingle(player, plugin.getSettingsManager().getServerName() + subColor + " " + plugin.getLang("mostkilled") + " " + headColor + Helper.generatePageSeparator(plugin.getSettingsManager().getPageSep()));
ChatBlock.sendBlank(player);
boolean more = chatBlock.sendBlock(player, plugin.getSettingsManager().getPageSize());
if (more) {
plugin.getStorageManager().addChatBlock(player, chatBlock);
ChatBlock.sendBlank(player);
ChatBlock.sendMessage(player, headColor + MessageFormat.format(plugin.getLang("view.next.page"), plugin.getSettingsManager().getCommandMore()));
}
ChatBlock.sendBlank(player);
}
}.runTask(plugin);
}
});
}
}
@@ -58,13 +58,8 @@ public class PlaceCommand {
oldClan.clanAnnounce(player.getName(), ChatColor.AQUA + MessageFormat.format(plugin.getLang("clan.has.been.disbanded"), oldClan.getName()));
oldClan.disband();
} else {
oldClan.addBb(player.getName(), ChatColor.AQUA + MessageFormat.format(plugin.getLang("0.has.resigned"), Helper.capitalize(player.getName())));
if (SimpleClans.getInstance().hasUUID()) {
oldClan.removePlayerFromClan(player.getUniqueId());
} else {
oldClan.removePlayerFromClan(player.getName());
}
oldClan.addBb(player.getName(), ChatColor.AQUA + MessageFormat.format(plugin.getLang("0.has.resigned"), player.getName()));
oldClan.removePlayerFromClan(player.getUniqueId());
}
}
@@ -1,101 +1,106 @@
package net.sacredlabyrinth.phaed.simpleclans.commands;
import net.sacredlabyrinth.phaed.simpleclans.*;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import java.text.DecimalFormat;
import java.text.MessageFormat;
import java.text.NumberFormat;
/**
* @author phaed
*/
public class ProfileCommand {
public ProfileCommand() {
}
/**
* Execute the command
*
* @param player
* @param arg
*/
public void execute(Player player, String[] arg) {
SimpleClans plugin = SimpleClans.getInstance();
String headColor = plugin.getSettingsManager().getPageHeadingsColor();
String subColor = plugin.getSettingsManager().getPageSubTitleColor();
NumberFormat formatter = new DecimalFormat("#.#");
Clan clan = null;
if (arg.length == 0) {
if (plugin.getPermissionsManager().has(player, "simpleclans.member.profile")) {
ClanPlayer cp = plugin.getClanManager().getClanPlayer(player);
if (cp == null) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("not.a.member.of.any.clan"));
} else {
if (cp.getClan().isVerified()) {
clan = cp.getClan();
} else {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("clan.is.not.verified"));
}
}
} else {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("insufficient.permissions"));
}
} else if (arg.length == 1) {
if (plugin.getPermissionsManager().has(player, "simpleclans.anyone.profile")) {
clan = plugin.getClanManager().getClan(arg[0]);
if (clan == null) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("no.clan.matched"));
}
} else {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("insufficient.permissions"));
}
} else {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(plugin.getLang("usage.0.profile.tag"), plugin.getSettingsManager().getCommandClan()));
}
if (clan != null) {
if (clan.isVerified()) {
ChatBlock.sendBlank(player);
ChatBlock.saySingle(player, plugin.getSettingsManager().getPageClanNameColor() + Helper.capitalize(clan.getName()) + subColor + " " + plugin.getLang("profile") + " " + headColor + Helper.generatePageSeparator(plugin.getSettingsManager().getPageSep()));
ChatBlock.sendBlank(player);
String name = plugin.getSettingsManager().getClanChatBracketColor() + plugin.getSettingsManager().getClanChatTagBracketLeft() + plugin.getSettingsManager().getTagDefaultColor() + clan.getColorTag() + plugin.getSettingsManager().getClanChatBracketColor() + plugin.getSettingsManager().getClanChatTagBracketRight() + " " + plugin.getSettingsManager().getPageClanNameColor() + clan.getName();
String leaders = clan.getLeadersString(plugin.getSettingsManager().getPageLeaderColor(), subColor + ", ");
String onlineCount = ChatColor.WHITE + "" + Helper.stripOffLinePlayers(clan.getMembers()).size();
String membersOnline = onlineCount + subColor + "/" + ChatColor.WHITE + clan.getSize();
String inactive = ChatColor.WHITE + "" + clan.getInactiveDays() + subColor + "/" + ChatColor.WHITE + (clan.isVerified() ? plugin.getSettingsManager().getPurgeClan() : plugin.getSettingsManager().getPurgeUnverified()) + " " + plugin.getLang("days");
String founded = ChatColor.WHITE + "" + clan.getFoundedString();
String allies = ChatColor.WHITE + "" + clan.getAllyString(subColor + ", ");
String rivals = ChatColor.WHITE + "" + clan.getRivalString(subColor + ", ");
String kdr = ChatColor.YELLOW + "" + formatter.format(clan.getTotalKDR());
String deaths = ChatColor.WHITE + "" + clan.getTotalDeaths();
String rival = ChatColor.WHITE + "" + clan.getTotalRival();
String neutral = ChatColor.WHITE + "" + clan.getTotalNeutral();
String civ = ChatColor.WHITE + "" + clan.getTotalCivilian();
String status = ChatColor.WHITE + "" + (clan.isVerified() ? plugin.getSettingsManager().getPageTrustedColor() + plugin.getLang("verified") : plugin.getSettingsManager().getPageUnTrustedColor() + plugin.getLang("unverified"));
ChatBlock.sendMessage(player, " " + subColor + MessageFormat.format(plugin.getLang("name.0"), name));
ChatBlock.sendMessage(player, " " + subColor + MessageFormat.format(plugin.getLang("status.0"), status));
ChatBlock.sendMessage(player, " " + subColor + MessageFormat.format(plugin.getLang("leaders.0"), leaders));
ChatBlock.sendMessage(player, " " + subColor + MessageFormat.format(plugin.getLang("members.online.0"), membersOnline));
ChatBlock.sendMessage(player, " " + subColor + MessageFormat.format(plugin.getLang("kdr.0"), kdr));
ChatBlock.sendMessage(player, " " + subColor + plugin.getLang("kill.totals") + " " + headColor + "[" + plugin.getLang("rival") + ":" + rival + " " + headColor + "" + plugin.getLang("neutral") + ":" + neutral + " " + headColor + "" + plugin.getLang("civilian") + ":" + civ + headColor + "]");
ChatBlock.sendMessage(player, " " + subColor + MessageFormat.format(plugin.getLang("deaths.0"), deaths));
ChatBlock.sendMessage(player, " " + subColor + MessageFormat.format(plugin.getLang("allies.0"), allies));
ChatBlock.sendMessage(player, " " + subColor + MessageFormat.format(plugin.getLang("rivals.0"), rivals));
ChatBlock.sendMessage(player, " " + subColor + MessageFormat.format(plugin.getLang("founded.0"), founded));
ChatBlock.sendMessage(player, " " + subColor + MessageFormat.format(plugin.getLang("inactive.0"), inactive));
ChatBlock.sendBlank(player);
} else {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("clan.is.not.verified"));
}
}
}
}
package net.sacredlabyrinth.phaed.simpleclans.commands;
import net.sacredlabyrinth.phaed.simpleclans.*;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import java.text.DecimalFormat;
import java.text.MessageFormat;
import java.text.NumberFormat;
/**
* @author phaed
*/
public class ProfileCommand {
public ProfileCommand() {
}
/**
* Execute the command
*
* @param player
* @param arg
*/
public void execute(Player player, String[] arg) {
SimpleClans plugin = SimpleClans.getInstance();
String headColor = plugin.getSettingsManager().getPageHeadingsColor();
String subColor = plugin.getSettingsManager().getPageSubTitleColor();
NumberFormat formatter = new DecimalFormat("#.#");
Clan clan = null;
if (arg.length == 0) {
if (plugin.getPermissionsManager().has(player, "simpleclans.member.profile")) {
ClanPlayer cp = plugin.getClanManager().getClanPlayer(player);
if (cp == null) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("not.a.member.of.any.clan"));
} else {
if (cp.getClan().isVerified()) {
clan = cp.getClan();
} else {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("clan.is.not.verified"));
}
}
} else {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("insufficient.permissions"));
}
} else if (arg.length == 1) {
if (plugin.getPermissionsManager().has(player, "simpleclans.anyone.profile")) {
clan = plugin.getClanManager().getClan(arg[0]);
if (clan == null) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("no.clan.matched"));
}
} else {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("insufficient.permissions"));
}
} else {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(plugin.getLang("usage.0.profile.tag"), plugin.getSettingsManager().getCommandClan()));
}
if (clan != null) {
if (clan.isVerified()) {
ChatBlock.sendBlank(player);
ChatBlock.saySingle(player, plugin.getSettingsManager().getPageClanNameColor() + clan.getName() + subColor + " " + plugin.getLang("profile") + " " + headColor + Helper.generatePageSeparator(plugin.getSettingsManager().getPageSep()));
ChatBlock.sendBlank(player);
String name = plugin.getSettingsManager().getClanChatBracketColor() + plugin.getSettingsManager().getClanChatTagBracketLeft() + plugin.getSettingsManager().getTagDefaultColor() + clan.getColorTag() + plugin.getSettingsManager().getClanChatBracketColor() + plugin.getSettingsManager().getClanChatTagBracketRight() + " " + plugin.getSettingsManager().getPageClanNameColor() + clan.getName();
String description = ChatColor.WHITE + (clan.getDescription() != null && !clan.getDescription().isEmpty() ? clan.getDescription() : plugin.getLang("no.description"));
String leaders = clan.getLeadersString(plugin.getSettingsManager().getPageLeaderColor(), subColor + ", ");
String onlineCount = ChatColor.WHITE + "" + Helper.stripOffLinePlayers(clan.getMembers()).size();
String membersOnline = onlineCount + subColor + "/" + ChatColor.WHITE + clan.getSize();
String inactive = ChatColor.WHITE + "" + clan.getInactiveDays() + subColor + "/" + ChatColor.WHITE + (clan.isVerified() ? plugin.getSettingsManager().getPurgeClan() : plugin.getSettingsManager().getPurgeUnverified()) + " " + plugin.getLang("days");
String founded = ChatColor.WHITE + "" + clan.getFoundedString();
String allies = ChatColor.WHITE + "" + clan.getAllyString(subColor + ", ");
String rivals = ChatColor.WHITE + "" + clan.getRivalString(subColor + ", ");
String kdr = ChatColor.YELLOW + "" + formatter.format(clan.getTotalKDR());
String deaths = ChatColor.WHITE + "" + clan.getTotalDeaths();
String rival = ChatColor.WHITE + "" + clan.getTotalRival();
String neutral = ChatColor.WHITE + "" + clan.getTotalNeutral();
String civ = ChatColor.WHITE + "" + clan.getTotalCivilian();
String status = ChatColor.WHITE + "" + (clan.isVerified() ? plugin.getSettingsManager().getPageTrustedColor() + plugin.getLang("verified") : plugin.getSettingsManager().getPageUnTrustedColor() + plugin.getLang("unverified"));
String feeEnabled = ChatColor.WHITE + (clan.isMemberFeeEnabled() ? plugin.getLang("fee.enabled") : plugin.getLang("fee.disabled"));
String feeValue = ChatColor.WHITE + "" + clan.getMemberFee();
ChatBlock.sendMessage(player, " " + subColor + MessageFormat.format(plugin.getLang("name.0"), name));
ChatBlock.sendMessage(player, " " + subColor + MessageFormat.format(plugin.getLang("description.0"), description));
ChatBlock.sendMessage(player, " " + subColor + MessageFormat.format(plugin.getLang("status.0"), status));
ChatBlock.sendMessage(player, " " + subColor + MessageFormat.format(plugin.getLang("leaders.0"), leaders));
ChatBlock.sendMessage(player, " " + subColor + MessageFormat.format(plugin.getLang("members.online.0"), membersOnline));
ChatBlock.sendMessage(player, " " + subColor + MessageFormat.format(plugin.getLang("kdr.0"), kdr));
ChatBlock.sendMessage(player, " " + subColor + plugin.getLang("kill.totals") + " " + headColor + "[" + plugin.getLang("rival") + ":" + rival + " " + headColor + "" + plugin.getLang("neutral") + ":" + neutral + " " + headColor + "" + plugin.getLang("civilian") + ":" + civ + headColor + "]");
ChatBlock.sendMessage(player, " " + subColor + MessageFormat.format(plugin.getLang("deaths.0"), deaths));
ChatBlock.sendMessage(player, " " + subColor + MessageFormat.format(plugin.getLang("fee.0.value.1"), feeEnabled, feeValue));
ChatBlock.sendMessage(player, " " + subColor + MessageFormat.format(plugin.getLang("allies.0"), allies));
ChatBlock.sendMessage(player, " " + subColor + MessageFormat.format(plugin.getLang("rivals.0"), rivals));
ChatBlock.sendMessage(player, " " + subColor + MessageFormat.format(plugin.getLang("founded.0"), founded));
ChatBlock.sendMessage(player, " " + subColor + MessageFormat.format(plugin.getLang("inactive.0"), inactive));
ChatBlock.sendBlank(player);
} else {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("clan.is.not.verified"));
}
}
}
}
@@ -1,7 +1,6 @@
package net.sacredlabyrinth.phaed.simpleclans.commands;
import net.sacredlabyrinth.phaed.simpleclans.*;
import net.sacredlabyrinth.phaed.simpleclans.uuid.UUIDMigration;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
@@ -64,17 +63,20 @@ public class PromoteCommand {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("the.player.is.not.a.member.of.your.clan"));
return;
}
if (clan.isLeader(promoted) && plugin.getSettingsManager().isConfirmationForPromote()) {
if (clan.isLeader(promoted)) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("the.player.is.already.a.leader"));
return;
}
clan.addBb(player.getName(), ChatColor.AQUA + MessageFormat.format(plugin.getLang("promoted.to.leader"), Helper.capitalize(promoted.getName())));
if (SimpleClans.getInstance().hasUUID()) {
clan.promote(promoted.getUniqueId());
} else {
clan.promote(promoted.getName());
if (plugin.getSettingsManager().isConfirmationForPromote() && clan.getLeaders().size() > 1) {
plugin.getRequestManager().addPromoteRequest(cp, promoted.getName(), clan);
ChatBlock.sendMessage(player,
ChatColor.AQUA + plugin.getLang("promotion.vote.has.been.requested.from.all.leaders"));
return;
}
clan.addBb(player.getName(), ChatColor.AQUA + MessageFormat.format(plugin.getLang("promoted.to.leader"), promoted.getName()));
clan.promote(promoted.getUniqueId());
}
}
@@ -0,0 +1,52 @@
package net.sacredlabyrinth.phaed.simpleclans.commands;
import java.text.MessageFormat;
import java.util.UUID;
import net.sacredlabyrinth.phaed.simpleclans.ChatBlock;
import net.sacredlabyrinth.phaed.simpleclans.ClanPlayer;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
import net.sacredlabyrinth.phaed.simpleclans.uuid.UUIDMigration;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
/**
*
* @author roinujnosde
*/
public class PurgeCommand {
/**
* Executes the command
*
* @param sender
* @param args
*/
public void execute(CommandSender sender, String args[]) {
SimpleClans plugin = SimpleClans.getInstance();
if (sender instanceof Player) {
if (!plugin.getPermissionsManager().has((Player) sender, "simpleclans.admin.purge")) {
ChatBlock.sendMessage(sender, ChatColor.RED + plugin.getLang("insufficient.permissions"));
return;
}
}
if (args.length == 1) {
UUID uuid = UUIDMigration.getForcedPlayerUUID(args[0]);
ClanPlayer cp = plugin.getClanManager().getClanPlayer(uuid);
if (uuid == null || cp == null) {
ChatBlock.sendMessage(sender, ChatColor.RED + plugin.getLang("no.player.matched"));
return;
}
plugin.getClanManager().deleteClanPlayer(cp);
ChatBlock.sendMessage(sender, ChatColor.AQUA + plugin.getLang("player.purged"));
return;
}
ChatBlock.sendMessage(sender, ChatColor.RED
+ MessageFormat.format(plugin.getLang("usage.purge"), plugin.getSettingsManager().getCommandClan()));
}
}
@@ -0,0 +1,308 @@
package net.sacredlabyrinth.phaed.simpleclans.commands;
import java.text.MessageFormat;
import java.util.Comparator;
import java.util.List;
import java.util.Set;
import java.util.UUID;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import net.sacredlabyrinth.phaed.simpleclans.ChatBlock;
import net.sacredlabyrinth.phaed.simpleclans.Clan;
import net.sacredlabyrinth.phaed.simpleclans.ClanPlayer;
import net.sacredlabyrinth.phaed.simpleclans.Helper;
import net.sacredlabyrinth.phaed.simpleclans.RankPermission;
import net.sacredlabyrinth.phaed.simpleclans.Rank;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
import net.sacredlabyrinth.phaed.simpleclans.managers.ClanManager;
import net.sacredlabyrinth.phaed.simpleclans.uuid.UUIDMigration;
/**
*
* @author RoinujNosde
*/
public class RankCommand {
private SimpleClans plugin;
private Player player;
private ClanPlayer clanPlayer;
private Clan clan;
/**
* Execute the command
*
* @param player
* @param arg
*/
public void execute(Player player, String[] args) {
this.player = player;
plugin = SimpleClans.getInstance();
ClanManager clanManager = plugin.getClanManager();
clanPlayer = clanManager.getClanPlayer(player);
if (clanPlayer == null) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("not.a.member.of.any.clan"));
return;
}
clan = clanPlayer.getClan();
if (!clan.isVerified()) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("clan.is.not.verified"));
return;
}
if (!clanPlayer.isLeader()) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("no.leader.permissions"));
return;
}
if (args.length > 0) {
String subCommand = args[0].toLowerCase();
args = Helper.removeFirst(args);
switch (subCommand) {
case "assign":
assignRank(args);
return;
case "unassign":
unassign(args);
return;
case "create":
createRank(args);
return;
case "list":
listRanks();
return;
case "delete":
deleteRank(args);
return;
case "permissions":
permissions(args);
return;
case "setdisplayname":
setDisplayName(args);
return;
}
}
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(plugin.getLang("usage.0.rank"),
plugin.getSettingsManager().getCommandClan()));
return;
}
private void assignRank(String[] args) {
if (!plugin.getPermissionsManager().has(player, "simpleclans.leader.rank.assign")) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("insufficient.permissions"));
return;
}
if (args.length != 2) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(plugin.getLang("usage.0.rank.assign"),
plugin.getSettingsManager().getCommandClan()));
return;
}
UUID uuid = UUIDMigration.getForcedPlayerUUID(args[0]);
if (uuid == null || (!clan.isMember(uuid) && !clan.isLeader(uuid))) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("no.player.matched"));
return;
}
String rank = args[1].toLowerCase();
if (!clan.hasRank(rank)) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("rank.0.does.not.exist"));
return;
}
ClanPlayer cpTarget = plugin.getClanManager().getClanPlayer(uuid);
cpTarget.setRank(rank);
plugin.getStorageManager().updateClanPlayer(cpTarget);
ChatBlock.sendMessage(player, ChatColor.AQUA + plugin.getLang("player.rank.changed"));
}
private void unassign(String[] args) {
if (!plugin.getPermissionsManager().has(player, "simpleclans.leader.rank.unassign")) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("insufficient.permissions"));
return;
}
if (args.length != 1) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(plugin.getLang("usage.0.rank.unassign"),
plugin.getSettingsManager().getCommandClan()));
return;
}
UUID uuid = UUIDMigration.getForcedPlayerUUID(args[0]);
if (uuid == null || (!clan.isMember(uuid) && !clan.isLeader(uuid))) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("no.player.matched"));
return;
}
ClanPlayer cpTarget = plugin.getClanManager().getClanPlayer(uuid);
cpTarget.setRank(null);
plugin.getStorageManager().updateClanPlayer(cpTarget);
ChatBlock.sendMessage(player, ChatColor.AQUA + plugin.getLang("player.unassigned.from.rank"));
}
private void createRank(String[] args) {
if (!plugin.getPermissionsManager().has(player, "simpleclans.leader.rank.create")) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("insufficient.permissions"));
return;
}
if (args.length != 1) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(plugin.getLang("usage.0.rank.create"),
plugin.getSettingsManager().getCommandClan()));
return;
}
String rank = args[0].toLowerCase();
if (clan.hasRank(rank)) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("rank.already.exists"));
return;
}
clan.createRank(rank);
plugin.getStorageManager().updateClan(clan, true);
ChatBlock.sendMessage(player, ChatColor.AQUA + plugin.getLang("rank.created"));
}
private void listRanks() {
if (!plugin.getPermissionsManager().has(player, "simpleclans.leader.rank.list")) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("insufficient.permissions"));
return;
}
List<Rank> ranks = clan.getRanks();
if (ranks.isEmpty()) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("no.ranks"));
return;
}
ranks.sort(Comparator.reverseOrder());
ChatBlock.sendMessage(player, ChatColor.AQUA + plugin.getLang("clans.ranks"));
int count = 1;
for (Rank rank : ranks) {
ChatBlock.sendMessage(player, ChatColor.AQUA + MessageFormat.format(plugin.getLang("ranks.list.item"), count, Helper.parseColors(rank.getDisplayName()) + ChatColor.AQUA, rank.getName()));
count++;
}
}
private void deleteRank(String[] args) {
if (!plugin.getPermissionsManager().has(player, "simpleclans.leader.rank.delete")) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("insufficient.permissions"));
return;
}
if (args.length != 1) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(plugin.getLang("usage.0.rank.delete"),
plugin.getSettingsManager().getCommandClan()));
return;
}
String rank = args[0].toLowerCase();
if (!clan.hasRank(rank)) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("rank.0.does.not.exist"));
return;
}
clan.deleteRank(rank);
plugin.getStorageManager().updateClan(clan, true);
ChatBlock.sendMessage(player, ChatColor.AQUA + MessageFormat.format(plugin.getLang("rank.0.deleted"), rank));
}
private void setDisplayName(String[] args) {
if (!plugin.getPermissionsManager().has(player, "simpleclans.leader.rank.setdisplayname")) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("insufficient.permissions"));
return;
}
if (args.length < 2) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(plugin.getLang("usage.0.rank.setdisplayname"),
plugin.getSettingsManager().getCommandClan()));
return;
}
String rankName = args[0].toLowerCase();
if (!clan.hasRank(rankName)) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(plugin.getLang("rank.0.does.not.exist"), rankName));
return;
}
Rank rank = clan.getRank(rankName);
String dn = Helper.toMessage(Helper.removeFirst(args));
if (dn.contains("&") && !plugin.getPermissionsManager().has(player, "simpleclans.leader.coloredrank")) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("you.cannot.set.colored.ranks"));
return;
}
rank.setDisplayName(dn);
plugin.getStorageManager().updateClan(clan, true);
ChatBlock.sendMessage(player, ChatColor.AQUA + plugin.getLang("rank.displayname.updated"));
}
private void permissions(String[] args) {
String validPermissionsToMessage = Helper.toMessage(Helper.fromPermissionArray(), ",");
if (args.length == 0) {
if (!plugin.getPermissionsManager().has(player, "simpleclans.leader.rank.permissions.available")) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("insufficient.permissions"));
return;
}
ChatBlock.sendMessage(player, ChatColor.AQUA + plugin.getLang("available.rank.permissions"));
ChatBlock.sendMessage(player, ChatColor.AQUA + validPermissionsToMessage);
return;
}
if (args.length > 0) {
String rank = args[0].toLowerCase();
if (!clan.hasRank(rank)) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(plugin.getLang("rank.0.does.not.exist"), rank));
return;
}
Set<String> permissions = clan.getRank(rank).getPermissions();
if (args.length == 1) {
if (!plugin.getPermissionsManager().has(player, "simpleclans.leader.rank.permissions.list")) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("insufficient.permissions"));
return;
}
if (permissions.isEmpty()) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("rank.no.permissions"));
return;
}
ChatBlock.sendMessage(player, ChatColor.AQUA + MessageFormat.format(plugin.getLang("rank.0.permissions"), rank));
ChatBlock.sendMessage(player, ChatColor.AQUA + Helper.toMessage(permissions.toArray(new String[0]), ","));
return;
}
if (args.length == 3) {
String subCommand = args[1].toLowerCase();
String permission = args[2].toLowerCase();
boolean changed = false;
switch (subCommand) {
case "add":
if (!plugin.getPermissionsManager().has(player, "simpleclans.leader.rank.permissions.add")) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("insufficient.permissions"));
return;
}
if (!RankPermission.isValid(permission)) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(plugin.getLang("invalid.permission"), permission, validPermissionsToMessage));
return;
}
permissions.add(permission);
ChatBlock.sendMessage(player, ChatColor.AQUA + MessageFormat.format(plugin.getLang("permission.0.added.to.rank.1"), permission, rank));
changed = true;
break;
case "remove":
if (!plugin.getPermissionsManager().has(player, "simpleclans.leader.rank.permissions.remove")) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("insufficient.permissions"));
return;
}
permissions.remove(permission);
ChatBlock.sendMessage(player, ChatColor.AQUA + MessageFormat.format(plugin.getLang("permission.0.removed.from.rank.1"), permission, rank));
changed = true;
break;
}
if (changed) {
plugin.getStorageManager().updateClan(clan, true);
return;
}
}
}
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(plugin.getLang("usage.0.rank.permissions"),
plugin.getSettingsManager().getCommandClan()));
}
}
@@ -3,6 +3,8 @@ package net.sacredlabyrinth.phaed.simpleclans.commands;
import net.sacredlabyrinth.phaed.simpleclans.ChatBlock;
import net.sacredlabyrinth.phaed.simpleclans.Clan;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
import net.sacredlabyrinth.phaed.simpleclans.language.LanguageResource;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@@ -31,9 +33,11 @@ public class ReloadCommand
ChatBlock.sendMessage(sender, ChatColor.RED + "Does not match a clan command");
return;
}
plugin.getStorageManager().saveModified();
plugin.reloadConfig();
LanguageResource.clearCache();
plugin.getSettingsManager().load();
plugin.getLanguageManager().load();
plugin.getStorageManager().importFromDatabase();
SimpleClans.getInstance().getPermissionsManager().loadPermissions();
@@ -1,10 +1,12 @@
package net.sacredlabyrinth.phaed.simpleclans.commands;
import java.text.MessageFormat;
import java.util.UUID;
import net.sacredlabyrinth.phaed.simpleclans.*;
import org.bukkit.Bukkit;
import net.sacredlabyrinth.phaed.simpleclans.uuid.UUIDMigration;
import org.bukkit.ChatColor;
import org.bukkit.OfflinePlayer;
import org.bukkit.entity.Player;
/**
@@ -52,18 +54,18 @@ public class ResetKDRCommand {
}
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("you.have.reseted.kdr.of.all.players"));
} else {
OfflinePlayer toReset = Bukkit.getOfflinePlayer(arg[0]);
if (toReset == null) {
UUID uuid = UUIDMigration.getForcedPlayerUUID(arg[0]);
if (uuid == null) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("no.player.matched"));
return;
}
ClanPlayer trcp = plugin.getClanManager().getClanPlayer(toReset);
ClanPlayer trcp = plugin.getClanManager().getClanPlayer(uuid);
if (trcp == null) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("no.player.data.found"));
return;
}
plugin.getClanManager().resetKdr(trcp);
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(plugin.getLang("you.have.reseted.0.kdr"), toReset.getName()));
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(plugin.getLang("you.have.reseted.0.kdr"), trcp.getName()));
}
} else {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("insufficient.permissions"));
@@ -1,14 +1,13 @@
package net.sacredlabyrinth.phaed.simpleclans.commands;
import net.sacredlabyrinth.phaed.simpleclans.ChatBlock;
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 org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import java.text.MessageFormat;
import net.sacredlabyrinth.phaed.simpleclans.conversation.ResignPrompt;
import org.bukkit.conversations.ConversationFactory;
/**
* @author phaed
@@ -36,20 +35,11 @@ public class ResignCommand {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("not.a.member.of.any.clan"));
return;
}
Clan clan = cp.getClan();
if (!clan.isLeader(player) || clan.getLeaders().size() > 1) {
clan.addBb(player.getName(), ChatColor.AQUA + MessageFormat.format(plugin.getLang("0.has.resigned"), Helper.capitalize(player.getName())));
if (SimpleClans.getInstance().hasUUID()) {
clan.removePlayerFromClan(player.getUniqueId());
} else {
clan.removePlayerFromClan(player.getName());
}
} else if (clan.isLeader(player) && clan.getLeaders().size() == 1) {
plugin.getClanManager().serverAnnounce(ChatColor.AQUA + MessageFormat.format(plugin.getLang("clan.has.been.disbanded"), clan.getName()));
clan.disband();
} else {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("last.leader.cannot.resign.you.must.appoint.another.leader.or.disband.the.clan"));
}
new ConversationFactory(plugin)
.withFirstPrompt(new ResignPrompt())
.withLocalEcho(true)
.withTimeout(10)
.buildConversation(player).begin();
}
}
@@ -44,10 +44,6 @@ public class RivalCommand {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("your.clan.cannot.create.rivals"));
return;
}
if (!clan.isLeader(player)) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("no.leader.permissions"));
return;
}
if (arg.length != 2) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(plugin.getLang("usage.rival"), plugin.getSettingsManager().getCommandClan()));
return;
@@ -81,11 +77,14 @@ public class RivalCommand {
}
if (action.equals(plugin.getLang("add"))) {
if (!plugin.getPermissionsManager().has(player, RankPermission.RIVAL_ADD, PermissionLevel.LEADER, true)) {
return;
}
if (!clan.reachedRivalLimit()) {
if (!clan.isRival(rival.getTag())) {
clan.addRival(rival);
rival.addBb(player.getName(), ChatColor.AQUA + MessageFormat.format(plugin.getLang("has.initiated.a.rivalry"), Helper.capitalize(clan.getName()), rival.getName()), false);
clan.addBb(player.getName(), ChatColor.AQUA + MessageFormat.format(plugin.getLang("has.initiated.a.rivalry"), Helper.capitalize(player.getName()), Helper.capitalize(rival.getName())));
rival.addBb(player.getName(), ChatColor.AQUA + MessageFormat.format(plugin.getLang("has.initiated.a.rivalry"), clan.getName(), rival.getName()), false);
clan.addBb(player.getName(), ChatColor.AQUA + MessageFormat.format(plugin.getLang("has.initiated.a.rivalry"), player.getName(), rival.getName()));
} else {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("your.clans.are.already.rivals"));
}
@@ -96,9 +95,12 @@ public class RivalCommand {
}
if (action.equals(plugin.getLang("remove"))) {
if (!plugin.getPermissionsManager().has(player, RankPermission.RIVAL_REMOVE, PermissionLevel.LEADER, true)) {
return;
}
if (clan.isRival(rival.getTag())) {
plugin.getRequestManager().addRivalryBreakRequest(cp, rival, clan);
ChatBlock.sendMessage(player, ChatColor.AQUA + MessageFormat.format(plugin.getLang("leaders.asked.to.end.rivalry"), Helper.capitalize(rival.getName())));
ChatBlock.sendMessage(player, ChatColor.AQUA + MessageFormat.format(plugin.getLang("leaders.asked.to.end.rivalry"), rival.getName()));
} else {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("your.clans.are.not.rivals"));
}
@@ -59,7 +59,7 @@ public class RosterCommand {
ChatBlock chatBlock = new ChatBlock();
ChatBlock.sendBlank(player);
ChatBlock.saySingle(player, plugin.getSettingsManager().getPageClanNameColor() + Helper.capitalize(clan.getName()) + subColor + " " + plugin.getLang("roster") + " " + headColor + Helper.generatePageSeparator(plugin.getSettingsManager().getPageSep()));
ChatBlock.saySingle(player, plugin.getSettingsManager().getPageClanNameColor() + clan.getName() + subColor + " " + plugin.getLang("roster") + " " + headColor + Helper.generatePageSeparator(plugin.getSettingsManager().getPageSep()));
ChatBlock.sendBlank(player);
ChatBlock.sendMessage(player, headColor + plugin.getLang("legend") + " " + plugin.getSettingsManager().getPageLeaderColor() + plugin.getLang("leader") + headColor + ", " + plugin.getSettingsManager().getPageTrustedColor() + plugin.getLang("trusted") + headColor + ", " + plugin.getSettingsManager().getPageUnTrustedColor() + plugin.getLang("untrusted"));
ChatBlock.sendBlank(player);
@@ -80,7 +80,7 @@ public class RosterCommand {
String name = plugin.getSettingsManager().getPageLeaderColor() + cp.getName();
String lastSeen = p != null && p.isOnline() && !Helper.isVanished(p) ? ChatColor.GREEN + plugin.getLang("online") : ChatColor.WHITE + cp.getLastSeenDaysString();
chatBlock.addRow(" " + name, ChatColor.YELLOW + Helper.parseColors(cp.getRank()), lastSeen);
chatBlock.addRow(" " + name, ChatColor.YELLOW + Helper.parseColors(cp.getRankDisplayName()) + ChatColor.RESET, lastSeen);
}
@@ -90,7 +90,7 @@ public class RosterCommand {
String name = (cp.isTrusted() ? plugin.getSettingsManager().getPageTrustedColor() : plugin.getSettingsManager().getPageUnTrustedColor()) + cp.getName();
String lastSeen = p != null && p.isOnline() && !Helper.isVanished(p) ? ChatColor.GREEN + plugin.getLang("online") : ChatColor.WHITE + cp.getLastSeenDaysString();
chatBlock.addRow(" " + name, ChatColor.YELLOW + Helper.parseColors(cp.getRank()), lastSeen);
chatBlock.addRow(" " + name, ChatColor.YELLOW + Helper.parseColors(cp.getRankDisplayName()) + ChatColor.RESET, lastSeen);
}
boolean more = chatBlock.sendBlock(player, plugin.getSettingsManager().getPageSize());
@@ -1,68 +1,35 @@
package net.sacredlabyrinth.phaed.simpleclans.commands;
import net.sacredlabyrinth.phaed.simpleclans.*;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import java.text.MessageFormat;
public class SetRankCommand {
public SetRankCommand() {
}
/**
* Execute the command
*
* @param player
* @param arg
*/
public void execute(Player player, String[] arg) {
SimpleClans plugin = SimpleClans.getInstance();
if (!plugin.getPermissionsManager().has(player, "simpleclans.leader.setrank")) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("insufficient.permissions"));
return;
}
ClanPlayer cp = plugin.getClanManager().getClanPlayer(player);
if (cp == null) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("not.a.member.of.any.clan"));
return;
}
Clan clan = cp.getClan();
if (!clan.isVerified()) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("clan.is.not.verified"));
return;
}
if (!clan.isLeader(player)) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("no.leader.permissions"));
return;
}
if (arg.length < 1) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(plugin.getLang("usage.setrank"), plugin.getSettingsManager().getCommandClan()));
return;
}
String playerName = arg[0];
String rank = Helper.toMessage(Helper.removeFirst(arg));
if (!clan.isMember(playerName) && !clan.isLeader(playerName)) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("no.player.matched"));
return;
}
ClanPlayer cpm = plugin.getClanManager().getClanPlayer(playerName);
cpm.setRank(rank);
plugin.getStorageManager().updateClanPlayer(cpm);
ChatBlock.sendMessage(player, ChatColor.AQUA + plugin.getLang("player.rank.changed"));
}
}
package net.sacredlabyrinth.phaed.simpleclans.commands;
import net.sacredlabyrinth.phaed.simpleclans.*;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import java.text.MessageFormat;
public class SetRankCommand {
public SetRankCommand() {
}
/**
* Execute the command
*
* @param player
* @param arg
*/
public void execute(Player player, String[] arg) {
SimpleClans plugin = SimpleClans.getInstance();
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(plugin.getLang("usage.0.rank.create"),
plugin.getSettingsManager().getCommandClan()));
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(plugin.getLang("usage.0.rank.assign"),
plugin.getSettingsManager().getCommandClan()));
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(plugin.getLang("usage.0.rank.setdisplayname"),
plugin.getSettingsManager().getCommandClan()));
}
}
@@ -46,9 +46,8 @@ public class StatsCommand {
return;
}
if (!cp.isTrusted()) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("only.trusted.players.can.access.clan.stats"));
return;
if (!plugin.getPermissionsManager().has(player, RankPermission.STATS, PermissionLevel.TRUSTED, true)) {
return;
}
if (arg.length != 0) {
@@ -57,7 +56,7 @@ public class StatsCommand {
}
ChatBlock chatBlock = new ChatBlock();
ChatBlock.saySingle(player, plugin.getSettingsManager().getPageClanNameColor() + Helper.capitalize(clan.getName()) + subColor + " " + plugin.getLang("stats") + " " + headColor + Helper.generatePageSeparator(plugin.getSettingsManager().getPageSep()));
ChatBlock.saySingle(player, plugin.getSettingsManager().getPageClanNameColor() + clan.getName() + subColor + " " + plugin.getLang("stats") + " " + headColor + Helper.generatePageSeparator(plugin.getSettingsManager().getPageSep()));
ChatBlock.sendBlank(player);
ChatBlock.sendMessage(player, headColor + plugin.getLang("kdr") + " = " + subColor + plugin.getLang("kill.death.ratio"));
ChatBlock.sendMessage(player, headColor + plugin.getLang("weights") + " = " + plugin.getLang("rival") + ": " + subColor + plugin.getSettingsManager().getKwRival() + headColor + " " + plugin.getLang("neutral") + ": " + subColor + plugin.getSettingsManager().getKwNeutral() + headColor + " " + plugin.getLang("civilian") + ": " + subColor + plugin.getSettingsManager().getKwCivilian());
@@ -1,138 +1,157 @@
package net.sacredlabyrinth.phaed.simpleclans.commands;
import net.sacredlabyrinth.phaed.simpleclans.ChatBlock;
import net.sacredlabyrinth.phaed.simpleclans.Clan;
import net.sacredlabyrinth.phaed.simpleclans.ClanPlayer;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
/**
* @author phaed
*/
public class ToggleCommand {
public ToggleCommand() {
}
/**
* Execute the command
*
* @param player
* @param arg
*/
public void execute(Player player, String[] arg) {
SimpleClans plugin = SimpleClans.getInstance();
if (arg.length == 0) {
return;
}
String cmd = arg[0];
if (cmd.equalsIgnoreCase("cape")) {
if (plugin.getPermissionsManager().has(player, "simpleclans.member.cape-toggle")) {
ClanPlayer cp = plugin.getClanManager().getClanPlayer(player);
if (cp != null) {
Clan clan = cp.getClan();
if (clan.isVerified()) {
if (cp.isCapeEnabled()) {
ChatBlock.sendMessage(player, ChatColor.AQUA + plugin.getLang("capeoff"));
cp.setCapeEnabled(false);
} else {
ChatBlock.sendMessage(player, ChatColor.AQUA + plugin.getLang("capeon"));
cp.setCapeEnabled(true);
}
} else {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("clan.is.not.verified"));
}
} else {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("not.a.member.of.any.clan"));
}
} else {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("insufficient.permissions"));
}
}
if (cmd.equalsIgnoreCase("bb") && plugin.getPermissionsManager().has(player, "simpleclans.member.bb-toggle")) {
ClanPlayer cp = plugin.getClanManager().getClanPlayer(player);
if (cp != null) {
Clan clan = cp.getClan();
if (clan.isVerified()) {
if (cp.isBbEnabled()) {
ChatBlock.sendMessage(player, ChatColor.AQUA + plugin.getLang("bboff"));
cp.setBbEnabled(false);
} else {
ChatBlock.sendMessage(player, ChatColor.AQUA + plugin.getLang("bbon"));
cp.setBbEnabled(true);
}
plugin.getStorageManager().updateClanPlayer(cp);
}
}
}
if (cmd.equalsIgnoreCase("tag") && plugin.getPermissionsManager().has(player, "simpleclans.member.tag-toggle")) {
ClanPlayer cp = plugin.getClanManager().getClanPlayer(player);
if (cp != null) {
Clan clan = cp.getClan();
if (clan.isVerified()) {
if (cp.isTagEnabled()) {
ChatBlock.sendMessage(player, ChatColor.AQUA + plugin.getLang("tagoff"));
cp.setTagEnabled(false);
} else {
ChatBlock.sendMessage(player, ChatColor.AQUA + plugin.getLang("tagon"));
cp.setTagEnabled(true);
}
plugin.getStorageManager().updateClanPlayer(cp);
}
}
}
if (cmd.equalsIgnoreCase("deposit") && plugin.getPermissionsManager().has(player, "simpleclans.leader.deposit-toggle")) {
ClanPlayer cp = plugin.getClanManager().getClanPlayer(player);
if (cp != null) {
Clan clan = cp.getClan();
if (clan.isLeader(player)) {
if (clan.isVerified()) {
if (clan.isAllowDeposit()) {
ChatBlock.sendMessage(player, ChatColor.AQUA + plugin.getLang("depositoff"));
clan.setAllowDeposit(false);
} else {
ChatBlock.sendMessage(player, ChatColor.AQUA + plugin.getLang("depositon"));
clan.setAllowDeposit(true);
}
}
} else {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("no.leader.permissions"));
}
}
}
if (cmd.equalsIgnoreCase("withdraw") && plugin.getPermissionsManager().has(player, "simpleclans.leader.withdraw-toggle")) {
ClanPlayer cp = plugin.getClanManager().getClanPlayer(player);
if (cp != null) {
Clan clan = cp.getClan();
if (clan.isVerified()) {
if (clan.isLeader(player)) {
if (clan.isAllowWithdraw()) {
ChatBlock.sendMessage(player, ChatColor.AQUA + plugin.getLang("withdrawoff"));
clan.setAllowWithdraw(false);
} else {
ChatBlock.sendMessage(player, ChatColor.AQUA + plugin.getLang("withdrawon"));
clan.setAllowWithdraw(true);
}
} else {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("no.leader.permissions"));
}
}
}
}
}
}
package net.sacredlabyrinth.phaed.simpleclans.commands;
import net.sacredlabyrinth.phaed.simpleclans.ChatBlock;
import net.sacredlabyrinth.phaed.simpleclans.Clan;
import net.sacredlabyrinth.phaed.simpleclans.ClanPlayer;
import net.sacredlabyrinth.phaed.simpleclans.PermissionLevel;
import net.sacredlabyrinth.phaed.simpleclans.RankPermission;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
/**
* @author phaed
*/
public class ToggleCommand {
public ToggleCommand() {
}
/**
* Execute the command
*
* @param player
* @param arg
*/
public void execute(Player player, String[] arg) {
SimpleClans plugin = SimpleClans.getInstance();
if (arg.length == 0) {
return;
}
String cmd = arg[0];
if (cmd.equalsIgnoreCase("cape")) {
if (plugin.getPermissionsManager().has(player, "simpleclans.member.cape-toggle")) {
ClanPlayer cp = plugin.getClanManager().getClanPlayer(player);
if (cp != null) {
Clan clan = cp.getClan();
if (clan.isVerified()) {
if (cp.isCapeEnabled()) {
ChatBlock.sendMessage(player, ChatColor.AQUA + plugin.getLang("capeoff"));
cp.setCapeEnabled(false);
} else {
ChatBlock.sendMessage(player, ChatColor.AQUA + plugin.getLang("capeon"));
cp.setCapeEnabled(true);
}
} else {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("clan.is.not.verified"));
}
} else {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("not.a.member.of.any.clan"));
}
} else {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("insufficient.permissions"));
}
}
if (cmd.equalsIgnoreCase("bb") && plugin.getPermissionsManager().has(player, "simpleclans.member.bb-toggle")) {
ClanPlayer cp = plugin.getClanManager().getClanPlayer(player);
if (cp != null) {
Clan clan = cp.getClan();
if (clan.isVerified()) {
if (cp.isBbEnabled()) {
ChatBlock.sendMessage(player, ChatColor.AQUA + plugin.getLang("bboff"));
cp.setBbEnabled(false);
} else {
ChatBlock.sendMessage(player, ChatColor.AQUA + plugin.getLang("bbon"));
cp.setBbEnabled(true);
}
plugin.getStorageManager().updateClanPlayer(cp);
}
}
}
if (cmd.equalsIgnoreCase("tag") && plugin.getPermissionsManager().has(player, "simpleclans.member.tag-toggle")) {
ClanPlayer cp = plugin.getClanManager().getClanPlayer(player);
if (cp != null) {
Clan clan = cp.getClan();
if (clan.isVerified()) {
if (cp.isTagEnabled()) {
ChatBlock.sendMessage(player, ChatColor.AQUA + plugin.getLang("tagoff"));
cp.setTagEnabled(false);
} else {
ChatBlock.sendMessage(player, ChatColor.AQUA + plugin.getLang("tagon"));
cp.setTagEnabled(true);
}
plugin.getStorageManager().updateClanPlayer(cp);
}
}
}
if (cmd.equalsIgnoreCase("deposit") && plugin.getPermissionsManager().has(player, "simpleclans.leader.deposit-toggle")) {
ClanPlayer cp = plugin.getClanManager().getClanPlayer(player);
if (cp != null) {
Clan clan = cp.getClan();
if (clan.isLeader(player)) {
if (clan.isVerified()) {
if (clan.isAllowDeposit()) {
ChatBlock.sendMessage(player, ChatColor.AQUA + plugin.getLang("depositoff"));
clan.setAllowDeposit(false);
} else {
ChatBlock.sendMessage(player, ChatColor.AQUA + plugin.getLang("depositon"));
clan.setAllowDeposit(true);
}
}
} else {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("no.leader.permissions"));
}
}
}
if (cmd.equalsIgnoreCase("fee") && plugin.getPermissionsManager().has(player, RankPermission.FEE_ENABLE, PermissionLevel.LEADER, true)) {
ClanPlayer cp = plugin.getClanManager().getClanPlayer(player);
if (cp != null) {
Clan clan = cp.getClan();
if (clan.isVerified()) {
if (clan.isMemberFeeEnabled()) {
ChatBlock.sendMessage(player, ChatColor.AQUA + plugin.getLang("feeoff"));
clan.setMemberFeeEnabled(false);
} else {
ChatBlock.sendMessage(player, ChatColor.AQUA + plugin.getLang("feeon"));
clan.setMemberFeeEnabled(true);
}
plugin.getStorageManager().updateClan(clan);
}
}
}
if (cmd.equalsIgnoreCase("withdraw") && plugin.getPermissionsManager().has(player, "simpleclans.leader.withdraw-toggle")) {
ClanPlayer cp = plugin.getClanManager().getClanPlayer(player);
if (cp != null) {
Clan clan = cp.getClan();
if (clan.isVerified()) {
if (clan.isLeader(player)) {
if (clan.isAllowWithdraw()) {
ChatBlock.sendMessage(player, ChatColor.AQUA + plugin.getLang("withdrawoff"));
clan.setAllowWithdraw(false);
} else {
ChatBlock.sendMessage(player, ChatColor.AQUA + plugin.getLang("withdrawon"));
clan.setAllowWithdraw(true);
}
} else {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("no.leader.permissions"));
}
}
}
}
}
}
@@ -5,10 +5,13 @@ 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.uuid.UUIDMigration;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import java.text.MessageFormat;
import java.util.UUID;
/**
* @author phaed
@@ -49,13 +52,12 @@ public class TrustCommand {
return;
}
String trusted = arg[0];
UUID trusted = UUIDMigration.getForcedPlayerUUID(arg[0]);
if (trusted == null) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("no.player.matched"));
return;
}
if (trusted.equals(player.getName())) {
if (trusted.equals(player.getUniqueId())) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("you.cannot.trust.yourself"));
return;
}
@@ -80,7 +82,7 @@ public class TrustCommand {
return;
}
clan.addBb(player.getName(), ChatColor.AQUA + MessageFormat.format(plugin.getLang("has.been.given.trusted.status.by"), Helper.capitalize(trusted), player.getName()));
clan.addBb(player.getName(), ChatColor.AQUA + MessageFormat.format(plugin.getLang("has.been.given.trusted.status.by"), arg[0], player.getName()));
tcp.setTrusted(true);
plugin.getStorageManager().updateClanPlayer(tcp);
}
@@ -1,13 +1,15 @@
package net.sacredlabyrinth.phaed.simpleclans.commands;
import net.sacredlabyrinth.phaed.simpleclans.ChatBlock;
import net.sacredlabyrinth.phaed.simpleclans.Helper;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
import net.sacredlabyrinth.phaed.simpleclans.uuid.UUIDMigration;
import java.text.MessageFormat;
import java.util.UUID;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import java.text.MessageFormat;
import net.sacredlabyrinth.phaed.simpleclans.ChatBlock;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
import net.sacredlabyrinth.phaed.simpleclans.uuid.UUIDMigration;
/**
* @author phaed
@@ -34,20 +36,23 @@ public class UnbanCommand {
return;
}
String banned = arg[0];
UUID uuid = UUIDMigration.getForcedPlayerUUID(arg[0]);
if (uuid == null) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("no.player.matched"));
return;
}
if (!plugin.getSettingsManager().isBanned(banned)) {
if (!plugin.getSettingsManager().isBanned(uuid)) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("this.player.is.not.banned"));
return;
}
Player pl = Helper.getPlayer(banned);
Player pl = Bukkit.getPlayer(uuid);
if (pl != null) {
ChatBlock.sendMessage(pl, ChatColor.AQUA + plugin.getLang("you.have.been.unbanned.from.clan.commands"));
}
plugin.getSettingsManager().removeBanned(banned);
plugin.getSettingsManager().removeBanned(uuid);
ChatBlock.sendMessage(player, ChatColor.AQUA + plugin.getLang("player.removed.from.the.banned.list"));
}
}
@@ -5,10 +5,13 @@ 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.uuid.UUIDMigration;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import java.text.MessageFormat;
import java.util.UUID;
/**
* @author phaed
@@ -49,26 +52,25 @@ public class UntrustCommand {
return;
}
String trusted = arg[0];
if (trusted == null) {
UUID trustedId = UUIDMigration.getForcedPlayerUUID(arg[0]);
if (trustedId == null) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("no.player.matched"));
return;
}
if (trusted.equals(player.getName())) {
if (trustedId.equals(player.getUniqueId())) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("you.cannot.untrust.yourself"));
return;
}
if (!clan.isMember(trusted)) {
if (!clan.isMember(trustedId)) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("the.player.is.not.a.member.of.your.clan"));
return;
}
if (clan.isLeader(trusted)) {
if (clan.isLeader(trustedId)) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("leaders.cannot.be.untrusted"));
return;
}
ClanPlayer tcp = plugin.getClanManager().getClanPlayer(trusted);
ClanPlayer tcp = plugin.getClanManager().getClanPlayer(trustedId);
if (tcp == null) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("no.player.matched"));
@@ -79,7 +81,7 @@ public class UntrustCommand {
return;
}
clan.addBb(player.getName(), ChatColor.AQUA + MessageFormat.format(plugin.getLang("has.been.given.untrusted.status.by"), Helper.capitalize(trusted), player.getName()));
clan.addBb(player.getName(), ChatColor.AQUA + MessageFormat.format(plugin.getLang("has.been.given.untrusted.status.by"), arg[0], player.getName()));
tcp.setTrusted(false);
plugin.getStorageManager().updateClanPlayer(tcp);
}
@@ -7,7 +7,6 @@ import org.bukkit.entity.Player;
import java.text.MessageFormat;
import java.util.Collection;
import java.util.List;
import java.util.Set;
/**
* @author phaed
@@ -43,17 +42,18 @@ public class VitalsCommand {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("clan.is.not.verified"));
return;
}
if (!cp.isTrusted()) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("only.trusted.players.can.access.clan.vitals"));
return;
if (!plugin.getPermissionsManager().has(player, RankPermission.VITALS, PermissionLevel.TRUSTED, true)) {
return;
}
if (arg.length != 0) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(plugin.getLang("usage.0.vitals"), plugin.getSettingsManager().getCommandClan()));
return;
}
ChatBlock chatBlock = new ChatBlock();
ChatBlock.sendBlank(player);
ChatBlock.saySingle(player, plugin.getSettingsManager().getPageClanNameColor() + Helper.capitalize(clan.getName()) + subColor + " " + plugin.getLang("vitals") + " " + headColor + Helper.generatePageSeparator(plugin.getSettingsManager().getPageSep()));
ChatBlock.saySingle(player, plugin.getSettingsManager().getPageClanNameColor() + clan.getName() + subColor + " " + plugin.getLang("vitals") + " " + headColor + Helper.generatePageSeparator(plugin.getSettingsManager().getPageSep()));
ChatBlock.sendBlank(player);
ChatBlock.sendMessage(player, headColor + plugin.getLang("weapons") + ": " + MessageFormat.format(plugin.getLang("0.s.sword.1.2.b.bow.3.4.a.arrow"), ChatColor.WHITE, ChatColor.DARK_GRAY, ChatColor.WHITE, ChatColor.DARK_GRAY, ChatColor.WHITE));
ChatBlock.sendMessage(player, headColor + plugin.getLang("materials") + ": " + ChatColor.AQUA + plugin.getLang("diamond") + ChatColor.DARK_GRAY + ", " + ChatColor.YELLOW + plugin.getLang("gold") + ChatColor.DARK_GRAY + ", " + ChatColor.GRAY + plugin.getLang("stone") + ChatColor.DARK_GRAY + ", " + ChatColor.WHITE + plugin.getLang("iron") + ChatColor.DARK_GRAY + ", " + ChatColor.GOLD + plugin.getLang("wood"));
@@ -41,10 +41,6 @@ public class WarCommand {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("clan.is.not.verified"));
return;
}
if (!clan.isLeader(player)) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("no.leader.permissions"));
return;
}
if (arg.length != 2) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(plugin.getLang("usage.war"), plugin.getSettingsManager().getCommandClan()));
return;
@@ -63,12 +59,15 @@ public class WarCommand {
}
if (action.equals(plugin.getLang("start"))) {
if (!plugin.getPermissionsManager().has(player, RankPermission.WAR_START, PermissionLevel.LEADER, true)) {
return;
}
if (!clan.isWarring(war.getTag())) {
List<ClanPlayer> onlineLeaders = Helper.stripOffLinePlayers(clan.getLeaders());
if (!onlineLeaders.isEmpty()) {
plugin.getRequestManager().addWarStartRequest(cp, war, clan);
ChatBlock.sendMessage(player, ChatColor.AQUA + MessageFormat.format(plugin.getLang("leaders.have.been.asked.to.accept.the.war.request"), Helper.capitalize(war.getName())));
ChatBlock.sendMessage(player, ChatColor.AQUA + MessageFormat.format(plugin.getLang("leaders.have.been.asked.to.accept.the.war.request"), war.getName()));
} else {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("at.least.one.leader.accept.the.alliance"));
}
@@ -79,9 +78,12 @@ public class WarCommand {
}
if (action.equals(plugin.getLang("end"))) {
if (!plugin.getPermissionsManager().has(player, RankPermission.WAR_END, PermissionLevel.LEADER, true)) {
return;
}
if (clan.isWarring(war.getTag())) {
plugin.getRequestManager().addWarEndRequest(cp, war, clan);
ChatBlock.sendMessage(player, ChatColor.AQUA + MessageFormat.format(plugin.getLang("leaders.asked.to.end.rivalry"), Helper.capitalize(war.getName())));
ChatBlock.sendMessage(player, ChatColor.AQUA + MessageFormat.format(plugin.getLang("leaders.asked.to.end.rivalry"), war.getName()));
} else {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("clans.not.at.war"));
}
@@ -0,0 +1,28 @@
package net.sacredlabyrinth.phaed.simpleclans.conversation;
import org.bukkit.conversations.ConversationContext;
import org.bukkit.conversations.Prompt;
/**
*
* @author roinujnosde
*/
public class MessagePromptImpl extends org.bukkit.conversations.MessagePrompt {
private final String message;
public MessagePromptImpl(String message) {
this.message = message;
}
@Override
protected Prompt getNextPrompt(ConversationContext cc) {
return END_OF_CONVERSATION;
}
@Override
public String getPromptText(ConversationContext cc) {
return message;
}
}
@@ -0,0 +1,64 @@
package net.sacredlabyrinth.phaed.simpleclans.conversation;
import java.text.MessageFormat;
import java.util.Arrays;
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.managers.ClanManager;
import org.bukkit.ChatColor;
import org.bukkit.conversations.ConversationContext;
import org.bukkit.conversations.Prompt;
import org.bukkit.conversations.StringPrompt;
import org.bukkit.entity.Player;
/**
*
* @author roinujnosde
*/
public class ResignPrompt extends StringPrompt {
@Override
public Prompt acceptInput(ConversationContext cc, String input) {
final SimpleClans plugin = (SimpleClans) cc.getPlugin();
String yes = plugin.getLang("resign.yes");
Player player = (Player) cc.getForWhom();
ClanManager cm = plugin.getClanManager();
ClanPlayer cp = cm.getClanPlayer(player);
Clan clan = cp.getClan();
if (yes.equalsIgnoreCase(input)) {
if (!clan.isLeader(player) || clan.getLeaders().size() > 1) {
clan.addBb(player.getName(), ChatColor.AQUA + MessageFormat.format(plugin.getLang("0.has.resigned"), player.getName()));
cp.addResignTime(clan.getTag());
clan.removePlayerFromClan(player.getUniqueId());
return new MessagePromptImpl(ChatColor.AQUA + plugin.getLang("resign.success"));
} else if (clan.isLeader(player) && clan.getLeaders().size() == 1) {
clan.disband();
String clanDisbanded = ChatColor.AQUA + MessageFormat.format(plugin.getLang("clan.has.been.disbanded"), clan.getName());
//message for the server
plugin.getClanManager().serverAnnounce(clanDisbanded);
//message for the player
return new MessagePromptImpl(clanDisbanded);
} else {
return new MessagePromptImpl(ChatColor.RED + plugin.getLang("last.leader.cannot.resign.you.must.appoint.another.leader.or.disband.the.clan"));
}
} else {
return new MessagePromptImpl(ChatColor.RED + plugin.getLang("resign.request.cancelled"));
}
}
@Override
public String getPromptText(ConversationContext cc) {
final SimpleClans plugin = (SimpleClans) cc.getPlugin();
return ChatColor.RED + MessageFormat.format(
plugin.getLang("resign.confirmation"), Arrays.asList(
plugin.getLang("resign.yes"), plugin.getLang("resign.no")));
}
}
@@ -20,7 +20,7 @@ public class AcceptCommandExecutor implements CommandExecutor {
public boolean onCommand(CommandSender commandSender, Command command, String s, String[] strings) {
Player player = (Player) commandSender;
if (plugin.getSettingsManager().isBanned(player.getName())) {
if (plugin.getSettingsManager().isBanned(player.getUniqueId())) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("banned"));
return false;
}
@@ -42,19 +42,16 @@ public class AcceptCommandExecutor implements CommandExecutor {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("you.have.already.voted"));
return false;
}
plugin.getRequestManager().accept(cp);
clan.leaderAnnounce(ChatColor.GREEN + MessageFormat.format(plugin.getLang("voted.to.accept"), Helper.capitalize(player.getName())));
clan.leaderAnnounce(ChatColor.GREEN + MessageFormat.format(plugin.getLang("voted.to.accept"), player.getName()));
plugin.getRequestManager().accept(cp);
} else {
if (!plugin.getRequestManager().hasRequest(player.getName().toLowerCase())) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("nothing.to.accept"));
return false;
}
if (SimpleClans.getInstance().hasUUID()) {
cp = plugin.getClanManager().getCreateClanPlayer(player.getUniqueId());
cp.setName(player.getName());
} else {
cp = plugin.getClanManager().getCreateClanPlayer(player.getName());
}
cp = plugin.getClanManager().getCreateClanPlayer(player.getUniqueId());
cp.setName(player.getName());
plugin.getRequestManager().accept(cp);
}
@@ -1,9 +1,9 @@
package net.sacredlabyrinth.phaed.simpleclans.executors;
import net.sacredlabyrinth.phaed.simpleclans.ChatBlock;
import net.sacredlabyrinth.phaed.simpleclans.Helper;
import net.sacredlabyrinth.phaed.simpleclans.PermissionLevel;
import net.sacredlabyrinth.phaed.simpleclans.RankPermission;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
@@ -25,8 +25,7 @@ public class AllyCommandExecutor implements CommandExecutor {
return false;
}
if (!plugin.getPermissionsManager().has(player, "simpleclans.member.ally")) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("insufficient.permissions"));
if (!plugin.getPermissionsManager().has(player, RankPermission.ALLY_CHAT, PermissionLevel.TRUSTED, true)) {
return true;
}
@@ -2,57 +2,66 @@ package net.sacredlabyrinth.phaed.simpleclans.executors;
import net.sacredlabyrinth.phaed.simpleclans.*;
import net.sacredlabyrinth.phaed.simpleclans.commands.*;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.*;
import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitRunnable;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Collection;
/**
* @author phaed
*/
public final class ClanCommandExecutor implements CommandExecutor {
private SimpleClans plugin;
private CreateCommand createCommand;
private ListCommand listCommand;
private ProfileCommand profileCommand;
private RosterCommand rosterCommand;
private LookupCommand lookupCommand;
private LeaderboardCommand leaderboardCommand;
private AlliancesCommand alliancesCommand;
private RivalriesCommand rivalriesCommand;
private VitalsCommand vitalsCommand;
private CoordsCommand coordsCommand;
private StatsCommand statsCommand;
private AllyCommand allyCommand;
private RivalCommand rivalCommand;
private BbCommand bbCommand;
private ModtagCommand modtagCommand;
private ToggleCommand toggleCommand;
private InviteCommand inviteCommand;
private KickCommand kickCommand;
private TrustCommand trustCommand;
private UntrustCommand untrustCommand;
private PromoteCommand promoteCommand;
private DemoteCommand demoteCommand;
private ClanffCommand clanffCommand;
private FfCommand ffCommand;
private ResignCommand resignCommand;
private DisbandCommand disbandCommand;
private VerifyCommand verifyCommand;
private BanCommand banCommand;
private UnbanCommand unbanCommand;
private ReloadCommand reloadCommand;
private GlobalffCommand globalffCommand;
private MenuCommand menuCommand;
private WarCommand warCommand;
private HomeCommand homeCommand;
private KillsCommand killsCommand;
private MostKilledCommand mostKilledCommand;
private SetRankCommand setRankCommand;
private BankCommand bankCommand;
private PlaceCommand placeCommand;
private ResetKDRCommand resetKDRCommand;
private final SimpleClans plugin;
private final CreateCommand createCommand;
private final ListCommand listCommand;
private final ProfileCommand profileCommand;
private final RosterCommand rosterCommand;
private final LookupCommand lookupCommand;
private final LeaderboardCommand leaderboardCommand;
private final AlliancesCommand alliancesCommand;
private final RivalriesCommand rivalriesCommand;
private final VitalsCommand vitalsCommand;
private final CoordsCommand coordsCommand;
private final StatsCommand statsCommand;
private final AllyCommand allyCommand;
private final RivalCommand rivalCommand;
private final BbCommand bbCommand;
private final ModtagCommand modtagCommand;
private final ToggleCommand toggleCommand;
private final InviteCommand inviteCommand;
private final KickCommand kickCommand;
private final TrustCommand trustCommand;
private final UntrustCommand untrustCommand;
private final PromoteCommand promoteCommand;
private final DemoteCommand demoteCommand;
private final ClanffCommand clanffCommand;
private final FfCommand ffCommand;
private final ResignCommand resignCommand;
private final DisbandCommand disbandCommand;
private final VerifyCommand verifyCommand;
private final BanCommand banCommand;
private final FeeCommand feeCommand;
private final UnbanCommand unbanCommand;
private final ReloadCommand reloadCommand;
private final GlobalffCommand globalffCommand;
private final MenuCommand menuCommand;
private final WarCommand warCommand;
private final HomeCommand homeCommand;
private final KillsCommand killsCommand;
private final MostKilledCommand mostKilledCommand;
private final SetRankCommand setRankCommand;
private final BankCommand bankCommand;
private final PlaceCommand placeCommand;
private final ResetKDRCommand resetKDRCommand;
private final PurgeCommand purgeCommand;
private final DescriptionCommand descriptionCommand;
private final RankCommand rankCommand;
/**
*
@@ -99,6 +108,10 @@ public final class ClanCommandExecutor implements CommandExecutor {
bankCommand = new BankCommand();
placeCommand = new PlaceCommand();
resetKDRCommand = new ResetKDRCommand();
feeCommand = new FeeCommand();
purgeCommand = new PurgeCommand();
descriptionCommand = new DescriptionCommand();
rankCommand = new RankCommand();
}
@Override
@@ -111,7 +124,7 @@ public final class ClanCommandExecutor implements CommandExecutor {
return false;
}
if (plugin.getSettingsManager().isBanned(player.getName())) {
if (plugin.getSettingsManager().isBanned(player.getUniqueId())) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("banned"));
return false;
}
@@ -122,7 +135,7 @@ public final class ClanCommandExecutor implements CommandExecutor {
String subcommand = args[0];
String[] subargs = Helper.removeFirst(args);
if (subcommand.equalsIgnoreCase(plugin.getLang("create.command"))) {
if (subcommand.equalsIgnoreCase(plugin.getLang("create.command")) || subcommand.equalsIgnoreCase("create")) {
createCommand.execute(player, subargs);
} else if (subcommand.equalsIgnoreCase(plugin.getLang("list.command")) || subcommand.equalsIgnoreCase("list")) {
listCommand.execute(player, subargs);
@@ -200,7 +213,15 @@ public final class ClanCommandExecutor implements CommandExecutor {
placeCommand.execute(player, subargs);
} else if (subcommand.equalsIgnoreCase(plugin.getLang("resetkdr.command")) || subcommand.equalsIgnoreCase("resetkdr")) {
resetKDRCommand.execute(player, subargs);
} else {
} else if (subcommand.equalsIgnoreCase(plugin.getLang("fee.command")) || subcommand.equalsIgnoreCase("fee")) {
feeCommand.execute(player, subargs);
} else if (subcommand.equalsIgnoreCase(plugin.getLang("purge.command")) || subcommand.equalsIgnoreCase("purge")){
purgeCommand.execute(player, subargs);
} else if (subcommand.equalsIgnoreCase(plugin.getLang("description.command")) || subcommand.equalsIgnoreCase("description")) {
descriptionCommand.execute(player, subargs);
} else if (subcommand.equalsIgnoreCase(plugin.getLang("rank.command")) || subcommand.equalsIgnoreCase("rank")) {
rankCommand.execute(player, subargs);
} else {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("does.not.match"));
}
}
@@ -219,8 +240,9 @@ public final class ClanCommandExecutor implements CommandExecutor {
placeCommand.execute(sender, subargs);
} else if (subcommand.equalsIgnoreCase(plugin.getLang("globalff.command")) || subcommand.equalsIgnoreCase("globalff")) {
globalffCommand.execute(sender, subargs);
}
else {
} else if (subcommand.equalsIgnoreCase(plugin.getLang("purge.command")) || subcommand.equalsIgnoreCase("purge")) {
purgeCommand.execute(sender, subargs);
} else {
ChatBlock.sendMessage(sender, ChatColor.RED + plugin.getLang("does.not.match"));
}
}
@@ -20,7 +20,7 @@ public class DenyCommandExecutor implements CommandExecutor {
public boolean onCommand(CommandSender commandSender, Command command, String s, String[] strings) {
Player player = (Player) commandSender;
if (plugin.getSettingsManager().isBanned(player.getName())) {
if (plugin.getSettingsManager().isBanned(player.getUniqueId())) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("banned"));
return false;
}
@@ -43,18 +43,15 @@ public class DenyCommandExecutor implements CommandExecutor {
return false;
}
plugin.getRequestManager().deny(cp);
clan.leaderAnnounce(ChatColor.RED + MessageFormat.format(plugin.getLang("has.voted.to.deny"), Helper.capitalize(player.getName())));
clan.leaderAnnounce(ChatColor.RED + MessageFormat.format(plugin.getLang("has.voted.to.deny"), player.getName()));
plugin.getRequestManager().deny(cp);
} else {
if (!plugin.getRequestManager().hasRequest(player.getName().toLowerCase())) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("nothing.to.deny"));
return false;
}
if (SimpleClans.getInstance().hasUUID()) {
cp = plugin.getClanManager().getCreateClanPlayer(player.getUniqueId());
} else {
cp = plugin.getClanManager().getCreateClanPlayer(player.getName());
}
cp = plugin.getClanManager().getCreateClanPlayer(player.getUniqueId());
plugin.getRequestManager().deny(cp);
}
@@ -21,7 +21,7 @@ public class MoreCommandExecutor implements CommandExecutor {
public boolean onCommand(CommandSender commandSender, Command command, String s, String[] strings) {
Player player = (Player) commandSender;
if (plugin.getSettingsManager().isBanned(player.getName())) {
if (plugin.getSettingsManager().isBanned(player.getUniqueId())) {
ChatBlock.sendMessage(player, ChatColor.RED + plugin.getLang("banned"));
return false;
}
@@ -0,0 +1,111 @@
package net.sacredlabyrinth.phaed.simpleclans.language;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
/**
* Utility class that migrates old language files (yaml) to the new format (properties)
*
* @author RoinujNosde
*
*/
public class LanguageMigration {
private SimpleClans plugin;
public LanguageMigration(SimpleClans plugin) {
this.plugin = plugin;
}
/**
* Migrates all language files in the plugin's data folder
*/
public void migrate() {
File dataFolder = plugin.getDataFolder();
if (!dataFolder.exists()) {
return;
}
File[] languageFiles = dataFolder.listFiles(f -> {
return f.getName().startsWith("language") && f.getName().endsWith(".yml");
});
for (File file : languageFiles) {
convert(file);
backup(file);
file.delete();
}
}
/**
* Copies the file to the backup folder
*
* @param file the file to backup
*/
private void backup(File file) {
File backupFolder = new File(plugin.getDataFolder(), "language_backup");
if (!backupFolder.exists()) {
backupFolder.mkdir();
}
file.renameTo(new File(backupFolder, file.getName()));
}
/**
* Converts the yaml file to properties
*
* @param file
*/
private void convert(File file) {
List<String> lines = null;
try (BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file), StandardCharsets.UTF_8))) {
lines = reader.lines().collect(Collectors.toList());
} catch (IOException e) {
plugin.getLogger().severe("Error converting language file " + file.getName());
e.printStackTrace();
}
if (lines == null || lines.isEmpty()) {
return;
}
List<String> convertedLines = new ArrayList<>();
for (String line : lines) {
line = line.replaceFirst(":", "=")
.replaceAll("''''", "''")
.replaceAll("^'", "")
.replaceAll("= \'", "=")
.replaceAll("'$", "")
.replaceAll("^\"", "")
.replaceAll("\"$", "")
.replaceAll("= \"", "=");
convertedLines.add(line);
}
File converted = new File(file.getParentFile(), file.getName().replace("language", "messages").replace("yml", "properties").replace("-", "_"));
try (Writer writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(converted), StandardCharsets.UTF_8))) {
for (String line : convertedLines) {
writer.append(line);
writer.append(System.lineSeparator());
}
writer.flush();
} catch (IOException e) {
plugin.getLogger().severe("Error converting language file " + file.getName());
e.printStackTrace();
}
}
}
@@ -0,0 +1,141 @@
package net.sacredlabyrinth.phaed.simpleclans.language;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import java.util.List;
import java.util.Locale;
import java.util.MissingResourceException;
import java.util.PropertyResourceBundle;
import java.util.ResourceBundle;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
/**
*
* @author RoinujNosde
*
*/
public class LanguageResource {
private static ResourceLoader loader = new ResourceLoader(SimpleClans.getInstance().getDataFolder());
private Locale defaultLocale;
public LanguageResource() {
this.defaultLocale = SimpleClans.getInstance().getSettingsManager().getLanguage();
}
public String getLang(String key, Locale locale) {
try {
ResourceBundle bundle = ResourceBundle.getBundle("messages", locale, loader,
new ResourceControl(defaultLocale));
return bundle.getString(key);
} catch (MissingResourceException ignored) {}
try {
ResourceBundle bundle = ResourceBundle.getBundle("messages", locale,
SimpleClans.getInstance().getClass().getClassLoader(), new ResourceControl(defaultLocale));
return bundle.getString(key);
} catch (MissingResourceException ignored) {}
return "Missing language key: " + key;
}
public static void clearCache() {
ResourceBundle.clearCache(loader);
}
static class ResourceLoader extends ClassLoader {
private final File dataFolder;
public ResourceLoader(File dataFolder) {
this.dataFolder = dataFolder;
}
@Override
public URL getResource(String name) {
File file = new File(dataFolder, name);
if (file.exists()) {
try {
return file.toURI().toURL();
} catch (MalformedURLException ignored) {
}
}
return null;
}
}
static class ResourceControl extends ResourceBundle.Control {
private Locale defaultLocale;
public ResourceControl(Locale defaultLocale) {
this.defaultLocale = defaultLocale;
}
@Override
public List<String> getFormats(String baseName) {
if (baseName == null) {
throw new NullPointerException();
}
return Arrays.asList("java.properties");
}
@Override
public ResourceBundle newBundle(String baseName, Locale locale, String format, ClassLoader loader,
boolean reload) throws IllegalAccessException, InstantiationException, IOException {
String bundleName = toBundleName(baseName, locale);
ResourceBundle bundle = null;
if (format.equals("java.properties")) {
String resourceName = toResourceName(bundleName, "properties");
if (resourceName == null) {
return bundle;
}
URL url = loader.getResource(resourceName);
if (url == null) {
return bundle;
}
URLConnection connection = url.openConnection();
if (reload) {
connection.setUseCaches(false);
}
InputStreamReader reader = new InputStreamReader(connection.getInputStream(), StandardCharsets.UTF_8);
bundle = new PropertyResourceBundle(reader);
reader.close();
} else {
throw new IllegalArgumentException("unknown format: " + format);
}
return bundle;
}
@Override
public Locale getFallbackLocale(String baseName, Locale locale) {
if (!locale.equals(defaultLocale) && !locale.equals(Locale.ROOT)) {
return defaultLocale;
}
if (locale.equals(defaultLocale) && !defaultLocale.equals(Locale.ROOT)) {
return Locale.ROOT;
}
return null;
}
}
}
@@ -2,7 +2,12 @@ package net.sacredlabyrinth.phaed.simpleclans.listeners;
import net.sacredlabyrinth.phaed.simpleclans.Clan;
import net.sacredlabyrinth.phaed.simpleclans.ClanPlayer;
import net.sacredlabyrinth.phaed.simpleclans.Kill;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
import net.sacredlabyrinth.phaed.simpleclans.managers.PermissionsManager;
import net.sacredlabyrinth.phaed.simpleclans.managers.StorageManager.DataCallback;
import net.sacredlabyrinth.phaed.simpleclans.Kill.Type;
import org.bukkit.ChatColor;
import org.bukkit.entity.*;
import org.bukkit.event.EventHandler;
@@ -15,6 +20,9 @@ import org.bukkit.event.entity.EntityTargetLivingEntityEvent;
import org.bukkit.event.player.PlayerInteractEntityEvent;
import java.text.MessageFormat;
import java.time.LocalDateTime;
import java.util.Map;
import java.util.logging.Level;
/**
* @author phaed
@@ -78,64 +86,105 @@ public class SCEntityListener implements Listener
if (attacker != null && victim != null)
{
ClanPlayer acp;
ClanPlayer vcp;
if (SimpleClans.getInstance().hasUUID())
{
acp = plugin.getClanManager().getCreateClanPlayer(attacker.getUniqueId());
vcp = plugin.getClanManager().getCreateClanPlayer(victim.getUniqueId());
} else
{
acp = plugin.getClanManager().getCreateClanPlayer(attacker.getName());
vcp = plugin.getClanManager().getCreateClanPlayer(victim.getName());
}
if (SimpleClans.getInstance().getSettingsManager().isDenySameIPKills())
{
if (attacker.getAddress().getHostString().equals(victim.getAddress().getHostString()))
{
plugin.getLogger().log(Level.INFO, "Blocked same IP kill calculating: {0} killed {1}. IP: {2}", new Object[]{
attacker.getDisplayName(), victim.getDisplayName(), attacker.getAddress().getHostString()
});
return;
}
}
String kdrExempt = "simpleclans.other.kdr-exempt";
PermissionsManager pm = plugin.getPermissionsManager();
if (pm.has(attacker, kdrExempt) || pm.has(victim, kdrExempt)) {
return;
}
ClanPlayer attackerCp = plugin.getClanManager().getCreateClanPlayer(attacker.getUniqueId());
ClanPlayer victimCp = plugin.getClanManager().getCreateClanPlayer(victim.getUniqueId());
double reward = 0;
double multipier = plugin.getSettingsManager().getKDRMultipliesPerKill();
float kdr = acp.getKDR();
float kdr = attackerCp.getKDR();
if (vcp.getClan() == null || acp.getClan() == null || !vcp.getClan().isVerified() || !acp.getClan().isVerified())
if (victimCp.getClan() == null || attackerCp.getClan() == null || !victimCp.getClan().isVerified() || !attackerCp.getClan().isVerified())
{
acp.addCivilianKill();
plugin.getStorageManager().insertKill(attacker, acp.getTag(), victim, "", "c");
} else if (acp.getClan().isRival(vcp.getTag()))
addKill(Type.CIVILIAN, attackerCp, victimCp);
} else if (attackerCp.getClan().isRival(victimCp.getTag()))
{
if (acp.getClan().isWarring(vcp.getClan()))
if (attackerCp.getClan().isWarring(victimCp.getClan()))
{
reward = (double) kdr * multipier * 4;
} else
{
reward = (double) kdr * multipier * 2;
}
acp.addRivalKill();
plugin.getStorageManager().insertKill(attacker, acp.getTag(), victim, vcp.getTag(), "r");
} else if (acp.getClan().isAlly(vcp.getTag()))
addKill(Type.RIVAL, attackerCp, victimCp);
} else if (attackerCp.getClan().isAlly(victimCp.getTag()))
{
reward = (double) kdr * multipier * -1;
} else
{
reward = (double) kdr * multipier;
acp.addNeutralKill();
plugin.getStorageManager().insertKill(attacker, acp.getTag(), victim, vcp.getTag(), "n");
addKill(Type.NEUTRAL, attackerCp, victimCp);
}
if (reward != 0 && plugin.getSettingsManager().isMoneyPerKill())
{
for (ClanPlayer cp : acp.getClan().getOnlineMembers())
for (ClanPlayer cp : attackerCp.getClan().getOnlineMembers())
{
double money = Math.round((reward / acp.getClan().getOnlineMembers().size()) * 100D) / 100D;
double money = Math.round((reward / attackerCp.getClan().getOnlineMembers().size()) * 100D) / 100D;
cp.toPlayer().sendMessage(ChatColor.AQUA + MessageFormat.format(plugin.getLang("player.got.money"), money, victim.getName(), kdr));
plugin.getPermissionsManager().playerGrantMoney(cp.getName(), money);
plugin.getPermissionsManager().playerGrantMoney(cp.toPlayer(), money);
}
}
// record death for victim
vcp.addDeath();
plugin.getStorageManager().updateClanPlayerAsync(vcp);
victimCp.addDeath();
plugin.getStorageManager().updateClanPlayer(victimCp);
}
}
}
private void addKill(Kill.Type type, ClanPlayer attacker, ClanPlayer victim) {
if (type == null || attacker == null || victim == null) {
return;
}
final Kill kill = new Kill(attacker, victim, LocalDateTime.now());
if (plugin.getSettingsManager().isDelayBetweenKills() && plugin.getClanManager().isKillBeforeDelay(kill)) {
return;
}
if (plugin.getSettingsManager().isMaxKillsPerVictim()) {
plugin.getStorageManager().getKillsPerPlayer(attacker.getName(), new DataCallback<Map<String,Integer>>() {
@Override
public void onResultReady(Map<String, Integer> data) {
final int max = plugin.getSettingsManager().getMaxKillsPerVictim();
Integer kills = data.get(kill.getVictim().getName());
if (kills != null) {
if (kills.intValue() < max) {
saveKill(kill, type);
}
}
}
});
return;
}
saveKill(kill, type);
}
private void saveKill(Kill kill, Kill.Type type) {
plugin.getClanManager().addKill(kill);
ClanPlayer killer = kill.getKiller();
ClanPlayer victim = kill.getVictim();
killer.addKill(type);
plugin.getStorageManager().insertKill(killer.toPlayer(), killer.getTag(), victim.toPlayer(), victim.getTag(), type.getShortname());
}
/**
* @param event
*/
@@ -156,10 +156,9 @@ public class SCPlayerListener implements Listener {
String message = event.getMessage();
ClanPlayer cp = plugin.getClanManager().getClanPlayer(event.getPlayer());
if (cp != null) {
if (cp != null && !event.isCancelled()) {
if (cp.getChannel().equals(ClanPlayer.Channel.CLAN)) {
event.setCancelled(true);
//TODO: Document this permission
if (!plugin.getPermissionsManager().has(cp.toPlayer(), "simpleclans.member.chat")) {
ChatBlock.sendMessage(cp.toPlayer(), ChatColor.RED + plugin.getLang("insufficient.permissions"));
return;
@@ -181,8 +180,8 @@ public class SCPlayerListener implements Listener {
boolean isClanChat = event.getMessage().contains("" + ChatColor.RED + ChatColor.WHITE + ChatColor.RED + ChatColor.BLACK);
boolean isAllyChat = event.getMessage().contains("" + ChatColor.AQUA + ChatColor.WHITE + ChatColor.AQUA + ChatColor.BLACK);
for (Iterator iter = event.getRecipients().iterator(); iter.hasNext();) {
Player player = (Player) iter.next();
for (Iterator<Player> iter = event.getRecipients().iterator(); iter.hasNext();) {
Player player = iter.next();
ClanPlayer rcp = plugin.getClanManager().getClanPlayer(player);
@@ -259,7 +258,7 @@ public class SCPlayerListener implements Listener {
SimpleClans.getInstance().getPermissionsManager().addPlayerPermissions(cp);
if (plugin.getSettingsManager().isBbShowOnLogin() && cp.isBbEnabled()) {
cp.getClan().displayBb(player);
cp.getClan().displayBb(player, plugin.getSettingsManager().getBbLoginSize());
}
SimpleClans.getInstance().getPermissionsManager().addClanPermissions(cp);
@@ -10,10 +10,13 @@ import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.PlayerInventory;
import java.text.MessageFormat;
import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;
import java.util.*;
import net.sacredlabyrinth.phaed.simpleclans.events.ChatEvent;
import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer;
import org.bukkit.scheduler.BukkitRunnable;
/**
* @author phaed
@@ -23,6 +26,7 @@ public final class ClanManager {
private SimpleClans plugin;
private HashMap<String, Clan> clans = new HashMap<>();
private HashMap<String, ClanPlayer> clanPlayers = new HashMap<>();
private HashMap<ClanPlayer, List<Kill>> kills = new HashMap<>();
/**
*
@@ -37,8 +41,76 @@ public final class ClanManager {
public void cleanData() {
clans.clear();
clanPlayers.clear();
kills.clear();
}
/**
* Adds a kill to the memory
*
* @param kill
*/
public void addKill(Kill kill) {
if (kill == null) {
return;
}
List<Kill> list = kills.get(kill.getKiller());
if (list == null) {
list = new ArrayList<>();
kills.put(kill.getKiller(), list);
}
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);
}
/**
* Checks if this kill respects the delay
*
* @param kill
* @return
*/
public boolean isKillBeforeDelay(Kill kill) {
if (kill == null) {
return false;
}
List<Kill> list = kills.get(kill.getKiller());
if (list == null) {
return false;
}
Iterator<Kill> iterator = list.iterator();
while (iterator.hasNext()) {
Kill oldKill = iterator.next();
if (oldKill.getVictim().equals(kill.getVictim())) {
final int delay = plugin.getSettingsManager().getDelayBetweenKills();
long timePassed = oldKill.getTime().until(kill.getTime(), ChronoUnit.MINUTES);
if (timePassed < delay) {
return true;
}
}
}
return false;
}
/**
* Import a clan into the in-memory store
*
@@ -54,13 +126,9 @@ public final class ClanManager {
* @param cp
*/
public void importClanPlayer(ClanPlayer cp) {
if (SimpleClans.getInstance().hasUUID()) {
if (cp.getUniqueId() != null) {
this.clanPlayers.put(cp.getUniqueId().toString(), cp);
}
} else {
this.clanPlayers.put(cp.getCleanName(), cp);
}
if (cp.getUniqueId() != null) {
this.clanPlayers.put(cp.getUniqueId().toString(), cp);
}
}
/**
@@ -71,12 +139,7 @@ public final class ClanManager {
* @param name
*/
public void createClan(Player player, String colorTag, String name) {
ClanPlayer cp;
if (SimpleClans.getInstance().hasUUID()) {
cp = getCreateClanPlayer(player.getUniqueId());
} else {
cp = getCreateClanPlayer(player.getName());
}
ClanPlayer cp = getCreateClanPlayer(player.getUniqueId());
boolean verified = !plugin.getSettingsManager().isRequireVerification() || plugin.getPermissionsManager().has(player, "simpleclans.mod.verify");
@@ -91,17 +154,18 @@ public final class ClanManager {
SimpleClans.getInstance().getPermissionsManager().updateClanPermissions(clan);
SimpleClans.getInstance().getServer().getPluginManager().callEvent(new CreateClanEvent(clan));
}
/**
* Reset a player's kdr
* @param cp
* Reset a player's KDR
*
* @param cp
*/
public void resetKdr(ClanPlayer cp) {
cp.setCivilianKills(0);
cp.setNeutralKills(0);
cp.setRivalKills(0);
cp.setDeaths(0);
plugin.getStorageManager().updateClanPlayerAsync(cp);
plugin.getStorageManager().updateClanPlayer(cp);
}
/**
@@ -110,7 +174,11 @@ public final class ClanManager {
* @param cp
*/
public void deleteClanPlayer(ClanPlayer cp) {
clanPlayers.remove(cp.getCleanName());
Clan clan = cp.getClan();
if (clan != null) {
clan.removePlayerFromClan(cp.getUniqueId());
}
clanPlayers.remove(cp.getUniqueId().toString());
plugin.getStorageManager().deleteClanPlayer(cp);
}
@@ -153,23 +221,6 @@ public final class ClanManager {
return clans.get(Helper.cleanTag(tag));
}
/**
* Get a player's clan
*
* @param playerName
* @return null if not in a clan
*/
@Deprecated
public Clan getClanByPlayerName(String playerName) {
ClanPlayer cp = getClanPlayer(playerName);
if (cp != null) {
return cp.getClan();
}
return null;
}
/**
* Get a player's clan
*
@@ -211,11 +262,7 @@ public final class ClanManager {
*/
public ClanPlayer getClanPlayerJoinEvent(Player player) {
SimpleClans.getInstance().getStorageManager().importFromDatabaseOnePlayer(player);
if (SimpleClans.getInstance().hasUUID()) {
return getClanPlayer(player.getUniqueId());
} else {
return getClanPlayer(player.getName());
}
return getClanPlayer(player.getUniqueId());
}
/**
@@ -226,14 +273,9 @@ public final class ClanManager {
* @return
*/
public ClanPlayer getClanPlayer(OfflinePlayer player) {
if (SimpleClans.getInstance().hasUUID()) {
return getClanPlayer(player.getUniqueId());
} else {
return getClanPlayer(player.getName());
}
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
@@ -245,33 +287,6 @@ public final class ClanManager {
return getClanPlayer((OfflinePlayer) player);
}
/**
* Gets the ClanPlayer data object if a player is currently in a clan, null
* if he's not in a clan
*
* @param playerName
* @return
*/
@Deprecated
public ClanPlayer getClanPlayer(String playerName) {
ClanPlayer cp;
if (SimpleClans.getInstance().hasUUID()) {
cp = getClanPlayerName(playerName);
} else {
cp = clanPlayers.get(playerName.toLowerCase());
}
if (cp == null) {
return null;
}
if (cp.getClan() == null) {
return null;
}
return cp;
}
/**
* Gets the ClanPlayer data object if a player is currently in a clan, null
* if he's not in a clan
@@ -320,24 +335,6 @@ public final class ClanManager {
return cp;
}
/**
* Gets the ClanPlayer data object for the player, will retrieve disabled
* 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.
*
* @param playerName
* @return
*/
@Deprecated
public ClanPlayer getAnyClanPlayer(String playerName) {
if (SimpleClans.getInstance().hasUUID()) {
return getClanPlayerName(playerName);
} else {
return clanPlayers.get(playerName.toLowerCase());
}
}
/**
* Gets the ClanPlayer data object for the player, will retrieve disabled
* clan players as well, these are players who used to be in a clan but are
@@ -351,26 +348,6 @@ public final class ClanManager {
return clanPlayers.get(playerUniqueId.toString());
}
/**
* Gets the ClanPlayer object for the player, creates one if not found
*
* @param playerName
* @return
*/
@Deprecated
public ClanPlayer getCreateClanPlayer(String playerName) {
if (clanPlayers.containsKey(playerName.toLowerCase())) {
return clanPlayers.get(playerName.toLowerCase());
}
ClanPlayer cp = new ClanPlayer(playerName);
plugin.getStorageManager().insertClanPlayer(cp);
importClanPlayer(cp);
return cp;
}
/**
* Gets the ClanPlayer object for the player, creates one if not found
*
@@ -378,16 +355,12 @@ public final class ClanManager {
* @return
*/
public ClanPlayer getCreateClanPlayerUUID(String playerDisplayName) {
if (SimpleClans.getInstance().hasUUID()) {
UUID playerUniqueId = UUIDMigration.getForcedPlayerUUID(playerDisplayName);
if (playerUniqueId != null) {
return getCreateClanPlayer(playerUniqueId);
} else {
return null;
}
} else {
return getCreateClanPlayer(playerDisplayName);
}
UUID playerUniqueId = UUIDMigration.getForcedPlayerUUID(playerDisplayName);
if (playerUniqueId != null) {
return getCreateClanPlayer(playerUniqueId);
} else {
return null;
}
}
/**
@@ -442,11 +415,11 @@ public final class ClanManager {
if (plugin.getSettingsManager().isChatTags()) {
String prefix = plugin.getPermissionsManager().getPrefix(player);
String suffix = plugin.getPermissionsManager().getSuffix(player);
//String suffix = plugin.getPermissionsManager().getSuffix(player);
String lastColor = plugin.getSettingsManager().isUseColorCodeFromPrefix() ? Helper.getLastColorCode(prefix) : ChatColor.WHITE + "";
String fullName = player.getName();
ClanPlayer cp = plugin.getClanManager().getAnyClanPlayer(player.getName());
ClanPlayer cp = plugin.getClanManager().getAnyClanPlayer(player.getUniqueId());
if (cp == null) {
return;
@@ -472,27 +445,32 @@ public final class ClanManager {
* @param player
*/
public void updateLastSeen(Player player) {
ClanPlayer cp = getAnyClanPlayer(player.getName());
ClanPlayer cp = getAnyClanPlayer(player.getUniqueId());
if (cp != null) {
cp.updateLastSeen();
plugin.getStorageManager().updateClanPlayerAsync(cp);
plugin.getStorageManager().updateClanPlayer(cp);
Clan clan = cp.getClan();
if (clan != null) {
clan.updateLastUsed();
plugin.getStorageManager().updateClanAsync(clan);
plugin.getStorageManager().updateClan(clan);
}
}
}
/**
* @param playerName
* Bans a player from clan commands
*
* @param uuid the player's uuid
*/
public void ban(String playerName) {
ClanPlayer cp = getClanPlayer(playerName);
Clan clan = cp.getClan();
public void ban(UUID uuid) {
ClanPlayer cp = getClanPlayer(uuid);
Clan clan = null;
if (cp != null) {
clan = cp.getClan();
}
if (clan != null) {
if (clan.getSize() == 1) {
@@ -502,14 +480,14 @@ public final class ClanManager {
cp.addPastClan(clan.getColorTag() + (cp.isLeader() ? ChatColor.DARK_RED + "*" : ""));
cp.setLeader(false);
cp.setJoinDate(0);
clan.removeMember(playerName);
clan.removeMember(uuid);
plugin.getStorageManager().updateClanPlayer(cp);
plugin.getStorageManager().updateClan(clan);
}
}
plugin.getSettingsManager().addBanned(playerName);
plugin.getSettingsManager().addBanned(uuid);
}
/**
@@ -545,7 +523,7 @@ public final class ClanManager {
out += ChatColor.WHITE + plugin.getLang("armor.h");
} else if (h.getType().equals(Material.DIAMOND_HELMET)) {
out += ChatColor.AQUA + plugin.getLang("armor.h");
} else if (h.getType().equals(Material.GOLD_HELMET)) {
} else if (h.getType().equals(Material.GOLDEN_HELMET)) {
out += ChatColor.YELLOW + plugin.getLang("armor.h");
} else if (h.getType().equals(Material.IRON_HELMET)) {
out += ChatColor.GRAY + plugin.getLang("armor.h");
@@ -564,7 +542,7 @@ public final class ClanManager {
out += ChatColor.WHITE + plugin.getLang("armor.c");
} else if (c.getType().equals(Material.DIAMOND_CHESTPLATE)) {
out += ChatColor.AQUA + plugin.getLang("armor.c");
} else if (c.getType().equals(Material.GOLD_CHESTPLATE)) {
} else if (c.getType().equals(Material.GOLDEN_CHESTPLATE)) {
out += ChatColor.YELLOW + plugin.getLang("armor.c");
} else if (c.getType().equals(Material.IRON_CHESTPLATE)) {
out += ChatColor.GRAY + plugin.getLang("armor.c");
@@ -583,7 +561,7 @@ public final class ClanManager {
out += ChatColor.WHITE + plugin.getLang("armor.l");
} else if (l.getType().equals(Material.DIAMOND_LEGGINGS)) {
out += plugin.getLang("armor.l");
} else if (l.getType().equals(Material.GOLD_LEGGINGS)) {
} else if (l.getType().equals(Material.GOLDEN_LEGGINGS)) {
out += plugin.getLang("armor.l");
} else if (l.getType().equals(Material.IRON_LEGGINGS)) {
out += plugin.getLang("armor.l");
@@ -602,7 +580,7 @@ public final class ClanManager {
out += ChatColor.WHITE + plugin.getLang("armor.B");
} else if (b.getType().equals(Material.DIAMOND_BOOTS)) {
out += ChatColor.AQUA + plugin.getLang("armor.B");
} else if (b.getType().equals(Material.GOLD_BOOTS)) {
} else if (b.getType().equals(Material.GOLDEN_BOOTS)) {
out += ChatColor.YELLOW + plugin.getLang("armor.B");
} else if (b.getType().equals(Material.IRON_BOOTS)) {
out += ChatColor.WHITE + plugin.getLang("armor.B");
@@ -640,7 +618,7 @@ public final class ClanManager {
out += ChatColor.AQUA + plugin.getLang("weapon.S") + headColor + countString;
}
count = getItemCount(inv.all(Material.GOLD_SWORD));
count = getItemCount(inv.all(Material.GOLDEN_SWORD));
if (count > 0) {
String countString = count > 1 ? count + "" : "";
@@ -661,7 +639,7 @@ public final class ClanManager {
out += ChatColor.GRAY + plugin.getLang("weapon.S") + headColor + countString;
}
count = getItemCount(inv.all(Material.WOOD_SWORD));
count = getItemCount(inv.all(Material.WOODEN_SWORD));
if (count > 0) {
String countString = count > 1 ? count + "" : "";
@@ -680,7 +658,7 @@ public final class ClanManager {
count += getItemCount(inv.all(Material.TIPPED_ARROW));
if (count > 0) {
out += ChatColor.WHITE + headColor + count;
out += ChatColor.WHITE + plugin.getLang("weapon.A") + headColor + count;
}
if (out.length() == 0) {
@@ -724,30 +702,30 @@ public final class ClanManager {
count += getFoodPoints(inv, Material.CAKE, 14, 2.8);
count += getFoodPoints(inv, Material.CARROT, 3, 3.6);
count += getFoodPoints(inv, Material.CHORUS_FRUIT, 4, 2.4);
count += getFoodPoints(inv, Material.RAW_FISH, 2, 5, .2); //clownfish
count += getFoodPoints(inv, Material.COOKED_CHICKEN, 6, 7.2);
count += getFoodPoints(inv, Material.COOKED_FISH, 5, 6);
count += getFoodPoints(inv, Material.COOKED_MUTTON, 6, 9.6);
count += getFoodPoints(inv, Material.GRILLED_PORK, 8, 12.8);
count += getFoodPoints(inv, Material.COOKED_PORKCHOP, 8, 12.8);
count += getFoodPoints(inv, Material.COOKED_RABBIT, 5, 6);
count += getFoodPoints(inv, Material.COOKED_FISH, 1, 6, 9.6); //salmon
count += getFoodPoints(inv, Material.COOKED_SALMON, 1, 6, 9.6);
count += getFoodPoints(inv, Material.COOKIE, 2, .4);
count += getFoodPoints(inv, Material.GOLDEN_APPLE, 4, 9.6);
count += getFoodPoints(inv, Material.GOLDEN_CARROT, 6, 14.4);
count += getFoodPoints(inv, Material.MELON, 2, 1.2);
count += getFoodPoints(inv, Material.MUSHROOM_SOUP, 6, 7.2);
count += getFoodPoints(inv, Material.MUSHROOM_STEW, 6, 7.2);
count += getFoodPoints(inv, Material.POISONOUS_POTATO, 2, 1.2);
count += getFoodPoints(inv, Material.POTATO, 1, 0.6);
count += getFoodPoints(inv, Material.RAW_FISH, 3, 1, 0.2); //pufferfish
count += getFoodPoints(inv, Material.PUFFERFISH, 3, 1, 0.2);
count += getFoodPoints(inv, Material.PUMPKIN_PIE, 8, 4.8);
count += getFoodPoints(inv, Material.RABBIT_STEW, 10, 12);
count += getFoodPoints(inv, Material.RAW_BEEF, 3, 1.8);
count += getFoodPoints(inv, Material.RAW_CHICKEN, 2, 1.2);
count += getFoodPoints(inv, Material.RAW_FISH, 0, 4, .4); //fish
count += getFoodPoints(inv, Material.BEEF, 3, 1.8);
count += getFoodPoints(inv, Material.CHICKEN, 2, 1.2);
count += getFoodPoints(inv, Material.MUTTON, 2, 1.2);
count += getFoodPoints(inv, Material.PORK, 3, 1.8);
count += getFoodPoints(inv, Material.PORKCHOP, 3, 1.8);
count += getFoodPoints(inv, Material.RABBIT, 3, 1.8);
count += getFoodPoints(inv, Material.RAW_FISH, 1, .4); //raw salmon
count += getFoodPoints(inv, Material.SALMON, 1, .4);
count += getFoodPoints(inv, Material.COD, 2, .4);
count += getFoodPoints(inv, Material.COOKED_COD, 5, 6);
count += getFoodPoints(inv, Material.TROPICAL_FISH, 1, .2);
count += getFoodPoints(inv, Material.ROTTEN_FLESH, 4, .8);
count += getFoodPoints(inv, Material.SPIDER_EYE, 2, 3.2);
count += getFoodPoints(inv, Material.COOKED_BEEF, 8, 12.8);
@@ -806,6 +784,90 @@ public final class ClanManager {
return out;
}
/**
* Sort clans by active
*
* @param clans
* @param asc
*/
public void sortClansByActive(List<Clan> clans, boolean asc) {
clans.sort((c1, c2) -> {
int o = 1;
if (!asc) {
o = -1;
}
return ((Long) c1.getLastUsed()).compareTo(c2.getLastUsed()) * o;
});
}
/**
* Sort clans by founded date
*
* @param clans
* @param asc
*/
public void sortClansByFounded(List<Clan> clans, boolean asc) {
clans.sort((c1, c2) -> {
int o = 1;
if (!asc) {
o = -1;
}
return ((Long) c1.getFounded()).compareTo(c2.getFounded()) * o;
});
}
/**
* Sort clans by kdr
*
* @param clans
* @param asc
*/
public void sortClansByKDR(List<Clan> clans, boolean asc) {
clans.sort((c1, c2) -> {
int o = 1;
if (!asc) {
o = -1;
}
return ((Float) c1.getTotalKDR()).compareTo(c2.getTotalKDR()) * o;
});
}
/**
* Sort clans by size
*
* @param clans
* @param asc
*/
public void sortClansBySize(List<Clan> clans, boolean asc) {
clans.sort((c1, c2) -> {
int o = 1;
if (!asc) {
o = -1;
}
return ((Integer) c1.getSize()).compareTo(c2.getSize()) * o;
});
}
/**
* Sort clans by name
*
* @param clans
*/
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;
});
}
/**
* Sort clans by KDR
@@ -880,6 +942,32 @@ public final class ClanManager {
}
});
}
/**
* Purchase member fee set
*
* @param player
* @return
*/
public boolean purchaseMemberFeeSet(Player player) {
if (!plugin.getSettingsManager().isePurchaseMemberFeeSet()) {
return true;
}
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(plugin.getLang("account.has.been.debited"), price));
} else {
player.sendMessage(ChatColor.RED + plugin.getLang("not.sufficient.money"));
return false;
}
}
return true;
}
/**
* Purchase clan creation
@@ -984,10 +1072,10 @@ public final class ClanManager {
return true;
}
/**
* Purchase Reset Kdr
*
*
* @param player
* @return
*/
@@ -995,9 +1083,9 @@ public final class ClanManager {
if (!plugin.getSettingsManager().isePurchaseResetKdr()) {
return true;
}
double price = plugin.getSettingsManager().geteResetKdr();
if (plugin.getPermissionsManager().hasEconomy()) {
if (plugin.getPermissionsManager().playerHasMoney(player, price)) {
plugin.getPermissionsManager().playerChargeMoney(player, price);
@@ -1101,8 +1189,8 @@ public final class ClanManager {
* @param player
* @param msg
*/
public void processClanChat(Player player, String msg) {
ClanPlayer cp = plugin.getClanManager().getClanPlayer(player);
public void processClanChat(Player player, final String msg) {
final ClanPlayer cp = plugin.getClanManager().getClanPlayer(player);
if (cp == null) {
return;
@@ -1141,29 +1229,34 @@ public final class ClanManager {
ChatBlock.sendMessage(player, ChatColor.AQUA + "You have unmuted clan chat");
}
} else {
List<ClanPlayer> receivers = new LinkedList<>();
final List<ClanPlayer> receivers = new LinkedList<>();
for (ClanPlayer p : cp.getClan().getOnlineMembers()) {
if (!p.isMuted()) {
receivers.add(p);
}
}
ChatEvent ce = new ChatEvent(msg, cp, receivers, ChatEvent.Type.CLAN);
Bukkit.getServer().getPluginManager().callEvent(ce);
if (ce.isCancelled()) {
return;
}
String message = Helper.formatClanChat(cp, ce.getMessage(), ce.getPlaceholders());
String eyeMessage = Helper.formatSpyClanChat(cp, message);
plugin.getServer().getConsoleSender().sendMessage(eyeMessage);
for (ClanPlayer p : ce.getReceivers()) {
ChatBlock.sendMessage(p.toPlayer(), message);
}
sendToAllSeeing(eyeMessage, ce.getReceivers());
new BukkitRunnable() {
@Override
public void run() {
ChatEvent ce = new ChatEvent(msg, cp, receivers, ChatEvent.Type.CLAN);
Bukkit.getServer().getPluginManager().callEvent(ce);
if (ce.isCancelled()) {
return;
}
String message = Helper.formatClanChat(cp, ce.getMessage(), ce.getPlaceholders());
String eyeMessage = Helper.formatSpyClanChat(cp, message);
plugin.getServer().getConsoleSender().sendMessage(eyeMessage);
for (ClanPlayer p : ce.getReceivers()) {
ChatBlock.sendMessage(p.toPlayer(), message);
}
sendToAllSeeing(eyeMessage, ce.getReceivers());
}
}.runTask(plugin);
}
}
@@ -1199,8 +1292,8 @@ public final class ClanManager {
* @param player
* @param msg
*/
public void processAllyChat(Player player, String msg) {
ClanPlayer cp = plugin.getClanManager().getClanPlayer(player);
public void processAllyChat(Player player, final String msg) {
final ClanPlayer cp = plugin.getClanManager().getClanPlayer(player);
if (cp == null) {
return;
@@ -1239,41 +1332,40 @@ public final class ClanManager {
ChatBlock.sendMessage(player, ChatColor.AQUA + "You have unmuted ally chat");
}
} else {
List<ClanPlayer> receivers = new LinkedList<>();
final List<ClanPlayer> receivers = new LinkedList<>();
Set<ClanPlayer> allies = cp.getClan().getAllAllyMembers();
allies.addAll(cp.getClan().getMembers());
for (ClanPlayer ally : allies) {
if (ally.isMutedAlly()) {
continue;
}
if (SimpleClans.getInstance().hasUUID()) {
if (player.getUniqueId().equals(ally.getUniqueId())) {
continue;
}
} else {
if (player.getName().equalsIgnoreCase(ally.getName())) {
continue;
}
}
if (player.getUniqueId().equals(ally.getUniqueId())) {
continue;
}
receivers.add(ally);
}
ChatEvent ce = new ChatEvent(msg, cp, receivers, ChatEvent.Type.ALLY);
Bukkit.getServer().getPluginManager().callEvent(ce);
if (ce.isCancelled()) {
return;
}
String message = Helper.formatAllyChat(cp, ce.getMessage(), ce.getPlaceholders());
SimpleClans.log(message);
Player self = cp.toPlayer();
ChatBlock.sendMessage(self, message);
new BukkitRunnable() {
@Override
public void run() {
ChatEvent ce = new ChatEvent(msg, cp, receivers, ChatEvent.Type.ALLY);
Bukkit.getServer().getPluginManager().callEvent(ce);
for (ClanPlayer p : ce.getReceivers()) {
ChatBlock.sendMessage(p.toPlayer(), message);
}
if (ce.isCancelled()) {
return;
}
String message = Helper.formatAllyChat(cp, ce.getMessage(), ce.getPlaceholders());
plugin.getLogger().info(message);
Player self = cp.toPlayer();
ChatBlock.sendMessage(self, message);
for (ClanPlayer p : ce.getReceivers()) {
ChatBlock.sendMessage(p.toPlayer(), message);
}
}
}.runTask(plugin);
}
}
@@ -1285,12 +1377,7 @@ public final class ClanManager {
* @return boolean
*/
public boolean processGlobalChat(Player player, String msg) {
ClanPlayer cp;
if (SimpleClans.getInstance().hasUUID()) {
cp = plugin.getClanManager().getClanPlayer(player.getUniqueId());
} else {
cp = plugin.getClanManager().getClanPlayer(player.getName());
}
ClanPlayer cp = plugin.getClanManager().getClanPlayer(player.getUniqueId());
if (cp == null) {
return false;
@@ -7,16 +7,16 @@ import org.yaml.snakeyaml.Yaml;
import java.io.*;
import java.util.HashMap;
import java.util.TreeMap;
@SuppressWarnings("unchecked")
@Deprecated
public class LanguageManager {
private File file;
private HashMap<String, String> language;
private String[] comments = new String[]{};
public LanguageManager() {
load();
//load();
}
public void load() {
@@ -85,6 +85,6 @@ public class LanguageManager {
return o.toString();
}
return null;
return "Missing language for "+key;
}
}
@@ -3,17 +3,23 @@ package net.sacredlabyrinth.phaed.simpleclans.managers;
import net.milkbowl.vault.chat.Chat;
import net.milkbowl.vault.economy.Economy;
import net.milkbowl.vault.permission.Permission;
import net.sacredlabyrinth.phaed.simpleclans.ChatBlock;
import net.sacredlabyrinth.phaed.simpleclans.Clan;
import net.sacredlabyrinth.phaed.simpleclans.ClanPlayer;
import net.sacredlabyrinth.phaed.simpleclans.PermissionLevel;
import net.sacredlabyrinth.phaed.simpleclans.RankPermission;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
import org.bukkit.entity.Player;
import org.bukkit.permissions.PermissionAttachment;
import org.bukkit.plugin.RegisteredServiceProvider;
import java.text.MessageFormat;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.bukkit.ChatColor;
import org.bukkit.OfflinePlayer;
/**
@@ -46,12 +52,12 @@ public final class PermissionsManager {
setupEconomy();
setupPermissions();
} catch (ClassNotFoundException e) {
SimpleClans.log("[SimpleClans] Vault not found. No economy or extended Permissions support.");
SimpleClans.getInstance().getLogger().info("Vault not found. No economy or extended Permissions support.");
}
}
/**
* Whether exonomy plugin exists and is enabled
* Whether economy plugin exists and is enabled
*
* @return
*/
@@ -71,7 +77,7 @@ public final class PermissionsManager {
}
/**
* Saves the permissions for earch clan from the config
* Saves the permissions for each clan from the config
*/
public void savePermissions() {
for (Clan clan : plugin.getClanManager().getClans()) {
@@ -79,11 +85,12 @@ public final class PermissionsManager {
SimpleClans.getInstance().getSettingsManager().getConfig().set("permissions." + clan.getTag(), getPermissions(clan));
}
}
SimpleClans.getInstance().getSettingsManager().load();
SimpleClans.getInstance().getSettingsManager().save();
}
/**
* Adds all pemrissions for a clan
* Adds all permissions for a clan
*
* @param clan
*/
@@ -157,6 +164,29 @@ public final class PermissionsManager {
public Map<Player, PermissionAttachment> getPermAttaches() {
return permAttaches;
}
/**
* Charge a player some money
*
* @param player
* @param money
* @return
*/
@Deprecated
public boolean playerChargeMoney(String player, double money) {
return economy.withdrawPlayer(player, money).transactionSuccess();
}
/**
* Charge a player some money
*
* @param player
* @param money
* @return
*/
public boolean playerChargeMoney(OfflinePlayer player, double money) {
return economy.withdrawPlayer(player, money).transactionSuccess();
}
/**
* Charge a player some money
@@ -166,7 +196,7 @@ public final class PermissionsManager {
* @return
*/
public boolean playerChargeMoney(Player player, double money) {
return economy.withdrawPlayer(player, money).transactionSuccess();
return playerChargeMoney((OfflinePlayer) player, money);
}
/**
@@ -224,6 +254,22 @@ public final class PermissionsManager {
return economy.getBalance(player);
}
/**
* Check if a player has permissions
*
* @param world the world
* @param player the player
* @param perm the permission
* @return whether he has the permission
*/
public boolean has(String world, OfflinePlayer player, String perm) {
if (player != null && permission != null) {
return permission.playerHas(world, player, perm);
}
return false;
}
/**
* Check if a player has permissions
*
@@ -242,6 +288,60 @@ public final class PermissionsManager {
return player.hasPermission(perm);
}
}
/**
* Checks if the player has the rank permission or the permission level, and the equivalent Bukkit permission
*
* @param player the player
* @param permission the rank permission
* @param notify notify the player if they don't have permission
* @return
*/
public boolean has(Player player, RankPermission permission, PermissionLevel level, boolean notify) {
if (player == null || permission == null) {
return false;
}
ClanPlayer clanPlayer = plugin.getClanManager().getClanPlayer(player);
if (clanPlayer == null) {
return false;
}
boolean hasBukkitPermission = has(player, permission.getBukkitPermission());
if (!hasBukkitPermission) {
return false;
}
boolean hasLevel = false;
if (level != null) {
switch (level) {
case LEADER:
hasLevel = clanPlayer.isLeader();
break;
case TRUSTED:
hasLevel = clanPlayer.isTrusted();
break;
}
}
boolean hasRankPermission = false;
String rankName = clanPlayer.getRankId();
Clan clan = clanPlayer.getClan();
if (clan.hasRank(rankName)) {
hasRankPermission = clan.getRank(rankName).getPermissions().contains(permission.toString());
} else {
if (rankName != null && !rankName.isEmpty()) {
clanPlayer.setRank(null);
}
}
if (notify && !hasLevel && !hasRankPermission) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(plugin.getLang("you.must.be.0.or.have.the.permission.1.to.use.this"),
level == PermissionLevel.LEADER ? plugin.getLang("leader") : plugin.getLang("trusted"), permission.toString()));
}
return hasLevel || hasRankPermission;
}
/**
* Gives the player permissions linked to a clan
@@ -0,0 +1,271 @@
package net.sacredlabyrinth.phaed.simpleclans.managers;
import org.bukkit.OfflinePlayer;
import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin;
import me.clip.placeholderapi.PlaceholderAPI;
import me.clip.placeholderapi.PlaceholderHook;
import net.sacredlabyrinth.phaed.simpleclans.Clan;
import net.sacredlabyrinth.phaed.simpleclans.ClanPlayer;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
import static me.clip.placeholderapi.PlaceholderAPIPlugin.booleanFalse;
import static me.clip.placeholderapi.PlaceholderAPIPlugin.booleanTrue;
/**
* {@link Class} to manage and hook {@link SimpleClans} into {@link PlaceholderAPI}
*
* @since 2.10.1
*
* @author Peng1104
*/
public final class PlaceholdersManager {
/**
* The {@link SimpleClans} {@link Plugin} instance
*
* @since 2.10.1
*/
private SimpleClans plugin;
/**
* The {@link PlaceholdersManager} constructor
*
* @since 2.10.1
*/
public PlaceholdersManager(SimpleClans plugin) {
this.plugin = plugin;
setupPlaceholderAPI();
}
/**
* Registers the {@link PlaceholderAPI} hook
*
* @since 2.10.1
*/
private void setupPlaceholderAPI() {
PlaceholderAPI.registerPlaceholderHook(plugin.getName(), new PlaceholderHook() {
@Override
public String onPlaceholderRequest(Player player, String identifier) {
return onRequest(player, identifier);
}
@Override
public String onRequest(OfflinePlayer player, String identifier) {
if (player == null) return "";
return getPlaceholderValue(SimpleClans.getInstance().getClanManager().getAnyClanPlayer(player.getUniqueId()), identifier);
}
});
}
/**
* Gets a value for the requested {@link ClanPlayer} and identifier
*
* @param player The {@link ClanPlayer} to request the placeholders value for
* @param identifier String that determine what value to return
*
* @return value for the requested {@link ClanPlayer} and params
*
* @since 2.10.1
*/
public String getPlaceholderValue(ClanPlayer player, String identifier) {
if (player == null) return "";
Clan clan = player.getClan();
switch (identifier) {
case "neutral_kills": {
return String.valueOf(player.getNeutralKills());
}
case "rival_kills": {
return String.valueOf(player.getRivalKills());
}
case "civilian_kills": {
return String.valueOf(player.getCivilianKills());
}
case "total_kills": {
return String.valueOf(player.getNeutralKills() + player.getRivalKills() + player.getCivilianKills());
}
case "weighted_kills": {
return String.valueOf(player.getWeightedKills());
}
case "deaths": {
return String.valueOf(player.getDeaths());
}
case "kdr": {
return String.valueOf(player.getKDR());
}
case "in_clan": {
return (clan != null) ? booleanTrue() : booleanFalse();
}
case "is_leader": {
return player.isLeader() ? booleanTrue() : booleanFalse();
}
case "is_trusted": {
return (!player.isLeader() && player.isTrusted()) ? booleanTrue() : booleanFalse();
}
case "is_member": {
return (!player.isTrusted() && !player.isLeader() && clan != null) ? booleanTrue() : booleanFalse();
}
case "is_bb_enabled": {
return player.isBbEnabled() ? booleanTrue() : booleanFalse();
}
case "is_usechatshortcut": {
return player.isUseChatShortcut() ? booleanTrue() : booleanFalse();
}
case "is_allychat": {
return player.isAllyChat() ? booleanTrue() : booleanFalse();
}
case "is_clanchat": {
return player.isClanChat() ? booleanTrue() : booleanFalse();
}
case "is_globalchat": {
return player.isGlobalChat() ? booleanTrue() : booleanFalse();
}
case "is_cape_enabled": {
return player.isCapeEnabled() ? booleanTrue() : booleanFalse();
}
case "is_tag_enabled": {
return player.isTagEnabled() ? booleanTrue() : booleanFalse();
}
case "is_friendlyfire_on": {
return player.isFriendlyFire() ? booleanTrue() : booleanFalse();
}
case "is_muted": {
return player.isMuted() ? booleanTrue() : booleanFalse();
}
case "is_mutedally": {
return player.isMutedAlly() ? booleanTrue() : booleanFalse();
}
case "join_date": {
return player.getJoinDateString();
}
case "inactive_days": {
return String.valueOf(player.getInactiveDays());
}
case "lastseen": {
return player.getLastSeenString();
}
case "lastseendays": {
return player.getLastSeenDaysString();
}
case "tag": {
return player.getTag();
}
case "tag_label": {
return player.getTagLabel();
}
case "rank": {
return player.getRankId();
}
case "rank_displayname": {
return player.getRankDisplayName();
}
case "clanchat_player_color": {
if (player.isLeader()) return plugin.getSettingsManager().getClanChatLeaderColor();
if (player.isTrusted()) return plugin.getSettingsManager().getClanChatTrustedColor();
if (clan != null) return plugin.getSettingsManager().getClanChatMemberColor();
return "";
}
case "allychat_player_color": {
if (player.isLeader()) return plugin.getSettingsManager().getAllyChatLeaderColor();
if (player.isTrusted()) return plugin.getSettingsManager().getAllyChatTrustedColor();
if (clan != null) return plugin.getSettingsManager().getAllyChatMemberColor();
return "";
}
default:
break;
}
if (clan == null) return "";
switch (identifier) {
case "clan_total_neutral": {
return String.valueOf(clan.getTotalNeutral());
}
case "clan_total_civilian": {
return String.valueOf(clan.getTotalCivilian());
}
case "clan_total_rival": {
return String.valueOf(clan.getTotalRival());
}
case "clan_total_kills": {
return String.valueOf(clan.getTotalRival() + clan.getTotalNeutral() + clan.getTotalCivilian());
}
case "clan_total_deaths": {
return String.valueOf(clan.getTotalDeaths());
}
case "clan_total_kdr": {
return String.valueOf(clan.getTotalKDR());
}
case "clan_average_wk": {
return String.valueOf(clan.getAverageWK());
}
case "clan_leader_size": {
return String.valueOf(clan.getLeaders().size());
}
case "clan_balance": {
return String.valueOf(clan.getBalance());
}
case "clan_allow_withdraw": {
return clan.isAllowWithdraw() ? booleanTrue() : booleanFalse();
}
case "clan_allow_deposit": {
return clan.isAllowDeposit() ? booleanTrue() : booleanFalse();
}
case "clan_size": {
return String.valueOf(clan.getSize());
}
case "clan_name": {
return clan.getName();
}
case "clan_color_tag": {
return clan.getColorTag();
}
case "clan_tag": {
return clan.getTag();
}
case "clan_founded": {
return clan.getFoundedString();
}
case "clan_friendly_fire": {
return clan.isFriendlyFire() ? booleanTrue() : booleanFalse();
}
case "clan_is_unrivable": {
return clan.isUnrivable() ? booleanTrue() : booleanFalse();
}
case "clan_is_anyonline": {
return clan.isAnyOnline() ? booleanTrue() : booleanFalse();
}
case "clan_is_verified": {
return clan.isVerified() ? booleanTrue() : booleanFalse();
}
case "clan_capeurl": {
return clan.getCapeUrl();
}
case "clan_inactivedays": {
return String.valueOf(clan.getInactiveDays());
}
case "clan_onlinemembers_count": {
return String.valueOf(clan.getOnlineMembers().size());
}
case "clan_allies_count": {
return String.valueOf(clan.getAllies().size());
}
case "clan_rivals_count": {
return String.valueOf(clan.getRivals().size());
}
default:
break;
}
return "";
}
}
@@ -9,6 +9,7 @@ import org.bukkit.entity.Player;
import java.text.MessageFormat;
import java.util.*;
import org.bukkit.scheduler.BukkitRunnable;
/**
* @author phaed
@@ -43,15 +44,19 @@ public final class RequestManager {
* @param clan
*/
public void addDemoteRequest(ClanPlayer requester, String demotedName, Clan clan) {
String msg = MessageFormat.format(plugin.getLang("asking.for.the.demotion"), Helper.capitalize(requester.getName()), demotedName);
if (requests.containsKey(clan.getTag())) {
return;
}
String msg = MessageFormat.format(plugin.getLang("asking.for.the.demotion"), requester.getName(), demotedName);
ClanPlayer demotedTp = plugin.getClanManager().getClanPlayer(demotedName.toLowerCase());
ClanPlayer demotedTp = plugin.getClanManager().getClanPlayer(UUIDMigration.getForcedPlayerUUID(demotedName));
List<ClanPlayer> acceptors = Helper.stripOffLinePlayers(clan.getLeaders());
acceptors.remove(demotedTp);
Request req = new Request(plugin, ClanRequest.DEMOTE, acceptors, requester, demotedName, clan, msg);
requests.put(clan.getTag(), req);
req.vote(requester.getName(), VoteResult.ACCEPT);
requests.put(req.getClan().getTag(), req);
ask(req);
}
@@ -63,13 +68,16 @@ public final class RequestManager {
* @param clan
*/
public void addPromoteRequest(ClanPlayer requester, String promotedName, Clan clan) {
String msg = MessageFormat.format(plugin.getLang("asking.for.the.promotion"), Helper.capitalize(requester.getName()), promotedName);
if (requests.containsKey(clan.getTag())) {
return;
}
String msg = MessageFormat.format(plugin.getLang("asking.for.the.promotion"), requester.getName(), promotedName);
List<ClanPlayer> acceptors = Helper.stripOffLinePlayers(clan.getLeaders());
acceptors.remove(requester);
Request req = new Request(plugin, ClanRequest.PROMOTE, acceptors, requester, promotedName, clan, msg);
requests.put(clan.getTag(), req);
requests.put(req.getClan().getTag(), req);
req.vote(requester.getName(), VoteResult.ACCEPT);
ask(req);
}
@@ -80,13 +88,16 @@ public final class RequestManager {
* @param clan
*/
public void addDisbandRequest(ClanPlayer requester, Clan clan) {
String msg = MessageFormat.format(plugin.getLang("asking.for.the.deletion"), Helper.capitalize(requester.getName()));
if (requests.containsKey(clan.getTag())) {
return;
}
String msg = MessageFormat.format(plugin.getLang("asking.for.the.deletion"), requester.getName());
List<ClanPlayer> acceptors = Helper.stripOffLinePlayers(clan.getLeaders());
acceptors.remove(requester);
Request req = new Request(plugin, ClanRequest.DISBAND, acceptors, requester, clan.getTag(), clan, msg);
requests.put(clan.getTag(), req);
requests.put(req.getTarget(), req);
req.vote(requester.getName(), VoteResult.ACCEPT);
ask(req);
}
@@ -98,7 +109,10 @@ public final class RequestManager {
* @param clan
*/
public void addInviteRequest(ClanPlayer requester, String invitedName, Clan clan) {
String msg = MessageFormat.format(plugin.getLang("inviting.you.to.join"), Helper.capitalize(requester.getName()), clan.getName());
if (requests.containsKey(invitedName.toLowerCase())) {
return;
}
String msg = MessageFormat.format(plugin.getLang("inviting.you.to.join"), requester.getName(), clan.getName());
Request req = new Request(plugin, ClanRequest.INVITE, null, requester, invitedName, clan, msg);
requests.put(invitedName.toLowerCase(), req);
ask(req);
@@ -112,13 +126,16 @@ public final class RequestManager {
* @param requestingClan
*/
public void addWarStartRequest(ClanPlayer requester, Clan warClan, Clan requestingClan) {
String msg = MessageFormat.format(plugin.getLang("proposing.war"), Helper.capitalize(requestingClan.getName()), Helper.stripColors(warClan.getColorTag()));
if (requests.containsKey(warClan.getTag())) {
return;
}
String msg = MessageFormat.format(plugin.getLang("proposing.war"), requestingClan.getName(), Helper.stripColors(warClan.getColorTag()));
List<ClanPlayer> acceptors = Helper.stripOffLinePlayers(warClan.getLeaders());
acceptors.remove(requester);
Request req = new Request(plugin, ClanRequest.START_WAR, acceptors, requester, warClan.getTag(), requestingClan, msg);
requests.put(warClan.getTag(), req);
requests.put(req.getTarget(), req);
ask(req);
}
@@ -130,13 +147,16 @@ public final class RequestManager {
* @param requestingClan
*/
public void addWarEndRequest(ClanPlayer requester, Clan warClan, Clan requestingClan) {
String msg = MessageFormat.format(plugin.getLang("proposing.to.end.the.war"), Helper.capitalize(requestingClan.getName()), Helper.stripColors(warClan.getColorTag()));
if (requests.containsKey(warClan.getTag())) {
return;
}
String msg = MessageFormat.format(plugin.getLang("proposing.to.end.the.war"), requestingClan.getName(), Helper.stripColors(warClan.getColorTag()));
List<ClanPlayer> acceptors = Helper.stripOffLinePlayers(warClan.getLeaders());
acceptors.remove(requester);
Request req = new Request(plugin, ClanRequest.END_WAR, acceptors, requester, warClan.getTag(), requestingClan, msg);
requests.put(warClan.getTag(), req);
requests.put(req.getTarget(), req);
ask(req);
}
@@ -148,13 +168,16 @@ public final class RequestManager {
* @param requestingClan
*/
public void addAllyRequest(ClanPlayer requester, Clan allyClan, Clan requestingClan) {
String msg = MessageFormat.format(plugin.getLang("proposing.an.alliance"), Helper.capitalize(requestingClan.getName()), Helper.stripColors(allyClan.getColorTag()));
if (requests.containsKey(allyClan.getTag())) {
return;
}
String msg = MessageFormat.format(plugin.getLang("proposing.an.alliance"), requestingClan.getName(), Helper.stripColors(allyClan.getColorTag()));
List<ClanPlayer> acceptors = Helper.stripOffLinePlayers(allyClan.getLeaders());
acceptors.remove(requester);
Request req = new Request(plugin, ClanRequest.CREATE_ALLY, acceptors, requester, allyClan.getTag(), requestingClan, msg);
requests.put(allyClan.getTag(), req);
requests.put(req.getTarget(), req);
ask(req);
}
@@ -166,13 +189,16 @@ public final class RequestManager {
* @param requestingClan
*/
public void addRivalryBreakRequest(ClanPlayer requester, Clan rivalClan, Clan requestingClan) {
String msg = MessageFormat.format(plugin.getLang("proposing.to.end.the.rivalry"), Helper.capitalize(requestingClan.getName()), Helper.stripColors(rivalClan.getColorTag()));
if (requests.containsKey(rivalClan.getTag())) {
return;
}
String msg = MessageFormat.format(plugin.getLang("proposing.to.end.the.rivalry"), requestingClan.getName(), Helper.stripColors(rivalClan.getColorTag()));
List<ClanPlayer> acceptors = Helper.stripOffLinePlayers(rivalClan.getLeaders());
acceptors.remove(requester);
Request req = new Request(plugin, ClanRequest.BREAK_RIVALRY, acceptors, requester, rivalClan.getTag(), requestingClan, msg);
requests.put(rivalClan.getTag(), req);
requests.put(req.getTarget(), req);
ask(req);
}
@@ -232,160 +258,171 @@ public final class RequestManager {
return;
}
clan.addBb(ChatColor.AQUA + MessageFormat.format(plugin.getLang("joined.the.clan"), Helper.capitalize(invited)));
plugin.getClanManager().serverAnnounce(MessageFormat.format(plugin.getLang("has.joined"), Helper.capitalize(invited), clan.getName()));
clan.addBb(ChatColor.AQUA + MessageFormat.format(plugin.getLang("joined.the.clan"), invited));
plugin.getClanManager().serverAnnounce(MessageFormat.format(plugin.getLang("has.joined"), invited, clan.getName()));
clan.addPlayerToClan(cp);
} else {
clan.leaderAnnounce(ChatColor.RED + MessageFormat.format(plugin.getLang("membership.invitation"), Helper.capitalize(invited)));
clan.leaderAnnounce(ChatColor.RED + MessageFormat.format(plugin.getLang("membership.invitation"), invited));
}
requests.remove(req.getTarget().toLowerCase());
}
/**
* Check to see if votes are complete and process the result
*
* @param req
*/
public void processResults(Request req) {
if (req.getType().equals(ClanRequest.START_WAR)) {
Clan clan = req.getClan();
Clan war = plugin.getClanManager().getClan(req.getTarget());
ClanPlayer cp = req.getRequester();
if (war != null && clan != null) {
List<String> accepts = req.getAccepts();
List<String> denies = req.getDenies();
if (!accepts.isEmpty()) {
clan.addWarringClan(war);
war.addWarringClan(clan);
war.addBb(cp.getName(), ChatColor.AQUA + MessageFormat.format(plugin.getLang("you.are.at.war"), Helper.capitalize(war.getName()), clan.getColorTag()));
clan.addBb(cp.getName(), ChatColor.AQUA + MessageFormat.format(plugin.getLang("you.are.at.war"), Helper.capitalize(clan.getName()), war.getColorTag()));
} else {
war.addBb(cp.getName(), ChatColor.AQUA + MessageFormat.format(plugin.getLang("denied.war.req"), Helper.capitalize(denies.get(0)), clan.getName()));
clan.addBb(cp.getName(), ChatColor.AQUA + MessageFormat.format(plugin.getLang("end.war.denied"), Helper.capitalize(war.getName())));
}
}
} else if (req.getType().equals(ClanRequest.END_WAR)) {
Clan clan = req.getClan();
Clan war = plugin.getClanManager().getClan(req.getTarget());
ClanPlayer cp = req.getRequester();
if (war != null && clan != null) {
List<String> accepts = req.getAccepts();
List<String> denies = req.getDenies();
if (!accepts.isEmpty()) {
clan.removeWarringClan(war);
war.removeWarringClan(clan);
war.addBb(cp.getName(), ChatColor.AQUA + MessageFormat.format(plugin.getLang("you.are.no.longer.at.war"), Helper.capitalize(accepts.get(0)), clan.getColorTag()));
clan.addBb(cp.getName(), ChatColor.AQUA + MessageFormat.format(plugin.getLang("you.are.no.longer.at.war"), Helper.capitalize(clan.getName()), Helper.capitalize(war.getColorTag())));
} else {
war.addBb(cp.getName(), ChatColor.AQUA + MessageFormat.format(plugin.getLang("denied.war.end"), Helper.capitalize(denies.get(0)), clan.getName()));
clan.addBb(cp.getName(), ChatColor.AQUA + MessageFormat.format(plugin.getLang("end.war.denied"), Helper.capitalize(war.getName())));
}
}
} else if (req.getType().equals(ClanRequest.CREATE_ALLY)) {
Clan clan = req.getClan();
Clan ally = plugin.getClanManager().getClan(req.getTarget());
ClanPlayer cp = req.getRequester();
if (ally != null && clan != null) {
List<String> accepts = req.getAccepts();
List<String> denies = req.getDenies();
if (!accepts.isEmpty()) {
clan.addAlly(ally);
ally.addBb(cp.getName(), ChatColor.AQUA + MessageFormat.format(plugin.getLang("accepted.an.alliance"), Helper.capitalize(accepts.get(0)), clan.getName()));
clan.addBb(cp.getName(), ChatColor.AQUA + MessageFormat.format(plugin.getLang("created.an.alliance"), Helper.capitalize(cp.getName()), Helper.capitalize(ally.getName())));
} else {
ally.addBb(cp.getName(), ChatColor.AQUA + MessageFormat.format(plugin.getLang("denied.an.alliance"), Helper.capitalize(denies.get(0)), clan.getName()));
clan.addBb(cp.getName(), ChatColor.AQUA + MessageFormat.format(plugin.getLang("the.alliance.was.denied"), Helper.capitalize(ally.getName())));
}
}
} else if (req.getType().equals(ClanRequest.BREAK_RIVALRY)) {
Clan clan = req.getClan();
Clan rival = plugin.getClanManager().getClan(req.getTarget());
ClanPlayer cp = req.getRequester();
if (rival != null && clan != null) {
List<String> accepts = req.getAccepts();
List<String> denies = req.getDenies();
if (!accepts.isEmpty()) {
clan.removeRival(rival);
rival.addBb(cp.getName(), ChatColor.AQUA + MessageFormat.format(plugin.getLang("broken.the.rivalry"), Helper.capitalize(accepts.get(0)), clan.getName()));
clan.addBb(cp.getName(), ChatColor.AQUA + MessageFormat.format(plugin.getLang("broken.the.rivalry.with"), Helper.capitalize(cp.getName()), Helper.capitalize(rival.getName())));
} else {
rival.addBb(cp.getName(), ChatColor.AQUA + MessageFormat.format(plugin.getLang("denied.to.make.peace"), Helper.capitalize(denies.get(0)), clan.getName()));
clan.addBb(cp.getName(), ChatColor.AQUA + MessageFormat.format(plugin.getLang("peace.agreement.denied"), Helper.capitalize(rival.getName())));
}
}
} else if (req.votingFinished()) {
List<String> denies = req.getDenies();
if (req.getType().equals(ClanRequest.DEMOTE)) {
Clan clan = req.getClan();
String demoted = req.getTarget();
UUID demotedUniqueId = UUIDMigration.getForcedPlayerUUID(demoted);
if (SimpleClans.getInstance().hasUUID() && demotedUniqueId != null) {
return;
}
if (denies.isEmpty()) {
clan.addBb(plugin.getLang("leaders"), ChatColor.AQUA + MessageFormat.format(plugin.getLang("demoted.back.to.member"), Helper.capitalize(demoted)));
if (SimpleClans.getInstance().hasUUID()) {
clan.demote(demotedUniqueId);
} else {
clan.demote(demoted);
}
} else {
String deniers = Helper.capitalize(Helper.toMessage(Helper.toArray(denies), ", "));
clan.leaderAnnounce(ChatColor.RED + MessageFormat.format(plugin.getLang("denied.demotion"), deniers, demoted));
}
} else if (req.getType().equals(ClanRequest.PROMOTE)) {
Clan clan = req.getClan();
String promoted = req.getTarget();
UUID promotedUniqueId = UUIDMigration.getForcedPlayerUUID(promoted);
if (SimpleClans.getInstance().hasUUID() && promotedUniqueId == null) {
return;
}
if (denies.isEmpty()) {
clan.addBb(plugin.getLang("leaders"), ChatColor.AQUA + MessageFormat.format(plugin.getLang("promoted.to.leader"), Helper.capitalize(promoted)));
if (SimpleClans.getInstance().hasUUID()) {
clan.promote(promotedUniqueId);
} else {
clan.promote(promoted);
}
} else {
String deniers = Helper.capitalize(Helper.toMessage(Helper.toArray(denies), ", "));
clan.leaderAnnounce(ChatColor.RED + MessageFormat.format(plugin.getLang("denied.the.promotion"), deniers, promoted));
}
} else if (req.getType().equals(ClanRequest.DISBAND)) {
Clan clan = req.getClan();
if (denies.isEmpty()) {
clan.addBb(plugin.getLang("leaders"), ChatColor.AQUA + MessageFormat.format(plugin.getLang("has.been.disbanded"), clan.getName()));
clan.disband();
} else {
String deniers = Helper.capitalize(Helper.toMessage(Helper.toArray(denies), ", "));
clan.leaderAnnounce(ChatColor.RED + MessageFormat.format(plugin.getLang("clan.deletion"), deniers));
}
}
req.cleanVotes();
}
requests.remove(req.getTarget());
Clan requesterClan = req.getClan();
ClanPlayer requesterCp = req.getRequester();
String target = req.getTarget();
//may be null
Clan targetClan = plugin.getClanManager().getClan(target);
//may be null
UUID targetPlayer = UUIDMigration.getForcedPlayerUUID(target);
List<String> accepts = req.getAccepts();
List<String> denies = req.getDenies();
switch (req.getType()) {
case START_WAR:
processStartWar(requesterClan, requesterCp, targetClan, accepts, denies);
break;
case END_WAR:
processEndWar(requesterClan, requesterCp, targetClan, accepts, denies);
break;
case CREATE_ALLY:
processCreateAlly(requesterClan, requesterCp, targetClan, accepts, denies);
break;
case BREAK_RIVALRY:
processBreakRivalry(requesterClan, requesterCp, targetClan, accepts, denies);
break;
case DEMOTE: case PROMOTE:
if (!req.votingFinished() || targetPlayer == null) {
return;
}
target = requesterClan.getTag();
if (req.getType() == ClanRequest.DEMOTE) {
processDemote(req, requesterClan, targetPlayer, denies);
}
if (req.getType() == ClanRequest.PROMOTE) {
processPromote(req, requesterClan, targetPlayer, denies);
}
break;
case DISBAND:
if (!req.votingFinished()) {
return;
}
processDisband(requesterClan, denies);
break;
default:
return;
}
requests.remove(target);
SimpleClans.getInstance().getServer().getPluginManager().callEvent(new RequestFinishedEvent(req));
req.cleanVotes();
}
private void processDisband(Clan requesterClan, List<String> denies) {
if (denies.isEmpty()) {
requesterClan.addBb(plugin.getLang("leaders"), ChatColor.AQUA + MessageFormat.format(plugin.getLang("has.been.disbanded"), requesterClan.getName()));
requesterClan.disband();
} else {
String deniers = Helper.toMessage(Helper.toArray(denies), ", ");
requesterClan.leaderAnnounce(ChatColor.RED + MessageFormat.format(plugin.getLang("clan.deletion"), deniers));
}
}
private void processPromote(Request req, Clan requesterClan, UUID targetPlayer, List<String> denies) {
String promotedName = req.getTarget();
if (denies.isEmpty()) {
requesterClan.addBb(plugin.getLang("leaders"), ChatColor.AQUA + MessageFormat.format(plugin.getLang("promoted.to.leader"), promotedName));
requesterClan.promote(targetPlayer);
} else {
String deniers = Helper.toMessage(Helper.toArray(denies), ", ");
requesterClan.leaderAnnounce(ChatColor.RED + MessageFormat.format(plugin.getLang("denied.the.promotion"), deniers, promotedName));
}
}
private void processDemote(Request req, Clan requesterClan, UUID targetPlayer, List<String> denies) {
String demotedName = req.getTarget();
if (denies.isEmpty()) {
requesterClan.addBb(plugin.getLang("leaders"), ChatColor.AQUA
+ MessageFormat.format(plugin.getLang("demoted.back.to.member"), demotedName));
requesterClan.demote(targetPlayer);
} else {
String deniers = Helper.toMessage(Helper.toArray(denies), ", ");
requesterClan.leaderAnnounce(
ChatColor.RED + MessageFormat.format(plugin.getLang("denied.demotion"), deniers, demotedName));
}
}
private void processBreakRivalry(Clan requesterClan, ClanPlayer requesterCp, Clan targetClan, List<String> accepts,
List<String> denies) {
if (targetClan != null && requesterClan != null) {
if (!accepts.isEmpty()) {
requesterClan.removeRival(targetClan);
targetClan.addBb(requesterCp.getName(), ChatColor.AQUA + MessageFormat.format(plugin.getLang("broken.the.rivalry"), accepts.get(0), requesterClan.getName()));
requesterClan.addBb(requesterCp.getName(), ChatColor.AQUA + MessageFormat.format(plugin.getLang("broken.the.rivalry.with"), requesterCp.getName(), targetClan.getName()));
} else {
targetClan.addBb(requesterCp.getName(), ChatColor.AQUA + MessageFormat.format(plugin.getLang("denied.to.make.peace"), denies.get(0), requesterClan.getName()));
requesterClan.addBb(requesterCp.getName(), ChatColor.AQUA + MessageFormat.format(plugin.getLang("peace.agreement.denied"), targetClan.getName()));
}
}
}
private void processCreateAlly(Clan requesterClan, ClanPlayer requesterCp, Clan targetClan, List<String> accepts,
List<String> denies) {
if (targetClan != null && requesterClan != null) {
if (!accepts.isEmpty()) {
requesterClan.addAlly(targetClan);
targetClan.addBb(requesterCp.getName(), ChatColor.AQUA + MessageFormat.format(plugin.getLang("accepted.an.alliance"), accepts.get(0), requesterClan.getName()));
requesterClan.addBb(requesterCp.getName(), ChatColor.AQUA + MessageFormat.format(plugin.getLang("created.an.alliance"), requesterCp.getName(), targetClan.getName()));
} else {
targetClan.addBb(requesterCp.getName(), ChatColor.AQUA + MessageFormat.format(plugin.getLang("denied.an.alliance"), denies.get(0), requesterClan.getName()));
requesterClan.addBb(requesterCp.getName(), ChatColor.AQUA + MessageFormat.format(plugin.getLang("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) {
if (!accepts.isEmpty()) {
requesterClan.removeWarringClan(targetClan);
targetClan.removeWarringClan(requesterClan);
targetClan.addBb(requesterCp.getName(), ChatColor.AQUA + MessageFormat.format(plugin.getLang("you.are.no.longer.at.war"), accepts.get(0), requesterClan.getColorTag()));
requesterClan.addBb(requesterCp.getName(), ChatColor.AQUA + MessageFormat.format(plugin.getLang("you.are.no.longer.at.war"), requesterClan.getName(), targetClan.getColorTag()));
} else {
targetClan.addBb(requesterCp.getName(), ChatColor.AQUA + MessageFormat.format(plugin.getLang("denied.war.end"), denies.get(0), requesterClan.getName()));
requesterClan.addBb(requesterCp.getName(), ChatColor.AQUA + MessageFormat.format(plugin.getLang("end.war.denied"), targetClan.getName()));
}
}
}
private void processStartWar(Clan requesterClan, ClanPlayer requesterCp, Clan targetClan, List<String> accepts,
List<String> denies) {
if (requesterClan != null && targetClan != null) {
if (!accepts.isEmpty()) {
requesterClan.addWarringClan(targetClan);
targetClan.addWarringClan(requesterClan);
targetClan.addBb(requesterCp.getName(), ChatColor.AQUA + MessageFormat.format(plugin.getLang("you.are.at.war"), targetClan.getName(), requesterClan.getColorTag()));
requesterClan.addBb(requesterCp.getName(), ChatColor.AQUA + MessageFormat.format(plugin.getLang("you.are.at.war"), requesterClan.getName(), targetClan.getColorTag()));
} else {
targetClan.addBb(requesterCp.getName(), ChatColor.AQUA + MessageFormat.format(plugin.getLang("denied.war.req"), denies.get(0), requesterClan.getName()));
requesterClan.addBb(requesterCp.getName(), ChatColor.AQUA + MessageFormat.format(plugin.getLang("end.war.denied"), targetClan.getName()));
}
}
}
/**
* End a pending request prematurely
*
@@ -396,7 +433,7 @@ public final class RequestManager {
for (Request req : new LinkedList<Request>(requests.values())) {
for (ClanPlayer cp : req.getAcceptors()) {
if (cp.getName().equalsIgnoreCase(playerName)) {
req.getClan().leaderAnnounce(MessageFormat.format(plugin.getLang("signed.off.request.cancelled"), ChatColor.RED + Helper.capitalize(playerName), req.getType()));
req.getClan().leaderAnnounce(MessageFormat.format(plugin.getLang("signed.off.request.cancelled"), ChatColor.RED + playerName, req.getType()));
requests.remove(req.getClan().getTag());
break;
}
@@ -410,9 +447,10 @@ public final class RequestManager {
* Starts the task that asks for the votes of all requests
*/
public void askerTask() {
plugin.getServer().getScheduler().scheduleAsyncRepeatingTask(plugin, new Runnable() {
@Override
public void run() {
new BukkitRunnable() {
@Override
public void run() {
for (Iterator<Map.Entry<String, Request>> iter = requests.entrySet().iterator(); iter.hasNext(); ) {
Request req = iter.next().getValue();
@@ -425,10 +463,9 @@ public final class RequestManager {
}
ask(req);
req.incrementAskCount();
}
}
}, 0, plugin.getSettingsManager().getRequestFreqencySecs() * 20L);
req.incrementAskCount();
}
}}.runTaskTimerAsynchronously(plugin, 0, plugin.getSettingsManager().getRequestFreqencySecs() * 20L);
}
/**
@@ -436,7 +473,7 @@ public final class RequestManager {
*
* @param req
*/
public void ask(Request req) {
public void ask(final Request req) {
final String tag = plugin.getSettingsManager().getClanChatBracketColor() + plugin.getSettingsManager().getClanChatTagBracketLeft() + plugin.getSettingsManager().getTagDefaultColor() + req.getClan().getColorTag() + plugin.getSettingsManager().getClanChatBracketColor() + plugin.getSettingsManager().getClanChatTagBracketRight();
final String message = tag + " " + plugin.getSettingsManager().getRequestMessageColor() + req.getMsg();
final String options = MessageFormat.format(plugin.getLang("accept.or.deny"), ChatBlock.makeEmpty(Helper.stripColors(tag)) + " " + ChatColor.DARK_GREEN + "/" + plugin.getSettingsManager().getCommandAccept() + plugin.getSettingsManager().getPageHeadingsColor(), ChatColor.DARK_RED + "/" + plugin.getSettingsManager().getCommandDeny());
@@ -465,6 +502,11 @@ public final class RequestManager {
}
}
SimpleClans.getInstance().getServer().getPluginManager().callEvent(new RequestEvent(req));
new BukkitRunnable() {
@Override
public void run() {
SimpleClans.getInstance().getServer().getPluginManager().callEvent(new RequestEvent(req));
}
}.runTask(plugin);
}
}
File diff suppressed because it is too large. Load diff
@@ -12,9 +12,11 @@ import net.sacredlabyrinth.phaed.simpleclans.uuid.UUIDMigration;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitRunnable;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.MessageFormat;
import java.util.*;
import java.util.logging.Level;
@@ -27,6 +29,8 @@ public final class StorageManager {
private SimpleClans plugin;
private DBCore core;
private HashMap<String, ChatBlock> chatBlocks = new HashMap<>();
private Set<Clan> modifiedClans = new HashSet<>();
private Set<ClanPlayer> modifiedClanPlayers = new HashSet<>();
/**
*
@@ -45,11 +49,7 @@ public final class StorageManager {
* @return
*/
public ChatBlock getChatBlock(Player player) {
if (SimpleClans.getInstance().hasUUID()) {
return chatBlocks.get(player.getUniqueId().toString());
} else {
return chatBlocks.get(player.getName());
}
return chatBlocks.get(player.getUniqueId().toString());
}
/**
@@ -59,17 +59,13 @@ public final class StorageManager {
* @param cb
*/
public void addChatBlock(CommandSender player, ChatBlock cb) {
if (SimpleClans.getInstance().hasUUID()) {
UUID uuid = UUIDMigration.getForcedPlayerUUID(player.getName());
UUID uuid = UUIDMigration.getForcedPlayerUUID(player.getName());
if (uuid == null) {
return;
}
if (uuid == null) {
return;
}
chatBlocks.put(uuid.toString(), cb);
} else {
chatBlocks.put(player.getName(), cb);
}
chatBlocks.put(uuid.toString(), cb);
}
/**
@@ -80,26 +76,70 @@ public final class StorageManager {
core = new MySQLCore(plugin.getSettingsManager().getHost(), plugin.getSettingsManager().getDatabase(), plugin.getSettingsManager().getPort(), plugin.getSettingsManager().getUsername(), plugin.getSettingsManager().getPassword());
if (core.checkConnection()) {
SimpleClans.log("[SimpleClans] " + plugin.getLang("mysql.connection.successful"));
plugin.getLogger().info(plugin.getLang("mysql.connection.successful"));
if (!core.existsTable("sc_clans")) {
SimpleClans.log("Creating table: sc_clans");
plugin.getLogger().info("Creating table: sc_clans");
String query = "CREATE TABLE IF NOT EXISTS `sc_clans` ( `id` bigint(20) NOT NULL auto_increment, `verified` tinyint(1) default '0', `tag` varchar(25) NOT NULL, `color_tag` varchar(25) NOT NULL, `name` varchar(100) NOT NULL, `friendly_fire` tinyint(1) default '0', `founded` bigint NOT NULL, `last_used` bigint NOT NULL, `packed_allies` text NOT NULL, `packed_rivals` text NOT NULL, `packed_bb` mediumtext NOT NULL, `cape_url` varchar(255) NOT NULL, `flags` text NOT NULL, `balance` double(64,2), PRIMARY KEY (`id`), UNIQUE KEY `uq_simpleclans_1` (`tag`));";
String query = "CREATE TABLE IF NOT EXISTS `sc_clans` ("
+ " `id` bigint(20) NOT NULL auto_increment,"
+ " `verified` tinyint(1) default '0',"
+ " `tag` varchar(25) NOT NULL,"
+ " `color_tag` varchar(25) NOT NULL,"
+ " `name` varchar(100) NOT NULL,"
+ " `description` varchar(255),"
+ " `friendly_fire` tinyint(1) default '0',"
+ " `founded` bigint NOT NULL,"
+ " `last_used` bigint NOT NULL,"
+ " `packed_allies` text NOT NULL,"
+ " `packed_rivals` text NOT NULL,"
+ " `packed_bb` mediumtext NOT NULL,"
+ " `cape_url` varchar(255) NOT NULL,"
+ " `flags` text NOT NULL,"
+ " `balance` double(64,2),"
+ " `fee_enabled` tinyint(1) default '0',"
+ " `fee_value` double(64,2),"
+ " `ranks` text NOT NULL,"
+ " PRIMARY KEY (`id`),"
+ " UNIQUE KEY `uq_simpleclans_1` (`tag`));";
core.execute(query);
}
if (!core.existsTable("sc_players")) {
SimpleClans.log("Creating table: sc_players");
plugin.getLogger().info("Creating table: sc_players");
String query = "CREATE TABLE IF NOT EXISTS `sc_players` ( `id` bigint(20) NOT NULL auto_increment, `name` varchar(16) NOT NULL, `leader` tinyint(1) default '0', `tag` varchar(25) NOT NULL, `friendly_fire` tinyint(1) default '0', `neutral_kills` int(11) default NULL, `rival_kills` int(11) default NULL, `civilian_kills` int(11) default NULL, `deaths` int(11) default NULL, `last_seen` bigint NOT NULL, `join_date` bigint NOT NULL, `trusted` tinyint(1) default '0', `flags` text NOT NULL, `packed_past_clans` text, PRIMARY KEY (`id`), UNIQUE KEY `uq_sc_players_1` (`name`));";
String query = "CREATE TABLE IF NOT EXISTS `sc_players` ("
+ " `id` bigint(20) NOT NULL auto_increment,"
+ " `name` varchar(16) NOT NULL,"
+ " `leader` tinyint(1) default '0',"
+ " `tag` varchar(25) NOT NULL,"
+ " `friendly_fire` tinyint(1) default '0',"
+ " `neutral_kills` int(11) default NULL,"
+ " `rival_kills` int(11) default NULL,"
+ " `civilian_kills` int(11) default NULL,"
+ " `deaths` int(11) default NULL,"
+ " `last_seen` bigint NOT NULL,"
+ " `join_date` bigint NOT NULL,"
+ " `trusted` tinyint(1) default '0',"
+ " `flags` text NOT NULL,"
+ " `packed_past_clans` text,"
+ " `resign_times` text,"
+ " PRIMARY KEY (`id`),"
+ " UNIQUE KEY `uq_sc_players_1` (`name`));";
core.execute(query);
}
if (!core.existsTable("sc_kills")) {
SimpleClans.log("Creating table: sc_kills");
plugin.getLogger().info("Creating table: sc_kills");
String query = "CREATE TABLE IF NOT EXISTS `sc_kills` ( `kill_id` bigint(20) NOT NULL auto_increment, `attacker` varchar(16) NOT NULL, `attacker_tag` varchar(16) NOT NULL, `victim` varchar(16) NOT NULL, `victim_tag` varchar(16) NOT NULL, `kill_type` varchar(1) NOT NULL, PRIMARY KEY (`kill_id`));";
String query = "CREATE TABLE IF NOT EXISTS `sc_kills` ("
+ " `kill_id` bigint(20) NOT NULL auto_increment,"
+ " `attacker` varchar(16) NOT NULL,"
+ " `attacker_tag` varchar(16) NOT NULL,"
+ " `victim` varchar(16) NOT NULL,"
+ " `victim_tag` varchar(16) NOT NULL,"
+ " `kill_type` varchar(1) NOT NULL,"
+ " PRIMARY KEY (`kill_id`));";
core.execute(query);
}
} else {
@@ -109,26 +149,71 @@ public final class StorageManager {
core = new SQLiteCore(plugin.getDataFolder().getPath());
if (core.checkConnection()) {
SimpleClans.log("[SimpleClans] " + plugin.getLang("sqlite.connection.successful"));
plugin.getLogger().info(plugin.getLang("sqlite.connection.successful"));
if (!core.existsTable("sc_clans")) {
SimpleClans.log("Creating table: sc_clans");
plugin.getLogger().info("Creating table: sc_clans");
String query = "CREATE TABLE IF NOT EXISTS `sc_clans` ( `id` bigint(20), `verified` tinyint(1) default '0', `tag` varchar(25) NOT NULL, `color_tag` varchar(25) NOT NULL, `name` varchar(100) NOT NULL, `friendly_fire` tinyint(1) default '0', `founded` bigint NOT NULL, `last_used` bigint NOT NULL, `packed_allies` text NOT NULL, `packed_rivals` text NOT NULL, `packed_bb` mediumtext NOT NULL, `cape_url` varchar(255) NOT NULL, `flags` text NOT NULL, `balance` double(64,2) default 0.0, PRIMARY KEY (`id`), UNIQUE (`tag`));";
String query = "CREATE TABLE IF NOT EXISTS `sc_clans` ("
+ " `id` bigint(20),"
+ " `verified` tinyint(1) default '0',"
+ " `tag` varchar(25) NOT NULL,"
+ " `color_tag` varchar(25) NOT NULL,"
+ " `name` varchar(100) NOT NULL,"
+ " `description` varchar(255),"
+ " `friendly_fire` tinyint(1) default '0',"
+ " `founded` bigint NOT NULL,"
+ " `last_used` bigint NOT NULL,"
+ " `packed_allies` text NOT NULL,"
+ " `packed_rivals` text NOT NULL,"
+ " `packed_bb` mediumtext NOT NULL,"
+ " `cape_url` varchar(255) NOT NULL,"
+ " `flags` text NOT NULL,"
+ " `balance` double(64,2) default 0.0,"
+ " `fee_enabled` tinyint(1) default '0',"
+ " `fee_value` double(64,2),"
+ " `ranks` text NOT NULL,"
+ " PRIMARY KEY (`id`),"
+ " UNIQUE (`tag`));";
core.execute(query);
}
if (!core.existsTable("sc_players")) {
SimpleClans.log("Creating table: sc_players");
plugin.getLogger().info("Creating table: sc_players");
String query = "CREATE TABLE IF NOT EXISTS `sc_players` ( `id` bigint(20), `name` varchar(16) NOT NULL, `leader` tinyint(1) default '0', `tag` varchar(25) NOT NULL, `friendly_fire` tinyint(1) default '0', `neutral_kills` int(11) default NULL, `rival_kills` int(11) default NULL, `civilian_kills` int(11) default NULL, `deaths` int(11) default NULL, `last_seen` bigint NOT NULL, `join_date` bigint NOT NULL, `trusted` tinyint(1) default '0', `flags` text NOT NULL, `packed_past_clans` text, PRIMARY KEY (`id`), UNIQUE (`name`));";
String query = "CREATE TABLE IF NOT EXISTS `sc_players` ("
+ " `id` bigint(20),"
+ " `name` varchar(16) NOT NULL,"
+ " `leader` tinyint(1) default '0',"
+ " `tag` varchar(25) NOT NULL,"
+ " `friendly_fire` tinyint(1) default '0',"
+ " `neutral_kills` int(11) default NULL,"
+ " `rival_kills` int(11) default NULL,"
+ " `civilian_kills` int(11) default NULL,"
+ " `deaths` int(11) default NULL,"
+ " `last_seen` bigint NOT NULL,"
+ " `join_date` bigint NOT NULL,"
+ " `trusted` tinyint(1) default '0',"
+ " `flags` text NOT NULL,"
+ " `packed_past_clans` text,"
+ " `resign_times` text,"
+ " PRIMARY KEY (`id`),"
+ " UNIQUE (`name`));";
core.execute(query);
}
if (!core.existsTable("sc_kills")) {
SimpleClans.log("Creating table: sc_kills");
plugin.getLogger().info("Creating table: sc_kills");
String query = "CREATE TABLE IF NOT EXISTS `sc_kills` ( `kill_id` bigint(20), `attacker` varchar(16) NOT NULL, `attacker_tag` varchar(16) NOT NULL, `victim` varchar(16) NOT NULL, `victim_tag` varchar(16) NOT NULL, `kill_type` varchar(1) NOT NULL, PRIMARY KEY (`kill_id`));";
String query = "CREATE TABLE IF NOT EXISTS `sc_kills` ("
+ " `kill_id` bigint(20),"
+ " `attacker` varchar(16) NOT NULL,"
+ " `attacker_tag` varchar(16) NOT NULL,"
+ " `victim` varchar(16) NOT NULL,"
+ " `victim_tag` varchar(16) NOT NULL,"
+ " `kill_type` varchar(1) NOT NULL,"
+ " PRIMARY KEY (`kill_id`));";
core.execute(query);
}
} else {
@@ -162,7 +247,7 @@ public final class StorageManager {
}
if (!clans.isEmpty()) {
SimpleClans.log(MessageFormat.format("[SimpleClans] " + plugin.getLang("clans"), clans.size()));
plugin.getLogger().info(MessageFormat.format(plugin.getLang("clans"), clans.size()));
}
List<ClanPlayer> cps = retrieveClanPlayers();
@@ -178,7 +263,7 @@ public final class StorageManager {
}
if (!cps.isEmpty()) {
SimpleClans.log(MessageFormat.format("[SimpleClans] " + plugin.getLang("clan.players"), cps.size()));
plugin.getLogger().info(MessageFormat.format(plugin.getLang("clan.players"), cps.size()));
}
}
@@ -200,8 +285,8 @@ public final class StorageManager {
tm.importMember(cp);
}
plugin.getClanManager().importClanPlayer(cp);
SimpleClans.log("[SimpleClans] ClanPlayer Reloaded: " + player.getName() + ", UUID: " + player.getUniqueId().toString());
plugin.getLogger().info("ClanPlayer Reloaded: " + player.getName() + ", UUID: " + player.getUniqueId().toString());
}
}
@@ -221,7 +306,7 @@ public final class StorageManager {
}
for (Clan clan : purge) {
SimpleClans.log("[SimpleClans] " + MessageFormat.format(plugin.getLang("purging.clan"), clan.getName()));
plugin.getLogger().info(MessageFormat.format(plugin.getLang("purging.clan"), clan.getName()));
deleteClan(clan);
clans.remove(clan);
}
@@ -237,7 +322,7 @@ public final class StorageManager {
}
for (ClanPlayer cp : purge) {
SimpleClans.log("[SimpleClans] " + MessageFormat.format(plugin.getLang("purging.player.data"), cp.getName()));
plugin.getLogger().info(MessageFormat.format(plugin.getLang("purging.player.data"), cp.getName()));
deleteClanPlayer(cp);
cps.remove(cp);
}
@@ -263,14 +348,18 @@ public final class StorageManager {
String tag = res.getString("tag");
String color_tag = Helper.parseColors(res.getString("color_tag"));
String name = res.getString("name");
String description = res.getString("description");
String packed_allies = res.getString("packed_allies");
String packed_rivals = res.getString("packed_rivals");
String packed_bb = res.getString("packed_bb");
String cape_url = res.getString("cape_url");
String flags = res.getString("flags");
String ranks = res.getString("ranks");
long founded = res.getLong("founded");
long last_used = res.getLong("last_used");
double balance = res.getDouble("balance");
double feeValue = res.getDouble("fee_value");
boolean feeEnabled = res.getBoolean("fee_enabled");
if (founded == 0) {
founded = (new Date()).getTime();
@@ -287,6 +376,7 @@ public final class StorageManager {
clan.setTag(tag);
clan.setColorTag(color_tag);
clan.setName(name);
clan.setDescription(description);
clan.setPackedAllies(packed_allies);
clan.setPackedRivals(packed_rivals);
clan.setPackedBb(packed_bb);
@@ -294,6 +384,9 @@ public final class StorageManager {
clan.setFounded(founded);
clan.setLastUsed(last_used);
clan.setBalance(balance);
clan.setMemberFee(feeValue);
clan.setMemberFeeEnabled(feeEnabled);
clan.setRanks(Helper.ranksFromJson(ranks));
out.add(clan);
} catch (Exception ex) {
@@ -303,8 +396,8 @@ public final class StorageManager {
}
}
} catch (SQLException ex) {
SimpleClans.getLog().severe(String.format("An Error occurred: %s", ex.getErrorCode()));
SimpleClans.getLog().log(Level.SEVERE, null, ex);
plugin.getLogger().severe(String.format("An Error occurred: %s", ex.getErrorCode()));
plugin.getLogger().log(Level.SEVERE, null, ex);
}
}
@@ -333,14 +426,18 @@ public final class StorageManager {
String tag = res.getString("tag");
String color_tag = Helper.parseColors(res.getString("color_tag"));
String name = res.getString("name");
String description = res.getString("description");
String packed_allies = res.getString("packed_allies");
String packed_rivals = res.getString("packed_rivals");
String packed_bb = res.getString("packed_bb");
String cape_url = res.getString("cape_url");
String flags = res.getString("flags");
String ranks = res.getString("ranks");
long founded = res.getLong("founded");
long last_used = res.getLong("last_used");
double balance = res.getDouble("balance");
double feeValue = res.getDouble("fee_value");
boolean feeEnabled = res.getBoolean("fee_enabled");
if (founded == 0) {
founded = (new Date()).getTime();
@@ -357,6 +454,7 @@ public final class StorageManager {
clan.setTag(tag);
clan.setColorTag(color_tag);
clan.setName(name);
clan.setDescription(description);
clan.setPackedAllies(packed_allies);
clan.setPackedRivals(packed_rivals);
clan.setPackedBb(packed_bb);
@@ -364,6 +462,9 @@ public final class StorageManager {
clan.setFounded(founded);
clan.setLastUsed(last_used);
clan.setBalance(balance);
clan.setMemberFee(feeValue);
clan.setMemberFeeEnabled(feeEnabled);
clan.setRanks(Helper.ranksFromJson(ranks));
out = clan;
} catch (Exception ex) {
@@ -373,8 +474,8 @@ public final class StorageManager {
}
}
} catch (SQLException ex) {
SimpleClans.getLog().severe(String.format("An Error occurred: %s", ex.getErrorCode()));
SimpleClans.getLog().log(Level.SEVERE, null, ex);
plugin.getLogger().severe(String.format("An Error occurred: %s", ex.getErrorCode()));
plugin.getLogger().log(Level.SEVERE, null, ex);
}
}
@@ -410,7 +511,8 @@ public final class StorageManager {
long join_date = res.getLong("join_date");
String flags = res.getString("flags");
String packed_past_clans = Helper.parseColors(res.getString("packed_past_clans"));
String resign_times = res.getString("resign_times");
if (last_seen == 0) {
last_seen = (new Date()).getTime();
}
@@ -435,6 +537,7 @@ public final class StorageManager {
cp.setJoinDate(join_date);
cp.setPackedPastClans(packed_past_clans);
cp.setTrusted(leader || trusted);
cp.setResignTimes(Helper.resignTimesFromJson(resign_times));
if (!tag.isEmpty()) {
Clan clan = SimpleClans.getInstance().getClanManager().getClan(tag);
@@ -452,8 +555,8 @@ public final class StorageManager {
}
}
} catch (SQLException ex) {
SimpleClans.getLog().severe(String.format("An Error occurred: %s", ex.getErrorCode()));
SimpleClans.getLog().log(Level.SEVERE, null, ex);
plugin.getLogger().severe(String.format("An Error occurred: %s", ex.getErrorCode()));
plugin.getLogger().log(Level.SEVERE, null, ex);
}
}
@@ -491,7 +594,8 @@ public final class StorageManager {
long join_date = res.getLong("join_date");
String flags = res.getString("flags");
String packed_past_clans = Helper.parseColors(res.getString("packed_past_clans"));
String resign_times = res.getString("resign_times");
if (last_seen == 0) {
last_seen = (new Date()).getTime();
}
@@ -516,7 +620,8 @@ public final class StorageManager {
cp.setJoinDate(join_date);
cp.setPackedPastClans(packed_past_clans);
cp.setTrusted(leader || trusted);
cp.setResignTimes(Helper.resignTimesFromJson(resign_times));
if (!tag.isEmpty()) {
Clan clanDB = retrieveOneClan(tag);
Clan clan = SimpleClans.getInstance().getClanManager().getClan(tag);
@@ -553,8 +658,8 @@ public final class StorageManager {
}
}
} catch (SQLException ex) {
SimpleClans.getLog().severe(String.format("An Error occurred: %s", ex.getErrorCode()));
SimpleClans.getLog().log(Level.SEVERE, null, ex);
plugin.getLogger().severe(String.format("An Error occurred: %s", ex.getErrorCode()));
plugin.getLogger().log(Level.SEVERE, null, ex);
}
}
@@ -567,8 +672,25 @@ public final class StorageManager {
* @param clan
*/
public void insertClan(Clan clan) {
String query = "INSERT INTO `sc_clans` ( `verified`, `tag`, `color_tag`, `name`, `friendly_fire`, `founded`, `last_used`, `packed_allies`, `packed_rivals`, `packed_bb`, `cape_url`, `flags`, `balance`) ";
String values = "VALUES ( " + (clan.isVerified() ? 1 : 0) + ",'" + Helper.escapeQuotes(clan.getTag()) + "','" + Helper.escapeQuotes(clan.getColorTag()) + "','" + Helper.escapeQuotes(clan.getName()) + "'," + (clan.isFriendlyFire() ? 1 : 0) + ",'" + clan.getFounded() + "','" + clan.getLastUsed() + "','" + Helper.escapeQuotes(clan.getPackedAllies()) + "','" + Helper.escapeQuotes(clan.getPackedRivals()) + "','" + Helper.escapeQuotes(clan.getPackedBb()) + "','" + Helper.escapeQuotes(clan.getCapeUrl()) + "','" + Helper.escapeQuotes(clan.getFlags()) + "','" + Helper.escapeQuotes(String.valueOf(clan.getBalance())) + "');";
String query = "INSERT INTO `sc_clans` (`ranks`, `description`, `fee_enabled`, `fee_value`, `verified`, `tag`, `color_tag`, `name`, `friendly_fire`, `founded`, `last_used`, `packed_allies`, `packed_rivals`, `packed_bb`, `cape_url`, `flags`, `balance`) ";
String values = "VALUES ( '"
+ Helper.escapeQuotes(Helper.ranksToJson(clan.getRanks())) + "','"
+ Helper.escapeQuotes(clan.getDescription())+ "',"
+ (clan.isMemberFeeEnabled() ? 1 : 0) +","
+ Helper.escapeQuotes(String.valueOf(clan.getMemberFee())) + ","
+ (clan.isVerified() ? 1 : 0) + ",'"
+ Helper.escapeQuotes(clan.getTag()) + "','"
+ Helper.escapeQuotes(clan.getColorTag()) + "','"
+ Helper.escapeQuotes(clan.getName()) + "',"
+ (clan.isFriendlyFire() ? 1 : 0) + ",'"
+ clan.getFounded() + "','"
+ clan.getLastUsed() + "','"
+ Helper.escapeQuotes(clan.getPackedAllies()) + "','"
+ Helper.escapeQuotes(clan.getPackedRivals()) + "','"
+ Helper.escapeQuotes(clan.getPackedBb()) + "','"
+ Helper.escapeQuotes(clan.getCapeUrl()) + "','"
+ Helper.escapeQuotes(clan.getFlags()) + "','"
+ Helper.escapeQuotes(String.valueOf(clan.getBalance())) + "');";
core.insert(query + values);
}
@@ -577,14 +699,14 @@ public final class StorageManager {
*
* @param clan
*/
@SuppressWarnings("deprecation")
@Deprecated
public void updateClanAsync(final Clan clan) {
plugin.getServer().getScheduler().scheduleAsyncDelayedTask(plugin, new Runnable() {
new BukkitRunnable() {
@Override
public void run() {
updateClan(clan);
}
});
}.runTaskAsynchronously(plugin);
}
/**
@@ -592,18 +714,17 @@ public final class StorageManager {
*
* @param p to update
*/
@SuppressWarnings("deprecation")
public void updatePlayerNameAsync(final Player p) {
plugin.getServer().getScheduler().scheduleAsyncDelayedTask(plugin, new Runnable() {
@Override
public void run() {
new BukkitRunnable() {
@Override
public void run() {
updatePlayerName(p);
}
});
}
}.runTaskAsynchronously(plugin);
}
/**
* Change the name of a player in the database asynchronously
* Change the name of a player in the database
*
* @param p to update
*/
@@ -618,9 +739,7 @@ public final class StorageManager {
* @param clan
*/
public void updateClan(Clan clan) {
clan.updateLastUsed();
String query = "UPDATE `sc_clans` SET 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()) + "';";
core.update(query);
updateClan(clan, true);
}
/**
@@ -633,9 +752,17 @@ public final class StorageManager {
public void updateClan(Clan clan, boolean updateLastUsed) {
if (updateLastUsed) {
clan.updateLastUsed();
}
String query = "UPDATE `sc_clans` SET 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()) + "';";
core.update(query);
}
if (plugin.getSettingsManager().isSavePeriodically()) {
modifiedClans.add(clan);
return;
}
core.update(getUpdateClanQuery(clan));
}
private String getUpdateClanQuery(Clan clan) {
String query = "UPDATE `sc_clans` SET ranks = '"+ Helper.escapeQuotes(Helper.ranksToJson(clan.getRanks())) +"', 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;
}
/**
@@ -654,15 +781,9 @@ public final class StorageManager {
* @param cp
*/
public void insertClanPlayer(ClanPlayer cp) {
if (SimpleClans.getInstance().hasUUID()) {
String query = "INSERT INTO `sc_players` ( `uuid`, `name`, `leader`, `tag`, `friendly_fire`, `neutral_kills`, `rival_kills`, `civilian_kills`, `deaths`, `last_seen`, `join_date`, `packed_past_clans`, `flags`) ";
String values = "VALUES ( '" + cp.getUniqueId().toString() + "', '" + cp.getName() + "'," + (cp.isLeader() ? 1 : 0) + ",'" + Helper.escapeQuotes(cp.getTag()) + "'," + (cp.isFriendlyFire() ? 1 : 0) + "," + cp.getNeutralKills() + "," + cp.getRivalKills() + "," + cp.getCivilianKills() + "," + cp.getDeaths() + ",'" + cp.getLastSeen() + "',' " + cp.getJoinDate() + "','" + Helper.escapeQuotes(cp.getPackedPastClans()) + "','" + Helper.escapeQuotes(cp.getFlags()) + "');";
core.insert(query + values);
} else {
String query = "INSERT INTO `sc_players` ( `name`, `leader`, `tag`, `friendly_fire`, `neutral_kills`, `rival_kills`, `civilian_kills`, `deaths`, `last_seen`, `join_date`, `packed_past_clans`, `flags`) ";
String values = "VALUES ( '" + cp.getName() + "'," + (cp.isLeader() ? 1 : 0) + ",'" + Helper.escapeQuotes(cp.getTag()) + "'," + (cp.isFriendlyFire() ? 1 : 0) + "," + cp.getNeutralKills() + "," + cp.getRivalKills() + "," + cp.getCivilianKills() + "," + cp.getDeaths() + ",'" + cp.getLastSeen() + "',' " + cp.getJoinDate() + "','" + Helper.escapeQuotes(cp.getPackedPastClans()) + "','" + Helper.escapeQuotes(cp.getFlags()) + "');";
core.insert(query + values);
}
String query = "INSERT INTO `sc_players` (`resign_times`, `uuid`, `name`, `leader`, `tag`, `friendly_fire`, `neutral_kills`, `rival_kills`, `civilian_kills`, `deaths`, `last_seen`, `join_date`, `packed_past_clans`, `flags`) ";
String values = "VALUES ( '"+ Helper.escapeQuotes(Helper.resignTimesToJson(cp.getResignTimes()))+ "', '" + cp.getUniqueId().toString() + "', '" + cp.getName() + "'," + (cp.isLeader() ? 1 : 0) + ",'" + Helper.escapeQuotes(cp.getTag()) + "'," + (cp.isFriendlyFire() ? 1 : 0) + "," + cp.getNeutralKills() + "," + cp.getRivalKills() + "," + cp.getCivilianKills() + "," + cp.getDeaths() + ",'" + cp.getLastSeen() + "',' " + cp.getJoinDate() + "','" + Helper.escapeQuotes(cp.getPackedPastClans()) + "','" + Helper.escapeQuotes(cp.getFlags()) + "');";
core.insert(query + values);
}
/**
@@ -670,14 +791,14 @@ public final class StorageManager {
*
* @param cp
*/
@SuppressWarnings("deprecation")
@Deprecated
public void updateClanPlayerAsync(final ClanPlayer cp) {
plugin.getServer().getScheduler().scheduleAsyncDelayedTask(plugin, new Runnable() {
@Override
public void run() {
new BukkitRunnable() {
@Override
public void run() {
updateClanPlayer(cp);
}
});
}
}.runTaskAsynchronously(plugin);
}
/**
@@ -687,13 +808,16 @@ public final class StorageManager {
*/
public void updateClanPlayer(ClanPlayer cp) {
cp.updateLastSeen();
if (SimpleClans.getInstance().hasUUID()) {
String query = "UPDATE `sc_players` SET 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() + "';";
core.update(query);
} else {
String query = "UPDATE `sc_players` SET 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()) + "' WHERE name = '" + cp.getName() + "';";
core.update(query);
if (plugin.getSettingsManager().isSavePeriodically()) {
modifiedClanPlayers.add(cp);
return;
}
core.update(getUpdateClanPlayerQuery(cp));
}
private String getUpdateClanPlayerQuery(ClanPlayer cp) {
String query = "UPDATE `sc_players` SET 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() + "';";
return query;
}
/**
@@ -702,17 +826,16 @@ public final class StorageManager {
* @param cp
*/
public void deleteClanPlayer(ClanPlayer cp) {
if (SimpleClans.getInstance().hasUUID()) {
String query = "DELETE FROM `sc_players` WHERE uuid = '" + cp.getUniqueId() + "';";
core.delete(query);
deleteKills(cp.getUniqueId());
} else {
String query = "DELETE FROM `sc_players` WHERE name = '" + cp.getName() + "';";
core.delete(query);
deleteKills(cp.getName());
final Clan clan = cp.getClan();
if (clan != null) {
clan.addBbWithoutSaving(ChatColor.AQUA + MessageFormat.format(plugin.getLang("has.been.purged"), cp.getName()));
updateClan(clan, false);
}
String query = "DELETE FROM `sc_players` WHERE uuid = '" + cp.getUniqueId() + "';";
core.delete(query);
deleteKills(cp.getUniqueId());
}
/**
* Insert a kill into the database
*
@@ -723,15 +846,9 @@ public final class StorageManager {
* @param type
*/
public void insertKill(Player attacker, String attackerTag, Player victim, String victimTag, String type) {
if (SimpleClans.getInstance().hasUUID()) {
String query = "INSERT INTO `sc_kills` ( `attacker_uuid`, `attacker`, `attacker_tag`, `victim_uuid`, `victim`, `victim_tag`, `kill_type`) ";
String values = "VALUES ( '" + attacker.getUniqueId() + "','" + attacker.getName() + "','" + attackerTag + "','" + victim.getUniqueId() + "','" + victim.getName() + "','" + victimTag + "','" + type + "');";
core.insert(query + values);
} else {
String query = "INSERT INTO `sc_kills` ( `attacker`, `attacker_tag`, `victim`, `victim_tag`, `kill_type`) ";
String values = "VALUES ( '" + attacker.getName() + "','" + attackerTag + "','" + victim.getName() + "','" + victimTag + "','" + type + "');";
core.insert(query + values);
}
String query = "INSERT INTO `sc_kills` ( `attacker_uuid`, `attacker`, `attacker_tag`, `victim_uuid`, `victim`, `victim_tag`, `kill_type`) ";
String values = "VALUES ( '" + attacker.getUniqueId() + "','" + attacker.getName() + "','" + attackerTag + "','" + victim.getUniqueId() + "','" + victim.getName() + "','" + victimTag + "','" + type + "');";
core.insert(query + values);
}
/**
@@ -775,14 +892,14 @@ public final class StorageManager {
int kills = res.getInt("kills");
out.put(victim, kills);
} catch (Exception ex) {
SimpleClans.getLog().info(ex.getMessage());
plugin.getLogger().info(ex.getMessage());
}
}
} catch (SQLException ex) {
SimpleClans.getLog().severe(String.format("An Error occurred: %s", ex.getErrorCode()));
SimpleClans.getLog().log(Level.SEVERE, null, ex);
plugin.getLogger().severe(String.format("An Error occurred: %s", ex.getErrorCode()));
plugin.getLogger().log(Level.SEVERE, null, ex);
}
}
@@ -809,20 +926,65 @@ public final class StorageManager {
int kills = res.getInt("kills");
out.put(attacker + " " + victim, kills);
} catch (Exception ex) {
SimpleClans.getLog().info(ex.getMessage());
plugin.getLogger().info(ex.getMessage());
}
}
} catch (SQLException ex) {
SimpleClans.getLog().severe(String.format("An Error occurred: %s", ex.getErrorCode()));
SimpleClans.getLog().log(Level.SEVERE, null, ex);
plugin.getLogger().severe(String.format("An Error occurred: %s", ex.getErrorCode()));
plugin.getLogger().log(Level.SEVERE, null, ex);
}
}
return out;
}
/**
* 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() {
@Override
public void run() {
callback.onResultReady(getMostKilled());
}
}.runTaskAsynchronously(plugin);
}
/**
* 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() {
@Override
public void run() {
callback.onResultReady(getKillsPerPlayer(playerName));
}
}.runTaskAsynchronously(plugin);
}
/**
* Callback that returns some data
*
* @author roinujnosde
*
*/
public interface DataCallback<T> {
/**
* Notifies when the result is ready
*
* @param data
*/
void onResultReady(T data);
}
/**
* Updates the database to the latest version
*
@@ -838,6 +1000,42 @@ public final class StorageManager {
query = "ALTER TABLE sc_clans ADD COLUMN `balance` double(64,2);";
core.execute(query);
}
/**
* From 2.7.16 to 2.7.17
*/
if (!core.existsColumn("sc_clans", "fee_enabled")) {
query = "ALTER TABLE sc_clans ADD COLUMN `fee_enabled` tinyint(1) default '0';";
core.execute(query);
}
if (!core.existsColumn("sc_clans", "fee_value")) {
query = "ALTER TABLE sc_clans ADD COLUMN `fee_value` double(64,2);";
core.execute(query);
}
/**
* From 2.7.21 to 2.7.22
*/
if (!core.existsColumn("sc_clans", "description")) {
query = "ALTER TABLE sc_clans ADD COLUMN `description` varchar(255);";
core.execute(query);
}
/**
* From 2.7.22 to 2.7.23
*/
if (!core.existsColumn("sc_players", "resign_times")) {
query = "ALTER TABLE sc_players ADD COLUMN `resign_times` text;";
core.execute(query);
}
/**
* From 2.8.2 to 2.9
*/
if (!core.existsColumn("sc_clans", "ranks")) {
query = "ALTER TABLE sc_clans ADD COLUMN `ranks` text;";
core.execute(query);
}
/**
* Bukkit 1.7.5+ UUID Migration
@@ -876,11 +1074,12 @@ public final class StorageManager {
*
* @param
*/
private void updatePlayersToUUID() {
SimpleClans.log("[SimpleClans] Starting Migration to UUID Players !");
SimpleClans.log("[SimpleClans] ==================== ATTENTION DONT STOP BUKKIT ! ==================== ");
SimpleClans.log("[SimpleClans] ==================== ATTENTION DONT STOP BUKKIT ! ==================== ");
SimpleClans.log("[SimpleClans] ==================== ATTENTION DONT STOP BUKKIT ! ==================== ");
private void updatePlayersToUUID() {
plugin.getLogger().log(Level.WARNING, "Starting Migration to UUID Players !");
plugin.getLogger().log(Level.WARNING, "==================== ATTENTION DONT STOP BUKKIT ! ==================== ");
plugin.getLogger().log(Level.WARNING, "==================== ATTENTION DONT STOP BUKKIT ! ==================== ");
plugin.getLogger().log(Level.WARNING, "==================== ATTENTION DONT STOP BUKKIT ! ==================== ");
SimpleClans.getInstance().setUUID(false);
List<ClanPlayer> cps = retrieveClanPlayers();
@@ -901,20 +1100,53 @@ public final class StorageManager {
String query3 = "UPDATE `sc_kills` SET victim_uuid = '" + uuidPlayer.toString() + "' WHERE victim = '" + cp.getName() + "';";
core.update(query3);
SimpleClans.log("[" + i + " / " + cps.size() + "] Success: " + cp.getName() + "; UUID: " + uuidPlayer.toString());
plugin.getLogger().info("[" + i + " / " + cps.size() + "] Success: " + cp.getName() + "; UUID: " + uuidPlayer.toString());
} catch (Exception ex) {
SimpleClans.log("[" + i + " / " + cps.size() + "] Failed [ERRO]: " + cp.getName() + "; UUID: ???");
plugin.getLogger().log(Level.WARNING, "[" + i + " / " + cps.size() + "] Failed [ERRO]: " + cp.getName() + "; UUID: ???");
}
i++;
}
SimpleClans.log("[SimpleClans] ==================== END OF MIGRATION ====================");
SimpleClans.log("[SimpleClans] ==================== END OF MIGRATION ====================");
SimpleClans.log("[SimpleClans] ==================== END OF MIGRATION ====================");
plugin.getLogger().log(Level.WARNING, "==================== END OF MIGRATION ====================");
plugin.getLogger().log(Level.WARNING, "==================== END OF MIGRATION ====================");
plugin.getLogger().log(Level.WARNING, "==================== END OF MIGRATION ====================");
if (!cps.isEmpty()) {
SimpleClans.log(MessageFormat.format("[SimpleClans] " + plugin.getLang("clan.players"), cps.size()));
plugin.getLogger().info(MessageFormat.format(plugin.getLang("clan.players"), cps.size()));
}
SimpleClans.getInstance().setUUID(true);
}
/**
* Saves modified Clans and ClanPlayers to the database
*
* @author RoinujNosde
* @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();
}
}
}
@@ -36,17 +36,13 @@ public final class TeleportManager {
* @param clanName
*/
public void addPlayer(Player player, Location dest, String clanName) {
int secs = SimpleClans.getInstance().getSettingsManager().getWaitSecs();
int secs = SimpleClans.getInstance().getSettingsManager().getWaitSecs();
waitingPlayers.put(player.getUniqueId().toString(), new TeleportState(player, dest, clanName));
if (SimpleClans.getInstance().hasUUID()) {
waitingPlayers.put(player.getUniqueId().toString(), new TeleportState(player, dest, clanName));
} else {
waitingPlayers.put(player.getName(), new TeleportState(player, dest, clanName));
}
if (secs > 0) {
ChatBlock.sendMessage(player, ChatColor.AQUA + MessageFormat.format(plugin.getLang("waiting.for.teleport.stand.still.for.0.seconds"), secs));
}
if (secs > 0) {
ChatBlock.sendMessage(player, ChatColor.AQUA
+ MessageFormat.format(plugin.getLang("waiting.for.teleport.stand.still.for.0.seconds"), secs));
}
}
private void dropItems(Player player) {
@@ -61,7 +57,7 @@ public final class TeleportManager {
List<Integer> itemsList = plugin.getSettingsManager().getItemsList();
if (itemsList.contains(item.getTypeId())) {
if (itemsList.contains(item.getType().getId())) {
player.getWorld().dropItemNaturally(player.getLocation(), item);
inv.remove(item);
}
@@ -78,7 +74,7 @@ public final class TeleportManager {
List<Integer> itemsList = plugin.getSettingsManager().getItemsList();
if (!itemsList.contains(item.getTypeId())) {
if (!itemsList.contains(item.getType().getId())) {
player.getWorld().dropItemNaturally(player.getLocation(), item);
inv.remove(item);
}
@@ -34,7 +34,7 @@ public class MySQLCore implements DBCore {
this.host = host;
this.username = username;
this.password = password;
this.log = SimpleClans.getLog();
this.log = SimpleClans.getInstance().getLogger();
initialize();
}
@@ -7,6 +7,8 @@ import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Logger;
import org.bukkit.scheduler.BukkitRunnable;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
/**
@@ -25,29 +27,33 @@ public class SQLiteCore implements DBCore {
public SQLiteCore(String dbLocation) {
this.dbName = "SimpleClans";
this.dbLocation = dbLocation;
this.log = SimpleClans.getLog();
this.log = SimpleClans.getInstance().getLogger();
initialize();
}
private void initialize() {
if (file == null) {
File dbFolder = new File(dbLocation);
if (dbName.contains("/") || dbName.contains("\\") || dbName.endsWith(".db")) {
log.severe("The database name can not contain: /, \\, or .db");
return;
}
if (!dbFolder.exists()) {
dbFolder.mkdir();
}
file = new File(dbFolder.getAbsolutePath() + File.separator + dbName + ".db");
}
try {
Class.forName("org.sqlite.JDBC");
connection = DriverManager.getConnection("jdbc:sqlite:" + file.getAbsolutePath());
} catch (SQLException ex) {
log.severe("SQLite exception on initialize " + ex);
} catch (ClassNotFoundException ex) {
@@ -98,7 +104,6 @@ public class SQLiteCore implements DBCore {
@Override
public ResultSet select(String query) {
try {
return getConnection().createStatement().executeQuery(query);
} catch (SQLException ex) {
log.severe("Error at SQL Query: " + ex.getMessage());
@@ -114,14 +119,18 @@ public class SQLiteCore implements DBCore {
*/
@Override
public void insert(String query) {
try {
getConnection().createStatement().executeQuery(query);
} catch (SQLException ex) {
if (!ex.toString().contains("not return ResultSet")) {
log.severe("Error at SQL INSERT Query: " + ex);
log.severe("Query: " + query);
}
}
if (SimpleClans.getInstance().getSettingsManager().getUseThreads()) {
executeAsync(query, "INSERT");
} else {
try {
getConnection().createStatement().executeQuery(query);
} catch (SQLException ex) {
if (!ex.toString().contains("not return ResultSet")) {
log.severe("Error at SQL INSERT Query: " + ex);
log.severe("Query: " + query);
}
}
}
}
/**
@@ -131,13 +140,17 @@ public class SQLiteCore implements DBCore {
*/
@Override
public void update(String query) {
try {
getConnection().createStatement().executeQuery(query);
} catch (SQLException ex) {
if (!ex.toString().contains("not return ResultSet")) {
log.severe("Error at SQL UPDATE Query: " + ex);
log.severe("Query: " + query);
}
if (SimpleClans.getInstance().getSettingsManager().getUseThreads()) {
executeAsync(query, "UPDATE");
} else {
try {
getConnection().createStatement().executeQuery(query);
} catch (SQLException ex) {
if (!ex.toString().contains("not return ResultSet")) {
log.severe("Error at SQL UPDATE Query: " + ex);
log.severe("Query: " + query);
}
}
}
}
@@ -148,13 +161,17 @@ public class SQLiteCore implements DBCore {
*/
@Override
public void delete(String query) {
try {
getConnection().createStatement().executeQuery(query);
} catch (SQLException ex) {
if (!ex.toString().contains("not return ResultSet")) {
log.severe("Error at SQL DELETE Query: " + ex);
log.severe("Query: " + query);
}
if (SimpleClans.getInstance().getSettingsManager().getUseThreads()) {
executeAsync(query, "DELETE");
} else {
try {
getConnection().createStatement().executeQuery(query);
} catch (SQLException ex) {
if (!ex.toString().contains("not return ResultSet")) {
log.severe("Error at SQL DELETE Query: " + ex);
log.severe("Query: " + query);
}
}
}
}
@@ -208,4 +225,25 @@ public class SQLiteCore implements DBCore {
return false;
}
}
private void executeAsync(String query, String sqlType) {
new BukkitRunnable() {
@Override
public void run() {
try {
if (connection != null && !connection.isClosed()) {
connection.createStatement().executeUpdate(query);
}
}
catch (SQLException ex) {
if (!ex.toString().contains("not return ResultSet"))
{
log.severe("[Thread] Error at SQL " + sqlType + " Query: " + ex);
log.severe("[Thread] Query: " + query);
}
}
}
}.runTaskAsynchronously(SimpleClans.getInstance());
}
}
@@ -0,0 +1,72 @@
package net.sacredlabyrinth.phaed.simpleclans.tasks;
import java.text.MessageFormat;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.scheduler.BukkitRunnable;
import net.sacredlabyrinth.phaed.simpleclans.ChatBlock;
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.managers.SettingsManager;
/**
*
* @author roinujnosde
*/
public class CollectFeeTask extends BukkitRunnable {
private final SimpleClans plugin;
public CollectFeeTask() {
plugin = SimpleClans.getInstance();
}
/**
* Starts the repetitive task
*/
public void start() {
SettingsManager sm = plugin.getSettingsManager();
int hour = sm.getTasksCollectFeeHour();
int minute = sm.getTasksCollectFeeMinute();
long delay = Helper.getDelayTo(hour, minute);
this.runTaskTimerAsynchronously(SimpleClans.getInstance(), delay * 20, 86400 * 20);
}
/**
* (used internally)
*/
@Override
public void run() {
for (Clan clan : plugin.getClanManager().getClans()) {
final double memberFee = clan.getMemberFee();
if (clan.isMemberFeeEnabled() && memberFee > 0) {
for (ClanPlayer cp : clan.getFeePayers()) {
final boolean success = plugin.getPermissionsManager()
.playerChargeMoney(Bukkit.getOfflinePlayer(cp.getUniqueId()), memberFee);
new BukkitRunnable() {
@Override
public void run() {
if (success) {
ChatBlock.sendMessage(cp.toPlayer(), ChatColor.AQUA +
MessageFormat.format(plugin.getLang("fee.collected"), memberFee));
clan.setBalance(clan.getBalance() + memberFee);
plugin.getStorageManager().updateClan(clan);
} else {
clan.removePlayerFromClan(cp.getUniqueId());
clan.addBb(ChatColor.AQUA +
MessageFormat.format(plugin.getLang("bb.fee.player.kicked"), cp.getName()));
}
}
}.runTask(plugin);
}
}
}
}
}
@@ -0,0 +1,60 @@
package net.sacredlabyrinth.phaed.simpleclans.tasks;
import java.text.MessageFormat;
import net.md_5.bungee.api.ChatColor;
import net.sacredlabyrinth.phaed.simpleclans.Helper;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
import net.sacredlabyrinth.phaed.simpleclans.managers.SettingsManager;
import org.bukkit.scheduler.BukkitRunnable;
/**
*
* @author roinujnosde
*/
public class CollectUpkeepTask extends BukkitRunnable {
private final SimpleClans plugin;
private final SettingsManager settingsManager;
public CollectUpkeepTask() {
plugin = SimpleClans.getInstance();
settingsManager = plugin.getSettingsManager();
}
/**
* Starts the repetitive task
*/
public void start() {
int hour = settingsManager.getTasksCollectUpkeepHour();
int minute = settingsManager.getTasksCollectUpkeepMinute();
long delay = Helper.getDelayTo(hour, minute);
this.runTaskTimerAsynchronously(SimpleClans.getInstance(), delay * 20, 86400 * 20);
}
/**
* (used internally)
*/
@Override
public void run() {
if (plugin == null) {
throw new IllegalStateException("Use the start() method!");
}
plugin.getClanManager().getClans().forEach((clan) -> {
if (settingsManager.isChargeUpkeepOnlyIfMemberFeeEnabled() && !clan.isMemberFeeEnabled()) {
return;
}
double upkeep = settingsManager.getClanUpkeep();
if (settingsManager.isMultiplyUpkeepBySize()) {
upkeep = upkeep * clan.getSize();
}
final double balance = clan.getBalance();
if (balance >= upkeep) {
clan.setBalance(balance - upkeep);
clan.addBb(ChatColor.AQUA + MessageFormat.format(plugin.getLang("upkeep.collected"), upkeep), false);
} else {
clan.disband();
}
});
}
}
@@ -0,0 +1,28 @@
package net.sacredlabyrinth.phaed.simpleclans.tasks;
import org.bukkit.scheduler.BukkitRunnable;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
/**
*
* @author RoinujNosde
* @since 2.10.2
*
*/
public class SaveDataTask extends BukkitRunnable {
SimpleClans plugin = SimpleClans.getInstance();
/**
* Starts the repetitive task
*/
public void start() {
long interval = plugin.getSettingsManager().getSaveInterval() * 20;
runTaskTimerAsynchronously(plugin, interval, interval);
}
@Override
public void run() {
plugin.getStorageManager().saveModified();
}
}
@@ -0,0 +1,57 @@
package net.sacredlabyrinth.phaed.simpleclans.tasks;
import java.text.MessageFormat;
import net.sacredlabyrinth.phaed.simpleclans.Helper;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
import net.sacredlabyrinth.phaed.simpleclans.managers.SettingsManager;
import org.bukkit.scheduler.BukkitRunnable;
/**
*
* @author roinujnosde
*/
public class UpkeepWarningTask extends BukkitRunnable {
private final SimpleClans plugin;
private final SettingsManager sm;
public UpkeepWarningTask() {
plugin = SimpleClans.getInstance();
sm = plugin.getSettingsManager();
}
/**
* Starts the repetitive task
*
*/
public void start() {
int hour = sm.getTasksCollectUpkeepWarningHour();
int minute = sm.getTasksCollectUpkeepWarningMinute();
long delay = Helper.getDelayTo(hour, minute);
this.runTaskTimerAsynchronously(plugin, delay * 20, 86400 * 20);
}
/**
* (used internally)
*/
@Override
public void run() {
if (plugin == null) {
throw new IllegalStateException("Use the start() method!");
}
plugin.getClanManager().getClans().forEach((clan) -> {
if (sm.isChargeUpkeepOnlyIfMemberFeeEnabled() && !clan.isMemberFeeEnabled()) {
return;
}
final double balance = clan.getBalance();
double upkeep = sm.getClanUpkeep();
if (sm.isMultiplyUpkeepBySize()) {
upkeep = upkeep * clan.getSize();
}
if (balance < upkeep) {
clan.addBb(MessageFormat.format(plugin.getLang("balance.is.not.enough.for.upkeep"), upkeep), false);
}
});
}
}
@@ -10,15 +10,15 @@ import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
*/
public class ThreadUpdateSQL extends Thread {
Connection Connection;
String Query;
String TypeSQL;
Connection connection;
String query;
String sqlType;
public ThreadUpdateSQL(Connection Connection, String Query, String TypeSQL)
public ThreadUpdateSQL(Connection connection, String query, String sqlType)
{
this.Query = Query;
this.Connection = Connection;
this.TypeSQL = TypeSQL;
this.query = query;
this.connection = connection;
this.sqlType = sqlType;
}
@Override
@@ -26,14 +26,16 @@ public class ThreadUpdateSQL extends Thread {
{
try
{
this.Connection.createStatement().executeUpdate(this.Query);
if (!connection.isClosed()) {
this.connection.createStatement().executeUpdate(this.query);
}
}
catch (SQLException ex)
{
if (!ex.toString().contains("not return ResultSet"))
{
SimpleClans.getLog().severe("[Thread] Error at SQL " + this.TypeSQL + " Query: " + ex);
SimpleClans.getLog().severe("[Thread] Query: " + this.Query);
SimpleClans.getInstance().getLogger().severe("[Thread] Error at SQL " + this.sqlType + " Query: " + ex);
SimpleClans.getInstance().getLogger().severe("[Thread] Query: " + this.query);
}
}
}
@@ -25,7 +25,7 @@ import java.util.concurrent.Callable;
public class UUIDFetcher implements Callable<Map<String, UUID>> {
private static final double PROFILES_PER_REQUEST = 100;
private static final String PROFILE_URL = "https://api.mojang.com/profiles/minecraft";
private static final String PROFILE_URL = "https://api.mojang.com/users/profiles/minecraft";
private final JSONParser jsonParser = new JSONParser();
private final List<String> names;
private final boolean rateLimiting;
@@ -16,8 +16,6 @@ public class UUIDMigration {
private UUIDMigration() {}
public static boolean canReturnUUID() {
if(!SimpleClans.getInstance().getSettingsManager().isOnlineMode())
return false;
try {
Bukkit.class.getDeclaredMethod("getPlayer", UUID.class);
return true;
@@ -27,26 +25,23 @@ public class UUIDMigration {
}
public static UUID getForcedPlayerUUID(String playerDisplayName) {
Player OnlinePlayer = SimpleClans.getInstance().getServer().getPlayerExact(playerDisplayName);
OfflinePlayer OfflinePlayer = SimpleClans.getInstance().getServer().getOfflinePlayer(playerDisplayName);
Player onlinePlayer = SimpleClans.getInstance().getServer().getPlayerExact(playerDisplayName);
@SuppressWarnings("deprecation")
OfflinePlayer offlinePlayer = SimpleClans.getInstance().getServer().getOfflinePlayer(playerDisplayName);
if (OnlinePlayer != null) {
return OnlinePlayer.getUniqueId();
if (onlinePlayer != null) {
return onlinePlayer.getUniqueId();
} else {
for (ClanPlayer cp : SimpleClans.getInstance().getClanManager().getAllClanPlayers()) {
if (cp.getName().equalsIgnoreCase(playerDisplayName)) {
return cp.getUniqueId();
}
}
try {
return UUIDFetcher.getUUIDOf(playerDisplayName);
} catch (Exception ex) {
if (OfflinePlayer != null) {
return OfflinePlayer.getUniqueId();
} else {
return null;
}
}
for (ClanPlayer cp : SimpleClans.getInstance().getClanManager().getAllClanPlayers()) {
if (cp.getName().equalsIgnoreCase(playerDisplayName)) {
return cp.getUniqueId();
}
}
if (offlinePlayer != null) {
return offlinePlayer.getUniqueId();
} else {
return null;
}
}
}
+184 -141
View File
@@ -1,141 +1,184 @@
safe-civilians: false
tag:
default-color: '8'
max-length: 5
bracket:
color: '8'
leader-color: '4'
left: ''
right: ''
min-length: 2
separator:
color: '8'
leader-color: '4'
char: ' .'
settings:
online-mode: true
disable-messages: false
tameable-mobs-sharing: false
teleport-blocks: false
teleport-home-on-spawn: false
drop-items-on-clan-home: false
keep-items-on-clan-home: false
item-list: []
show-debug-info: false
mchat-integration: true
enable-auto-groups: false
chat-compatibility-mode: true
rival-limit-percent: 50
use-colorcode-from-prefix-for-name: true
display-chat-tags: true
unrivable-clans:
- admin
- staff
- mod
show-unverified-on-list: false
blacklisted-worlds: []
banned-players: []
disallowed-tags:
- vip
- clan
language: en
disallowed-tag-colors:
- '4'
server-name: '&4SimpleClans'
new-clan-verification-required: true
allow-regroup-command: true
allow-reset-kdr: false
commands:
more: more
ally: ally
clan: clan
accept: accept
deny: deny
global: global
clan_chat: "."
force-priority: true
economy:
creation-price: 100.0
purchase-clan-create: false
verification-price: 1000.0
purchase-clan-verify: false
invite-price: 20.0
purchase-clan-invite: false
home-teleport-price: 5.0
purchase-home-teleport: false
home-teleport-set-price: 5.0
purchase-home-teleport-set: false
home-regroup-price: 5.0
purchase-home-regroup: false
unique-tax-on-regroup: true
issuer-pays-regroup: true
money-per-kill: false
money-per-kill-kdr-multipier: 10
purchase-reset-kdr: true
reset-kdr-price: 10000.0
kill-weights:
rival: 2.0
civilian: 0.0
neutral: 1.0
clan:
homebase-teleport-wait-secs: 10
homebase-can-be-set-only-once: true
min-size-to-set-rival: 3
max-length: 25
max-members: 25
confirmation-for-promote: false
trust-members-by-default: false
confirmation-for-demote: false
ff-on-by-default: false
min-length: 2
min-size-to-set-ally: 3
page:
untrusted-color: '8'
clan-name-color: b
subtitle-color: '7'
headings-color: '8'
trusted-color: f
leader-color: '4'
separator: '-'
size: 100
clanchat:
enable: true
tag-based-clan-chat: false
announcement-color: e
format: "&b[%clan%&b] &4<%nick-color%%player%&4> %rank%: &b%message%"
rank: "&f[%rank%&f]"
leader-color: '4'
member-color: 'f'
request:
message-color: b
ask-frequency-secs: 60
max-asks-per-request: 1440
bb:
color: e
accent-color: '8'
show-on-login: true
size: 6
allychat:
enable: true
format: "&b[Ally Chat] &4<%clan%&4> <%nick-color%%player%&4> %rank%: &b%message%"
rank: "&f[%rank%&f]"
leader-color: '4'
member-color: 'f'
purge:
inactive-player-data-days: 30
inactive-clan-days: 7
unverified-clan-days: 2
mysql:
username: ''
host: localhost
port: 3306
enable: false
password: ''
database: ''
permissions:
auto-group-groupname: true
YourClanNameHere:
- test.permission
performance:
use-threads: false
use-bungeecord: false
safe-civilians: false
tag:
default-color: '8'
max-length: 5
bracket:
color: '8'
leader-color: '4'
left: ''
right: ''
min-length: 2
separator:
color: '8'
leader-color: '4'
char: ' .'
settings:
disable-messages: false
tameable-mobs-sharing: false
teleport-blocks: false
teleport-home-on-spawn: false
drop-items-on-clan-home: false
keep-items-on-clan-home: false
item-list: []
show-debug-info: false
mchat-integration: true
enable-auto-groups: false
chat-compatibility-mode: true
rival-limit-percent: 50
use-colorcode-from-prefix-for-name: true
display-chat-tags: true
unrivable-clans:
- admin
- staff
- mod
show-unverified-on-list: false
blacklisted-worlds: []
banned-players: []
disallowed-tags:
- vip
- clan
language: en
language-per-player: false
disallowed-tag-colors:
- '4'
server-name: '&4SimpleClans'
new-clan-verification-required: true
allow-regroup-command: true
allow-reset-kdr: false
rejoin-cooldown: 60
rejoin-cooldown-enabled: false
kdr-grinding-prevention:
enable-max-kills: false
max-kills-per-victim: 10
enable-kill-delay: false
delay-between-kills: 5
list:
size: size
kdr: kdr
name: name
founded: founded
active: active
asc: asc
desc: desc
default: kdr
commands:
more: more
ally: ally
clan: clan
accept: accept
deny: deny
global: global
clan_chat: "."
force-priority: true
economy:
creation-price: 100.0
purchase-clan-create: false
verification-price: 1000.0
purchase-clan-verify: false
invite-price: 20.0
purchase-clan-invite: false
home-teleport-price: 5.0
purchase-home-teleport: false
home-teleport-set-price: 5.0
purchase-home-teleport-set: false
home-regroup-price: 5.0
purchase-home-regroup: false
unique-tax-on-regroup: true
issuer-pays-regroup: true
money-per-kill: false
money-per-kill-kdr-multipier: 10
purchase-reset-kdr: true
reset-kdr-price: 10000.0
purchase-member-fee-set: false
member-fee-set-price: 1000.0
member-fee-enabled: false
max-member-fee: 200.0
upkeep: 200.0
upkeep-enabled: false
multiply-upkeep-by-clan-size: false
charge-upkeep-only-if-member-fee-enabled: true
kill-weights:
rival: 2.0
civilian: 0.0
neutral: 1.0
deny-same-ip-kills: false
clan:
homebase-teleport-wait-secs: 10
homebase-can-be-set-only-once: true
min-size-to-set-rival: 3
max-length: 25
max-description-length: 120
min-description-length: 10
max-members: 25
confirmation-for-promote: false
trust-members-by-default: false
confirmation-for-demote: false
percentage-online-to-demote: 100.0
ff-on-by-default: false
min-length: 2
min-size-to-set-ally: 3
tasks:
collect-upkeep:
hour: 1
minute: 30
collect-upkeep-warning:
hour: 12
minute: 0
collect-fee:
hour: 1
minute: 0
page:
untrusted-color: '8'
clan-name-color: b
subtitle-color: '7'
headings-color: '8'
trusted-color: f
leader-color: '4'
separator: '-'
size: 100
clanchat:
enable: true
tag-based-clan-chat: false
announcement-color: e
format: "&b[%clan%&b] &4<%nick-color%%player%&4> %rank%: &b%message%"
rank: "&f[%rank%&f]"
leader-color: '4'
trusted-color: 'f'
member-color: '7'
request:
message-color: b
ask-frequency-secs: 60
max-asks-per-request: 1440
bb:
color: e
accent-color: '8'
show-on-login: true
size: 6
login-size: 6
allychat:
enable: true
format: "&b[Ally Chat] &4<%clan%&4> <%nick-color%%player%&4> %rank%: &b%message%"
rank: "&f[%rank%&f]"
leader-color: '4'
trusted-color: 'f'
member-color: '7'
purge:
inactive-player-data-days: 30
inactive-clan-days: 7
unverified-clan-days: 2
mysql:
username: ''
host: localhost
port: 3306
enable: false
password: ''
database: ''
permissions:
auto-group-groupname: true
YourClanNameHere:
- test.permission
performance:
save-periodically: true
save-interval: 10
use-threads: true
use-bungeecord: false
-417
View File
@@ -1,417 +0,0 @@
create.command: "criar"
list.command: "listar"
profile.command: "perfil"
roster.command: "roster" #TODO
lookup.command: "lookup" #TODO
leaderboard.command: "leaderboard" #TODO
alliances.command: "aliancas"
rivalries.command: "rivalidades"
vitals.command: "saude"
coords.command: "coords"
stats.command: "estatisticas"
ally.command: "aliado"
rival.command: "rival"
bb.command: "bb"
cape.command: "capa"
modtag.command: "mudartag"
toggle.command: "alternar"
invite.command: "convidar"
kick.command: "expulsar"
bank.command: "banco"
trust.command: "confiar"
untrust.command: "naoconfiar"
promote.command: "promover"
demote.command: "rebaixar"
clanff.command: "clanff"
ff.command: "ff"
resign.command: "abandonar"
disband.command: "debandar"
verify.command: "verificar"
ban.command: "banir"
unban.command: "desbanir"
reload.command: "recarregar"
globalff.command: "globalff"
kills.command: "kills"
mostkilled.command: "maismatou"
war.command: "guerra"
home.command: "casa"
setrank.command: "definirrank"
place.command: "colocar"
resetkdr.command: "redefinirkdr"
usage.resetkdr: "Usage: /{0} resetkdr [all/player]" #TODO: from here, to the bottom
usage.clan.alliances: "Usage: /{0} alliances"
usage.ally: "Usage: /{0} ally add/remove [tag]"
usage.ban.unban: "Usage: /{0} ban/unban [player]"
usage.rival: "Usage: /{0} rival add/remove [tag]"
usage.war: "Usage: /{0} war start/end [tag]"
usage.cape.url: "Usage: /{0} cape [url]"
usage.setrank: "Usage: /{0} setrank [player] [rank], rank can be multiple worlds and contain &f color codes"
usage.clanff: "Usage: /{0} clanff allow/block"
usage.0.coords: "Usage: /{0} coords"
usage.create.tag: "Usage: /{0} create [tag] [name]"
usage.demote.leader: "Usage: /{0} demote [leader]"
usage.0.disband: "Usage: /{0} disband"
usage.0.ff.allow.auto: "Usage: /{0} ff allow/auto"
usage.0.globalff.allow.auto: "Usage: /{0} globalff allow/auto"
usage.0.permissions.player: "Usage: /{0} permissions [clan] add/remove [permission]"
usage.0.invite.player: "Usage: /{0} invite [player]"
usage.kick.player: "Usage: /{0} kick [player]"
usage.bank: "Usage: /{0} bank withdraw/deposit/status [amount]"
usage.0.modtag.tag: "Usage: /{0} modtag [tag]"
usage.list: "Usage: /{0} list"
usage.lookup.tag: "Usage: /{0} lookup [tag]"
usage.0.profile.tag: "Usage: /{0} profile [tag]"
usage.0.promote.member: "Usage: /{0} promote <member>"
usage.0.rivalries: "Usage: /{0} rivalries"
usage.0.roster.tag: "Usage: /{0} roster [tag]"
usage.0.stats: "Usage: /{0} stats"
usage.0.trust.player: "Usage: /{0} trust [player]"
usage.0.untrust.player: "Usage: /{0} untrust [player]"
usage.0.verify.tag: "Usage: /{0} verify [tag]"
usage.0.vitals: "Usage: /{0} vitals"
usage.0.place: "Usage: /{0} place [player] [tag]"
usage.0.leaderboard: "Usage: /{0} leaderboard"
0.reload.1.reload.configuration: "/{0} reload{1} - Reload configuration"
0.globalff.allow.auto.1.set.global.friendly.fire: "/{0} globalff allow/auto {1} - Set global friendly fire"
0.place: "/{0} place [player] [tag]{1} - Place a player in a clan"
0.ban.unban.player.1.ban.unban.a.player: "/{0} ban/unban [player]{1} - Ban/unban a player"
0.hometp.clan.1.tp.home.a.clan: "/{0} home tp [clan]{1} - Teleport to all clans homes"
0.disband.tag.1.disband.a.clan: "/{0} disband [tag]{1} - Disband a clan"
0.resetkdr.1.resets.kdr: "/{0} resetkdr player/all{1} - Reset KDR of all players or just of one"
0.resetkdr.1.resets.your.kdr: "/{0} resetkdr{1} - Reset your KDR"
0.verify.tag.1.verify.an.unverified.clan: "/{0} verify [tag]{1} - Verify an unverified clan"
0.verify.1.purchase.verification.of.your.clan: "/{0} verify{1} - Purchase verification of your clan"
0.list.1.lists.all.clans: "/{0} list{1} - Lists all clans"
0.profile.1.view.your.clan.s.profile: "/{0} profile{1} - View your clan''s profile"
0.profile.tag.1.view.a.clan.s.profile: "/{0} profile [tag]{1} - View a clan''s profile"
0.lookup.1.lookup.your.info: "/{0} lookup{1} - Lookup your info"
0.lookup.player.1.lookup.a.player.s.info: "/{0} lookup [player]{1} - Lookup a player''s info"
0.leaderboard.1.view.leaderboard: "/{0} leaderboard{1} - View leaderboard"
0.alliances.1.view.all.clan.alliances: "/{0} alliances{1} - View all clan alliances"
0.rivalries.1.view.all.clan.rivalries: "/{0} rivalries{1} - View all clan rivalries"
0.roster.1.view.your.clan.s.member.list: "/{0} roster{1} - View your clan''s member list"
0.roster.tag.1.view.a.clan.s.member.list: "/{0} roster [tag]{1} - View a clan''s member list"
0.vitals.1.view.your.clan.member.s.vitals: "/{0} vitals{1} - View your clan member''s vitals"
0.coords.1.view.your.clan.member.s.coordinates: "/{0} coords{1} - View your clan member''s coordinates"
0.stats.1.view.your.clan.member.s.stats: "/{0} stats{1} - View your clan member''s stats"
0.ally.add.remove.tag.1.add.remove.an.ally.clan: "/{0} ally add/remove [tag]{1} - Add/remove an ally clan"
0.rival.add.remove.tag.1.add.remove.a.rival.clan: "/{0} rival add/remove [tag]{1} - Add/remove a rival clan"
0.bb.1.display.bulletin.board: "/{0} bb{1} - Display bulletin board"
0.bb.msg.1.add.a.message.to.the.bulletin.board: "/{0} bb [msg]{1} - Add a message to the bulletin board"
0.modtag.tag.1.modify.the.clan.s.tag: "/{0} modtag [tag]{1} - Modify the clan''s tag"
0.cape.url.1.change.your.clan.s.cape: "/{0} cape [url]{1} - Change your clan''s cape"
0.invite.player.1.invite.a.player: "/{0} invite [player]{1} - Invite a player"
0.kick.player.1.kick.a.player.from.the.clan: "/{0} kick [player]{1} - Kick a player from the clan"
0.trust.untrust.player.1.set.trust.level1: "/{0} trust [player]{1} - Set member as trusted"
0.trust.untrust.player.1.set.trust.level2: "/{0} untrust [player]{1} - Set member as untrusted"
0.promote.member.1.promote.a.member.to.leader: "/{0} promote [member]{1} - Promote a member to leader"
0.demote.leader.1.demote.a.leader.to.member: "/{0} demote [leader]{1} - Demote a leader to member"
0.clanff.allow.block.1.toggle.clan.s.friendly.fire: "/{0} clanff allow/block{1} - Toggle clan''s friendly fire"
0.ff.allow.auto.1.toggle.personal.friendly.fire: "/{0} ff allow/auto{1} - Toggle personal friendly fire"
0.toggle.command: "/{0} toggle [{2}]{1} - Toggle personal settings"
0.resign.1.resign.from.the.clan: "/{0} resign{1} - Resign from the clan"
0.disband.1.disband.your.clan: "/{0} disband{1} - Disband your clan"
0.trust.setrank: "/{0} setrank [player] [rank]{1} - Give a player a rank"
0.create.tag.name.1.purchase.a.new.clan: "/{0} create [tag] [name]{1} - Purchase a new clan"
0.create.tag.name.1.create.a.new.clan: "/{0} create [tag] [name]{1} - Create a new clan"
0.kills: "/{0} kills{1} - View your kill counts"
0.killsplayer: "/{0} kills [player]{1} - View a player''s kill counts"
0.mostkilled: "/{0} mostkilled{1} - View serverwide most killed counts"
home-menu: "/{0} home{1} - Teleport to clan home-base"
home-set-menu: "/{0} home set{1} - Set the clan''s home base"
home-clear-menu: "/{0} home clear{1} - Clear the clan''s home base"
home-regroup-menu: "/{0} home regroup [me]{1} - Regroup all members to clan home-base or to you"
example.clan.modtag.4kfo.4l: "Example: /clan modtag &4K&fo&4L"
example.clan.create: "Example: /clan create &4Kol Knights of the Labyrinth"
clan: "Clan"
allies: "Allies"
alliances: "alliances"
coords: "coords"
name: "Name"
distance: "Distance"
coords.upper: "Coords"
world: "World"
kdr: "KDR"
members: "Members"
clans.lower: "clans"
rival: "Rival"
civilian: "Civilian"
neutral: "Neutral"
free.agent: "Free Agent"
days: "days"
rivals: "Rivals"
rivalries: "rivalries"
online: "Online"
player: "Player"
seen: "Seen"
leader: "leader"
roster: "roster"
trusted: "trusted"
untrusted: "untrusted"
deaths: "Deaths"
weights: "Weights"
stats: "stats"
health: "Health"
armor: "Armor"
weapons: "Weapons"
food: "Food"
vitals: "vitals"
verified: "Verified"
unverified: "Unverified"
profile: "profile"
civilian.abbreviation: "Civ"
rank: "Rank"
leaders: "Leaders"
none: "None"
today: "Today"
kills: "Kills"
mostkilled: "Most Killed"
killcount: "Kill Count"
attacker: "Attacker"
victim: "Victim"
kill.death.ratio: "Kill/Death Ratio"
nokillsfound: "No Kills Found"
version.loaded: "[{0}] Version {1} loaded"
promoted.to.leader: "{0} has been promoted to leader"
denied.demotion: "{0} denied the demotion of {1}. Consensus failed."
membership.invitation: "{0} has denied the membership invitation"
joined.the.clan: "{0} has joined the clan"
signed.off.request.cancelled: "{0} has signed off. {1} request cancelled."
clan.deletion: "{0} denied the clan deletion. Consensus failed."
has.been.disbanded: "Clan {0} has been disbanded"
denied.the.promotion: "{0} denied the promotion of {1}. Consensus failed."
demoted.back.to.member: "{0} has been demoted back to member"
peace.agreement.denied: "The peace agreement with {0} was denied"
denied.to.make.peace: "{0} has denied to make peace with {1}"
broken.the.rivalry: "{0} has broken the rivalry with {1}"
broken.the.rivalry.with: "{0} has broken the rivalry with {1}"
the.alliance.was.denied: "The alliance with {0} was denied"
denied.an.alliance: "{0} has denied an alliance with {1}"
accepted.an.alliance: "{0} has accepted an alliance with {1}"
created.an.alliance: "{0} has created an alliance with {1}"
has.joined: "{0} has joined {1}"
proposing.to.end.the.rivalry: "{0} is proposing to end the rivalry with {1}"
proposing.an.alliance: "{0} is proposing an alliance with {1}"
inviting.you.to.join: "{0} is inviting you to join {1}"
asking.for.the.deletion: "{0} is asking for the deletion of the clan"
asking.for.the.promotion: "{0} is asking for the promotion of {1}"
asking.for.the.demotion: "{0} is asking for the demotion of {1}"
accept.or.deny: "{0} or {1}"
not.sufficient.money: "You do not have sufficient money in your account"
account.has.been.debited: "Your account has been debited {0}"
mysql.connection.successful: "MySQL Connection successful"
mysql.connection.failed: "MySQL Connection failed"
sqlite.connection.successful: "SQLite Connection successful"
sqlite.connection.failed: " SQLite Connection failed"
purging.player.data: "purging player''s data: {0}"
purging.clan: "Purging clan: {0}"
clan.players: "Clan players: {0}"
clans: "Clans: {0}"
banned: "You are banned from using clan commands"
nothing.more.to.see: "Nothing more to see"
nothing.to.deny: "Nothing to deny"
no.leader.permissions: "You do not have leader permissions"
you.have.already.voted: "You have already voted"
has.voted.to.deny: "{0} has voted to deny"
nothing.to.accept: "Nothing to accept"
view.next.page: "Type /{0} to view next page."
voted.to.accept: "{0} voted to accept"
bulletin.board.header: "{0}* {1}{2} bulletin board"
has.been.disbanded.rivalry.ended: "{0} has been disbanded. Rivalry has ended."
has.been.disbanded.alliance.ended: "{0} has been disbanded. Alliance has ended."
clan.disbanded: "Clan Disbanded"
1.color.day: "1 {0}day"
many.color.days: "{0}{1} days"
does.not.match: "Does not match a clan command"
simpleclans.command.failure: "SimpleClans command failure: {0}"
insufficient.permissions: "Insufficient permissions"
clan.is.not.verified: "Clan is not verified"
not.a.member.of.any.clan: "You are not a member of any clan"
minimum.to.make.alliance: "Your clan must have at least {0} players in order to make alliances"
no.clan.matched: "No clan matched"
cannot.ally.with.an.unverified.clan: "You cannot ally with an unverified clan"
your.clans.are.not.allies: "Your clans are not allies"
has.broken.the.alliance: "{0} has broken the alliance with {1}"
at.least.one.leader.accept.the.alliance: "At least one leader of the allied must be online to accept the alliance"
leaders.have.been.asked.for.an.alliance: "{0} leaders have been asked for an alliance"
your.clans.are.already.allies: "Your clans are already allies"
your.clan.cannot.create.rivals: "Your clan cannot create rivals"
min.players.rivalries: "Your clan must have at least {0} players in order to make rivalries"
this.player.is.already.banned: "This player is already banned"
player.added.to.banned.list: "Player added to banned list"
you.banned: "You have been banned from clan commands"
cape.must.be.png: "The cape url must point to a png image"
url.error: "The URL is retuning an error. Please verify that it is working."
changed.the.clan.cape: "{0} has changed the clan''s cape"
clan.wide.friendly.fire.blocked: "Clan-wide friendly-fire blocked"
clan.wide.friendly.fire.is.allowed: "Clan-wide friendly-fire is allowed"
only.trusted.players.can.access.clan.coords: "Only trusted players can access clan coords"
you.are.the.only.member.online: "You are the only member online"
your.clan.tag.cannot.be.longer.than.characters: "Your clan''s tag cannot be longer than {0} characters"
your.clan.tag.must.be.longer.than.characters: "Your clan''s tag must be longer than {0} characters"
your.tag.cannot.contain.the.following.colors: "Your tag cannot contain the following colors: {0}"
your.tag.cannot.contain.color.codes: "Your tag cannot contain color codes"
your.clan.name.cannot.be.longer.than.characters: "Your clan''s name cannot be longer than {0} characters"
your.clan.name.must.be.longer.than.characters: "Your clan''s name must be longer than {0} characters"
your.clan.tag.can.only.contain.letters.numbers.and.color.codes: "Your clan''s tag can only contain letters, numbers, and color codes"
your.clan.name.cannot.contain.color.codes: "Your clan''s name cannot contain color codes"
that.tag.name.is.disallowed: "That tag name is disallowed"
you.must.first.resign: "You must first resign from {0}"
clan.with.this.tag.already.exists: "A clan with this tag already exists"
get.your.clan.verified.to.access.advanced.features: "Get your clan verified to access advanced features"
clan.created: "Clan {0} created"
leaders.must.be.online.to.vote.on.demotion: "All leaders other than the demoted must be online to vote on this demotion"
demotion.vote.has.been.requested.from.all.leaders: "Demotion vote has been requested from all leaders"
player.is.not.a.leader.of.your.clan: "The player is not a leader of your clan"
clan.has.been.disbanded: "Clan {0} has been disbanded"
clan.disband.vote.has.been.requested.from.all.leaders: "Clan disband vote has been requested from all leaders"
friendy.fire.is.now.managed.by.your.clan: "Friendy-fire is now managed by your clan"
personal.friendly.fire.is.set.to.allowed: "Personal friendly-fire is set to allowed"
global.friendy.fire.is.now.managed.by.each.clan: "Global friendy-fire is now managed by each clan"
global.friendy.fire.is.already.being.managed.by.each.clan: "Global friendy-fire is already being managed by each clan"
global.friendly.fire.is.set.to.allowed: "Global friendly-fire is set to allowed"
global.friendly.fire.is.already.being.allowed: "Global friendly-fire is already being allowed"
no.player.matched: "No player matched"
the.player.doesn.t.not.have.the.permissions.to.join.clans: "The player doesn''t not have the permissions to join clans"
you.cannot.invite.yourself: "You cannot invite yourself"
this.player.is.banned.from.using.clan.commands: "This player is banned from using clan commands"
the.player.is.already.member.of.another.clan: "The player is already member of another clan"
has.been.asked.to.join: "{0} has been asked to join {1}"
you.cannot.kick.yourself: "You cannot kick yourself"
the.player.is.not.a.member.of.your.clan: "The player is not a member of your clan"
you.cannot.kick.another.leader: "You cannot kick another leader"
has.been.kicked.by: "{0} has been kicked by {1}"
no.clans.have.been.created: "No clans have been created"
total.clans: "Total clans:"
legend: "Legend:"
kill.type.civilian: "Kill Type: {0}Civilian"
no.player.data.found: "No player data found"
kill.type.0: "Kill Type: {0}"
s.player.info: "{0}''s player info"
clan.0: "Clan: {0}"
status.0: "Status: {0}"
rank.0: "Rank: {0}"
kdr.0: "KDR: {0}"
deaths.0: "Deaths: {0}"
join.date.0: "Join Date: {0}"
last.seen.0: "Last Seen: {0}"
past.clans.0: "Past Clans: {0}"
inactive.0: "Inactive: {0}"
kill.totals: "Kill Totals:"
clan.commands: "clan commands"
you.can.only.modify.the.color.and.case.of.the.tag: "You can only modify the color and case of the tag"
tag.changed.to.0: "Tag changed to {0}"
name.0: "Name: {0}"
leaders.0: "Leaders: {0}"
members.online.0: "Members Online: {0}"
allies.0: "Allies: {0}"
rivals.0: "Rivals: {0}"
founded.0: "Founded: {0}"
the.member.to.be.promoted.must.be.online: "The member to be promoted must be online"
the.player.does.not.have.the.permissions.to.lead.a.clan: "The player does not have the permissions to lead a clan"
you.cannot.promote.yourself: "You cannot promote yourself"
all.leaders.must.be.online.to.vote.on.this.promotion: "All leaders must be online to vote on this promotion"
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"
0.has.resigned: "{0} has resigned"
only.trusted.players.can.access.clan.stats: "Only trusted players can access clan stats"
you.cannot.trust.yourself: "You cannot trust yourself"
leaders.are.already.trusted: "Leaders are already trusted"
this.player.is.already.trusted: "This player is already trusted"
has.been.given.trusted.status.by: "{0} has been given trusted status by {1}"
this.player.is.not.banned: "This player is not banned"
player.removed.from.the.banned.list: "Player removed from the banned list"
you.have.been.unbanned.from.clan.commands: "You have been unbanned from clan commands"
you.cannot.untrust.yourself: "You cannot untrust yourself"
leaders.cannot.be.untrusted: "Leaders cannot be untrusted"
this.player.is.already.untrusted: "This player is already untrusted"
has.been.given.untrusted.status.by: "{0} has been given untrusted status by {1}"
the.clan.does.not.exist: "The clan does not exist"
the.clan.is.already.verified: "The clan is already verified"
the.clan.has.been.verified: "The clan has been verified"
clan.0.has.been.verified: "Clan {0} has been verified!"
only.trusted.players.can.access.clan.vitals: "Only trusted players can access clan vitals"
total.clan.players.0: "Total clan players: {0}"
proposing.war: "{0} is proposing to start a war with {1}"
you.can.only.start.war.with.rivals: "You can only start war with rivals"
leaders.have.been.asked.to.accept.the.war.request: "{0} leaders have been asked to accept the war request"
leaders.asked.to.end.rivalry: "{0} leaders have been asked to end the war"
proposing.to.end.the.war: "{0} is proposing to end the war with {1}"
clans.already.at.war: "Your clans are already in war"
clans.not.at.war: "Your clans are not at war"
you.are.at.war: "{0} is now at war with {1}"
denied.war.req: "{0} denied the war request sent by {1}"
you.are.no.longer.at.war: "{0} is no longer at war with {1}"
end.war.denied: "Request to end the war has been denied by {0}"
denied.war.end: "{0} denied {1}''s request to end the war"
0.war: "/{0} war{1} start/end [tag] - Start or end a war"
has.initiated.a.rivalry: "{0} has initiated a rivalry with {1}"
start: "start"
end: "end"
add: "add"
remove: "remove"
allow: "allow"
block: "block"
auto: "auto"
war: "war"
0.s.sword.1.2.b.bow.3.4.a.arrow: "{0}S=Sword{1}, {2}B=Bow{3}, {4}#=Arrows"
weapon.S: "S"
weapon.B: "B"
weapon.A: "A"
materials: "Materials"
armor.h: "H"
armor.c: "C"
armor.l: "L"
armor.B: "B"
diamond: "diamond"
gold: "gold"
wood: "wood"
server.announce: "Server Announce"
clan.announce: "Clan Announce"
leader.announce: "Leader Announce"
hunger: "Hunger"
stone: "Stone"
iron: "Iron"
the.clan.cannot.be.rivaled: "The clan cannot be rivaled"
capeoff: "Cape toggled off"
capeon: "Cape toggled on"
bboff: "BB toggled off"
bbon: "BB toggled on"
tagoff: "Tag toggled off"
tagon: "Tag toggled on"
depositon: "Deposit toggled on"
depositoff: "Deposit toggled off"
withdrawon: "Withdraw toggled on"
withdrawoff: "Withdraw toggled off"
home.base.only.once: "Home base can only be set once"
now.at.homebase: "You are now at {0}''s home base"
hombase.set: "Clan home-base set to: {0}"
hombase.cleared: "Clan home-base cleared"
hombase.mod.set: "{0}''s home-base set to:"
hombase.not.set: "Home-base not set"
rival.limit.reached: "You have reached the rival limit. You cannot rival any more clans."
you.moved.teleport.cancelled: "You moved, teleport cancelled"
waiting.for.teleport.stand.still.for.0.seconds: "Waiting for teleport, stand still for {0} seconds"
no.teleport: "You are not allowed to teleport to that location"
on: "on"
off: "off"
leave: "leave"
join: "join"
mute: "mute"
player.rank.changed: "Rank has been set"
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}"
bb.clan.deposit: "{0} $ were deposited"
player.clan.deposit: "You deposited {0}"
bb.clan.withdraw: "{0} $ were withdrawn"
player.clan.withdraw: "You withdraw {0}"
clan.bank.not.enough.money: "Your clans bank has not enough money"
your.clans.are.not.rivals: "Your clans are not rivals"
you.cannot.rival.your.own.clan: "You cannot rival your own clan"
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"
-417
View File
@@ -1,417 +0,0 @@
create.command: "create"
list.command: "list"
profile.command: "profile"
roster.command: "roster"
lookup.command: "lookup"
leaderboard.command: "leaderboard"
alliances.command: "alliances"
rivalries.command: "rivalries"
vitals.command: "vitals"
coords.command: "coords"
stats.command: "stats"
ally.command: "ally"
rival.command: "rival"
bb.command: "bb"
cape.command: "cape"
modtag.command: "modtag"
toggle.command: "toggle"
invite.command: "invite"
kick.command: "kick"
bank.command: "bank"
trust.command: "trust"
untrust.command: "untrust"
promote.command: "promote"
demote.command: "demote"
clanff.command: "clanff"
ff.command: "ff"
resign.command: "resign"
disband.command: "disband"
verify.command: "verify"
ban.command: "ban"
unban.command: "unban"
reload.command: "reload"
globalff.command: "globalff"
kills.command: "kills"
mostkilled.command: "mostkilled"
war.command: "war"
home.command: "home"
setrank.command: "setrank"
place.command: "place"
resetkdr.command: "resetkdr"
usage.resetkdr: "Használat: /{0} resetkdr [all/player]"
usage.clan.alliances: "Használat: /{0} alliances"
usage.ally: "Használat: /{0} ally add/remove [címke]"
usage.ban.unban: "Használat: /{0} ban/unban [játékos]"
usage.rival: "Használat: /{0} rival add/remove [címke]"
usage.war: "Használat: /{0} war start/end [címke]"
usage.cape.url: "Használat: /{0} cape [url]"
usage.setrank: "Használat: /{0} setrank [játékos] [rang], rangsor több világot is tartalmazhat és tartalmazhat &f színkódokat"
usage.clanff: "Használat: /{0} clanff allow/block"
usage.0.coords: "Használat: /{0} coords"
usage.create.tag: "Használat: /{0} create [címke] [név]"
usage.demote.leader: "Használat: /{0} demote [vezető]"
usage.0.disband: "Használat: /{0} disband"
usage.0.ff.allow.auto: "Használat: /{0} ff allow/auto"
usage.0.globalff.allow.auto: "Használat: /{0} globalff allow/auto"
usage.0.permissions.player: "Használat: /{0} permissions [klán] add/remove [jog]"
usage.0.invite.player: "Használat: /{0} invite [játékos]"
usage.kick.player: "Használat: /{0} kick [játékos]"
usage.bank: "Használat: /{0} bank withdraw/deposit/status [mennyiség]"
usage.0.modtag.tag: "Használat: /{0} modtag [címke]"
usage.list: "Használat: /{0} list"
usage.lookup.tag: "Használat: /{0} lookup [címke]"
usage.0.profile.tag: "Használat: /{0} profile [címke]"
usage.0.promote.member: "Használat: /{0} promote <tag>"
usage.0.rivalries: "Használat: /{0} rivalries"
usage.0.roster.tag: "Használat: /{0} roster [címke]"
usage.0.stats: "Használat: /{0} stats"
usage.0.trust.player: "Használat: /{0} trust [játékos]"
usage.0.untrust.player: "Használat: /{0} untrust [játékos]"
usage.0.verify.tag: "Használat: /{0} verify [címke]"
usage.0.vitals: "Használat: /{0} vitals"
usage.0.place: "Használat: /{0} place [player] [címke]"
usage.0.leaderboard: "Használat: /{0} leaderboard"
0.reload.1.reload.configuration: "/{0} reload{1} - Konfiguráció újratöltése"
0.globalff.allow.auto.1.set.global.friendly.fire: "/{0} globalff allow/auto {1} - Beállítsa a globális barátságot"
0.place: "/{0} place [player] [címke]{1} - Berak egy játékost egy klánba"
0.ban.unban.player.1.ban.unban.a.player: "/{0} ban/unban [játékos]{1} - Kitiltja/visszaengedi a játékost"
0.hometp.clan.1.tp.home.a.clan: "/{0} home tp [clan]{1} - Elteleportálja minden klán otthonába"
0.disband.tag.1.disband.a.clan: "/{0} disband [címke]{1} - Eltávolít egy klánt"
0.resetkdr.1.resets.kdr: "/{0} resetkdr player/all{1} - Visszaállítsa az összes játékos KDR-jét vagy csak egy"
0.resetkdr.1.resets.your.kdr: "/{0} resetkdr{1} - Visszaállítja KDR-t"
0.verify.tag.1.verify.an.unverified.clan: "/{0} verify [címke]{1} - Ellenőrzi az ellenőrzött klánt"
0.verify.1.purchase.verification.of.your.clan: "/{0} verify{1} - A klán megvásárlásának ellenőrzése"
0.list.1.lists.all.clans: "/{0} list{1} - Az összes klán felsorolása"
0.profile.1.view.your.clan.s.profile: "/{0} profile{1} - Megtekinti a klán profilját"
0.profile.tag.1.view.a.clan.s.profile: "/{0} profile [címke]{1} - Klán profiljának megtekintése"
0.lookup.1.lookup.your.info: "/{0} lookup{1} - Megkeresi az adatait"
0.lookup.player.1.lookup.a.player.s.info: "/{0} lookup [játékos]{1} - Megkeresi a játékos információit"
0.leaderboard.1.view.leaderboard: "/{0} leaderboard{1} - Megnézi a ranglistát"
0.alliances.1.view.all.clan.alliances: "/{0} alliances{1} - Megtekinti az összes klán szövetséget"
0.rivalries.1.view.all.clan.rivalries: "/{0} rivalries{1} - Megtekinti az összes klánversenyt"
0.roster.1.view.your.clan.s.member.list: "/{0} roster{1} - Megtekinti a klán taglistáját"
0.roster.tag.1.view.a.clan.s.member.list: "/{0} roster [címke]{1} - Egy osztály taglista megtekintéset"
0.vitals.1.view.your.clan.member.s.vitals: "/{0} vitals{1} - Megtekinti a klántagod vitálását"
0.coords.1.view.your.clan.member.s.coordinates: "/{0} coords{1} - Megtekinti a klántagod koordinátáit"
0.stats.1.view.your.clan.member.s.stats: "/{0} stats{1} - Megtekinti a klántag statisztikáit"
0.ally.add.remove.tag.1.add.remove.an.ally.clan: "/{0} ally add/remove [címke]{1} - Egy szövetséges klán hozzáadása/eltávolítása"
0.rival.add.remove.tag.1.add.remove.a.rival.clan: "/{0} rival add/remove [címke]{1} - Egy rivális klán hozzáadása/eltávolítása"
0.bb.1.display.bulletin.board: "/{0} bb{1} - Hirdetőtábla megjelenítése"
0.bb.msg.1.add.a.message.to.the.bulletin.board: "/{0} bb [msg]{1} - Üzenet hozzáadása a hirdetőtáblához"
0.modtag.tag.1.modify.the.clan.s.tag: "/{0} modtag [címke]{1} - Módosítja a klán címkéjét"
0.cape.url.1.change.your.clan.s.cape: "/{0} cape [url]{1} - Megváltoztatja a klánodat"
0.invite.player.1.invite.a.player: "/{0} invite [játékos]{1} - Meghív egy játékost"
0.kick.player.1.kick.a.player.from.the.clan: "/{0} kick [játékos]{1} - Kirúg egy játékost a klánból"
0.trust.untrust.player.1.set.trust.level1: "/{0} trust [játékos]{1} - Beállítja a tagot megbízhatónak"
0.trust.untrust.player.1.set.trust.level2: "/{0} untrust [játékos]{1} - Beállítja a tagot megbízhatatlannak"
0.promote.member.1.promote.a.member.to.leader: "/{0} promote [tag]{1} - Támogat egy tagot vezetőnek"
0.demote.leader.1.demote.a.leader.to.member: "/{0} demote [vezető]{1} - Vezet egy vezetőt a tagnak"
0.clanff.allow.block.1.toggle.clan.s.friendly.fire: "/{0} clanff allow/block{1} - Kapcsolja a klán baráti tüzet"
0.ff.allow.auto.1.toggle.personal.friendly.fire: "/{0} ff allow/auto{1} - Kapcsolja a személyes barátságos tüzet"
0.toggle.command: "/{0} toggle [{2}]{1} - A személyes beállítások módosítása"
0.resign.1.resign.from.the.clan: "/{0} resign{1} - Tiltakozik a klánról"
0.disband.1.disband.your.clan: "/{0} disband{1} - Lehúzza a klánját"
0.trust.setrank: "/{0} setrank [játékos] [rank]{1} - Ad egy rangot a játékosnak"
0.create.tag.name.1.purchase.a.new.clan: "/{0} create [címke] [name]{1} - Vásárol egy új klánt"
0.create.tag.name.1.create.a.new.clan: "/{0} create [címke] [name]{1} - Létrehoz egy új klánt"
0.kills: "/{0} kills{1} - Megnézi az ölésedet"
0.killsplayer: "/{0} kills [játékos]{1} - Megtekinti a játékos ölési számát"
0.mostkilled: "/{0} mostkilled{1} - Megtekinti a kiszolgálón leggyakoribb ölési számokat"
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"
home-regroup-menu: "/{0} home regroup [me]{1} - Áthelyezi az összes tagot a háziasított klán vagy magad számára"
example.clan.modtag.4kfo.4l: "Példa: /clan modtag &4K&fo&4L"
example.clan.create: "Példa: /clan create &4Kol labirintus lovagjai"
clan: "Klán"
allies: "Szövetségesek"
alliances: "szövetségek"
coords: "koordináták"
name: "Név"
distance: "Távolság"
coords.upper: "Koordináták"
world: "Világ"
kdr: "KDR"
members: "Tagok"
clans.lower: "klánok"
rival: "Vetélytárs"
civilian: "Polgári"
neutral: "Semleges"
free.agent: "Szabadúszó"
days: "nap"
rivals: "Versenytárs"
rivalries: "versengés"
online: "Elérhető"
player: "Játékos"
seen: "Látott"
leader: "vezető"
roster: "névsor"
trusted: "megbízható"
untrusted: "megbízhatatlan"
deaths: "Halálok"
weights: "Súlyok"
stats: "stats"
health: "Élet"
armor: "Páncél"
weapons: "Fegyverek"
food: "Étel"
vitals: "nemes szervek"
verified: "ellenőrzött"
unverified: "Nem ellenőrzött"
profile: "profil"
civilian.abbreviation: "Polgár"
rank: "Rang"
leaders: "Vezetők"
none: "Semmi"
today: "Ma"
kills: "Ölések"
mostkilled: "Legtöbbször megölt"
killcount: "Ölés számítás"
attacker: "Támadó"
victim: "Áldozat"
kill.death.ratio: "Ölés/halál arány"
nokillsfound: "Nincs ölések találva"
version.loaded: "[{0}] Verzió {1} betöltve"
promoted.to.leader: "{0} vezető szerepet kapott"
denied.demotion: "{0} tagadta a lecsökkentését {1}. A konszenzus sikertelen volt."
membership.invitation: "{0} tagadta a tagsági meghívást"
joined.the.clan: "{0} csatlakozott a klánhoz"
signed.off.request.cancelled: "{0} aláírták. {1} kérés törölve."
clan.deletion: "{0} tagadta a klán törlését. A konszenzus sikertelen volt."
has.been.disbanded: "A(z) {0} klán feloszlott"
denied.the.promotion: "{0} tagadta a {1} promócióját. A konszenzus sikertelen volt."
demoted.back.to.member: "{0} visszatért a taghoz"
peace.agreement.denied: "A(z) {0} kötött békemegállapodást megtagadták"
denied.to.make.peace: "{0} tagadta a békét a(z) {1}"
broken.the.rivalry: "{0} megszüntette a versenyt {1}"
broken.the.rivalry.with: "{0} megszüntette a versenyt {1}"
the.alliance.was.denied: "A(z) {0} szövetség tagadta"
denied.an.alliance: "{0} tagadta a szövetséget {1}"
accepted.an.alliance: "{0} szövetséget kötött a(z) {1}"
created.an.alliance: "{0} szövetséget kötött a(z) {1}"
has.joined: "{0} csatlakozott {1}"
proposing.to.end.the.rivalry: "{0} azt javasolja, hogy vessen véget a rivalizálás {1}"
proposing.an.alliance: "{0} szövetséget javasol {1}"
inviting.you.to.join: "{0} meghívott téged, hogy csatlakozz {1}"
asking.for.the.deletion: "{0} a klán törlését kéri"
asking.for.the.promotion: "{0} kéri a promóció {1}"
asking.for.the.demotion: "{0} kéri a promóció {1}"
accept.or.deny: "{0} vagy {1}"
not.sufficient.money: "Nincs elegendő pénz a fiókodban"
account.has.been.debited: "A fiókod terhelésre került {0}"
mysql.connection.successful: "MySQL kapcsolat sikeres"
mysql.connection.failed: "MySQL kapcsolat sikertelen"
sqlite.connection.successful: "SQLite kapcsolat sikeres"
sqlite.connection.failed: " SQLite kapcsolat sikertelen"
purging.player.data: "tisztító játékos adatai: {0}"
purging.clan: "Pusztító klán: {0}"
clan.players: "Klán játékosok: {0}"
clans: "Klánok: {0}"
banned: "Kitiltottad a klánparancsok használatát"
nothing.more.to.see: "Semmi többet látni"
nothing.to.deny: "Semmi tagadni"
no.leader.permissions: "Nincs vezető engedélye"
you.have.already.voted: "Már szavaztál"
has.voted.to.deny: "{0} tagadta a szavazást"
nothing.to.accept: "Semmi elfogadni"
view.next.page: "Típus /{0} a következő oldal megtekintéséhez."
voted.to.accept: "{0} elfogadták"
bulletin.board.header: "{0}* {1}{2} hirdetőtábla"
has.been.disbanded.rivalry.ended: "{0} feloszlott. A rivalizálás véget ért."
has.been.disbanded.alliance.ended: "{0} feloszlott. A Szövetség véget ért."
clan.disbanded: "A klán megszűnt"
1.color.day: "1 {0}nap"
many.color.days: "{0}{1} nap"
does.not.match: "Nem egyezik a klán parancsával"
simpleclans.command.failure: "A SimpleClans parancs sikertelen: {0}"
insufficient.permissions: "Nincs elegendő engedély"
clan.is.not.verified: "A klán nem ellenőrzött"
not.a.member.of.any.clan: "Nem vagy tagja semmilyen klánnak"
minimum.to.make.alliance: "A klánnak legalább {0} játékosnak kell lennie ahhoz, hogy szövetségeket kössön"
no.clan.matched: "Nincsenek klánok"
cannot.ally.with.an.unverified.clan: "Nem tudsz szövetséget kötni egy be nem bizonyított klánnal"
your.clans.are.not.allies: "A klánod nem szövetségesek"
has.broken.the.alliance: "{0} megszakította a szövetséget {1}"
at.least.one.leader.accept.the.alliance: "A szövetség legalább egy vezetőjének online kell lennie ahhoz, hogy elfogadja a szövetséget"
leaders.have.been.asked.for.an.alliance: "A(z) {0} vezetők szövetségre szólítottak fel"
your.clans.are.already.allies: "A klánod már szövetségesek"
your.clan.cannot.create.rivals: "A klán nem hozhat létre riválisokat"
min.players.rivalries: "A klánnak legalább {0} játékosnak kell lennie a rivalizálás érdekében"
this.player.is.already.banned: "Ez a játékos már tiltott"
player.added.to.banned.list: "A játékos hozzáadva a tiltott listához"
you.banned: "Kitiltottad a klánparancsokból"
cape.must.be.png: "A cape url-nek egy png képre kell mutatnia"
url.error: "Az URL hibaüzenetet küld. Ellenőrizze, hogy működik-e."
changed.the.clan.cape: "{0} megváltoztatta a klán kupáját"
clan.wide.friendly.fire.blocked: "A klán egész barátságos tűz zárt"
clan.wide.friendly.fire.is.allowed: "A Klánbarát barátságos tűz megengedett"
only.trusted.players.can.access.clan.coords: "Csak a megbízható játékosok férhetnek hozzá a klánokhoz"
you.are.the.only.member.online: "Te vagy az egyetlen tagja online"
your.clan.tag.cannot.be.longer.than.characters: "A klán tagja legfeljebb {0} karakter lehet"
your.clan.tag.must.be.longer.than.characters: "A klán tagjának hosszabbnak kell lennie, mint {0} karakter"
your.tag.cannot.contain.the.following.colors: "A címke nem tartalmazhatja a következő színeket: {0}"
your.clan.name.cannot.be.longer.than.characters: "A klán neve legfeljebb {0} karakter lehet"
your.tag.cannot.contain.color.codes: "A címke nem tartalmazhat színkódokat"
your.clan.name.must.be.longer.than.characters: "A klán neveinek {0} karakter hosszúnak kell lenniük"
your.clan.tag.can.only.contain.letters.numbers.and.color.codes: "A klán tagja csak betűket, számokat és színkódokat tartalmazhat"
your.clan.name.cannot.contain.color.codes: "A klán neve nem tartalmazhat színkódokat"
that.tag.name.is.disallowed: "A címke neve elutasítva"
you.must.first.resign: "Először lemondania a {0}"
clan.with.this.tag.already.exists: "Ezzel a címkével már létezik egy klán"
get.your.clan.verified.to.access.advanced.features: "Szerezd meg a klánt, hogy ellenőrizze a speciális funkciók elérését"
clan.created: "A(z) {0} klán létrehozva"
leaders.must.be.online.to.vote.on.demotion: "A lefokozástól eltérő összes vezetőnek online kell lennie ahhoz, hogy szavazzon a lefokozásról"
demotion.vote.has.been.requested.from.all.leaders: "Demotion szavazást kértek minden vezetőtől"
player.is.not.a.leader.of.your.clan: "A játékos nem a klán egyik vezetője"
clan.has.been.disbanded: "A(z) {0} klán feloszlott"
clan.disband.vote.has.been.requested.from.all.leaders: "A klán feloszlatásáról szavazást kértek minden vezetőtől"
friendy.fire.is.now.managed.by.your.clan: "A barátságos tüzet most kezeli a klán"
personal.friendly.fire.is.set.to.allowed: "A személyes barátságos tűz megengedett"
global.friendy.fire.is.now.managed.by.each.clan: "A globális barátságos tüzet minden egyes klán kezeli"
global.friendy.fire.is.already.being.managed.by.each.clan: "A globális barátságos tüzeket már kezelik minden egyes klán"
global.friendly.fire.is.set.to.allowed: "A globális barátságos tűz megengedett"
global.friendly.fire.is.already.being.allowed: "A globális barátságos tűz már engedélyezett"
no.player.matched: "Nincs olyan játékos, aki megfelelt"
the.player.doesn.t.not.have.the.permissions.to.join.clans: "A játékosnak nincs joga a klánokhoz való csatlakozáshoz"
you.cannot.invite.yourself: "Nem hívhatod meg magad"
this.player.is.banned.from.using.clan.commands: "Ez a játékos tiltja a klánparancsok használatát"
the.player.is.already.member.of.another.clan: "A játékos már tagja egy másik klánnak"
has.been.asked.to.join: "{0} felkérést kapott, hogy csatlakozzon {1}"
you.cannot.kick.yourself: "Nem tudod magadat kirúgni"
the.player.is.not.a.member.of.your.clan: "A játékos nem tagja a klánnak"
you.cannot.kick.another.leader: "Nem tehetsz meg egy másik vezetőt"
has.been.kicked.by: "{0} kirúgva {1} által"
no.clans.have.been.created: "Nem hoztak létre klánokat"
total.clans: "Összes klán:"
legend: "Legenda:"
kill.type.civilian: "Ölés típus: {0} Civil"
no.player.data.found: "Nincsenek játékosadatok"
kill.type.0: "Ölés típus: {0}"
s.player.info: "{0} játékos adatai"
clan.0: "Klán: {0}"
status.0: "Állapot: {0}"
rank.0: "Rang: {0}"
kdr.0: "KDR: {0}"
deaths.0: "Halálok: {0}"
join.date.0: "Csatlakozás dátuma: {0}"
last.seen.0: "Utoljára látva: {0}"
past.clans.0: "Múlt klánok: {0}"
inactive.0: "Elérhetetlen(ek): {0}"
kill.totals: "Összes ölés:"
clan.commands: "klán parancsok"
you.can.only.modify.the.color.and.case.of.the.tag: "Csak a címke színét és esetét módosíthatod"
tag.changed.to.0: "A címke megváltoztatva {0}"
name.0: "Név: {0}"
leaders.0: "Vezetők: {0}"
members.online.0: "Tagok online: {0}"
allies.0: "Szövetségesek: {0}"
rivals.0: "Vetélytárs(ak): {0}"
founded.0: "Alapított: {0}"
the.member.to.be.promoted.must.be.online: "A támogatni kívánt tagnak online-nak kell lennie"
the.player.does.not.have.the.permissions.to.lead.a.clan: "A játékosnak nincs joga a klán vezetésére"
you.cannot.promote.yourself: "Nem reklámozhatod magad"
all.leaders.must.be.online.to.vote.on.this.promotion: "Minden vezetőnek online kell szavaznia erről a promócióról"
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"
only.trusted.players.can.access.clan.stats: "Csak a megbízható játékosok férhetnek hozzá a klánstatisztikákhoz"
you.cannot.trust.yourself: "Nem bízhatsz magadban"
leaders.are.already.trusted: "A vezetők már megbízhatóak"
this.player.is.already.trusted: "Ez a játékos már megbízható"
has.been.given.trusted.status.by: "{0} megbízható állapotot kapott {1} által"
this.player.is.not.banned: "Ez a játékos nem tiltott"
player.removed.from.the.banned.list: "A játékos eltávolítva a tiltott listáról"
you.have.been.unbanned.from.clan.commands: "Vissza engedted a klánparancsoktól"
you.cannot.untrust.yourself: "Nem bízhatsz magadban"
leaders.cannot.be.untrusted: "A vezetők nem lehetnek megbízhatatlanok"
this.player.is.already.untrusted: "Ez a játékos már nem megbízható"
has.been.given.untrusted.status.by: "{0} megbízható állapotot kapott {1} által"
the.clan.does.not.exist: "A klán nem létezik"
the.clan.is.already.verified: "A klán már ellenőrzött"
the.clan.has.been.verified: "A klán igazolt"
clan.0.has.been.verified: "A(z) {0} klán ellenőrizve!"
only.trusted.players.can.access.clan.vitals: "Csak a megbízható játékosok férhetnek hozzá a klánéletekhez"
total.clan.players.0: "Összes klán játékos: {0}"
proposing.war: "{0} azt javasolja, hogy indítsanak háborút {1} ellen"
you.can.only.start.war.with.rivals: "Csak háborút kezdhet a riválisokkal"
leaders.have.been.asked.to.accept.the.war.request: "A(z) {0} vezetőket felkérték, hogy fogadják el a háborús kérést"
leaders.asked.to.end.rivalry: "A(z) {0} vezetőket felkérték, hogy vessenek véget a háborúnak"
proposing.to.end.the.war: "{0} a háború befejezését javasolja {1}"
clans.already.at.war: "A klánod már háborúban van"
clans.not.at.war: "A klánod nincsenek háborúban"
you.are.at.war: "{0} most háborúban van {1} ellen"
denied.war.req: "{0} megtagadta {1} által küldött háborús kérést"
you.are.no.longer.at.war: "{0} már nincs háborúban {1} ellen"
end.war.denied: "A háború befejezésére irányuló kérelmet a(z) {0}"
denied.war.end: "{0} tagadta {1} kérését a háború befejezésére"
0.war: "/{0} war{1} start/end [tag] - Háború indítása vagy befejezése"
has.initiated.a.rivalry: "{0} rivalizációt indított {1} ellen"
start: "start"
end: "end"
add: "add"
remove: "remove"
allow: "allow"
block: "block"
auto: "auto"
war: "war"
0.s.sword.1.2.b.bow.3.4.a.arrow: "{0}S=Kard{1}, {2}B=Íj{3}, {4}#=Nyilak"
weapon.S: "S"
weapon.B: "B"
weapon.A: "A"
materials: "Anyagok"
armor.h: "H"
armor.c: "C"
armor.l: "L"
armor.B: "B"
diamond: "diamond"
gold: "gold"
wood: "wood"
server.announce: "Szerver bejelentés"
clan.announce: "Klán bejelentés"
leader.announce: "Vezetői bejelentés"
hunger: "Éhség"
stone: "Kő"
iron: "Vas"
the.clan.cannot.be.rivaled: "A klán nem lehet versengeni"
capeoff: "A köpeny kikapcsolva"
capeon: "A köpeny bekapcsolva"
bboff: "BB kikapcsolva"
bbon: "BB bekapcsolva"
tagoff: "Tag kikapcsolva"
tagon: "Címke bekapcsolva"
depositon: "Letét bekapcsolva"
depositoff: "Letét kikapcsolva"
withdrawon: "Visszavonulás bekapcsolva"
withdrawoff: "Visszavonulás kikapcsolva"
home.base.only.once: "A bázis csak egyszer állítható be"
now.at.homebase: "Most a(z) {0} székhelyen tartózkodsz"
hombase.set: "Klán bázis beállítva: {0}"
hombase.cleared: "Klán bázis törölve"
hombase.mod.set: "{0} bázisa beállítva:"
hombase.not.set: "Bázis nincs beállítva"
rival.limit.reached: "Elérted a rivális limitet. Nem tehetsz többé klánokkal."
you.moved.teleport.cancelled: "Elmozdultál, a teleportálás megszakítva"
waiting.for.teleport.stand.still.for.0.seconds: "Várakozás a teleportálásra, állj meg {0} másodpercig"
no.teleport: "Tilos teleportálni erre a helyre"
on: "be"
off: "ki"
leave: "elhagy"
join: "csatlakoz"
mute: "mute"
player.rank.changed: "A rang beállítva"
your.clans.are.already.rivals: "A klánod már riválisok"
player.got.money: "Megkaptad {0} a(z) {1} megöléséért KDR-ed alapján: {2}"
cleared.bb: "Törölte a hirdetőtáblát"
clan.balance: "Klán egyenleg: {0}"
bb.clan.deposit: "{0} $ letétbe helyezték"
player.clan.deposit: "Letétbe helyezted {0}"
bb.clan.withdraw: "{0} $ visszavonták"
player.clan.withdraw: "Visszavonsz {0}"
clan.bank.not.enough.money: "A klán bankjaidnak nincs elég pénzük"
your.clans.are.not.rivals: "A klánok nem riválisok"
you.cannot.rival.your.own.clan: "Nem tudsz versengeni a saját klánoddal"
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"
-403
View File
@@ -1,403 +0,0 @@
create.command: "创建"
list.command: "列表"
profile.command: "信息"
roster.command: "名单"
lookup.command: "详情"
leaderboard.command: "排行榜"
alliances.command: "联盟"
rivalries.command: "敌对"
vitals.command: "生命"
coords.command: "坐标"
stats.command: "统计"
ally.command: "联盟"
rival.command: "敌对"
bb.command: "公告板"
cape.command: "披风"
modtag.command: "更改标签"
toggle.command: "切换"
invite.command: "邀请"
kick.command: "移除"
bank.command: "银行"
trust.command: "信任"
untrust.command: "取消信任"
promote.command: "提升"
demote.command: "降级"
clanff.command: "帮派友军伤害"
ff.command: "友军伤害"
resign.command: "离开"
disband.command: "解散"
verify.command: "验证"
ban.command: "封禁"
unban.command: "解封"
reload.command: "重载"
globalff.command: "全局友军伤害"
kills.command: "击杀"
mostkilled.command: "死亡排名"
war.command: "战争"
home.command: "基地"
setrank.command: "设置称号"
place.command: "移动"
usage.clan.alliances: "使用: /{0} alliances"
usage.ally: "使用: /{0} ally add/remove [标签]"
usage.ban.unban: "使用: /{0} ban/unban [玩家]"
usage.rival: "使用: /{0} rival add/remove [标签]"
usage.war: "使用: /{0} war start/end [标签]"
usage.cape.url: "使用: /{0} cape [链接]"
usage.setrank: "使用: /{0} setrank [玩家] [称号], 称号可以是多个词,可含有颜色代码"
usage.clanff: "使用: /{0} clanff allow/block"
usage.0.coords: "使用: /{0} coords"
usage.create.tag: "使用: /{0} create [标签] [名称]"
usage.demote.leader: "使用: /{0} demote [老大]"
usage.0.disband: "使用: /{0} disband"
usage.0.ff.allow.auto: "使用: /{0} ff allow/auto"
usage.0.globalff.allow.auto: "使用: /{0} globalff allow/auto"
usage.0.permissions.player: "使用: /{0} permissions [帮派] add/remove [权限]"
usage.0.invite.player: "使用: /{0} invite [玩家]"
usage.kick.player: "使用: /{0} kick [玩家]"
usage.bank: "使用: /{0} bank withdraw/deposit/status [数量]"
usage.0.modtag.tag: "使用: /{0} modtag [标签]"
usage.list: "使用: /{0} list"
usage.lookup.tag: "使用: /{0} lookup [标签]"
usage.0.profile.tag: "使用: /{0} profile [标签]"
usage.0.promote.member: "使用: /{0} promote <成员>"
usage.0.rivalries: "使用: /{0} rivalries"
usage.0.roster.tag: "使用: /{0} roster [标签]"
usage.0.stats: "使用: /{0} stats"
usage.0.trust.player: "使用: /{0} trust [玩家]"
usage.0.untrust.player: "使用: /{0} untrust [玩家]"
usage.0.verify.tag: "使用: /{0} verify [标签]"
usage.0.vitals: "使用: /{0} vitals"
usage.0.place: "使用: /{0} place [玩家] [标签]"
usage.0.leaderboard: "使用: /{0} leaderboard"
0.reload.1.reload.configuration: "/{0} reload{1} - 重载配置"
0.globalff.allow.auto.1.set.global.friendly.fire: "/{0} globalff allow/auto {1} - 设置全局友军伤害"
0.place: "/{0} place [玩家] [标签]{1} - 将玩家加入帮派"
0.ban.unban.player.1.ban.unban.a.player: "/{0} ban/unban [玩家]{1} - 封禁/解封一个玩家"
0.hometp.clan.1.tp.home.a.clan: "/{0} home tp [帮派]{1} - 传送至帮派基地"
0.disband.tag.1.disband.a.clan: "/{0} disband [标签]{1} - 解禁帮派"
0.verify.tag.1.verify.an.unverified.clan: "/{0} verify [标签]{1} - 验证一个帮派"
0.verify.1.purchase.verification.of.your.clan: "/{0} verify{1} - 付费验证你的帮派"
0.list.1.lists.all.clans: "/{0} list{1} - 列出所有帮派"
0.profile.1.view.your.clan.s.profile: "/{0} profile{1} - 查看你的帮派的信息"
0.profile.tag.1.view.a.clan.s.profile: "/{0} profile [标签]{1} - 查看帮派信息"
0.lookup.1.lookup.your.info: "/{0} lookup{1} - Lookup your info"
0.lookup.player.1.lookup.a.player.s.info: "/{0} lookup [玩家]{1} - 查看玩家信息"
0.leaderboard.1.view.leaderboard: "/{0} leaderboard{1} - 查看排行榜"
0.alliances.1.view.all.clan.alliances: "/{0} alliances{1} - 查看帮派联盟"
0.rivalries.1.view.all.clan.rivalries: "/{0} rivalries{1} - 查看帮派敌对"
0.roster.1.view.your.clan.s.member.list: "/{0} roster{1} - 查看你的帮派的成员列表"
0.roster.tag.1.view.a.clan.s.member.list: "/{0} roster [标签]{1} - 查看帮派的成员列表"
0.vitals.1.view.your.clan.member.s.vitals: "/{0} vitals{1} - 查看你的帮派玩家的生命"
0.coords.1.view.your.clan.member.s.coordinates: "/{0} coords{1} - 查看你的帮派玩家的坐标"
0.stats.1.view.your.clan.member.s.stats: "/{0} stats{1} - 查看你的帮派玩家的统计"
0.ally.add.remove.tag.1.add.remove.an.ally.clan: "/{0} ally add/remove [标签]{1} - 添加/移除一个联盟帮派"
0.rival.add.remove.tag.1.add.remove.a.rival.clan: "/{0} rival add/remove [标签]{1} - 添加/移除一个敌对帮派"
0.bb.1.display.bulletin.board: "/{0} bb{1} - 显示公告板"
0.bb.msg.1.add.a.message.to.the.bulletin.board: "/{0} bb [msg]{1} - 添加信息到公告板"
0.modtag.tag.1.modify.the.clan.s.tag: "/{0} modtag [标签]{1} - 更改帮派标签"
0.cape.url.1.change.your.clan.s.cape: "/{0} cape [url]{1} - 更改帮派披风"
0.invite.player.1.invite.a.player: "/{0} invite [玩家]{1} - 邀请玩家"
0.kick.player.1.kick.a.player.from.the.clan: "/{0} kick [玩家]{1} - 将玩家踢出帮派"
0.trust.untrust.player.1.set.trust.level1: "/{0} trust [玩家]{1} - 设置成员为信任"
0.trust.untrust.player.1.set.trust.level2: "/{0} untrust [玩家]{1} - 取消成员信任"
0.promote.member.1.promote.a.member.to.leader: "/{0} promote [member]{1} - 提升一个成员为老大"
0.demote.leader.1.demote.a.leader.to.member: "/{0} demote [leader]{1} - 降级一个老大为成员"
0.clanff.allow.block.1.toggle.clan.s.friendly.fire: "/{0} clanff allow/block{1} - 切换帮派的友军伤害"
0.ff.allow.auto.1.toggle.personal.friendly.fire: "/{0} ff allow/auto{1} - 切换个人的友军伤害"
0.toggle.command: "/{0} toggle [{2}]{1} - 切换个人设置"
0.resign.1.resign.from.the.clan: "/{0} resign{1} - 离开目前的帮派"
0.disband.1.disband.your.clan: "/{0} disband{1} - 解散你的帮派"
0.trust.setrank: "/{0} setrank [玩家] [rank]{1} - 给成员称号"
0.create.tag.name.1.purchase.a.new.clan: "/{0} create [标签] [name]{1} - 购买新的帮派"
0.create.tag.name.1.create.a.new.clan: "/{0} create [标签] [name]{1} - 创建新的帮派"
0.kills: "/{0} kills{1} - 查看你的击杀量"
0.killsplayer: "/{0} kills [玩家]{1} - 查看玩家的击杀量"
0.mostkilled: "/{0} mostkilled{1} - 查看全服死亡排名"
home-menu: "/{0} home{1} - 传送至帮派基地"
home-set-menu: "/{0} home set{1} - 设置帮派基地"
home-clear-menu: "/{0} home clear{1} - 清除帮派基地"
example.clan.modtag.4kfo.4l: "示例: /clan modtag &4帅"
example.clan.create: "示例: /clan create &4大帅比"
clan: "帮派"
allies: "联盟"
alliances: "联盟"
coords: "坐标"
name: "名称"
distance: "距离"
coords.upper: "坐标"
world: "世界"
kdr: "KD"
members: "成员"
clans.lower: "帮派"
rival: "敌对"
civilian: "平民"
neutral: "中立"
free.agent: "Free Agent"
days: "天"
rivals: "敌对"
rivalries: "敌对"
online: "在线"
player: "玩家"
seen: "上线"
leader: "老大"
roster: "名单"
trusted: "信任"
untrusted: "失信"
deaths: "死亡"
weights: "权重"
stats: "统计"
health: "生命"
armor: "护甲"
weapons: "武器"
food: "食物"
vitals: "生命"
verified: "已验证"
unverified: "未验证"
profile: "信息"
civilian.abbreviation: "平民"
rank: "称号"
leaders: "老大"
none: "无"
today: "今天"
kills: "击杀"
mostkilled: "最多死亡"
killcount: "击杀数"
attacker: "攻击者"
victim: "死者"
kill.death.ratio: "KD 比值"
nokillsfound: "无击杀"
version.loaded: "[{0}] 版本 {1} 已加载"
promoted.to.leader: "{0} 被提升为老大"
denied.demotion: "{0} 拒绝了对 {1} 的降级. 未达成共识."
membership.invitation: "{0} 拒绝了邀请"
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} 和好"
broken.the.rivalry: "{0} 停止与 {1} 的敌对"
broken.the.rivalry.with: "{0} 停止了与 {1} 的敌对"
the.alliance.was.denied: "与 {0} 的联盟被拒绝"
denied.an.alliance: "{0} 拒绝了 {1} 的联盟"
accepted.an.alliance: "{0} 接受了 {1} 的联盟"
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}"
asking.for.the.deletion: "{0} 正在请求删除帮派"
asking.for.the.promotion: "{0} 正在请求 {1} 的提升"
asking.for.the.demotion: "{0} 正在请求 {1} 的降级"
accept.or.deny: "{0} 或 {1}"
not.sufficient.money: "您的账户没有足够的资金"
account.has.been.debited: "你的账户已经被扣除了 {0}"
mysql.connection.successful: "MySQL 连接成功"
mysql.connection.failed: "MySQL 连接成功"
sqlite.connection.successful: "SQLite 连接成功"
sqlite.connection.failed: " SQLite 连接失败"
purging.player.data: "正在清除玩家数据: {0}"
purging.clan: "正在清除帮派: {0}"
clan.players: "帮派玩家: {0}"
clans: "帮派: {0}"
banned: "你被禁止使用帮派命令"
nothing.more.to.see: "没有更多"
nothing.to.deny: "没有拒绝的事务"
no.leader.permissions: "你没有老大权限"
you.have.already.voted: "你已经投票了"
has.voted.to.deny: "{0} 投了拒绝票"
nothing.to.accept: "没有可接受的事务"
view.next.page: "输入 /{0} 查看下一页."
voted.to.accept: "{0} 投了接受票"
bulletin.board.header: "{0}* {1}{2} 公告板"
has.been.disbanded.rivalry.ended: "{0} 解散了. 敌对终结了."
has.been.disbanded.alliance.ended: "{0} 解散了. 联盟终结了."
clan.disbanded: "帮派已解散"
1.color.day: "1 {0}天"
many.color.days: "{0}{1} 天"
does.not.match: "没有匹配的帮派命令"
simpleclans.command.failure: "SimpleClans 命令失败: {0}"
insufficient.permissions: "权限不足"
clan.is.not.verified: "帮派未验证"
not.a.member.of.any.clan: "你不是任何帮派的成员"
minimum.to.make.alliance: "你的帮派至少要有 {0} 名玩家才能建立联盟"
no.clan.matched: "没有匹配的帮派"
cannot.ally.with.an.unverified.clan: "你不能和未验证的帮派建立联盟"
your.clans.are.not.allies: "你的帮派不是联盟"
has.broken.the.alliance: "{0} 停止了与 {1} 的联盟"
at.least.one.leader.accept.the.alliance: "至少一个老大在线才能接受联盟"
leaders.have.been.asked.for.an.alliance: "{0} 老大请求联盟"
your.clans.are.already.allies: "你的帮派已经联盟"
your.clan.cannot.create.rivals: "你的帮派不能创建敌对帮派"
min.players.rivalries: "你的帮派至少要有 {0} 名玩家才能建立敌对"
this.player.is.already.banned: "这个玩家已经被封禁"
player.added.to.banned.list: "玩家添加至封禁列表"
you.banned: "你被禁止使用帮派命令"
cape.must.be.png: "披风链接必须指向一个 PNG 图片"
url.error: "URL 返回了一个错误. 请检查是否正确."
changed.the.clan.cape: "{0} 更改了帮派披风"
clan.wide.friendly.fire.blocked: "帮派友军伤害已经禁止"
clan.wide.friendly.fire.is.allowed: "帮派友军伤害已经启用"
only.trusted.players.can.access.clan.coords: "只有信任的成员能够前往公会基地"
you.are.the.only.member.online: "你是唯一在线的成员"
your.clan.tag.cannot.be.longer.than.characters: "你的帮派的标签不能超过 {0} 字符"
your.clan.tag.must.be.longer.than.characters: "你的帮派的标签必须超过 {0} 字符"
your.tag.cannot.contain.the.following.colors: "帮派的标签不能含有以下颜色: {0}"
your.clan.name.cannot.be.longer.than.characters: "你的帮派的名称不能超过 {0} 字符"
your.clan.name.must.be.longer.than.characters: "你的帮派的名称必须超过 {0} 字符"
your.clan.tag.can.only.contain.letters.numbers.and.color.codes: "帮派的标签只能含有字母、数字和颜色代码
your.clan.name.cannot.contain.color.codes: "帮派的名称不能含有颜色"
that.tag.name.is.disallowed: "这个标签名不被允许"
you.must.first.resign: "你必须先离开 {0}"
clan.with.this.tag.already.exists: "此标签的帮派已经存在"
get.your.clan.verified.to.access.advanced.features: "验证你的帮派以使用高级功能"
clan.created: "帮派 {0} 创建了"
leaders.must.be.online.to.vote.on.demotion: "除了此降级的老大以外的所有老大必须全部在线才能降级"
demotion.vote.has.been.requested.from.all.leaders: "所有老大都要求降级"
player.is.not.a.leader.of.your.clan: "这个玩家不是你的帮派的老大"
clan.has.been.disbanded: "帮派 {0} 已经解散了"
clan.disband.vote.has.been.requested.from.all.leaders: "所有老大都要求解散帮派"
friendy.fire.is.now.managed.by.your.clan: "友军伤害现在由您的帮派管理"
personal.friendly.fire.is.set.to.allowed: "个人的友军伤害已经开启"
global.friendy.fire.is.now.managed.by.each.clan: "全局的友军伤害现在由各个帮派管理"
global.friendy.fire.is.already.being.managed.by.each.clan: "全局的友军伤害已经由各个帮派管理了"
global.friendly.fire.is.set.to.allowed: "全局的友军伤害已经启用"
global.friendly.fire.is.already.being.allowed: "全局的友军伤害已经启用了"
no.player.matched: "没有匹配的玩家"
the.player.doesn.t.not.have.the.permissions.to.join.clans: "玩家没有加入此帮派的权限"
you.cannot.invite.yourself: "你不能邀请你自己"
this.player.is.banned.from.using.clan.commands: "此玩家被禁止使用此命令"
the.player.is.already.member.of.another.clan: "此玩家已经是其他帮派的成员了"
has.been.asked.to.join: "{0} 已经被请求加入 {1} 了"
you.cannot.kick.yourself: "你不能踢出你自己"
the.player.is.not.a.member.of.your.clan: "此玩家不是你的帮派的成员"
you.cannot.kick.another.leader: "你不能踢出另一个老大"
has.been.kicked.by: "{0} 已经被 {1} 踢出了"
no.clans.have.been.created: "没有帮派被创建"
total.clans: "总帮派:"
legend: "Legend:"
kill.type.civilian: "击杀种类: {0}平民"
no.player.data.found: "没有找到玩家数据"
kill.type.0: "击杀种类: {0}"
s.player.info: "{0} 的玩家信息"
clan.0: "帮派: {0}"
status.0: "状态: {0}"
rank.0: "称号: {0}"
kdr.0: "KD: {0}"
deaths.0: "死亡: {0}"
join.date.0: "加入日期: {0}"
last.seen.0: "最后上线: {0}"
past.clans.0: "曾经的帮派: {0}"
inactive.0: "不活跃: {0}"
kill.totals: "总击杀:"
clan.commands: "帮派命令"
you.can.only.modify.the.color.and.case.of.the.tag: "你只能更改标签的颜色和大小写"
tag.changed.to.0: "标签更改为 {0}"
name.0: "名称: {0}"
leaders.0: "老大: {0}"
members.online.0: "在线成员: {0}"
allies.0: "联盟: {0}"
rivals.0: "敌对: {0}"
founded.0: "成立: {0}"
the.member.to.be.promoted.must.be.online: "提升的成员必须在线"
the.player.does.not.have.the.permissions.to.lead.a.clan: "玩家没有做老大的权限"
you.cannot.promote.yourself: "你不能提升你自己"
all.leaders.must.be.online.to.vote.on.this.promotion: "所有老大必须在线投票此提升"
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} 已经离职"
only.trusted.players.can.access.clan.stats: "只有信任的成员能够查看统计"
you.cannot.trust.yourself: "你不能信任你自己"
leaders.are.already.trusted: "老大已经被信任"
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.cannot.untrust.yourself: "你不能不信任你自己"
leaders.cannot.be.untrusted: "老大不能被取消信任"
this.player.is.already.untrusted: "此玩家已经不被信任了"
has.been.given.untrusted.status.by: "{0} 已经被 {1} 不信任了"
the.clan.does.not.exist: "此帮派不存在"
the.clan.is.already.verified: "此帮派已经验证了"
the.clan.has.been.verified: "此帮派已经验证"
clan.0.has.been.verified: "帮派 {0} 已经被验证!"
only.trusted.players.can.access.clan.vitals: "只有信任的成员能够查看帮派生命"
total.clan.players.0: "总帮派玩家: {0}"
proposing.war: "{0} 正在请求与 {1} 的战争"
you.can.only.start.war.with.rivals: "你只能和敌对帮派展开战争"
leaders.have.been.asked.to.accept.the.war.request: "{0} 老大已经被请求接受战争请求"
leaders.asked.to.end.rivalry: "{0} 老大已经被请求接受停战请求"
proposing.to.end.the.war: "{0} 正在请求与 {1} 停战"
clans.already.at.war: "你的帮派已经处于战争中了"
clans.not.at.war: "你的帮派没有处于战争中"
you.are.at.war: "{0} 现在与 {1} 开战"
denied.war.req: "{0} 拒绝了 {1} 发送的开战请求"
you.are.no.longer.at.war: "{0} 不再与 {1} 战争了"
end.war.denied: "停战请求被 {0} 拒绝了"
denied.war.end: "{0} 拒绝了 {1} 的停战请求"
0.war: "/{0} war{1} start/end [标签] - 开始或停止一场战争"
has.initiated.a.rivalry: "{0} 已经将 {1} 设置为敌对"
start: "开始"
end: "停止"
add: "添加"
remove: "移除"
allow: "允许"
block: "阻止"
auto: "自动"
war: "战争"
0.s.sword.1.2.b.bow.3.4.a.arrow: "{0}S=剑{1}, {2}B=弓{3}, {4}#=箭"
weapon.S: "S"
weapon.B: "B"
weapon.A: "A"
materials: "材料"
armor.h: "H"
armor.c: "C"
armor.l: "L"
armor.B: "B"
diamond: "钻石"
gold: "金"
wood: "木"
server.announce: "服务器公告"
clan.announce: "帮派公告"
leader.announce: "老大公告"
hunger: "饥饿"
stone: "石"
iron: "铁"
the.clan.cannot.be.rivaled: "这个帮派不能敌对"
capeoff: "披风已关闭"
capeon: "披风已开启"
bboff: "公告板已关闭"
bbon: "公告板已开启"
tagoff: "标签已关闭"
tagon: "标签已开启"
home.base.only.once: "基地只能设置一次"
now.at.homebase: "你现在在 {0} 的基地"
hombase.set: "帮派基地设置为: {0}"
hombase.cleared: "帮派基地已清除"
hombase.mod.set: "{0} 的基地设置为:"
hombase.not.set: "基地未设置"
rival.limit.reached: "你达到了敌对数量上限. 你不能再和其他帮派敌对了."
you.moved.teleport.cancelled: "你移动了,传送请求取消"
waiting.for.teleport.stand.still.for.0.seconds: "等待传送于 {0} 秒内开始"
no.teleport: "你不被允许传送至该位置"
on: "开"
off: "关"
leave: "离开"
join: "加入"
mute: "禁言"
player.rank.changed: "称号被设置为"
your.clans.are.already.rivals: "你的帮派已经是敌对了"
player.got.money: "你因为击杀 {1} 而获得了基于 KD: {2} 的 {0}"
cleared.bb: "清空了公告板"
clan.balance: "帮派经济: {0}"
bb.clan.deposit: "{0} $ 已存入"
player.clan.deposit: "你存入了 {0}"
bb.clan.withdraw: "{0} $ 被取出"
player.clan.withdraw: "你取出了 {0}"
clan.bank.not.enough.money: "你的帮派银行资金不足"
your.clans.are.not.rivals: "你的帮派不是敌对"
the.clan.members.reached.limit: "帮派成员达到上限"
-417
View File
@@ -1,417 +0,0 @@
create.command: "create"
list.command: "list"
profile.command: "profile"
roster.command: "roster"
lookup.command: "lookup"
leaderboard.command: "leaderboard"
alliances.command: "alliances"
rivalries.command: "rivalries"
vitals.command: "vitals"
coords.command: "coords"
stats.command: "stats"
ally.command: "ally"
rival.command: "rival"
bb.command: "bb"
cape.command: "cape"
modtag.command: "modtag"
toggle.command: "toggle"
invite.command: "invite"
kick.command: "kick"
bank.command: "bank"
trust.command: "trust"
untrust.command: "untrust"
promote.command: "promote"
demote.command: "demote"
clanff.command: "clanff"
ff.command: "ff"
resign.command: "resign"
disband.command: "disband"
verify.command: "verify"
ban.command: "ban"
unban.command: "unban"
reload.command: "reload"
globalff.command: "globalff"
kills.command: "kills"
mostkilled.command: "mostkilled"
war.command: "war"
home.command: "home"
setrank.command: "setrank"
place.command: "place"
resetkdr.command: "resetkdr"
usage.resetkdr: "Usage: /{0} resetkdr [all/player]"
usage.clan.alliances: "Usage: /{0} alliances"
usage.ally: "Usage: /{0} ally add/remove [tag]"
usage.ban.unban: "Usage: /{0} ban/unban [player]"
usage.rival: "Usage: /{0} rival add/remove [tag]"
usage.war: "Usage: /{0} war start/end [tag]"
usage.cape.url: "Usage: /{0} cape [url]"
usage.setrank: "Usage: /{0} setrank [player] [rank], rank can be multiple worlds and contain &f color codes"
usage.clanff: "Usage: /{0} clanff allow/block"
usage.0.coords: "Usage: /{0} coords"
usage.create.tag: "Usage: /{0} create [tag] [name]"
usage.demote.leader: "Usage: /{0} demote [leader]"
usage.0.disband: "Usage: /{0} disband"
usage.0.ff.allow.auto: "Usage: /{0} ff allow/auto"
usage.0.globalff.allow.auto: "Usage: /{0} globalff allow/auto"
usage.0.permissions.player: "Usage: /{0} permissions [clan] add/remove [permission]"
usage.0.invite.player: "Usage: /{0} invite [player]"
usage.kick.player: "Usage: /{0} kick [player]"
usage.bank: "Usage: /{0} bank withdraw/deposit/status [amount]"
usage.0.modtag.tag: "Usage: /{0} modtag [tag]"
usage.list: "Usage: /{0} list"
usage.lookup.tag: "Usage: /{0} lookup [tag]"
usage.0.profile.tag: "Usage: /{0} profile [tag]"
usage.0.promote.member: "Usage: /{0} promote <member>"
usage.0.rivalries: "Usage: /{0} rivalries"
usage.0.roster.tag: "Usage: /{0} roster [tag]"
usage.0.stats: "Usage: /{0} stats"
usage.0.trust.player: "Usage: /{0} trust [player]"
usage.0.untrust.player: "Usage: /{0} untrust [player]"
usage.0.verify.tag: "Usage: /{0} verify [tag]"
usage.0.vitals: "Usage: /{0} vitals"
usage.0.place: "Usage: /{0} place [player] [tag]"
usage.0.leaderboard: "Usage: /{0} leaderboard"
0.reload.1.reload.configuration: "/{0} reload{1} - Reload configuration"
0.globalff.allow.auto.1.set.global.friendly.fire: "/{0} globalff allow/auto {1} - Set global friendly fire"
0.place: "/{0} place [player] [tag]{1} - Place a player in a clan"
0.ban.unban.player.1.ban.unban.a.player: "/{0} ban/unban [player]{1} - Ban/unban a player"
0.hometp.clan.1.tp.home.a.clan: "/{0} home tp [clan]{1} - Teleport to all clans homes"
0.disband.tag.1.disband.a.clan: "/{0} disband [tag]{1} - Disband a clan"
0.resetkdr.1.resets.kdr: "/{0} resetkdr player/all{1} - Reset KDR of all players or just of one"
0.resetkdr.1.resets.your.kdr: "/{0} resetkdr{1} - Reset your KDR"
0.verify.tag.1.verify.an.unverified.clan: "/{0} verify [tag]{1} - Verify an unverified clan"
0.verify.1.purchase.verification.of.your.clan: "/{0} verify{1} - Purchase verification of your clan"
0.list.1.lists.all.clans: "/{0} list{1} - Lists all clans"
0.profile.1.view.your.clan.s.profile: "/{0} profile{1} - View your clan''s profile"
0.profile.tag.1.view.a.clan.s.profile: "/{0} profile [tag]{1} - View a clan''s profile"
0.lookup.1.lookup.your.info: "/{0} lookup{1} - Lookup your info"
0.lookup.player.1.lookup.a.player.s.info: "/{0} lookup [player]{1} - Lookup a player''s info"
0.leaderboard.1.view.leaderboard: "/{0} leaderboard{1} - View leaderboard"
0.alliances.1.view.all.clan.alliances: "/{0} alliances{1} - View all clan alliances"
0.rivalries.1.view.all.clan.rivalries: "/{0} rivalries{1} - View all clan rivalries"
0.roster.1.view.your.clan.s.member.list: "/{0} roster{1} - View your clan''s member list"
0.roster.tag.1.view.a.clan.s.member.list: "/{0} roster [tag]{1} - View a clan''s member list"
0.vitals.1.view.your.clan.member.s.vitals: "/{0} vitals{1} - View your clan member''s vitals"
0.coords.1.view.your.clan.member.s.coordinates: "/{0} coords{1} - View your clan member''s coordinates"
0.stats.1.view.your.clan.member.s.stats: "/{0} stats{1} - View your clan member''s stats"
0.ally.add.remove.tag.1.add.remove.an.ally.clan: "/{0} ally add/remove [tag]{1} - Add/remove an ally clan"
0.rival.add.remove.tag.1.add.remove.a.rival.clan: "/{0} rival add/remove [tag]{1} - Add/remove a rival clan"
0.bb.1.display.bulletin.board: "/{0} bb{1} - Display bulletin board"
0.bb.msg.1.add.a.message.to.the.bulletin.board: "/{0} bb [msg]{1} - Add a message to the bulletin board"
0.modtag.tag.1.modify.the.clan.s.tag: "/{0} modtag [tag]{1} - Modify the clan''s tag"
0.cape.url.1.change.your.clan.s.cape: "/{0} cape [url]{1} - Change your clan''s cape"
0.invite.player.1.invite.a.player: "/{0} invite [player]{1} - Invite a player"
0.kick.player.1.kick.a.player.from.the.clan: "/{0} kick [player]{1} - Kick a player from the clan"
0.trust.untrust.player.1.set.trust.level1: "/{0} trust [player]{1} - Set member as trusted"
0.trust.untrust.player.1.set.trust.level2: "/{0} untrust [player]{1} - Set member as untrusted"
0.promote.member.1.promote.a.member.to.leader: "/{0} promote [member]{1} - Promote a member to leader"
0.demote.leader.1.demote.a.leader.to.member: "/{0} demote [leader]{1} - Demote a leader to member"
0.clanff.allow.block.1.toggle.clan.s.friendly.fire: "/{0} clanff allow/block{1} - Toggle clan''s friendly fire"
0.ff.allow.auto.1.toggle.personal.friendly.fire: "/{0} ff allow/auto{1} - Toggle personal friendly fire"
0.toggle.command: "/{0} toggle [{2}]{1} - Toggle personal settings"
0.resign.1.resign.from.the.clan: "/{0} resign{1} - Resign from the clan"
0.disband.1.disband.your.clan: "/{0} disband{1} - Disband your clan"
0.trust.setrank: "/{0} setrank [player] [rank]{1} - Give a player a rank"
0.create.tag.name.1.purchase.a.new.clan: "/{0} create [tag] [name]{1} - Purchase a new clan"
0.create.tag.name.1.create.a.new.clan: "/{0} create [tag] [name]{1} - Create a new clan"
0.kills: "/{0} kills{1} - View your kill counts"
0.killsplayer: "/{0} kills [player]{1} - View a player''s kill counts"
0.mostkilled: "/{0} mostkilled{1} - View serverwide most killed counts"
home-menu: "/{0} home{1} - Teleport to clan home-base"
home-set-menu: "/{0} home set{1} - Set the clan''s home base"
home-clear-menu: "/{0} home clear{1} - Clear the clan''s home base"
home-regroup-menu: "/{0} home regroup [me]{1} - Regroup all members to clan home-base or to you"
example.clan.modtag.4kfo.4l: "Example: /clan modtag &4K&fo&4L"
example.clan.create: "Example: /clan create &4Kol Knights of the Labyrinth"
clan: "Clan"
allies: "Allies"
alliances: "alliances"
coords: "coords"
name: "Name"
distance: "Distance"
coords.upper: "Coords"
world: "World"
kdr: "KDR"
members: "Members"
clans.lower: "clans"
rival: "Rival"
civilian: "Civilian"
neutral: "Neutral"
free.agent: "Free Agent"
days: "days"
rivals: "Rivals"
rivalries: "rivalries"
online: "Online"
player: "Player"
seen: "Seen"
leader: "leader"
roster: "roster"
trusted: "trusted"
untrusted: "untrusted"
deaths: "Deaths"
weights: "Weights"
stats: "stats"
health: "Health"
armor: "Armor"
weapons: "Weapons"
food: "Food"
vitals: "vitals"
verified: "Verified"
unverified: "Unverified"
profile: "profile"
civilian.abbreviation: "Civ"
rank: "Rank"
leaders: "Leaders"
none: "None"
today: "Today"
kills: "Kills"
mostkilled: "Most Killed"
killcount: "Kill Count"
attacker: "Attacker"
victim: "Victim"
kill.death.ratio: "Kill/Death Ratio"
nokillsfound: "No Kills Found"
version.loaded: "[{0}] Version {1} loaded"
promoted.to.leader: "{0} has been promoted to leader"
denied.demotion: "{0} denied the demotion of {1}. Consensus failed."
membership.invitation: "{0} has denied the membership invitation"
joined.the.clan: "{0} has joined the clan"
signed.off.request.cancelled: "{0} has signed off. {1} request cancelled."
clan.deletion: "{0} denied the clan deletion. Consensus failed."
has.been.disbanded: "Clan {0} has been disbanded"
denied.the.promotion: "{0} denied the promotion of {1}. Consensus failed."
demoted.back.to.member: "{0} has been demoted back to member"
peace.agreement.denied: "The peace agreement with {0} was denied"
denied.to.make.peace: "{0} has denied to make peace with {1}"
broken.the.rivalry: "{0} has broken the rivalry with {1}"
broken.the.rivalry.with: "{0} has broken the rivalry with {1}"
the.alliance.was.denied: "The alliance with {0} was denied"
denied.an.alliance: "{0} has denied an alliance with {1}"
accepted.an.alliance: "{0} has accepted an alliance with {1}"
created.an.alliance: "{0} has created an alliance with {1}"
has.joined: "{0} has joined {1}"
proposing.to.end.the.rivalry: "{0} is proposing to end the rivalry with {1}"
proposing.an.alliance: "{0} is proposing an alliance with {1}"
inviting.you.to.join: "{0} is inviting you to join {1}"
asking.for.the.deletion: "{0} is asking for the deletion of the clan"
asking.for.the.promotion: "{0} is asking for the promotion of {1}"
asking.for.the.demotion: "{0} is asking for the demotion of {1}"
accept.or.deny: "{0} or {1}"
not.sufficient.money: "You do not have sufficient money in your account"
account.has.been.debited: "Your account has been debited {0}"
mysql.connection.successful: "MySQL Connection successful"
mysql.connection.failed: "MySQL Connection failed"
sqlite.connection.successful: "SQLite Connection successful"
sqlite.connection.failed: " SQLite Connection failed"
purging.player.data: "purging player''s data: {0}"
purging.clan: "Purging clan: {0}"
clan.players: "Clan players: {0}"
clans: "Clans: {0}"
banned: "You are banned from using clan commands"
nothing.more.to.see: "Nothing more to see"
nothing.to.deny: "Nothing to deny"
no.leader.permissions: "You do not have leader permissions"
you.have.already.voted: "You have already voted"
has.voted.to.deny: "{0} has voted to deny"
nothing.to.accept: "Nothing to accept"
view.next.page: "Type /{0} to view next page."
voted.to.accept: "{0} voted to accept"
bulletin.board.header: "{0}* {1}{2} bulletin board"
has.been.disbanded.rivalry.ended: "{0} has been disbanded. Rivalry has ended."
has.been.disbanded.alliance.ended: "{0} has been disbanded. Alliance has ended."
clan.disbanded: "Clan Disbanded"
1.color.day: "1 {0}day"
many.color.days: "{0}{1} days"
does.not.match: "Does not match a clan command"
simpleclans.command.failure: "SimpleClans command failure: {0}"
insufficient.permissions: "Insufficient permissions"
clan.is.not.verified: "Clan is not verified"
not.a.member.of.any.clan: "You are not a member of any clan"
minimum.to.make.alliance: "Your clan must have at least {0} players in order to make alliances"
no.clan.matched: "No clan matched"
cannot.ally.with.an.unverified.clan: "You cannot ally with an unverified clan"
your.clans.are.not.allies: "Your clans are not allies"
has.broken.the.alliance: "{0} has broken the alliance with {1}"
at.least.one.leader.accept.the.alliance: "At least one leader of the allied must be online to accept the alliance"
leaders.have.been.asked.for.an.alliance: "{0} leaders have been asked for an alliance"
your.clans.are.already.allies: "Your clans are already allies"
your.clan.cannot.create.rivals: "Your clan cannot create rivals"
min.players.rivalries: "Your clan must have at least {0} players in order to make rivalries"
this.player.is.already.banned: "This player is already banned"
player.added.to.banned.list: "Player added to banned list"
you.banned: "You have been banned from clan commands"
cape.must.be.png: "The cape url must point to a png image"
url.error: "The URL is retuning an error. Please verify that it is working."
changed.the.clan.cape: "{0} has changed the clan''s cape"
clan.wide.friendly.fire.blocked: "Clan-wide friendly-fire blocked"
clan.wide.friendly.fire.is.allowed: "Clan-wide friendly-fire is allowed"
only.trusted.players.can.access.clan.coords: "Only trusted players can access clan coords"
you.are.the.only.member.online: "You are the only member online"
your.clan.tag.cannot.be.longer.than.characters: "Your clan''s tag cannot be longer than {0} characters"
your.clan.tag.must.be.longer.than.characters: "Your clan''s tag must be longer than {0} characters"
your.tag.cannot.contain.the.following.colors: "Your tag cannot contain the following colors: {0}"
your.tag.cannot.contain.color.codes: "Your tag cannot contain color codes"
your.clan.name.cannot.be.longer.than.characters: "Your clan''s name cannot be longer than {0} characters"
your.clan.name.must.be.longer.than.characters: "Your clan''s name must be longer than {0} characters"
your.clan.tag.can.only.contain.letters.numbers.and.color.codes: "Your clan''s tag can only contain letters, numbers, and color codes"
your.clan.name.cannot.contain.color.codes: "Your clan''s name cannot contain color codes"
that.tag.name.is.disallowed: "That tag name is disallowed"
you.must.first.resign: "You must first resign from {0}"
clan.with.this.tag.already.exists: "A clan with this tag already exists"
get.your.clan.verified.to.access.advanced.features: "Get your clan verified to access advanced features"
clan.created: "Clan {0} created"
leaders.must.be.online.to.vote.on.demotion: "All leaders other than the demoted must be online to vote on this demotion"
demotion.vote.has.been.requested.from.all.leaders: "Demotion vote has been requested from all leaders"
player.is.not.a.leader.of.your.clan: "The player is not a leader of your clan"
clan.has.been.disbanded: "Clan {0} has been disbanded"
clan.disband.vote.has.been.requested.from.all.leaders: "Clan disband vote has been requested from all leaders"
friendy.fire.is.now.managed.by.your.clan: "Friendy-fire is now managed by your clan"
personal.friendly.fire.is.set.to.allowed: "Personal friendly-fire is set to allowed"
global.friendy.fire.is.now.managed.by.each.clan: "Global friendy-fire is now managed by each clan"
global.friendy.fire.is.already.being.managed.by.each.clan: "Global friendy-fire is already being managed by each clan"
global.friendly.fire.is.set.to.allowed: "Global friendly-fire is set to allowed"
global.friendly.fire.is.already.being.allowed: "Global friendly-fire is already being allowed"
no.player.matched: "No player matched"
the.player.doesn.t.not.have.the.permissions.to.join.clans: "The player doesn''t not have the permissions to join clans"
you.cannot.invite.yourself: "You cannot invite yourself"
this.player.is.banned.from.using.clan.commands: "This player is banned from using clan commands"
the.player.is.already.member.of.another.clan: "The player is already member of another clan"
has.been.asked.to.join: "{0} has been asked to join {1}"
you.cannot.kick.yourself: "You cannot kick yourself"
the.player.is.not.a.member.of.your.clan: "The player is not a member of your clan"
you.cannot.kick.another.leader: "You cannot kick another leader"
has.been.kicked.by: "{0} has been kicked by {1}"
no.clans.have.been.created: "No clans have been created"
total.clans: "Total clans:"
legend: "Legend:"
kill.type.civilian: "Kill Type: {0}Civilian"
no.player.data.found: "No player data found"
kill.type.0: "Kill Type: {0}"
s.player.info: "{0}''s player info"
clan.0: "Clan: {0}"
status.0: "Status: {0}"
rank.0: "Rank: {0}"
kdr.0: "KDR: {0}"
deaths.0: "Deaths: {0}"
join.date.0: "Join Date: {0}"
last.seen.0: "Last Seen: {0}"
past.clans.0: "Past Clans: {0}"
inactive.0: "Inactive: {0}"
kill.totals: "Kill Totals:"
clan.commands: "clan commands"
you.can.only.modify.the.color.and.case.of.the.tag: "You can only modify the color and case of the tag"
tag.changed.to.0: "Tag changed to {0}"
name.0: "Name: {0}"
leaders.0: "Leaders: {0}"
members.online.0: "Members Online: {0}"
allies.0: "Allies: {0}"
rivals.0: "Rivals: {0}"
founded.0: "Founded: {0}"
the.member.to.be.promoted.must.be.online: "The member to be promoted must be online"
the.player.does.not.have.the.permissions.to.lead.a.clan: "The player does not have the permissions to lead a clan"
you.cannot.promote.yourself: "You cannot promote yourself"
all.leaders.must.be.online.to.vote.on.this.promotion: "All leaders must be online to vote on this promotion"
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"
0.has.resigned: "{0} has resigned"
only.trusted.players.can.access.clan.stats: "Only trusted players can access clan stats"
you.cannot.trust.yourself: "You cannot trust yourself"
leaders.are.already.trusted: "Leaders are already trusted"
this.player.is.already.trusted: "This player is already trusted"
has.been.given.trusted.status.by: "{0} has been given trusted status by {1}"
this.player.is.not.banned: "This player is not banned"
player.removed.from.the.banned.list: "Player removed from the banned list"
you.have.been.unbanned.from.clan.commands: "You have been unbanned from clan commands"
you.cannot.untrust.yourself: "You cannot untrust yourself"
leaders.cannot.be.untrusted: "Leaders cannot be untrusted"
this.player.is.already.untrusted: "This player is already untrusted"
has.been.given.untrusted.status.by: "{0} has been given untrusted status by {1}"
the.clan.does.not.exist: "The clan does not exist"
the.clan.is.already.verified: "The clan is already verified"
the.clan.has.been.verified: "The clan has been verified"
clan.0.has.been.verified: "Clan {0} has been verified!"
only.trusted.players.can.access.clan.vitals: "Only trusted players can access clan vitals"
total.clan.players.0: "Total clan players: {0}"
proposing.war: "{0} is proposing to start a war with {1}"
you.can.only.start.war.with.rivals: "You can only start war with rivals"
leaders.have.been.asked.to.accept.the.war.request: "{0} leaders have been asked to accept the war request"
leaders.asked.to.end.rivalry: "{0} leaders have been asked to end the war"
proposing.to.end.the.war: "{0} is proposing to end the war with {1}"
clans.already.at.war: "Your clans are already in war"
clans.not.at.war: "Your clans are not at war"
you.are.at.war: "{0} is now at war with {1}"
denied.war.req: "{0} denied the war request sent by {1}"
you.are.no.longer.at.war: "{0} is no longer at war with {1}"
end.war.denied: "Request to end the war has been denied by {0}"
denied.war.end: "{0} denied {1}''s request to end the war"
0.war: "/{0} war{1} start/end [tag] - Start or end a war"
has.initiated.a.rivalry: "{0} has initiated a rivalry with {1}"
start: "start"
end: "end"
add: "add"
remove: "remove"
allow: "allow"
block: "block"
auto: "auto"
war: "war"
0.s.sword.1.2.b.bow.3.4.a.arrow: "{0}S=Sword{1}, {2}B=Bow{3}, {4}#=Arrows"
weapon.S: "S"
weapon.B: "B"
weapon.A: "A"
materials: "Materials"
armor.h: "H"
armor.c: "C"
armor.l: "L"
armor.B: "B"
diamond: "diamond"
gold: "gold"
wood: "wood"
server.announce: "Server Announce"
clan.announce: "Clan Announce"
leader.announce: "Leader Announce"
hunger: "Hunger"
stone: "Stone"
iron: "Iron"
the.clan.cannot.be.rivaled: "The clan cannot be rivaled"
capeoff: "Cape toggled off"
capeon: "Cape toggled on"
bboff: "BB toggled off"
bbon: "BB toggled on"
tagoff: "Tag toggled off"
tagon: "Tag toggled on"
depositon: "Deposit toggled on"
depositoff: "Deposit toggled off"
withdrawon: "Withdraw toggled on"
withdrawoff: "Withdraw toggled off"
home.base.only.once: "Home base can only be set once"
now.at.homebase: "You are now at {0}''s home base"
hombase.set: "Clan home-base set to: {0}"
hombase.cleared: "Clan home-base cleared"
hombase.mod.set: "{0}''s home-base set to:"
hombase.not.set: "Home-base not set"
rival.limit.reached: "You have reached the rival limit. You cannot rival any more clans."
you.moved.teleport.cancelled: "You moved, teleport cancelled"
waiting.for.teleport.stand.still.for.0.seconds: "Waiting for teleport, stand still for {0} seconds"
no.teleport: "You are not allowed to teleport to that location"
on: "on"
off: "off"
leave: "leave"
join: "join"
mute: "mute"
player.rank.changed: "Rank has been set"
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}"
bb.clan.deposit: "{0} $ were deposited"
player.clan.deposit: "You deposited {0}"
bb.clan.withdraw: "{0} $ were withdrawn"
player.clan.withdraw: "You withdraw {0}"
clan.bank.not.enough.money: "Your clans bank has not enough money"
your.clans.are.not.rivals: "Your clans are not rivals"
you.cannot.rival.your.own.clan: "You cannot rival your own clan"
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"
+506
View File
@@ -0,0 +1,506 @@
description.command=description
create.command=create
list.command=list
profile.command=profile
roster.command=roster
lookup.command=lookup
leaderboard.command=leaderboard
alliances.command=alliances
rivalries.command=rivalries
vitals.command=vitals
coords.command=coords
stats.command=stats
ally.command=ally
rival.command=rival
bb.command=bb
cape.command=cape
modtag.command=modtag
toggle.command=toggle
invite.command=invite
kick.command=kick
bank.command=bank
fee.command=fee
purge.command=purge
trust.command=trust
untrust.command=untrust
promote.command=promote
demote.command=demote
clanff.command=clanff
ff.command=ff
resign.command=resign
disband.command=disband
verify.command=verify
ban.command=ban
unban.command=unban
reload.command=reload
globalff.command=globalff
kills.command=kills
mostkilled.command=mostkilled
war.command=war
home.command=home
setrank.command=setrank
place.command=place
resetkdr.command=resetkdr
usage.description=Usage: /{0} description [description]
usage.resetkdr=Usage: /{0} resetkdr [all/player]
usage.clan.alliances=Usage: /{0} alliances
usage.ally=Usage: /{0} ally add/remove [tag]
usage.ban.unban=Usage: /{0} ban/unban [player]
usage.rival=Usage: /{0} rival add/remove [tag]
usage.war=Usage: /{0} war start/end [tag]
usage.cape.url=Usage: /{0} cape [url]
usage.setrank=Usage: /{0} setrank [player] [rank], rank can be multiple words and contain &f color codes
usage.clanff=Usage: /{0} clanff allow/block
usage.0.coords=Usage: /{0} coords
usage.create.tag=Usage: /{0} create [tag] [name]
usage.demote.leader=Usage: /{0} demote [leader]
usage.0.disband=Usage: /{0} disband
usage.0.ff.allow.auto=Usage: /{0} ff allow/auto
usage.0.globalff.allow.auto=Usage: /{0} globalff allow/auto
usage.0.permissions.player=Usage: /{0} permissions [clan] add/remove [permission]
usage.0.invite.player=Usage: /{0} invite [player]
usage.kick.player=Usage: /{0} kick [player]
usage.bank=Usage: /{0} bank withdraw/deposit/status [amount]
usage.fee=Usage: /{0} fee check/set [amount]
usage.purge=Usage: /{0} purge [player]
usage.0.modtag.tag=Usage: /{0} modtag [tag]
usage.list=Usage: /{0} list [name/size/kdr/founded/active] [asc/desc]
usage.lookup.tag=Usage: /{0} lookup [tag]
usage.0.profile.tag=Usage: /{0} profile [tag]
usage.0.promote.member=Usage: /{0} promote <member>
usage.0.rivalries=Usage: /{0} rivalries
usage.0.roster.tag=Usage: /{0} roster [tag]
usage.0.stats=Usage: /{0} stats
usage.0.trust.player=Usage: /{0} trust [player]
usage.0.untrust.player=Usage: /{0} untrust [player]
usage.0.verify.tag=Usage: /{0} verify [tag]
usage.0.vitals=Usage: /{0} vitals
usage.0.place=Usage: /{0} place [player] [tag]
usage.0.leaderboard=Usage: /{0} leaderboard
0.reload.1.reload.configuration=/{0} reload{1} - Reload configuration
0.globalff.allow.auto.1.set.global.friendly.fire=/{0} globalff allow/auto {1} - Set global friendly fire
0.place=/{0} place [player] [tag]{1} - Place a player in a clan
0.ban.unban.player.1.ban.unban.a.player=/{0} ban/unban [player]{1} - Ban/unban a player
0.hometp.clan.1.tp.home.a.clan=/{0} home tp [clan]{1} - Teleport to all clans homes
0.disband.tag.1.disband.a.clan=/{0} disband [tag]{1} - Disband a clan
0.resetkdr.1.resets.kdr=/{0} resetkdr player/all{1} - Reset KDR of all players or just of one
0.resetkdr.1.resets.your.kdr=/{0} resetkdr{1} - Reset your KDR
0.purge.player.1.purge.a.player=/{0} purge [player]{1} - Purge a player
0.verify.tag.1.verify.an.unverified.clan=/{0} verify [tag]{1} - Verify an unverified clan
0.verify.1.purchase.verification.of.your.clan=/{0} verify{1} - Purchase verification of your clan
0.list.1.lists.all.clans=/{0} list [order by] [asc/desc]{1} - Lists all clans - (order by: name/size/kdr/founded/active)
0.profile.1.view.your.clan.s.profile=/{0} profile{1} - View your clan''s profile
0.profile.tag.1.view.a.clan.s.profile=/{0} profile [tag]{1} - View a clan''s profile
0.lookup.1.lookup.your.info=/{0} lookup{1} - Lookup your info
0.lookup.player.1.lookup.a.player.s.info=/{0} lookup [player]{1} - Lookup a player''s info
0.leaderboard.1.view.leaderboard=/{0} leaderboard{1} - View leaderboard
0.alliances.1.view.all.clan.alliances=/{0} alliances{1} - View all clan alliances
0.rivalries.1.view.all.clan.rivalries=/{0} rivalries{1} - View all clan rivalries
0.roster.1.view.your.clan.s.member.list=/{0} roster{1} - View your clan''s member list
0.roster.tag.1.view.a.clan.s.member.list=/{0} roster [tag]{1} - View a clan''s member list
0.vitals.1.view.your.clan.member.s.vitals=/{0} vitals{1} - View your clan member''s vitals
0.coords.1.view.your.clan.member.s.coordinates=/{0} coords{1} - View your clan member''s coordinates
0.stats.1.view.your.clan.member.s.stats=/{0} stats{1} - View your clan member''s stats
0.ally.add.remove.tag.1.add.remove.an.ally.clan=/{0} ally add/remove [tag]{1} - Add/remove an ally clan
0.rival.add.remove.tag.1.add.remove.a.rival.clan=/{0} rival add/remove [tag]{1} - Add/remove a rival clan
0.bb.1.display.bulletin.board=/{0} bb{1} - Display bulletin board
0.bb.msg.1.add.a.message.to.the.bulletin.board=/{0} bb [msg]{1} - Add a message to the bulletin board
0.modtag.tag.1.modify.the.clan.s.tag=/{0} modtag [tag]{1} - Modify the clan''s tag
0.description.description.1.modify.the.clan.s.description=/{0} description [description]{1} - Modify the clan''s description
0.cape.url.1.change.your.clan.s.cape=/{0} cape [url]{1} - Change your clan''s cape
0.invite.player.1.invite.a.player=/{0} invite [player]{1} - Invite a player
0.kick.player.1.kick.a.player.from.the.clan=/{0} kick [player]{1} - Kick a player from the clan
0.trust.untrust.player.1.set.trust.level1=/{0} trust [player]{1} - Set member as trusted
0.trust.untrust.player.1.set.trust.level2=/{0} untrust [player]{1} - Set member as untrusted
0.promote.member.1.promote.a.member.to.leader=/{0} promote [member]{1} - Promote a member to leader
0.demote.leader.1.demote.a.leader.to.member=/{0} demote [leader]{1} - Demote a leader to member
0.clanff.allow.block.1.toggle.clan.s.friendly.fire=/{0} clanff allow/block{1} - Toggle clan''s friendly fire
0.ff.allow.auto.1.toggle.personal.friendly.fire=/{0} ff allow/auto{1} - Toggle personal friendly fire
0.toggle.command=/{0} toggle [{2}]{1} - Toggle personal settings
0.resign.1.resign.from.the.clan=/{0} resign{1} - Resign from the clan
0.disband.1.disband.your.clan=/{0} disband{1} - Disband your clan
0.trust.setrank=/{0} setrank [player] [rank]{1} - Give a player a rank
0.create.tag.name.1.purchase.a.new.clan=/{0} create [tag] [name]{1} - Purchase a new clan
0.create.tag.name.1.create.a.new.clan=/{0} create [tag] [name]{1} - Create a new clan
0.kills=/{0} kills{1} - View your kill counts
0.killsplayer=/{0} kills [player]{1} - View a player''s kill counts
0.fee.check=/{0} fee check {1}- Check if the fee is enabled and how much is it
0.fee.set=/{0} fee set [amount]{1} - Set the clan's member fee
0.mostkilled=/{0} mostkilled{1} - View serverwide most killed counts
home-menu=/{0} home{1} - Teleport to clan home-base
home-set-menu=/{0} home set{1} - Set the clan''s home base
home-clear-menu=/{0} home clear{1} - Clear the clan''s home base
home-regroup-menu=/{0} home regroup [me]{1} - Regroup all members to clan home-base or to you
example.clan.modtag.4kfo.4l=Example: /clan modtag &4K&fo&4L
example.clan.create=Example: /clan create &4Kol Knights of the Labyrinth
clan=Clan
allies=Allies
alliances=alliances
coords=coords
name=Name
distance=Distance
coords.upper=Coords
world=World
kdr=KDR
members=Members
clans.lower=clans
rival=Rival
civilian=Civilian
neutral=Neutral
free.agent=Free Agent
days=days
rivals=Rivals
rivalries=rivalries
online=Online
player=Player
seen=Seen
leader=leader
roster=roster
trusted=trusted
untrusted=untrusted
deaths=Deaths
weights=Weights
stats=stats
health=Health
armor=Armor
weapons=Weapons
food=Food
vitals=vitals
verified=Verified
unverified=Unverified
profile=profile
civilian.abbreviation=Civ
rank=Rank
leaders=Leaders
none=None
today=Today
kills=Kills
mostkilled=Most Killed
killcount=Kill Count
attacker=Attacker
victim=Victim
kill.death.ratio=Kill/Death Ratio
nokillsfound=No Kills Found
version.loaded=[{0}] Version {1} loaded
promoted.to.leader={0} has been promoted to leader
denied.demotion={0} denied the demotion of {1}. Consensus failed.
membership.invitation={0} has denied the membership invitation
joined.the.clan={0} has joined the clan
signed.off.request.cancelled={0} has signed off. {1} request cancelled.
clan.deletion={0} denied the clan deletion. Consensus failed.
has.been.disbanded=Clan {0} has been disbanded
denied.the.promotion={0} denied the promotion of {1}. Consensus failed.
demoted.back.to.member={0} has been demoted back to member
peace.agreement.denied=The peace agreement with {0} was denied
denied.to.make.peace={0} has denied to make peace with {1}
broken.the.rivalry={0} has broken the rivalry with {1}
broken.the.rivalry.with={0} has broken the rivalry with {1}
the.alliance.was.denied=The alliance with {0} was denied
denied.an.alliance={0} has denied an alliance with {1}
accepted.an.alliance={0} has accepted an alliance with {1}
created.an.alliance={0} has created an alliance with {1}
has.joined={0} has joined {1}
proposing.to.end.the.rivalry={0} is proposing to end the rivalry with {1}
proposing.an.alliance={0} is proposing an alliance with {1}
inviting.you.to.join={0} is inviting you to join {1}
asking.for.the.deletion={0} is asking for the deletion of the clan
asking.for.the.promotion={0} is asking for the promotion of {1}
asking.for.the.demotion={0} is asking for the demotion of {1}
accept.or.deny={0} or {1}
not.sufficient.money=You do not have sufficient money in your account
account.has.been.debited=Your account has been debited {0}
mysql.connection.successful=MySQL Connection successful
mysql.connection.failed=MySQL Connection failed
sqlite.connection.successful=SQLite Connection successful
sqlite.connection.failed= SQLite Connection failed
purging.player.data=purging player''s data: {0}
purging.clan=Purging clan: {0}
clan.players=Clan players: {0}
clans=Clans: {0}
banned=You are banned from using clan commands
nothing.more.to.see=Nothing more to see
nothing.to.deny=Nothing to deny
no.leader.permissions=You do not have leader permissions
you.have.already.voted=You have already voted
has.voted.to.deny={0} has voted to deny
nothing.to.accept=Nothing to accept
view.next.page=Type /{0} to view next page.
voted.to.accept={0} voted to accept
bulletin.board.header={0}* {1}{2} bulletin board
has.been.disbanded.rivalry.ended={0} has been disbanded. Rivalry has ended.
has.been.disbanded.alliance.ended={0} has been disbanded. Alliance has ended.
clan.disbanded=Clan Disbanded
1.color.day=1 {0}day
many.color.days={0}{1} days
does.not.match=Does not match a clan command
simpleclans.command.failure=SimpleClans command failure: {0}
insufficient.permissions=Insufficient permissions
clan.is.not.verified=Clan is not verified
not.a.member.of.any.clan=You are not a member of any clan
minimum.to.make.alliance=Your clan must have at least {0} players in order to make alliances
no.clan.matched=No clan matched
cannot.ally.with.an.unverified.clan=You cannot ally with an unverified clan
your.clans.are.not.allies=Your clans are not allies
has.broken.the.alliance={0} has broken the alliance with {1}
at.least.one.leader.accept.the.alliance=At least one leader of the allied must be online to accept the alliance
leaders.have.been.asked.for.an.alliance={0} leaders have been asked for an alliance
your.clans.are.already.allies=Your clans are already allies
your.clan.cannot.create.rivals=Your clan cannot create rivals
min.players.rivalries=Your clan must have at least {0} players in order to make rivalries
this.player.is.already.banned=This player is already banned
player.added.to.banned.list=Player added to banned list
you.banned=You have been banned from clan commands
cape.must.be.png=The cape url must point to a png image
url.error=The URL is retuning an error. Please verify that it is working.
changed.the.clan.cape={0} has changed the clan''s cape
clan.wide.friendly.fire.blocked=Clan-wide friendly-fire blocked
clan.wide.friendly.fire.is.allowed=Clan-wide friendly-fire is allowed
only.trusted.players.can.access.clan.coords=Only trusted players can access clan coords
you.are.the.only.member.online=You are the only member online
your.clan.tag.cannot.be.longer.than.characters=Your clan''s tag cannot be longer than {0} characters
your.clan.tag.must.be.longer.than.characters=Your clan''s tag must be longer than {0} characters
your.tag.cannot.contain.the.following.colors=Your tag cannot contain the following colors: {0}
your.tag.cannot.contain.color.codes=Your tag cannot contain color codes
you.cannot.set.colored.ranks=You cannot set colored ranks
your.clan.name.cannot.be.longer.than.characters=Your clan''s name cannot be longer than {0} characters
your.clan.name.must.be.longer.than.characters=Your clan''s name must be longer than {0} characters
your.clan.tag.can.only.contain.letters.numbers.and.color.codes=Your clan''s tag can only contain letters, numbers, and color codes
your.clan.name.cannot.contain.color.codes=Your clan''s name cannot contain color codes
that.tag.name.is.disallowed=That tag name is disallowed
you.must.first.resign=You must first resign from {0}
clan.with.this.tag.already.exists=A clan with this tag already exists
get.your.clan.verified.to.access.advanced.features=Get your clan verified to access advanced features
clan.created=Clan {0} created
not.enough.leaders.online.to.vote.on.demotion=There aren''t enough leaders online to vote on this demotion
leaders.must.be.online.to.vote.on.demotion=All leaders other than the demoted must be online to vote on this demotion
demotion.vote.has.been.requested.from.all.leaders=Demotion vote has been requested from all leaders
player.is.not.a.leader.of.your.clan=The player is not a leader of your clan
clan.has.been.disbanded=Clan {0} has been disbanded
clan.disband.vote.has.been.requested.from.all.leaders=Clan disband vote has been requested from all leaders
friendy.fire.is.now.managed.by.your.clan=Friendy-fire is now managed by your clan
personal.friendly.fire.is.set.to.allowed=Personal friendly-fire is set to allowed
global.friendy.fire.is.now.managed.by.each.clan=Global friendy-fire is now managed by each clan
global.friendy.fire.is.already.being.managed.by.each.clan=Global friendy-fire is already being managed by each clan
global.friendly.fire.is.set.to.allowed=Global friendly-fire is set to allowed
global.friendly.fire.is.already.being.allowed=Global friendly-fire is already being allowed
no.player.matched=No player matched
the.player.doesn.t.not.have.the.permissions.to.join.clans=The player doesn''t not have the permissions to join clans
you.cannot.invite.yourself=You cannot invite yourself
this.player.is.banned.from.using.clan.commands=This player is banned from using clan commands
the.player.is.already.member.of.another.clan=The player is already member of another clan
has.been.asked.to.join={0} has been asked to join {1}
you.cannot.kick.yourself=You cannot kick yourself
the.player.is.not.a.member.of.your.clan=The player is not a member of your clan
you.cannot.kick.another.leader=You cannot kick another leader
has.been.kicked.by={0} has been kicked by {1}
no.clans.have.been.created=No clans have been created
total.clans=Total clans:
legend=Legend:
kill.type.civilian=Kill Type: {0}Civilian
no.player.data.found=No player data found
kill.type.0=Kill Type: {0}
s.player.info={0}''s player info
clan.0=Clan: {0}
status.0=Status: {0}
rank.0=Rank: {0}
kdr.0=KDR: {0}
deaths.0=Deaths: {0}
fee.0.value.1=Fee: {0}, {1} $
join.date.0=Join Date: {0}
last.seen.0=Last Seen: {0}
past.clans.0=Past Clans: {0}
inactive.0=Inactive: {0}
kill.totals=Kill Totals:
clan.commands=clan commands
you.can.only.modify.the.color.and.case.of.the.tag=You can only modify the color and case of the tag
tag.changed.to.0=Tag changed to {0}
name.0=Name: {0}
description.0=Description: {0}
leaders.0=Leaders: {0}
members.online.0=Members Online: {0}
allies.0=Allies: {0}
rivals.0=Rivals: {0}
founded.0=Founded: {0}
the.member.to.be.promoted.must.be.online=The member to be promoted must be online
the.player.does.not.have.the.permissions.to.lead.a.clan=The player does not have the permissions to lead a clan
you.cannot.promote.yourself=You cannot promote yourself
all.leaders.must.be.online.to.vote.on.this.promotion=All leaders must be online to vote on this promotion
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
0.has.resigned={0} has resigned
only.trusted.players.can.access.clan.stats=Only trusted players can access clan stats
you.cannot.trust.yourself=You cannot trust yourself
leaders.are.already.trusted=Leaders are already trusted
this.player.is.already.trusted=This player is already trusted
has.been.given.trusted.status.by={0} has been given trusted status by {1}
this.player.is.not.banned=This player is not banned
player.removed.from.the.banned.list=Player removed from the banned list
you.have.been.unbanned.from.clan.commands=You have been unbanned from clan commands
you.cannot.untrust.yourself=You cannot untrust yourself
leaders.cannot.be.untrusted=Leaders cannot be untrusted
this.player.is.already.untrusted=This player is already untrusted
has.been.given.untrusted.status.by={0} has been given untrusted status by {1}
the.clan.does.not.exist=The clan does not exist
the.clan.is.already.verified=The clan is already verified
the.clan.has.been.verified=The clan has been verified
clan.0.has.been.verified=Clan {0} has been verified!
only.trusted.players.can.access.clan.vitals=Only trusted players can access clan vitals
total.clan.players.0=Total clan players: {0}
proposing.war={0} is proposing to start a war with {1}
you.can.only.start.war.with.rivals=You can only start war with rivals
leaders.have.been.asked.to.accept.the.war.request={0} leaders have been asked to accept the war request
leaders.asked.to.end.rivalry={0} leaders have been asked to end the war
proposing.to.end.the.war={0} is proposing to end the war with {1}
clans.already.at.war=Your clans are already in war
clans.not.at.war=Your clans are not at war
you.are.at.war={0} is now at war with {1}
denied.war.req={0} denied the war request sent by {1}
you.are.no.longer.at.war={0} is no longer at war with {1}
end.war.denied=Request to end the war has been denied by {0}
denied.war.end={0} denied {1}''s request to end the war
0.war=/{0} war{1} start/end [tag] - Start or end a war
has.initiated.a.rivalry={0} has initiated a rivalry with {1}
start=start
end=end
add=add
remove=remove
allow=allow
block=block
auto=auto
war=war
0.s.sword.1.2.b.bow.3.4.a.arrow={0}S=Sword{1}, {2}B=Bow{3}, {4}A=Arrows
weapon.S=S
weapon.B=B
weapon.A=A
materials=Materials
armor.h=H
armor.c=C
armor.l=L
armor.B=B
diamond=diamond
gold=gold
wood=wood
server.announce=Server Announce
clan.announce=Clan Announce
leader.announce=Leader Announce
hunger=Hunger
stone=stone
iron=iron
the.clan.cannot.be.rivaled=The clan cannot be rivaled
capeoff=Cape toggled off
capeon=Cape toggled on
bboff=BB toggled off
bbon=BB toggled on
tagoff=Tag toggled off
tagon=Tag toggled on
depositon=Deposit toggled on
depositoff=Deposit toggled off
withdrawon=Withdraw toggled on
withdrawoff=Withdraw toggled off
feeoff=Fee toggled off
feeon=Fee toggled on
home.base.only.once=Home base can only be set once
now.at.homebase=You are now at {0}''s home base
hombase.set=Clan home-base set to: {0}
hombase.cleared=Clan home-base cleared
hombase.mod.set={0}''s home-base set to:
hombase.not.set=Home-base not set
rival.limit.reached=You have reached the rival limit. You cannot rival any more clans.
you.moved.teleport.cancelled=You moved, teleport cancelled
waiting.for.teleport.stand.still.for.0.seconds=Waiting for teleport, stand still for {0} seconds
no.teleport=You are not allowed to teleport to that location
on=on
off=off
leave=leave
join=join
mute=mute
player.rank.changed=Rank has been set
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}
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
player.clan.withdraw=You withdraw {0}
clan.bank.not.enough.money=Your clans bank has not enough money
your.clans.are.not.rivals=Your clans are not rivals
you.cannot.rival.your.own.clan=You cannot rival your own clan
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
resign.yes=Yes
resign.no=No
resign.confirmation=Are you sure you want to resign? {0}
resign.success=You have successfully resigned from your clan
player.is.not.a.leader.of.any.clan=The player is not a leader of any clan
you.cannot.demote.the.last.leader=You cannot demote the last leader
player.successfully.demoted=The player was successfully demoted
bb.ago= ago
bb.moments=moments
bb.seconds= seconds
bb.minutes= minutes
bb.one.minute=1 minute
bb.hours= hours
bb.one.hour=1 hour
bb.days= days
bb.one.day=1 day
the.fee.is.0.and.its.current.value.is.1=The fee is {0} and the its current value is {1} $
fee.enabled=enabled
fee.disabled=disabled
fee.set=The fee was successfully set
max.fee.allowed.is.0=Max fee allowed is {0}
fee.collected={0} $ were withdrawn for the clan fee
invalid.fee=The value you inserted is not valid
player.purged=The player was successfully purged
upkeep.collected={0} $ were withdrawn for the upkeep
balance.is.not.enough.for.upkeep=The clan balance is not enough for paying the upkeep ({0} $), deposit the amount to avoid being disbanded
your.clan.description.must.be.longer.than=Your clan description must be longer than {0} characters
your.clan.description.cannot.be.longer.than=Your clan description cannot be longer than {0} characters
description.changed=You have successfully changed your clan's description
no.description=No description
the.player.must.wait.0.before.joining.your.clan.again=This player must wait {0} minute(s) before joining your clan again
disabled.command=Disabled command
rank.displayname.updated=The rank's display name was updated!
rank.0.permissions=Rank {0}''s permissions:
available.rank.permissions=Available permissions for ranks:
rank.already.exists=Rank already exists
rank.0.does.not.exist=Rank {0} doesn''t exist
rank.created=Rank created
invalid.permission={0} is not a valid permission! Use one of these: {1}
permission.0.added.to.rank.1=Permission {0} added to rank {1}
permission.0.removed.from.rank.1=Permission {0} removed from rank {1}
rank.0.deleted=Rank {0} deleted
usage.0.rank.create=Usage: /{0} rank create [name]
usage.0.rank.setdisplayname=Usage: /{0} rank setdisplayname [rank] [displayname], displayname can be multiple worls and contain color codes
usage.0.rank.delete=Usage: /{0} rank delete [rank]
usage.0.rank.permissions=Usage: /{0} rank permissions [rank] [add/remove] [permission]
usage.0.rank.assign=Usage: /{0} rank assign [player] [rank]
usage.0.rank.unassign=Usage: /{0} rank unassign [player]
usage.0.rank=Usage: /{0} rank [create/assign/unassign/delete/list/setdisplayname/permissions]
clans.ranks=Clan's ranks:
ranks.list.item={0}# {1} ({2})
no.ranks=No ranks were created
rank.no.permissions=This rank doesn't have any permission
player.unassigned.from.rank=Player unassigned from rank
rank.command=rank
0.rank.create.rank.1.create.rank=/{0} rank create [rank]{1} - Create a rank
0.rank.assign.player.rank.1.assign.rank.to.player=/{0} rank assign [player] [rank]{1} - Assign rank to a member
0.rank.unassign.player.1.unassign.player.from.rank=/{0} rank unassign [player]{1} - Unassign a member from a rank
0.rank.delete.rank.1.delete.rank=/{0} rank delete [rank]{1} - Delete a rank
0.rank.list.1.list.ranks=/{0} rank list{1} - List the ranks
0.rank.setdisplayname.rank.displayname.1.set.rank.displayname=/{0} rank setdisplayname [rank] [displayname]{1} - Set a rank displayname
0.rank.permissions.1.list.available.permissions=/{0} rank permissions{1} - List the available permissions
0.rank.permissions.rank.1.list.rank.permissions=/{0} rank permissions [rank]{1} - List the permissions of the rank
0.rank.permissions.rank.add.permission.1.add.a.permission.to.rank=/{0} rank permissions [rank] add [permission]{1} - Add a permission to the rank
0.rank.permissions.rank.remove.permission.1.remove.a.permission.from.rank=/{0} rank permissions [rank] remove [permission]{1} - Remove a permission from the rank
you.must.be.0.or.have.the.permission.1.to.use.this=You must be {0} or your leader must give your rank the permission {1} to use this
deposit.not.allowed=Deposit is not allowed
withdraw.not.allowed=Withdraw is not allowed
resign.request.cancelled=Resign request cancelled
promotion.vote.has.been.requested.from.all.leaders=Promotion vote has been requested from all leaders
0.message.1.send.a.message.to.clan.chat=/{0} [message]{1} - Send a message to your clan's chat
@@ -0,0 +1,506 @@
description.command=description
create.command=create
list.command=list
profile.command=profile
roster.command=roster
lookup.command=lookup
leaderboard.command=leaderboard
alliances.command=alliances
rivalries.command=rivalries
vitals.command=vitals
coords.command=coords
stats.command=stats
ally.command=ally
rival.command=rival
bb.command=bb
cape.command=cape
modtag.command=modtag
toggle.command=toggle
invite.command=invite
kick.command=kick
bank.command=bank
fee.command=fee
purge.command=purge
trust.command=trust
untrust.command=untrust
promote.command=promote
demote.command=demote
clanff.command=clanff
ff.command=ff
resign.command=resign
disband.command=disband
verify.command=verify
ban.command=ban
unban.command=unban
reload.command=reload
globalff.command=globalff
kills.command=kills
mostkilled.command=mostkilled
war.command=war
home.command=home
setrank.command=setrank
place.command=place
resetkdr.command=resetkdr
usage.description=Uso\: /{0} description [description]
usage.resetkdr=Uso\: /{0} resetkdr [all/player]
usage.clan.alliances=Uso\: /{0} alliances
usage.ally=Uso\: /{0} ally add/remove [tag]
usage.ban.unban=Uso\: /{0} ban/unban [player]
usage.rival=Uso\: /{0} rival add/remove [tag]
usage.war=Uso\: /{0} war start/end [tag]
usage.cape.url=Uso\: /{0} cape [url]
usage.setrank=Uso\: /{0} setrank [player] [rank], el rango puede tener varias palabras y usar el formato &f de codigo de colores
usage.clanff=Uso\: /{0} clanff allow/block
usage.0.coords=Uso\: /{0} coords
usage.create.tag=Uso\: /{0} create [tag] [name]
usage.demote.leader=Uso\: /{0} demote [leader]
usage.0.disband=Uso\: /{0} disband
usage.0.ff.allow.auto=Uso\: /{0} ff allow/auto
usage.0.globalff.allow.auto=Uso\: /{0} globalff allow/auto
usage.0.permissions.player=Uso\: /{0} permissions [clan] add/remove [permission]
usage.0.invite.player=Uso\: /{0} invite [player]
usage.kick.player=Uso\: /{0} kick [player]
usage.bank=Uso\: /{0} bank withdraw/deposit/status [amount]
usage.fee=Uso\: /{0} fee check/set [amount]
usage.purge=Uso\: /{0} purge [player]
usage.0.modtag.tag=Uso\: /{0} modtag [tag]
usage.list=Uso\: /{0} list [name/size/kdr/founded/active] [asc/desc]
usage.lookup.tag=Uso\: /{0} lookup [tag]
usage.0.profile.tag=Uso\: /{0} profile [tag]
usage.0.promote.member=Uso\: /{0} promote <member>
usage.0.rivalries=Uso\: /{0} rivalries
usage.0.roster.tag=Uso\: /{0} roster [tag]
usage.0.stats=Uso\: /{0} stats
usage.0.trust.player=Uso\: /{0} trust [player]
usage.0.untrust.player=Uso\: /{0} untrust [player]
usage.0.verify.tag=Uso\: /{0} verify [tag]
usage.0.vitals=Uso\: /{0} vitals
usage.0.place=Uso\: /{0} place [player] [tag]
usage.0.leaderboard=Uso\: /{0} leaderboard
0.reload.1.reload.configuration=/{0} reload{1} - Reinicia la configuracion
0.globalff.allow.auto.1.set.global.friendly.fire=/{0} globalff allow/auto {1} - Activa el daño entre amigos global
0.place=/{0} place [player] [tag]{1} - Pon a un jugador en un clan
0.ban.unban.player.1.ban.unban.a.player=/{0} ban/unban [player]{1} - Banea o desbanea a un jugador
0.hometp.clan.1.tp.home.a.clan=/{0} home tp [clan]{1} - Teletransportate a la casa de un clan
0.disband.tag.1.disband.a.clan=/{0} disband [tag]{1} - Disuelve un clan
0.resetkdr.1.resets.kdr=/{0} resetkdr player/all{1} - Reinicia el KDR de todos los jugadores o de solo uno
0.resetkdr.1.resets.your.kdr=/{0} resetkdr{1} - Reinicia tu KDR
0.purge.player.1.purge.a.player=/{0} purge [player]{1} - Purga a un jugador
0.verify.tag.1.verify.an.unverified.clan=/{0} verify [tag]{1} - Verifica un clan no verificado
0.verify.1.purchase.verification.of.your.clan=/{0} verify{1} - Compra la verificacion de tu clan
0.list.1.lists.all.clans=/{0} list [order by] [asc/desc]{1} - Lista todos los clanes - (ordenado por\: nombre/tamaño/kdr/fundado/activo)
0.profile.1.view.your.clan.s.profile=/{0} profile{1} - Mira el perfil de tu clan
0.profile.tag.1.view.a.clan.s.profile=/{0} profile [tag]{1} - Mira el perfil de un clan
0.lookup.1.lookup.your.info=/{0} lookup{1} - Mira tu informacion
0.lookup.player.1.lookup.a.player.s.info=/{0} lookup [player]{1} - Mira la informacion de un jugador
0.leaderboard.1.view.leaderboard=/{0} leaderboard{1} - Mira el top de clanes
0.alliances.1.view.all.clan.alliances=/{0} alliances{1} - Mira todas las alianzas de los clanes
0.rivalries.1.view.all.clan.rivalries=/{0} rivalries{1} - Mira todas las rivaldiades de los clanes
0.roster.1.view.your.clan.s.member.list=/{0} roster{1} - Mira la lista de miembros de tu clan
0.roster.tag.1.view.a.clan.s.member.list=/{0} roster [tag]{1} - Mira la lista de miembros de un clan
0.vitals.1.view.your.clan.member.s.vitals=/{0} vitals{1} - Mira los signos vitales de los miembros de tu clan
0.coords.1.view.your.clan.member.s.coordinates=/{0} coords{1} - Mira las coordenadas de los miembros de tu clan
0.stats.1.view.your.clan.member.s.stats=/{0} stats{1} - Mira las estadisticas de los miembros de tu clan
0.ally.add.remove.tag.1.add.remove.an.ally.clan=/{0} ally add/remove [tag]{1} - Agrega/quita un clan aliado
0.rival.add.remove.tag.1.add.remove.a.rival.clan=/{0} rival add/remove [tag]{1} - Agrega/quita un clan rival
0.bb.1.display.bulletin.board=/{0} bb{1} - Muestra el tablon de anuncios
0.bb.msg.1.add.a.message.to.the.bulletin.board=/{0} bb [msg]{1} - Agrega un mensaje al tablon de anuncios
0.modtag.tag.1.modify.the.clan.s.tag=/{0} modtag [tag]{1} - Modifica el tag del clan
0.description.description.1.modify.the.clan.s.description=/{0} description [description]{1} - Modifica la descripcion del clan
0.cape.url.1.change.your.clan.s.cape=/{0} cape [url]{1} - Cambia la capa de tu clan
0.invite.player.1.invite.a.player=/{0} invite [player]{1} - Invita a un jugador
0.kick.player.1.kick.a.player.from.the.clan=/{0} kick [player]{1} - Echa a un jugador del clan
0.trust.untrust.player.1.set.trust.level1=/{0} trust [player]{1} - Pon a un miembro como confiable
0.trust.untrust.player.1.set.trust.level2=/{0} untrust [player]{1} - Pon a un miembro como no confiable
0.promote.member.1.promote.a.member.to.leader=/{0} promote [member]{1} - Promueve a un miembro a lider
0.demote.leader.1.demote.a.leader.to.member=/{0} demote [leader]{1} - Degrada a un lider a miembro
0.clanff.allow.block.1.toggle.clan.s.friendly.fire=/{0} clanff allow/block{1} - Maneja el fuego amigo del clan
0.ff.allow.auto.1.toggle.personal.friendly.fire=/{0} ff allow/auto{1} - Maneja tu fuego amigo personal
0.toggle.command=/{0} toggle [{2}]{1} - Maneja configuraciones personales
0.resign.1.resign.from.the.clan=/{0} resign{1} - Abandona tu clan
0.disband.1.disband.your.clan=/{0} disband{1} - Disuelve tu clan
0.trust.setrank=/{0} setrank [player] [rank]{1} - Ponle a un jugador un rango
0.create.tag.name.1.purchase.a.new.clan=/{0} create [tag] [name]{1} - Compra un nuevo clan
0.create.tag.name.1.create.a.new.clan=/{0} create [tag] [name]{1} - Crea un nuevo clan
0.kills=/{0} kills{1} - Mira tu cantidad de asesinatos
0.killsplayer=/{0} kills [player]{1} - Mira la cantidad de asesinatos de un jugador
0.fee.check=/{0} fee check {1}- Revisa si la cuota esta habilitada y de cuanto es
0.fee.set=/{0} fee set [amount]{1} - Pon la cuota de los miembros del clan
0.mostkilled=/{0} mostkilled{1} - Mira la mayor cantidad de asesinatos del server
home-menu=/{0} home{1} - Telertransportate a la casa del clan
home-set-menu=/{0} home set{1} - Fija la casa del clan
home-clear-menu=/{0} home clear{1} - Remueve la casa del clan
home-regroup-menu=/{0} home regroup [me]{1} - Reagrupa a todos los miembros del clan en la casa o en tu ubicacion
example.clan.modtag.4kfo.4l=Ejemplo\: /clan modtag &4K&fo&4L
example.clan.create=Ejemplo\: /clan create &4Kol Knights of the Labyrinth
clan=Clan
allies=Aliados
alliances=alianzas
coords=coordenadas
name=Nombre
distance=Distancia
coords.upper=Coordenadas
world=Mundo
kdr=KDR
members=Miembros
clans.lower=clanes
rival=Rival
civilian=Civil
neutral=Neutral
free.agent=Agente Libre
days=dias
rivals=Rivales
rivalries=rivalidades
online=Conectado
player=Jugador
seen=Visto
leader=lider
roster=lista
trusted=confiado
untrusted=no confiado
deaths=Muertes
weights=Cargas
stats=estadisticas
health=Vida
armor=Armadura
weapons=Armas
food=Comida
vitals=vitalidad
verified=Verificado
unverified=No Verificado
profile=perfil
civilian.abbreviation=Civ
rank=Rango
leaders=Lideres
none=Ninguno
today=Hoy
kills=Asesinatos
mostkilled=Mayor Asesinatos
killcount=Cantidad Asesinatos
attacker=Atacante
victim=Victima
kill.death.ratio=Proporcion Asesinatos/Muertes
nokillsfound=No se han encontrado asesinatos
version.loaded=[{0}] Version {1} cargada
promoted.to.leader={0} ha sido promovido a lider
denied.demotion={0} se ha denegado la degradacion de {1}. Consenso fallido.
membership.invitation={0} ha denegado la invitacion a miembro
joined.the.clan={0} se ha unido al clan
signed.off.request.cancelled={0} ha terminado. {1} pedido cancelado.
clan.deletion={0} denego la eliminacion del clan. Consenso fallido.
has.been.disbanded=El clan {0} ha sido disuelto
denied.the.promotion={0} denego promover a {1}. Consenso fallido.
demoted.back.to.member={0} ha sido degradado a miembro
peace.agreement.denied=El acuerdo de paz con {0} fue denegado
denied.to.make.peace={0} ha denegado hacer paz con {1}
broken.the.rivalry={0} ha roto la rivalidad con {1}
broken.the.rivalry.with={0} ha roto la rivalidad con {1}
the.alliance.was.denied=La alianza con {0} fue denegada
denied.an.alliance={0} ha denegado la alianza con {1}
accepted.an.alliance={0} ha aceptado la alianza con {1}
created.an.alliance={0} ha creado una alianza con {1}
has.joined={0} se ha unido a {1}
proposing.to.end.the.rivalry={0} propone terminar la rivalidad con {1}
proposing.an.alliance={0} propone una alianza con {1}
inviting.you.to.join={0} te esta invitando unirte a {1}
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}
accept.or.deny={0} o {1}
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
mysql.connection.failed=MySQL Connection failed
sqlite.connection.successful=SQLite Connection successful
sqlite.connection.failed= SQLite Connection failed
purging.player.data=purgando informacion de\: {0}
purging.clan=Purgando clan\: {0}
clan.players=Jugadores del clan\: {0}
clans=Clanes\: {0}
banned=Fuiste baneado de usar comandos de clanes
nothing.more.to.see=Nada mas que ver
nothing.to.deny=Nada que denegar
no.leader.permissions=No tienes permisos de lider
you.have.already.voted=Ya has votado
has.voted.to.deny={0} ha votado denegar
nothing.to.accept=Nada que aceptar
view.next.page=Escribe /{0} para ver la pagina siguiente.
voted.to.accept={0} ha votado aceptar
bulletin.board.header={0}* {1}{2} tablon de anuncios
has.been.disbanded.rivalry.ended={0} ha sido disuelto. La rivalidad ha finalizado.
has.been.disbanded.alliance.ended={0} ha sido disuelto. La alianza ha finalizado.
clan.disbanded=Clan Disuelto
1.color.day=1 {0}dia
many.color.days={0}{1} dias
does.not.match=No es un comando de clanes
simpleclans.command.failure=SimpleClans command failure\: {0}
insufficient.permissions=Permisos insuficientes
clan.is.not.verified=El clan no esta verificado
not.a.member.of.any.clan=No eres un miembro de ningun clan
minimum.to.make.alliance=Tu clan debe tener por lo menos {0} para hacer alianzas
no.clan.matched=Ningun clan encontrado
cannot.ally.with.an.unverified.clan=No puedes aliarte con un clan no verificado
your.clans.are.not.allies=Sus clanes no son aliados
has.broken.the.alliance={0} ha roto la alianza con {1}
at.least.one.leader.accept.the.alliance=Por lo menos un lider del otro clan debe estar conectado para hacer la alianza
leaders.have.been.asked.for.an.alliance=Los lideres de {0} fueron consultados para realizar una alianza
your.clans.are.already.allies=Sus clanes ya son aliados
your.clan.cannot.create.rivals=Tu clan no puede crear rivales
min.players.rivalries=Tu clan debe tener por lo menos {0} para crear una rivalidad
this.player.is.already.banned=Este jugador ya esta baneado
player.added.to.banned.list=Jugador agregado a la lista de ban
you.banned=Fuiste baneado de usar comandos de clanes
cape.must.be.png=The cape url must point to a png image
url.error=The URL is retuning an error. Please verify that it is working.
changed.the.clan.cape={0} ha cambiado la capa del clan
clan.wide.friendly.fire.blocked=Fuego amigo para todo el clan bloqueado
clan.wide.friendly.fire.is.allowed=Fuego amigo para todo el clan permitido
only.trusted.players.can.access.clan.coords=Solo jugadores confiables pueden acceder a las coordenadas
you.are.the.only.member.online=Eres el unico miembro conectados
your.clan.tag.cannot.be.longer.than.characters=El tag de tu clan no puede ser mas largo que {0} caracteres
your.clan.tag.must.be.longer.than.characters=El tag de tu clan debe ser mas largo que {0} caracteres
your.tag.cannot.contain.the.following.colors=Tu tag no puede contener los siguientes formatos de colores\: {0}
your.tag.cannot.contain.color.codes=Tu tag no puede contener formato de colores
you.cannot.set.colored.ranks=No puedes poner rangos con color
your.clan.name.cannot.be.longer.than.characters=El nombre de tu clan no puede ser mas largo que {0} caracteres
your.clan.name.must.be.longer.than.characters=El nombre de tu clan debe ser mas largo que {0} caracteres
your.clan.tag.can.only.contain.letters.numbers.and.color.codes=El tag de tu clan solo puede contener letras, numeros y formato de colores
your.clan.name.cannot.contain.color.codes=El nombre de tu clan no puede contener formato de colores
that.tag.name.is.disallowed=Ese nombre de tag no esta permitido
you.must.first.resign=Primero debes abandonar {0}
clan.with.this.tag.already.exists=Un clan con ese tag ya existe
get.your.clan.verified.to.access.advanced.features=Verifica tu clan para acceder a funcionalidades avanzadas
clan.created=Clan {0} creado
not.enough.leaders.online.to.vote.on.demotion=No hay suficientes lideres conectados para votar esta degradacion
leaders.must.be.online.to.vote.on.demotion=Todos los lideres sin contar el que se degradara deben estar conectados para votar
demotion.vote.has.been.requested.from.all.leaders=Voto para degradar fue solicitado por todos los lideres
player.is.not.a.leader.of.your.clan=El jugador no es un lider de tu clan
clan.has.been.disbanded=Clan {0} fue disuelto
clan.disband.vote.has.been.requested.from.all.leaders=Voto para disolver clan fue solicitado por todos los lideres
friendy.fire.is.now.managed.by.your.clan=Fuego amigo es ahora manejado por tu clan
personal.friendly.fire.is.set.to.allowed=Fuego amigo personal fue habilitado
global.friendy.fire.is.now.managed.by.each.clan=Fuego amigo global es ahora manejado por cada clan
global.friendy.fire.is.already.being.managed.by.each.clan=Fuego amigo global ya es manejado por cada clan
global.friendly.fire.is.set.to.allowed=Fuego amigo global fue habilitado
global.friendly.fire.is.already.being.allowed=Fuego amigo global ya esta habilitado
no.player.matched=Ningun jugador encontrado
the.player.doesn.t.not.have.the.permissions.to.join.clans=El jugador no tiene permiso de unirse a clanes
you.cannot.invite.yourself=No puedes invitarte a vos mismo
this.player.is.banned.from.using.clan.commands=Este jugador fue baneado de usar comandos de clanes
the.player.is.already.member.of.another.clan=El jugador es miembro de otro clan
has.been.asked.to.join={0} te ha solicitado unirte a {1}
you.cannot.kick.yourself=No puedes expulsarte a vos mismo
the.player.is.not.a.member.of.your.clan=El jugador no es un miembro de tu clan
you.cannot.kick.another.leader=No puedes expulsar a un lider
has.been.kicked.by={0} fue expulsado por {1}
no.clans.have.been.created=Ningun clan fue creado
total.clans=Clanes Totales\:
legend=Leyenda\:
kill.type.civilian=Tipo de Asesinato\: {0}Civil
no.player.data.found=No se encontro informacion de jugador
kill.type.0=Tipo de Asesinato\: {0}
s.player.info={0} informacion de jugador
clan.0=Clan\: {0}
status.0=Estatus\: {0}
rank.0=Rango\: {0}
kdr.0=KDR\: {0}
deaths.0=Muertes\: {0}
fee.0.value.1=Cuota\: {0}, {1} $
join.date.0=Fecha de union\: {0}
last.seen.0=Ultima vez visto\: {0}
past.clans.0=Clanes anteriores\: {0}
inactive.0=Inactivo\: {0}
kill.totals=Asesinatos Totales\:
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}
name.0=Nombre\: {0}
description.0=Descripcion\: {0}
leaders.0=Lideres\: {0}
members.online.0=Miembros Online\: {0}
allies.0=Aliados\: {0}
rivals.0=Rivales\: {0}
founded.0=Fundado\: {0}
the.member.to.be.promoted.must.be.online=El miembro a ser promovido debe estar online
the.player.does.not.have.the.permissions.to.lead.a.clan=El jugador no tiene permiso de ser lider de un clan
you.cannot.promote.yourself=No puedes promoverte a ti mismo
all.leaders.must.be.online.to.vote.on.this.promotion=Todos los lideres deben estar conectados para votar esta promocion
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.
0.has.resigned={0} ha abandonado
only.trusted.players.can.access.clan.stats=Solo jugadores confiables pueden acceder a las estadisticas del clan
you.cannot.trust.yourself=No puedes ponerte como confiable a vos mismo
leaders.are.already.trusted=Lideres ya son confiables
this.player.is.already.trusted=Este jugador ya es confiable
has.been.given.trusted.status.by={0} le han dado estatus de confiable por {1}
this.player.is.not.banned=Este jugador no esta baneado
player.removed.from.the.banned.list=Jugador desbaneado
you.have.been.unbanned.from.clan.commands=Fuiste desbaneado de usar comandos de clanes
you.cannot.untrust.yourself=No puedes ponerte como no confiable a vos mismo
leaders.cannot.be.untrusted=Lideres no pueden ser no confiables
this.player.is.already.untrusted=Este jugador ya es no confiable
has.been.given.untrusted.status.by={0} le han dado estatus de no confiable por {1}
the.clan.does.not.exist=El clan no existe
the.clan.is.already.verified=El clan ya esta verificado
the.clan.has.been.verified=El clan fue verificado
clan.0.has.been.verified=Clan {0} fue verificado\!
only.trusted.players.can.access.clan.vitals=Solo jugadores confiables pueden ver la vitalidad del clan
total.clan.players.0=Total de jugadores del clan\: {0}
proposing.war={0} esta proponiendo comenzar una guerra con {1}
you.can.only.start.war.with.rivals=Solo puedes comenzar una guerra con rivales
leaders.have.been.asked.to.accept.the.war.request=Los lideres del clan {0} fueron solicitados de aceptar la solicitud de guerra
leaders.asked.to.end.rivalry=Los lideres del clan {0} fueron solicitados de terminar la guerra
proposing.to.end.the.war={0} esta proponiendo terminar la guerra con {1}
clans.already.at.war=Sus clanes ya estan en guerra
clans.not.at.war=Sus clanes no estan en guerra
you.are.at.war={0} esta ahora en guerra con {1}
denied.war.req={0} denego la solicitud de guerra de {1}
you.are.no.longer.at.war={0} no esta mas en guerra con {1}
end.war.denied=Solicitud de terminar la guerra fue denegada por {0}
denied.war.end={0} denego la solicitud de {1} de terminar con la guerra
0.war=/{0} war{1} start/end [tag] - Empezar o terminar una guerra
has.initiated.a.rivalry={0} ha iniciado una rivalidad con {1}
start=start
end=end
add=add
remove=remove
allow=allow
block=block
auto=auto
war=war
0.s.sword.1.2.b.bow.3.4.a.arrow={0}E\=Espada{1}, {2}A\=Arco{3}, {4}F\=Flechas
weapon.S=E
weapon.B=A
weapon.A=F
materials=Materiales
armor.h=H
armor.c=C
armor.l=L
armor.B=B
diamond=diamante
gold=oro
wood=madera
server.announce=Anuncio del Servidor
clan.announce=Anuncio del Clan
leader.announce=Anuncio del Lider
hunger=Hambre
stone=piedra
iron=hierro
the.clan.cannot.be.rivaled=El clan no puede hacerse rival
capeoff=Capa desactivada
capeon=Capa activada
bboff=Tabla de anuncios desactivada
bbon=Tabla de anuncios activada
tagoff=Tag desactivada
tagon=Tag toggled on
depositon=Deposito activado
depositoff=Deposito desactivado
withdrawon=Retiro activado
withdrawoff=Retiro desactivado
feeoff=Cuota desactivada
feeon=Cuota activada
home.base.only.once=La casa del clan solo puede establecerse una vez
now.at.homebase=Ahora estas en la casa del clan {0}
hombase.set=Casa del clan guardada\: {0}
hombase.cleared=Casa del clan removida
hombase.mod.set=Casa del clan {0} puesta en\:
hombase.not.set=Casa del clean no puesta
rival.limit.reached=Llegaste al limite de rivales. You cannot rival any more clans.
you.moved.teleport.cancelled=Te moviste, teletransporte cancelado
waiting.for.teleport.stand.still.for.0.seconds=Esperando para teletransportar, quedate quieto por {0} segundos
no.teleport=No tienes permisos de teletransportarte alli
on=on
off=off
leave=leave
join=join
mute=mute
player.rank.changed=El rango se ha asignado
your.clans.are.already.rivals=Sus clanes ya son rivales
player.got.money=Obtuviste {0} por matar a {1} basado en tu KDR\: {2}
cleared.bb=Has limpieado el tablon de anuncios
clan.balance=Balance del Clan\: {0}
bb.fee.player.kicked={0} fue expulsado por no pagar la cuota
bb.fee.set={0} $ es la cuota
bb.clan.deposit={0} $ fueron depositados
player.clan.deposit=Has depositado {0}
bb.clan.withdraw={0} $ fueron retirados
player.clan.withdraw=Has retirado {0}
clan.bank.not.enough.money=El banco de tu clan no tiene suficientes fondos
your.clans.are.not.rivals=Sus clanes no son rivales
you.cannot.rival.your.own.clan=No puedes ser rival de tu propio clan
the.clan.members.reached.limit=La cantidad de miembros de tu clan llego al limite
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
resign.yes=Yes
resign.no=No
resign.confirmation=Estas seguro que quieres abandonar el clan? {0}
resign.success=Has abandonado el clan exitosamente
player.is.not.a.leader.of.any.clan=El jugador no es lider de ningun clan
you.cannot.demote.the.last.leader=No puedes degradar al ultimo lider
player.successfully.demoted=El jugador fue degradado correctamente
bb.ago= ago
bb.moments=momentos
bb.seconds= segundos
bb.minutes= minutos
bb.one.minute=1 minuto
bb.hours= horas
bb.one.hour=1 hora
bb.days= dias
bb.one.day=1 dia
the.fee.is.0.and.its.current.value.is.1=La cuota es {0} y su valor actual es {1} $
fee.enabled=enabled
fee.disabled=disabled
fee.set=La cuota fue puesta correctamente
max.fee.allowed.is.0=La cuota maxima permitida es {0}
fee.collected={0} $ fueron retirados por la cuota del clan
invalid.fee=El valor insertado no es valido
player.purged=El jugador fue purgado correctamente
upkeep.collected={0} $ fueron retirados por el mantenimiento
balance.is.not.enough.for.upkeep=Los fondos del clan no son suficientes para pagar el mantenimiento ({0} $), deposita el monto para evitar que se disuelva el clan
your.clan.description.must.be.longer.than=La descripcion del clan debe ser mas larga que {0} caracteres
your.clan.description.cannot.be.longer.than=La descripcion del clan no debe ser mas larga que {0} caracteres
description.changed=Cambiaste la descripcion de tu clan exitosamente
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.0.permissions=Permisos del Rango {0}\:
available.rank.permissions=Permisos habilitados para rangos\:
rank.already.exists=El rango ya existe
rank.0.does.not.exist=El rango {0} no existe
rank.created=Rango creado
invalid.permission={0} no es un permiso valido\! Usa uno de estos\: {1}
permission.0.added.to.rank.1=Permiso {0} agregado al rango {1}
permission.0.removed.from.rank.1=Permiso {0} removido del rango {1}
rank.0.deleted=Rango {0} eliminado
usage.0.rank.create=Uso\: /{0} rank create [name]
usage.0.rank.setdisplayname=Uso\: /{0} rank setdisplayname [rank] [displayname], el nombre de muetra puede ser varias palabras y tener colores
usage.0.rank.delete=Uso\: /{0} rank delete [rank]
usage.0.rank.permissions=Uso\: /{0} rank permissions [rank] [add/remove] [permission]
usage.0.rank.assign=Uso\: /{0} rank assign [player] [rank]
usage.0.rank.unassign=Uso\: /{0} rank unassign [player]
usage.0.rank=Uso\: /{0} rank [create/assign/unassign/delete/list/setdisplayname/permissions]
clans.ranks=Rangos del Clan\:
ranks.list.item={0}\# {1} ({2})
no.ranks=Ningun rango fue creado
rank.no.permissions=Este rango no tiene ningun permiso
player.unassigned.from.rank=Jugador desasignado del rango
rank.command=rank
0.rank.create.rank.1.create.rank=/{0} rank create [rank]{1} - Crea un rango
0.rank.assign.player.rank.1.assign.rank.to.player=/{0} rank assign [player] [rank]{1} - Asigna a un miembro un rango
0.rank.unassign.player.1.unassign.player.from.rank=/{0} rank unassign [player]{1} - Desasigna a un miembro de un rango
0.rank.delete.rank.1.delete.rank=/{0} rank delete [rank]{1} - Elimina un rango
0.rank.list.1.list.ranks=/{0} rank list{1} - Lista todos los rangos
0.rank.setdisplayname.rank.displayname.1.set.rank.displayname=/{0} rank setdisplayname [rank] [displayname]{1} - Pon el nombre de muestra de un rango
0.rank.permissions.1.list.available.permissions=/{0} rank permissions{1} - Lista los permisos disponibles
0.rank.permissions.rank.1.list.rank.permissions=/{0} rank permissions [rank]{1} - Lista los permisos de un rango
0.rank.permissions.rank.add.permission.1.add.a.permission.to.rank=/{0} rank permissions [rank] add [permission]{1} - Agrega un permiso a un rango
0.rank.permissions.rank.remove.permission.1.remove.a.permission.from.rank=/{0} rank permissions [rank] remove [permission]{1} - Quita el permiso de un 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=Deposito no permitido
withdraw.not.allowed=Retiro no permitido
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
0.message.1.send.a.message.to.clan.chat=/{0} [message]{1} - Envia un mensaje al chat de tu clan
@@ -0,0 +1,506 @@
description.command=description
create.command=créer
list.command=liste
profile.command=profile
roster.command=membres
lookup.command=recherche
leaderboard.command=classement
alliances.command=alliances
rivalries.command=rivalités
vitals.command=vitaux
coords.command=coordonnées
stats.command=statistiques
ally.command=allie
rival.command=rival
bb.command=bb
cape.command=cape
modtag.command=modtag
toggle.command=basculer
invite.command=inviter
kick.command=expulser
bank.command=banque
fee.command=frais
purge.command=purge
trust.command=confiance
untrust.command=méfiance
promote.command=promouvoir
demote.command=rétrograder
clanff.command=clanff
ff.command=ff
resign.command=résigner
disband.command=dissoudre
verify.command=vérifier
ban.command=bannir
unban.command=dé-bannir
reload.command=recharge
globalff.command=globalff
kills.command=tue
mostkilled.command=plustué
war.command=guerre
home.command=domicile
setrank.command=définitlerang
place.command=place
resetkdr.command=réinitialisationkdr
usage.description=Utilisation\: /{0} description [description]
usage.resetkdr=Utilisation\: /{0} resetkdr [all/player]
usage.clan.alliances=Utilisation\: /{0} alliances
usage.ally=Utilisation\: /{0} ally add/remove [tag]
usage.ban.unban=Utilisation\: /{0} ban/unban [player]
usage.rival=Utilisation\: /{0} rival add/remove [tag]
usage.war=Utilisation\: /{0} war start/end [tag]
usage.cape.url=Utilisation\: /{0} cape [url]
usage.setrank=Utilisation\: /{0} setrank [player] [rank], le rang peut être de plusieurs mots et contient des codes couleur &f
usage.clanff=Utilisation\: /{0} clanff allow/block
usage.0.coords=Utilisation\: /{0} coords
usage.create.tag=Utilisation\: /{0} create [tag] [name]
usage.demote.leader=Utilisation\: /{0} demote [leader]
usage.0.disband=Utilisation\: /{0} disband
usage.0.ff.allow.auto=Utilisation\: /{0} ff allow/auto
usage.0.globalff.allow.auto=Utilisation\: /{0} globalff allow/auto
usage.0.permissions.player=Utilisation\: /{0} permissions [clan] add/remove [permission]
usage.0.invite.player=Utilisation\: /{0} invite [player]
usage.kick.player=Utilisation\: /{0} kick [player]
usage.bank=Utilisation\: /{0} bank withdraw/deposit/status [amount]
usage.fee=Utilisation\: /{0} fee check/set [amount]
usage.purge=Utilisation \: /{0} purge [player]
usage.0.modtag.tag=Utilisation\: /{0} modtag [tag]
usage.list=Utilisation\: /{0} list [name/size/kdr/founded/active] [asc/desc]
usage.lookup.tag=Utilisation\: /{0} lookup [tag]
usage.0.profile.tag=Utilisation\: /{0} profile [tag]
usage.0.promote.member=Utilisation\: /{0} promote <member>
usage.0.rivalries=Utilisation\: /{0} rivalries
usage.0.roster.tag=Utilisation\: /{0} roster [tag]
usage.0.stats=Utilisation\: /{0} stats
usage.0.trust.player=Utilisation\: /{0} trust [player]
usage.0.untrust.player=Utilisation\: /{0} untrust [player]
usage.0.verify.tag=Utilisation\: /{0} verify [tag]
usage.0.vitals=Utilisation\: /{0} vitals
usage.0.place=Utilisation\: /{0} place [player] [tag]
usage.0.leaderboard=Utilisation\: /{0} leaderboard
0.reload.1.reload.configuration=/{0} reload{1} - Recharge la configuration
0.globalff.allow.auto.1.set.global.friendly.fire=/{0} globalff allow/auto {1} - Définit le feu allié mondialement
0.place=/{0} place [player] [tag]{1} - Place un joueur dans un clan
0.ban.unban.player.1.ban.unban.a.player=/{0} ban/unban [player]{1} - Banni/débanni un joueur
0.hometp.clan.1.tp.home.a.clan=/{0} home tp [clan]{1} - Téléporte à toutes les bases de clans
0.disband.tag.1.disband.a.clan=/{0} disband [tag]{1} - Dissoudre un clan
0.resetkdr.1.resets.kdr=/{0} resetkdr player/all{1} - Réinitialise la KDR pour tous les joueurs ou juste l''un d''entre eux
0.resetkdr.1.resets.your.kdr=/{0} resetkdr{1} - Réinitialise votre KDR
0.purge.player.1.purge.a.player=/{0} purge [player]{1} - Purge un joueur
0.verify.tag.1.verify.an.unverified.clan=/{0} verify [tag]{1} - Vérifier un clan non vérifié
0.verify.1.purchase.verification.of.your.clan=/{0} verify {1} - Acheter la vérification de votre clan
0.list.1.lists.all.clans=/{0} list [order by] [asc/desc]{1} - Liste tous les clans - (Par ordre\: nom/taille/kdr/fondé/actif)
0.profile.1.view.your.clan.s.profile=/{0} profile{1} - Voir le profile de votre clan
0.profile.tag.1.view.a.clan.s.profile=/{0} profile [tag]{1} - Voir le profile d''un clan
0.lookup.1.lookup.your.info=/{0} lookup{1} - Rechercher vos informations
0.lookup.player.1.lookup.a.player.s.info=/{0} lookup [player]{1} - Rechercher les informations d''un joueur
0.leaderboard.1.view.leaderboard=/{0} leaderboard{1} - Voir le classement
0.alliances.1.view.all.clan.alliances=/{0} alliances{1} - Voir toutes les alliances de clan
0.rivalries.1.view.all.clan.rivalries=/{0} rivalries{1} - Voir toutes les rivalités du clan
0.roster.1.view.your.clan.s.member.list=/{0} roster{1} - Voir la liste des membres de votre clan
0.roster.tag.1.view.a.clan.s.member.list=/{0} roster [tag]{1} - Voir une liste de membres d''un clan
0.vitals.1.view.your.clan.member.s.vitals=/{0} vitals{1} - Voir les signes vitaux d''un membre du clan
0.coords.1.view.your.clan.member.s.coordinates=/{0} coords{1} - Voir les coordonnées d''un membre de votre clan
0.stats.1.view.your.clan.member.s.stats=/{0} stats{1} - Voir les statistiques d''un membre de votre clan
0.ally.add.remove.tag.1.add.remove.an.ally.clan=/{0} ally add/remove [tag]{1} - Ajouter/supprimer un clan allié
0.rival.add.remove.tag.1.add.remove.a.rival.clan=/{0} rival add/remove [tag]{1} - Ajouter/supprimer un clan rival
0.bb.1.display.bulletin.board=/{0} bb{1} - Afficher le tableau d''affichage
0.bb.msg.1.add.a.message.to.the.bulletin.board=/{0} bb [msg]{1} - Ajouter un message au tableau d''affichage
0.modtag.tag.1.modify.the.clan.s.tag=/{0} modtag [tag]{1} - Modifier le tag du clan
0.description.description.1.modify.the.clan.s.description=/{0} description [description]{1} - Modifier la description du clan
0.cape.url.1.change.your.clan.s.cape=/{0} cape [url]{1} - Changer le cap de votre clan
0.invite.player.1.invite.a.player=/{0} invite [player]{1} - Inviter un joueur
0.kick.player.1.kick.a.player.from.the.clan=/{0} kick [player]{1} - Expulser un joueur du clan
0.trust.untrust.player.1.set.trust.level1=/{0} trust [player]{1} - Définir le membre comme étant de confiance
0.trust.untrust.player.1.set.trust.level2=/{0} untrust [player]{1} - Définir le membre comme n''étant pas de confiance
0.promote.member.1.promote.a.member.to.leader=/{0} promote [member]{1} - Promouvoir un joueur en chef
0.demote.leader.1.demote.a.leader.to.member=/{0} demote [leader]{1} - Rétrograder un chef en membre
0.clanff.allow.block.1.toggle.clan.s.friendly.fire=/{0} clanff allow/block{1} - Définir le feu allié du clan
0.ff.allow.auto.1.toggle.personal.friendly.fire=/{0} clanff allow/block{1} - Définir le feu allié personnel
0.toggle.command=/{0} toggle [{2}]{1} - Définir les paramètres personnels
0.resign.1.resign.from.the.clan=/{0} resign{1} - Démissionner d''un clan
0.disband.1.disband.your.clan=/{0} disband {1} - Dissoudre votre clan
0.trust.setrank=/{0} setrank [player] [rank]{1} - Donne un rang à un joueur
0.create.tag.name.1.purchase.a.new.clan=/{0} create [tag] [name]{1} - Acheter un nouveau clan
0.create.tag.name.1.create.a.new.clan=/{0} create [tag] [name]{1} - Créer un nouveau clan
0.kills=/{0} kills{1} - Voir votre nombre de tués
0.killsplayer=/{0} kills [player]{1} - Voir le nombre de tués d''un joueur
0.fee.check=/{0} fee check {1}- Vérifier que les frais soient activés et de combien sont-ils
0.fee.set=/{0} fee set [amount]{1} - Définit la cotisation du membre du clan
0.mostkilled=/{0} mostkilled{1} - Voir les plus tués du serveur
home-menu=/{0} home{1} - Téléporte au domicile du clan
home-set-menu=/{0} home set{1} - Définir le domicile du clan
home-clear-menu=/{0} home set{1} - Effacer le domicile du clan
home-regroup-menu=/{0} home regroup [me]{1} - Regroupe tous les membres au domicile du clan ou à vous
example.clan.modtag.4kfo.4l=Exemple\: /clan modtag &4K&fo&4L
example.clan.create=Exemple\: /clan create &4Kol Knights of the Labyrinth
clan=Clan
allies=Alliés
alliances=alliances
coords=coordonnées
name=Nom
distance=Distance
coords.upper=Coordonnées
world=Monde
kdr=KDR
members=Membres
clans.lower=clans
rival=Rival
civilian=Civil
neutral=Neutre
free.agent=Agent Libre
days=jours
rivals=Rivaux
rivalries=rivalités
online=En ligne
player=Joueur
seen=Vu
leader=chef
roster=membres
trusted=fiable
untrusted=non fiable
deaths=Morts
weights=Poids
stats=statistiques
health=Santé
armor=Armure
weapons=Armes
food=Nourriture
vitals=vitaux
verified=Vérifié
unverified=Non vérifié
profile=profil
civilian.abbreviation=Civ
rank=Rang
leaders=Chefs
none=Aucun
today=Aujourd'hui
kills=Tue
mostkilled=Plus Tués
killcount=Nombre de Tués
attacker=Attaquant
victim=Victime
kill.death.ratio=Ratio de Tué/Mort
nokillsfound=Pas de Morts Trouvés
version.loaded=[{0}] Version {1} chargée
promoted.to.leader={0} a été promu chef
denied.demotion={0} a refusé la rétrogradation de {1}. Le consensus a échoué.
membership.invitation={0} a refusé l''invitation à rejoindre
joined.the.clan={0} a rejoint le clan
signed.off.request.cancelled={0} s''est déconnecté. Demande {1} annulée.
clan.deletion={0} a refusé la suppression du clan. Le consensus a échoué.
has.been.disbanded=Le clan {0} a été dissous
denied.the.promotion={0} a refusé la promotion de {1}. Le consensus a échoué.
demoted.back.to.member={0} a été rétrogradé en tant que membre
peace.agreement.denied=L''accord de paix avec {0} a été refusé
denied.to.make.peace={0} a refusé de faire la paix avec {1}
broken.the.rivalry={0} a rompu la rivalité avec {1}
broken.the.rivalry.with={0} a rompu la rivalité avec {1}
the.alliance.was.denied=L''alliance avec {0} a été refusée
denied.an.alliance={0} a refusé une alliance avec {1}
accepted.an.alliance={0} a accepté une alliance avec {1}
created.an.alliance={0} a créé une alliance avec {1}
has.joined={0} a rejoint {1}
proposing.to.end.the.rivalry={0} propose de mettre fin à la rivalité avec {1}
proposing.an.alliance={0} propose une alliance avec {1}
inviting.you.to.join={0} vous invite à rejoindre {1}
asking.for.the.deletion={0} demande la suppression du clan
asking.for.the.promotion={0} demande la promotion de {1}
asking.for.the.demotion={0} demande la rétrogradation de {1}
accept.or.deny={0} ou {1}
not.sufficient.money=Vous n'avez pas assez d'argent sur votre compte
account.has.been.debited=Votre compte a été débité {0}
mysql.connection.successful=MySQL Connexion réussie
mysql.connection.failed=MySQL Échec de la connexion
sqlite.connection.successful=SQLite Connexion réussie
sqlite.connection.failed= SQLite Échec de la connexion
purging.player.data=purge les données du joueur\: {0}
purging.clan=Purge du clan\: {0}
clan.players=Joueurs du Clan\: {0}
clans=Clans\: {0}
banned=Vous êtes banni des commandes de clan
nothing.more.to.see=Rien de plus à voir
nothing.to.deny=Rien à refuser
no.leader.permissions=Vous n'avez pas les permissions de chef
you.have.already.voted=Vous avez déjà voté
has.voted.to.deny={0} a voté pour refuser
nothing.to.accept=Rien à accepter
view.next.page=Tapez /{0} pour voir la page suivante.
voted.to.accept={0} a voté pour accepter
bulletin.board.header={0}* {1}{2} tableau d’affichage
has.been.disbanded.rivalry.ended={0} a été dissous. Rivalité terminée.
has.been.disbanded.alliance.ended={0} a été dissous. L''alliance est terminée.
clan.disbanded=Clan Dissous
1.color.day=1 {0}jour
many.color.days={0}{1} jours
does.not.match=Ne correspond pas à une commande de clan
simpleclans.command.failure=Échec de la commande SimpleClans\: {0}
insufficient.permissions=Permissions insuffisantes
clan.is.not.verified=Le clan n'est pas vérifié
not.a.member.of.any.clan=Vous n'êtes membre d'aucun clan
minimum.to.make.alliance=Votre clan doit avoir au moins {0} joueurs pour faire des alliances
no.clan.matched=Aucun clan correspondant
cannot.ally.with.an.unverified.clan=Vous ne pouvez pas vous allier avec un clan non vérifié
your.clans.are.not.allies=Vos clans ne sont pas alliés
has.broken.the.alliance={0} a rompu l''alliance avec {1}
at.least.one.leader.accept.the.alliance=Au moins un chef de l'alliance doit être en ligne pour accepter l'alliance
leaders.have.been.asked.for.an.alliance={0} chefs ont été consulté pour une alliance
your.clans.are.already.allies=Vos clans sont déjà alliés
your.clan.cannot.create.rivals=Votre clan ne peut pas créer de rivaux
min.players.rivalries=Votre clan doit avoir au moins {0} joueurs pour faire des rivalités
this.player.is.already.banned=Ce joueur est déjà banni
player.added.to.banned.list=Joueur ajouté à la liste des bannis
you.banned=Tu as été banni à partir d'une commande de clan
cape.must.be.png=L'url du cap doit pointer vers une image png
url.error=L'URL retourne une erreur. Veuillez vérifiez qu'elle fonctionne.
changed.the.clan.cape={0} a changé le cap du clan
clan.wide.friendly.fire.blocked=Tir allié de clan bloqué
clan.wide.friendly.fire.is.allowed=Tir allié de clan autorisé
only.trusted.players.can.access.clan.coords=Seuls les joueurs de confiance peuvent accéder aux coordonnées du clan
you.are.the.only.member.online=Vous êtes le seul membre en ligne
your.clan.tag.cannot.be.longer.than.characters=Votre tag de clan ne peut pas dépasser {0} caractères
your.clan.tag.must.be.longer.than.characters=Votre tag de clan doit être plus grand que {0} caractères
your.tag.cannot.contain.the.following.colors=Votre tag de clan ne peut pas contenir les couleurs suivantes\: {0}
your.tag.cannot.contain.color.codes=Votre tag ne peut pas contenir des codes de couleur
you.cannot.set.colored.ranks=Vous ne pouvez pas définir de rangs colorés
your.clan.name.cannot.be.longer.than.characters=Votre tag de clan ne peut pas dépasser {0} caractères
your.clan.name.must.be.longer.than.characters=Le nom d''utilisateur doit être composé de plus de {0} caractères
your.clan.tag.can.only.contain.letters.numbers.and.color.codes=Le tag de votre clan ne peut contenir que des lettres, des chiffres et des codes de couleur
your.clan.name.cannot.contain.color.codes=Votre tag ne peut pas contenir des codes de couleur
that.tag.name.is.disallowed=Ce nom de tag n'est pas autorisé
you.must.first.resign=Vous devez d''abord démissionner de {0}
clan.with.this.tag.already.exists=Un clan avec cette étiquette existe déjà
get.your.clan.verified.to.access.advanced.features=Faites vérifier votre clan pour accéder aux fonctionnalités avancées
clan.created=Clan {0} créé
not.enough.leaders.online.to.vote.on.demotion=Il n'y a pas assez de chefs en ligne pour voter sur cette rétrogradation
leaders.must.be.online.to.vote.on.demotion=Tous les chefs autres que le rétrogradé doivent être en ligne pour voter sur cette rétrogradation
demotion.vote.has.been.requested.from.all.leaders=Le vote de rétrogradation a été demandé par tous les chefs
player.is.not.a.leader.of.your.clan=Le joueur n'est pas un chef de votre clan
clan.has.been.disbanded=Le clan {0} a été dissous
clan.disband.vote.has.been.requested.from.all.leaders=Le vote de dissolution du clan a été demandé par tous les chefs
friendy.fire.is.now.managed.by.your.clan=Le feu d'allié est maintenant géré par votre clan
personal.friendly.fire.is.set.to.allowed=Le feu personnel est configuré sur autorisé
global.friendy.fire.is.now.managed.by.each.clan=Le feu d'allié est maintenant géré par chaque clan
global.friendy.fire.is.already.being.managed.by.each.clan=Le feu d'allié est déjà géré par chaque clan
global.friendly.fire.is.set.to.allowed=Le feu d'allié global est configuré sur autorisé
global.friendly.fire.is.already.being.allowed=Le feu d'allié global est déjà configuré sur autorisé
no.player.matched=Aucun joueur correspondant
the.player.doesn.t.not.have.the.permissions.to.join.clans=Le joueur n'a pas les permissions pour rejoindre les clans
you.cannot.invite.yourself=Vous ne pouvez pas vous invitez vous-même
this.player.is.banned.from.using.clan.commands=Ce joueur n'est pas autorisé à utiliser les commandes du clan
the.player.is.already.member.of.another.clan=Le joueur est déjà membre d'un autre clan
has.been.asked.to.join={0} a été demandé à rejoindre {1}
you.cannot.kick.yourself=Vous ne pouvez pas vous expulsez vous-même
the.player.is.not.a.member.of.your.clan=Le joueur n'est pas un membre de votre clan
you.cannot.kick.another.leader=Vous ne pouvez pas expulser un autre chef
has.been.kicked.by={0} a été expulsé par {1}
no.clans.have.been.created=Aucun clan n'a été créé
total.clans=Total des clans\:
legend=Légende\:
kill.type.civilian=Type de Tué\: {0}Civil
no.player.data.found=Pas de données de joueur trouvées
kill.type.0=Type de Tué\: {0}
s.player.info=Information du joueur {0}
clan.0=Clan\: {0}
status.0=Statuts\: {0}
rank.0=Rang\: {0}
kdr.0=KDR\: {0}
deaths.0=Morts\: {0}
fee.0.value.1=Frais\: {0}, {1} $
join.date.0=Date d''inscription\: {0}
last.seen.0=Vu pour la dernière fois\: {0}
past.clans.0=Clans Précédents\: {0}
inactive.0=Inactif\: {0}
kill.totals=Total des tués\:
clan.commands=commandes de clan
you.can.only.modify.the.color.and.case.of.the.tag=Vous ne pouvez seulement modifier la couleur et le tag
tag.changed.to.0=Tag changé à {0}
name.0=Nom\: {0}
description.0=Description\: {0}
leaders.0=Chefs\: {0}
members.online.0=Membres En Ligne\: {0}
allies.0=Alliés\: {0}
rivals.0=Rivaux\: {0}
founded.0=Fondé\: {0}
the.member.to.be.promoted.must.be.online=Le membre à promouvoir doit être en ligne
the.player.does.not.have.the.permissions.to.lead.a.clan=Le joueur n'a pas la permission de diriger un clan
you.cannot.promote.yourself=Vous ne pouvez pas vous promouvoir vous-même
all.leaders.must.be.online.to.vote.on.this.promotion=Tous les chefs doivent être en ligne pour voter sur cette promotion
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é
only.trusted.players.can.access.clan.stats=Seuls les joueurs de confiance peuvent accéder aux statistiques du clan
you.cannot.trust.yourself=Vous ne pouvez pas vous faire confiance
leaders.are.already.trusted=Les chefs sont déjà de confiance
this.player.is.already.trusted=Ce lecteur est déjà de confiance
has.been.given.trusted.status.by={0} a reçu un statut de confiance par {1}
this.player.is.not.banned=Ce joueur n'est pas banni
player.removed.from.the.banned.list=Joueur retiré de la liste des joueurs bannis
you.have.been.unbanned.from.clan.commands=Vous avez été dé-banni des commandes du clan
you.cannot.untrust.yourself=Vous ne pouvez pas vous défaire de votre confiance
leaders.cannot.be.untrusted=Les chefs ne peuvent pas être défaits de leur confiance
this.player.is.already.untrusted=Ce lecteur n'est déjà pas fiable
has.been.given.untrusted.status.by={0} a reçu un statut de non-confiance par {1}
the.clan.does.not.exist=Le clan n'existe pas
the.clan.is.already.verified=Le clan est déjà vérifié
the.clan.has.been.verified=Le clan a été vérifié
clan.0.has.been.verified=Le clan {0} a été vérifié \!
only.trusted.players.can.access.clan.vitals=Seuls les joueurs de confiance peuvent accéder aux signes vitaux du clan
total.clan.players.0=Total de joueurs du clans\: {0}
proposing.war={0} est en train de proposer de commencer une guerre avec {1}
you.can.only.start.war.with.rivals=Vous ne pouvez commencer la guerre qu'avec des rivaux
leaders.have.been.asked.to.accept.the.war.request={0} chefs ont été invités à accepter la demande de guerre
leaders.asked.to.end.rivalry={0} chefs ont été invités à mettre fin à la guerre
proposing.to.end.the.war={0} est en train de proposer de terminer une guerre avec {1}
clans.already.at.war=Vos clans sont déjà en guerre
clans.not.at.war=Vos clans ne sont pas en guerre
you.are.at.war={0} est maintenant en guerre avec {1}
denied.war.req={0} a refusé la demande de guerre envoyée par {1}
you.are.no.longer.at.war={0} n’est plus en guerre avec {1}
end.war.denied=La demande pour mettre fin à la guerre a été refusée par {0}
denied.war.end={0} a refusé la demande de {1} pour mettre fin à la guerre
0.war=/{0} war{1} start/end [tag] - Démarrer ou terminer une guerre
has.initiated.a.rivalry={0} a initié une rivalité avec {1}
start=début
end=fin
add=ajoute
remove=supprime
allow=autorise
block=bloque
auto=automatique
war=guerre
0.s.sword.1.2.b.bow.3.4.a.arrow={0}S\=Épée{1}, {2}B\=Arc{3}, {4}A\=Flèches
weapon.S=S
weapon.B=B
weapon.A=A
materials=Matériels
armor.h=H
armor.c=C
armor.l=L
armor.B=B
diamond=diamant
gold=or
wood=bois
server.announce=Annonce du serveur
clan.announce=Annonce du Clan
leader.announce=Annonce du Chef
hunger=Faim
stone=pierre
iron=fer
the.clan.cannot.be.rivaled=Le clan ne peut pas être rivalisé
capeoff=Cape désactivée
capeon=Cape activée
bboff=BB désactivé
bbon=BB activé
tagoff=Tag désavtivé
tagon=Tag activé
depositon=Dépôt activé
depositoff=Dépôt désactivé
withdrawon=Retrait activé
withdrawoff=Retrait désactivé
feeoff=Frais désactivés
feeon=Frais activés
home.base.only.once=Le domicile ne peut être défini qu'une seule fois
now.at.homebase=Vous êtes maintenant à la base de {0}
hombase.set=Domicile du clan est fixée à \: {0}
hombase.cleared=Domicile du clan effacé
hombase.mod.set=Le domicile de {0} a été définie à\:
hombase.not.set=Domicile non défini
rival.limit.reached=Vous avez atteint la limite de rivaux. Vous ne pouvez plus rivaliser avec aucun autre clan.
you.moved.teleport.cancelled=Vous avez bougé, téléportation annulée
waiting.for.teleport.stand.still.for.0.seconds=En attente de téléportation, restez immobile pendant {0} secondes
no.teleport=Vous n’êtes pas autorisé à vous téléporter à cet endroit
on=on
off=off
leave=quitter
join=rejoindre
mute=rendre muet
player.rank.changed=Le rang a été défini
your.clans.are.already.rivals=Vos clans sont déjà rivaux
player.got.money=Vous avez reçu {0} pour avoir tué {1} selon votre KDR \: {2}
cleared.bb=Tableau d'affichage effacé
clan.balance=Solde du clan\: {0}
bb.fee.player.kicked={0} a été expulsé pour ne pas avoir payé les frais
bb.fee.set={0} $ est le montant des frais
bb.clan.deposit={0} $ ont été déposés
player.clan.deposit=Vous avez déposé {0}
bb.clan.withdraw={0} $ ont été retirés
player.clan.withdraw=Vous retirez {0}
clan.bank.not.enough.money=Votre banque de clans n'a pas assez d'argent
your.clans.are.not.rivals=Vos clans ne sont pas rivaux
you.cannot.rival.your.own.clan=Vous ne pouvez pas rivaliser avec votre propre clan
the.clan.members.reached.limit=La limite des membres de votre clan a été atteinte
you.have.reseted.your.kdr=Vous avez réinitialisé votre KDR
you.have.reseted.0.kdr=Vous avez réinitialisé la KDR de {0}
you.have.reseted.kdr.of.all.players=Vous avez réinitialisé la KDR de tous les joueurs
resign.yes=Oui
resign.no=Non
resign.confirmation=Êtes-vous sûr de vouloir démissionner ? {0}
resign.success=Vous avez démissionné de votre clan avec succès
player.is.not.a.leader.of.any.clan=Le joueur n'est un chef d'aucun clan
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
the.fee.is.0.and.its.current.value.is.1=Les frais sont de {0} et la valeur actuelle est de {1}$
fee.enabled=activé
fee.disabled=désactivé
fee.set=Les frais ont été définis avec succès
max.fee.allowed.is.0=Les frais maximaux autorisés sont de {0}
fee.collected={0} $ ont été retirés pour les frais de clan
invalid.fee=La valeur que vous avez insérée n'est pas valide
player.purged=Le joueur a bien été purgé
upkeep.collected={0} $ ont été retirés pour l''entretien
balance.is.not.enough.for.upkeep=Le solde du clan n''est pas suffisant pour payer l''entretien ({0} $), déposez le montant pour éviter d''être dissous
your.clan.description.must.be.longer.than=La description de votre clan doit faire plus de {0} caractères
your.clan.description.cannot.be.longer.than=La description de votre clan doit faire plus de {0} caractères
description.changed=Vous avez modifié avec succès la description du clan
no.description=Sans description
the.player.must.wait.0.before.joining.your.clan.again=Ce joueur doit attendre {0} minute(s) avant de rejoindre votre clan à nouveau
disabled.command=Commande désactivée
rank.displayname.updated=Le nom d'affichage du rang a été mis à jour \!
rank.0.permissions=Permissions du rang {0}\:
available.rank.permissions=Permissions disponibles pour les rangs\:
rank.already.exists=Le rang existe déjà
rank.0.does.not.exist=Le rang {0} n''existe pas
rank.created=Rang créé
invalid.permission={0} n''est pas une permission valide \! Utilisez une de celles-ci\: {1}
permission.0.added.to.rank.1=Permission {0} ajoutée au rang {1}
permission.0.removed.from.rank.1=Permission {0} supprimée du rang {1}
rank.0.deleted=Rang {0} supprimé
usage.0.rank.create=Utilisation\: /{0} rank create [name]
usage.0.rank.setdisplayname=Utilisation\: /{0} rank setdisplayname [rank] [displayname], les noms d''affichages peuvent contenir plusieurs morts et contenir plusieurs codes couleur
usage.0.rank.delete=Utilisation\: /{0} rank delete [rank]
usage.0.rank.permissions=Utilisation\: /{0} rank permissions [rank] [add/remove] [permission]
usage.0.rank.assign=Utilisation\: /{0} rank assign [player] [rank]
usage.0.rank.unassign=Utilisation\: /{0} rank unassign [player]
usage.0.rank=Utilisation\: /{0} rank [create/assign/unassign/delete/list/setdisplayname/permissions]
clans.ranks=Rangs du clan\:
ranks.list.item={0}\# {1} ({2})
no.ranks=Aucun rang n'a été créé
rank.no.permissions=Ce rang n'a aucune permission
player.unassigned.from.rank=Joueur retiré d'un rang
rank.command=rang
0.rank.create.rank.1.create.rank=/{0} rank create [rank]{1} - Créer un rang
0.rank.assign.player.rank.1.assign.rank.to.player=/{0} rank assign [player] [rank]{1} - Assigner un rang à un membre
0.rank.unassign.player.1.unassign.player.from.rank=/{0} rank unassign [player]{1} - Retire un rang à un membre
0.rank.delete.rank.1.delete.rank=/{0} rank delete [rank]{1} - Supprimer un rang
0.rank.list.1.list.ranks=/{0} rank list{1} - Liste des rangs
0.rank.setdisplayname.rank.displayname.1.set.rank.displayname=/{0} rank setdisplayname [rank] [displayname]{1} - Définir le nom d''affichage du rang
0.rank.permissions.1.list.available.permissions=/{0} rank permissions{1} - Liste les permissions disponibles
0.rank.permissions.rank.1.list.rank.permissions=/{0} rank permissions [rank]{1} - Listes les permissions d''un rang
0.rank.permissions.rank.add.permission.1.add.a.permission.to.rank=/{0} rank permissions [rank] add [permission]{1} - Ajoute une permission à un rang
0.rank.permissions.rank.remove.permission.1.remove.a.permission.from.rank=/{0} rank permissions [rank] remove [permission]{1} - Retire une permission d''un rang
you.must.be.0.or.have.the.permission.1.to.use.this=Vous devez être {0} ou votre chef doit donner à votre rang la permission {1} pour utiliser ceci
deposit.not.allowed=Le dépôt n'est pas autorisé
withdraw.not.allowed=Le retrait n'est pas autorisé
resign.request.cancelled=Demande de démission annulée
promotion.vote.has.been.requested.from.all.leaders=Le vote de promotion a été demandé par tous les chefs
0.message.1.send.a.message.to.clan.chat=/{0} [message]{1} - Envoier un message dans le chat de votre clan
@@ -0,0 +1,351 @@
usage.resetkdr=Használat\: /{0} resetkdr [all/player]
usage.clan.alliances=Használat\: /{0} alliances
usage.ally=Használat\: /{0} ally add/remove [címke]
usage.ban.unban=Használat\: /{0} ban/unban [játékos]
usage.rival=Használat\: /{0} rival add/remove [címke]
usage.war=Használat\: /{0} war start/end [címke]
usage.cape.url=Használat\: /{0} cape [url]
usage.setrank=Használat\: /{0} setrank [játékos] [rang], rangsor több világot is tartalmazhat és tartalmazhat &f színkódokat
usage.clanff=Használat\: /{0} clanff allow/block
usage.0.coords=Használat\: /{0} coords
usage.create.tag=Használat\: /{0} create [címke] [név]
usage.demote.leader=Használat\: /{0} demote [vezető]
usage.0.disband=Használat\: /{0} disband
usage.0.ff.allow.auto=Használat\: /{0} ff allow/auto
usage.0.globalff.allow.auto=Használat\: /{0} globalff allow/auto
usage.0.permissions.player=Használat\: /{0} permissions [klán] add/remove [jog]
usage.0.invite.player=Használat\: /{0} invite [játékos]
usage.kick.player=Használat\: /{0} kick [játékos]
usage.bank=Használat\: /{0} bank withdraw/deposit/status [mennyiség]
usage.0.modtag.tag=Használat\: /{0} modtag [címke]
usage.lookup.tag=Használat\: /{0} lookup [címke]
usage.0.profile.tag=Használat\: /{0} profile [címke]
usage.0.promote.member=Használat\: /{0} promote <tag>
usage.0.rivalries=Használat\: /{0} rivalries
usage.0.roster.tag=Használat\: /{0} roster [címke]
usage.0.stats=Használat\: /{0} stats
usage.0.trust.player=Használat\: /{0} trust [játékos]
usage.0.untrust.player=Használat\: /{0} untrust [játékos]
usage.0.verify.tag=Használat\: /{0} verify [címke]
usage.0.vitals=Használat\: /{0} vitals
usage.0.place=Használat\: /{0} place [player] [címke]
usage.0.leaderboard=Használat\: /{0} leaderboard
0.reload.1.reload.configuration=/{0} reload{1} - Konfiguráció újratöltése
0.globalff.allow.auto.1.set.global.friendly.fire=/{0} globalff allow/auto {1} - Beállítsa a globális barátságot
0.place=/{0} place [player] [címke]{1} - Berak egy játékost egy klánba
0.ban.unban.player.1.ban.unban.a.player=/{0} ban/unban [játékos]{1} - Kitiltja/visszaengedi a játékost
0.hometp.clan.1.tp.home.a.clan=/{0} home tp [clan]{1} - Elteleportálja minden klán otthonába
0.disband.tag.1.disband.a.clan=/{0} disband [címke]{1} - Eltávolít egy klánt
0.resetkdr.1.resets.kdr=/{0} resetkdr player/all{1} - Visszaállítsa az összes játékos KDR-jét vagy csak egy
0.resetkdr.1.resets.your.kdr=/{0} resetkdr{1} - Visszaállítja KDR-t
0.verify.tag.1.verify.an.unverified.clan=/{0} verify [címke]{1} - Ellenőrzi az ellenőrzött klánt
0.verify.1.purchase.verification.of.your.clan=/{0} verify{1} - A klán megvásárlásának ellenőrzése
0.list.1.lists.all.clans=/{0} list [name/size/kdr/founded/active] [asc/desc]{1} - Lists all clans
0.profile.1.view.your.clan.s.profile=/{0} profile{1} - Megtekinti a klán profilját
0.profile.tag.1.view.a.clan.s.profile=/{0} profile [címke]{1} - Klán profiljának megtekintése
0.lookup.1.lookup.your.info=/{0} lookup{1} - Megkeresi az adatait
0.lookup.player.1.lookup.a.player.s.info=/{0} lookup [játékos]{1} - Megkeresi a játékos információit
0.leaderboard.1.view.leaderboard=/{0} leaderboard{1} - Megnézi a ranglistát
0.alliances.1.view.all.clan.alliances=/{0} alliances{1} - Megtekinti az összes klán szövetséget
0.rivalries.1.view.all.clan.rivalries=/{0} rivalries{1} - Megtekinti az összes klánversenyt
0.roster.1.view.your.clan.s.member.list=/{0} roster{1} - Megtekinti a klán taglistáját
0.roster.tag.1.view.a.clan.s.member.list=/{0} roster [címke]{1} - Egy osztály taglista megtekintéset
0.vitals.1.view.your.clan.member.s.vitals=/{0} vitals{1} - Megtekinti a klántagod vitálását
0.coords.1.view.your.clan.member.s.coordinates=/{0} coords{1} - Megtekinti a klántagod koordinátáit
0.stats.1.view.your.clan.member.s.stats=/{0} stats{1} - Megtekinti a klántag statisztikáit
0.ally.add.remove.tag.1.add.remove.an.ally.clan=/{0} ally add/remove [címke]{1} - Egy szövetséges klán hozzáadása/eltávolítása
0.rival.add.remove.tag.1.add.remove.a.rival.clan=/{0} rival add/remove [címke]{1} - Egy rivális klán hozzáadása/eltávolítása
0.bb.1.display.bulletin.board=/{0} bb{1} - Hirdetőtábla megjelenítése
0.bb.msg.1.add.a.message.to.the.bulletin.board=/{0} bb [msg]{1} - Üzenet hozzáadása a hirdetőtáblához
0.modtag.tag.1.modify.the.clan.s.tag=/{0} modtag [címke]{1} - Módosítja a klán címkéjét
0.cape.url.1.change.your.clan.s.cape=/{0} cape [url]{1} - Megváltoztatja a klánodat
0.invite.player.1.invite.a.player=/{0} invite [játékos]{1} - Meghív egy játékost
0.kick.player.1.kick.a.player.from.the.clan=/{0} kick [játékos]{1} - Kirúg egy játékost a klánból
0.trust.untrust.player.1.set.trust.level1=/{0} trust [játékos]{1} - Beállítja a tagot megbízhatónak
0.trust.untrust.player.1.set.trust.level2=/{0} untrust [játékos]{1} - Beállítja a tagot megbízhatatlannak
0.promote.member.1.promote.a.member.to.leader=/{0} promote [tag]{1} - Támogat egy tagot vezetőnek
0.demote.leader.1.demote.a.leader.to.member=/{0} demote [vezető]{1} - Vezet egy vezetőt a tagnak
0.clanff.allow.block.1.toggle.clan.s.friendly.fire=/{0} clanff allow/block{1} - Kapcsolja a klán baráti tüzet
0.ff.allow.auto.1.toggle.personal.friendly.fire=/{0} ff allow/auto{1} - Kapcsolja a személyes barátságos tüzet
0.toggle.command=/{0} toggle [{2}]{1} - A személyes beállítások módosítása
0.resign.1.resign.from.the.clan=/{0} resign{1} - Tiltakozik a klánról
0.disband.1.disband.your.clan=/{0} disband{1} - Lehúzza a klánját
0.trust.setrank=/{0} setrank [játékos] [rank]{1} - Ad egy rangot a játékosnak
0.create.tag.name.1.purchase.a.new.clan=/{0} create [címke] [name]{1} - Vásárol egy új klánt
0.create.tag.name.1.create.a.new.clan=/{0} create [címke] [name]{1} - Létrehoz egy új klánt
0.kills=/{0} kills{1} - Megnézi az ölésedet
0.killsplayer=/{0} kills [játékos]{1} - Megtekinti a játékos ölési számát
0.mostkilled=/{0} mostkilled{1} - Megtekinti a kiszolgálón leggyakoribb ölési számokat
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
home-regroup-menu=/{0} home regroup [me]{1} - Áthelyezi az összes tagot a háziasított klán vagy magad számára
example.clan.modtag.4kfo.4l=Példa\: /clan modtag &4K&fo&4L
example.clan.create=Példa\: /clan create &4Kol labirintus lovagjai
clan=Klán
allies=Szövetségesek
alliances=szövetségek
coords=koordináták
name=Név
distance=Távolság
coords.upper=Koordináták
world=Világ
members=Tagok
clans.lower=klánok
rival=Vetélytárs
civilian=Polgári
neutral=Semleges
free.agent=Szabadúszó
days=nap
rivals=Versenytárs
rivalries=versengés
online=Elérhető
player=Játékos
seen=Látott
leader=vezető
roster=névsor
trusted=megbízható
untrusted=megbízhatatlan
deaths=Halálok
weights=Súlyok
health=Élet
armor=Páncél
weapons=Fegyverek
food=Étel
vitals=nemes szervek
verified=ellenőrzött
unverified=Nem ellenőrzött
profile=profil
civilian.abbreviation=Polgár
rank=Rang
leaders=Vezetők
none=Semmi
today=Ma
kills=Ölések
mostkilled=Legtöbbször megölt
killcount=Ölés számítás
attacker=Támadó
victim=Áldozat
kill.death.ratio=Ölés/halál arány
nokillsfound=Nincs ölések találva
version.loaded=[{0}] Verzió {1} betöltve
promoted.to.leader={0} vezető szerepet kapott
denied.demotion={0} tagadta a lecsökkentését {1}. A konszenzus sikertelen volt.
membership.invitation={0} tagadta a tagsági meghívást
joined.the.clan={0} csatlakozott a klánhoz
signed.off.request.cancelled={0} aláírták. {1} kérés törölve.
clan.deletion={0} tagadta a klán törlését. A konszenzus sikertelen volt.
has.been.disbanded=A(z) {0} klán feloszlott
denied.the.promotion={0} tagadta a {1} promócióját. A konszenzus sikertelen volt.
demoted.back.to.member={0} visszatért a taghoz
peace.agreement.denied=A(z) {0} kötött békemegállapodást megtagadták
denied.to.make.peace={0} tagadta a békét a(z) {1}
broken.the.rivalry={0} megszüntette a versenyt {1}
broken.the.rivalry.with={0} megszüntette a versenyt {1}
the.alliance.was.denied=A(z) {0} szövetség tagadta
denied.an.alliance={0} tagadta a szövetséget {1}
accepted.an.alliance={0} szövetséget kötött a(z) {1}
created.an.alliance={0} szövetséget kötött a(z) {1}
has.joined={0} csatlakozott {1}
proposing.to.end.the.rivalry={0} azt javasolja, hogy vessen véget a rivalizálás {1}
proposing.an.alliance={0} szövetséget javasol {1}
inviting.you.to.join={0} meghívott téged, hogy csatlakozz {1}
asking.for.the.deletion={0} a klán törlését kéri
asking.for.the.promotion={0} kéri a promóció {1}
asking.for.the.demotion={0} kéri a promóció {1}
accept.or.deny={0} vagy {1}
not.sufficient.money=Nincs elegendő pénz a fiókodban
account.has.been.debited=A fiókod terhelésre került {0}
mysql.connection.successful=MySQL kapcsolat sikeres
mysql.connection.failed=MySQL kapcsolat sikertelen
sqlite.connection.successful=SQLite kapcsolat sikeres
sqlite.connection.failed= SQLite kapcsolat sikertelen
purging.player.data=tisztító játékos adatai\: {0}
purging.clan=Pusztító klán\: {0}
clan.players=Klán játékosok\: {0}
clans=Klánok\: {0}
banned=Kitiltottad a klánparancsok használatát
nothing.more.to.see=Semmi többet látni
nothing.to.deny=Semmi tagadni
no.leader.permissions=Nincs vezető engedélye
you.have.already.voted=Már szavaztál
has.voted.to.deny={0} tagadta a szavazást
nothing.to.accept=Semmi elfogadni
view.next.page=Típus /{0} a következő oldal megtekintéséhez.
voted.to.accept={0} elfogadták
bulletin.board.header={0}* {1}{2} hirdetőtábla
has.been.disbanded.rivalry.ended={0} feloszlott. A rivalizálás véget ért.
has.been.disbanded.alliance.ended={0} feloszlott. A Szövetség véget ért.
clan.disbanded=A klán megszűnt
1.color.day=1 {0}nap
many.color.days={0}{1} nap
does.not.match=Nem egyezik a klán parancsával
simpleclans.command.failure=A SimpleClans parancs sikertelen\: {0}
insufficient.permissions=Nincs elegendő engedély
clan.is.not.verified=A klán nem ellenőrzött
not.a.member.of.any.clan=Nem vagy tagja semmilyen klánnak
minimum.to.make.alliance=A klánnak legalább {0} játékosnak kell lennie ahhoz, hogy szövetségeket kössön
no.clan.matched=Nincsenek klánok
cannot.ally.with.an.unverified.clan=Nem tudsz szövetséget kötni egy be nem bizonyított klánnal
your.clans.are.not.allies=A klánod nem szövetségesek
has.broken.the.alliance={0} megszakította a szövetséget {1}
at.least.one.leader.accept.the.alliance=A szövetség legalább egy vezetőjének online kell lennie ahhoz, hogy elfogadja a szövetséget
leaders.have.been.asked.for.an.alliance=A(z) {0} vezetők szövetségre szólítottak fel
your.clans.are.already.allies=A klánod már szövetségesek
your.clan.cannot.create.rivals=A klán nem hozhat létre riválisokat
min.players.rivalries=A klánnak legalább {0} játékosnak kell lennie a rivalizálás érdekében
this.player.is.already.banned=Ez a játékos már tiltott
player.added.to.banned.list=A játékos hozzáadva a tiltott listához
you.banned=Kitiltottad a klánparancsokból
cape.must.be.png=A cape url-nek egy png képre kell mutatnia
url.error=Az URL hibaüzenetet küld. Ellenőrizze, hogy működik-e.
changed.the.clan.cape={0} megváltoztatta a klán kupáját
clan.wide.friendly.fire.blocked=A klán egész barátságos tűz zárt
clan.wide.friendly.fire.is.allowed=A Klánbarát barátságos tűz megengedett
only.trusted.players.can.access.clan.coords=Csak a megbízható játékosok férhetnek hozzá a klánokhoz
you.are.the.only.member.online=Te vagy az egyetlen tagja online
your.clan.tag.cannot.be.longer.than.characters=A klán tagja legfeljebb {0} karakter lehet
your.clan.tag.must.be.longer.than.characters=A klán tagjának hosszabbnak kell lennie, mint {0} karakter
your.tag.cannot.contain.the.following.colors=A címke nem tartalmazhatja a következő színeket\: {0}
your.tag.cannot.contain.color.codes=A címke nem tartalmazhat színkódokat
your.clan.name.cannot.be.longer.than.characters=A klán neve legfeljebb {0} karakter lehet
your.clan.name.must.be.longer.than.characters=A klán neveinek {0} karakter hosszúnak kell lenniük
your.clan.tag.can.only.contain.letters.numbers.and.color.codes=A klán tagja csak betűket, számokat és színkódokat tartalmazhat
your.clan.name.cannot.contain.color.codes=A klán neve nem tartalmazhat színkódokat
that.tag.name.is.disallowed=A címke neve elutasítva
you.must.first.resign=Először lemondania a {0}
clan.with.this.tag.already.exists=Ezzel a címkével már létezik egy klán
get.your.clan.verified.to.access.advanced.features=Szerezd meg a klánt, hogy ellenőrizze a speciális funkciók elérését
clan.created=A(z) {0} klán létrehozva
leaders.must.be.online.to.vote.on.demotion=A lefokozástól eltérő összes vezetőnek online kell lennie ahhoz, hogy szavazzon a lefokozásról
demotion.vote.has.been.requested.from.all.leaders=Demotion szavazást kértek minden vezetőtől
player.is.not.a.leader.of.your.clan=A játékos nem a klán egyik vezetője
clan.has.been.disbanded=A(z) {0} klán feloszlott
clan.disband.vote.has.been.requested.from.all.leaders=A klán feloszlatásáról szavazást kértek minden vezetőtől
friendy.fire.is.now.managed.by.your.clan=A barátságos tüzet most kezeli a klán
personal.friendly.fire.is.set.to.allowed=A személyes barátságos tűz megengedett
global.friendy.fire.is.now.managed.by.each.clan=A globális barátságos tüzet minden egyes klán kezeli
global.friendy.fire.is.already.being.managed.by.each.clan=A globális barátságos tüzeket már kezelik minden egyes klán
global.friendly.fire.is.set.to.allowed=A globális barátságos tűz megengedett
global.friendly.fire.is.already.being.allowed=A globális barátságos tűz már engedélyezett
no.player.matched=Nincs olyan játékos, aki megfelelt
the.player.doesn.t.not.have.the.permissions.to.join.clans=A játékosnak nincs joga a klánokhoz való csatlakozáshoz
you.cannot.invite.yourself=Nem hívhatod meg magad
this.player.is.banned.from.using.clan.commands=Ez a játékos tiltja a klánparancsok használatát
the.player.is.already.member.of.another.clan=A játékos már tagja egy másik klánnak
has.been.asked.to.join={0} felkérést kapott, hogy csatlakozzon {1}
you.cannot.kick.yourself=Nem tudod magadat kirúgni
the.player.is.not.a.member.of.your.clan=A játékos nem tagja a klánnak
you.cannot.kick.another.leader=Nem tehetsz meg egy másik vezetőt
has.been.kicked.by={0} kirúgva {1} által
no.clans.have.been.created=Nem hoztak létre klánokat
total.clans=Összes klán\:
legend=Legenda\:
kill.type.civilian=Ölés típus\: {0} Civil
no.player.data.found=Nincsenek játékosadatok
kill.type.0=Ölés típus\: {0}
s.player.info={0} játékos adatai
clan.0=Klán\: {0}
status.0=Állapot\: {0}
rank.0=Rang\: {0}
deaths.0=Halálok\: {0}
join.date.0=Csatlakozás dátuma\: {0}
last.seen.0=Utoljára látva\: {0}
past.clans.0=Múlt klánok\: {0}
inactive.0=Elérhetetlen(ek)\: {0}
kill.totals=Összes ölés\:
clan.commands=klán parancsok
you.can.only.modify.the.color.and.case.of.the.tag=Csak a címke színét és esetét módosíthatod
tag.changed.to.0=A címke megváltoztatva {0}
name.0=Név\: {0}
leaders.0=Vezetők\: {0}
members.online.0=Tagok online\: {0}
allies.0=Szövetségesek\: {0}
rivals.0=Vetélytárs(ak)\: {0}
founded.0=Alapított\: {0}
the.member.to.be.promoted.must.be.online=A támogatni kívánt tagnak online-nak kell lennie
the.player.does.not.have.the.permissions.to.lead.a.clan=A játékosnak nincs joga a klán vezetésére
you.cannot.promote.yourself=Nem reklámozhatod magad
all.leaders.must.be.online.to.vote.on.this.promotion=Minden vezetőnek online kell szavaznia erről a promócióról
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
only.trusted.players.can.access.clan.stats=Csak a megbízható játékosok férhetnek hozzá a klánstatisztikákhoz
you.cannot.trust.yourself=Nem bízhatsz magadban
leaders.are.already.trusted=A vezetők már megbízhatóak
this.player.is.already.trusted=Ez a játékos már megbízható
has.been.given.trusted.status.by={0} megbízható állapotot kapott {1} által
this.player.is.not.banned=Ez a játékos nem tiltott
player.removed.from.the.banned.list=A játékos eltávolítva a tiltott listáról
you.have.been.unbanned.from.clan.commands=Vissza engedted a klánparancsoktól
you.cannot.untrust.yourself=Nem bízhatsz magadban
leaders.cannot.be.untrusted=A vezetők nem lehetnek megbízhatatlanok
this.player.is.already.untrusted=Ez a játékos már nem megbízható
has.been.given.untrusted.status.by={0} megbízható állapotot kapott {1} által
the.clan.does.not.exist=A klán nem létezik
the.clan.is.already.verified=A klán már ellenőrzött
the.clan.has.been.verified=A klán igazolt
clan.0.has.been.verified=A(z) {0} klán ellenőrizve\!
only.trusted.players.can.access.clan.vitals=Csak a megbízható játékosok férhetnek hozzá a klánéletekhez
total.clan.players.0=Összes klán játékos\: {0}
proposing.war={0} azt javasolja, hogy indítsanak háborút {1} ellen
you.can.only.start.war.with.rivals=Csak háborút kezdhet a riválisokkal
leaders.have.been.asked.to.accept.the.war.request=A(z) {0} vezetőket felkérték, hogy fogadják el a háborús kérést
leaders.asked.to.end.rivalry=A(z) {0} vezetőket felkérték, hogy vessenek véget a háborúnak
proposing.to.end.the.war={0} a háború befejezését javasolja {1}
clans.already.at.war=A klánod már háborúban van
clans.not.at.war=A klánod nincsenek háborúban
you.are.at.war={0} most háborúban van {1} ellen
denied.war.req={0} megtagadta {1} által küldött háborús kérést
you.are.no.longer.at.war={0} már nincs háborúban {1} ellen
end.war.denied=A háború befejezésére irányuló kérelmet a(z) {0}
denied.war.end={0} tagadta {1} kérését a háború befejezésére
0.war=/{0} war{1} start/end [tag] - Háború indítása vagy befejezése
has.initiated.a.rivalry={0} rivalizációt indított {1} ellen
materials=Anyagok
server.announce=Szerver bejelentés
clan.announce=Klán bejelentés
leader.announce=Vezetői bejelentés
hunger=Éhség
the.clan.cannot.be.rivaled=A klán nem lehet versengeni
capeoff=A köpeny kikapcsolva
capeon=A köpeny bekapcsolva
bboff=BB kikapcsolva
bbon=BB bekapcsolva
tagoff=Tag kikapcsolva
tagon=Címke bekapcsolva
depositon=Letét bekapcsolva
depositoff=Letét kikapcsolva
withdrawon=Visszavonulás bekapcsolva
withdrawoff=Visszavonulás kikapcsolva
home.base.only.once=A bázis csak egyszer állítható be
now.at.homebase=Most a(z) {0} székhelyen tartózkodsz
hombase.set=Klán bázis beállítva\: {0}
hombase.cleared=Klán bázis törölve
hombase.mod.set={0} bázisa beállítva\:
hombase.not.set=Bázis nincs beállítva
rival.limit.reached=Elérted a rivális limitet. Nem tehetsz többé klánokkal.
you.moved.teleport.cancelled=Elmozdultál, a teleportálás megszakítva
waiting.for.teleport.stand.still.for.0.seconds=Várakozás a teleportálásra, állj meg {0} másodpercig
no.teleport=Tilos teleportálni erre a helyre
on=be
off=ki
leave=elhagy
join=csatlakoz
player.rank.changed=A rang beállítva
your.clans.are.already.rivals=A klánod már riválisok
player.got.money=Megkaptad {0} a(z) {1} megöléséért KDR-ed alapján\: {2}
cleared.bb=Törölte a hirdetőtáblát
clan.balance=Klán egyenleg\: {0}
bb.clan.deposit={0} $ letétbe helyezték
player.clan.deposit=Letétbe helyezted {0}
bb.clan.withdraw={0} $ visszavonták
player.clan.withdraw=Visszavonsz {0}
clan.bank.not.enough.money=A klán bankjaidnak nincs elég pénzük
your.clans.are.not.rivals=A klánok nem riválisok
you.cannot.rival.your.own.clan=Nem tudsz versengeni a saját klánoddal
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
@@ -0,0 +1,8 @@
description.command=descrizione
create.command=creare
profile.command=profilo
roster.command=membri
lookup.command=ricerca
alliances.command=alleanze
coords.command=coordinate
stats.command=statistiche
@@ -0,0 +1,340 @@
create.command=stworz
profile.command=profil
roster.command=lista
lookup.command=wyszukaj
leaderboard.command=ranking
alliances.command=sojusze
rivalries.command=wrogowie
coords.command=wspolrzedne
stats.command=staty
ally.command=sojusznik
rival.command=wrog
bb.command=tablica
cape.command=peleryna
toggle.command=przelacz
invite.command=zapros
kick.command=wyrzuc
trust.command=ufaj
untrust.command=nieufaj
promote.command=awansuj
demote.command=degraduj
clanff.command=klanff
resign.command=opusc
disband.command=rozwiaz
verify.command=weryfikuj
reload.command=przeladuj
kills.command=zabija
war.command=wojna
home.command=dom
usage.clan.alliances=Usage\: /{0} sojusze
usage.ally=Usage\: /{0} sojusznik dodaje/usuwa [tag]
usage.ban.unban=Usage\: /{0} ban/unban [gracz]
usage.rival=Usage\: /{0} wrog dodaje/usuwa [tag]
usage.cape.url=Usage\: /{0} peleryna [url]
usage.setrank=Usage\: /{0} setrank [player] [rank], rank can be multiple worlds and contain &f color codes
usage.clanff=Usage\: /{0} klanff wlacza/wylacza
usage.0.coords=Usage\: /{0} wspolrzedne
usage.create.tag=Usage\: /{0} stworz [tag] [imie]
usage.demote.leader=Usage\: /{0} degraduj [przywodca]
usage.0.disband=Usage\: /{0} rozwiarz
usage.0.ff.allow.auto=Usage\: /{0} ff wlacza/klanowe
usage.0.globalff.allow.auto=Usage\: /{0} globalff wlacza/klanowe
usage.0.invite.player=Usage\: /{0} zapros [gracza]
usage.kick.player=Usage\: /{0} wyrzuc [gracza]
usage.list=Usage\: /{0} lista
usage.lookup.tag=Usage\: /{0} wyszukaj [tag]
usage.0.profile.tag=Usage\: /{0} profil [tag]
usage.0.promote.member=Usage\: /{0} awansuj <czlonka>
usage.0.rivalries=Usage\: /{0} wszyscywrogowie
usage.0.roster.tag=Usage\: /{0} lista [tag]
usage.0.stats=Usage\: /{0} staty
usage.0.trust.player=Usage\: /{0} ufaj [gracz]
usage.0.untrust.player=Usage\: /{0} nieufaj [gracz]
usage.0.verify.tag=Usage\: /{0} weryfikuj [tag]
usage.0.leaderboard=Usage\: /{0} ranking
0.reload.1.reload.configuration=/{0} reload{1} - Przeladuj konfiguracje
0.globalff.allow.auto.1.set.global.friendly.fire=/{0} globalff wlacza/klanowe {1} - Ustawienie globalnego FF
0.ban.unban.player.1.ban.unban.a.player=/{0} ban/unban [gracz]{1} - Banuje/odbanowuje gracza
0.disband.tag.1.disband.a.clan=/{0} rozwiaz [tag]{1} - Rozwiazuje klan
0.verify.tag.1.verify.an.unverified.clan=/{0} weryfikuj [tag]{1} - Zatwierdza niezweryfikowany klan
0.verify.1.purchase.verification.of.your.clan=/{0} weryfikuj{1} - Zakup weryfikacji dla klanu
0.list.1.lists.all.clans=/{0} list{1} - Lista wszystkich klanow
0.profile.1.view.your.clan.s.profile=/{0} profil{1} - Podglad profilu wlasnego klanu
0.profile.tag.1.view.a.clan.s.profile=/{0} profil [tag]{1} - Podglad profilu wybranego klanu
0.lookup.1.lookup.your.info=/{0} wyszukaj{1} - Zwraca informacje o sobie
0.lookup.player.1.lookup.a.player.s.info=/{0} wyszukaj [gracz]{1} - Zwraca informacje o innym graczu
0.leaderboard.1.view.leaderboard=/{0} ranking{1} - Tablica statystyk klanow
0.alliances.1.view.all.clan.alliances=/{0} sojusze{1} - Podglad wszystkich sojuszy klanu
0.rivalries.1.view.all.clan.rivalries=/{0} wrogowie{1} - Podglad wszystkich wrogow klanu
0.roster.1.view.your.clan.s.member.list=/{0} spis{1} - Lista czlonkow klanu
0.roster.tag.1.view.a.clan.s.member.list=/{0} spis [tag]{1} - Lista czlonkow danego klanu
0.vitals.1.view.your.clan.member.s.vitals=/{0} staty{1} - Podglad stanu czlonkow klanu
0.coords.1.view.your.clan.member.s.coordinates=/{0} wspolrzedne{1} - Wspolrzedne czlonkow wlasnego klanu
0.stats.1.view.your.clan.member.s.stats=/{0} staty{1} - Podglad statystyk czlonkow twojego klanu
0.ally.add.remove.tag.1.add.remove.an.ally.clan=/{0} sojusznik dodaje/usuwa [tag]{1} - dodaje/usuwa sojuszniczy klan
0.rival.add.remove.tag.1.add.remove.a.rival.clan=/{0} wrog dodaje/usuwa [tag]{1} - dodaje/usuwa wrogi klan
0.bb.1.display.bulletin.board=/{0} tablica{1} - Wyswietla tablice ogloszen klanu
0.bb.msg.1.add.a.message.to.the.bulletin.board=/{0} tablica [msg]{1} - dodaje informacje do tablicy ogloczen klanu
0.modtag.tag.1.modify.the.clan.s.tag=/{0} modtag [tag]{1} - Zmienia tag klanu
0.cape.url.1.change.your.clan.s.cape=/{0} strona [url]{1} - Zmienie adres z peleryna klanu
0.invite.player.1.invite.a.player=/{0} zapros [gracza]{1} - Zaprasza gracza do klanu
0.kick.player.1.kick.a.player.from.the.clan=/{0} wyrzuc [gracza]{1} - Wyrzuca gracza z klanu
0.trust.untrust.player.1.set.trust.level1=/{0} ufaj [gracz]{1} - Ustawia stopien zaufania
0.trust.untrust.player.1.set.trust.level2=/{0} nieufaj [gracz]{1} - Ustawia stopien zaufania nieufaj
0.promote.member.1.promote.a.member.to.leader=/{0} awansuj [czlonek]{1} - Awansuje czlonka na przywodce klanu
0.demote.leader.1.demote.a.leader.to.member=/{0} degraduj [przywodca]{1} - Degraduje przywodce do rangi czlonka
0.clanff.allow.block.1.toggle.clan.s.friendly.fire=/{0} klanff wlacza/wylacza{1} - Wlacza/wylacza ranienie sie w klanie
0.ff.allow.auto.1.toggle.personal.friendly.fire=/{0} ff wlacza/klanowe{1} - Wlacza/klanowe osobiste ustawienie friendly fire
0.toggle.command=/{0} toggle [{2}]{1} - Przelacz ustawienia osobiste
0.resign.1.resign.from.the.clan=/{0} opusc{1} - Odejscie z klanu
0.disband.1.disband.your.clan=/{0} rozwiaz {1} - Rozwiazuje klan
0.trust.setrank=/{0} setrank [player] [rank]{1} - Daje graczowi range
0.create.tag.name.1.purchase.a.new.clan=/{0} stworz [tag] [nazwa]{1} - Zakup nowego klanu
0.create.tag.name.1.create.a.new.clan=/{0} stworz [tag] [nazwa]{1} - Stworzenie nowego klanu
0.kills=/{0} {1}zabojstwa - Wyswietl ilosc zabojstw w klanie
0.killsplayer=/{0} zabojstwa [gracz] {1} - Zobacz ilosc zabojstw gracza
0.mostkilled=/{0} mostkilled {1} - Zobacz najwieksza ilosc zabojstw
home-menu=/{0} home{1} - Teleportuje w miejsce zapisanej lokacji
home-set-menu=/{0} home set{1} - Ustaw teleport klanu
example.clan.modtag.4kfo.4l=Przyklad\: /clan modtag &4K&ille&4L
example.clan.create=Przyklad\: /clan create &4Zabojcze cienie z nad trzeciej rzeki
clan=Klan
allies=Sojusznicy
alliances=Sojusze
coords=Wspolrzedne
name=Imie
distance=Odleglosc
coords.upper=Wspolrzedne
world=Swiat
members=Czlonkowie
clans.lower=Klans
rival=Wrog
civilian=Cywile
neutral=Neutralny
free.agent=Wolny Strzelec
days=Dni
rivals=Wrgogowie
rivalries=Wrogie
player=Gracz
seen=Widziany
leader=Przywodca
roster=list
trusted=zaufany
untrusted=niegodny
deaths=Zgony
weights=Wagi
stats=staty
health=Zycie
armor=Zbroja
weapons=Bronie
food=Zarcie
vitals=statystyki
verified=zweryfikowane
unverified=niezweryfikowane
profile=profil
civilian.abbreviation=Cyw
leaders=Przywodcy
none=Zaden
today=Dzis
kills=Zabija
mostkilled=Wiekszosc zabitych
killcount=Zabij hrabia
attacker=Agresor
victim=Ofiara
kill.death.ratio=Stosunek Zabojstw/Zgonow
version.loaded=[{0}] w wersji {1} zaladowany
promoted.to.leader={0} zostal awansowany na przywodce
denied.demotion={0} odrzucil degradacje {1}. Nie osiagnieto porozumienia.
membership.invitation={0} odmowil zaproszenia w szeregi klanu
joined.the.clan={0} dolaczyl do klanu
signed.off.request.cancelled={0} odszedl z klanu. {1} odrzucil propozycje
clan.deletion={0} nie zgodzil sie nie usuniecie klanu.
has.been.disbanded=Klan {0} zostal rozwiazany
denied.the.promotion={0} denied the promotion of {1}. Nie osiagnieto porozumienia.
demoted.back.to.member={0} zostal zdegradowany do czlonka klanu
peace.agreement.denied=Propozycja pokojnowa z klanem {0} zostala odrzucona.
denied.to.make.peace={0} Nie zgodzil sie zawrzec pokoju z {1}
broken.the.rivalry={0} nie jest juz w stanie wojny z {1}
broken.the.rivalry.with={0} nie jest juz w stanie wojny z {1}
the.alliance.was.denied=Propozycja sojuszu z {0} zostala odrzucona
denied.an.alliance={0} nie zgodzil sie na sojusz z {1}
accepted.an.alliance={0} zgodzil sie na sojusz z {1}
created.an.alliance={0} zawarl sojusz z {1}
has.joined={0} dolaczyl do {1}
proposing.to.end.the.rivalry={0} proponuje zakonczenie wojny z {1}
proposing.an.alliance={0} proponuje sojusz {1}
inviting.you.to.join={0} zaprasza cie do przylaczenia sie do {1}}
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}
accept.or.deny={0} lub {1}
not.sufficient.money=Nie posiadasz wystarczajacej ilosci dukatow
account.has.been.debited=Twoje konto zostalo zmniejszone o {0}
mysql.connection.successful=MySQL udane polaczenie
mysql.connection.failed=MySQL nie udane polaczenie
sqlite.connection.successful=SQLite udane polaczenie
sqlite.connection.failed= SQLite nie udane polaczenie
purging.player.data=usuwanie danych gracza (purge) {0}
purging.clan=usuwanie danych klanu\: {0}
clan.players=gracze klanu \: {0}
clans=Klany\: {0}
banned=Masz bana na uzywanie klanowych komend
nothing.more.to.see=Nic wiecej tu nie ma
nothing.to.deny=Nic wiecej do odrzucenia
no.leader.permissions=Nie masz uprawnien wodza
you.have.already.voted=Juz oddales swoj glos w tej sprawie
has.voted.to.deny={0} glosowal przeciw
nothing.to.accept=Nic do zaakceptowania
view.next.page=Wpisz /{0} by przejsc do nastepnej strony
voted.to.accept={0} zaglosowal za
bulletin.board.header={0}* {1}{2} Tablica ogloszen
has.been.disbanded.rivalry.ended={0} zostal rozwiazany. Koniec wojny.
has.been.disbanded.alliance.ended={0} zostal rozwiazany. Koniec przymieza.
clan.disbanded=Rozwiazano klan
1.color.day=1 {0}dni
many.color.days={0}{1} dni
does.not.match=Nie ma takiej komendy klanowej
simpleclans.command.failure=SimpleClans blad polecenia\: {0}
insufficient.permissions=Niewystarczajace uprawnienia
clan.is.not.verified=Klan nie zweryfikowany
not.a.member.of.any.clan=Nie jestes czlonkiem zadnego klanu
minimum.to.make.alliance=Muszisz miec w klanie co najmniej {0} czlonkow aby moc zawierac sojusze.
no.clan.matched=Zaden klan nie odpowiada zapytaniu
cannot.ally.with.an.unverified.clan=Nie mozesz zawrzec przymieza z niezweryfikowanym klanem.
your.clans.are.not.allies=Wasze klany nie sa sojusznikami
has.broken.the.alliance={0} zerwal sojusz z {1}
at.least.one.leader.accept.the.alliance=Co najmniej jeden z przywodcow klanu musi byc dostepny aby przyjac propozycje sojuszu.
leaders.have.been.asked.for.an.alliance=Przywodcy {0} zostali zapytani o sojusz.
your.clans.are.already.allies=Toc wasze klany to juz sojusznicy
your.clan.cannot.create.rivals=Twoj klan nie moze miec wrogow
min.players.rivalries=Musisz miec w klanie co najmniej {0} czlonkow aby moc wypowiadac wojny.
this.player.is.already.banned=Ten gracz ma juz bana
player.added.to.banned.list=Gracz dodany do listy imion zbanowanych
you.banned=Zostales pozbawiony komend klanowych (masz bana)
cape.must.be.png=Adres peleryny musi wskazywac na obraz w formacie png
url.error=Podany adres zwraca blad. Sprawdz czy wszysko poprawnie wpisales.
changed.the.clan.cape={0} zmienil klanowa peleryne.
clan.wide.friendly.fire.blocked=Friendly Fire dla calego klanu jest wylaczony.
clan.wide.friendly.fire.is.allowed=Friendly Fire dla calego klanu jest wlaczony.
only.trusted.players.can.access.clan.coords=Tylko zaufani klanowicze moga zagladac do wspolzednych
you.are.the.only.member.online=Jestes jedynym czlonkiem klanu online. Badz czujny.
your.clan.tag.cannot.be.longer.than.characters=Tag twojego klanu nie moze byc dluzszy niz {0} znakow.
your.clan.tag.must.be.longer.than.characters=Tag twojego klanu musi miec wiecej niz {0} znakow.
your.tag.cannot.contain.the.following.colors=Tag twojego klanu nie moze zawierac nastepujacych kolorow\: {0}
your.clan.name.cannot.be.longer.than.characters=Nazwa klanu nie moze byc dluzsza niz {0} znakow
your.clan.name.must.be.longer.than.characters=Nazwa twojego klanu musi byc dluzsza niz {0} znakow
your.clan.tag.can.only.contain.letters.numbers.and.color.codes=Tag twojego klanu moze zawierac wylacznie litery,cyfry oraz kody kolorow
your.clan.name.cannot.contain.color.codes=Nazwa twojego klanu nie moze zawierac kodow kolorow
that.tag.name.is.disallowed=Ten Tag klanu jest zabroniony
you.must.first.resign=Najpierw musisz odejsc z {0}
clan.with.this.tag.already.exists=Klan o takim Tagu juz istnieje
get.your.clan.verified.to.access.advanced.features=Weryfikacja twojego klanu umozliwi dostep do pozostalych opcji
clan.created=Clan {0} pomyslnie utworzony
leaders.must.be.online.to.vote.on.demotion=Wszyscy przywodcy, poza degradowanym, musza byc online w czasie tego glosowania.
demotion.vote.has.been.requested.from.all.leaders=Wszyscy przywodcy zostali poproszeni o glos w sprawie degradacji
player.is.not.a.leader.of.your.clan=Ten gracz nie jest przywodca twojego klanu
clan.has.been.disbanded=Klan {0} zostal rozwiazany
clan.disband.vote.has.been.requested.from.all.leaders=Wszyscy przywodcy zostali poproszeni o glos w sprawie rozwiazania klanu
friendy.fire.is.now.managed.by.your.clan=Ustawienie Friendly fire zgodne z obecnym ustawieniem twojego klanu
personal.friendly.fire.is.set.to.allowed=Osobisty Friendly fire zostal wlaczony
global.friendy.fire.is.now.managed.by.each.clan=Swiatowy Friendly fire zalezy teraz od indywidualnych ustalen kazdego klanu
global.friendy.fire.is.already.being.managed.by.each.clan=Friendly fire juz jest zalezny od ustawien klanow
global.friendly.fire.is.set.to.allowed=Wlaczenie globalnego Friendly fire
global.friendly.fire.is.already.being.allowed=Globalny Friendly fire juz jest wlaczony
no.player.matched=Nie odnaleziono gracza
the.player.doesn.t.not.have.the.permissions.to.join.clans=Ten gracz nie ma uprawnien aby wstepowac do klanow
you.cannot.invite.yourself=Nie mozesz zprosic samego siebie\! Czujemy sie samotni co? Znajdz owce lub dwie.
this.player.is.banned.from.using.clan.commands=Ten gracz ma zablokowany dostep do komend klanowych
the.player.is.already.member.of.another.clan=Ten gracz jest juz czlonkiem innego klanu.
has.been.asked.to.join={0} zostal zapytany czy chce dolaczyc do {1}
you.cannot.kick.yourself=Nie mozesz sam siebie wykopac. No prosze, bez masochizmu.
the.player.is.not.a.member.of.your.clan=Ten gracz nie jest czlonkiem twojego klanu
you.cannot.kick.another.leader=Nie mozesz wykopac innego przywodcy.
has.been.kicked.by={0} zostal wykopany przez {1}
no.clans.have.been.created=Zadne klany nie zostaly utworzone
total.clans=Wszystkich klanow\:
legend=Legenda\:
kill.type.civilian=Zabito\: {0}Cywili
no.player.data.found=Brak danych o graczach
kill.type.0=Zabito\: {0}
s.player.info={0}''statystki
clan.0=Klan\: {0}
deaths.0=Smierci\: {0}
join.date.0=Data dolaczenia\: {0}
last.seen.0=Ostatnio widzany\: {0}
past.clans.0=Poprzednie klany\: {0}
inactive.0=Nieaktywny\: {0}
kill.totals=Zabojstw w sumie\:
clan.commands=komendy klanowe
you.can.only.modify.the.color.and.case.of.the.tag=Jedyne co mozesz zmieniac to obramowanie i kolory Tagu
tag.changed.to.0=Tag zmieniono na {0}
name.0=Imie\: {0}
leaders.0=Przywodcy\: {0}
members.online.0=Klanowicze w grze\: {0}
allies.0=Sojusznikow\: {0}
rivals.0=Wrogo\: {0}
founded.0=Utworzono\: {0}
the.member.to.be.promoted.must.be.online=Gracz ktory ma dostac awans musi byc dostepny.
the.player.does.not.have.the.permissions.to.lead.a.clan=Ten gracz nie ma uprawnien aby dowodzic klanem.
you.cannot.promote.yourself=Nie mozesz sam siebie awansowac\! To bylby ciekawy klan nie ?
all.leaders.must.be.online.to.vote.on.this.promotion=Wszyscy przywodcy musza byc dostepni aby przeprowadzic to glosowanie
the.player.is.already.a.leader=Ten gracz juz jest przywodca
configuration.reloaded=Przeladowano ustawienia
last.leader.cannot.resign.you.must.appoint.another.leader.or.disband.the.clan=Ostatni przywodca nie moze odejsc. Musisz wyznaczyc inna osobe na przywodce lub rozwiazac klan.
0.has.resigned={0} zlozyl rezygnacje.
only.trusted.players.can.access.clan.stats=Tylko zaufani czlonkowie maja dostep do statystyk klanowych.
you.cannot.trust.yourself=Nie mozesz sam siebie oznaczyc jako osobe zaufana. To by troche mijalo sie z celem, nie sadzisz ?
leaders.are.already.trusted=Wszyscy przywodcy sa automatycznie oznaczeni jako zaufani
this.player.is.already.trusted=Ten gracz juz jest oznaczony jako zaufany
has.been.given.trusted.status.by={0} otrzymal status zaufanego od {1}
this.player.is.not.banned=Ten gracz nie jest zbanowany
player.removed.from.the.banned.list=Gracza usunieto z listy banow
you.have.been.unbanned.from.clan.commands=Zostales odbanowany w prawach klanowych i mozesz ponownie korzystac komend.
you.cannot.untrust.yourself=Nie mozesz sam siebie oznaczyc jako osobe niezaufana. Popros kogos kto cie dobrze poznal.
leaders.cannot.be.untrusted=Przywodca nie mozna ustawic statusu osoby negodnej zaufania.
this.player.is.already.untrusted=Ten gracz ma juz status osoby niegodnej zaufania.
has.been.given.untrusted.status.by={0} otrzymal status osoby niegodnej zaufania od {1}
the.clan.does.not.exist=Ten klan nie istnieje
the.clan.is.already.verified=Ten klan jest juz zweryfikowany
the.clan.has.been.verified=Klan zostal zweryfikowany
clan.0.has.been.verified=Clan {0} zostal zweryfikowany\!
only.trusted.players.can.access.clan.vitals=Tylko zaufani czlonkowie moga podgladac te statystyki
total.clan.players.0=Wszystkich graczy\: {0}
proposing.war={0} proponuje rozpoczac wojne z {1}
you.can.only.start.war.with.rivals=Mozesz tylko rozpoczac wojne z rywalami
leaders.have.been.asked.to.accept.the.war.request={0} przywodcy zostali poproszeni o zaakceptowanie zadania wojny
leaders.asked.to.end.rivalry={0} przywodcy zostali poproszeni, by zakonczyc wojne
proposing.to.end.the.war={0} proponuje, by zakonczyc wojne z {1}
clans.already.at.war=Twoj klany sa juz w czasie wojny
clans.not.at.war=Twoj klanow nie sa w stanie wojny
you.are.at.war={0} jest teraz w stanie wojny z {1}
denied.war.req={0} zaprzeczyl wniosek wojny wyslany przez {1}
you.are.no.longer.at.war={0} nie jest juz w stanie wojny z {1}
end.war.denied=zadanie zakonczenia wojny zostala odrzucona przez {0}
denied.war.end={0} zaprzeczyl wniosek wojny wyslany przez {1}
0.war=/{0} wojna{1} poczatek/koniec [tag] - Start/koniec wojny
start=poczatku
end=konca
add=dodaje
remove=usuwa
allow=wlacza
block=wylacza
auto=klanowe
war=wojna
weapon.S=M
weapon.B=K
weapon.A=S
materials=Materialy
diamond=diament
gold=zloto
wood=drewno
server.announce=Server oglaszaj?
clan.announce=Klan oglaszaj?
leader.announce=Kierownik oglaszaj?
hunger=Glod
the.clan.cannot.be.rivaled=Klan nie moze byc rywalizowal
home.base.only.once=Baze mozna ustawic tylko raz
rival.limit.reached=Masz juz rywala limit. Nie mozesz rywalizowac juz wiecej klanow.
you.moved.teleport.cancelled=Zostal przeniesiony, teleport anulowane
waiting.for.teleport.stand.still.for.0.seconds=Oczekiwanie na teleport, stac na {0} sekund
no.teleport=Nie mogl teleportowac sie do tej lokalizacji
@@ -0,0 +1,506 @@
description.command=descricao
create.command=criar
list.command=listar
profile.command=perfil
roster.command=membros
lookup.command=detalhes
leaderboard.command=ranking
alliances.command=aliancas
rivalries.command=rivalidades
vitals.command=saude
coords.command=coordenadas
stats.command=estatisticas
ally.command=aliado
rival.command=rival
bb.command=bb
cape.command=capa
modtag.command=mudartag
toggle.command=alternar
invite.command=convidar
kick.command=expulsar
bank.command=banco
fee.command=taxa
purge.command=apagar
trust.command=confiar
untrust.command=naoconfiar
promote.command=promover
demote.command=rebaixar
clanff.command=clanff
ff.command=ff
resign.command=abandonar
disband.command=debandar
verify.command=verificar
ban.command=banir
unban.command=desbanir
reload.command=recarregar
globalff.command=globalff
kills.command=mortes
mostkilled.command=maismatou
war.command=guerra
home.command=base
setrank.command=definircargo
place.command=colocar
resetkdr.command=redefinirkdr
usage.description=Uso\: /{0} descricao [descrição]
usage.resetkdr=Uso\: /{0} redefinirkdr [all/jogador]
usage.clan.alliances=Uso\: /{0} aliancas
usage.ally=Uso\: /{0} aliado adicionar/remover [tag]
usage.ban.unban=Uso\: /{0} banir/desbanir [jogador]
usage.rival=Uso\: /{0} rival adicionar/remover [tag]
usage.war=Uso\: /{0} guerra iniciar/finalizar [tag]
usage.cape.url=Uso\: /{0} capa [url]
usage.setrank=Uso\: /{0} definircargo [jogador] [cargo], cargos podem ser múltiplas palavras ou conter códigos de cor
usage.clanff=Uso\: /{0} clanff permitir/bloquear
usage.0.coords=Uso\: /{0} coordenadas
usage.create.tag=Uso\: /{0} criar [tag] [nome]
usage.demote.leader=Uso\: /{0} rebaixar [líder]
usage.0.disband=Uso\: /{0} debandar
usage.0.ff.allow.auto=Uso\: /{0} ff permitir/auto
usage.0.globalff.allow.auto=Uso\: /{0} globalff permitir/auto
usage.0.permissions.player=Uso\: /{0} permissions [clan] adicionar/remover [permission]
usage.0.invite.player=Uso\: /{0} convidar [jogador]
usage.kick.player=Uso\: /{0} expulsar [jogador]
usage.bank=Uso\: /{0} banco withdraw/deposit/status [quantidade]
usage.fee=Uso\: /{0} taxa check/set [quantidade]
usage.purge=Uso\: /{0} apagar [jogador]
usage.0.modtag.tag=Uso\: /{0} mudartag [tag]
usage.list=Uso\: /{0} listar
usage.lookup.tag=Uso\: /{0} detalhes [tag]
usage.0.profile.tag=Uso\: /{0} perfil [tag]
usage.0.promote.member=Uso\: /{0} promover <member>
usage.0.rivalries=Uso\: /{0} rivalidades
usage.0.roster.tag=Uso\: /{0} membros [tag]
usage.0.stats=Uso\: /{0} estatisticas
usage.0.trust.player=Uso\: /{0} confiar [jogador]
usage.0.untrust.player=Uso\: /{0} naoconfiar [jogador]
usage.0.verify.tag=Uso\: /{0} verificar [tag]
usage.0.vitals=Uso\: /{0} saude
usage.0.place=Uso\: /{0} colocar [jogador] [tag]
usage.0.leaderboard=Uso\: /{0} ranking
0.reload.1.reload.configuration=/{0} recarregar{1} - Recarregar configuração
0.globalff.allow.auto.1.set.global.friendly.fire=/{0} globalff permitir/auto {1} - Define o fogo amigo global
0.place=/{0} place [jogador] [tag]{1} - Coloca um jogador em um clã
0.ban.unban.player.1.ban.unban.a.player=/{0} ban/unban [jogador]{1} - Bane/desbane um jogador
0.hometp.clan.1.tp.home.a.clan=/{0} base tp [clan]{1} - Teleporta para a base de um clã
0.disband.tag.1.disband.a.clan=/{0} debandar [tag]{1} - Debanda um clã
0.resetkdr.1.resets.kdr=/{0} redefinirkdr jogador/all{1} - Redefine o KDR de todos os jogadores ou de apenas um
0.resetkdr.1.resets.your.kdr=/{0} redefinirkdr{1} - Redefine o seu KDR
0.purge.player.1.purge.a.player=/{0} apagar [jogador]{1} - Apaga os dados de um jogador
0.verify.tag.1.verify.an.unverified.clan=/{0} verificar [tag]{1} - Verifica um clã
0.verify.1.purchase.verification.of.your.clan=/{0} verificar{1} - Compra a verifição para o seu clã
0.list.1.lists.all.clans=/{0} listar [name/size/kdr/founded/active] [asc/desc]{1} - Lista todos os clãs
0.profile.1.view.your.clan.s.profile=/{0} perfil{1} - Mostra o perfil do seu clã
0.profile.tag.1.view.a.clan.s.profile=/{0} perfil [tag]{1} - Mostra o perfil de um clã
0.lookup.1.lookup.your.info=/{0} detalhes{1} - Mostra suas informações
0.lookup.player.1.lookup.a.player.s.info=/{0} detalhes [jogador]{1} - Mostra informações sobre um jogador
0.leaderboard.1.view.leaderboard=/{0} ranking{1} - Mostra o ranking de jogadores
0.alliances.1.view.all.clan.alliances=/{0} aliancas{1} - Mostra todas as alianças do clã
0.rivalries.1.view.all.clan.rivalries=/{0} rivalidades{1} - Mostra todas as rivalidades do clã
0.roster.1.view.your.clan.s.member.list=/{0} membros{1} - Mostra a lista de membros do seu clã
0.roster.tag.1.view.a.clan.s.member.list=/{0} membros [tag]{1} - Mostra a lista de membros de um clã
0.vitals.1.view.your.clan.member.s.vitals=/{0} saude{1} - Mostra os sinais vitais dos membros do seu clã
0.coords.1.view.your.clan.member.s.coordinates=/{0} coordenadas{1} - Mostra as coordenadas dos membros do seu clã
0.stats.1.view.your.clan.member.s.stats=/{0} estatisticas{1} - Mostra as estatísticas dos membros do seu clã
0.ally.add.remove.tag.1.add.remove.an.ally.clan=/{0} aliado adicionar/remover [tag]{1} - Adiciona/remove um clã aliado
0.rival.add.remove.tag.1.add.remove.a.rival.clan=/{0} rival adicionar/remover [tag]{1} - Adiciona/remove um clã rival
0.bb.1.display.bulletin.board=/{0} bb{1} - Mostra o quadro de avisos
0.bb.msg.1.add.a.message.to.the.bulletin.board=/{0} bb [msg]{1} - Adiciona uma mensagem para o quadro de avisos
0.modtag.tag.1.modify.the.clan.s.tag=/{0} mudartag [tag]{1} - Modifica a tag do seu clã
0.description.description.1.modify.the.clan.s.description=/{0} descricao [descrição]{1} - Modifica a descrição do clã
0.cape.url.1.change.your.clan.s.cape=/{0} capa [url]{1} - Muda a capa do seu clã
0.invite.player.1.invite.a.player=/{0} convidar [jogador]{1} - Convida um jogador
0.kick.player.1.kick.a.player.from.the.clan=/{0} expulsar [jogador]{1} - Expulsa um jogador do clã
0.trust.untrust.player.1.set.trust.level1=/{0} confiar [jogador]{1} - Marca um membro como confiável
0.trust.untrust.player.1.set.trust.level2=/{0} naoconfiar [jogador]{1} - Marca um membro como não-confiável
0.promote.member.1.promote.a.member.to.leader=/{0} promover [membro]{1} - Promove um membro para líder
0.demote.leader.1.demote.a.leader.to.member=/{0} rebaixar [líder]{1} - Rebaixa um líder para membro
0.clanff.allow.block.1.toggle.clan.s.friendly.fire=/{0} clanff permitir/bloquear{1} - Alterna o fogo amigo do clã
0.ff.allow.auto.1.toggle.personal.friendly.fire=/{0} ff permitir/auto{1} - Alterna o fogo amigo pessoal
0.toggle.command=/{0} alternar [{2}]{1} - Alterna opções pessoais
0.resign.1.resign.from.the.clan=/{0} abandonar{1} - Abandona o seu clã
0.disband.1.disband.your.clan=/{0} debandar{1} - Debanda o seu cl
0.trust.setrank=/{0} definircargo [jogador] [cargo]{1} - Dá um cargo a um jogador
0.create.tag.name.1.purchase.a.new.clan=/{0} criar [tag] [nome]{1} - Compra um novo clã
0.create.tag.name.1.create.a.new.clan=/{0} criar [tag] [nome]{1} - Cria um novo clã
0.kills=/{0} mortes{1} - Mostra a sua contagem de mortes
0.killsplayer=/{0} mortes [jogador]{1} - Mostra a contagem de mortes de um jogador
0.fee.check=/{0} taxa check {1}- Verifica se a taxa está ativada e quanto é
0.fee.set=/{0} taxa set [valor]{1} - Define a taxa de membros do clã
0.mostkilled=/{0} maismatou{1} - Mostra a contagem de mortes do servidor inteiro
home-menu=/{0} base{1} - Teleporta para a base do clã
home-set-menu=/{0} base set{1} - Define a base do clã
home-clear-menu=/{0} base clear{1} - Apaga a base do clã
home-regroup-menu=/{0} base regroup [me]{1} - Reagrupa todos os membros do clã para a base ou para você
example.clan.modtag.4kfo.4l=Exemplo\: /clan mudartag &4C&fd&4L
example.clan.create=Exemplo\: /clan criar &4CoL Cavaleiros do Labirinto
clan=Clã
allies=Aliados
alliances=aliancas
coords=coordenadas
name=Nome
distance=Distância
coords.upper=Coordenadas
world=Mundo
kdr=KDR
members=Membros
clans.lower=clãs
rival=Rival
civilian=Civil
neutral=Neutro
free.agent=Agente Livre
days=dias
rivals=Rivais
rivalries=rivalidades
online=Online
player=Jogador
seen=Visto
leader=líder
roster=membros
trusted=confiável
untrusted=não-confiável
deaths=Morreu
weights=Pesos
stats=estatísticas
health=Vida
armor=Armadura
weapons=Armas
food=Comida
vitals=Saúde
verified=Verificado
unverified=Não verificado
profile=perfil
civilian.abbreviation=Civ
rank=Cargo
leaders=Líderes
none=Nenhum
today=Hoje
kills=Matou
mostkilled=Mais Matou
killcount=Contagem de mortes
attacker=Agressor
victim=Vítima
kill.death.ratio=Relação entre Matar e Morrer
nokillsfound=Nenhuma morte encontrada
version.loaded=[{0}] Versão {1} carregada
promoted.to.leader={0} foi promovido para líder
denied.demotion={0} negou o rebaixamento de {1}. Não houve consenso.
membership.invitation={0} negou o pedido para ser membro
joined.the.clan={0} entrou no clã
signed.off.request.cancelled={0} saiu. Pedido de {1} cancelado.
clan.deletion={0} negou a remoção do clã. Não houve consenso.
has.been.disbanded=Clã {0} foi debandado
denied.the.promotion={0} negou a promoção de {1}. Não houve consenso.
demoted.back.to.member={0} foi rebaixado para membro
peace.agreement.denied=O acordo de paz com {0} foi negado
denied.to.make.peace={0} negou fazer paz com {1}
broken.the.rivalry={0} quebrou a rivalidade com {1}
broken.the.rivalry.with={0} quebrou a rivalidade com {1}
the.alliance.was.denied=A aliança com {0} foi negada
denied.an.alliance={0} negou uma aliança com {1}
accepted.an.alliance={0} aceitou uma aliança com {1}
created.an.alliance={0} criou uma aliança com {1}
has.joined={0} entrou em {1}
proposing.to.end.the.rivalry={0} está propondo acabar com a rivalidade com {1}
proposing.an.alliance={0} está propondo uma aliança com {1}
inviting.you.to.join={0} está te convidando para ser membro de {1}
asking.for.the.deletion={0} está pedindo pela remoção do clã
asking.for.the.promotion={0} está pedindo pela promoção de {1}
asking.for.the.demotion={0} está pedindo pelo rebaixamento de {1}
accept.or.deny={0} ou {1}
not.sufficient.money=Você não tem dinheiro suficiente em sua conta
account.has.been.debited={0} foram debitados de sua conta
mysql.connection.successful=Conexão MySQL bem sucedida
mysql.connection.failed=Conexão MySQL falhou
sqlite.connection.successful=Conexão SQLite bem sucedida
sqlite.connection.failed= Conexão SQLite falhou
purging.player.data=apagando dados do jogador\: {0}
purging.clan=Apagando clã\: {0}
clan.players=Jogadores\: {0}
clans=Clãs\: {0}
banned=Você foi banido de usar comandos de clã
nothing.more.to.see=Nada mais para ver
nothing.to.deny=Nada para negar
no.leader.permissions=Você não tem permissões de líder
you.have.already.voted=Você já votou
has.voted.to.deny={0} votou para negar
nothing.to.accept=Nada para aceitar
view.next.page=Digite /{0} para ver a próxima página.
voted.to.accept={0} votou para aceitar
bulletin.board.header={0}* {1}{2} quadro de avisos
has.been.disbanded.rivalry.ended={0} foi debandado. A rivalidade terminou.
has.been.disbanded.alliance.ended={0} foi debandado. A aliança terminou.
clan.disbanded=Clã debandado
1.color.day=1 {0}dia
many.color.days={0}{1} dias
does.not.match=Não é um comando de clã
simpleclans.command.failure=Falha no comando do SimpleClans\: {0}
insufficient.permissions=Permissões insuficientes
clan.is.not.verified=Clã não é verificado
not.a.member.of.any.clan=Você não é membro de nenhum clã
minimum.to.make.alliance=Seu clã deve ter pelo menos {0} membros para fazer alianças
no.clan.matched=Nenhum clã encontrado
cannot.ally.with.an.unverified.clan=Você não pode fazer aliança com um clã não verificado
your.clans.are.not.allies=Seus clãs não são aliados
has.broken.the.alliance={0} quebrou a aliança com {1}
at.least.one.leader.accept.the.alliance=Pelo menos um líder do outro clã precisa estar online para aceitar a aliança
leaders.have.been.asked.for.an.alliance=Um pedido de aliança foi enviado para os líderes de {0}
your.clans.are.already.allies=Seus clãs já são aliados
your.clan.cannot.create.rivals=Seu clã não pode criar rivais
min.players.rivalries=Seu clã deve ter pelo menos {0} membros para fazer rivalidades
this.player.is.already.banned=Este jogador já está banido
player.added.to.banned.list=Jogador adicionado a lista de banidos
you.banned=Você foi banido de comandos de clã
cape.must.be.png=A URL da capa deve apontar para uma imagem png
url.error=A URL está retornando um erro. Por favor, verifique se está funcionando.
changed.the.clan.cape={0} mudou a capa do clã
clan.wide.friendly.fire.blocked=Fogo amigo do clã bloqueado
clan.wide.friendly.fire.is.allowed=Fogo amigo do clã permitido
only.trusted.players.can.access.clan.coords=Apenas jogadores confiáveis podem acessar as coordenadas do clã
you.are.the.only.member.online=Você é o único membro online
your.clan.tag.cannot.be.longer.than.characters=A tag do seu clã não pode ser maior que {0} caracteres
your.clan.tag.must.be.longer.than.characters=A tag do seu clã deve ser maior que {0} caracteres
your.tag.cannot.contain.the.following.colors=Sua tag não pode conter as seguintes cores\: {0}
your.tag.cannot.contain.color.codes=Sua tag não pode conter códigos de cor
you.cannot.set.colored.ranks=Você não pode definir cargos coloridos
your.clan.name.cannot.be.longer.than.characters=O nome do seu clã não pode ser maior que {0} caracteres
your.clan.name.must.be.longer.than.characters=O nome do seu clã deve ser maior que {0} caracteres
your.clan.tag.can.only.contain.letters.numbers.and.color.codes=A tag do seu clã pode conter apenas letras, números e códigos de cor
your.clan.name.cannot.contain.color.codes=O nome do seu clã não pode conter códigos de cor
that.tag.name.is.disallowed=Essa tag não é permitida
you.must.first.resign=Você antes precisa abandonar {0}
clan.with.this.tag.already.exists=Um clã com essa tag já existe
get.your.clan.verified.to.access.advanced.features=Verifique o seu clã para ter acesso a funções mais avançadas
clan.created=Clã {0} criado
not.enough.leaders.online.to.vote.on.demotion=Não há líderes suficientes online para votar nesse rebaixamento
leaders.must.be.online.to.vote.on.demotion=Todos os líderes, exceto o rebaixado, precisam estar online para votar nesse rebaixamento
demotion.vote.has.been.requested.from.all.leaders=Um voto de rebaixamento foi pedido a todos os líderes
player.is.not.a.leader.of.your.clan=O jogador não é um líder do seu clã
clan.has.been.disbanded=Clã {0} foi debandado
clan.disband.vote.has.been.requested.from.all.leaders=Um voto para debandar o clã foi pedido a todos os líderes
friendy.fire.is.now.managed.by.your.clan=Fogo amigo é agora gerenciado pelo seu clã
personal.friendly.fire.is.set.to.allowed=Fogo amigo pessoal foi definido como permitido
global.friendy.fire.is.now.managed.by.each.clan=Fogo amigo global é agora gerenciado por cada clã
global.friendy.fire.is.already.being.managed.by.each.clan=Fogo amigo global já está sendo gerenciado por cada clã
global.friendly.fire.is.set.to.allowed=Fogo amigo global foi definido como permitido
global.friendly.fire.is.already.being.allowed=Fogo amigo global já está permitido
no.player.matched=Nenhum jogador encontrado
the.player.doesn.t.not.have.the.permissions.to.join.clans=O jogador não tem permissão para entrar em clãs
you.cannot.invite.yourself=Você não pode se convidar
this.player.is.banned.from.using.clan.commands=Este jogador foi banido de usar comandos de clãs
the.player.is.already.member.of.another.clan=Este jogador já é membro de outro clã
has.been.asked.to.join=Um convite foi enviado a {0} para entrar em {1}
you.cannot.kick.yourself=Você não pode se expulsar
the.player.is.not.a.member.of.your.clan=O jogador não é membro do seu clã
you.cannot.kick.another.leader=Você não pode expulsar outro líder
has.been.kicked.by={0} foi expulso por {1}
no.clans.have.been.created=Nenhum clã foi criado
total.clans=Total de clãs\:
legend=Legenda\:
kill.type.civilian=Tipo de morte\: {0}Civil
no.player.data.found=Nenhum dado de jogador encontrado
kill.type.0=Tipo de morte\: {0}
s.player.info=Detalhes de {0}
clan.0=Clã\: {0}
status.0=Estado\: {0}
rank.0=Cargo\: {0}
kdr.0=KDR\: {0}
deaths.0=Morreu\: {0}
fee.0.value.1=Taxa\: {0}, {1} $
join.date.0=Entrou\: {0}
last.seen.0=Visto por último\: {0}
past.clans.0=Clãs anteriores\: {0}
inactive.0=Inativo\: {0}
kill.totals=Matou\:
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}
name.0=Nome\: {0}
description.0=Descrição\: {0}
leaders.0=Líderes\: {0}
members.online.0=Membros Online\: {0}
allies.0=Aliados\: {0}
rivals.0=Rivais\: {0}
founded.0=Fundado\: {0}
the.member.to.be.promoted.must.be.online=O membro a ser promovido precisa estar online
the.player.does.not.have.the.permissions.to.lead.a.clan=O jogador não tem permissões para liderar um clã
you.cannot.promote.yourself=Você não pode se promover
all.leaders.must.be.online.to.vote.on.this.promotion=Todos os líderes devem estar online para votar nessa promoção
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ã
0.has.resigned={0} abandonou
only.trusted.players.can.access.clan.stats=Apenas jogadores confiáveis podem acessar as estatísticas do clã
you.cannot.trust.yourself=Você não pode se marcar como confiável
leaders.are.already.trusted=Líderes já são confiáveis
this.player.is.already.trusted=Este jogador já é confiável
has.been.given.trusted.status.by=A {0} foi dado status de confiável por {1}
this.player.is.not.banned=Este jogador não está banido
player.removed.from.the.banned.list=Jogador removido da lista de banidos
you.have.been.unbanned.from.clan.commands=Você foi desbanido de comandos de clã
you.cannot.untrust.yourself=Você não pode se marcar como não-confiável
leaders.cannot.be.untrusted=Líderes não podem ser não-confiáveis
this.player.is.already.untrusted=Este jogador já é não-confiável
has.been.given.untrusted.status.by=A {0} foi dado status de não-confiável por {1}
the.clan.does.not.exist=O clã não existe
the.clan.is.already.verified=O clã já é verificado
the.clan.has.been.verified=O clã foi verificado
clan.0.has.been.verified=O clã {0} foi verificado\!
only.trusted.players.can.access.clan.vitals=Apenas jogadores confiáveis podem acessar a saúde do clã
total.clan.players.0=Total de jogadores\: {0}
proposing.war={0} está propondo iniciar uma guerra com {1}
you.can.only.start.war.with.rivals=Você pode apenas iniciar guerras com rivais
leaders.have.been.asked.to.accept.the.war.request=Um pedido para iniciar uma guerra foi enviado para os líderes de {0}
leaders.asked.to.end.rivalry=Um pedido para finalizar a guerra foi enviado para os líderes de {0}
proposing.to.end.the.war={0} está propondo o fim da guerra com {1}
clans.already.at.war=Seus clãs já estão em guerra
clans.not.at.war=Seus clãs não estão em guerra
you.are.at.war={0} está agora em guerra com {1}
denied.war.req={0} negou o pedido de guerra enviado por {1}
you.are.no.longer.at.war={0} não está mais em guerra com {1}
end.war.denied=Pedido para finalizar a guerra foi negado por {0}
denied.war.end={0} negou o pedido de {1} para finalizar a guerra
0.war=/{0} war{1} iniciar/finalizar [tag] - Inicia ou finaliza uma guerra
has.initiated.a.rivalry={0} iniciou uma rivalidade com {1}
start=iniciar
end=finalizar
add=adicionar
remove=remover
allow=permitir
block=bloquear
auto=auto
war=guerra
0.s.sword.1.2.b.bow.3.4.a.arrow={0}E\=Espada{1}, {2}A\=Arco{3}, {4}F\=Flechas
weapon.S=E
weapon.B=A
weapon.A=F
materials=Materiais
armor.h=E
armor.c=P
armor.l=C
armor.B=B
diamond=Diamante
gold=Ouro
wood=Madeira
server.announce=Anúncio de Servidor
clan.announce=Anúncio de Clã
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
capeoff=Cape ativado
capeon=Capa ativada
bboff=BB desativado
bbon=BB ativado
tagoff=Tag desativada
tagon=Tag ativada
depositon=Depósitos ativados
depositoff=Depósitos desativados
withdrawon=Saques ativados
withdrawoff=Saques desativados
feeoff=Taxa ativada
feeon=Taxa desativada
home.base.only.once=A base só pode ser definida uma vez
now.at.homebase=Você está agora na base do clã {0}
hombase.set=Base do clã definida para\: {0}
hombase.cleared=Base do clã apagad
hombase.mod.set=Base de {0} definida para\:
hombase.not.set=Base não definida
rival.limit.reached=Você atingiu o máximo de rivais. Você não pode rivalizar com mais clãs.
you.moved.teleport.cancelled=Você se mexeu, teleporte cancelado
waiting.for.teleport.stand.still.for.0.seconds=Aguardando teleporte, fique parado por {0} segundos
no.teleport=Você não têm permissão para teleportar para aquela localização
on=ligar
off=desligar
leave=sair
join=entrar
mute=silenciar
player.rank.changed=O cargo foi definido
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}
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
player.clan.withdraw=Você sacou {0}
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
you.cannot.rival.your.own.clan=Você não pode fazer rivalidade com seu próprio clã
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
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
player.is.not.a.leader.of.any.clan=O jogador não é líder de nenhum clã
you.cannot.demote.the.last.leader=Você não pode rebaixar 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
bb.one.minute=1 minuto
bb.hours= horas
bb.one.hour=1 hora
bb.days= dias
bb.one.day=1 dia
the.fee.is.0.and.its.current.value.is.1=A taxa está {0} e seu valor atual é {1} $
fee.enabled=ativada
fee.disabled=desativada
fee.set=A taxa foi definida com sucesso
max.fee.allowed.is.0=A taxa máxima permitida é {0}
fee.collected={0} $ foram sacados para a taxa do clã
invalid.fee=O valor que você inseriu não é válido
player.purged=Os dados do jogador foram apagados com sucesso
upkeep.collected={0} $ foram sacados para a taxa de manutenção
balance.is.not.enough.for.upkeep=O saldo do clã não é suficiente para pagar a taxa de manutenção ({0} $), deposite a quantidade para evitar que seu clã seja debandado
your.clan.description.must.be.longer.than=A descrição do seu clã deve ser mais longa que {0} caracteres
your.clan.description.cannot.be.longer.than=A descrição do seu clã não pode ser mais longa que {0} caracteres
description.changed=Você mudou com sucesso a descrição do seu clã
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.0.permissions=Permissões do cargo {0}\:
available.rank.permissions=Permissões disponíveis para cargos\:
rank.already.exists=O cargo já existe
rank.0.does.not.exist=O cargo {0} não existe
rank.created=Cargo criado
invalid.permission={0} não é uma permissão válida\! Use uma destas\: {1}
permission.0.added.to.rank.1=Permissão {0} adicionada ao cargo {1}
permission.0.removed.from.rank.1=Permissão {0} removida do cargo {1}
rank.0.deleted=Cargo {0} deletado
usage.0.rank.create=Uso\: /{0} cargo create [nome]
usage.0.rank.setdisplayname=Uso\: /{0} cargo setdisplayname [cargo] [nome de exibição], o nome do exibição pode ter múltiplas palavras e conter cores
usage.0.rank.delete=Uso\: /{0} cargo delete [cargo]
usage.0.rank.permissions=Uso\: /{0} cargo permissions [cargo] [add/remove] [permissão]
usage.0.rank.assign=Uso\: /{0} cargo assign [jogador] [cargo]
usage.0.rank.unassign=Uso\: /{0} cargo unassign [jogador]
usage.0.rank=Uso\: /{0} cargo [create/assign/unassign/delete/list/setdisplayname/permissions]
clans.ranks=Cargos do clã\:
ranks.list.item={0}\# {1} ({2})
no.ranks=Nenhum cargo foi criado
rank.no.permissions=O cargo não tem nenhuma permissão
player.unassigned.from.rank=Jogador removido do cargo
rank.command=cargo
0.rank.create.rank.1.create.rank=/{0} cargo create [cargo]{1} - Cria um cargo
0.rank.assign.player.rank.1.assign.rank.to.player=/{0} cargo assign [jogador] [cargo]{1} - Dá um cargo a um membro
0.rank.unassign.player.1.unassign.player.from.rank=/{0} cargo unassign [jogador]{1} - Remove o membro de um cargo
0.rank.delete.rank.1.delete.rank=/{0} cargo delete [cargo]{1} - Deleta um cargo
0.rank.list.1.list.ranks=/{0} cargo list{1} - Lista os cargos
0.rank.setdisplayname.rank.displayname.1.set.rank.displayname=/{0} cargo setdisplayname [cargo] [nome de exibição]{1} - Defina o nome de exibição de um cargo
0.rank.permissions.1.list.available.permissions=/{0} cargo permissions{1} - Lista as permissões disponíveis
0.rank.permissions.rank.1.list.rank.permissions=/{0} cargo permissions [cargo]{1} - Lista as permissões do cargo
0.rank.permissions.rank.add.permission.1.add.a.permission.to.rank=/{0} cargo permissions [cargo] add [permissão]{1} - Adiciona uma permissão ao cargo
0.rank.permissions.rank.remove.permission.1.remove.a.permission.from.rank=/{0} cargo permissions [cargo] remove [permissão]{1} - Remove uma permissão do cargo
you.must.be.0.or.have.the.permission.1.to.use.this=Você deve ser {0} ou o seu líder deve dar ao seu cargo a permissão {1} para usar isso
deposit.not.allowed=Depósito não é permitido
withdraw.not.allowed=Saque não é permitido
resign.request.cancelled=Pedido para abandonar clã cancelado
promotion.vote.has.been.requested.from.all.leaders=Um voto de promoção foi pedido a todos os líderes
0.message.1.send.a.message.to.clan.chat=/{0} [mensagem]{1} - Envia uma mensagem para o chat do seu clã
@@ -0,0 +1,506 @@
description.command=описать
create.command=создать
list.command=списки
profile.command=профиль
roster.command=расписание
lookup.command=найти
leaderboard.command=таблицалидеров
alliances.command=друзья
rivalries.command=враг
vitals.command=части
coords.command=кординаты
stats.command=стата
ally.command=союз
rival.command=противник
bb.command=бб
cape.command=мысль
modtag.command=описание
toggle.command=переключить
invite.command=пригласить
kick.command=выгнать
bank.command=банк
fee.command=оплата
purge.command=очистка
trust.command=доверие
untrust.command=недоверие
promote.command=повысить
demote.command=скрыть
clanff.command=кланфф
ff.command=фф
resign.command=отойти
disband.command=разобрать
verify.command=верить
ban.command=бан
unban.command=разбанить
reload.command=Обновить
globalff.command=глобальный
kills.command=Убито
mostkilled.command=убийства
war.command=война
home.command=дома
setrank.command=поставить
place.command=местоположение
resetkdr.command=сбросить
usage.description=Использование\: /{0} description [описание]
usage.resetkdr=Использование\: /{0} resetkdr [all/player]
usage.clan.alliances=Использование\: /{0} alliances
usage.ally=Использование\: /{0} ally add/remove [tag]
usage.ban.unban=Использование\: /{0} запрет/разбанить [player]
usage.rival=Использование\: /{0} ally add/remove [tag]
usage.war=Использование\: /{0} war start/end [tag]
usage.cape.url=Использование\: /{0} cape [url]
usage.setrank=/{0} setrank [player] [rank], ранк модет быть несколькими словами и содержать коды цветов
usage.clanff=Использование\: /{0} clanff одобрить/блокировать
usage.0.coords=/{0} кординаты
usage.create.tag=/{0} создать [tag] [name]
usage.demote.leader=Использование\: /{0} demote [leader]
usage.0.disband=Использование\: /{0} disband
usage.0.ff.allow.auto=Использование\: /{0} ff одобрить/авто
usage.0.globalff.allow.auto=Использование\: /{0} globalff одобрить/авто
usage.0.permissions.player=Использование\: /{0} permission [клан] add/remove [разрешение]
usage.0.invite.player=Использование\: /{0} invite [игрок]
usage.kick.player=Применение\: /{0} kick [player]
usage.bank=Использование\: /{0} bank withdraw/deposit/status [количество]
usage.fee=Использование\: /{0} fee check/set [количество]
usage.purge=Использование\: /{0} purge [игрок]
usage.0.modtag.tag=Использование\: /{0} modtag [тег]
usage.list=Использование\: /{0} list [name/size/kdr/founded/active] [asc/desc]
usage.lookup.tag=Использование\: /{0} lookup [тег]
usage.0.profile.tag=Использование\: /{0} profile [тег]
usage.0.promote.member=Использование\: /{0} promote <member>
usage.0.rivalries=Использование\: /{0} rivalries
usage.0.roster.tag=Использование\: /{0} roster [тег]
usage.0.stats=Использование\: /{0} stats
usage.0.trust.player=Использование\: /{0} trust [игрок]
usage.0.untrust.player=Использование\: /{0} untrust [игрок]
usage.0.verify.tag=Использование\: /{0} verify [тег]
usage.0.vitals=Использование\: /{0} vitals
usage.0.place=Использование\: /{0} place [игрок] [тег]
usage.0.leaderboard=Использование\: /{0} leaderboard
0.reload.1.reload.configuration=/{0} reload{1} - Перезагрузить конфигурацию
0.globalff.allow.auto.1.set.global.friendly.fire=/{0} globalff одобрить/авто{1} - Устанавливает глобальную дружескую перестрелку
0.place=/{0} place [игрок] [тег]{1} - Разместить игрока в клане
0.ban.unban.player.1.ban.unban.a.player=/{0} ban/unban [игрок]{1} - Бан/Разбан игрока
0.hometp.clan.1.tp.home.a.clan=/{0} home tp [клан]{1} - Телепортирует в дом всех кланов
0.disband.tag.1.disband.a.clan=/{0} disband [тег]{1} - Распустить клан
0.resetkdr.1.resets.kdr=/{0} resetkdr player/all{1} - Сбросить KDR всех игроков или только одного
0.resetkdr.1.resets.your.kdr=/{0} resetkdr{1} - Сбросить KDR
0.purge.player.1.purge.a.player=/{0} purge [игрок]{1} - Очистить игрока
0.verify.tag.1.verify.an.unverified.clan=/{0} verify [тег]{1} - Подтвердить неподтвержденный клан
0.verify.1.purchase.verification.of.your.clan=/{0} verify{1} - Купить подтверждение Клана
0.list.1.lists.all.clans=/{0} list [порядок по] [asc/desc]{1} - Список всех кланов - (порядок\: name/size/kdr/founded/active)
0.profile.1.view.your.clan.s.profile=/{0} profile{1} - Посмотреть профиль вашего Клана
0.profile.tag.1.view.a.clan.s.profile=/{0} profile [тег]{1} - Посмотреть профиль Клана
0.lookup.1.lookup.your.info=/{0} lookup{1} - Найти вашу информацию
0.lookup.player.1.lookup.a.player.s.info=/{0} lookup [игрок]{1} - Найти информацию игрока
0.leaderboard.1.view.leaderboard=/{0} leaderboard{1} - Посмотреть список лидеров
0.alliances.1.view.all.clan.alliances=/{0} alliances{1} - Посмотреть все альянсы Клана
0.rivalries.1.view.all.clan.rivalries=/{0} rivalries{1} - Просмотр соперников всех кланов
0.roster.1.view.your.clan.s.member.list=/{0} roster{1} - Посмотреть список членов вашего клана
0.roster.tag.1.view.a.clan.s.member.list=/{0} roster [tag]{1} - Просмотреть список членов Клана
0.vitals.1.view.your.clan.member.s.vitals=/{0} vitals{1} - Смотрите силу члена клана
0.coords.1.view.your.clan.member.s.coordinates=/{0} coords{1} - Посмотреть координаты вашего товарища по клану
0.stats.1.view.your.clan.member.s.stats=/{0} stats{1} - Посмотреть статистику участника вашего Клана
0.ally.add.remove.tag.1.add.remove.an.ally.clan=/{0} ally add/remove [тег]{1} - Добавить/удалить союзника клана
0.rival.add.remove.tag.1.add.remove.a.rival.clan=/{0} rival add/remove [tag]{1} - Начать или закончить войну
0.bb.1.display.bulletin.board=/{0} bb{1} - Отображать доску объявлений
0.bb.msg.1.add.a.message.to.the.bulletin.board=/{0} bb [сообщение]{1} - Добавить сообщение в доску объявлений
0.modtag.tag.1.modify.the.clan.s.tag=/{0} motdtag [тег]{1} - Изменить тэг клана
0.description.description.1.modify.the.clan.s.description=/{0} description [описание]{1} - Изменить описание клана
0.cape.url.1.change.your.clan.s.cape=/{0} cape [ссылка]{1} - Изменить мысль клана
0.invite.player.1.invite.a.player=/{0} invite [игрок]{1} - Пригласить игрока
0.kick.player.1.kick.a.player.from.the.clan=/{0} kick [игрок]{1} - Выгнать игрока из клана
0.trust.untrust.player.1.set.trust.level1=/{0} trust [игрок]{1} - Установить доверенного участника
0.trust.untrust.player.1.set.trust.level2=/{0} untrust [игрок]{1} - Установить ненадежного участника
0.promote.member.1.promote.a.member.to.leader=/{0} promote [участник]{1} - Повысить участника клана до лидера
0.demote.leader.1.demote.a.leader.to.member=/{0} demote [лидер]{1} - Понизить лидера до участника
0.clanff.allow.block.1.toggle.clan.s.friendly.fire=/{0} clanff одобрить/блокировать{1} - Разрешить или запретить атаковать союзников Клана
0.ff.allow.auto.1.toggle.personal.friendly.fire=/{0} ff одобрить/авто{1} - Разрешить или выставить автоматически, урон по соклановцам
0.toggle.command=/{0} toggle [{2}]{1} - Изменить персональные настройки
0.resign.1.resign.from.the.clan=/{0} resign{1} - Выйти из клана
0.disband.1.disband.your.clan=/{0} disband{1} - Распустить ваш клан
0.trust.setrank=/{0} setrank [player] [rank]{1} - Дать игроку звание
0.create.tag.name.1.purchase.a.new.clan=/{0} create [tag] [name]{1} - Купить новый клан
0.create.tag.name.1.create.a.new.clan=/{0} create [tag] [name]{1} - Создать новый клан
0.kills=/{0} kills{1} - Посмотреть ваши убийства
0.killsplayer=/{0} kills [игрок]{1} - Посмотреть количество убийств игрока
0.fee.check=/{0} fee check {1} - Проверить, включена ли комиссия и сколько она составляет
0.fee.set=/{0} fee set [количество]{1} - Установить комиссию Клана
0.mostkilled=/{0} mostkilled{1} - Просмотреть общие количество убитых на всём сервере
home-menu=/{0} home{1} - Телепорт в клановый дом-базу
home-set-menu=/{0} home set{1} - Установить клановый дом базу
home-clear-menu=/{0} home clear{1} - Удалить клановый дом базу
home-regroup-menu=/{0} home regroup [me]{1} - Перегруппировать все всех участников к дому или базе клана или к вам
example.clan.modtag.4kfo.4l=Пример\: /clan modtag &4K&fo&4L
example.clan.create=Пример\: /clan create &6Kol Knights of the Labyrinth
clan=Клан
allies=Союзник
alliances=союзники
coords=корды
name=Имян
distance=Длина
coords.upper=Корды
world=Миров
kdr=КДР
members=Игроков
clans.lower=клан
rival=Враги
civilian=Гражданский
neutral=Общие
free.agent=Агент007
days=дней
rivals=Враги
rivalries=соперник
online=Онлайн
player=Игрок
seen=Узнать
leader=лидер
roster=список
trusted=доверять
untrusted=недоверять
deaths=Смерти
weights=Весит
stats=стата
health=Здравие
armor=Броня
weapons=Оружия
food=Пища
vitals=часть
verified=Проверен
unverified=Не проверен
profile=профиль
civilian.abbreviation=Жители
rank=Ранг
leaders=Капитан
none=Нету
today=Сейчас
kills=Убиты
mostkilled=Наибольшее число убийств
killcount=Число убитых
attacker=Нападают
victim=Жертва
kill.death.ratio=Соотношение убийств/смертей
nokillsfound=Убийств не найдено
version.loaded=[{0}] Версия {1} загружена
promoted.to.leader={0} был повышен до лидера
denied.demotion={0} отклонил понижение {1}. Консенсус не удался.
membership.invitation={0} отклонил приглашение в клан
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}
broken.the.rivalry={0} прекратили войну с {1}
broken.the.rivalry.with={0} прекратили войну с {1}
the.alliance.was.denied=Альянс с {0} был отклонен
denied.an.alliance={0} отказался от альянса с {1}
accepted.an.alliance={0} принял альянс с {1}
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}.
asking.for.the.deletion={0} просит удалить клан
asking.for.the.promotion={0} просит повышение {1}
asking.for.the.demotion={0} просит понизить {1}
accept.or.deny={0} или {1}
not.sufficient.money=На вашем балансе недостаточно средств
account.has.been.debited=С вашего баланса было списано {0}
mysql.connection.successful=Соединение с MySQL прошло успешно
mysql.connection.failed=Не удалось подключиться к MySQL
sqlite.connection.successful=Соединение с SQLite прошло успешно
sqlite.connection.failed= Не удалось подключиться к SQLite
purging.player.data=очистить данные игрока\: {0}
purging.clan=Очистка Клана\: {0}
clan.players=Участников в клане\: {0}
clans=Кланы\: {0}
banned=Вам запрещено использовать команды клана
nothing.more.to.see=Больше ничего нет
nothing.to.deny=Нечего запрещать
no.leader.permissions=Вы не имеете разрешения от лидера
you.have.already.voted=Вы уже проголосовали
has.voted.to.deny={0} проголосовал за отказ
nothing.to.accept=Нечего принимать
view.next.page=Введите /{0} для просмотра следующей страницы.
voted.to.accept={0} проголосовал за принятие
bulletin.board.header={0}* {1}{2} доска объявлений
has.been.disbanded.rivalry.ended={0} был распущен. Оборона завершена.
has.been.disbanded.alliance.ended={0} был распущен. Альянс окончен.
clan.disbanded=Клан распущен
1.color.day=1 {0}день
many.color.days={0}{1} дней
does.not.match=Не соответствует команде Клана
simpleclans.command.failure=Ошибка команды SimpleClans\: {0}
insufficient.permissions=Недостаточно прав
clan.is.not.verified=Клан не подтверждён
not.a.member.of.any.clan=Вы не состоите ни в одном клане
minimum.to.make.alliance=Ваш клан должен иметь минимум {0} игроков, чтобы заключить альянс
no.clan.matched=Нет подходящих кланов
cannot.ally.with.an.unverified.clan=Вы не можете присоединиться к неподтверждённому клану
your.clans.are.not.allies=Ваши кланы не являются союзниками
has.broken.the.alliance={0} разорвал альянс с {1}
at.least.one.leader.accept.the.alliance=Чтобы принять альянс, лидер должен быть онлайн.
leaders.have.been.asked.for.an.alliance={0} лидеров попросили заключить альянс
your.clans.are.already.allies=Ваши кланы уже являются союзниками
your.clan.cannot.create.rivals=Ваш клан не может начать воевать
min.players.rivalries=У вашего клана должно быть не менее {0} игроков, чтобы начать войну
this.player.is.already.banned=Этот игрок уже забанен
player.added.to.banned.list=Игрок был добавлен в бан-лист
you.banned=Вы были заблокированы в участие кланов
cape.must.be.png=Ссылка на описание должна указывать на изображение png
url.error=Ошибка в URL
changed.the.clan.cape={0} изменил описание клана
clan.wide.friendly.fire.blocked=Урон по соклановцам был отключен
clan.wide.friendly.fire.is.allowed=Урон по соклановцам был разрешен
only.trusted.players.can.access.clan.coords=Только доверенные игроки могут получить доступ к кординатам Клана
you.are.the.only.member.online=Вы единственный участник онлайн
your.clan.tag.cannot.be.longer.than.characters=Название кланого тега не может быть длиннее {0} символо
your.clan.tag.must.be.longer.than.characters=Ваш клановый тег должен быть длинее {0} символов
your.tag.cannot.contain.the.following.colors=Ваш тег не может содержать следующие цвета\: {0}
your.tag.cannot.contain.color.codes=Ваш тег не может содержать цветовые коды
you.cannot.set.colored.ranks=Вы не можете установить цветовые ранги
your.clan.name.cannot.be.longer.than.characters=Имя клана не может быть длинее {0} символов
your.clan.name.must.be.longer.than.characters=Название вашего клана должно быть длиннее {0} символов
your.clan.tag.can.only.contain.letters.numbers.and.color.codes=Тег вашего клана может содержать только буквы, цифры и цветовые коды
your.clan.name.cannot.contain.color.codes=Имя вашего клана не может содержать цветовые коды
that.tag.name.is.disallowed=Это имя тега запрещено
you.must.first.resign=Вы должны выйти из клана {0}
clan.with.this.tag.already.exists=Клан с таким тегом уже существует
get.your.clan.verified.to.access.advanced.features=Получите подтверждение клана чтобы получить доступ к расширенным функциям
clan.created=Клан {0} создан
not.enough.leaders.online.to.vote.on.demotion=Нет лидеров в сети, чтобы проголосовать за это понижение
leaders.must.be.online.to.vote.on.demotion=Все лидеры, не являющиеся пониженными, должны быть онлайн, чтобы голосовать за это пониженное
demotion.vote.has.been.requested.from.all.leaders=Поступила просьба о проведении голосования по предложению от всех лидеров
player.is.not.a.leader.of.your.clan=Игрок не является лидером вашего клана
clan.has.been.disbanded=Клан {0} был распущен
clan.disband.vote.has.been.requested.from.all.leaders=Запрошено участие в голосовании от всех Лидеров
friendy.fire.is.now.managed.by.your.clan=Урон по соклановцам управляется вашим кланом
personal.friendly.fire.is.set.to.allowed=Личные дружественные огни разрешены
global.friendy.fire.is.now.managed.by.each.clan=Глобальный дружеский огонь теперь управляется каждым кланом
global.friendy.fire.is.already.being.managed.by.each.clan=Урон по соклановцам на этом сервере уже управляется каждым кланом
global.friendly.fire.is.set.to.allowed=Урон по соклановцам на этом сервере разрешён
global.friendly.fire.is.already.being.allowed=Урон по соклановцам на этом сервере уже разрешён
no.player.matched=Нет подходящих игроков
the.player.doesn.t.not.have.the.permissions.to.join.clans=У игрока нет прав для вступления в клан
you.cannot.invite.yourself=Вы не можете пригласить себя
this.player.is.banned.from.using.clan.commands=Этому игроку нельзя взаимодействовать с кланами на сервере
the.player.is.already.member.of.another.clan=Игрок уже состоит в другом клане
has.been.asked.to.join={0} попросил присоединиться к {1}
you.cannot.kick.yourself=Вы не можете выгнать себя
the.player.is.not.a.member.of.your.clan=Игрок не является участником вашего клана
you.cannot.kick.another.leader=Вы не можете выгнать другого лидера
has.been.kicked.by={0} был выгнан из клана {1}
no.clans.have.been.created=Клан не был создан
total.clans=Всего кланов\:
legend=Легенда\:
kill.type.civilian=Тип убийства\: {0}Гражданский
no.player.data.found=Данные игрока не найдены
kill.type.0=Тип убийств\: {0}
s.player.info=Информация о игрока {0}
clan.0=Клан\: {0}
status.0=Статус\: {0}
rank.0=Ранг\: {0}
kdr.0=КДР\: {0}
deaths.0=Смертей\:
fee.0.value.1=Комиссия\: {0}, {1}$
join.date.0=Дата вступения\: {0}
last.seen.0=Последнее посещение\: {0}
past.clans.0=Прошлые Кланы\: {0}
inactive.0=Неактивно\: {0}
kill.totals=Всего убийств\:
clan.commands=команды клана
you.can.only.modify.the.color.and.case.of.the.tag=Вы можете изменить только цвет и регистр тега
tag.changed.to.0=Тег изменён на {0}
name.0=Имя\: {0}
description.0=Описание\:{0}
leaders.0=Лидер\: {0}
members.online.0=Участники в сети\: {0}
allies.0=Союзники\: {0}
rivals.0=Соперники\: {0}
founded.0=Надйено\: {0}
the.member.to.be.promoted.must.be.online=Участник должен быть онлайн
the.player.does.not.have.the.permissions.to.lead.a.clan=У игрока нет прав возглавить клан
you.cannot.promote.yourself=Вы не можете повысить себя\!
all.leaders.must.be.online.to.vote.on.this.promotion=Все лидеры должны быть в сети, чтобы проголосовать за это предположение
the.player.is.already.a.leader=Игрок уже является лидером
configuration.reloaded=Конфигурация перезагружена
last.leader.cannot.resign.you.must.appoint.another.leader.or.disband.the.clan=Последний лидер не может выйти. Вы должны назначить другого лидера или распустить клан
0.has.resigned={0} ушёл в отставку
only.trusted.players.can.access.clan.stats=Только доверенные игроки могут получить доступ к характеристикам Клана
you.cannot.trust.yourself=Вы не можете добавить доверие себе
leaders.are.already.trusted=Лидерам уже доверяют
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.cannot.untrust.yourself=Вы не можете изменить это
leaders.cannot.be.untrusted=Нельзя портить репутацию лидера
this.player.is.already.untrusted=Игроку уже не доверяют
has.been.given.untrusted.status.by={0} получил статус ненадёжного {1}
the.clan.does.not.exist=Клана не существует
the.clan.is.already.verified=Клан уже подтвержден
the.clan.has.been.verified=Клан был подтвержден
clan.0.has.been.verified=Клан {0} был подтвержден\!
only.trusted.players.can.access.clan.vitals=Только доверенные игроки могут получить доступ к виталам Клана
total.clan.players.0=Всего игроков\: {0}
proposing.war={0} предлагает начать войну с {1}
you.can.only.start.war.with.rivals=Вы можете объявить войну\!
leaders.have.been.asked.to.accept.the.war.request={0} запрос на объявление войн
leaders.asked.to.end.rivalry={0} лидеров попросили завершить войну
proposing.to.end.the.war={0} предлагает завершить войну с {1}
clans.already.at.war=Ваши кланы уже воюют
clans.not.at.war=Ваши кланы не воюют
you.are.at.war={0} воюет с {1}
denied.war.req={0} отклонил запрос войны, отправленный кланом {1}
you.are.no.longer.at.war={0} больше не воюют с {1}
end.war.denied={0} отклонил запрос о завершении войны
denied.war.end={0} отказал {1}в просьбе завершить войну
0.war=/{0} war{1} start/end [тег] - Начать или завершить войну
has.initiated.a.rivalry={0} начал войну с {1}
start=старт
end=всё
add=добавить
remove=удалить
allow=одобрить
block=блокировать
auto=авто
war=бой
0.s.sword.1.2.b.bow.3.4.a.arrow={0}М\=Меч{1}, {2}Л\=Лук{3}, {4}С\=Стрелы
weapon.S=М
weapon.B=Л
weapon.A=С
materials=Материалы
armor.h=Х
armor.c=С
armor.l=Л
armor.B=Б
diamond=алмаз
gold=золото
wood=древесина
server.announce=Объявление сервера
clan.announce=Объявления Клана
leader.announce=Объявление Лидера
hunger=Голод
stone=камень
iron=железо
the.clan.cannot.be.rivaled=Клан не может быть соперником
capeoff=Кейпл выключен
capeon=Кейп включён
bboff=BB выключен
bbon=BB включён
tagoff=Тег выключен
tagon=Тег включен
depositon=Пополнение включено
depositoff=Пополнение выключено
withdrawon=Вывод включён
withdrawoff=Вывод выключен
feeoff=Комиссия выключена
feeon=Комиссия включена
home.base.only.once=База клана может быть установлена лишь один раз
now.at.homebase=Вы сейчас находитесь на базе клана {0}
hombase.set=База клана\: {0}
hombase.cleared=База клана была удалена
hombase.mod.set=База клана {0}, была установлена на координатах\:
hombase.not.set=У клана нету базы
rival.limit.reached=Вы достигли лимита войн, пока что нельзя объявлять войны
you.moved.teleport.cancelled=Вы перемещены, телепорт отменён
waiting.for.teleport.stand.still.for.0.seconds=Ожидание телепортирования, осталось {0} секунд
no.teleport=Вы не можете телепортироваться в это место
on=включить
off=Выключить
leave=покинуть
join=присоединиться
mute=молчать
player.rank.changed=Ранг был установлен
your.clans.are.already.rivals=Между вашими кланами уже война
player.got.money=Вы получили {0} за убийство {1} , основанное на вашем KDR\: {2}
cleared.bb=Доска объявлений очищена
clan.balance=Баланс Клана\: {0}
bb.fee.player.kicked={0} был выгнан за невыплату комиссии
bb.fee.set={0} $ - это комиссия
bb.clan.deposit={0} $ сдано на хранение
player.clan.deposit=Вы вложили {0}
bb.clan.withdraw={0} $ снято
player.clan.withdraw=Вы снимаете {0}
clan.bank.not.enough.money=У вашего клана недостаточно денег
your.clans.are.not.rivals=Ваши кланы не воюют
you.cannot.rival.your.own.clan=Вы не можете вступить в свой клан
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 всех игроков
resign.yes=Да
resign.no=Не
resign.confirmation=Вы уверены, что хотите выйти? {0}
resign.success=Вы покинули клан
player.is.not.a.leader.of.any.clan=Игрок не является лидером клана
you.cannot.demote.the.last.leader=Вы не можете понизить последнего лидера
player.successfully.demoted=Игрок был понижен
bb.ago= назад
bb.moments=моменты
bb.seconds= Секунды
bb.minutes= Минут (-ы)
bb.one.minute=1 минута
bb.hours= часов
bb.one.hour=1 час
bb.days= дней
bb.one.day=1 день
the.fee.is.0.and.its.current.value.is.1=Комиссия равна {0}, а ее текущее значение {1}$
fee.enabled=включено
fee.disabled=выключено
fee.set=Комиссия успешно установлена
max.fee.allowed.is.0=Максимальный размер комиссии {0}
fee.collected={0} $ были сняты за вознаграждение Клана
invalid.fee=Введенное значение недопустимо
player.purged=Игрок был успешно очищен
upkeep.collected={0} $ были отозваны на содержание
balance.is.not.enough.for.upkeep=Баланс Клана недостаточно для оплаты содержания ({0} $), пополните счет чтобы избежать роспуска
your.clan.description.must.be.longer.than=Описание вашего клана должно быть длиннее, чем {0} символов
your.clan.description.cannot.be.longer.than=Описание клана не может быть длиннее {0} символов
description.changed=Вы успешно изменили описание клана
no.description=Нет описания
the.player.must.wait.0.before.joining.your.clan.again=Этот игрок должен подождать {0} минут, прежде чем снова вступить в Клан
disabled.command=Команда отключена
rank.displayname.updated=Отображаемое имя ранга обновлено\!
rank.0.permissions=Разрешения {0}ранга\:
available.rank.permissions=Доступные права для ранга\:
rank.already.exists=Ранг уже существует
rank.0.does.not.exist=Ранг {0} не существует
rank.created=Ранг создан
invalid.permission={0} не является допустимым разрешением\! Используйте одно из них\: {1}
permission.0.added.to.rank.1=Разрешение {0} добавлено в ранг {1}
permission.0.removed.from.rank.1=Разрешение {0} удалено из ранга {1}
rank.0.deleted=Ранг {0} удален
usage.0.rank.create=Использование\: /{0} rank create [название]
usage.0.rank.setdisplayname=Использование\: /{0} rank setdisplayname [ранг] [ОИ], ОИ - отображаемое имя может быть несколькими мирами и содержать коды цветов
usage.0.rank.delete=Использование\: /{0} rank delete [ранг]
usage.0.rank.permissions=Использование\: /{0} rank permissions [ранг] [add/remove] [разрешение]
usage.0.rank.assign=Использование\: /{0} rank assign [игрок] [ранг]
usage.0.rank.unassign=Использование\: /{0} rank unassign [игрок]
usage.0.rank=Использование\: /{0} rank [create/assign/unassign/delete/list/setdisplayname/permissions]
clans.ranks=Рейтинг клана\:
ranks.list.item={0}\# {1} ({2})
no.ranks=Нет рангов
rank.no.permissions=У этого ранга нет прав
player.unassigned.from.rank=Игроку не присвоен ранг
rank.command=ранг
0.rank.create.rank.1.create.rank=/{0} rank create [ранг]{1} - Создать ранг
0.rank.assign.player.rank.1.assign.rank.to.player=/{0} rank assign [игрок] [ранг]{1} - Выдать ранг игроку
0.rank.unassign.player.1.unassign.player.from.rank=/{0} rank unassign [игрок]{1} - Убрать у участника ранг
0.rank.delete.rank.1.delete.rank=/{0} rank delete [ранг]{1} - Удалить ранг
0.rank.list.1.list.ranks=/{0} rank list{1} - Список рангов
0.rank.setdisplayname.rank.displayname.1.set.rank.displayname=/{0} rank setdisplayname [ранг] [ОИ]{1} - Установите отображаемое имя ранга
0.rank.permissions.1.list.available.permissions=/{0} rank permissions{1} - Список доступных разрешений
0.rank.permissions.rank.1.list.rank.permissions=/{0} rank permissions [ранг]{1} - Список разрешений ранга
0.rank.permissions.rank.add.permission.1.add.a.permission.to.rank=/{0} rank permissions [ранг] add [разрешение]{1} - Добавить разрешение для ранга
0.rank.permissions.rank.remove.permission.1.remove.a.permission.from.rank=/{0} rank permissions [ранг] remove [разрешение]{1} - Удалить разрешение для ранга
you.must.be.0.or.have.the.permission.1.to.use.this=Вы должны быть {0} или ваш лидер должен дать вам разрешение {1} на использование этого
deposit.not.allowed=Пополнение не разрешено
withdraw.not.allowed=Вывод не разрешен
resign.request.cancelled=Запрос выравнивания отменён
promotion.vote.has.been.requested.from.all.leaders=Поступила просьба о проведении голосования от всех лидеров
0.message.1.send.a.message.to.clan.chat=/{0} [сообщение]{1} - Послать сообщение в чат вашего Клана
@@ -0,0 +1,64 @@
description.command=описання
create.command=створити
list.command=список
profile.command=профіль
roster.command=\nперелік
lookup.command=пошук
leaderboard.command=таблиця лідерів
alliances.command=союзники
rivalries.command=суперники
vitals.command=Потужності
coords.command=координати
stats.command=статистика
ally.command=союзник
rival.command=суперник
modtag.command=Опис
toggle.command=перемкнути
invite.command=запрошення
kick.command=виключення
bank.command=банк
fee.command=комісія
purge.command=Очистити
trust.command=довіра
untrust.command=не довіряти
promote.command=підвищити
demote.command=Понизити
clanff.command=кланфф
resign.command=залишити
disband.command=розпустити
verify.command=перевірити
ban.command=бан
unban.command=розблокувати
reload.command=Перезавантажити
kills.command=вбивства
mostkilled.command=найбільша кількість убитих
war.command=війна
home.command=дім
setrank.command=\nвстановити ранг
place.command=місце
resetkdr.command=РесетКДР
usage.description=Використання\: /{0} description [опис]
usage.resetkdr=Використання\: /{0} resetkdr [all/player]
usage.clan.alliances=Використання\: /{0} alliances
usage.ally=Використання\: /{0} ally add/remove [тег]
usage.ban.unban=Використання\: /{0} ban/unban [player]
usage.rival=Використання\: /{0} rival add/remove [tag]
usage.war=Використання\: /{0} war start/end [tag]
usage.cape.url=Використання\: /{0} cape [url]
usage.clanff=Використання\: /{0} clanff allow/auto
usage.0.coords=Використання\: /{0} coords
usage.create.tag=Використання\: /{0} create [tag] [name]
usage.demote.leader=Використання\: /{0} demote [лідер]
usage.0.disband=Використання\: /{0} disband
usage.0.ff.allow.auto=Використання\: /{0} ff allow/auto
usage.0.globalff.allow.auto=Використання\: /{0} globalff allow/auto
usage.0.permissions.player=Використання\: /{0} permissions [clan] add/remove [permission]
usage.0.invite.player=Використання\: /{0} invite [player]
usage.kick.player=Використання\: /{0} kick [player]
usage.bank=Використання\: /{0} bank withdraw/deposit/status [amount]
usage.fee=Використання\: /{0} fee check/set [amount]
usage.purge=Використання\: /{0} purge [player]
usage.0.modtag.tag=Використання\: /{0} modtag [tag]
usage.list=Використання\: /{0} list [name/size/kdr/founded/active] [asc/desc]
usage.lookup.tag=Використання\: /{0} lookup [tag]
usage.0.profile.tag=Використання\: /{0} profile [tag]
@@ -0,0 +1,388 @@
create.command=创建
list.command=列表
profile.command=信息
roster.command=名单
lookup.command=详情
leaderboard.command=排行榜
alliances.command=联盟
rivalries.command=敌对
vitals.command=生命
coords.command=坐标
stats.command=统计
ally.command=联盟
rival.command=敌对
bb.command=公告板
cape.command=披风
modtag.command=更改标签
toggle.command=切换
invite.command=邀请
kick.command=移除
bank.command=银行
trust.command=信任
untrust.command=取消信任
promote.command=提升
demote.command=降级
clanff.command=帮派友军伤害
ff.command=友军伤害
resign.command=离开
disband.command=解散
verify.command=验证
ban.command=封禁
unban.command=解封
reload.command=重载
globalff.command=全局友军伤害
kills.command=击杀
mostkilled.command=死亡排名
war.command=战争
home.command=基地
setrank.command=设置称号
place.command=移动
usage.clan.alliances=使用\: /{0} alliances
usage.ally=使用\: /{0} ally add/remove [标签]
usage.ban.unban=使用\: /{0} ban/unban [玩家]
usage.rival=使用\: /{0} rival add/remove [标签]
usage.war=使用\: /{0} war start/end [标签]
usage.cape.url=使用\: /{0} cape [链接]
usage.setrank=使用\: /{0} setrank [玩家] [称号], 称号可以是多个词,可含有颜色代码
usage.clanff=使用\: /{0} clanff allow/block
usage.0.coords=使用\: /{0} coords
usage.create.tag=使用\: /{0} create [标签] [名称]
usage.demote.leader=使用\: /{0} demote [老大]
usage.0.disband=使用\: /{0} disband
usage.0.ff.allow.auto=使用\: /{0} ff allow/auto
usage.0.globalff.allow.auto=使用\: /{0} globalff allow/auto
usage.0.permissions.player=使用\: /{0} permissions [帮派] add/remove [权限]
usage.0.invite.player=使用\: /{0} invite [玩家]
usage.kick.player=使用\: /{0} kick [玩家]
usage.bank=使用\: /{0} bank withdraw/deposit/status [数量]
usage.0.modtag.tag=使用\: /{0} modtag [标签]
usage.lookup.tag=使用\: /{0} lookup [标签]
usage.0.profile.tag=使用\: /{0} profile [标签]
usage.0.promote.member=使用\: /{0} promote <成员>
usage.0.rivalries=使用\: /{0} rivalries
usage.0.roster.tag=使用\: /{0} roster [标签]
usage.0.stats=使用\: /{0} stats
usage.0.trust.player=使用\: /{0} trust [玩家]
usage.0.untrust.player=使用\: /{0} untrust [玩家]
usage.0.verify.tag=使用\: /{0} verify [标签]
usage.0.vitals=使用\: /{0} vitals
usage.0.place=使用\: /{0} place [玩家] [标签]
usage.0.leaderboard=使用\: /{0} leaderboard
0.reload.1.reload.configuration=/{0} reload{1} - 重载配置
0.globalff.allow.auto.1.set.global.friendly.fire=/{0} globalff allow/auto {1} - 设置全局友军伤害
0.place=/{0} place [玩家] [标签]{1} - 将玩家加入帮派
0.ban.unban.player.1.ban.unban.a.player=/{0} ban/unban [玩家]{1} - 封禁/解封一个玩家
0.hometp.clan.1.tp.home.a.clan=/{0} home tp [帮派]{1} - 传送至帮派基地
0.disband.tag.1.disband.a.clan=/{0} disband [标签]{1} - 解禁帮派
0.verify.tag.1.verify.an.unverified.clan=/{0} verify [标签]{1} - 验证一个帮派
0.verify.1.purchase.verification.of.your.clan=/{0} verify{1} - 付费验证你的帮派
0.profile.1.view.your.clan.s.profile=/{0} profile{1} - 查看你的帮派的信息
0.profile.tag.1.view.a.clan.s.profile=/{0} profile [标签]{1} - 查看帮派信息
0.lookup.player.1.lookup.a.player.s.info=/{0} lookup [玩家]{1} - 查看玩家信息
0.leaderboard.1.view.leaderboard=/{0} leaderboard{1} - 查看排行榜
0.alliances.1.view.all.clan.alliances=/{0} alliances{1} - 查看帮派联盟
0.rivalries.1.view.all.clan.rivalries=/{0} rivalries{1} - 查看帮派敌对
0.roster.1.view.your.clan.s.member.list=/{0} roster{1} - 查看你的帮派的成员列表
0.roster.tag.1.view.a.clan.s.member.list=/{0} roster [标签]{1} - 查看帮派的成员列表
0.vitals.1.view.your.clan.member.s.vitals=/{0} vitals{1} - 查看你的帮派玩家的生命
0.coords.1.view.your.clan.member.s.coordinates=/{0} coords{1} - 查看你的帮派玩家的坐标
0.stats.1.view.your.clan.member.s.stats=/{0} stats{1} - 查看你的帮派玩家的统计
0.ally.add.remove.tag.1.add.remove.an.ally.clan=/{0} ally add/remove [标签]{1} - 添加/移除一个联盟帮派
0.rival.add.remove.tag.1.add.remove.a.rival.clan=/{0} rival add/remove [标签]{1} - 添加/移除一个敌对帮派
0.bb.1.display.bulletin.board=/{0} bb{1} - 显示公告板
0.bb.msg.1.add.a.message.to.the.bulletin.board=/{0} bb [msg]{1} - 添加信息到公告板
0.modtag.tag.1.modify.the.clan.s.tag=/{0} modtag [标签]{1} - 更改帮派标签
0.cape.url.1.change.your.clan.s.cape=/{0} cape [url]{1} - 更改帮派披风
0.invite.player.1.invite.a.player=/{0} invite [玩家]{1} - 邀请玩家
0.kick.player.1.kick.a.player.from.the.clan=/{0} kick [玩家]{1} - 将玩家踢出帮派
0.trust.untrust.player.1.set.trust.level1=/{0} trust [玩家]{1} - 设置成员为信任
0.trust.untrust.player.1.set.trust.level2=/{0} untrust [玩家]{1} - 取消成员信任
0.promote.member.1.promote.a.member.to.leader=/{0} promote [member]{1} - 提升一个成员为老大
0.demote.leader.1.demote.a.leader.to.member=/{0} demote [leader]{1} - 降级一个老大为成员
0.clanff.allow.block.1.toggle.clan.s.friendly.fire=/{0} clanff allow/block{1} - 切换帮派的友军伤害
0.ff.allow.auto.1.toggle.personal.friendly.fire=/{0} ff allow/auto{1} - 切换个人的友军伤害
0.toggle.command=/{0} toggle [{2}]{1} - 切换个人设置
0.resign.1.resign.from.the.clan=/{0} resign{1} - 离开目前的帮派
0.disband.1.disband.your.clan=/{0} disband{1} - 解散你的帮派
0.trust.setrank=/{0} setrank [玩家] [rank]{1} - 给成员称号
0.create.tag.name.1.purchase.a.new.clan=/{0} create [标签] [name]{1} - 购买新的帮派
0.create.tag.name.1.create.a.new.clan=/{0} create [标签] [name]{1} - 创建新的帮派
0.kills=/{0} kills{1} - 查看你的击杀量
0.killsplayer=/{0} kills [玩家]{1} - 查看玩家的击杀量
0.mostkilled=/{0} mostkilled{1} - 查看全服死亡排名
home-menu=/{0} home{1} - 传送至帮派基地
home-set-menu=/{0} home set{1} - 设置帮派基地
home-clear-menu=/{0} home clear{1} - 清除帮派基地
example.clan.modtag.4kfo.4l=示例\: /clan modtag &4帅
example.clan.create=示例\: /clan create &4大帅比
clan=帮派
allies=联盟
alliances=联盟
coords=坐标
name=名称
distance=距离
coords.upper=坐标
world=世界
kdr=KD
members=成员
clans.lower=帮派
rival=敌对
civilian=平民
neutral=中立
days=天
rivals=敌对
rivalries=敌对
online=在线
player=玩家
seen=上线
leader=老大
roster=名单
trusted=信任
untrusted=失信
deaths=死亡
weights=权重
stats=统计
health=生命
armor=护甲
weapons=武器
food=食物
vitals=生命
verified=已验证
unverified=未验证
profile=信息
civilian.abbreviation=平民
rank=称号
leaders=老大
none=无
today=今天
kills=击杀
mostkilled=最多死亡
killcount=击杀数
attacker=攻击者
victim=死者
kill.death.ratio=KD 比值
nokillsfound=无击杀
version.loaded=[{0}] 版本 {1} 已加载
promoted.to.leader={0} 被提升为老大
denied.demotion={0} 拒绝了对 {1} 的降级. 未达成共识.
membership.invitation={0} 拒绝了邀请
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} 和好
broken.the.rivalry={0} 停止与 {1} 的敌对
broken.the.rivalry.with={0} 停止了与 {1} 的敌对
the.alliance.was.denied=与 {0} 的联盟被拒绝
denied.an.alliance={0} 拒绝了 {1} 的联盟
accepted.an.alliance={0} 接受了 {1} 的联盟
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}
asking.for.the.deletion={0} 正在请求删除帮派
asking.for.the.promotion={0} 正在请求 {1} 的提升
asking.for.the.demotion={0} 正在请求 {1} 的降级
accept.or.deny={0} 或 {1}
not.sufficient.money=您的账户没有足够的资金
account.has.been.debited=你的账户已经被扣除了 {0}
mysql.connection.successful=MySQL 连接成功
mysql.connection.failed=MySQL 连接成功
sqlite.connection.successful=SQLite 连接成功
sqlite.connection.failed= SQLite 连接失败
purging.player.data=正在清除玩家数据\: {0}
purging.clan=正在清除帮派\: {0}
clan.players=帮派玩家\: {0}
clans=帮派\: {0}
banned=你被禁止使用帮派命令
nothing.more.to.see=没有更多
nothing.to.deny=没有拒绝的事务
no.leader.permissions=你没有老大权限
you.have.already.voted=你已经投票了
has.voted.to.deny={0} 投了拒绝票
nothing.to.accept=没有可接受的事务
view.next.page=输入 /{0} 查看下一页.
voted.to.accept={0} 投了接受票
bulletin.board.header={0}* {1}{2} 公告板
has.been.disbanded.rivalry.ended={0} 解散了. 敌对终结了.
has.been.disbanded.alliance.ended={0} 解散了. 联盟终结了.
clan.disbanded=帮派已解散
1.color.day=1 {0}天
many.color.days={0}{1} 天
does.not.match=没有匹配的帮派命令
simpleclans.command.failure=SimpleClans 命令失败\: {0}
insufficient.permissions=权限不足
clan.is.not.verified=帮派未验证
not.a.member.of.any.clan=你不是任何帮派的成员
minimum.to.make.alliance=你的帮派至少要有 {0} 名玩家才能建立联盟
no.clan.matched=没有匹配的帮派
cannot.ally.with.an.unverified.clan=你不能和未验证的帮派建立联盟
your.clans.are.not.allies=你的帮派不是联盟
has.broken.the.alliance={0} 停止了与 {1} 的联盟
at.least.one.leader.accept.the.alliance=至少一个老大在线才能接受联盟
leaders.have.been.asked.for.an.alliance={0} 老大请求联盟
your.clans.are.already.allies=你的帮派已经联盟
your.clan.cannot.create.rivals=你的帮派不能创建敌对帮派
min.players.rivalries=你的帮派至少要有 {0} 名玩家才能建立敌对
this.player.is.already.banned=这个玩家已经被封禁
player.added.to.banned.list=玩家添加至封禁列表
you.banned=你被禁止使用帮派命令
cape.must.be.png=披风链接必须指向一个 PNG 图片
url.error=URL 返回了一个错误. 请检查是否正确.
changed.the.clan.cape={0} 更改了帮派披风
clan.wide.friendly.fire.blocked=帮派友军伤害已经禁止
clan.wide.friendly.fire.is.allowed=帮派友军伤害已经启用
only.trusted.players.can.access.clan.coords=只有信任的成员能够前往公会基地
you.are.the.only.member.online=你是唯一在线的成员
your.clan.tag.cannot.be.longer.than.characters=你的帮派的标签不能超过 {0} 字符
your.clan.tag.must.be.longer.than.characters=你的帮派的标签必须超过 {0} 字符
your.tag.cannot.contain.the.following.colors=帮派的标签不能含有以下颜色\: {0}
your.clan.name.cannot.be.longer.than.characters=你的帮派的名称不能超过 {0} 字符
your.clan.name.must.be.longer.than.characters=你的帮派的名称必须超过 {0} 字符
your.clan.tag.can.only.contain.letters.numbers.and.color.codes=帮派的标签只能含有字母、数字和颜色代码
your.clan.name.cannot.contain.color.codes=帮派的名称不能含有颜色
that.tag.name.is.disallowed=这个标签名不被允许
you.must.first.resign=你必须先离开 {0}
clan.with.this.tag.already.exists=此标签的帮派已经存在
get.your.clan.verified.to.access.advanced.features=验证你的帮派以使用高级功能
clan.created=帮派 {0} 创建了
leaders.must.be.online.to.vote.on.demotion=除了此降级的老大以外的所有老大必须全部在线才能降级
demotion.vote.has.been.requested.from.all.leaders=所有老大都要求降级
player.is.not.a.leader.of.your.clan=这个玩家不是你的帮派的老大
clan.has.been.disbanded=帮派 {0} 已经解散了
clan.disband.vote.has.been.requested.from.all.leaders=所有老大都要求解散帮派
friendy.fire.is.now.managed.by.your.clan=友军伤害现在由您的帮派管理
personal.friendly.fire.is.set.to.allowed=个人的友军伤害已经开启
global.friendy.fire.is.now.managed.by.each.clan=全局的友军伤害现在由各个帮派管理
global.friendy.fire.is.already.being.managed.by.each.clan=全局的友军伤害已经由各个帮派管理了
global.friendly.fire.is.set.to.allowed=全局的友军伤害已经启用
global.friendly.fire.is.already.being.allowed=全局的友军伤害已经启用了
no.player.matched=没有匹配的玩家
the.player.doesn.t.not.have.the.permissions.to.join.clans=玩家没有加入此帮派的权限
you.cannot.invite.yourself=你不能邀请你自己
this.player.is.banned.from.using.clan.commands=此玩家被禁止使用此命令
the.player.is.already.member.of.another.clan=此玩家已经是其他帮派的成员了
has.been.asked.to.join={0} 已经被请求加入 {1} 了
you.cannot.kick.yourself=你不能踢出你自己
the.player.is.not.a.member.of.your.clan=此玩家不是你的帮派的成员
you.cannot.kick.another.leader=你不能踢出另一个老大
has.been.kicked.by={0} 已经被 {1} 踢出了
no.clans.have.been.created=没有帮派被创建
total.clans=总帮派\:
kill.type.civilian=击杀种类\: {0}平民
no.player.data.found=没有找到玩家数据
kill.type.0=击杀种类\: {0}
s.player.info={0} 的玩家信息
clan.0=帮派\: {0}
status.0=状态\: {0}
rank.0=称号\: {0}
kdr.0=KD\: {0}
deaths.0=死亡\: {0}
join.date.0=加入日期\: {0}
last.seen.0=最后上线\: {0}
past.clans.0=曾经的帮派\: {0}
inactive.0=不活跃\: {0}
kill.totals=总击杀\:
clan.commands=帮派命令
you.can.only.modify.the.color.and.case.of.the.tag=你只能更改标签的颜色和大小写
tag.changed.to.0=标签更改为 {0}
name.0=名称\: {0}
leaders.0=老大\: {0}
members.online.0=在线成员\: {0}
allies.0=联盟\: {0}
rivals.0=敌对\: {0}
founded.0=成立\: {0}
the.member.to.be.promoted.must.be.online=提升的成员必须在线
the.player.does.not.have.the.permissions.to.lead.a.clan=玩家没有做老大的权限
you.cannot.promote.yourself=你不能提升你自己
all.leaders.must.be.online.to.vote.on.this.promotion=所有老大必须在线投票此提升
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} 已经离职
only.trusted.players.can.access.clan.stats=只有信任的成员能够查看统计
you.cannot.trust.yourself=你不能信任你自己
leaders.are.already.trusted=老大已经被信任
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.cannot.untrust.yourself=你不能不信任你自己
leaders.cannot.be.untrusted=老大不能被取消信任
this.player.is.already.untrusted=此玩家已经不被信任了
has.been.given.untrusted.status.by={0} 已经被 {1} 不信任了
the.clan.does.not.exist=此帮派不存在
the.clan.is.already.verified=此帮派已经验证了
the.clan.has.been.verified=此帮派已经验证
clan.0.has.been.verified=帮派 {0} 已经被验证\!
only.trusted.players.can.access.clan.vitals=只有信任的成员能够查看帮派生命
total.clan.players.0=总帮派玩家\: {0}
proposing.war={0} 正在请求与 {1} 的战争
you.can.only.start.war.with.rivals=你只能和敌对帮派展开战争
leaders.have.been.asked.to.accept.the.war.request={0} 老大已经被请求接受战争请求
leaders.asked.to.end.rivalry={0} 老大已经被请求接受停战请求
proposing.to.end.the.war={0} 正在请求与 {1} 停战
clans.already.at.war=你的帮派已经处于战争中了
clans.not.at.war=你的帮派没有处于战争中
you.are.at.war={0} 现在与 {1} 开战
denied.war.req={0} 拒绝了 {1} 发送的开战请求
you.are.no.longer.at.war={0} 不再与 {1} 战争了
end.war.denied=停战请求被 {0} 拒绝了
denied.war.end={0} 拒绝了 {1} 的停战请求
0.war=/{0} war{1} start/end [标签] - 开始或停止一场战争
has.initiated.a.rivalry={0} 已经将 {1} 设置为敌对
start=开始
end=停止
add=添加
remove=移除
allow=允许
block=阻止
auto=自动
war=战争
materials=材料
diamond=钻石
gold=金
wood=木
server.announce=服务器公告
clan.announce=帮派公告
leader.announce=老大公告
hunger=饥饿
the.clan.cannot.be.rivaled=这个帮派不能敌对
capeoff=披风已关闭
capeon=披风已开启
bboff=公告板已关闭
bbon=公告板已开启
tagoff=标签已关闭
tagon=标签已开启
home.base.only.once=基地只能设置一次
now.at.homebase=你现在在 {0} 的基地
hombase.set=帮派基地设置为\: {0}
hombase.cleared=帮派基地已清除
hombase.mod.set={0} 的基地设置为\:
hombase.not.set=基地未设置
rival.limit.reached=你达到了敌对数量上限. 你不能再和其他帮派敌对了.
you.moved.teleport.cancelled=你移动了,传送请求取消
waiting.for.teleport.stand.still.for.0.seconds=等待传送于 {0} 秒内开始
no.teleport=你不被允许传送至该位置
on=开
off=关
leave=离开
join=加入
mute=禁言
player.rank.changed=称号被设置为
your.clans.are.already.rivals=你的帮派已经是敌对了
player.got.money=你因为击杀 {1} 而获得了基于 KD\: {2} 的 {0}
cleared.bb=清空了公告板
clan.balance=帮派经济\: {0}
bb.clan.deposit={0} $ 已存入
player.clan.deposit=你存入了 {0}
bb.clan.withdraw={0} $ 被取出
player.clan.withdraw=你取出了 {0}
clan.bank.not.enough.money=你的帮派银行资金不足
your.clans.are.not.rivals=你的帮派不是敌对
the.clan.members.reached.limit=帮派成员达到上限
@@ -0,0 +1,2 @@
description.command=說明
create.command=創建於
+265 -208
View File
@@ -1,208 +1,265 @@
name: SimpleClans
main: net.sacredlabyrinth.phaed.simpleclans.SimpleClans
version: ${project.version}
softdepend: [VanishNoPacket, Permissions, PermissionsBukkit, Vault, PermissionsEx, mChat, mChatSuite]
permissions:
simpleclans.admin.permissions:
description: Can grant clans permissions
simpleclans.admin.reload:
description: Can reload configuration
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.mod.verify:
description: Can verify simpleclans
simpleclans.mod.ban:
description: Can ban players from the entire plugin
simpleclans.mod.disband:
description: Can disband any clan
simpleclans.mod.globalff:
description: Can turn off global friendly fire protection
simpleclans.mod.nohide:
description: Messages from these players cannot be hidden via chat commands
simpleclans.mod.home:
description: Can set other clan's home
simpleclans.mod.hometp:
description: Can teleport to all clans homes
simpleclans.mod.bypass:
description: Can bypass restrictions
simpleclans.mod.nopvpinwar:
description: Can bypass pvp in wars
simpleclans.anyone.list:
description: Can list simpleclans
simpleclans.anyone.profile:
description: Can view a clan's profile
simpleclans.anyone.roster:
description: Can veiw a clan's member list
simpleclans.anyone.lookup:
description: Can lookup a player's info
simpleclans.anyone.leaderboard:
description: Can view the leaderboard
simpleclans.anyone.alliances:
description: Can view alliances by clan
simpleclans.anyone.rivalries:
description: Can view rivalries by clan
simpleclans.member.profile:
description: Can view his own clan's profile
simpleclans.member.roster:
description: Can view his own clan's member list
simpleclans.member.lookup:
description: Can view his own player info
simpleclans.member.vitals:
description: Can view his clan's vitals
simpleclans.member.coords:
description: Can view his clan's coords
simpleclans.member.stats:
description: Can view his simpleclans stats
simpleclans.member.bb:
description: Can view his clan's bulletin board
simpleclans.member.bb-add:
description: Can add to his clan's bulletin board
simpleclans.member.bb-toggle:
description: Can toggle bb on/off
simpleclans.member.ff:
description: Can toggle his own friendly fire
simpleclans.member.resign:
description: Can resign from his clan
simpleclans.member.ally:
description: Can use ally chat
simpleclans.member.chat:
description: Can use clan chat
simpleclans.member.can-join:
description: Can join clans
simpleclans.member.home:
description: Can tp to home base
simpleclans.member.resetkdr:
description: Can reset his kdr
simpleclans.leader.create:
description: Can create simpleclans
simpleclans.leader.verify:
description: Can verify his clan
simpleclans.leader.home-set:
description: Can set home base
simpleclans.leader.home-regroup:
description: Can tp entire clan to homebase
simpleclans.leader.ally:
description: Can ally his clan with other simpleclans
simpleclans.leader.rival:
description: Can start a rivalry with another clan
simpleclans.leader.modtag:
description: Can modify his clan's tag
simpleclans.leader.cape:
description: Can set his clan's cape url
simpleclans.member.cape-toggle:
description: Can toggle his cape on/off
simpleclans.member.kills:
description: Can view his and other's kills
simpleclans.member.tag-toggle:
description: Can hide his own clan tag
simpleclans.mod.mostkilled:
description: Can view his and other's clans mostkilled
simpleclans.mod.keep-items:
description: Can keep items when teleporting home
simpleclans.mod.place:
description: Can manually place players in clans
simpleclans.leader.invite:
description: Can invite players into his clan
simpleclans.leader.kick:
description: Can kick players form his tea,
simpleclans.leader.promote:
description: Can promote players to clan leaders
simpleclans.leader.promotable:
description: Can be promoted to clan leader
simpleclans.leader.demote:
description: Can demote clan leaders to normal players
simpleclans.leader.ff:
description: Can toggle his clan's friendly fire
simpleclans.leader.disband:
description: Can disband his own clan
simpleclans.leader.settrust:
description: Can set trust levels for members
simpleclans.leader.war:
description: Can start wars
simpleclans.leader.setrank:
description: Can set ranks
simpleclans.leader.coloredtag:
description: Can use color codes in tags
simpleclans.member.bank:
description: Can use banks
simpleclans.admin.*:
description: Permissions for admins
default: op
children:
simpleclans.admin.reload: true
simpleclans.admin.all-seeing-eye: true
simpleclans.admin.resetkdr: true
simpleclans.mod.*:
description: Permissions for moderators
default: op
children:
simpleclans.mod.verify: true
simpleclans.mod.ban: true
simpleclans.mod.disband: true
simpleclans.mod.globalff: true
simpleclans.mod.bypass: true
simpleclans.mod.home: true
simpleclans.mod.mostkilled: true
simpleclans.mod.keep-items: true
simpleclans.mod.nopvpinwar: true
simpleclans.mod.place: true
simpleclans.anyone.*:
description: Permissions for anyone
default: false
children:
simpleclans.anyone.list: true
simpleclans.anyone.profile: true
simpleclans.anyone.roster: true
simpleclans.anyone.lookup: true
simpleclans.anyone.leaderboard: true
simpleclans.anyone.alliances: true
simpleclans.anyone.rivalries: true
simpleclans.member.*:
description: Permissions for those who can be clan members
default: false
children:
simpleclans.member.can-join: true
simpleclans.member.profile: true
simpleclans.member.roster: true
simpleclans.member.lookup: true
simpleclans.member.vitals: true
simpleclans.member.coords: true
simpleclans.member.stats: true
simpleclans.member.bb: true
simpleclans.member.bb-add: true
simpleclans.member.bb-toggle: true
simpleclans.member.cape-toggle: true
simpleclans.member.tag-toggle: true
simpleclans.member.ff: true
simpleclans.member.resign: true
simpleclans.member.ally: true
simpleclans.member.chat: true
simpleclans.member.home: true
simpleclans.member.kills: true
simpleclans.member.bank: true
simpleclans.member.resetkdr: true
simpleclans.leader.*:
description: Permissions for those who can be clan leaders
default: false
children:
simpleclans.leader.create: true
simpleclans.leader.verify: true
simpleclans.leader.ally: true
simpleclans.leader.rival: true
simpleclans.leader.modtag: true
simpleclans.leader.cape: true
simpleclans.leader.invite: true
simpleclans.leader.kick: true
simpleclans.leader.promote: true
simpleclans.leader.promotable: true
simpleclans.leader.demote: true
simpleclans.leader.ff: true
simpleclans.leader.disband: true
simpleclans.leader.settrust: true
simpleclans.leader.war: true
simpleclans.leader.home-set: true
simpleclans.leader.home-regroup: true
simpleclans.leader.setrank: true
simpleclans.leader.coloredtag: true
name: SimpleClans
main: net.sacredlabyrinth.phaed.simpleclans.SimpleClans
version: '${project.version}'
softdepend: [VanishNoPacket, Permissions, PermissionsBukkit, Vault, PermissionsEx, mChat, mChatSuite, PlaceholderAPI]
api-version: '1.13'
permissions:
simpleclans.admin.permissions:
description: Can grant clans permissions
simpleclans.admin.reload:
description: Can reload configuration
simpleclans.admin.purge:
description: Can purge a player
simpleclans.admin.promote:
description: Can promote players to clan leaders
simpleclans.admin.demote:
description: Can demote clan leaders to normal players
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.mod.verify:
description: Can verify simpleclans
simpleclans.mod.ban:
description: Can ban players from the entire plugin
simpleclans.mod.disband:
description: Can disband any clan
simpleclans.mod.globalff:
description: Can turn off global friendly fire protection
simpleclans.mod.nohide:
description: Messages from these players cannot be hidden via chat commands
simpleclans.mod.home:
description: Can set other clan's home
simpleclans.mod.hometp:
description: Can teleport to all clans homes
simpleclans.mod.bypass:
description: Can bypass restrictions
simpleclans.mod.nopvpinwar:
description: Can bypass pvp in wars
simpleclans.anyone.list:
description: Can list simpleclans
simpleclans.anyone.profile:
description: Can view a clan's profile
simpleclans.anyone.roster:
description: Can veiw a clan's member list
simpleclans.anyone.lookup:
description: Can lookup a player's info
simpleclans.anyone.leaderboard:
description: Can view the leaderboard
simpleclans.anyone.alliances:
description: Can view alliances by clan
simpleclans.anyone.rivalries:
description: Can view rivalries by clan
simpleclans.other.kdr-exempt:
description: The player's KDR is not affected on killing/dying
default: false
simpleclans.member.profile:
description: Can view his own clan's profile
simpleclans.member.roster:
description: Can view his own clan's member list
simpleclans.member.bypass-fee:
description: Can bypass the member fee
simpleclans.member.lookup:
description: Can view his own player info
simpleclans.member.vitals:
description: Can view his clan's vitals
simpleclans.member.coords:
description: Can view his clan's coords
simpleclans.member.stats:
description: Can view his simpleclans stats
simpleclans.member.bb:
description: Can view his clan's bulletin board
simpleclans.member.bb-add:
description: Can add to his clan's bulletin board
simpleclans.member.bb-toggle:
description: Can toggle bb on/off
simpleclans.member.ff:
description: Can toggle his own friendly fire
simpleclans.member.resign:
description: Can resign from his clan
simpleclans.member.ally:
description: Can use ally chat
simpleclans.member.chat:
description: Can use clan chat
simpleclans.member.can-join:
description: Can join clans
simpleclans.member.home:
description: Can tp to home base
simpleclans.member.resetkdr:
description: Can reset his kdr
simpleclans.leader.create:
description: Can create simpleclans
simpleclans.leader.verify:
description: Can verify his clan
simpleclans.leader.home-set:
description: Can set home base
simpleclans.leader.home-regroup:
description: Can tp entire clan to homebase
simpleclans.leader.ally:
description: Can ally his clan with other simpleclans
simpleclans.leader.rival:
description: Can start a rivalry with another clan
simpleclans.leader.modtag:
description: Can modify his clan's tag
simpleclans.leader.description:
description: Can modify his clan's description
simpleclans.leader.cape:
description: Can set his clan's cape url
simpleclans.leader.bb-clear:
description: Can clear his clan's bb
simpleclans.member.cape-toggle:
description: Can toggle his cape on/off
simpleclans.member.kills:
description: Can view his and other's kills
simpleclans.member.tag-toggle:
description: Can hide his own clan tag
simpleclans.member.fee-check:
description: Can check his clan's fee
simpleclans.mod.mostkilled:
description: Can view his and other's clans mostkilled
simpleclans.mod.keep-items:
description: Can keep items when teleporting home
simpleclans.mod.place:
description: Can manually place players in clans
simpleclans.leader.fee:
description: Can enable and set the clan fee
simpleclans.leader.invite:
description: Can invite players into his clan
simpleclans.leader.kick:
description: Can kick players form his tea,
simpleclans.leader.promote:
description: Can promote players to clan leaders
simpleclans.leader.promotable:
description: Can be promoted to clan leader
simpleclans.leader.demote:
description: Can demote clan leaders to normal players
simpleclans.leader.ff:
description: Can toggle his clan's friendly fire
simpleclans.leader.disband:
description: Can disband his own clan
simpleclans.leader.settrust:
description: Can set trust levels for members
simpleclans.leader.war:
description: Can start wars
simpleclans.leader.setrank:
description: Can set ranks
simpleclans.leader.coloredrank:
description: Can set colored ranks
default: true
simpleclans.leader.coloredtag:
description: Can use color codes in tags
simpleclans.leader.rank.list:
description: Can list the ranks
simpleclans.leader.rank.create:
description: Can create a new rank
simpleclans.leader.rank.assign:
description: Can assign a rank to a user
simpleclans.leader.rank.unassign:
description: Can unassign a player from a rank
simpleclans.leader.rank.delete:
description: Can delete a rank
simpleclans.leader.rank.permissions.available:
description: Can list the available permissions
simpleclans.leader.rank.permissions.list:
description: Can list the permissions of a rank
simpleclans.leader.rank.permissions.add:
description: Can add permissions to a rank
simpleclans.leader.rank.permissions.remove:
description: Can remove permissions from a rank
simpleclans.leader.rank.setdisplayname:
description: Can set the rank displayname
simpleclans.member.bank:
description: Can use banks
simpleclans.admin.*:
description: Permissions for admins
default: op
children:
simpleclans.admin.reload: true
simpleclans.admin.all-seeing-eye: true
simpleclans.admin.resetkdr: true
simpleclans.admin.demote: true
simpleclans.mod.*:
description: Permissions for moderators
default: op
children:
simpleclans.mod.verify: true
simpleclans.mod.ban: true
simpleclans.mod.disband: true
simpleclans.mod.globalff: true
simpleclans.mod.bypass: true
simpleclans.mod.home: true
simpleclans.mod.mostkilled: true
simpleclans.mod.keep-items: true
simpleclans.mod.nopvpinwar: true
simpleclans.mod.place: true
simpleclans.anyone.*:
description: Permissions for anyone
default: false
children:
simpleclans.anyone.list: true
simpleclans.anyone.profile: true
simpleclans.anyone.roster: true
simpleclans.anyone.lookup: true
simpleclans.anyone.leaderboard: true
simpleclans.anyone.alliances: true
simpleclans.anyone.rivalries: true
simpleclans.member.*:
description: Permissions for those who can be clan members
default: false
children:
simpleclans.member.can-join: true
simpleclans.member.profile: true
simpleclans.member.roster: true
simpleclans.member.lookup: true
simpleclans.member.vitals: true
simpleclans.member.coords: true
simpleclans.member.stats: true
simpleclans.member.bb: true
simpleclans.member.bb-add: true
simpleclans.member.bb-toggle: true
simpleclans.member.cape-toggle: true
simpleclans.member.tag-toggle: true
simpleclans.member.ff: true
simpleclans.member.resign: true
simpleclans.member.ally: true
simpleclans.member.chat: true
simpleclans.member.home: true
simpleclans.member.kills: true
simpleclans.member.bank: true
simpleclans.member.resetkdr: true
simpleclans.member.fee-check: true
simpleclans.leader.*:
description: Permissions for those who can be clan leaders
default: false
children:
simpleclans.leader.create: true
simpleclans.leader.verify: true
simpleclans.leader.ally: true
simpleclans.leader.rival: true
simpleclans.leader.modtag: true
simpleclans.leader.cape: true
simpleclans.leader.invite: true
simpleclans.leader.kick: true
simpleclans.leader.promote: true
simpleclans.leader.promotable: true
simpleclans.leader.demote: true
simpleclans.leader.ff: true
simpleclans.leader.disband: true
simpleclans.leader.settrust: true
simpleclans.leader.war: true
simpleclans.leader.home-set: true
simpleclans.leader.home-regroup: true
simpleclans.leader.setrank: true
simpleclans.leader.coloredtag: true
simpleclans.leader.coloredrank: true
simpleclans.leader.bb-clear: true
simpleclans.leader.rank.setdisplayname: true
simpleclans.leader.rank.list: true
simpleclans.leader.rank.create: true
simpleclans.leader.rank.assign: true
simpleclans.leader.rank.unassign: true
simpleclans.leader.rank.delete: true
simpleclans.leader.rank.permissions.available: true
simpleclans.leader.rank.permissions.add: true
simpleclans.leader.rank.permissions.remove: true
simpleclans.leader.rank.permissions.list: true