Compare commits

...
79 Commits
Author SHA1 Message Date
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
88 changed files with 6647 additions and 3803 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)
+43 -12
View File
@@ -2,7 +2,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>net.sacredlabyrinth.phaed.simpleclans</groupId>
<artifactId>SimpleClans</artifactId>
<version>2.7.12</version>
<version>2.10.0</version>
<name>SimpleClans</name>
<url>http://dev.bukkit.org/server-mods/simpleclans/</url>
@@ -18,9 +18,7 @@
<includes>
<include>plugin.yml</include>
<include>config.yml</include>
<include>language.yml</include>
<include>language-br.yml</include>
<include>language-zh.yml</include>
<include>*.properties</include>
</includes>
</resource>
</resources>
@@ -33,8 +31,8 @@
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
<source>1.8</source>
<target>1.8</target>
<showDeprecation>true</showDeprecation>
<showWarnings>true</showWarnings>
<fork>true</fork>
@@ -54,20 +52,43 @@
<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>org.bukkit</groupId>
<artifactId>bukkit</artifactId>
<version>1.12-R0.1-SNAPSHOT</version>
<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.6</version>
<version>1.7</version>
<scope>provided</scope>
</dependency>
<dependency>
@@ -75,17 +96,27 @@
<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>
</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>spigot-repo</id>
<url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url>
<id>paper-repo</id>
<url>https://repo.destroystokyo.com/repository/maven-public/</url>
</repository>
</repositories>
@@ -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;
}
@@ -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(), Helper.capitalize(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
*/
@@ -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,19 +1,38 @@
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.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.LanguageManager;
import net.sacredlabyrinth.phaed.simpleclans.managers.PermissionsManager;
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.UpkeepWarningTask;
import net.sacredlabyrinth.phaed.simpleclans.uuid.UUIDMigration;
/**
* @author Phaed
*/
@@ -66,18 +85,18 @@ public class SimpleClans extends JavaPlugin {
@Override
public void onEnable() {
instance = this;
new LanguageMigration(this).migrate();
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();
@@ -103,9 +122,40 @@ public class SimpleClans extends JavaPlugin {
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());
if (!Locale.getDefault().getLanguage().equals("en")) {
logger.info("[SimpleClans] Help us translate SimpleClans to your language! Access https://crowdin.com/project/simpleclans/");
}
startTasks();
startMetrics();
}
private void startMetrics() {
Metrics metrics = new Metrics(this, 7131);
SettingsManager sm = getSettingsManager();
ClanManager cm = getClanManager();
metrics.addCustomChart(new Metrics.SingleLineChart("clans", () -> cm.getClans().size()));
metrics.addCustomChart(new Metrics.SingleLineChart("clan_players", () -> cm.getAllClanPlayers().size()));
metrics.addCustomChart(new Metrics.SimplePie("database", () -> sm.isUseMysql() ? "MySQL" : "SQLite"));
metrics.addCustomChart(new Metrics.SimplePie("upkeep", () -> sm.isClanUpkeep() ? "enabled" : "disabled"));
metrics.addCustomChart(new Metrics.SimplePie("member_fee", () -> sm.isMemberFee() ? "enabled" : "disabled"));
metrics.addCustomChart(new Metrics.SimplePie("rejoin_cooldown", () -> sm.isRejoinCooldown() ? "enabled" : "disabled"));
metrics.addCustomChart(new Metrics.SimplePie("clan_verification", () -> sm.isRequireVerification() ? "enabled" : "disabled"));
metrics.addCustomChart(new Metrics.SimplePie("money_per_kill", () -> sm.isMoneyPerKill() ? "enabled" : "disabled"));
metrics.addCustomChart(new Metrics.SimplePie("threads", () -> sm.getUseThreads() ? "enabled" : "disabled"));
metrics.addCustomChart(new Metrics.SimplePie("bungeecord", () -> sm.getUseBungeeCord() ? "enabled" : "disabled"));
}
private void startTasks() {
if (getSettingsManager().isMemberFee()) {
new CollectFeeTask().start();
}
if (getSettingsManager().isClanUpkeep()) {
new CollectUpkeepTask().start();
new UpkeepWarningTask().start();
}
}
@Override
@@ -151,11 +201,22 @@ public class SimpleClans extends JavaPlugin {
}
/**
* @param msg the path within the language file
* @param key the path within the language file
* @return the lang
*/
public String getLang(String msg) {
return languageManager.get(msg);
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() {
@@ -169,6 +230,7 @@ public class SimpleClans extends JavaPlugin {
/**
* @return the hasUUID
*/
@Deprecated
public boolean hasUUID() {
return this.hasUUID;
}
@@ -180,6 +242,7 @@ public class SimpleClans extends JavaPlugin {
this.hasUUID = trueOrFalse;
}
@Deprecated
public LanguageManager getLanguageManager() {
return languageManager;
}
@@ -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);
}
/**
@@ -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;
@@ -85,6 +85,10 @@ 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())));
} 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;
@@ -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;
@@ -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"), Helper.capitalize(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"), Helper.capitalize(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().updateClanAsync(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().updateClanAsync(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;
@@ -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,7 +100,7 @@ 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()));
}
@@ -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"), Helper.capitalize(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() + Helper.capitalize(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));
}
}
}
}
@@ -33,13 +33,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 +49,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 +86,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 +137,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.rank.player.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 +236,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 +251,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 +298,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);
}
});
}
}
@@ -59,12 +59,7 @@ public class PlaceCommand {
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.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() + 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 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;
}
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"), Helper.capitalize(promoted.getName())));
if (SimpleClans.getInstance().hasUUID()) {
clan.promote(promoted.getUniqueId());
} else {
clan.promote(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,10 @@ public class ReloadCommand
ChatBlock.sendMessage(sender, ChatColor.RED + "Does not match a clan command");
return;
}
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,6 +77,9 @@ 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);
@@ -96,6 +95,9 @@ 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())));
@@ -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) {
@@ -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().updateClanAsync(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"), Helper.capitalize(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"), Helper.capitalize(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,10 +42,11 @@ 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;
@@ -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,6 +59,9 @@ 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());
@@ -79,6 +78,9 @@ 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())));
@@ -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"), Helper.capitalize(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,15 @@ 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())));
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;
}
@@ -12,47 +12,51 @@ import java.text.MessageFormat;
* @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 +103,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 +119,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 +130,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 +208,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 +235,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())));
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) {
SimpleClans.getLog().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) {
SimpleClans.getLog().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().updateClanPlayerAsync(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,10 +154,11 @@ public final class ClanManager {
SimpleClans.getInstance().getPermissionsManager().updateClanPermissions(clan);
SimpleClans.getInstance().getServer().getPluginManager().callEvent(new CreateClanEvent(clan));
}
/**
* Reset a player's kdr
* @param cp
*
* @param cp
*/
public void resetKdr(ClanPlayer cp) {
cp.setCivilianKills(0);
@@ -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,7 +445,7 @@ 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();
@@ -486,13 +459,18 @@ public final class ClanManager {
}
}
}
/**
* @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());
SimpleClans.log(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;
/**
@@ -51,7 +57,7 @@ public final class PermissionsManager {
}
/**
* 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
@@ -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) {
if (requests.containsKey(clan.getTag())) {
return;
}
String msg = MessageFormat.format(plugin.getLang("asking.for.the.demotion"), Helper.capitalize(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) {
if (requests.containsKey(clan.getTag())) {
return;
}
String msg = MessageFormat.format(plugin.getLang("asking.for.the.promotion"), Helper.capitalize(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) {
if (requests.containsKey(clan.getTag())) {
return;
}
String msg = MessageFormat.format(plugin.getLang("asking.for.the.deletion"), Helper.capitalize(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,6 +109,9 @@ public final class RequestManager {
* @param clan
*/
public void addInviteRequest(ClanPlayer requester, String invitedName, Clan clan) {
if (requests.containsKey(invitedName.toLowerCase())) {
return;
}
String msg = MessageFormat.format(plugin.getLang("inviting.you.to.join"), Helper.capitalize(requester.getName()), clan.getName());
Request req = new Request(plugin, ClanRequest.INVITE, null, requester, invitedName, clan, msg);
requests.put(invitedName.toLowerCase(), req);
@@ -112,13 +126,16 @@ public final class RequestManager {
* @param requestingClan
*/
public void addWarStartRequest(ClanPlayer requester, Clan warClan, Clan requestingClan) {
if (requests.containsKey(warClan.getTag())) {
return;
}
String msg = MessageFormat.format(plugin.getLang("proposing.war"), Helper.capitalize(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) {
if (requests.containsKey(warClan.getTag())) {
return;
}
String msg = MessageFormat.format(plugin.getLang("proposing.to.end.the.war"), Helper.capitalize(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) {
if (requests.containsKey(allyClan.getTag())) {
return;
}
String msg = MessageFormat.format(plugin.getLang("proposing.an.alliance"), Helper.capitalize(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) {
if (requests.containsKey(rivalClan.getTag())) {
return;
}
String msg = MessageFormat.format(plugin.getLang("proposing.to.end.the.rivalry"), Helper.capitalize(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);
}
@@ -241,151 +267,162 @@ public final class RequestManager {
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.capitalize(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.capitalize(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.capitalize(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"), Helper.capitalize(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
*
@@ -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);
}
}
@@ -1,21 +1,21 @@
package net.sacredlabyrinth.phaed.simpleclans.managers;
import net.sacredlabyrinth.phaed.simpleclans.Helper;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
import net.sacredlabyrinth.phaed.simpleclans.uuid.UUIDMigration;
import org.bukkit.configuration.file.FileConfiguration;
import java.io.File;
import java.io.IOException;
import java.util.Collections;
import java.util.List;
import java.util.Locale;
import java.util.UUID;
import org.bukkit.configuration.file.FileConfiguration;
import net.sacredlabyrinth.phaed.simpleclans.Helper;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
/**
* @author phaed
*/
public final class SettingsManager {
private boolean onlineMode;
private boolean disableMessages;
private String clanChatRankColor;
private boolean tagBasedClanChat;
@@ -23,17 +23,27 @@ public final class SettingsManager {
private boolean dropOnHome;
private boolean keepOnHome;
private boolean debugging;
@SuppressWarnings("FieldMayBeFinal")
private SimpleClans plugin;
private final SimpleClans plugin;
private boolean mChatIntegration;
private boolean pvpOnlywhileInWar;
private boolean useColorCodeFromPrefix;
private boolean confirmationForPromote;
private boolean confirmationForDemote;
private double percentageOnlineToDemote;
private boolean globalff;
private boolean allowResetKdr;
private boolean showUnverifiedOnList;
private boolean requireVerification;
private boolean rejoinCooldownEnabled;
private int rejoinCooldown;
private String listDefault;
private String listSize;
private String listKdr;
private String listName;
private String listFounded;
private String listActive;
private String listAsc;
private String listDesc;
private List<Integer> itemsList;
private List<String> blacklistedWorlds;
private List<String> bannedPlayers;
@@ -50,6 +60,11 @@ public final class SettingsManager {
private boolean eIssuerPaysRegroup;
private boolean ePurchaseHomeTeleportSet;
private boolean ePurchaseResetKdr;
private boolean eMemberFee;
private boolean ePurchaseMemberFeeSet;
private boolean eClanUpkeepEnabled;
private boolean eMultiplyUpkeepBySize;
private boolean eChargeUpkeepOnlyIfMemberFeeEnabled;
private double eCreationPrice;
private double eVerificationPrice;
private double eInvitePrice;
@@ -57,6 +72,9 @@ public final class SettingsManager {
private double eHomeRegroupPrice;
private double eHomeTeleportPriceSet;
private double eResetKdr;
private double eMaxMemberFee;
private double eMemberFeeSetPrice;
private double eClanUpkeep;
private String serverName;
private boolean chatTags;
private int purgeClan;
@@ -73,6 +91,7 @@ public final class SettingsManager {
private String pageUnTrustedColor;
private boolean bbShowOnLogin;
private int bbSize;
private int bbLoginSize;
private String bbColor;
private String bbAccentColor;
private String commandClan;
@@ -86,6 +105,8 @@ public final class SettingsManager {
private int clanMinSizeToRival;
private int clanMinLength;
private int clanMaxLength;
private int clanMaxDescriptionLength;
private int clanMinDescriptionLength;
private String pageClanNameColor;
private int tagMinLength;
private int tagMaxLength;
@@ -124,6 +145,12 @@ public final class SettingsManager {
private String clanChatBracketColor;
private String clanChatPlayerBracketLeft;
private String clanChatPlayerBracketRight;
private int tasksCollectUpkeepHour;
private int tasksCollectUpkeepMinute;
private int tasksCollectUpkeepWarningHour;
private int tasksCollectUpkeepWarningMinute;
private int tasksCollectFeeHour;
private int tasksCollectFeeMinute;
private boolean clanFFOnByDefault;
private double kwRival;
private double kwNeutral;
@@ -135,14 +162,13 @@ public final class SettingsManager {
private String username;
private String password;
private boolean safeCivilians;
@SuppressWarnings("FieldMayBeFinal")
private File main;
@SuppressWarnings("FieldMayBeFinal")
private FileConfiguration config;
private final File main;
private final FileConfiguration config;
private boolean compatMode;
private boolean homebaseSetOnce;
private int waitSecs;
private boolean enableAutoGroups;
private boolean denySameIPKills;
private boolean moneyperkill;
private double KDRMultipliesPerKill;
private boolean teleportBlocks;
@@ -154,6 +180,12 @@ public final class SettingsManager {
private boolean forceCommandPriority;
private int maxAsksPerRequest;
private int maxMembers;
private boolean maxKillsPerVictimEnabled;
private int maxKillsPerVictim;
private boolean delayBetweenKillsEnabled;
private int delayBetweenKills;
private String language;
private boolean languagePerPlayer;
/**
*
@@ -184,7 +216,6 @@ public final class SettingsManager {
getConfig().options().copyDefaults(true);
}
onlineMode = getConfig().getBoolean("settings.online-mode");
disableMessages = getConfig().getBoolean("settings.disable-messages");
teleportOnSpawn = getConfig().getBoolean("settings.teleport-home-on-spawn");
dropOnHome = getConfig().getBoolean("settings.drop-items-on-clan-home");
@@ -204,6 +235,16 @@ public final class SettingsManager {
unRivableClans = getConfig().getStringList("settings.unrivable-clans");
showUnverifiedOnList = getConfig().getBoolean("settings.show-unverified-on-list");
requireVerification = getConfig().getBoolean("settings.new-clan-verification-required");
rejoinCooldown = getConfig().getInt("settings.rejoin-cooldown");
rejoinCooldownEnabled = getConfig().getBoolean("settings.rejoin-cooldown-enabled");
listActive = getConfig().getString("list.active", "active");
listKdr = getConfig().getString("list.kdr", "kdr");
listDefault = getConfig().getString("list.default", listKdr);
listSize = getConfig().getString("list.size", "size");
listName = getConfig().getString("list.name", "name");
listFounded = getConfig().getString("list.founded", "founded");
listAsc = getConfig().getString("list.asc", "asc");
listDesc = getConfig().getString("list.desc", "desc");
serverName = getConfig().getString("settings.server-name");
chatTags = getConfig().getBoolean("settings.display-chat-tags");
rivalLimitPercent = getConfig().getInt("settings.rival-limit-percent");
@@ -214,6 +255,8 @@ public final class SettingsManager {
ePurchaseHomeRegroup = getConfig().getBoolean("economy.purchase-home-regroup");
ePurchaseHomeTeleportSet = getConfig().getBoolean("economy.purchase-home-teleport-set");
ePurchaseResetKdr = getConfig().getBoolean("economy.purchase-reset-kdr");
ePurchaseMemberFeeSet = getConfig().getBoolean("economy.purchase-member-fee-set");
eMemberFeeSetPrice = getConfig().getDouble("economy.member-fee-set-price");
eResetKdr = getConfig().getDouble("economy.reset-kdr-price");
eCreationPrice = getConfig().getDouble("economy.creation-price");
eVerificationPrice = getConfig().getDouble("economy.verification-price");
@@ -223,6 +266,12 @@ public final class SettingsManager {
eUniqueTaxOnRegroup = getConfig().getBoolean("economy.unique-tax-on-regroup");
eIssuerPaysRegroup = getConfig().getBoolean("economy.issuer-pays-regroup");
eHomeTeleportPriceSet = getConfig().getDouble("economy.home-teleport-set-price");
eMaxMemberFee = getConfig().getDouble("economy.max-member-fee");
eClanUpkeep = getConfig().getDouble("economy.upkeep");
eClanUpkeepEnabled = getConfig().getBoolean("economy.upkeep-enabled");
eChargeUpkeepOnlyIfMemberFeeEnabled = getConfig().getBoolean("economy.charge-upkeep-only-if-member-fee-enabled");
eMultiplyUpkeepBySize = getConfig().getBoolean("economy.multiply-upkeep-by-clan-size");
eMemberFee = getConfig().getBoolean("economy.member-fee-enabled");
purgeClan = getConfig().getInt("purge.inactive-clan-days");
purgeUnverified = getConfig().getInt("purge.unverified-clan-days");
purgePlayers = getConfig().getInt("purge.inactive-player-data-days");
@@ -239,6 +288,7 @@ public final class SettingsManager {
pageClanNameColor = getConfig().getString("page.clan-name-color");
bbShowOnLogin = getConfig().getBoolean("bb.show-on-login");
bbSize = getConfig().getInt("bb.size");
bbLoginSize = getConfig().getInt("bb.login-size", bbSize);
bbColor = getConfig().getString("bb.color");
bbAccentColor = getConfig().getString("bb.accent-color");
commandClan = getConfig().getString("commands.clan");
@@ -253,11 +303,14 @@ public final class SettingsManager {
waitSecs = getConfig().getInt("clan.homebase-teleport-wait-secs");
confirmationForPromote = getConfig().getBoolean("clan.confirmation-for-demote");
confirmationForDemote = getConfig().getBoolean("clan.confirmation-for-promote");
percentageOnlineToDemote = getConfig().getDouble("clan.percentage-online-to-demote");
clanTrustByDefault = getConfig().getBoolean("clan.trust-members-by-default");
clanMinSizeToAlly = getConfig().getInt("clan.min-size-to-set-ally");
clanMinSizeToRival = getConfig().getInt("clan.min-size-to-set-rival");
clanMinLength = getConfig().getInt("clan.min-length");
clanMaxLength = getConfig().getInt("clan.max-length");
clanMaxDescriptionLength = getConfig().getInt("clan.max-description-length");
clanMinDescriptionLength = getConfig().getInt("clan.min-description-length");
clanFFOnByDefault = getConfig().getBoolean("clan.ff-on-by-default");
tagMinLength = getConfig().getInt("tag.min-length");
tagMaxLength = getConfig().getInt("tag.max-length");
@@ -297,9 +350,16 @@ public final class SettingsManager {
clanChatTagBracketRight = getConfig().getString("clanchat.tag-bracket.right");
clanChatPlayerBracketLeft = getConfig().getString("clanchat.player-bracket.left");
clanChatPlayerBracketRight = getConfig().getString("clanchat.player-bracket.right");
tasksCollectFeeHour = getConfig().getInt("tasks.collect-fee.hour");
tasksCollectFeeMinute = getConfig().getInt("tasks.collect-fee.minute");
tasksCollectUpkeepHour = getConfig().getInt("tasks.collect-upkeep.hour");
tasksCollectUpkeepMinute = getConfig().getInt("tasks.collect-upkeep.minute");
tasksCollectUpkeepWarningHour = getConfig().getInt("tasks.collect-upkeep-warning.hour");
tasksCollectUpkeepWarningMinute = getConfig().getInt("tasks.collect-upkeep-warning.minute");
kwRival = getConfig().getDouble("kill-weights.rival");
kwNeutral = getConfig().getDouble("kill-weights.neutral");
kwCivilian = getConfig().getDouble("kill-weights.civilian");
denySameIPKills = getConfig().getBoolean("kill-weights.deny-same-ip-kills");
useMysql = getConfig().getBoolean("mysql.enable");
host = getConfig().getString("mysql.host");
port = getConfig().getInt("mysql.port");
@@ -311,13 +371,19 @@ public final class SettingsManager {
moneyperkill = getConfig().getBoolean("economy.money-per-kill");
KDRMultipliesPerKill = getConfig().getDouble("economy.money-per-kill-kdr-multipier");
teleportBlocks = getConfig().getBoolean("settings.teleport-blocks");
language = getConfig().getString("settings.language", "");
languagePerPlayer = getConfig().getBoolean("settings.language-per-player", false);
AutoGroupGroupName = getConfig().getBoolean("permissions.auto-group-groupname");
tamableMobsSharing = getConfig().getBoolean("settings.tameable-mobs-sharing");
allowReGroupCommand = getConfig().getBoolean("settings.allow-regroup-command");
useThreads = getConfig().getBoolean("performance.use-threads");
useBungeeCord = getConfig().getBoolean("performance.use-bungeecord");
maxMembers = getConfig().getInt("clan.max-members");
maxKillsPerVictim = getConfig().getInt("kdr-grinding-prevention.max-kills-per-victim");
maxKillsPerVictimEnabled = getConfig().getBoolean("kdr-grinding-prevention.enable-max-kills");
delayBetweenKills = getConfig().getInt("kdr-grinding-prevention.delay-between-kills");
delayBetweenKillsEnabled = getConfig().getBoolean("kdr-grinding-prevention.enable-kill-delay");
// migrate from old way of adding ports
if (database.contains(":")) {
String[] strings = database.split(":");
@@ -336,6 +402,104 @@ public final class SettingsManager {
e.printStackTrace();
}
}
public Locale getLanguage() {
String[] split = language.split("_");
if (split.length == 2) {
return new Locale(split[0], split[1]);
}
return new Locale(language);
}
public boolean isLanguagePerPlayer() {
return languagePerPlayer;
}
public int getTasksCollectUpkeepHour() {
return tasksCollectUpkeepHour;
}
public void setTasksCollectUpkeepHour(int tasksCollectUpkeepHour) {
this.tasksCollectUpkeepHour = tasksCollectUpkeepHour;
}
public int getTasksCollectUpkeepMinute() {
return tasksCollectUpkeepMinute;
}
public void setTasksCollectUpkeepMinute(int tasksCollectUpkeepMinute) {
this.tasksCollectUpkeepMinute = tasksCollectUpkeepMinute;
}
public int getTasksCollectUpkeepWarningHour() {
return tasksCollectUpkeepWarningHour;
}
public void setTasksCollectUpkeepWarningHour(int tasksCollectUpkeepWarningHour) {
this.tasksCollectUpkeepWarningHour = tasksCollectUpkeepWarningHour;
}
public int getTasksCollectUpkeepWarningMinute() {
return tasksCollectUpkeepWarningMinute;
}
public void setTasksCollectUpkeepWarningMinute(int tasksCollectUpkeepWarningMinute) {
this.tasksCollectUpkeepWarningMinute = tasksCollectUpkeepWarningMinute;
}
public int getTasksCollectFeeHour() {
return tasksCollectFeeHour;
}
public void setTasksCollectFeeHour(int tasksCollectFeeHour) {
this.tasksCollectFeeHour = tasksCollectFeeHour;
}
public int getTasksCollectFeeMinute() {
return tasksCollectFeeMinute;
}
public void setTasksCollectFeeMinute(int tasksCollectFeeMinute) {
this.tasksCollectFeeMinute = tasksCollectFeeMinute;
}
/**
* Returns the delay between kills
*
* @return
*/
public int getDelayBetweenKills() {
return delayBetweenKills;
}
/**
* Checks if the delay between kills is enabled
*
* @return
*/
public boolean isDelayBetweenKills() {
return delayBetweenKillsEnabled;
}
/**
* Returns the max number of kills per victim
*
* @return
*/
public int getMaxKillsPerVictim() {
return maxKillsPerVictim;
}
/**
* Checks if there is a max number of kills per victim
*
* @return
*/
public boolean isMaxKillsPerVictim() {
return maxKillsPerVictimEnabled;
}
/**
* Check whether an item is in the list
@@ -388,6 +552,62 @@ public final class SettingsManager {
return word.equalsIgnoreCase("clan") || word.equalsIgnoreCase(commandMore) || word.equalsIgnoreCase(commandDeny) || word.equalsIgnoreCase(commandAccept);
}
/**
* Checks if the upkeep is to be charged only from clans with the member fee enabled
*
* @return
*/
public boolean isChargeUpkeepOnlyIfMemberFeeEnabled() {
return eChargeUpkeepOnlyIfMemberFeeEnabled;
}
/**
* Checks if the upkeep should be multiplied by the clan size
*
* @return
*/
public boolean isMultiplyUpkeepBySize() {
return eMultiplyUpkeepBySize;
}
/**
* Checks if the upkeep is enabled
*
* @return
*/
public boolean isClanUpkeep() {
return eClanUpkeepEnabled;
}
/**
* Returns the upkeep
*
* @return
*/
public double getClanUpkeep() {
if (eClanUpkeep < 0) {
eClanUpkeep = 0;
}
return eClanUpkeep;
}
/**
* Returns the max member fee allowed
* @return
*/
public double getMaxMemberFee() {
return eMaxMemberFee;
}
/**
* Checks if the member fee is enabled
* @return
*/
public boolean isMemberFee() {
return eMemberFee;
}
public boolean isAllowResetKdr() {
return allowResetKdr;
@@ -396,6 +616,23 @@ public final class SettingsManager {
public boolean isePurchaseResetKdr() {
return ePurchaseResetKdr;
}
/**
* Gets the price to pay for setting the member fee
*
* @return the price
*/
public double geteMemberFeeSetPrice() {
return eMemberFeeSetPrice;
}
/**
* Do leaders need to pay for setting the member fee?
* @return true if so
*/
public boolean isePurchaseMemberFeeSet() {
return ePurchaseMemberFeeSet;
}
/**
* Gets the price to reset the KDR
@@ -450,60 +687,6 @@ public final class SettingsManager {
return false;
}
/**
* Check whether a player is banned
*
* @param playerName the player's name
* @return whether player is banned
*/
@Deprecated
public boolean isBanned(String playerName) {
if (SimpleClans.getInstance().hasUUID()) {
playerName = UUIDMigration.getForcedPlayerUUID(playerName).toString();
}
for (String pl : getBannedPlayers()) {
if (pl.equalsIgnoreCase(playerName)) {
return true;
}
}
return false;
}
/**
* Add a player to the banned list
*
* @param playerName the player's name
*/
@Deprecated
public void addBanned(String playerName) {
if (SimpleClans.getInstance().hasUUID()) {
playerName = UUIDMigration.getForcedPlayerUUID(playerName).toString();
}
if (!bannedPlayers.contains(playerName)) {
bannedPlayers.add(playerName);
}
save();
}
/**
* Remove a player from the banned list
*
* @param playerName the player's name
*/
@Deprecated
public void removeBanned(String playerName) {
if (SimpleClans.getInstance().hasUUID()) {
playerName = UUIDMigration.getForcedPlayerUUID(playerName).toString();
}
if (bannedPlayers.contains(playerName)) {
bannedPlayers.remove(playerName);
}
save();
}
/**
* Check whether a player is banned
*
@@ -529,7 +712,8 @@ public final class SettingsManager {
if (!bannedPlayers.contains(playerUniqueId.toString())) {
bannedPlayers.add(playerUniqueId.toString());
}
getConfig().set("settings.banned-players", bannedPlayers);
save();
}
@@ -542,7 +726,8 @@ public final class SettingsManager {
if (bannedPlayers.contains(playerUniqueId.toString())) {
bannedPlayers.remove(playerUniqueId.toString());
}
getConfig().set("settings.banned-players", bannedPlayers);
save();
}
@@ -559,8 +744,48 @@ public final class SettingsManager {
public boolean isRequireVerification() {
return requireVerification;
}
public boolean isRejoinCooldown() {
return rejoinCooldownEnabled;
}
public int getRejoinCooldown() {
return rejoinCooldown;
}
public String getListDefault() {
return listDefault;
}
/**
public String getListSize() {
return listSize;
}
public String getListKdr() {
return listKdr;
}
public String getListName() {
return listName;
}
public String getListFounded() {
return listFounded;
}
public String getListActive() {
return listActive;
}
public String getListAsc() {
return listAsc;
}
public String getListDesc() {
return listDesc;
}
/**
* @return the bannedPlayers
*/
public List<String> getBannedPlayers() {
@@ -679,6 +904,13 @@ public final class SettingsManager {
return bbSize;
}
/**
* @return the bbLoginSize
*/
public int getBbLoginSize() {
return bbLoginSize;
}
/**
* @return the bbColor
*/
@@ -734,8 +966,32 @@ public final class SettingsManager {
public int getClanMinSizeToRival() {
return clanMinSizeToRival;
}
/**
* Returns the max length of the clan description
*
* @return the max length
*/
public int getClanMaxDescriptionLength() {
if (clanMaxDescriptionLength > 255 || clanMaxDescriptionLength < 0) {
clanMaxDescriptionLength = 255;
}
return clanMaxDescriptionLength;
}
/**
* Returns the min length of the clan description
*
* @return the min length
*/
public int getClanMinDescriptionLength() {
if (clanMinDescriptionLength < 0 || clanMinDescriptionLength > getClanMaxDescriptionLength()) {
clanMinDescriptionLength = 0;
}
return clanMinDescriptionLength;
}
/**
* @return the clanMinLength
*/
public int getClanMinLength() {
@@ -1068,6 +1324,22 @@ public final class SettingsManager {
public boolean isConfirmationForDemote() {
return confirmationForDemote;
}
/**
* Returns the min percentage of leaders online required to demote someone
*
* @return the percentage
*/
public double getPercentageOnlineToDemote() {
if (percentageOnlineToDemote <= 0 || percentageOnlineToDemote > 100) {
percentageOnlineToDemote = 100;
}
return percentageOnlineToDemote;
}
public boolean isDenySameIPKills() {
return denySameIPKills;
}
public boolean isUseColorCodeFromPrefix() {
return useColorCodeFromPrefix;
@@ -1304,8 +1576,9 @@ public final class SettingsManager {
return tamableMobsSharing;
}
@Deprecated
public boolean isOnlineMode() {
return onlineMode;
return true;
}
public boolean isDisableMessages() {
@@ -12,6 +12,7 @@ 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;
@@ -45,11 +46,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 +56,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);
}
/**
@@ -85,21 +78,65 @@ public final class StorageManager {
if (!core.existsTable("sc_clans")) {
SimpleClans.log("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");
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");
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 +146,71 @@ public final class StorageManager {
core = new SQLiteCore(plugin.getDataFolder().getPath());
if (core.checkConnection()) {
SimpleClans.log("[SimpleClans] " + plugin.getLang("sqlite.connection.successful"));
if (!core.existsTable("sc_clans")) {
SimpleClans.log("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");
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");
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 {
@@ -263,14 +345,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 +373,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 +381,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) {
@@ -333,14 +423,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 +451,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 +459,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) {
@@ -410,7 +508,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 +534,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);
@@ -491,7 +591,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 +617,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);
@@ -567,8 +669,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 +696,13 @@ public final class StorageManager {
*
* @param clan
*/
@SuppressWarnings("deprecation")
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 +710,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 +735,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,8 +748,8 @@ 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()) + "';";
}
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()) + "';";
core.update(query);
}
@@ -654,15 +769,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 +779,13 @@ public final class StorageManager {
*
* @param cp
*/
@SuppressWarnings("deprecation")
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 +795,8 @@ 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);
}
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() + "';";
core.update(query);
}
/**
@@ -702,17 +805,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 +825,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);
}
/**
@@ -823,6 +919,51 @@ public final class StorageManager {
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 +979,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,7 +1053,7 @@ public final class StorageManager {
*
* @param
*/
private void updatePlayersToUUID() {
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 ! ==================== ");
@@ -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);
}
@@ -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;
/**
@@ -26,28 +28,32 @@ public class SQLiteCore implements DBCore {
this.dbName = "SimpleClans";
this.dbLocation = dbLocation;
this.log = SimpleClans.getLog();
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"))
{
SimpleClans.getLog().severe("[Thread] Error at SQL " + sqlType + " Query: " + ex);
SimpleClans.getLog().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().updateClanAsync(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,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.getLog().severe("[Thread] Error at SQL " + this.sqlType + " Query: " + ex);
SimpleClans.getLog().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;
}
}
}
+41 -2
View File
@@ -13,7 +13,6 @@ tag:
leader-color: '4'
char: ' .'
settings:
online-mode: true
disable-messages: false
tameable-mobs-sharing: false
teleport-blocks: false
@@ -39,12 +38,29 @@ settings:
- 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
@@ -73,22 +89,44 @@ economy:
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
@@ -115,6 +153,7 @@ bb:
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%"
@@ -137,5 +176,5 @@ permissions:
YourClanNameHere:
- test.permission
performance:
use-threads: false
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}#=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.rank.player.1.assign.rank.to.player=/{0} rank assign [rank] [player]{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
+428
View File
@@ -0,0 +1,428 @@
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.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.purge.player.1.purge.a.player=/{0} purge [player]{1} - Purge a player
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.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} - 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
you.cannot.set.colored.ranks=You cannot set colored ranks
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
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=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}
fee.0.value.1=Fee: {0}, {1} $
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}
description.0=Description: {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
feeoff=Fee toggled off
feeon=Fee toggled on
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
@@ -0,0 +1,466 @@
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=definirrank
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} definirrank [jogador] [rank], ranks 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.description.description.1.modify.the.clan.s.description=/{0} descricao [descrição]{1} - Modifica a descrição do clã
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.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} definirrank [jogador] [rank]{1} - Dá um rank 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=Rank
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 ranks 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=Status: {0}
rank.0=Rank: {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 rank 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
+405
View File
@@ -0,0 +1,405 @@
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=fee
purge.command=purge
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.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}
fee.0.value.1=Fee: {0}, {1} $
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=Description: {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=帮派成员达到上限
+57
View File
@@ -2,11 +2,18 @@ name: SimpleClans
main: net.sacredlabyrinth.phaed.simpleclans.SimpleClans
version: ${project.version}
softdepend: [VanishNoPacket, Permissions, PermissionsBukkit, Vault, PermissionsEx, mChat, mChatSuite]
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:
@@ -43,10 +50,15 @@ permissions:
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:
@@ -89,20 +101,28 @@ permissions:
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:
@@ -123,8 +143,31 @@ permissions:
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.*:
@@ -134,6 +177,7 @@ permissions:
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
@@ -183,6 +227,7 @@ permissions:
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
@@ -206,3 +251,15 @@ permissions:
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