Compare commits

..
51 Commits
Author SHA1 Message Date
Minat0_ 08da8be5d4 GITBOOK-77: allience and rivalry review 2025-02-23 20:50:30 +00:00
Minat0_ c64715ebaa GITBOOK-76: change codemc url repo to roinuj's one 2024-04-25 17:37:06 +00:00
Minat0_ 1469a899bc GITBOOK-75: remove a notation about missing javadoc in Russian docs 2024-04-06 08:07:35 +00:00
Minat0_ 7ac4f52c4c GitBook: [#74] No subject 2023-01-05 19:15:30 +00:00
Minat0_ a12c804886 GitBook: [#72] [RU] [DiscordSRV] Adds missing command for manually discord creation 2022-09-16 23:15:32 +00:00
Minat0_ 0e18dac7ea GitBook: [#71] Adding geyser player head error loading at known-issues | Russian 2022-08-17 01:11:39 +00:00
Minat0_ af8cd427de GitBook: [#71] Adding geyser player head error loading at known-issues | Russian 2022-07-18 16:18:05 +00:00
Edson Passos ad9bf675ca GitBook: [#70] [Russian] Some modifies around configuration page and permissions page 2022-04-29 20:47:52 +00:00
Minat0_ 4fb647575d GitBook: [#69] [Commands] [Permissions] Adds missing invite-toggle | Russian 2022-01-17 16:16:01 +00:00
Edson Passos 3ed0cbb341 GitBook: [#68] [Clan on Tablist] Updates guide to latest | Russian 2022-01-11 19:56:12 +00:00
Edson Passos 5f8222963f GitBook: [#67] Adds DIscordSRV, Verified, Permanent pages. Emojis on headings. | Russian 2021-12-11 19:16:43 +00:00
Minat0_ 231e4a7d5a GitBook: [russian] one page modified 2021-08-30 17:35:32 +00:00
Minat0_ 88695a1df7 GitBook: [russian] 5 pages modified 2021-08-30 16:59:22 +00:00
Minat0_ 61c3da0544 GitBook: [russian] 14 pages modified 2021-08-30 16:40:01 +00:00
Minat0_ 84301e2636 GitBook: [russian] no pages and one asset modified 2021-08-30 16:20:45 +00:00
Minat0_ ee1fd9c80e GitBook: [russian] 14 pages and one asset modified 2021-08-30 15:45:05 +00:00
Minat0_ f76417c080 GitBook: [russian] one page and 6 assets modified 2021-08-30 15:13:26 +00:00
Minat0_ 7cc585b4ad GitBook: [russian] 3 pages modified 2021-07-06 16:08:25 +00:00
Minat0_ f1fcb0c372 GitBook: [russian] no pages and 2 assets modified 2021-07-06 15:54:38 +00:00
Minat0_ 527bff8d20 GitBook: [russian] one page modified 2021-07-06 15:35:28 +00:00
Minat0_ 5d108caadd GitBook: [russian] 2 pages and 2 assets modified 2021-07-06 15:30:56 +00:00
Minat0_ 5a9e5cb561 GitBook: [russian] one page and 2 assets modified 2021-07-05 10:04:49 +00:00
Minat0_ 9cded638d5 GitBook: [russian] 14 pages modified 2021-07-02 17:06:38 +00:00
mehmet yılmaz 5c7f1d3873 GitBook: [russian] 14 pages modified 2021-06-24 20:47:20 +00:00
mehmet yılmaz f45e4b871c GitBook: [russian] 14 pages modified 2021-06-24 20:18:36 +00:00
mehmet yılmaz 2f2124c7f5 GitBook: [russian] 14 pages modified 2021-06-24 19:54:42 +00:00
mehmet yılmaz 078821a13e GitBook: [russian] 14 pages modified 2021-06-24 19:10:12 +00:00
mehmet yılmaz e900404e17 GitBook: [russian] no pages and one asset modified 2021-06-24 18:59:42 +00:00
Minat0_ d7b9c71ee7 GitBook: [russian] 14 pages modified 2021-05-26 12:39:25 +00:00
Minat0_ f33bf64b50 GitBook: [russian] 14 pages modified 2021-03-26 01:40:42 +00:00
Minat0_ 08f16cac00 GitBook: [russian] 14 pages modified 2021-03-21 17:24:47 +00:00
Minat0_ 4a515453c9 GitBook: [russian] 2 pages modified 2021-03-14 00:51:35 +00:00
Minat0_ e515cad210 GitBook: [russian] one page modified 2021-02-10 03:02:00 +00:00
Minat0_ 4de19f44fa GitBook: [russian] 15 pages modified 2020-12-05 02:13:44 +00:00
Minat0_ 3f4c122f53 GitBook: [russian] 15 pages modified 2020-11-29 17:22:33 +00:00
Edson Passos 5c98c1ecda GitBook: [master] 2 pages modified 2020-11-27 22:16:03 +00:00
Edson Passos 61b37d0907 GitBook: [master] 2 pages modified 2020-11-27 21:34:55 +00:00
Edson Passos e974af3c0e GitBook: [master] one page modified 2020-11-27 17:38:12 +00:00
Edson Passos 182e6e15c8 v2.14.4.1 (#93)
Fixed VanishUtils
2020-11-23 00:07:59 -03:00
Edson Passos c11a0e326c v2.14.4 (#92)
Re-added API methods that use player names instead of UUID to regain compatibility with old plugins (those names are converted to UUID)
Added PreCreateClanEvent #87
Added BankDepositEvent and BankWithdrawEvent #51
Added check for last minute changes of the member fee #75
Added suggestions for chat subcommands
Create clan command now accepts tag and name (optional arguments) #76 
Removed unused PlayerNameTabCompleter
Removed chat subcommands on and off
Fixed vanished players showing in online count #83
Fixes SQLite drop index syntax #52
Fixed saved banner not loading #90
Before caching the player head, the plugin now checks if the task was cancelled (on disable) #49
Fixed chat NPE and messages not being sent
Shaded Reflections lib to fix compatibility issues with other plugins
Changed priorities of some listeners
Updated language files
2020-11-22 17:37:18 -03:00
Edson Passos 1087235ecb GitBook: [master] 16 pages modified 2020-11-22 15:01:00 +00:00
Edson Passos cf45e73448 Added latest version badge 2020-11-18 19:19:06 -03:00
Edson Passos 6cf8517606 Added bStats badges 2020-11-16 20:29:47 -03:00
Tom Lewis f73ac56bde Added quick links to all doc (#85)
* Added quick links to all doc
* Warning for auto giving super permissions
* Added missing permissions
2020-11-09 11:09:36 -03:00
Edson Passosandxtomyserrax be5dc77e24 v2.14.3 (#84)
Changes disabled resetkdr message Closes #77
Fixes set fee allowing negative values Closes #74
Fixes exception on interacting with a wolf whose owner is offline Closes #73
Extracted events related to the TamableMobsSharing feature to their own class
Adds confirmation messages for accepting/denying invitations. Closes #44
The plugin now sends messages when attacks are cancelled. Closes #71
Refactored listeners related to the FriendlyFire and PvPOnlyInWar features
Refactored the PlayerDeathEvent listener
Fixed not being able to post more than one word to the bb
Plugin now gets ACF messages from ENGLISH when missing
Changed main GUI title to "{server name} - clan menu" Closes #63
Added staff lore message Closes #32
Removes spaces from subcommands
Fixes mute clan chat command
Updated language files

Co-authored-by: xtomyserrax <xtomyserrax@users.noreply.github.com>
2020-11-08 21:39:04 -03:00
Edson Passos db17074ac0 GitBook: [master] 2 pages modified 2020-11-06 17:26:10 +00:00
Tom Lewis 40d506c389 Adds doc link with commands & permissions links (#72) 2020-10-25 13:00:03 -03:00
Edson Passos d9f87420e1 2.14.2 (#69)
Fixed ally chat command not changing
Help command is now translatable
Added missing clan_member condition to chat commands
Updated language files
Fixes teleport blocks not respecting config
Adds a different way to check for vanished players
Fixes Lookup showing vanished players as online
Basic permissions are now default true
2020-10-23 20:13:00 -03:00
RoinujNosde bfa50407a7 Probably fixes #55 2020-10-19 19:52:48 -03:00
RoinujNosde 238ee17de8 Fixes ACF Name Annotation bug
Fixes InviteFrame's next page button. Closes #61
Added TagChangeEvent. Closes #58
2020-10-19 19:44:56 -03:00
Edson Passos 1b8a3fee6e Implemented ACF 2020-10-18 22:40:42 -03:00
273 changed files with 10467 additions and 8995 deletions

No files matched your search

Binary file not shown.

After

Width:  |  Height:  |  Size: 418 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 243 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 MiB

@@ -1,31 +0,0 @@
name: Publish to Bintray (for Spigot 1.8-1.12)
on:
release:
types: [created]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
ref: 1.8
- name: Set up JDK 1.8
uses: actions/setup-java@v1
with:
java-version: 1.8
server-id: bintray-roinujnosde-bukkit-plugins # Value of the distributionManagement/repository/id field of the pom.xml
server-username: MAVEN_USERNAME
server-password: MAVEN_PASSWORD
- name: Build with Maven
run: mvn -B package --file pom.xml
- name: Publish to Bintray
run: mvn -B deploy
env:
MAVEN_USERNAME: ${{ secrets.BINTRAY_USERNAME }}
MAVEN_PASSWORD: ${{ secrets.BINTRAY_TOKEN }}
-2
View File
@@ -1,10 +1,8 @@
/target/
/.idea/
SimpleClans.iml
/bin/
/.classpath
/.project
/dependency-reduced-pom.xml
/simpleclans-mc1.8.iml
*.jar
.settings
+40 -5
View File
@@ -1,3 +1,5 @@
[![SimpleClans Logo](https://i.imgur.com/Z8XWayV.png)](https://www.spigotmc.org/resources/simpleclans.71242/)
SimpleClans
==========
@@ -8,10 +10,39 @@ Full featured clan system for PVP Minecraft Servers!
[![Issues](https://img.shields.io/github/issues/RoinujNosde/SimpleClans.svg)](https://github.com/RoinujNosde/SimpleClans/issues)
[![Crowdin](https://badges.crowdin.net/simpleclans/localized.svg)](https://crowdin.com/project/simpleclans)
[![Discord](https://img.shields.io/discord/719557355917934613?label=discord&logo=discord)](https://discord.gg/CkNwgdE)
[![bStats Servers](https://img.shields.io/bstats/servers/7131)](https://bstats.org/plugin/bukkit/SimpleClans/7131)
[![bStats Players](https://img.shields.io/bstats/players/7131)](https://bstats.org/plugin/bukkit/SimpleClans/7131)
Spigot resource page: https://www.spigotmc.org/resources/simpleclans.71242/
Wiki page: https://github.com/RoinujNosde/SimpleClans/wiki
#### Download Link
* [Download from Spigot](https://www.spigotmc.org/resources/simpleclans.71242/)
#### Documentation
* [Documentation](https://simpleclans.gitbook.io/simpleclans/)
* Commands & Permissions
* [Permissions](https://simpleclans.gitbook.io/simpleclans/commands-and-permissions/permissions)
* [Commands](https://simpleclans.gitbook.io/simpleclans/commands-and-permissions/commands)
* [Clan Alliances and Rivalries](https://simpleclans.gitbook.io/simpleclans/commands-and-permissions/aliances-and-rivalries)
* [Clan Ranks with Permissions](https://simpleclans.gitbook.io/simpleclans/commands-and-permissions/ranks-with-permissions)
* How to Setup
* [Configuration](https://simpleclans.gitbook.io/simpleclans/how-to-setup/configuration)
* [Translation](https://simpleclans.gitbook.io/simpleclans/how-to-setup/translation)
* [Clan Member Fee](https://simpleclans.gitbook.io/simpleclans/how-to-setup/member-fee)
* [Clan Upkeep](https://simpleclans.gitbook.io/simpleclans/how-to-setup/clan-upkeep)
* [Clan name above players head](https://simpleclans.gitbook.io/simpleclans/how-to-setup/clan-below-players-name)
* [Clan name on Tablist](https://simpleclans.gitbook.io/simpleclans/how-to-setup/clan-on-tablist)
* Plugins & Development
* [SimpleClans API Example](https://simpleclans.gitbook.io/simpleclans/other/simpleclans-api)
* [PlaceholderAPI Placeholders](https://simpleclans.gitbook.io/simpleclans/other/placeholderapi-support)
* [Land Protection Plugins](https://simpleclans.gitbook.io/simpleclans/other/land-claims)
#### Support & Suggestions
* [Discord Support](https://discord.gg/CkNwgdE)
* [Bugs and Suggestions](https://github.com/RoinujNosde/SimpleClans/issues)
#### Developers
@@ -27,7 +58,7 @@ Including SimpleClans with Maven:
<dependency>
<groupId>net.sacredlabyrinth.phaed.simpleclans</groupId>
<artifactId>SimpleClans</artifactId>
<version>2.12.2</version>
<version>2.14.3</version> <!-- You can find the latest version at the bottom -->
<scope>provided</scope>
</dependency>
</dependencies>
@@ -41,8 +72,12 @@ repositories {
}
}
dependencies {
compileOnly "net.sacredlabyrinth.phaed.simpleclans:SimpleClans:2.12.2"
compileOnly "net.sacredlabyrinth.phaed.simpleclans:SimpleClans:2.14.3" // You can find the latest version at the bottom
}
```
Some examples on how to use the API: https://github.com/RoinujNosde/SimpleClans/wiki/SimpleClans-API-example
##### Latest version:
[![Bintray](https://img.shields.io/bintray/v/roinujnosde/bukkit-plugins/SimpleClans)](https://bintray.com/roinujnosde/bukkit-plugins/SimpleClans/_latestVersion)
##### API Examples
* [Examples of how to use the API](https://simpleclans.gitbook.io/simpleclans/other/simpleclans-api)
+38
View File
@@ -0,0 +1,38 @@
<?xml version="1.0" encoding="UTF-8"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" version="4">
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
<output url="file://$MODULE_DIR$/target/classes" />
<output-test url="file://$MODULE_DIR$/target/test-classes" />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
<excludeFolder url="file://$MODULE_DIR$/target" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.spigotmc:spigot-api:1.13.2-R0.1-SNAPSHOT" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: commons-lang:commons-lang:2.6" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.google.guava:guava:21.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.google.code.gson:gson:2.8.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.md-5:bungeecord-chat:1.13-SNAPSHOT" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.yaml:snakeyaml:1.23" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.github.MilkBowl:VaultAPI:1.7" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.bukkit:bukkit:1.13.1-R0.1-SNAPSHOT" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.googlecode.json-simple:json-simple:1.1.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: junit:junit:4.10" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.hamcrest:hamcrest-core:1.1" level="project" />
<orderEntry type="library" name="Maven: org.bstats:bstats-bukkit:1.7" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: me.clip:placeholderapi:2.10.9" level="project" />
<orderEntry type="library" name="Maven: org.jetbrains:annotations:16.0.2" level="project" />
<orderEntry type="library" name="Maven: io.papermc:paperlib:1.0.5" level="project" />
<orderEntry type="library" name="Maven: co.aikar:acf-paper:0.5.0-SNAPSHOT" level="project" />
<orderEntry type="library" name="Maven: com.github.cryptomorin:XSeries:7.2.1" level="project" />
<orderEntry type="library" name="Maven: org.reflections:reflections:0.9.12" level="project" />
<orderEntry type="library" name="Maven: org.javassist:javassist:3.26.0-GA" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter-api:5.4.0" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.apiguardian:apiguardian-api:1.0.0" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.opentest4j:opentest4j:1.1.1" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.junit.platform:junit-platform-commons:1.4.0" level="project" />
</component>
</module>
+11
View File
@@ -0,0 +1,11 @@
<root>
<item name='co.aikar.commands.BukkitCommandCompletionContext org.bukkit.entity.Player getPlayer()'>
<annotation name='org.jetbrains.annotations.Nullable'/>
</item>
<item name='co.aikar.commands.BukkitCommandExecutionContext org.bukkit.entity.Player getPlayer()'>
<annotation name='org.jetbrains.annotations.Nullable'/>
</item>
<item name='co.aikar.commands.BukkitCommandIssuer org.bukkit.entity.Player getPlayer()'>
<annotation name='org.jetbrains.annotations.Nullable'/>
</item>
</root>
+226
View File
@@ -0,0 +1,226 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>net.sacredlabyrinth.phaed.simpleclans</groupId>
<artifactId>SimpleClans</artifactId>
<name>SimpleClans</name>
<version>2.14.3</version>
<url>http://dev.bukkit.org/server-mods/simpleclans/</url>
<ciManagement>
<system>jenkins</system>
<url>http://104.236.246.108:8080</url>
</ciManagement>
<scm>
<connection>scm:git:git:@github.com:marcelo-mason/SimpleClans.git</connection>
<developerConnection>scm:git:git:@github.com:marcelo-mason/SimpleClans.git</developerConnection>
<tag>SimpleClans</tag>
<url>http://github.com/marcelo-mason/SimpleClans.git/tree/master/</url>
</scm>
<build>
<resources>
<resource>
<targetPath>.</targetPath>
<filtering>true</filtering>
<directory>${basedir}/src/main/resources</directory>
<includes>
<include>plugin.yml</include>
<include>config.yml</include>
<include>*.properties</include>
</includes>
</resource>
</resources>
<finalName>${project.name}</finalName>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<showDeprecation>true</showDeprecation>
<showWarnings>true</showWarnings>
<fork>true</fork>
<compilerArgs>
<arg>-parameters</arg>
</compilerArgs>
</configuration>
</plugin>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
</plugin>
<plugin>
<artifactId>maven-release-plugin</artifactId>
<version>2.3.2</version>
</plugin>
<plugin>
<artifactId>maven-shade-plugin</artifactId>
<version>3.1.0</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
<configuration>
<relocations>
<relocation>
<pattern>org.bstats.bukkit</pattern>
<shadedPattern>net.sacredlabyrinth.phaed.simpleclans.metrics</shadedPattern>
</relocation>
<relocation>
<pattern>io.papermc.lib</pattern>
<shadedPattern>net.sacredlabyrinth.phaed.simpleclans.paperlib</shadedPattern>
</relocation>
<relocation>
<pattern>co.aikar.commands</pattern>
<shadedPattern>net.sacredlabyrinth.phaed.simpleclans.acf</shadedPattern>
</relocation>
<relocation>
<pattern>co.aikar.locales</pattern>
<shadedPattern>net.sacredlabyrinth.phaed.simpleclans.locales</shadedPattern>
</relocation>
<relocation>
<pattern>com.cryptomorin.xseries</pattern>
<shadedPattern>net.sacredlabyrinth.phaed.simpleclans.xseries</shadedPattern>
</relocation>
<relocation>
<pattern>org.reflections</pattern>
<shadedPattern>net.sacredlabyrinth.phaed.simpleclans.reflections</shadedPattern>
</relocation>
</relocations>
<artifactSet>
<excludes>
<exclude>org.jetbrains:annotations</exclude>
</excludes>
</artifactSet>
</configuration>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>spigot-repo</id>
<url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url>
</repository>
<repository>
<id>placeholderapi-repo</id>
<url>https://repo.extendedclip.com/content/repositories/placeholderapi/</url>
</repository>
<repository>
<id>bstats-repo</id>
<url>https://repo.codemc.org/repository/maven-public</url>
</repository>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
<repository>
<id>papermc</id>
<url>https://papermc.io/repo/repository/maven-public/</url>
</repository>
<repository>
<id>aikar</id>
<url>https://repo.aikar.co/content/groups/aikar/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.spigotmc</groupId>
<artifactId>spigot-api</artifactId>
<version>1.13.2-R0.1-SNAPSHOT</version>
<scope>provided</scope>
<exclusions>
<exclusion>
<artifactId>commons-lang</artifactId>
<groupId>commons-lang</groupId>
</exclusion>
<exclusion>
<artifactId>guava</artifactId>
<groupId>com.google.guava</groupId>
</exclusion>
<exclusion>
<artifactId>gson</artifactId>
<groupId>com.google.code.gson</groupId>
</exclusion>
<exclusion>
<artifactId>bungeecord-chat</artifactId>
<groupId>net.md-5</groupId>
</exclusion>
<exclusion>
<artifactId>snakeyaml</artifactId>
<groupId>org.yaml</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.github.MilkBowl</groupId>
<artifactId>VaultAPI</artifactId>
<version>1.7</version>
<scope>provided</scope>
<exclusions>
<exclusion>
<artifactId>bukkit</artifactId>
<groupId>org.bukkit</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.googlecode.json-simple</groupId>
<artifactId>json-simple</artifactId>
<version>1.1.1</version>
<scope>provided</scope>
<exclusions>
<exclusion>
<artifactId>junit</artifactId>
<groupId>junit</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>me.clip</groupId>
<artifactId>placeholderapi</artifactId>
<version>2.10.9</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.jetbrains</groupId>
<artifactId>annotations</artifactId>
<version>16.0.2</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.4.0</version>
<scope>test</scope>
<exclusions>
<exclusion>
<artifactId>apiguardian-api</artifactId>
<groupId>org.apiguardian</groupId>
</exclusion>
<exclusion>
<artifactId>opentest4j</artifactId>
<groupId>org.opentest4j</groupId>
</exclusion>
<exclusion>
<artifactId>junit-platform-commons</artifactId>
<groupId>org.junit.platform</groupId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<distributionManagement>
<repository>
<id>bintray-roinujnosde-bukkit-plugins</id>
<name>roinujnosde-bukkit-plugins</name>
<url>https://api.bintray.com/maven/roinujnosde/bukkit-plugins/SimpleClans/;publish=1</url>
</repository>
</distributionManagement>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
</project>
+1 -1
View File
@@ -1,7 +1,7 @@
<root>
<item name='org.bukkit.configuration.MemorySection java.lang.String getString(java.lang.String, java.lang.String)'>
<annotation name='org.jetbrains.annotations.Contract'>
<val val="&quot;_, _ -&gt; !null&quot;"/>
<val val="&quot;_, _, -&gt; !null&quot;"/>
</annotation>
</item>
</root>
+45 -1
View File
@@ -3,7 +3,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>net.sacredlabyrinth.phaed.simpleclans</groupId>
<artifactId>SimpleClans</artifactId>
<version>2.13.1</version>
<version>2.14.4.1</version>
<name>SimpleClans</name>
<url>http://dev.bukkit.org/server-mods/simpleclans/</url>
@@ -37,6 +37,9 @@
<showDeprecation>true</showDeprecation>
<showWarnings>true</showWarnings>
<fork>true</fork>
<compilerArgs>
<arg>-parameters</arg>
</compilerArgs>
</configuration>
</plugin>
@@ -69,6 +72,22 @@
<pattern>io.papermc.lib</pattern>
<shadedPattern>net.sacredlabyrinth.phaed.simpleclans.paperlib</shadedPattern>
</relocation>
<relocation>
<pattern>co.aikar.commands</pattern>
<shadedPattern>net.sacredlabyrinth.phaed.simpleclans.acf</shadedPattern>
</relocation>
<relocation>
<pattern>co.aikar.locales</pattern>
<shadedPattern>net.sacredlabyrinth.phaed.simpleclans.locales</shadedPattern>
</relocation>
<relocation>
<pattern>com.cryptomorin.xseries</pattern>
<shadedPattern>net.sacredlabyrinth.phaed.simpleclans.xseries</shadedPattern>
</relocation>
<relocation>
<pattern>org.reflections</pattern>
<shadedPattern>net.sacredlabyrinth.phaed.simpleclans.reflections</shadedPattern>
</relocation>
</relocations>
<artifactSet>
<excludes>
@@ -130,6 +149,27 @@
<version>1.0.5</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>co.aikar</groupId>
<artifactId>acf-paper</artifactId>
<version>0.5.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.github.cryptomorin</groupId>
<artifactId>XSeries</artifactId>
<version>7.2.1</version>
</dependency>
<dependency>
<groupId>org.reflections</groupId>
<artifactId>reflections</artifactId>
<version>0.9.12</version>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.4.0</version>
<scope>test</scope>
</dependency>
</dependencies>
<!-- Repositories -->
@@ -154,6 +194,10 @@
<id>papermc</id>
<url>https://papermc.io/repo/repository/maven-public/</url>
</repository>
<repository>
<id>aikar</id>
<url>https://repo.aikar.co/content/groups/aikar/</url>
</repository>
</repositories>
<!-- GitHub/Jenkins -->
@@ -2,6 +2,8 @@ package net.sacredlabyrinth.phaed.simpleclans;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.ArrayList;
import java.util.Arrays;
@@ -9,6 +11,8 @@ import java.util.LinkedList;
import java.util.List;
import java.util.logging.Logger;
import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
/**
* @author phaed
*/
@@ -622,7 +626,7 @@ public class ChatBlock {
* @param receiver
* @param msg
*/
public static void sendMessage(CommandSender receiver, String msg) {
public static void sendMessage(@Nullable CommandSender receiver, @NotNull String msg) {
if (receiver == null) {
return;
}
@@ -634,6 +638,10 @@ public class ChatBlock {
}
}
public static void sendMessageKey(@Nullable CommandSender receiver, @NotNull String key, @NotNull Object... args) {
sendMessage(receiver, lang(key, receiver, args));
}
/**
* Send blank lie
*
@@ -1,5 +1,6 @@
package net.sacredlabyrinth.phaed.simpleclans;
import com.cryptomorin.xseries.XMaterial;
import net.md_5.bungee.api.chat.HoverEvent;
import net.md_5.bungee.api.chat.TextComponent;
import net.sacredlabyrinth.phaed.simpleclans.events.*;
@@ -8,7 +9,6 @@ import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
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;
@@ -91,7 +91,7 @@ public class Clan implements Serializable, Comparable<Clan> {
}
@Override
public boolean equals(Object obj) {
public boolean equals(@Nullable Object obj) {
if (!(obj instanceof Clan)) {
return false;
}
@@ -117,6 +117,12 @@ public class Clan implements Serializable, Comparable<Clan> {
* @param player
*/
public void deposit(double amount, Player player) {
BankDepositEvent event = new BankDepositEvent(player, this, amount);
Bukkit.getPluginManager().callEvent(event);
if (event.isCancelled()) {
return;
}
amount = event.getAmount();
if (SimpleClans.getInstance().getPermissionsManager().playerHasMoney(player, amount)) {
if (SimpleClans.getInstance().getPermissionsManager().playerChargeMoney(player, amount)) {
player.sendMessage(ChatColor.AQUA + lang("player.clan.deposit", player, amount));
@@ -138,6 +144,12 @@ public class Clan implements Serializable, Comparable<Clan> {
* @param player
*/
public void withdraw(double amount, Player player) {
BankWithdrawEvent event = new BankWithdrawEvent(player, this, amount);
Bukkit.getPluginManager().callEvent(event);
if (event.isCancelled()) {
return;
}
amount = event.getAmount();
if (getBalance() >= amount) {
if (SimpleClans.getInstance().getPermissionsManager().playerGrantMoney(player, amount)) {
player.sendMessage(ChatColor.AQUA + lang("player.clan.withdraw", player, amount));
@@ -299,7 +311,7 @@ public class Clan implements Serializable, Comparable<Clan> {
/**
* Check if the player is a member of this clan
*
* @param player
* @param player the Player
* @return confirmation
*/
public boolean isMember(Player player) {
@@ -309,13 +321,17 @@ public class Clan implements Serializable, Comparable<Clan> {
/**
* Check if the player is a member of this clan
*
* @param playerUniqueId
* @param playerUniqueId the Player's UUID
* @return confirmation
*/
public boolean isMember(UUID playerUniqueId) {
return this.members.contains(playerUniqueId.toString());
}
@SuppressWarnings("deprecation")
public boolean isMember(String playerName) {
return isMember(Bukkit.getOfflinePlayer(playerName).getUniqueId());
}
/**
* Returns a list with the contents of the bulletin board
@@ -719,6 +735,11 @@ public class Clan implements Serializable, Comparable<Clan> {
return false;
}
@SuppressWarnings("deprecation")
public boolean isLeader(String playerName) {
return isLeader(Bukkit.getOfflinePlayer(playerName).getUniqueId());
}
/**
* Get all members that must pay the fee (that excludes leaders and players with the permission to bypass it)
*
@@ -1057,6 +1078,11 @@ public class Clan implements Serializable, Comparable<Clan> {
SimpleClans.getInstance().getServer().getPluginManager().callEvent(new PlayerJoinedClanEvent(this, cp));
}
@SuppressWarnings("deprecation")
public void removePlayerFromClan(String playerName) {
removePlayerFromClan(Bukkit.getOfflinePlayer(playerName).getUniqueId());
}
/**
* Remove a player from a clan
*
@@ -1090,6 +1116,11 @@ public class Clan implements Serializable, Comparable<Clan> {
SimpleClans.getInstance().getServer().getPluginManager().callEvent(new PlayerKickedClanEvent(this, cp));
}
@SuppressWarnings("deprecation")
public void promote(String playerName) {
promote(Bukkit.getOfflinePlayer(playerName).getUniqueId());
}
/**
* Promote a member to a leader of a clan
*
@@ -1109,6 +1140,11 @@ public class Clan implements Serializable, Comparable<Clan> {
SimpleClans.getInstance().getServer().getPluginManager().callEvent(new PlayerPromoteEvent(this, cp));
}
@SuppressWarnings("deprecation")
public void demote(String playerName) {
demote(Bukkit.getOfflinePlayer(playerName).getUniqueId());
}
/**
* Demote a leader back to a member of a clan
*
@@ -1697,7 +1733,9 @@ public class Clan implements Serializable, Comparable<Clan> {
return null;
}
if (!(world.getBlockAt(homeX, homeY, homeZ).getType().equals(Material.AIR)) || !(world.getBlockAt(homeX, homeY + 1, homeZ).getType().equals(Material.AIR)) || homeY == 0) {
if (!(world.getBlockAt(homeX, homeY, homeZ).getType().equals(XMaterial.AIR.parseMaterial())) ||
!(world.getBlockAt(homeX, homeY + 1, homeZ).getType().equals(XMaterial.AIR.parseMaterial()))
|| homeY == 0) {
return new Location(world, homeX, world.getHighestBlockYAt(homeX, homeZ), homeZ);
} else {
return new Location(world, homeX, homeY, homeZ);
@@ -2,6 +2,7 @@ package net.sacredlabyrinth.phaed.simpleclans;
import org.bukkit.ChatColor;
import org.bukkit.OfflinePlayer;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -39,8 +40,8 @@ public class ClanPlayer implements Serializable, Comparable<ClanPlayer>
private long joinDate;
private Set<String> pastClans = new HashSet<>();
private final Map<String, Long> resignTimes = new HashMap<>();
private VoteResult vote;
private Channel channel;
private @Nullable VoteResult vote;
private @NotNull Channel channel;
private boolean useChatShortcut = false;
private boolean globalChat = true;
@@ -284,27 +285,31 @@ public class ClanPlayer implements Serializable, Comparable<ClanPlayer>
}
/**
* @param viewer the Player viewing the last seen days
* @param sender the Player viewing the last seen days
* @return a verbal representation of how many days ago a player was last seen
*/
public String getLastSeenDaysString(@Nullable Player viewer)
public String getLastSeenDaysString(@Nullable CommandSender sender)
{
double days = Dates.differenceInDays(new Timestamp(lastSeen), new Timestamp((new Date()).getTime()));
if (days < 1)
{
return lang("today", viewer);
return lang("today", sender);
}
else if (Math.round(days) == 1)
{
return lang("1.color.day", viewer, ChatColor.GRAY);
return lang("1.color.day", sender, ChatColor.GRAY);
}
else
{
return lang("many.color.days", viewer, Math.round(days), ChatColor.GRAY);
return lang("many.color.days", sender, Math.round(days), ChatColor.GRAY);
}
}
public String getLastSeenDaysString(@Nullable Player viewer) {
return getLastSeenDaysString((CommandSender) viewer);
}
/**
* Returns number of days since the player was last seen
*
@@ -443,7 +448,7 @@ public class ClanPlayer implements Serializable, Comparable<ClanPlayer>
*
* @return the vote
*/
public VoteResult getVote()
public @Nullable VoteResult getVote()
{
return vote;
}
@@ -453,7 +458,7 @@ public class ClanPlayer implements Serializable, Comparable<ClanPlayer>
*
* @param vote the vote to set
*/
public void setVote(VoteResult vote)
public void setVote(@Nullable VoteResult vote)
{
this.vote = vote;
}
@@ -565,8 +570,13 @@ public class ClanPlayer implements Serializable, Comparable<ClanPlayer>
* @return a string representation of the last seen date
*/
public String getLastSeenString(@Nullable Player viewer) {
if (toPlayer() != null) {
return lang("online", viewer);
return getLastSeenString((CommandSender) viewer);
}
public String getLastSeenString(@Nullable CommandSender sender) {
Player player = toPlayer();
if (player != null && player.isOnline() && !Helper.isVanished(sender, player)) {
return lang("online", sender);
}
return new java.text.SimpleDateFormat("MMM dd, ''yy h:mm a").format(new Date(this.lastSeen));
}
@@ -935,42 +945,48 @@ public class ClanPlayer implements Serializable, Comparable<ClanPlayer>
}
}
public Channel getChannel()
public @NotNull Channel getChannel()
{
return channel;
}
@Deprecated
public boolean isGlobalChat()
{
return globalChat;
}
@Deprecated
public boolean isAllyChat()
{
return allyChat;
}
@Deprecated
public boolean isClanChat()
{
return clanChat;
}
@Deprecated
public void setGlobalChat(boolean globalChat)
{
this.globalChat = globalChat;
}
@Deprecated
public void setAllyChat(boolean allyChat)
{
this.allyChat = allyChat;
}
@Deprecated
public void setClanChat(boolean clanChat)
{
this.clanChat = clanChat;
}
public void setChannel(Channel channel)
public void setChannel(@NotNull Channel channel)
{
this.channel = channel;
}
@@ -1049,7 +1065,7 @@ public class ClanPlayer implements Serializable, Comparable<ClanPlayer>
*
* @param rank the rank id
*/
public void setRank(String rank)
public void setRank(@Nullable String rank)
{
if (rank == null) {
rank = "";
@@ -1,11 +1,14 @@
package net.sacredlabyrinth.phaed.simpleclans;
import net.sacredlabyrinth.phaed.simpleclans.managers.SettingsManager;
import net.sacredlabyrinth.phaed.simpleclans.utils.KDRFormat;
import net.sacredlabyrinth.phaed.simpleclans.uuid.UUIDMigration;
import net.sacredlabyrinth.phaed.simpleclans.utils.VanishUtils;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.Contract;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.json.simple.JSONArray;
@@ -24,8 +27,6 @@ import java.time.temporal.ChronoUnit;
import java.util.*;
import java.util.Map.Entry;
import net.sacredlabyrinth.phaed.simpleclans.managers.SettingsManager;
/**
* @author phaed
*/
@@ -37,6 +38,7 @@ public class Helper {
/**
* Dumps stacktrace to log
*/
@Deprecated
public static void dumpStackTrace() {
for (StackTraceElement el : Thread.currentThread().getStackTrace()) {
SimpleClans.debug(el.toString());
@@ -79,10 +81,10 @@ public class Helper {
/**
* Converts a JSON String to a list of Ranks
*
* @param json
* @param json the JSON String
* @return a list of ranks or null if the JSON String is null/empty
*/
public static List<Rank> ranksFromJson(String json) {
public static @Nullable List<Rank> ranksFromJson(String json) {
if (json != null && !json.isEmpty()) {
try {
JSONObject jo = (JSONObject) new JSONParser().parse(json);
@@ -465,13 +467,13 @@ public class Helper {
* @return
*/
public static String toMessage(String[] args) {
String out = "";
StringBuilder out = new StringBuilder();
for (String arg : args) {
out += arg + " ";
out.append(arg).append(" ");
}
return out.trim();
return out.toString().trim();
}
/**
@@ -734,30 +736,44 @@ public class Helper {
}
/**
* Sort hashmap by value
* Sorts a Map by value
*
* @param map
* @return Map
* @param map the Map to sort
* @return the Map sorted
*/
public static Map sortByValue(Map map) {
List list = new LinkedList(map.entrySet());
Collections.sort(list, new Comparator() {
public static <K, V extends Comparable<V>> Map<K, V> sortByValue(Map<K, V> map) {
LinkedList<Map.Entry<K, V>> entryList = new LinkedList<>(map.entrySet());
entryList.sort(Entry.comparingByValue());
@Override
public int compare(Object o1, Object o2) {
return ((Comparable) ((Map.Entry) (o2)).getValue()).compareTo(((Map.Entry) (o1)).getValue());
}
});
Map result = new LinkedHashMap();
for (Iterator it = list.iterator(); it.hasNext();) {
Map.Entry entry = (Map.Entry) it.next();
Map<K, V> result = new LinkedHashMap<>();
for (Entry<K, V> entry : entryList) {
result.put(entry.getKey(), entry.getValue());
}
return result;
}
public static boolean isVanished(Player player) {
/**
* @deprecated use {@link VanishUtils#isVanished(CommandSender, Player)}
*/
@Deprecated
@Contract("_, null -> false")
public static boolean isVanished(@Nullable CommandSender viewer, @Nullable Player player) {
if (isVanished(player)) {
return true;
}
if (viewer instanceof Player && player != null) {
return !((Player) viewer).canSee(player);
}
return false;
}
/**
* @deprecated use {@link VanishUtils#isVanished(Player)}
*/
@Deprecated
@Contract("null -> false")
public static boolean isVanished(@Nullable Player player) {
if (player != null && player.hasMetadata("vanished") && !player.getMetadata("vanished").isEmpty()) {
return player.getMetadata("vanished").get(0).asBoolean();
}
@@ -782,8 +798,10 @@ public class Helper {
return new ArrayList<>();
}
@Deprecated
@Nullable
public static Player getPlayer(String playerName) {
return SimpleClans.getInstance().getServer().getPlayer(UUIDMigration.getForcedPlayerUUID(playerName));
return Bukkit.getPlayerExact(playerName);
}
/**
@@ -812,13 +830,12 @@ public class Helper {
}
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())
return ChatColor.translateAlternateColorCodes('&', messageFormat)
.replace("%clan%", Objects.requireNonNull(cp.getClan()).getColorTag())
.replace("%nick-color%", (cp.isLeader() ? leaderColor : memberColor))
.replace("%player%", cp.getName())
.replace("%rank%", rankFormat)
.replace("%message%", msg);
return message;
}
/**
@@ -1,61 +0,0 @@
package net.sacredlabyrinth.phaed.simpleclans;
import org.bukkit.OfflinePlayer;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.command.TabCompleter;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
public class PlayerNameTabCompleter implements TabCompleter {
private final SimpleClans plugin;
public PlayerNameTabCompleter() {
plugin = SimpleClans.getInstance();
}
@Override
public List<String> onTabComplete(@NotNull CommandSender commandSender, Command command, @NotNull String s, String[] strings) {
if (command.getName().equalsIgnoreCase(plugin.getSettingsManager().getCommandClan())) {
if (strings.length < 2) {
return null;
}
Player player = null;
if (commandSender instanceof Player) {
player = (Player) commandSender;
}
if (strings[0].equalsIgnoreCase(lang("lookup.command", player)) ||
strings[0].equalsIgnoreCase(lang("ban.command", player)) ||
strings[0].equalsIgnoreCase(lang("unban.command", player)) ||
strings[0].equalsIgnoreCase(lang("kick.command", player)) ||
strings[0].equalsIgnoreCase(lang("trust.command", player)) ||
strings[0].equalsIgnoreCase(lang("untrust.command", player)) ||
strings[0].equalsIgnoreCase(lang("promote.command", player)) ||
strings[0].equalsIgnoreCase(lang("demote.command", player)) ||
strings[0].equalsIgnoreCase(lang("setrank.command", player)) ||
strings[0].equalsIgnoreCase(lang("place.command", player)) ||
strings[0].equalsIgnoreCase(lang("invite.command", player)) ||
strings[0].equalsIgnoreCase(lang("kills.command", player))) {
List<String> list = new ArrayList<>();
for (Player p : plugin.getServer().getOnlinePlayers()) {
if (p.getName().startsWith(strings[1])) {
list.add(p.getName());
}
}
Collections.sort(list);
return list;
}
}
return null;
}
}
@@ -21,7 +21,8 @@ public enum RankPermission {
COORDS("simpleclans.member.coords", PermissionLevel.TRUSTED),
FEE_ENABLE("simpleclans.leader.fee", PermissionLevel.LEADER),
FEE_SET("simpleclans.leader.fee", PermissionLevel.LEADER),
HOME_REGROUP("simpleclans.leader.home-regroup", PermissionLevel.LEADER),
REGROUP_HOME("simpleclans.leader.regroup.home", PermissionLevel.LEADER),
REGROUP_ME("simpleclans.leader.regroup.me", PermissionLevel.LEADER),
HOME_SET("simpleclans.leader.home-set", PermissionLevel.LEADER),
HOME_TP("simpleclans.member.home", PermissionLevel.TRUSTED),
INVITE("simpleclans.leader.invite", PermissionLevel.LEADER),
@@ -1,5 +1,7 @@
package net.sacredlabyrinth.phaed.simpleclans;
import org.jetbrains.annotations.Nullable;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@@ -16,16 +18,13 @@ public final class Request {
private ClanPlayer requester;
private int askCount;
/**
* @param plugin
* @param type
* @param acceptors
* @param msg
* @param requester
* @param clan
* @param target
*/
public Request(SimpleClans plugin, ClanRequest type, List<ClanPlayer> acceptors, ClanPlayer requester, String target, Clan clan, String msg) {
public Request(SimpleClans plugin,
ClanRequest type,
@Nullable List<ClanPlayer> acceptors,
ClanPlayer requester,
String target,
Clan clan,
String msg) {
this.type = type;
this.target = target;
this.clan = clan;
@@ -108,25 +107,15 @@ public final class Request {
this.target = target;
}
/**
* Used for leader voting
*
* @param playerNAme
* @param vote
*/
public void vote(String playerNAme, VoteResult vote) {
public void vote(String playerName, VoteResult vote) {
for (ClanPlayer cp : acceptors) {
if (cp.getName().equalsIgnoreCase(playerNAme)) {
if (cp.getName().equalsIgnoreCase(playerName)) {
cp.setVote(vote);
}
}
}
/**
* Check whether all leaders have voted
*
* @return
*/
@SuppressWarnings("BooleanMethodIsAlwaysInverted")
public boolean votingFinished() {
for (ClanPlayer cp : acceptors) {
if (cp.getVote() == null) {
@@ -137,11 +126,6 @@ public final class Request {
return true;
}
/**
* Returns the players who have denied the request
*
* @return
*/
public List<String> getDenies() {
List<String> out = new ArrayList<>();
@@ -154,11 +138,6 @@ public final class Request {
return out;
}
/**
* Returns the players who have denied the request
*
* @return
*/
public List<String> getAccepts() {
List<String> out = new ArrayList<>();
@@ -1,42 +1,32 @@
package net.sacredlabyrinth.phaed.simpleclans;
import co.aikar.commands.BukkitCommandIssuer;
import net.sacredlabyrinth.phaed.simpleclans.commands.SCCommandManager;
import net.sacredlabyrinth.phaed.simpleclans.language.LanguageMigration;
import net.sacredlabyrinth.phaed.simpleclans.language.LanguageResource;
import net.sacredlabyrinth.phaed.simpleclans.listeners.*;
import net.sacredlabyrinth.phaed.simpleclans.managers.*;
import net.sacredlabyrinth.phaed.simpleclans.tasks.*;
import net.sacredlabyrinth.phaed.simpleclans.ui.InventoryController;
import net.sacredlabyrinth.phaed.simpleclans.utils.ChatFormatMigration;
import net.sacredlabyrinth.phaed.simpleclans.utils.UpdateChecker;
import net.sacredlabyrinth.phaed.simpleclans.uuid.UUIDMigration;
import org.bstats.bukkit.Metrics;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
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 net.sacredlabyrinth.phaed.simpleclans.tasks.*;
import org.bstats.bukkit.Metrics;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
import net.sacredlabyrinth.phaed.simpleclans.executors.AcceptCommandExecutor;
import net.sacredlabyrinth.phaed.simpleclans.executors.AllyCommandExecutor;
import net.sacredlabyrinth.phaed.simpleclans.executors.ClanCommandExecutor;
import net.sacredlabyrinth.phaed.simpleclans.executors.DenyCommandExecutor;
import net.sacredlabyrinth.phaed.simpleclans.executors.GlobalCommandExecutor;
import net.sacredlabyrinth.phaed.simpleclans.executors.MoreCommandExecutor;
import net.sacredlabyrinth.phaed.simpleclans.language.LanguageMigration;
import net.sacredlabyrinth.phaed.simpleclans.language.LanguageResource;
import net.sacredlabyrinth.phaed.simpleclans.listeners.SCEntityListener;
import net.sacredlabyrinth.phaed.simpleclans.listeners.SCPlayerListener;
import net.sacredlabyrinth.phaed.simpleclans.managers.ClanManager;
import net.sacredlabyrinth.phaed.simpleclans.managers.PermissionsManager;
import net.sacredlabyrinth.phaed.simpleclans.managers.PlaceholdersManager;
import net.sacredlabyrinth.phaed.simpleclans.managers.RequestManager;
import net.sacredlabyrinth.phaed.simpleclans.managers.SettingsManager;
import net.sacredlabyrinth.phaed.simpleclans.managers.StorageManager;
import net.sacredlabyrinth.phaed.simpleclans.managers.TeleportManager;
import net.sacredlabyrinth.phaed.simpleclans.ui.InventoryController;
import net.sacredlabyrinth.phaed.simpleclans.utils.ChatFormatMigration;
import net.sacredlabyrinth.phaed.simpleclans.utils.UpdateChecker;
import net.sacredlabyrinth.phaed.simpleclans.uuid.UUIDMigration;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.regex.Pattern;
/**
* @author Phaed
@@ -47,6 +37,7 @@ public class SimpleClans extends JavaPlugin {
private static SimpleClans instance;
private static LanguageResource languageResource;
private static final Logger logger = Logger.getLogger("Minecraft");
private SCCommandManager commandManager;
private ClanManager clanManager;
private RequestManager requestManager;
private StorageManager storageManager;
@@ -63,9 +54,6 @@ public class SimpleClans extends JavaPlugin {
return logger;
}
/**
* @param msg
*/
public static void debug(String msg) {
if (getInstance().getSettingsManager().isDebugging()) {
logger.log(Level.INFO, msg);
@@ -95,55 +83,54 @@ public class SimpleClans extends JavaPlugin {
settingsManager = new SettingsManager();
languageResource = new LanguageResource();
this.hasUUID = UUIDMigration.canReturnUUID();
permissionsManager = new PermissionsManager();
requestManager = new RequestManager();
clanManager = new ClanManager();
storageManager = new StorageManager();
teleportManager = new TeleportManager();
ChatFormatMigration chatFormatMigration = new ChatFormatMigration();
chatFormatMigration.migrateAllyChat();
chatFormatMigration.migrateClanChat();
getServer().getPluginManager().registerEvents(new SCEntityListener(), this);
getServer().getPluginManager().registerEvents(new SCPlayerListener(), this);
getServer().getPluginManager().registerEvents(new InventoryController(), this);
migrateChatFormat();
registerEvents();
permissionsManager.loadPermissions();
commandManager = new SCCommandManager(this);
CommandHelper.registerCommand(getSettingsManager().getCommandClan());
CommandHelper.registerCommand(getSettingsManager().getCommandAccept());
CommandHelper.registerCommand(getSettingsManager().getCommandDeny());
CommandHelper.registerCommand(getSettingsManager().getCommandMore());
CommandHelper.registerCommand(getSettingsManager().getCommandAlly());
CommandHelper.registerCommand(getSettingsManager().getCommandGlobal());
getCommand(getSettingsManager().getCommandClan()).setExecutor(new ClanCommandExecutor());
getCommand(getSettingsManager().getCommandAccept()).setExecutor(new AcceptCommandExecutor());
getCommand(getSettingsManager().getCommandDeny()).setExecutor(new DenyCommandExecutor());
getCommand(getSettingsManager().getCommandMore()).setExecutor(new MoreCommandExecutor());
getCommand(getSettingsManager().getCommandAlly()).setExecutor(new AllyCommandExecutor());
getCommand(getSettingsManager().getCommandGlobal()).setExecutor(new GlobalCommandExecutor());
getCommand(getSettingsManager().getCommandClan()).setTabCompleter(new PlayerNameTabCompleter());
getLogger().info("Multithreading: " + SimpleClans.getInstance().getSettingsManager().getUseThreads());
getLogger().info("BungeeCord: " + SimpleClans.getInstance().getSettingsManager().getUseBungeeCord());
getLogger().info("Help us translate SimpleClans to your language! Access https://crowdin.com/project/simpleclans/");
logStatus();
startTasks();
startMetrics();
hookIntoPAPI();
new UpdateChecker(this).check();
}
private void hookIntoPAPI() {
if (getServer().getPluginManager().getPlugin("PlaceholderAPI") != null) {
getLogger().info("PlaceholderAPI found. Registering hook...");
new PlaceholdersManager(this).register();
}
private void logStatus() {
getLogger().info("Multithreading: " + SimpleClans.getInstance().getSettingsManager().getUseThreads());
getLogger().info("BungeeCord: " + SimpleClans.getInstance().getSettingsManager().getUseBungeeCord());
getLogger().info("Help us translate SimpleClans to your language! " +
"Access https://crowdin.com/project/simpleclans/");
}
private void registerEvents() {
PluginManager pm = getServer().getPluginManager();
pm.registerEvents(new PlayerDeath(), this);
pm.registerEvents(new SCPlayerListener(), this);
pm.registerEvents(new InventoryController(), this);
pm.registerEvents(new TamableMobsSharing(this), this);
pm.registerEvents(new PvPOnlyInWar(this), this);
pm.registerEvents(new FriendlyFire(this), this);
}
private void migrateChatFormat() {
ChatFormatMigration chatFormatMigration = new ChatFormatMigration();
chatFormatMigration.migrateAllyChat();
chatFormatMigration.migrateClanChat();
}
private void hookIntoPAPI() {
if (getServer().getPluginManager().getPlugin("PlaceholderAPI") != null) {
getLogger().info("PlaceholderAPI found. Registering hook...");
new PlaceholdersManager(this).register();
}
}
private void startMetrics() {
Metrics metrics = new Metrics(this, 7131);
SettingsManager sm = getSettingsManager();
@@ -230,6 +217,10 @@ public class SimpleClans extends JavaPlugin {
return permissionsManager;
}
public SCCommandManager getCommandManager() {
return commandManager;
}
/**
* @param key the path within the language file
* @return the lang
@@ -244,8 +235,8 @@ public class SimpleClans extends JavaPlugin {
return lang(key, player);
}
@NotNull
public static String lang(@NotNull String key, @Nullable Player player, Object... arguments) {
@Nullable
public static String optionalLang(@NotNull String key, @Nullable Player player, Object... arguments) {
Locale locale = getInstance().getSettingsManager().getLanguage();
if (player != null && instance.getSettingsManager().isLanguagePerPlayer()) {
Locale playerLocale = Helper.getLocale(player);
@@ -254,44 +245,63 @@ public class SimpleClans extends JavaPlugin {
}
}
return MessageFormat.format(
ChatColor.translateAlternateColorCodes(
'&', languageResource.getLang(key, locale)), arguments);
String lang = languageResource.getLang(key, locale);
if (lang == null) {
return null;
}
String message = ChatColor.translateAlternateColorCodes('&', lang);
// contains acf placeholders like {commandprefix}
if (Pattern.compile("\\{(?<key>[a-zA-Z]+?)}").matcher(message).find()) {
return message;
}
return MessageFormat.format(message, arguments);
}
@NotNull
public static String lang(@NotNull String key, @NotNull CommandSender sender, Object... arguments) {
if (sender instanceof Player) {
public static String lang(@NotNull String key, @Nullable Player player, Object... arguments) {
String lang = optionalLang(key, player, arguments);
if (lang == null) {
return key;
}
return lang;
}
@NotNull
public static String lang(@NotNull String key, @Nullable CommandSender sender, Object... arguments) {
if (sender instanceof Player) {
return lang(key, (Player) sender, arguments);
} else {
return lang(key, null, arguments);
return lang(key, (Player) null, arguments);
}
}
@NotNull
public static String lang(@NotNull String key, @Nullable BukkitCommandIssuer issuer, Object... arguments) {
if (issuer != null) {
return lang(key, issuer.getIssuer(), arguments);
}
return lang(key, arguments);
}
@NotNull
public static String lang(@NotNull String key, Object... arguments) {
return lang(key, null, arguments);
return lang(key, (Player) null, arguments);
}
public TeleportManager getTeleportManager() {
return teleportManager;
}
@Deprecated
public List<String> getMessages() {
return messages;
}
/**
* @return the hasUUID
*/
@Deprecated
public boolean hasUUID() {
return this.hasUUID;
}
/**
* @param trueOrFalse
*/
public void setUUID(boolean trueOrFalse) {
this.hasUUID = trueOrFalse;
}
@@ -2,37 +2,31 @@ package net.sacredlabyrinth.phaed.simpleclans;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.Nullable;
import java.util.UUID;
public class TeleportState {
private UUID playerUniqueId;
private Location playerLocation;
private Location destination;
private final UUID playerUniqueId;
private final Location playerLocation;
private final Location destination;
private int counter;
private String clanName;
private final String clanName;
private boolean processing;
public TeleportState(Player player, Location dest, String clanName) {
this.destination = dest;
public TeleportState(Player player, Location destination, String clanName) {
this.destination = destination;
this.playerLocation = player.getLocation();
this.clanName = clanName;
this.counter = SimpleClans.getInstance().getSettingsManager().getWaitSecs();
this.playerUniqueId = player.getUniqueId();
}
/**
* @return
*/
public Location getLocation() {
return this.playerLocation;
}
/**
* Whether its time for teleport
*
* @return
*/
public boolean isTeleportTime() {
if (this.counter > 1) {
this.counter--;
@@ -45,16 +39,16 @@ public class TeleportState {
/**
* The player that is waiting for teleport
*
* @return
* @return the player
*/
public Player getPlayer() {
public @Nullable Player getPlayer() {
return SimpleClans.getInstance().getServer().getPlayer(this.playerUniqueId);
}
/**
* Get seconds left before teleport
*
* @return
* @return the counter
*/
public int getCounter() {
return this.counter;
@@ -1,72 +0,0 @@
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 static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import java.text.MessageFormat;
import java.util.List;
/**
* @author phaed
*/
public class AlliancesCommand {
public AlliancesCommand() {
}
/**
* 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 (arg.length != 0) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(lang("usage.clan.alliances", player), plugin.getSettingsManager().getCommandClan()));
return;
}
if (!plugin.getPermissionsManager().has(player, "simpleclans.anyone.alliances")) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("insufficient.permissions", player));
return;
}
List<Clan> clans = plugin.getClanManager().getClans();
plugin.getClanManager().sortClansByKDR(clans);
ChatBlock chatBlock = new ChatBlock();
ChatBlock.sendBlank(player);
ChatBlock.saySingle(player, plugin.getSettingsManager().getServerName() + subColor + " " + lang("alliances",player) + " " + headColor + Helper.generatePageSeparator(plugin.getSettingsManager().getPageSep()));
ChatBlock.sendBlank(player);
chatBlock.setAlignment("l", "l");
chatBlock.addRow(" " + headColor + lang("clan",player), lang("allies",player));
for (Clan clan : clans) {
if (!clan.isVerified()) {
continue;
}
chatBlock.addRow(" " + ChatColor.AQUA + clan.getColorTag(), clan.getAllyString(ChatColor.DARK_GRAY + ", "));
}
boolean more = chatBlock.sendBlock(player, plugin.getSettingsManager().getPageSize());
if (more) {
plugin.getStorageManager().addChatBlock(player, chatBlock);
ChatBlock.sendBlank(player);
ChatBlock.sendMessage(player, headColor + MessageFormat.format(lang("view.next.page",player), plugin.getSettingsManager().getCommandMore()));
}
ChatBlock.sendBlank(player);
}
}
@@ -1,119 +0,0 @@
package net.sacredlabyrinth.phaed.simpleclans.commands;
import net.sacredlabyrinth.phaed.simpleclans.*;
import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import java.text.MessageFormat;
import java.util.List;
import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
/**
* @author phaed
*/
public class AllyCommand {
public AllyCommand() {
}
/**
* 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.ally")) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("insufficient.permissions",player));
return;
}
ClanPlayer cp = plugin.getClanManager().getClanPlayer(player);
if (cp == null) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("not.a.member.of.any.clan",player));
return;
}
Clan clan = cp.getClan();
if (!clan.isVerified()) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("clan.is.not.verified",player));
return;
}
if (arg.length != 2) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(lang("usage.ally",player), plugin.getSettingsManager().getCommandClan()));
return;
}
if (clan.getSize() < plugin.getSettingsManager().getClanMinSizeToAlly()) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(lang("minimum.to.make.alliance",player), plugin.getSettingsManager().getClanMinSizeToAlly()));
return;
}
String action = arg[0];
Clan ally = plugin.getClanManager().getClan(arg[1]);
if (ally == null) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("no.clan.matched",player));
return;
}
if (!ally.isVerified()) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("cannot.ally.with.an.unverified.clan",player));
return;
}
if (action.equals(lang("add",player))) {
if (!plugin.getPermissionsManager().has(player, RankPermission.ALLY_ADD, PermissionLevel.LEADER, true)) {
return;
}
if (clan.isAlly(ally.getTag())) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("your.clans.are.already.allies",player));
return;
}
int maxAlliances = plugin.getSettingsManager().getClanMaxAlliances();
if (maxAlliances != -1) {
if (clan.getAllies().size() >= maxAlliances) {
ChatBlock.sendMessage(player, lang("your.clan.reached.max.alliances", player));
return;
}
if (ally.getAllies().size() >= maxAlliances) {
ChatBlock.sendMessage(player, lang("other.clan.reached.max.alliances", player));
return;
}
}
List<ClanPlayer> onlineLeaders = Helper.stripOffLinePlayers(clan.getLeaders());
if (onlineLeaders.isEmpty()) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("at.least.one.leader.accept.the.alliance",player));
return;
}
plugin.getRequestManager().addAllyRequest(cp, ally, clan);
ChatBlock.sendMessage(player, ChatColor.AQUA + MessageFormat.format(lang("leaders.have.been.asked.for.an.alliance",player), ally.getName()));
} else if (action.equals(lang("remove",player))) {
if (!plugin.getPermissionsManager().has(player, RankPermission.ALLY_REMOVE, PermissionLevel.LEADER, true)) {
return;
}
if (!clan.isAlly(ally.getTag())) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("your.clans.are.not.allies",player));
return;
}
clan.removeAlly(ally);
ally.addBb(cp.getName(), ChatColor.AQUA + MessageFormat.format(lang("has.broken.the.alliance"), clan.getName(), ally.getName()), false);
clan.addBb(cp.getName(), ChatColor.AQUA + MessageFormat.format(lang("has.broken.the.alliance"), cp.getName(), ally.getName()));
} else {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(lang("usage.ally",player), plugin.getSettingsManager().getCommandClan()));
}
}
}
@@ -1,59 +0,0 @@
package net.sacredlabyrinth.phaed.simpleclans.commands;
import net.sacredlabyrinth.phaed.simpleclans.ChatBlock;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import java.text.MessageFormat;
import java.util.UUID;
import net.sacredlabyrinth.phaed.simpleclans.uuid.UUIDMigration;
/**
* @author phaed
*/
public class BanCommand {
public BanCommand() {
}
/**
* Execute the command
*
* @param player
* @param arg
*/
public void execute(Player player, String[] arg) {
SimpleClans plugin = SimpleClans.getInstance();
if (!plugin.getPermissionsManager().has(player, "simpleclans.mod.ban")) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("insufficient.permissions",player));
return;
}
if (arg.length != 1) {
ChatBlock.sendMessage(player, MessageFormat.format(lang("usage.ban.unban",player), ChatColor.RED, plugin.getSettingsManager().getCommandClan()));
return;
}
UUID uuid = UUIDMigration.getForcedPlayerUUID(arg[0]);
if (uuid == null) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("no.player.matched",player));
return;
}
if (plugin.getSettingsManager().isBanned(uuid)) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("this.player.is.already.banned",player));
return;
}
plugin.getClanManager().ban(uuid);
ChatBlock.sendMessage(player, ChatColor.AQUA + lang("player.added.to.banned.list",player));
Player pl = SimpleClans.getInstance().getServer().getPlayer(uuid);
if (pl != null) {
ChatBlock.sendMessage(pl, ChatColor.AQUA + lang("you.banned",player));
}
}
}
@@ -1,100 +0,0 @@
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 static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import java.text.MessageFormat;
/**
* @author phaed
*/
public class BankCommand {
public BankCommand() {
}
/**
* Execute the command
*
* @param player
* @param arg
*/
public void execute(Player player, String[] arg) {
SimpleClans plugin = SimpleClans.getInstance();
if (!plugin.getPermissionsManager().has(player, "simpleclans.member.bank")) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("insufficient.permissions",player));
return;
}
ClanPlayer cp = plugin.getClanManager().getClanPlayer(player);
double plmoney = plugin.getPermissionsManager().playerGetMoney(player);
double money = 0;
Clan clan = cp.getClan();
if (clan == null) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("not.a.member.of.any.clan",player));
return;
}
double clanbalance = clan.getBalance();
if (clan.isMember(player)) {
if (!clan.isVerified()) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("clan.is.not.verified",player));
return;
}
if (arg.length == 1) {
if (arg[0].equalsIgnoreCase("status")) {
if (!plugin.getPermissionsManager().has(player, RankPermission.BANK_BALANCE, PermissionLevel.TRUSTED, true)) {
return;
}
player.sendMessage(ChatColor.AQUA + MessageFormat.format(lang("clan.balance",player), clanbalance));
}
} else if (arg.length == 2) {
if (arg[1].matches("[0-9]+")) {
money = Double.parseDouble(arg[1]);
}
if (arg[0].equalsIgnoreCase("deposit")) {
if (!clan.isAllowDeposit()) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("deposit.not.allowed",player));
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 (!clan.isAllowWithdraw()) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("withdraw.not.allowed",player));
return;
}
if (!plugin.getPermissionsManager().has(player, RankPermission.BANK_WITHDRAW, PermissionLevel.LEADER, true)) {
return;
}
if (arg[1].equalsIgnoreCase("all")) {
clan.withdraw(clanbalance, player);
} else {
clan.withdraw(money, player);
}
} else {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(lang("usage.bank",player), plugin.getSettingsManager().getCommandClan()));
}
} else {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(lang("usage.bank",player), plugin.getSettingsManager().getCommandClan()));
}
}
}
}
@@ -1,65 +0,0 @@
package net.sacredlabyrinth.phaed.simpleclans.commands;
import net.sacredlabyrinth.phaed.simpleclans.*;
import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
/**
* @author phaed
*/
public class BbCommand {
public BbCommand() {
}
/**
* Execute the command
*
* @param player
* @param arg
*/
public void execute(Player player, String[] arg) {
SimpleClans plugin = SimpleClans.getInstance();
ClanPlayer cp = plugin.getClanManager().getClanPlayer(player);
if (cp == null) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("not.a.member.of.any.clan",player));
return;
}
Clan clan = cp.getClan();
if (!clan.isVerified()) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("clan.is.not.verified",player));
return;
}
if (arg.length == 0) {
if (!plugin.getPermissionsManager().has(player, "simpleclans.member.bb")) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("insufficient.permissions",player));
return;
}
clan.displayBb(player);
return;
}
if (arg.length == 1 && arg[0].equalsIgnoreCase("clear")) {
if (!plugin.getPermissionsManager().has(player, RankPermission.BB_CLEAR, PermissionLevel.LEADER, true)) {
return;
}
cp.getClan().clearBb();
ChatBlock.sendMessage(player, ChatColor.RED + lang("cleared.bb",player));
return;
}
if (!plugin.getPermissionsManager().has(player, RankPermission.BB_ADD, PermissionLevel.TRUSTED, true)) {
return;
}
String msg = Helper.toMessage(arg);
clan.addBb(player.getName(), ChatColor.AQUA + player.getName() + ": " + ChatColor.WHITE + msg);
plugin.getStorageManager().updateClan(clan);
}
}
@@ -0,0 +1,32 @@
package net.sacredlabyrinth.phaed.simpleclans.commands;
import net.sacredlabyrinth.phaed.simpleclans.Clan;
import org.jetbrains.annotations.NotNull;
import java.util.Objects;
public class ClanInput {
private final Clan clan;
public ClanInput(@NotNull Clan clan) {
this.clan = clan;
}
public Clan getClan() {
return clan;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
ClanInput clanInput = (ClanInput) o;
return clan.equals(clanInput.clan);
}
@Override
public int hashCode() {
return Objects.hash(clan);
}
}
@@ -0,0 +1,32 @@
package net.sacredlabyrinth.phaed.simpleclans.commands;
import net.sacredlabyrinth.phaed.simpleclans.ClanPlayer;
import org.jetbrains.annotations.NotNull;
import java.util.Objects;
public class ClanPlayerInput {
private final ClanPlayer clanPlayer;
public ClanPlayerInput(@NotNull ClanPlayer clanPlayer) {
this.clanPlayer = clanPlayer;
}
public ClanPlayer getClanPlayer() {
return clanPlayer;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
ClanPlayerInput that = (ClanPlayerInput) o;
return clanPlayer.equals(that.clanPlayer);
}
@Override
public int hashCode() {
return Objects.hash(clanPlayer);
}
}
@@ -1,67 +0,0 @@
package net.sacredlabyrinth.phaed.simpleclans.commands;
import net.sacredlabyrinth.phaed.simpleclans.*;
import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import java.text.MessageFormat;
/**
* @author phaed
*/
public class ClanffCommand {
public ClanffCommand() {
}
/**
* 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.ff")) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("insufficient.permissions", player));
return;
}
ClanPlayer cp = plugin.getClanManager().getClanPlayer(player);
if (cp == null) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("not.a.member.of.any.clan", player));
return;
}
Clan clan = cp.getClan();
if (!plugin.getPermissionsManager().has(player, RankPermission.FRIENDLYFIRE, true)) {
return;
}
if (arg.length != 1) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(lang("usage.clanff", player), plugin.getSettingsManager().getCommandClan()));
return;
}
String action = arg[0];
if (action.equalsIgnoreCase(lang("allow", player))) {
clan.addBb(player.getName(), ChatColor.AQUA + lang("clan.wide.friendly.fire.is.allowed"));
clan.setFriendlyFire(true);
plugin.getStorageManager().updateClan(clan);
return;
}
if (!action.equalsIgnoreCase(lang("block", player))) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("usage.clanff", player, plugin.getSettingsManager().getCommandClan()));
return;
}
clan.addBb(player.getName(), ChatColor.AQUA + lang("clan.wide.friendly.fire.blocked"));
clan.setFriendlyFire(false);
plugin.getStorageManager().updateClan(clan);
}
}
@@ -1,113 +0,0 @@
package net.sacredlabyrinth.phaed.simpleclans.commands;
import net.sacredlabyrinth.phaed.simpleclans.*;
import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
/**
* @author phaed
*/
public class CoordsCommand {
public CoordsCommand() {
}
/**
* 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.coords")) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("insufficient.permissions",player));
return;
}
ClanPlayer cp = plugin.getClanManager().getClanPlayer(player);
if (cp == null) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("not.a.member.of.any.clan",player));
return;
}
Clan clan = cp.getClan();
if (!clan.isVerified()) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("clan.is.not.verified",player));
return;
}
if (!plugin.getPermissionsManager().has(player, RankPermission.COORDS, PermissionLevel.TRUSTED, true)) {
return;
}
if (arg.length != 0) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(lang("usage.0.coords",player), plugin.getSettingsManager().getCommandClan()));
return;
}
ChatBlock chatBlock = new ChatBlock();
chatBlock.setFlexibility(true, false, false, false);
chatBlock.setAlignment("l", "c", "c", "c");
chatBlock.addRow(" " + headColor + lang("name",player), lang("distance",player), lang("coords.upper",player), lang("world",player));
List<ClanPlayer> members = Helper.stripOffLinePlayers(clan.getMembers());
Map<Integer, List<String>> rows = new TreeMap<>();
for (ClanPlayer cpm : members) {
Player p = cpm.toPlayer();
if (p != null) {
String name = (cpm.isLeader() ? plugin.getSettingsManager().getPageLeaderColor() : (cpm.isTrusted() ? plugin.getSettingsManager().getPageTrustedColor() : plugin.getSettingsManager().getPageUnTrustedColor())) + cpm.getName();
Location loc = p.getLocation();
int distance = (int) Math.ceil(loc.toVector().distance(player.getLocation().toVector()));
String coords = loc.getBlockX() + " " + loc.getBlockY() + " " + loc.getBlockZ();
String world = loc.getWorld().getName();
List<String> cols = new ArrayList<>();
cols.add(" " + name);
cols.add(ChatColor.AQUA + "" + distance);
cols.add(ChatColor.WHITE + "" + coords);
cols.add(world);
rows.put(distance, cols);
}
}
if (rows.isEmpty()) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("you.are.the.only.member.online",player));
return;
}
for (List<String> col : rows.values()) {
chatBlock.addRow(col.get(0), col.get(1), col.get(2), col.get(3));
}
ChatBlock.sendBlank(player);
ChatBlock.saySingle(player, plugin.getSettingsManager().getPageClanNameColor() + clan.getName() + subColor + " " + lang("coords",player) + " " + 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(lang("view.next.page",player), plugin.getSettingsManager().getCommandMore()));
}
ChatBlock.sendBlank(player);
}
}
@@ -1,55 +0,0 @@
package net.sacredlabyrinth.phaed.simpleclans.commands;
import net.sacredlabyrinth.phaed.simpleclans.ChatBlock;
import net.sacredlabyrinth.phaed.simpleclans.ClanPlayer;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
import net.sacredlabyrinth.phaed.simpleclans.conversation.CreateClanTagPrompt;
import org.bukkit.ChatColor;
import org.bukkit.conversations.Conversation;
import org.bukkit.conversations.ConversationFactory;
import org.bukkit.entity.Player;
import java.text.MessageFormat;
import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
/**
* @author phaed
*/
public class CreateCommand {
public CreateCommand() {
}
/**
* 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.create")) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("insufficient.permissions", player));
return;
}
if (arg.length != 0) {
ChatBlock.sendMessage(player, ChatColor.RED +
lang("usage.create", player, plugin.getSettingsManager().getCommandClan()));
return;
}
ClanPlayer cp = plugin.getClanManager().getClanPlayer(player);
if (cp != null) {
ChatBlock.sendMessage(player, ChatColor.RED +
MessageFormat.format(lang("you.must.first.resign", player), cp.getClan().getName()));
return;
}
Conversation conversation = new ConversationFactory(plugin).withFirstPrompt(new CreateClanTagPrompt())
.withLocalEcho(true).buildConversation(player);
conversation.begin();
}
}
@@ -1,105 +0,0 @@
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 static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import java.text.MessageFormat;
import java.util.UUID;
import net.sacredlabyrinth.phaed.simpleclans.uuid.UUIDMigration;
/**
* @author phaed
*/
public class DemoteCommand {
public DemoteCommand() {
}
/**
* Execute the command
*
* @param player
* @param arg
*/
public void execute(Player player, String[] arg) {
SimpleClans plugin = SimpleClans.getInstance();
if (arg.length != 1) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(lang("usage.demote.leader", player), plugin.getSettingsManager().getCommandClan()));
return;
}
String demotedName = arg[0];
UUID uuid = UUIDMigration.getForcedPlayerUUID(demotedName);
if (uuid == null) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("no.player.matched", player));
return;
}
ClanPlayer toDemote = plugin.getClanManager().getAnyClanPlayer(uuid);
if (toDemote == null || toDemote.getClan() == null) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("player.is.not.a.leader.of.any.clan", player));
return;
}
if (plugin.getPermissionsManager().has(player, "simpleclans.admin.demote")) {
final Clan clan = toDemote.getClan();
if (clan.getLeaders().size() == 1) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("you.cannot.demote.the.last.leader", player));
return;
}
clan.demote(toDemote.getUniqueId());
clan.addBb(player.getName(), ChatColor.AQUA + MessageFormat.format(lang("demoted.back.to.member"), demotedName));
ChatBlock.sendMessage(player, ChatColor.AQUA + lang("player.successfully.demoted", player));
return;
}
if (!plugin.getPermissionsManager().has(player, "simpleclans.leader.demote")) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("insufficient.permissions", player));
return;
}
ClanPlayer cp = plugin.getClanManager().getClanPlayer(player);
if (cp == null) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("not.a.member.of.any.clan", player));
return;
}
Clan clan = cp.getClan();
//noinspection ConstantConditions
if (!clan.isLeader(player)) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("no.leader.permissions", player));
return;
}
if (!clan.enoughLeadersOnlineToDemote(toDemote)) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("not.enough.leaders.online.to.vote.on.demotion", player));
return;
}
if (!clan.isLeader(uuid)) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("player.is.not.a.leader.of.your.clan", player));
return;
}
if (clan.getLeaders().size() > 2 && plugin.getSettingsManager().isConfirmationForDemote()) {
plugin.getRequestManager().addDemoteRequest(cp, demotedName, clan);
ChatBlock.sendMessage(player,
ChatColor.AQUA + lang("demotion.vote.has.been.requested.from.all.leaders", player));
return;
}
clan.addBb(player.getName(), ChatColor.AQUA
+ MessageFormat.format(lang("demoted.back.to.member",player), demotedName));
clan.demote(uuid);
}
}
@@ -1,70 +0,0 @@
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 static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
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 + lang("insufficient.permissions",player));
return;
}
ClanPlayer cp = plugin.getClanManager().getClanPlayer(player);
if (cp == null) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("not.a.member.of.any.clan",player));
return;
}
Clan clan = cp.getClan();
if (!clan.isVerified()) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("clan.is.not.verified",player));
return;
}
if (!plugin.getPermissionsManager().has(player, RankPermission.DESCRIPTION, PermissionLevel.LEADER, true)) {
return;
}
if (args.length < 1) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(lang("usage.description",player), plugin.getSettingsManager().getCommandClan()));
return;
}
String description = Helper.toMessage(args);
if (description.length() < sm.getClanMinDescriptionLength()) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(lang("your.clan.description.must.be.longer.than",player), sm.getClanMinDescriptionLength()));
return;
}
if (description.length() > sm.getClanMaxDescriptionLength()) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(lang("your.clan.description.cannot.be.longer.than",player), sm.getClanMaxDescriptionLength()));
return;
}
clan.setDescription(description);
ChatBlock.sendMessage(player, ChatColor.AQUA + lang("description.changed",player));
plugin.getStorageManager().updateClan(clan);
}
}
@@ -1,79 +0,0 @@
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 static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import java.text.MessageFormat;
/**
* @author phaed
*/
public class DisbandCommand {
public DisbandCommand() {
}
/**
* Execute the command
*
* @param player
* @param arg
*/
public void execute(Player player, String[] arg) {
SimpleClans plugin = SimpleClans.getInstance();
if (arg.length == 0) {
if (!plugin.getPermissionsManager().has(player, "simpleclans.leader.disband")) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("insufficient.permissions",player));
return;
}
ClanPlayer cp = plugin.getClanManager().getClanPlayer(player);
if (cp == null) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("not.a.member.of.any.clan",player));
return;
}
Clan clan = cp.getClan();
if (!clan.isLeader(player)) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("no.leader.permissions",player));
return;
}
if (clan.getLeaders().size() != 1) {
plugin.getRequestManager().addDisbandRequest(cp, clan);
ChatBlock.sendMessage(player, ChatColor.AQUA + lang("clan.disband.vote.has.been.requested.from.all.leaders",player));
return;
}
clan.clanAnnounce(player.getName(), ChatColor.AQUA + MessageFormat.format(lang("clan.has.been.disbanded",player), clan.getName()));
clan.disband();
return;
}
if (arg.length > 1) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(lang("usage.0.disband",player), plugin.getSettingsManager().getCommandClan()));
return;
}
if (!plugin.getPermissionsManager().has(player, "simpleclans.mod.disband")) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("insufficient.permissions",player));
return;
}
Clan clan = plugin.getClanManager().getClan(arg[0]);
if (clan == null) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("no.clan.matched",player));
return;
}
plugin.getClanManager().serverAnnounce(ChatColor.AQUA + MessageFormat.format(lang("clan.has.been.disbanded",player), clan.getName()));
clan.disband();
}
}
@@ -1,88 +0,0 @@
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 static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
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 + lang("disabled.command",player));
return;
}
if (args.length >= 1) {
ClanPlayer cp = plugin.getClanManager().getAnyClanPlayer(player.getUniqueId());
Clan clan = cp.getClan();
if (!clan.isVerified()) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("clan.is.not.verified",player));
return;
}
if (args[0].equalsIgnoreCase("check")) {
if (!plugin.getPermissionsManager().has(player, "simpleclans.member.fee-check")) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("insufficient.permissions",player));
return;
}
ChatBlock.sendMessage(player, ChatColor.AQUA
+ MessageFormat.format(
lang("the.fee.is.0.and.its.current.value.is.1",player),
clan.isMemberFeeEnabled() ? lang("fee.enabled",player) : lang("fee.disabled",player),
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 + lang("no.leader.permissions",player));
return;
}
double newFee = 0;
try {
newFee = Double.parseDouble(args[1]);
} catch (NumberFormatException ignored) {
player.sendMessage(ChatColor.RED + lang("invalid.fee",player));
return;
}
double maxFee = plugin.getSettingsManager().getMaxMemberFee();
if (newFee > maxFee) {
ChatBlock.sendMessage(player, ChatColor.RED
+ MessageFormat.format(lang("max.fee.allowed.is.0",player), maxFee));
return;
}
if (plugin.getClanManager().purchaseMemberFeeSet(player)) {
clan.setMemberFee(newFee);
clan.addBb(player.getName(), ChatColor.AQUA + MessageFormat.format(lang("bb.fee.set"), newFee));
ChatBlock.sendMessage(player, ChatColor.AQUA + lang("fee.set",player));
plugin.getStorageManager().updateClan(clan);
}
return;
}
}
ChatBlock.sendMessage(player, ChatColor.RED
+ MessageFormat.format(lang("usage.fee",player), plugin.getSettingsManager().getCommandClan()));
}
}
@@ -1,62 +0,0 @@
package net.sacredlabyrinth.phaed.simpleclans.commands;
import net.sacredlabyrinth.phaed.simpleclans.ChatBlock;
import net.sacredlabyrinth.phaed.simpleclans.ClanPlayer;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import java.text.MessageFormat;
/**
* @author phaed
*/
public class FfCommand {
public FfCommand() {
}
/**
* Execute the command
*
* @param player
* @param arg
*/
public void execute(Player player, String[] arg) {
SimpleClans plugin = SimpleClans.getInstance();
if (!plugin.getPermissionsManager().has(player, "simpleclans.member.ff")) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("insufficient.permissions",player));
return;
}
ClanPlayer cp = plugin.getClanManager().getClanPlayer(player);
if (cp == null) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("not.a.member.of.any.clan",player));
return;
}
if (arg.length != 1) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(lang("usage.0.ff.allow.auto",player), plugin.getSettingsManager().getCommandClan()));
return;
}
String action = arg[0];
if (action.equalsIgnoreCase(lang("allow",player))) {
cp.setFriendlyFire(true);
plugin.getStorageManager().updateClanPlayer(cp);
ChatBlock.sendMessage(player, ChatColor.AQUA + lang("personal.friendly.fire.is.set.to.allowed",player));
return;
}
if (action.equalsIgnoreCase(lang("auto",player))) {
cp.setFriendlyFire(false);
plugin.getStorageManager().updateClanPlayer(cp);
ChatBlock.sendMessage(player, ChatColor.AQUA + lang("friendy.fire.is.now.managed.by.your.clan",player));
return;
}
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(lang("usage.0.ff.allow.auto",player), plugin.getSettingsManager().getCommandClan()));
}
}
@@ -1,55 +0,0 @@
package net.sacredlabyrinth.phaed.simpleclans.commands;
import net.sacredlabyrinth.phaed.simpleclans.ChatBlock;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import java.text.MessageFormat;
/**
* @author phaed
*/
public class GlobalffCommand {
public GlobalffCommand() {
}
/**
* Execute the command
*
* @param player
* @param arg
*/
public void execute(CommandSender player, String[] arg) {
SimpleClans plugin = SimpleClans.getInstance();
if (arg.length != 1) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(lang("usage.0.globalff.allow.auto",player), plugin.getSettingsManager().getCommandClan()));
return;
}
String action = arg[0];
if (action.equalsIgnoreCase(lang("allow",player))) {
if (plugin.getSettingsManager().isGlobalff()) {
ChatBlock.sendMessage(player, ChatColor.AQUA + lang("global.friendly.fire.is.already.being.allowed",player));
} else {
plugin.getSettingsManager().setGlobalff(true);
ChatBlock.sendMessage(player, ChatColor.AQUA + lang("global.friendly.fire.is.set.to.allowed",player));
}
return;
}
if (action.equalsIgnoreCase(lang("auto",player))) {
if (!plugin.getSettingsManager().isGlobalff()) {
ChatBlock.sendMessage(player, ChatColor.AQUA + lang("global.friendy.fire.is.already.being.managed.by.each.clan",player));
} else {
plugin.getSettingsManager().setGlobalff(false);
ChatBlock.sendMessage(player, ChatColor.AQUA + lang("global.friendy.fire.is.now.managed.by.each.clan",player));
}
return;
}
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(lang("usage.0.globalff.allow.auto",player), plugin.getSettingsManager().getCommandClan()));
}
}
@@ -1,204 +0,0 @@
package net.sacredlabyrinth.phaed.simpleclans.commands;
import io.papermc.lib.PaperLib;
import net.sacredlabyrinth.phaed.simpleclans.*;
import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import java.text.MessageFormat;
import java.util.List;
import java.util.Random;
import java.util.logging.Level;
import net.sacredlabyrinth.phaed.simpleclans.events.HomeRegroupEvent;
import net.sacredlabyrinth.phaed.simpleclans.events.PlayerHomeSetEvent;
import org.bukkit.event.player.PlayerTeleportEvent;
/**
* @author phaed
*/
public class HomeCommand {
public HomeCommand() {
}
/**
* Execute the command
*
* @param player
* @param arg
*/
public void execute(Player player, String[] arg) {
SimpleClans plugin = SimpleClans.getInstance();
if (arg.length == 2) {
if (arg[0].equalsIgnoreCase("set") && plugin.getPermissionsManager().has(player, "simpleclans.mod.home")) {
if (!plugin.getClanManager().purchaseHomeTeleportSet(player)) {
return;
}
Location loc = player.getLocation();
Clan clan = plugin.getClanManager().getClan(arg[1]);
if (clan == null) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("the.clan.does.not.exist",player));
return;
}
clan.setHomeLocation(loc);
ChatBlock.sendMessage(player, ChatColor.AQUA + MessageFormat.format(lang("hombase.mod.set",player), clan.getName()) + " " + ChatColor.YELLOW + Helper.toLocationString(loc));
return;
}
if (arg[0].equalsIgnoreCase("tp") && plugin.getPermissionsManager().has(player, "simpleclans.mod.hometp")) {
Clan clan = plugin.getClanManager().getClan(arg[1]);
if (clan == null) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("the.clan.does.not.exist",player));
return;
}
Location loc = clan.getHomeLocation();
if (loc == null) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("hombase.not.set",player));
return;
}
PaperLib.teleportAsync(player, loc, PlayerTeleportEvent.TeleportCause.COMMAND).thenAccept(result -> {
if (result) {
ChatBlock.sendMessage(player, ChatColor.AQUA + lang("now.at.homebase", player, clan.getName()));
} else {
plugin.getLogger().log(Level.WARNING, "An error occurred while teleporting a player");
}
});
return;
}
}
ClanPlayer cp = plugin.getClanManager().getClanPlayer(player);
if (cp == null) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("not.a.member.of.any.clan",player));
return;
}
Clan clan = cp.getClan();
if (!clan.isVerified()) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("clan.is.not.verified",player));
return;
}
if (arg.length == 0) {
if (!plugin.getPermissionsManager().has(player, RankPermission.HOME_TP, PermissionLevel.TRUSTED, true)) {
return;
}
Location loc = clan.getHomeLocation();
if (loc == null) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("hombase.not.set",player));
return;
}
if (plugin.getClanManager().purchaseHomeTeleport(player)) {
plugin.getTeleportManager().addPlayer(player, clan.getHomeLocation(), clan.getName());
}
return;
}
if (arg[0].equalsIgnoreCase("set")) {
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")) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("home.base.only.once",player));
return;
}
PlayerHomeSetEvent homeSetEvent = new PlayerHomeSetEvent(clan, cp, player.getLocation());
SimpleClans.getInstance().getServer().getPluginManager().callEvent(homeSetEvent);
if (homeSetEvent.isCancelled() || !plugin.getClanManager().purchaseHomeTeleportSet(player)) {
return;
}
clan.setHomeLocation(player.getLocation());
ChatBlock.sendMessage(player, ChatColor.AQUA + MessageFormat.format(lang("hombase.set",player), ChatColor.YELLOW + Helper.toLocationString(player.getLocation())));
return;
}
if (arg[0].equalsIgnoreCase("clear")) {
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")) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("home.base.only.once",player));
return;
}
clan.setHomeLocation(null);
ChatBlock.sendMessage(player, ChatColor.AQUA + lang("hombase.cleared",player));
return;
}
if (arg[0].equalsIgnoreCase("regroup")) {
if (!SimpleClans.getInstance().getSettingsManager().getAllowReGroupCommand()) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("insufficient.permissions",player));
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(loc == null) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("hombase.not.set",player));
return;
}
HomeRegroupEvent homeRegroupEvent = new HomeRegroupEvent(clan, cp, clan.getOnlineMembers(), loc);
SimpleClans.getInstance().getServer().getPluginManager().callEvent(homeRegroupEvent);
if (homeRegroupEvent.isCancelled() || !plugin.getClanManager().purchaseHomeRegroup(player)) {
return;
}
List<ClanPlayer> members = clan.getOnlineMembers();
for (ClanPlayer ccp : members) {
Player pl = ccp.toPlayer();
if (pl == null) {
continue;
}
int x = loc.getBlockX();
int z = loc.getBlockZ();
player.sendBlockChange(new Location(loc.getWorld(), x + 1, loc.getBlockY(), z + 1), Material.GLASS, (byte) 0);
player.sendBlockChange(new Location(loc.getWorld(), x - 1, loc.getBlockY(), z - 1), Material.GLASS, (byte) 0);
player.sendBlockChange(new Location(loc.getWorld(), x + 1, loc.getBlockY(), z - 1), Material.GLASS, (byte) 0);
player.sendBlockChange(new Location(loc.getWorld(), x - 1, loc.getBlockY(), z + 1), Material.GLASS, (byte) 0);
Random r = new Random();
int xx = r.nextInt(2) - 1;
int zz = r.nextInt(2) - 1;
if (xx == 0 && zz == 0) {
xx = 1;
}
x = x + xx;
z = z + zz;
plugin.getTeleportManager().addPlayer(player, new Location(loc.getWorld(), x + .5, loc.getBlockY(), z + .5), clan.getName());
}
return;
}
}
}
@@ -1,108 +0,0 @@
package net.sacredlabyrinth.phaed.simpleclans.commands;
import java.text.MessageFormat;
import java.time.Instant;
import java.time.temporal.ChronoUnit;
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 static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
/**
* @author phaed
*/
public class InviteCommand {
public InviteCommand() {
}
/**
* 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.invite")) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("insufficient.permissions",player));
return;
}
ClanPlayer cp = plugin.getClanManager().getClanPlayer(player);
if (cp == null) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("not.a.member.of.any.clan",player));
return;
}
Clan clan = cp.getClan();
if (!plugin.getPermissionsManager().has(player, RankPermission.INVITE, PermissionLevel.LEADER, true)) {
return;
}
if (arg.length != 1) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(lang("usage.0.invite.player",player), plugin.getSettingsManager().getCommandClan()));
return;
}
Player invited = Helper.getPlayer(arg[0]);
if (invited == null) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("no.player.matched",player));
return;
}
if (!plugin.getPermissionsManager().has(invited, "simpleclans.member.can-join")) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("the.player.doesn.t.not.have.the.permissions.to.join.clans",player));
return;
}
if (invited.getName().equals(player.getName())) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("you.cannot.invite.yourself",player));
return;
}
if (plugin.getSettingsManager().isBanned(player.getUniqueId())) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("this.player.is.banned.from.using.clan.commands",player));
return;
}
ClanPlayer cpInv = plugin.getClanManager().getAnyClanPlayer(invited.getUniqueId());
if (cpInv != null) {
if (cpInv.getClan() != null) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("the.player.is.already.member.of.another.clan",player));
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(lang("the.player.must.wait.0.before.joining.your.clan.again",player), cooldown - timePassed));
return;
}
}
}
}
if (!plugin.getClanManager().purchaseInvite(player)) {
return;
}
if (clan.getSize() >= plugin.getSettingsManager().getMaxMembers()) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("the.clan.members.reached.limit",player));
return;
}
plugin.getRequestManager().addInviteRequest(cp, invited.getName(), clan);
ChatBlock.sendMessage(player, ChatColor.AQUA + MessageFormat.format(lang("has.been.asked.to.join",player), invited.getName(), clan.getName()));
}
}
@@ -1,78 +0,0 @@
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 static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import java.text.MessageFormat;
import java.util.UUID;
import net.sacredlabyrinth.phaed.simpleclans.uuid.UUIDMigration;
/**
* @author phaed
*/
public class KickCommand {
public KickCommand() {
}
/**
* 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.kick")) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("insufficient.permissions",player));
return;
}
ClanPlayer cp = plugin.getClanManager().getClanPlayer(player);
if (cp == null) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("not.a.member.of.any.clan",player));
return;
}
Clan clan = cp.getClan();
if (!plugin.getPermissionsManager().has(player, RankPermission.KICK, PermissionLevel.LEADER, true)) {
return;
}
if (arg.length != 1) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(lang("usage.kick.player",player), plugin.getSettingsManager().getCommandClan()));
return;
}
UUID kicked = UUIDMigration.getForcedPlayerUUID(arg[0]);
if (kicked == null) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("no.player.matched",player));
return;
}
if (kicked.equals(player.getUniqueId())) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("you.cannot.kick.yourself",player));
return;
}
if (!clan.isMember(kicked)) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("the.player.is.not.a.member.of.your.clan",player));
return;
}
if (clan.isLeader(kicked)) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("you.cannot.kick.another.leader",player));
return;
}
clan.addBb(player.getName(), ChatColor.AQUA + MessageFormat.format(lang("has.been.kicked.by"), arg[0], player.getName()));
clan.removePlayerFromClan(kicked);
}
}
@@ -1,103 +0,0 @@
package net.sacredlabyrinth.phaed.simpleclans.commands;
import net.sacredlabyrinth.phaed.simpleclans.*;
import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
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 + lang("insufficient.permissions",player));
return;
}
ClanPlayer cp = plugin.getClanManager().getClanPlayer(player);
if (cp == null) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("not.a.member.of.any.clan",player));
return;
}
Clan clan = cp.getClan();
if (!clan.isVerified()) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("clan.is.not.verified",player));
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 + lang("victim",player), lang("killcount",player));
if (data.isEmpty()) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("nokillsfound",player));
return;
}
Map<String, Integer> killsPerPlayer = Helper.sortByValue(data);
for (Entry<String, Integer> playerKills : killsPerPlayer.entrySet()) {
int count = playerKills.getValue();
chatBlock.addRow(" " + playerKills.getKey(), ChatColor.AQUA + "" + count);
}
ChatBlock.saySingle(player, plugin.getSettingsManager().getPageClanNameColor() + name + subColor + " " + lang("kills",player) + " " + 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(lang("view.next.page",player), plugin.getSettingsManager().getCommandMore()));
}
ChatBlock.sendBlank(player);
}
}.runTask(plugin);
}
});
}
}
@@ -1,92 +0,0 @@
package net.sacredlabyrinth.phaed.simpleclans.commands;
import net.sacredlabyrinth.phaed.simpleclans.ChatBlock;
import net.sacredlabyrinth.phaed.simpleclans.ClanPlayer;
import net.sacredlabyrinth.phaed.simpleclans.Helper;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
import net.sacredlabyrinth.phaed.simpleclans.utils.KDRFormat;
import net.sacredlabyrinth.phaed.simpleclans.utils.RankingNumberResolver;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import java.math.BigDecimal;
import java.text.MessageFormat;
import java.util.List;
import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
/**
* @author phaed
*/
public class LeaderboardCommand {
public LeaderboardCommand() {
}
/**
* 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 (arg.length != 0) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(lang("usage.0.leaderboard",player), plugin.getSettingsManager().getCommandClan()));
return;
}
if (!plugin.getPermissionsManager().has(player, "simpleclans.anyone.leaderboard")) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("insufficient.permissions",player));
return;
}
List<ClanPlayer> clanPlayers = plugin.getClanManager().getAllClanPlayers();
ChatBlock chatBlock = new ChatBlock();
ChatBlock.sendBlank(player);
ChatBlock.saySingle(player, plugin.getSettingsManager().getServerName() + subColor + " " + lang("leaderboard.command",player) + " " + headColor + Helper.generatePageSeparator(plugin.getSettingsManager().getPageSep()));
ChatBlock.sendBlank(player);
ChatBlock.sendMessage(player, headColor + MessageFormat.format(lang("total.clan.players.0",player), subColor + clanPlayers.size()));
ChatBlock.sendBlank(player);
chatBlock.setAlignment("c", "l", "c", "c", "c", "c");
chatBlock.addRow(" " + headColor + lang("rank",player), lang("player",player), lang("kdr",player), lang("clan",player), lang("seen",player));
RankingNumberResolver<ClanPlayer, BigDecimal> rankingResolver = new RankingNumberResolver<>(clanPlayers,
c -> KDRFormat.toBigDecimal(c.getKDR()), false, plugin.getSettingsManager().getRankingType());
for (ClanPlayer cp : clanPlayers) {
Player p = cp.toPlayer();
boolean isOnline = false;
if (p != null) {
isOnline = true;
}
String name = (cp.isLeader() ? plugin.getSettingsManager().getPageLeaderColor() : (cp.isTrusted() ? plugin.getSettingsManager().getPageTrustedColor() : plugin.getSettingsManager().getPageUnTrustedColor())) + cp.getName();
String lastSeen = isOnline ? ChatColor.GREEN + lang("online", player) : ChatColor.WHITE + cp.getLastSeenDaysString(player);
String clanTag = ChatColor.WHITE + lang("free.agent", player);
if (cp.getClan() != null) {
clanTag = cp.getClan().getColorTag();
}
chatBlock.addRow(" " + rankingResolver.getRankingNumber(cp),
name, ChatColor.YELLOW + "" + KDRFormat.format(cp.getKDR()), ChatColor.WHITE + clanTag, lastSeen);
}
boolean more = chatBlock.sendBlock(player, plugin.getSettingsManager().getPageSize());
if (more) {
plugin.getStorageManager().addChatBlock(player, chatBlock);
ChatBlock.sendBlank(player);
ChatBlock.sendMessage(player, headColor + MessageFormat.format(lang("view.next.page",player), plugin.getSettingsManager().getCommandMore()));
}
ChatBlock.sendBlank(player);
}
}
@@ -1,155 +0,0 @@
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.SettingsManager;
import net.sacredlabyrinth.phaed.simpleclans.utils.KDRFormat;
import net.sacredlabyrinth.phaed.simpleclans.utils.RankingNumberResolver;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.text.MessageFormat;
import java.util.List;
import java.util.stream.Collectors;
import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
import static net.sacredlabyrinth.phaed.simpleclans.utils.RankingNumberResolver.RankingType.ORDINAL;
/**
* @author phaed
*/
public class ListCommand {
private final @NotNull SettingsManager sm;
private RankingNumberResolver<Clan, ? extends Comparable<?>> ranking;
private @Nullable String order;
private final @NotNull String asc;
public ListCommand() {
sm = SimpleClans.getInstance().getSettingsManager();
asc = sm.getListAsc();
}
/**
* Execute the command
*
* @param player
* @param args
*/
public void execute(Player player, String[] args) {
SimpleClans plugin = SimpleClans.getInstance();
String headColor = sm.getPageHeadingsColor();
String subColor = sm.getPageSubTitleColor();
if (!plugin.getPermissionsManager().has(player, "simpleclans.anyone.list")) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("insufficient.permissions",player));
return;
}
if (args.length > 2) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(lang("usage.list",player), sm.getCommandClan()));
return;
}
List<Clan> clans = plugin.getClanManager().getClans();
clans = clans.stream().filter(clan -> clan.isVerified() || sm.isShowUnverifiedOnList())
.collect(Collectors.toList());
sort(clans, args);
if (clans.isEmpty()) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("no.clans.have.been.created",player));
return;
}
ChatBlock chatBlock = new ChatBlock();
sendHeader(player, headColor, subColor, clans, chatBlock);
for (Clan clan : clans) {
addLine(chatBlock, clan);
}
boolean more = chatBlock.sendBlock(player, sm.getPageSize());
if (more) {
plugin.getStorageManager().addChatBlock(player, chatBlock);
ChatBlock.sendBlank(player);
ChatBlock.sendMessage(player, headColor + MessageFormat.format(lang("view.next.page",player), sm.getCommandMore()));
}
ChatBlock.sendBlank(player);
}
private void addLine(ChatBlock chatBlock, Clan clan) {
String tag = sm.getClanChatBracketColor() + sm.getClanChatTagBracketLeft() + sm.getTagDefaultColor() + clan.getColorTag() + sm.getClanChatBracketColor() + sm.getClanChatTagBracketRight();
String name = (clan.isVerified() ? sm.getPageClanNameColor() : ChatColor.GRAY) + clan.getName();
String fullname = tag + " " + name;
String size = ChatColor.WHITE + "" + clan.getSize();
String kdr = clan.isVerified() ? ChatColor.YELLOW + "" + KDRFormat.format(clan.getTotalKDR()) : "";
chatBlock.addRow(" " + ranking.getRankingNumber(clan), fullname, kdr, size);
}
private void sendHeader(Player player, String headColor, String subColor, List<Clan> clans, ChatBlock chatBlock) {
ChatBlock.sendBlank(player);
ChatBlock.saySingle(player, sm.getServerName() + subColor + " " + lang("clans.lower", player) + " " + headColor + Helper.generatePageSeparator(sm.getPageSep()));
ChatBlock.sendBlank(player);
ChatBlock.sendMessage(player, headColor + lang("total.clans", player) + " " + subColor + clans.size());
ChatBlock.sendBlank(player);
chatBlock.setAlignment("c", "l", "c", "c");
chatBlock.setFlexibility(false, true, false, false);
chatBlock.addRow(" " + headColor + lang("rank", player), lang("name", player), lang("kdr", player), lang("members", player));
}
private void sort(@NotNull List<Clan> clans, @NotNull String[] args) {
String type = sm.getListDefault();
if (args.length > 0) {
type = args[0];
}
String desc = sm.getListDesc();
if (args.length == 2) {
order = args[1];
if (!order.equalsIgnoreCase(asc) && !order.equalsIgnoreCase(desc)) {
order = null;
}
}
if (type.equalsIgnoreCase(sm.getListActive())) {
ranking = new RankingNumberResolver<>(clans, Clan::getLastUsed, isAsc(), ORDINAL);
}
if (type.equalsIgnoreCase(sm.getListFounded())) {
if (order == null) {
order = asc;
}
ranking = new RankingNumberResolver<>(clans, Clan::getFounded, isAsc(), ORDINAL);
}
if (type.equalsIgnoreCase(sm.getListKdr())) {
ranking = new RankingNumberResolver<>(clans, clan -> KDRFormat.toBigDecimal(clan.getTotalKDR()),
isAsc(), sm.getRankingType());
}
if (type.equalsIgnoreCase(sm.getListName())) {
if (order == null) {
order = asc;
}
ranking = new RankingNumberResolver<>(clans, Clan::getName, isAsc(), ORDINAL);
}
if (type.equalsIgnoreCase(sm.getListSize())) {
ranking = new RankingNumberResolver<>(clans, Clan::getSize, isAsc(), ORDINAL);
}
//in case the default type is invalid
if (ranking == null) {
ranking = new RankingNumberResolver<>(clans, clan -> KDRFormat.toBigDecimal(clan.getTotalKDR()), false,
sm.getRankingType());
}
}
private boolean isAsc() {
return asc.equalsIgnoreCase(order);
}
}
@@ -1,120 +0,0 @@
package net.sacredlabyrinth.phaed.simpleclans.commands;
import net.sacredlabyrinth.phaed.simpleclans.*;
import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
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 + lang("insufficient.permissions",player));
return;
}
playerName = player.getName();
} else if (arg.length == 1) {
if (!plugin.getPermissionsManager().has(player, "simpleclans.anyone.lookup")) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("insufficient.permissions",player));
return;
}
playerName = arg[0];
} else {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(lang("usage.lookup.tag",player), plugin.getSettingsManager().getCommandClan()));
return;
}
UUID targetUuid = UUIDMigration.getForcedPlayerUUID(playerName);
if (targetUuid == null) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("no.player.matched",player));
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(lang("s.player.info",player), plugin.getSettingsManager().getPageClanNameColor() + targetCp.getName() + subColor) + " " + headColor + Helper.generatePageSeparator(plugin.getSettingsManager().getPageSep()));
ChatBlock.sendBlank(player);
String clanName = ChatColor.WHITE + lang("none",player);
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 + lang("free.agent",player) : (targetCp.isLeader() ? plugin.getSettingsManager().getPageLeaderColor() + lang("leader",player) : (targetCp.isTrusted() ? plugin.getSettingsManager().getPageTrustedColor() + lang("trusted",player) : plugin.getSettingsManager().getPageUnTrustedColor() + lang("untrusted",player)));
String rank = ChatColor.WHITE + "" + Helper.parseColors(targetCp.getRankDisplayName());
String joinDate = ChatColor.WHITE + "" + targetCp.getJoinDateString();
String lastSeen = ChatColor.WHITE + "" + targetCp.getLastSeenString(player);
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(lang("clan.0",player), clanName));
ChatBlock.sendMessage(player, " " + subColor + MessageFormat.format(lang("rank.0",player), rank));
ChatBlock.sendMessage(player, " " + subColor + MessageFormat.format(lang("status.0",player), status));
ChatBlock.sendMessage(player, " " + subColor + MessageFormat.format(lang("kdr.0",player), kdr));
ChatBlock.sendMessage(player, " " + subColor + lang("kill.totals",player) + " " + headColor + "[" + lang("rival",player) + ":" + rival + " " + headColor + "" + lang("neutral",player) + ":" + neutral + " " + headColor + "" + lang("civilian",player) + ":" + civilian + headColor + "]");
ChatBlock.sendMessage(player, " " + subColor + MessageFormat.format(lang("deaths.0",player), deaths));
ChatBlock.sendMessage(player, " " + subColor + MessageFormat.format(lang("join.date.0",player), joinDate));
ChatBlock.sendMessage(player, " " + subColor + MessageFormat.format(lang("last.seen.0",player), lastSeen));
ChatBlock.sendMessage(player, " " + subColor + MessageFormat.format(lang("past.clans.0",player), pastClans));
ChatBlock.sendMessage(player, " " + subColor + MessageFormat.format(lang("inactive.0",player), inactive));
if (arg.length == 1 && !targetCp.equals(myCp)) {
String killType = ChatColor.GRAY + lang("neutral",player);
if (targetClan == null) {
killType = ChatColor.DARK_GRAY + lang("civilian",player);
} else if (myClan != null && myClan.isRival(targetClan.getTag())) {
killType = ChatColor.WHITE + lang("rival",player);
}
ChatBlock.sendMessage(player, " " + subColor + MessageFormat.format(lang("kill.type.0",player), killType));
}
ChatBlock.sendBlank(player);
} else {
ChatBlock.sendMessage(player, ChatColor.RED + lang("no.player.data.found",player));
if (arg.length == 1 && myClan != null) {
ChatBlock.sendBlank(player);
ChatBlock.sendMessage(player, MessageFormat.format(lang("kill.type.civilian",player), ChatColor.DARK_GRAY));
}
}
}
}
@@ -1,346 +0,0 @@
package net.sacredlabyrinth.phaed.simpleclans.commands;
import net.sacredlabyrinth.phaed.simpleclans.*;
import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import java.text.MessageFormat;
import java.util.LinkedList;
import java.util.List;
import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
/**
* @author phaed
*/
public class MenuCommand {
private List<String> menuItems = new LinkedList<>();
public MenuCommand() {
}
/**
* Execute the command
*
* @param player
*/
public void execute(Player player) {
SimpleClans plugin = SimpleClans.getInstance();
String headColor = plugin.getSettingsManager().getPageHeadingsColor();
String subColor = plugin.getSettingsManager().getPageSubTitleColor();
ClanPlayer cp = plugin.getClanManager().getClanPlayer(player);
Clan clan = cp == null ? null : cp.getClan();
boolean isLeader = cp != null && cp.isLeader();
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()) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(lang("0.create.1.purchase.a.new.clan", player), clanCommand, ChatColor.WHITE));
} else {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(lang("0.create.1.create.a.new.clan", player), 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(lang("0.message.1.send.a.message.to.clan.chat", player), chatCommand, ChatColor.WHITE));
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(lang("0.join.leave.3.join.leave.the.clan.chat", player), chatCommand, lang("join", player), lang("leave", player), ChatColor.WHITE));
}
if (clan != null && plugin.getPermissionsManager().has(player, "simpleclans.member.ally")) {
String allyCommand = plugin.getSettingsManager().getCommandAlly();
chatBlock.addRow(ChatColor.AQUA + " " + lang("0.message.1.send.a.message.to.ally.chat", player, allyCommand, ChatColor.WHITE));
chatBlock.addRow(ChatColor.AQUA + " " + lang("0.join.leave.3.join.leave.the.ally.chat", player, allyCommand, lang("join", player), lang("leave", player), ChatColor.WHITE));
}
if (isNonVerified && plugin.getSettingsManager().isRequireVerification() && plugin.getSettingsManager().isePurchaseVerification()) {
chatBlock.addRow(ChatColor.DARK_RED + " " + MessageFormat.format(lang("0.verify.1.purchase.verification.of.your.clan",player), clanCommand, ChatColor.WHITE));
}
if (plugin.getPermissionsManager().has(player, "simpleclans.anyone.list")) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(lang("0.list.1.lists.all.clans",player), clanCommand, ChatColor.WHITE));
}
if (isVerified && plugin.getPermissionsManager().has(player, "simpleclans.member.profile")) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(lang("0.profile.1.view.your.clan.s.profile",player), clanCommand, ChatColor.WHITE));
}
if (plugin.getPermissionsManager().has(player, "simpleclans.anyone.profile")) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(lang("0.profile.tag.1.view.a.clan.s.profile",player), clanCommand, ChatColor.WHITE));
}
if (plugin.getPermissionsManager().has(player, "simpleclans.member.lookup")) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(lang("0.lookup.1.lookup.your.info",player), clanCommand, ChatColor.WHITE));
}
if (plugin.getPermissionsManager().has(player, "simpleclans.anyone.lookup")) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(lang("0.lookup.player.1.lookup.a.player.s.info",player), clanCommand, ChatColor.WHITE));
}
if (plugin.getPermissionsManager().has(player, "simpleclans.anyone.leaderboard")) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(lang("0.leaderboard.1.view.leaderboard",player), clanCommand, ChatColor.WHITE));
}
if (plugin.getPermissionsManager().has(player, "simpleclans.anyone.alliances")) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(lang("0.alliances.1.view.all.clan.alliances",player), clanCommand, ChatColor.WHITE));
}
if (plugin.getPermissionsManager().has(player, "simpleclans.anyone.rivalries")) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(lang("0.rivalries.1.view.all.clan.rivalries",player), clanCommand, ChatColor.WHITE));
}
if (isVerified && plugin.getPermissionsManager().has(player, "simpleclans.member.roster")) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(lang("0.roster.1.view.your.clan.s.member.list",player), clanCommand, ChatColor.WHITE));
}
if (plugin.getPermissionsManager().has(player, "simpleclans.anyone.roster")) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(lang("0.roster.tag.1.view.a.clan.s.member.list",player), clanCommand, ChatColor.WHITE));
}
if (isVerified && plugin.getPermissionsManager().has(player, RankPermission.VITALS, PermissionLevel.TRUSTED, false)) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(lang("0.vitals.1.view.your.clan.member.s.vitals",player), clanCommand, ChatColor.WHITE));
}
if (isVerified && plugin.getPermissionsManager().has(player, RankPermission.COORDS, PermissionLevel.TRUSTED, false)) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(lang("0.coords.1.view.your.clan.member.s.coordinates",player), clanCommand, ChatColor.WHITE));
}
if (isVerified && plugin.getPermissionsManager().has(player, RankPermission.STATS, PermissionLevel.TRUSTED, false)) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(lang("0.stats.1.view.your.clan.member.s.stats",player), clanCommand, ChatColor.WHITE));
}
if (isVerified && plugin.getPermissionsManager().has(player, RankPermission.KILLS, PermissionLevel.TRUSTED, false)) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(lang("0.kills",player), clanCommand, ChatColor.WHITE));
}
if (isVerified && plugin.getPermissionsManager().has(player, RankPermission.KILLS, PermissionLevel.TRUSTED, false)) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(lang("0.killsplayer",player), clanCommand, ChatColor.WHITE));
}
if (plugin.getSettingsManager().isMemberFee() && isVerified && plugin.getPermissionsManager().has(player, "simpleclans.member.fee-check")) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(lang("0.fee.check",player), clanCommand, ChatColor.WHITE));
}
if (plugin.getSettingsManager().isMemberFee() && isVerified && plugin.getPermissionsManager().has(player, RankPermission.FEE_SET, PermissionLevel.LEADER, false)) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(lang("0.fee.set",player), 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(lang("0.ally.add.remove.tag.1.add.remove.an.ally.clan",player), clanCommand, ChatColor.WHITE));
}
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(lang("0.rival.add.remove.tag.1.add.remove.a.rival.clan",player), clanCommand, ChatColor.WHITE));
}
if (isVerified && plugin.getPermissionsManager().has(player, RankPermission.HOME_TP, PermissionLevel.TRUSTED, false)) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(lang("home-menu",player), clanCommand, ChatColor.WHITE));
}
if (isVerified && plugin.getPermissionsManager().has(player, RankPermission.HOME_SET, PermissionLevel.LEADER, false)) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(lang("home-set-menu",player), clanCommand, ChatColor.WHITE));
}
if (isVerified && plugin.getPermissionsManager().has(player, RankPermission.HOME_SET, PermissionLevel.LEADER, false)) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(lang("home-clear-menu",player), clanCommand, ChatColor.WHITE));
}
if (isVerified && plugin.getPermissionsManager().has(player, RankPermission.HOME_REGROUP, PermissionLevel.LEADER, false)) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(lang("home-regroup-menu",player), clanCommand, ChatColor.WHITE));
}
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(lang("0.war",player), clanCommand, ChatColor.WHITE));
}
if (plugin.getPermissionsManager().has(player, "simpleclans.member.resetkdr")) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(lang("0.resetkdr.1.resets.your.kdr",player), clanCommand, ChatColor.WHITE));
}
if (isVerified && plugin.getPermissionsManager().has(player, "simpleclans.member.bb")) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(lang("0.bb.1.display.bulletin.board",player), clanCommand, ChatColor.WHITE));
}
if (isVerified && plugin.getPermissionsManager().has(player, RankPermission.BB_ADD, PermissionLevel.TRUSTED, false)) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(lang("0.bb.msg.1.add.a.message.to.the.bulletin.board",player), clanCommand, ChatColor.WHITE));
}
if (isVerified && plugin.getPermissionsManager().has(player, RankPermission.MODTAG, PermissionLevel.LEADER, false)) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(lang("0.modtag.tag.1.modify.the.clan.s.tag",player), clanCommand, ChatColor.WHITE));
}
if (isVerified && plugin.getPermissionsManager().has(player, RankPermission.DESCRIPTION, PermissionLevel.LEADER, false)) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(lang("0.description.description.1.modify.the.clan.s.description",player), clanCommand, ChatColor.WHITE));
}
String toggles = "";
if (isVerified && plugin.getPermissionsManager().has(player, "simpleclans.member.bb-toggle")) {
toggles += "bb/";
}
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(lang("0.toggle.command",player), clanCommand, ChatColor.WHITE, Helper.stripTrailing(toggles, "/")));
}
if (plugin.getPermissionsManager().has(player, RankPermission.INVITE, PermissionLevel.LEADER, false)) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(lang("0.invite.player.1.invite.a.player",player), clanCommand, ChatColor.WHITE));
}
if (plugin.getPermissionsManager().has(player, RankPermission.KICK, PermissionLevel.LEADER, false)) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(lang("0.kick.player.1.kick.a.player.from.the.clan",player), clanCommand, ChatColor.WHITE));
}
if (isVerified && isLeader && plugin.getPermissionsManager().has(player, "simpleclans.leader.settrust")) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(lang("0.trust.untrust.player.1.set.trust.level1",player), clanCommand, ChatColor.WHITE));
}
if (isVerified && isLeader && plugin.getPermissionsManager().has(player, "simpleclans.leader.settrust")) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(lang("0.trust.untrust.player.1.set.trust.level2",player), clanCommand, ChatColor.WHITE));
}
if (isVerified && isLeader && plugin.getPermissionsManager().has(player, "simpleclans.leader.rank.create")) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(lang("0.rank.create.1.create.rank",player), clanCommand, ChatColor.WHITE));
}
if (isVerified && isLeader && plugin.getPermissionsManager().has(player, "simpleclans.leader.rank.assign")) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(lang("0.rank.assign.player.rank.1.assign.rank.to.player",player), clanCommand, ChatColor.WHITE));
}
if (isVerified && isLeader && plugin.getPermissionsManager().has(player, "simpleclans.leader.rank.unassign")) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(lang("0.rank.unassign.player.1.unassign.player.from.rank",player), clanCommand, ChatColor.WHITE));
}
if (isVerified && isLeader && plugin.getPermissionsManager().has(player, "simpleclans.leader.rank.delete")) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(lang("0.rank.delete.rank.1.delete.rank",player), clanCommand, ChatColor.WHITE));
}
if (isVerified && plugin.getPermissionsManager().has(player, RankPermission.RANK_LIST, PermissionLevel.LEADER, false)) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(lang("0.rank.list.1.list.ranks",player), clanCommand, ChatColor.WHITE));
}
if (isVerified && plugin.getPermissionsManager().has(player, RankPermission.RANK_DISPLAYNAME, PermissionLevel.LEADER, false)) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(lang("0.rank.setdisplayname.rank.displayname.1.set.rank.displayname",player), clanCommand, ChatColor.WHITE));
}
if (isVerified && isLeader && plugin.getPermissionsManager().has(player, "simpleclans.leader.rank.permissions.available")) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(lang("0.rank.permissions.1.list.available.permissions",player), clanCommand, ChatColor.WHITE));
}
if (isVerified && isLeader && plugin.getPermissionsManager().has(player, "simpleclans.leader.rank.permissions.list")) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(lang("0.rank.permissions.rank.1.list.rank.permissions",player), clanCommand, ChatColor.WHITE));
}
if (isVerified && isLeader && plugin.getPermissionsManager().has(player, "simpleclans.leader.rank.permissions.add")) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(lang("0.rank.permissions.rank.add.permission.1.add.a.permission.to.rank",player), clanCommand, ChatColor.WHITE));
}
if (isVerified && isLeader && plugin.getPermissionsManager().has(player, "simpleclans.leader.rank.permissions.remove")) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(lang("0.rank.permissions.rank.remove.permission.1.remove.a.permission.from.rank",player), clanCommand, ChatColor.WHITE));
}
if (isLeader && plugin.getPermissionsManager().has(player, "simpleclans.leader.promote")) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(lang("0.promote.member.1.promote.a.member.to.leader",player), clanCommand, ChatColor.WHITE));
}
if (isLeader && plugin.getPermissionsManager().has(player, "simpleclans.leader.demote")) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(lang("0.demote.leader.1.demote.a.leader.to.member",player), clanCommand, ChatColor.WHITE));
}
if (isVerified && plugin.getPermissionsManager().has(player, RankPermission.SETBANNER, false)) {
chatBlock.addRow(ChatColor.AQUA + " " + lang("0.setbanner.1.set.clan.banner", player, clanCommand, ChatColor.WHITE));
}
if (isLeader && plugin.getPermissionsManager().has(player, "simpleclans.leader.ff")) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(lang("0.clanff.allow.block.1.toggle.clan.s.friendly.fire",player), clanCommand, ChatColor.WHITE));
}
if (isLeader && plugin.getPermissionsManager().has(player, "simpleclans.leader.disband")) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(lang("0.disband.1.disband.your.clan",player), clanCommand, ChatColor.WHITE));
}
if (plugin.getPermissionsManager().has(player, "simpleclans.member.ff")) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(lang("0.ff.allow.auto.1.toggle.personal.friendly.fire",player), clanCommand, ChatColor.WHITE));
}
if (plugin.getPermissionsManager().has(player, "simpleclans.member.resign")) {
chatBlock.addRow(ChatColor.AQUA + " " + MessageFormat.format(lang("0.resign.1.resign.from.the.clan",player), clanCommand, ChatColor.WHITE));
}
for (String item : menuItems) {
chatBlock.addRow(ChatColor.AQUA + " " + item);
}
if (plugin.getPermissionsManager().has(player, "simpleclans.mod.verify") && plugin.getSettingsManager().isRequireVerification()) {
chatBlock.addRow(ChatColor.DARK_RED + " " + MessageFormat.format(lang("0.verify.tag.1.verify.an.unverified.clan",player), clanCommand, ChatColor.WHITE));
}
if (plugin.getPermissionsManager().has(player, "simpleclans.mod.place")) {
chatBlock.addRow(ChatColor.DARK_RED + " " + MessageFormat.format(lang("0.place",player), clanCommand, ChatColor.WHITE));
}
if (isVerified && plugin.getPermissionsManager().has(player, RankPermission.MOSTKILLED, PermissionLevel.TRUSTED, false)) {
chatBlock.addRow(ChatColor.DARK_RED + " " + MessageFormat.format(lang("0.mostkilled",player), clanCommand, ChatColor.WHITE));
}
if (plugin.getPermissionsManager().has(player, "simpleclans.mod.disband")) {
chatBlock.addRow(ChatColor.DARK_RED + " " + MessageFormat.format(lang("0.disband.tag.1.disband.a.clan",player), clanCommand, ChatColor.WHITE));
}
if (plugin.getPermissionsManager().has(player, "simpleclans.mod.ban")) {
chatBlock.addRow(ChatColor.DARK_RED + " " + MessageFormat.format(lang("0.ban.unban.player.1.ban.unban.a.player",player), clanCommand, ChatColor.WHITE));
}
if (plugin.getPermissionsManager().has(player, "simpleclans.mod.hometp")) {
chatBlock.addRow(ChatColor.DARK_RED + " " + MessageFormat.format(lang("0.hometp.clan.1.tp.home.a.clan",player), clanCommand, ChatColor.WHITE));
}
if (plugin.getPermissionsManager().has(player, "simpleclans.mod.globalff")) {
chatBlock.addRow(ChatColor.DARK_RED + " " + MessageFormat.format(lang("0.globalff.allow.auto.1.set.global.friendly.fire",player), clanCommand, ChatColor.WHITE));
}
if (plugin.getPermissionsManager().has(player, "simpleclans.admin.demote")) {
chatBlock.addRow(ChatColor.DARK_RED + " " + MessageFormat.format(lang("0.demote.leader.1.demote.a.leader.to.member",player), clanCommand, ChatColor.WHITE));
}
if (plugin.getPermissionsManager().has(player, "simpleclans.admin.purge")) {
chatBlock.addRow(ChatColor.DARK_RED + " " + MessageFormat.format(lang("0.purge.player.1.purge.a.player",player), clanCommand, ChatColor.WHITE));
}
if (plugin.getPermissionsManager().has(player, "simpleclans.admin.resetkdr")) {
chatBlock.addRow(ChatColor.DARK_RED + " " + MessageFormat.format(lang("0.resetkdr.1.resets.kdr",player), clanCommand, ChatColor.WHITE));
}
if (plugin.getPermissionsManager().has(player, "simpleclans.admin.reload")) {
chatBlock.addRow(ChatColor.DARK_RED + " " + MessageFormat.format(lang("0.reload.1.reload.configuration",player), clanCommand, ChatColor.WHITE));
}
if (chatBlock.isEmpty()) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("insufficient.permissions",player));
return;
}
ChatBlock.sendBlank(player);
ChatBlock.saySingle(player, plugin.getSettingsManager().getServerName() + subColor + " " + lang("clan.commands",player) + " " + 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(lang("view.next.page",player), plugin.getSettingsManager().getCommandMore()));
}
ChatBlock.sendBlank(player);
}
/**
* Execute the command
*
* @param sender
*/
public void executeSender(CommandSender sender) {
SimpleClans plugin = SimpleClans.getInstance();
String headColor = plugin.getSettingsManager().getPageHeadingsColor();
String subColor = plugin.getSettingsManager().getPageSubTitleColor();
String clanCommand = plugin.getSettingsManager().getCommandClan();
ChatBlock chatBlock = new ChatBlock();
chatBlock.addRow(ChatColor.DARK_RED + " " + MessageFormat.format(lang("0.purge.player.1.purge.a.player",sender), clanCommand, ChatColor.WHITE));
chatBlock.addRow(ChatColor.DARK_RED + " " + MessageFormat.format(lang("0.verify.tag.1.verify.an.unverified.clan",sender), clanCommand, ChatColor.WHITE));
chatBlock.addRow(ChatColor.DARK_RED + " " + MessageFormat.format(lang("0.reload.1.reload.configuration",sender), clanCommand, ChatColor.WHITE));
ChatBlock.sendBlank(sender);
ChatBlock.saySingle(sender, plugin.getSettingsManager().getServerName() + subColor + " " + lang("clan.commands",sender) + " " + headColor + Helper.generatePageSeparator(plugin.getSettingsManager().getPageSep()));
ChatBlock.sendBlank(sender);
chatBlock.sendBlock(sender, plugin.getSettingsManager().getPageSize());
ChatBlock.sendBlank(sender);
}
/**
* Adds a menu item to the /clan menu
*
* @param syntax
* @param description
*/
public void addMenuItem(String syntax, String description) {
addMenuItem(syntax, description, ChatColor.AQUA);
}
/**
* Adds a menu item to the /clan menu, specifying syntax color
* [color] /[syntax] - [description]
*
* @param syntax
* @param description
* @param color
*/
public void addMenuItem(String syntax, String description, ChatColor color) {
menuItems.add(color + "/" + syntax + ChatColor.WHITE + " - " + description);
}
}
@@ -1,78 +0,0 @@
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.PermissionLevel;
import net.sacredlabyrinth.phaed.simpleclans.RankPermission;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
import net.sacredlabyrinth.phaed.simpleclans.utils.TagValidator;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import java.text.MessageFormat;
/**
* @author phaed
*/
public class ModtagCommand {
public ModtagCommand() {
}
/**
* 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.modtag")) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("insufficient.permissions",player));
return;
}
ClanPlayer cp = plugin.getClanManager().getClanPlayer(player);
if (cp == null) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("not.a.member.of.any.clan",player));
return;
}
Clan clan = cp.getClan();
if (!clan.isVerified()) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("clan.is.not.verified",player));
return;
}
if (!plugin.getPermissionsManager().has(player, RankPermission.MODTAG, PermissionLevel.LEADER, true)) {
return;
}
if (arg.length != 1) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(lang("usage.0.modtag.tag",player), plugin.getSettingsManager().getCommandClan()));
ChatBlock.sendMessage(player, ChatColor.RED + lang("example.clan.modtag.4kfo.4l",player));
return;
}
String newtag = arg[0];
String cleantag = Helper.cleanTag(newtag);
TagValidator validator = new TagValidator(plugin, player, newtag);
if (validator.getErrorMessage() != null) {
ChatBlock.sendMessage(player, validator.getErrorMessage());
return;
}
if (!cleantag.equals(clan.getTag())) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("you.can.only.modify.the.color.and.case.of.the.tag",player));
return;
}
clan.addBb(player.getName(), ChatColor.AQUA + MessageFormat.format(lang("tag.changed.to.0"), Helper.parseColors(newtag)));
clan.changeClanTag(newtag);
plugin.getClanManager().updateDisplayName(player);
}
}
@@ -1,105 +0,0 @@
package net.sacredlabyrinth.phaed.simpleclans.commands;
import net.sacredlabyrinth.phaed.simpleclans.*;
import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
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 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 + lang("insufficient.permissions",player));
return;
}
ClanPlayer cp = plugin.getClanManager().getClanPlayer(player);
if (cp == null) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("not.a.member.of.any.clan",player));
return;
}
Clan clan = cp.getClan();
if (!clan.isVerified()) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("clan.is.not.verified",player));
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 + lang("victim",player), headColor + lang("killcount",player), headColor + lang("attacker",player));
if (data.isEmpty()) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("nokillsfound",player));
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 + " " + lang("mostkilled",player) + " " + 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(lang("view.next.page",player), plugin.getSettingsManager().getCommandMore()));
}
ChatBlock.sendBlank(player);
}
}.runTask(plugin);
}
});
}
}
@@ -1,83 +0,0 @@
package net.sacredlabyrinth.phaed.simpleclans.commands;
import net.sacredlabyrinth.phaed.simpleclans.*;
import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import java.text.MessageFormat;
public class PlaceCommand {
public PlaceCommand() {
}
/**
* Execute the command
*
* @param sender
* @param arg
*/
public void execute(CommandSender sender, String[] arg) {
SimpleClans plugin = SimpleClans.getInstance();
if (sender instanceof Player) {
Player player = (Player) sender;
if (!plugin.getPermissionsManager().has(player, "simpleclans.mod.place")) {
ChatBlock.sendMessage(sender, ChatColor.RED + lang("insufficient.permissions",player));
return;
}
}
if (arg.length != 2) {
ChatBlock.sendMessage(sender, ChatColor.RED + MessageFormat.format(lang("usage.0.place",sender), plugin.getSettingsManager().getCommandClan()));
return;
}
Player player = Helper.getPlayer(arg[0]);
if (player == null) {
ChatBlock.sendMessage(sender, ChatColor.RED + lang("no.player.matched",sender));
return;
}
Clan newClan = plugin.getClanManager().getClan(arg[1]);
if (newClan == null) {
ChatBlock.sendMessage(sender, ChatColor.RED + lang("the.clan.does.not.exist", sender));
return;
}
ClanPlayer oldCp = plugin.getClanManager().getClanPlayer(player);
if (oldCp != null) {
Clan oldClan = oldCp.getClan();
if (oldClan.equals(newClan)) {
ChatBlock.sendMessage(sender, lang("player.already.in.this.clan", player));
return;
}
if (oldClan.isLeader(player) && oldClan.getLeaders().size() <= 1) {
oldClan.clanAnnounce(player.getName(), ChatColor.AQUA + MessageFormat.format(lang("clan.has.been.disbanded",sender), oldClan.getName()));
oldClan.disband();
} else {
oldClan.addBb(player.getName(), ChatColor.AQUA + MessageFormat.format(lang("0.has.resigned"), player.getName()));
oldClan.removePlayerFromClan(player.getUniqueId());
}
}
ClanPlayer cp = plugin.getClanManager().getCreateClanPlayerUUID(player.getName());
if (cp == null) {
return;
}
newClan.addBb(ChatColor.AQUA + MessageFormat.format(lang("joined.the.clan", sender), player.getName()));
plugin.getClanManager().serverAnnounce(MessageFormat.format(lang("has.joined", sender), player.getName(), newClan.getName()));
newClan.addPlayerToClan(cp);
}
}
@@ -1,107 +0,0 @@
package net.sacredlabyrinth.phaed.simpleclans.commands;
import net.sacredlabyrinth.phaed.simpleclans.*;
import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
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 + lang("not.a.member.of.any.clan",player));
} else {
if (cp.getClan().isVerified()) {
clan = cp.getClan();
} else {
ChatBlock.sendMessage(player, ChatColor.RED + lang("clan.is.not.verified",player));
}
}
} else {
ChatBlock.sendMessage(player, ChatColor.RED + lang("insufficient.permissions",player));
}
} 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 + lang("no.clan.matched",player));
}
} else {
ChatBlock.sendMessage(player, ChatColor.RED + lang("insufficient.permissions",player));
}
} else {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(lang("usage.0.profile.tag",player), plugin.getSettingsManager().getCommandClan()));
}
if (clan != null) {
if (clan.isVerified()) {
ChatBlock.sendBlank(player);
ChatBlock.saySingle(player, plugin.getSettingsManager().getPageClanNameColor() + clan.getName() + subColor + " " + lang("profile",player) + " " + 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() : lang("no.description",player));
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()) + " " + lang("days",player);
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() + lang("verified",player) : plugin.getSettingsManager().getPageUnTrustedColor() + lang("unverified",player));
String feeEnabled = ChatColor.WHITE + (clan.isMemberFeeEnabled() ? lang("fee.enabled",player) : lang("fee.disabled",player));
String feeValue = ChatColor.WHITE + "" + clan.getMemberFee();
ChatBlock.sendMessage(player, " " + subColor + MessageFormat.format(lang("name.0",player), name));
ChatBlock.sendMessage(player, " " + subColor + MessageFormat.format(lang("description.0",player), description));
ChatBlock.sendMessage(player, " " + subColor + MessageFormat.format(lang("status.0",player), status));
ChatBlock.sendMessage(player, " " + subColor + MessageFormat.format(lang("leaders.0",player), leaders));
ChatBlock.sendMessage(player, " " + subColor + MessageFormat.format(lang("members.online.0",player), membersOnline));
ChatBlock.sendMessage(player, " " + subColor + MessageFormat.format(lang("kdr.0",player), kdr));
ChatBlock.sendMessage(player, " " + subColor + lang("kill.totals",player) + " " + headColor + "[" + lang("rival",player) + ":" + rival + " " + headColor + "" + lang("neutral",player) + ":" + neutral + " " + headColor + "" + lang("civilian",player) + ":" + civ + headColor + "]");
ChatBlock.sendMessage(player, " " + subColor + MessageFormat.format(lang("deaths.0",player), deaths));
ChatBlock.sendMessage(player, " " + subColor + MessageFormat.format(lang("fee.0.value.1",player), feeEnabled, feeValue));
ChatBlock.sendMessage(player, " " + subColor + MessageFormat.format(lang("allies.0",player), allies));
ChatBlock.sendMessage(player, " " + subColor + MessageFormat.format(lang("rivals.0",player), rivals));
ChatBlock.sendMessage(player, " " + subColor + MessageFormat.format(lang("founded.0",player), founded));
ChatBlock.sendMessage(player, " " + subColor + MessageFormat.format(lang("inactive.0",player), inactive));
ChatBlock.sendBlank(player);
} else {
ChatBlock.sendMessage(player, ChatColor.RED + lang("clan.is.not.verified",player));
}
}
}
}
@@ -1,87 +0,0 @@
package net.sacredlabyrinth.phaed.simpleclans.commands;
import net.sacredlabyrinth.phaed.simpleclans.*;
import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
import net.sacredlabyrinth.phaed.simpleclans.managers.PermissionsManager;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import java.text.MessageFormat;
/**
* @author phaed
*/
public class PromoteCommand {
public PromoteCommand() {
}
/**
* Execute the command
*
* @param player
* @param arg
*/
public void execute(Player player, String[] arg) {
SimpleClans plugin = SimpleClans.getInstance();
PermissionsManager pm = plugin.getPermissionsManager();
boolean isAdmin = pm.has(player, "simpleclans.admin.promote");
if (!pm.has(player, "simpleclans.leader.promote") && !isAdmin) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("insufficient.permissions", player));
return;
}
ClanPlayer cp = plugin.getClanManager().getClanPlayer(player);
if (cp == null) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("not.a.member.of.any.clan",player));
return;
}
Clan clan = cp.getClan();
if (!clan.isLeader(player) && !isAdmin) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("no.leader.permissions",player));
return;
}
if (arg.length != 1) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(lang("usage.0.promote.member",player), plugin.getSettingsManager().getCommandClan()));
return;
}
Player promoted = Helper.getPlayer(arg[0]);
if (promoted == null) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("the.member.to.be.promoted.must.be.online",player));
return;
}
if (!pm.has(promoted, "simpleclans.leader.promotable")) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("the.player.does.not.have.the.permissions.to.lead.a.clan",player));
return;
}
if (promoted.getName().equals(player.getName()) && !isAdmin) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("you.cannot.promote.yourself",player));
return;
}
if (!clan.isMember(promoted) && !isAdmin) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("the.player.is.not.a.member.of.your.clan",player));
return;
}
if (clan.isLeader(promoted)) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("the.player.is.already.a.leader",player));
return;
}
if (plugin.getSettingsManager().isConfirmationForPromote() && clan.getLeaders().size() > 1 && !isAdmin) {
plugin.getRequestManager().addPromoteRequest(cp, promoted.getName(), clan);
ChatBlock.sendMessage(player,
ChatColor.AQUA + lang("promotion.vote.has.been.requested.from.all.leaders",player));
return;
}
clan.addBb(player.getName(), ChatColor.AQUA + MessageFormat.format(lang("promoted.to.leader"), promoted.getName()));
clan.promote(promoted.getUniqueId());
}
}
@@ -1,64 +0,0 @@
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.Clan;
import net.sacredlabyrinth.phaed.simpleclans.ClanPlayer;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
import net.sacredlabyrinth.phaed.simpleclans.ui.InventoryController;
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 + lang("insufficient.permissions",sender));
return;
}
}
if (args.length == 1) {
UUID uuid = UUIDMigration.getForcedPlayerUUID(args[0]);
if (uuid == null || plugin.getClanManager().getAnyClanPlayer(uuid) == null) {
ChatBlock.sendMessage(sender, ChatColor.RED + lang("no.player.matched",sender));
return;
}
Player player = plugin.getServer().getPlayer(uuid);
if (player != null && InventoryController.isRegistered(player)) {
player.closeInventory();
}
ClanPlayer cp = plugin.getClanManager().getAnyClanPlayer(uuid);
Clan clan = cp.getClan();
if (clan != null && clan.getMembers().size() == 1) {
clan.disband();
}
plugin.getClanManager().deleteClanPlayer(cp);
ChatBlock.sendMessage(sender, ChatColor.AQUA + lang("player.purged",sender));
return;
}
ChatBlock.sendMessage(sender, ChatColor.RED
+ MessageFormat.format(lang("usage.purge",sender), plugin.getSettingsManager().getCommandClan()));
}
}
@@ -1,307 +0,0 @@
package net.sacredlabyrinth.phaed.simpleclans.commands;
import java.text.MessageFormat;
import java.util.*;
import net.sacredlabyrinth.phaed.simpleclans.conversation.CreateClanTagPrompt;
import net.sacredlabyrinth.phaed.simpleclans.conversation.CreateRankNamePrompt;
import org.bukkit.ChatColor;
import org.bukkit.conversations.Conversation;
import org.bukkit.conversations.ConversationFactory;
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;
import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
/**
*
* @author RoinujNosde
*/
public class RankCommand {
private SimpleClans plugin;
private Player player;
private ClanPlayer clanPlayer;
private Clan clan;
/**
* Execute the command
*
* @param player
* @param args
*/
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 + lang("not.a.member.of.any.clan",player));
return;
}
clan = clanPlayer.getClan();
if (!clan.isVerified()) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("clan.is.not.verified",player));
return;
}
if (!clanPlayer.isLeader()) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("no.leader.permissions",player));
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(lang("usage.0.rank",player),
plugin.getSettingsManager().getCommandClan()));
}
private void assignRank(String[] args) {
if (!plugin.getPermissionsManager().has(player, "simpleclans.leader.rank.assign")) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("insufficient.permissions",player));
return;
}
if (args.length != 2) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(lang("usage.0.rank.assign",player),
plugin.getSettingsManager().getCommandClan()));
return;
}
UUID uuid = UUIDMigration.getForcedPlayerUUID(args[0]);
if (uuid == null || (!clan.isMember(uuid) && !clan.isLeader(uuid))) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("no.player.matched",player));
return;
}
String rank = args[1].toLowerCase();
if (!clan.hasRank(rank)) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("rank.0.does.not.exist",player));
return;
}
ClanPlayer cpTarget = Objects.requireNonNull(plugin.getClanManager().getClanPlayer(uuid));
if (cpTarget.getRankId().equals(rank)) {
ChatBlock.sendMessage(player, lang("player.already.has.that.rank",player));
return;
}
cpTarget.setRank(rank);
plugin.getStorageManager().updateClanPlayer(cpTarget);
ChatBlock.sendMessage(player, ChatColor.AQUA + lang("player.rank.changed",player));
}
private void unassign(String[] args) {
if (!plugin.getPermissionsManager().has(player, "simpleclans.leader.rank.unassign")) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("insufficient.permissions",player));
return;
}
if (args.length != 1) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(lang("usage.0.rank.unassign",player),
plugin.getSettingsManager().getCommandClan()));
return;
}
UUID uuid = UUIDMigration.getForcedPlayerUUID(args[0]);
if (uuid == null || (!clan.isMember(uuid) && !clan.isLeader(uuid))) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("no.player.matched",player));
return;
}
ClanPlayer cpTarget = plugin.getClanManager().getClanPlayer(uuid);
Objects.requireNonNull(cpTarget).setRank(null);
plugin.getStorageManager().updateClanPlayer(cpTarget);
ChatBlock.sendMessage(player, ChatColor.AQUA + lang("player.unassigned.from.rank",player));
}
private void createRank(String[] args) {
if (!plugin.getPermissionsManager().has(player, "simpleclans.leader.rank.create")) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("insufficient.permissions",player));
return;
}
if (args.length != 0) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(lang("usage.0.rank.create.noargs",player),
plugin.getSettingsManager().getCommandClan()));
return;
}
Conversation conversation = new ConversationFactory(plugin).withFirstPrompt(new CreateRankNamePrompt())
.withLocalEcho(true).buildConversation(player);
conversation.getContext().setSessionData("clan", clan);
conversation.begin();
}
private void listRanks() {
if (!plugin.getPermissionsManager().has(player, "simpleclans.leader.rank.list")) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("insufficient.permissions",player));
return;
}
List<Rank> ranks = clan.getRanks();
if (ranks.isEmpty()) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("no.ranks",player));
return;
}
ranks.sort(Comparator.reverseOrder());
ChatBlock.sendMessage(player, ChatColor.AQUA + lang("clans.ranks",player));
int count = 1;
for (Rank rank : ranks) {
ChatBlock.sendMessage(player, ChatColor.AQUA + MessageFormat.format(lang("ranks.list.item",player), 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 + lang("insufficient.permissions",player));
return;
}
if (args.length != 1) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(lang("usage.0.rank.delete",player),
plugin.getSettingsManager().getCommandClan()));
return;
}
String rank = args[0].toLowerCase();
if (!clan.hasRank(rank)) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("rank.0.does.not.exist",player));
return;
}
clan.deleteRank(rank);
plugin.getStorageManager().updateClan(clan, true);
ChatBlock.sendMessage(player, ChatColor.AQUA + MessageFormat.format(lang("rank.0.deleted",player), rank));
}
private void setDisplayName(String[] args) {
if (!plugin.getPermissionsManager().has(player, "simpleclans.leader.rank.setdisplayname")) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("insufficient.permissions",player));
return;
}
if (args.length < 2) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(lang("usage.0.rank.setdisplayname",player),
plugin.getSettingsManager().getCommandClan()));
return;
}
String rankName = args[0].toLowerCase();
if (!clan.hasRank(rankName)) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(lang("rank.0.does.not.exist",player), 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 + lang("you.cannot.set.colored.ranks",player));
return;
}
rank.setDisplayName(dn);
plugin.getStorageManager().updateClan(clan, true);
ChatBlock.sendMessage(player, ChatColor.AQUA + lang("rank.displayname.updated",player));
}
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 + lang("insufficient.permissions",player));
return;
}
ChatBlock.sendMessage(player, ChatColor.AQUA + lang("available.rank.permissions",player));
ChatBlock.sendMessage(player, ChatColor.AQUA + validPermissionsToMessage);
return;
}
String rank = args[0].toLowerCase();
if (!clan.hasRank(rank)) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(lang("rank.0.does.not.exist",player), 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 + lang("insufficient.permissions",player));
return;
}
if (permissions.isEmpty()) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("rank.no.permissions",player));
return;
}
ChatBlock.sendMessage(player, ChatColor.AQUA + MessageFormat.format(lang("rank.0.permissions",player), 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 + lang("insufficient.permissions",player));
return;
}
if (!RankPermission.isValid(permission)) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(lang("invalid.permission",player), permission, validPermissionsToMessage));
return;
}
permissions.add(permission);
ChatBlock.sendMessage(player, ChatColor.AQUA + MessageFormat.format(lang("permission.0.added.to.rank.1",player), permission, rank));
changed = true;
break;
case "remove":
if (!plugin.getPermissionsManager().has(player, "simpleclans.leader.rank.permissions.remove")) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("insufficient.permissions",player));
return;
}
permissions.remove(permission);
ChatBlock.sendMessage(player, ChatColor.AQUA + MessageFormat.format(lang("permission.0.removed.from.rank.1",player), permission, rank));
changed = true;
break;
}
if (changed) {
plugin.getStorageManager().updateClan(clan, true);
return;
}
}
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(lang("usage.0.rank.permissions",player),
plugin.getSettingsManager().getCommandClan()));
}
}
@@ -1,52 +0,0 @@
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 static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
import net.sacredlabyrinth.phaed.simpleclans.language.LanguageResource;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
/**
* @author phaed
*/
public class ReloadCommand
{
public ReloadCommand()
{
}
/**
* Execute the command
*
* @param sender
* @param arg
*/
public void execute(CommandSender sender, String[] arg)
{
SimpleClans plugin = SimpleClans.getInstance();
if (sender instanceof Player && !plugin.getPermissionsManager().has((Player)sender, "simpleclans.admin.reload"))
{
ChatBlock.sendMessage(sender, ChatColor.RED + "Does not match a clan command");
return;
}
plugin.getStorageManager().saveModified();
plugin.reloadConfig();
LanguageResource.clearCache();
plugin.getSettingsManager().load();
plugin.getStorageManager().importFromDatabase();
SimpleClans.getInstance().getPermissionsManager().loadPermissions();
for (Clan clan : plugin.getClanManager().getClans())
{
SimpleClans.getInstance().getPermissionsManager().updateClanPermissions(clan);
}
ChatBlock.sendMessage(sender, ChatColor.AQUA + lang("configuration.reloaded",sender));
}
}
@@ -1,75 +0,0 @@
package net.sacredlabyrinth.phaed.simpleclans.commands;
import java.text.MessageFormat;
import java.util.UUID;
import net.sacredlabyrinth.phaed.simpleclans.*;
import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
import net.sacredlabyrinth.phaed.simpleclans.uuid.UUIDMigration;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
/**
* @author phaed
*/
public class ResetKDRCommand {
public ResetKDRCommand() {
}
/**
* Execute the command
*
* @param player
* @param arg
*/
public void execute(Player player, String[] arg) {
SimpleClans plugin = SimpleClans.getInstance();
if (arg == null || arg.length == 0) {
if (!plugin.getSettingsManager().isAllowResetKdr()) {
ChatBlock.sendMessage(player, ChatColor.RED
+ MessageFormat.format(lang("usage.resetkdr",player),
plugin.getSettingsManager().getCommandClan()));
return;
}
if (!plugin.getPermissionsManager().has(player, "simpleclans.vip.resetkdr")) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("insufficient.permissions",player));
return;
}
ClanPlayer cp = plugin.getClanManager().getClanPlayer(player);
if (cp == null) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("not.a.member.of.any.clan",player));
return;
}
if (plugin.getClanManager().purchaseResetKdr(player)) {
plugin.getClanManager().resetKdr(cp);
ChatBlock.sendMessage(player, ChatColor.RED + lang("you.have.reseted.your.kdr",player));
}
return;
}
if (arg.length == 1 && plugin.getPermissionsManager().has(player, "simpleclans.admin.resetkdr")) {
if (arg[0].equalsIgnoreCase("all")) {
for (ClanPlayer cp : SimpleClans.getInstance().getClanManager().getAllClanPlayers()) {
plugin.getClanManager().resetKdr(cp);
}
ChatBlock.sendMessage(player, ChatColor.RED + lang("you.have.reseted.kdr.of.all.players",player));
} else {
UUID uuid = UUIDMigration.getForcedPlayerUUID(arg[0]);
if (uuid == null) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("no.player.matched",player));
return;
}
ClanPlayer trcp = plugin.getClanManager().getClanPlayer(uuid);
if (trcp == null) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("no.player.data.found",player));
return;
}
plugin.getClanManager().resetKdr(trcp);
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(lang("you.have.reseted.0.kdr",player), trcp.getName()));
}
} else {
ChatBlock.sendMessage(player, ChatColor.RED + lang("insufficient.permissions",player));
}
}
}
@@ -1,46 +0,0 @@
package net.sacredlabyrinth.phaed.simpleclans.commands;
import net.sacredlabyrinth.phaed.simpleclans.ChatBlock;
import net.sacredlabyrinth.phaed.simpleclans.ClanPlayer;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import net.sacredlabyrinth.phaed.simpleclans.conversation.ResignPrompt;
import org.bukkit.conversations.ConversationFactory;
/**
* @author phaed
*/
public class ResignCommand {
public ResignCommand() {
}
/**
* Execute the command
*
* @param player
* @param arg
*/
public void execute(Player player, String[] arg) {
SimpleClans plugin = SimpleClans.getInstance();
if (!plugin.getPermissionsManager().has(player, "simpleclans.member.resign")) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("insufficient.permissions",player));
return;
}
ClanPlayer cp = plugin.getClanManager().getClanPlayer(player);
if (cp == null) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("not.a.member.of.any.clan",player));
return;
}
new ConversationFactory(plugin)
.withFirstPrompt(new ResignPrompt())
.withLocalEcho(true)
.withTimeout(10)
.buildConversation(player).begin();
}
}
@@ -1,120 +0,0 @@
package net.sacredlabyrinth.phaed.simpleclans.commands;
import net.sacredlabyrinth.phaed.simpleclans.*;
import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import java.text.MessageFormat;
/**
* @author phaed
*/
public class RivalCommand {
public RivalCommand() {
}
/**
* 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.rival")) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("insufficient.permissions",player));
return;
}
ClanPlayer cp = plugin.getClanManager().getClanPlayer(player);
if (cp == null) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("not.a.member.of.any.clan",player));
return;
}
Clan clan = cp.getClan();
if (!clan.isVerified()) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("clan.is.not.verified",player));
return;
}
if (clan.isUnrivable()) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("your.clan.cannot.create.rivals",player));
return;
}
if (arg.length != 2) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(lang("usage.rival",player), plugin.getSettingsManager().getCommandClan()));
return;
}
if (clan.getSize() < plugin.getSettingsManager().getClanMinSizeToRival()) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(lang("min.players.rivalries",player), plugin.getSettingsManager().getClanMinSizeToRival()));
return;
}
String action = arg[0];
Clan rival = plugin.getClanManager().getClan(arg[1]);
if (rival == null) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("no.clan.matched",player));
return;
}
if (clan.getTag().equals(rival.getTag()))
{
ChatBlock.sendMessage(player, ChatColor.RED + lang("you.cannot.rival.your.own.clan",player));
return;
}
if (plugin.getSettingsManager().isUnrivable(rival.getTag())) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("the.clan.cannot.be.rivaled",player));
return;
}
if (!rival.isVerified()) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("cannot.rival.an.unverified.clan",player));
return;
}
if (action.equals(lang("add",player))) {
if (!plugin.getPermissionsManager().has(player, RankPermission.RIVAL_ADD, PermissionLevel.LEADER, true)) {
return;
}
if (!clan.reachedRivalLimit()) {
if (!clan.isRival(rival.getTag())) {
clan.addRival(rival);
rival.addBb(player.getName(), ChatColor.AQUA + MessageFormat.format(lang("has.initiated.a.rivalry"), clan.getName(), rival.getName()), false);
clan.addBb(player.getName(), ChatColor.AQUA + MessageFormat.format(lang("has.initiated.a.rivalry"), player.getName(), rival.getName()));
} else {
ChatBlock.sendMessage(player, ChatColor.RED + lang("your.clans.are.already.rivals",player));
}
} else {
ChatBlock.sendMessage(player, ChatColor.RED + lang("rival.limit.reached",player));
}
return;
}
if (action.equals(lang("remove",player))) {
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(lang("leaders.asked.to.end.rivalry",player), rival.getName()));
} else {
ChatBlock.sendMessage(player, ChatColor.RED + lang("your.clans.are.not.rivals",player));
}
return;
}
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(lang("usage.rival",player), plugin.getSettingsManager().getCommandClan()));
}
}
@@ -1,73 +0,0 @@
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 static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import java.text.MessageFormat;
import java.util.List;
/**
* @author phaed
*/
public class RivalriesCommand {
public RivalriesCommand() {
}
/**
* 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 (arg.length != 0) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(lang("usage.0.rivalries",player), plugin.getSettingsManager().getCommandClan()));
return;
}
if (!plugin.getPermissionsManager().has(player, "simpleclans.anyone.rivalries")) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("insufficient.permissions",player));
return;
}
List<Clan> clans = plugin.getClanManager().getClans();
plugin.getClanManager().sortClansByKDR(clans);
ChatBlock chatBlock = new ChatBlock();
ChatBlock.sendBlank(player);
ChatBlock.saySingle(player, plugin.getSettingsManager().getServerName() + subColor + " " + lang("rivalries",player) + " " + headColor + Helper.generatePageSeparator(plugin.getSettingsManager().getPageSep()));
ChatBlock.sendBlank(player);
ChatBlock.sendMessage(player, headColor + lang("legend",player) + ChatColor.DARK_RED + " [" + lang("war",player) + "]");
ChatBlock.sendBlank(player);
chatBlock.setAlignment("l", "l");
chatBlock.addRow(lang("clan",player), lang("rivals",player));
for (Clan clan : clans) {
if (!clan.isVerified()) {
continue;
}
chatBlock.addRow(" " + ChatColor.AQUA + clan.getColorTag(), clan.getRivalString(ChatColor.DARK_GRAY + ", "));
}
boolean more = chatBlock.sendBlock(player, plugin.getSettingsManager().getPageSize());
if (more) {
plugin.getStorageManager().addChatBlock(player, chatBlock);
ChatBlock.sendBlank(player);
ChatBlock.sendMessage(player, headColor + MessageFormat.format(lang("view.next.page",player), plugin.getSettingsManager().getCommandMore()));
}
ChatBlock.sendBlank(player);
}
}
@@ -1,113 +0,0 @@
package net.sacredlabyrinth.phaed.simpleclans.commands;
import net.sacredlabyrinth.phaed.simpleclans.*;
import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import java.text.MessageFormat;
import java.util.List;
/**
* @author phaed
*/
public class RosterCommand {
public RosterCommand() {
}
/**
* 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();
Clan clan = null;
if (arg.length == 0) {
if (plugin.getPermissionsManager().has(player, "simpleclans.member.roster")) {
ClanPlayer cp = plugin.getClanManager().getClanPlayer(player);
if (cp == null) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("not.a.member.of.any.clan",player));
} else {
clan = cp.getClan();
}
} else {
ChatBlock.sendMessage(player, ChatColor.RED + lang("insufficient.permissions",player));
}
} else if (arg.length == 1) {
if (plugin.getPermissionsManager().has(player, "simpleclans.anyone.roster")) {
clan = plugin.getClanManager().getClan(arg[0]);
if (clan == null) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("no.clan.matched",player));
}
} else {
ChatBlock.sendMessage(player, ChatColor.RED + lang("insufficient.permissions",player));
}
} else {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(lang("usage.0.roster.tag",player), plugin.getSettingsManager().getCommandClan()));
}
if (clan != null) {
if (clan.isVerified()) {
ChatBlock chatBlock = new ChatBlock();
ChatBlock.sendBlank(player);
ChatBlock.saySingle(player, plugin.getSettingsManager().getPageClanNameColor() + clan.getName() + subColor + " " + lang("roster",player) + " " + headColor + Helper.generatePageSeparator(plugin.getSettingsManager().getPageSep()));
ChatBlock.sendBlank(player);
ChatBlock.sendMessage(player, headColor + lang("legend",player) + " " + plugin.getSettingsManager().getPageLeaderColor() + lang("leader",player) + headColor + ", " + plugin.getSettingsManager().getPageTrustedColor() + lang("trusted",player) + headColor + ", " + plugin.getSettingsManager().getPageUnTrustedColor() + lang("untrusted",player));
ChatBlock.sendBlank(player);
chatBlock.setFlexibility(false, true, false, true);
chatBlock.addRow(" " + headColor + lang("player",player), lang("rank",player), lang("seen",player));
List<ClanPlayer> leaders = clan.getLeaders();
plugin.getClanManager().sortClanPlayersByLastSeen(leaders);
List<ClanPlayer> members = clan.getNonLeaders();
plugin.getClanManager().sortClanPlayersByLastSeen(members);
for (ClanPlayer cp : leaders) {
Player p = cp.toPlayer();
String name = plugin.getSettingsManager().getPageLeaderColor() + cp.getName();
String lastSeen = p != null && p.isOnline() && !Helper.isVanished(p) ? ChatColor.GREEN + lang("online",player) : ChatColor.WHITE + cp.getLastSeenDaysString(player);
chatBlock.addRow(" " + name, ChatColor.YELLOW + Helper.parseColors(cp.getRankDisplayName()) + ChatColor.RESET, lastSeen);
}
for (ClanPlayer cp : members) {
Player p = cp.toPlayer();
String name = (cp.isTrusted() ? plugin.getSettingsManager().getPageTrustedColor() : plugin.getSettingsManager().getPageUnTrustedColor()) + cp.getName();
String lastSeen = p != null && p.isOnline() && !Helper.isVanished(p) ? ChatColor.GREEN + lang("online",player) : ChatColor.WHITE + cp.getLastSeenDaysString(player);
chatBlock.addRow(" " + name, ChatColor.YELLOW + Helper.parseColors(cp.getRankDisplayName()) + ChatColor.RESET, lastSeen);
}
boolean more = chatBlock.sendBlock(player, plugin.getSettingsManager().getPageSize());
if (more) {
plugin.getStorageManager().addChatBlock(player, chatBlock);
ChatBlock.sendBlank(player);
ChatBlock.sendMessage(player, headColor + MessageFormat.format(lang("view.next.page",player), plugin.getSettingsManager().getCommandMore()));
}
ChatBlock.sendBlank(player);
} else {
ChatBlock.sendMessage(player, ChatColor.RED + lang("clan.is.not.verified",player));
}
} else {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(lang("usage.0.roster.tag",player), plugin.getSettingsManager().getCommandClan()));
}
}
}
@@ -0,0 +1,221 @@
package net.sacredlabyrinth.phaed.simpleclans.commands;
import co.aikar.commands.BaseCommand;
import co.aikar.commands.BukkitLocales;
import co.aikar.commands.CommandIssuer;
import co.aikar.commands.PaperCommandManager;
import co.aikar.locales.MessageKey;
import co.aikar.locales.MessageKeyProvider;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
import net.sacredlabyrinth.phaed.simpleclans.commands.completions.AbstractAsyncCompletion;
import net.sacredlabyrinth.phaed.simpleclans.commands.completions.AbstractCompletion;
import net.sacredlabyrinth.phaed.simpleclans.commands.completions.AbstractStaticCompletion;
import net.sacredlabyrinth.phaed.simpleclans.commands.completions.AbstractSyncCompletion;
import net.sacredlabyrinth.phaed.simpleclans.commands.conditions.AbstractCommandCondition;
import net.sacredlabyrinth.phaed.simpleclans.commands.conditions.AbstractCondition;
import net.sacredlabyrinth.phaed.simpleclans.commands.conditions.AbstractParameterCondition;
import net.sacredlabyrinth.phaed.simpleclans.commands.contexts.AbstractContextResolver;
import net.sacredlabyrinth.phaed.simpleclans.commands.contexts.AbstractInputOnlyContextResolver;
import net.sacredlabyrinth.phaed.simpleclans.commands.contexts.AbstractIssuerOnlyContextResolver;
import net.sacredlabyrinth.phaed.simpleclans.managers.*;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.reflections.Reflections;
import java.lang.reflect.Modifier;
import java.util.Arrays;
import java.util.List;
import java.util.Set;
import java.util.logging.Level;
import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.optionalLang;
public class SCCommandManager extends PaperCommandManager {
private final SimpleClans plugin;
private static final List<String> SUBCOMMANDS;
public SCCommandManager(@NotNull SimpleClans plugin) {
super(plugin);
this.plugin = plugin;
configure();
}
private void configure() {
registerDependencies();
enableUnstableAPI("help");
addCommandReplacements();
registerContexts();
registerCommands();
registerConditions();
registerCompletions();
}
private void registerDependencies() {
registerDependency(ClanManager.class, plugin.getClanManager());
registerDependency(SettingsManager.class, plugin.getSettingsManager());
registerDependency(StorageManager.class, plugin.getStorageManager());
registerDependency(PermissionsManager.class, plugin.getPermissionsManager());
registerDependency(RequestManager.class, plugin.getRequestManager());
}
private void registerCompletions() {
Reflections reflections = new Reflections("net.sacredlabyrinth.phaed.simpleclans.commands.completions");
Set<Class<? extends AbstractCompletion>> completions = reflections.getSubTypesOf(AbstractCompletion.class);
plugin.getLogger().info(String.format("Registering %d command completions...", completions.size()));
for (Class<? extends AbstractCompletion> c : completions) {
if (Modifier.isAbstract(c.getModifiers())) {
continue;
}
try {
AbstractCompletion obj = c.getConstructor(SimpleClans.class).newInstance(plugin);
if (obj instanceof AbstractStaticCompletion) {
getCommandCompletions().registerStaticCompletion(obj.getId(),
((AbstractStaticCompletion) obj).getCompletions());
}
if (obj instanceof AbstractAsyncCompletion) {
getCommandCompletions().registerAsyncCompletion(obj.getId(), (AbstractAsyncCompletion) obj);
}
if (obj instanceof AbstractSyncCompletion) {
getCommandCompletions().registerCompletion(obj.getId(), ((AbstractSyncCompletion) obj));
}
} catch (Exception ex) {
plugin.getLogger().log(Level.SEVERE, "Error registering completion", ex);
}
}
}
@SuppressWarnings("unchecked")
private void registerConditions() {
Reflections reflections = new Reflections("net.sacredlabyrinth.phaed.simpleclans.commands.conditions");
Set<Class<? extends AbstractCondition>> conditions = reflections.getSubTypesOf(AbstractCondition.class);
plugin.getLogger().info(String.format("Registering %d command conditions...", conditions.size()));
for (Class<? extends AbstractCondition> c : conditions) {
if (Modifier.isAbstract(c.getModifiers())) {
continue;
}
try {
AbstractCondition obj = c.getConstructor(SimpleClans.class).newInstance(plugin);
if (obj instanceof AbstractParameterCondition) {
@SuppressWarnings("rawtypes")
AbstractParameterCondition condition = (AbstractParameterCondition) obj;
getCommandConditions().addCondition(condition.getType(), condition.getId(), condition);
}
if (obj instanceof AbstractCommandCondition) {
AbstractCommandCondition condition = (AbstractCommandCondition) obj;
getCommandConditions().addCondition(condition.getId(), condition);
}
} catch (Exception ex) {
plugin.getLogger().log(Level.SEVERE, "Error registering condition", ex);
}
}
}
@SuppressWarnings({"rawtypes", "unchecked"})
private void registerContexts() {
Reflections reflections = new Reflections("net.sacredlabyrinth.phaed.simpleclans.commands.contexts");
Set<Class<? extends AbstractContextResolver>> resolvers = reflections.getSubTypesOf(AbstractContextResolver.class);
plugin.getLogger().info(String.format("Registering %d command contexts...", resolvers.size()));
for (Class<? extends AbstractContextResolver> cr : resolvers) {
if (Modifier.isAbstract(cr.getModifiers())) {
continue;
}
try {
AbstractContextResolver obj = cr.getConstructor(SimpleClans.class).newInstance(plugin);
if (obj instanceof AbstractIssuerOnlyContextResolver) {
getCommandContexts().registerIssuerOnlyContext(obj.getType(), ((AbstractIssuerOnlyContextResolver) obj));
}
if (obj instanceof AbstractInputOnlyContextResolver) {
getCommandContexts().registerContext(obj.getType(), ((AbstractInputOnlyContextResolver<?>) obj));
}
} catch (Exception ex) {
plugin.getLogger().log(Level.SEVERE, "Error registering context", ex);
}
}
}
private void registerCommands() {
boolean forceCommandPriority = plugin.getSettingsManager().isForceCommandPriority();
Reflections reflections = new Reflections("net.sacredlabyrinth.phaed.simpleclans.commands");
Set<Class<? extends BaseCommand>> commands = reflections.getSubTypesOf(BaseCommand.class);
plugin.getLogger().info(String.format("Registering %d base commands...", commands.size()));
for (Class<? extends BaseCommand> c : commands) {
//ACF already registers nested classes
if (c.isMemberClass() || Modifier.isStatic(c.getModifiers())) {
continue;
}
try {
BaseCommand baseCommand = c.getConstructor().newInstance();
registerCommand(baseCommand, forceCommandPriority);
} catch (Exception ex) {
plugin.getLogger().log(Level.SEVERE, "Error registering command", ex);
}
}
}
private void addCommandReplacements() {
SettingsManager sm = plugin.getSettingsManager();
getCommandReplacements().addReplacements(
"basic_conditions", "not_blacklisted|not_banned",
"clan", sm.getCommandClan(),
"deny", sm.getCommandDeny(),
"more", sm.getCommandMore(),
"ally_chat", sm.getCommandAlly(),
"accept", sm.getCommandAccept(),
"clan_chat", sm.getCommandClanChat()
);
SUBCOMMANDS.forEach(s -> {
String command = optionalLang(s + ".command", null);
if (command == null) {
command = s;
}
command = command.replace(" ", "");
String replacement = command.equals(s) ? s : command + "|" + s;
getCommandReplacements().addReplacement(s, replacement);
});
}
@Override
public BukkitLocales getLocales() {
if (this.locales == null) {
this.locales = new BukkitLocales(this) {
@Nullable
private Player getPlayer(CommandIssuer issuer) {
if (issuer != null) {
return Bukkit.getPlayer(issuer.getUniqueId());
}
return null;
}
@Override
@Nullable
public String getOptionalMessage(CommandIssuer issuer, MessageKey key) {
return optionalLang(key.getKey(), getPlayer(issuer));
}
@Override
@NotNull
public String getMessage(CommandIssuer issuer, MessageKeyProvider key) {
return lang(key.getMessageKey().getKey(), getPlayer(issuer));
}
};
//this.locales.loadLanguages();
}
return this.locales;
}
static {
SUBCOMMANDS = Arrays.asList("setbanner", "resetkdr", "place", "rank", "home", "war", "regroup",
"mostkilled", "kills", "globalff", "reload", "unban", "ban", "verify", "disband", "resign", "ff",
"clanff", "demote", "promote", "untrust", "trust", "purge", "fee", "bank", "kick", "invite", "toggle",
"modtag", "bb", "clear", "rival", "ally", "add", "remove", "stats", "coords", "vitals", "rivalries",
"alliances", "leaderboard", "allow", "block", "auto", "check", "assign", "unassign", "delete", "me",
"setdisplayname", "permissions", "tag", "deposit", "withdraw", "set", "status", "tp", "all", "everyone",
"lookup", "roster", "profile", "list", "create", "description", "start", "end", "admin", "help");
}
}
@@ -1,42 +0,0 @@
package net.sacredlabyrinth.phaed.simpleclans.commands;
import net.sacredlabyrinth.phaed.simpleclans.*;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.jetbrains.annotations.NotNull;
import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
public class SetBannerCommand {
private final SimpleClans plugin = SimpleClans.getInstance();
public void execute(@NotNull Player player) {
ClanPlayer cp = plugin.getClanManager().getAnyClanPlayer(player.getUniqueId());
if (cp == null || cp.getClan() == null) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("not.a.member.of.any.clan", player));
return;
}
Clan clan = cp.getClan();
if (!clan.isVerified()) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("clan.is.not.verified", player));
return;
}
if (!plugin.getPermissionsManager().has(player, RankPermission.SETBANNER, true)) {
return;
}
ItemStack hand = player.getInventory().getItemInMainHand();
if (!hand.getType().toString().contains("BANNER")) {
ChatBlock.sendMessage(player, lang("you.must.hold.a.banner", player));
return;
}
clan.setBanner(hand);
plugin.getStorageManager().updateClan(clan);
ChatBlock.sendMessage(player, lang("you.changed.clan.banner", player));
}
}
@@ -1,36 +0,0 @@
package net.sacredlabyrinth.phaed.simpleclans.commands;
import net.sacredlabyrinth.phaed.simpleclans.*;
import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
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(lang("usage.0.rank.create",player),
plugin.getSettingsManager().getCommandClan()));
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(lang("usage.0.rank.assign",player),
plugin.getSettingsManager().getCommandClan()));
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(lang("usage.0.rank.setdisplayname",player),
plugin.getSettingsManager().getCommandClan()));
}
}
@@ -1,105 +0,0 @@
package net.sacredlabyrinth.phaed.simpleclans.commands;
import java.text.DecimalFormat;
import java.text.MessageFormat;
import java.text.NumberFormat;
import java.util.List;
import net.sacredlabyrinth.phaed.simpleclans.*;
import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
/**
* @author phaed
*/
public class StatsCommand {
public StatsCommand() {
}
/**
* 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.stats")) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("insufficient.permissions",player));
return;
}
ClanPlayer cp = plugin.getClanManager().getClanPlayer(player);
if (cp == null) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("not.a.member.of.any.clan",player));
return;
}
Clan clan = cp.getClan();
if (!clan.isVerified()) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("clan.is.not.verified",player));
return;
}
if (!plugin.getPermissionsManager().has(player, RankPermission.STATS, PermissionLevel.TRUSTED, true)) {
return;
}
if (arg.length != 0) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(lang("usage.0.stats",player), plugin.getSettingsManager().getCommandClan()));
return;
}
ChatBlock chatBlock = new ChatBlock();
ChatBlock.saySingle(player, plugin.getSettingsManager().getPageClanNameColor() + clan.getName() + subColor + " " + lang("stats",player) + " " + headColor + Helper.generatePageSeparator(plugin.getSettingsManager().getPageSep()));
ChatBlock.sendBlank(player);
ChatBlock.sendMessage(player, headColor + lang("kdr",player) + " = " + subColor + lang("kill.death.ratio",player));
ChatBlock.sendMessage(player, headColor + lang("weights",player) + " = " + lang("rival",player) + ": " + subColor + plugin.getSettingsManager().getKwRival() + headColor + " " + lang("neutral",player) + ": " + subColor + plugin.getSettingsManager().getKwNeutral() + headColor + " " + lang("civilian",player) + ": " + subColor + plugin.getSettingsManager().getKwCivilian());
ChatBlock.sendBlank(player);
chatBlock.setFlexibility(true, false, false, false, false, false, false);
chatBlock.setAlignment("l", "c", "c", "c", "c", "c", "c");
chatBlock.addRow(" " + headColor + lang("name", player), lang("kdr", player), lang("rival",player), lang("neutral",player), lang("civilian.abbreviation",player), lang("deaths",player));
List<ClanPlayer> leaders = clan.getLeaders();
plugin.getClanManager().sortClanPlayersByKDR(leaders);
List<ClanPlayer> members = clan.getNonLeaders();
plugin.getClanManager().sortClanPlayersByKDR(members);
addRows(leaders, chatBlock);
addRows(members, chatBlock);
boolean more = chatBlock.sendBlock(player, plugin.getSettingsManager().getPageSize());
if (more) {
plugin.getStorageManager().addChatBlock(player, chatBlock);
ChatBlock.sendBlank(player);
ChatBlock.sendMessage(player, headColor + MessageFormat.format(lang("view.next.page",player), plugin.getSettingsManager().getCommandMore()));
}
ChatBlock.sendBlank(player);
}
private void addRows(List<ClanPlayer> leaders, ChatBlock chatBlock) {
SimpleClans plugin = SimpleClans.getInstance();
NumberFormat formatter = new DecimalFormat("#.#");
for (ClanPlayer cpm : leaders) {
String name = (cpm.isLeader() ? plugin.getSettingsManager().getPageLeaderColor() : (cpm.isTrusted() ? plugin.getSettingsManager().getPageTrustedColor() : plugin.getSettingsManager().getPageUnTrustedColor())) + cpm.getName();
String rival = NumberFormat.getInstance().format(cpm.getRivalKills());
String neutral = NumberFormat.getInstance().format(cpm.getNeutralKills());
String civilian = NumberFormat.getInstance().format(cpm.getCivilianKills());
String deaths = NumberFormat.getInstance().format(cpm.getDeaths());
String kdr = formatter.format(cpm.getKDR());
chatBlock.addRow(" " + name, ChatColor.YELLOW + kdr, ChatColor.WHITE + rival, ChatColor.GRAY + neutral, ChatColor.DARK_GRAY + civilian, ChatColor.DARK_RED + deaths);
}
}
}
@@ -1,173 +0,0 @@
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.RankPermission;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
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 + lang("capeoff",player));
cp.setCapeEnabled(false);
} else {
ChatBlock.sendMessage(player, ChatColor.AQUA + lang("capeon",player));
cp.setCapeEnabled(true);
}
} else {
ChatBlock.sendMessage(player, ChatColor.RED + lang("clan.is.not.verified",player));
}
} else {
ChatBlock.sendMessage(player, ChatColor.RED + lang("not.a.member.of.any.clan",player));
}
} else {
ChatBlock.sendMessage(player, ChatColor.RED + lang("insufficient.permissions",player));
}
}
if (cmd.equalsIgnoreCase("bb")) {
if (!plugin.getPermissionsManager().has(player, "simpleclans.member.bb-toggle")) {
lang(ChatColor.RED + "insufficient.permissions",player);
return;
}
ClanPlayer cp = plugin.getClanManager().getClanPlayer(player);
if (cp != null) {
Clan clan = cp.getClan();
if (clan.isVerified()) {
if (cp.isBbEnabled()) {
ChatBlock.sendMessage(player, ChatColor.AQUA + lang("bboff",player));
cp.setBbEnabled(false);
} else {
ChatBlock.sendMessage(player, ChatColor.AQUA + lang("bbon",player));
cp.setBbEnabled(true);
}
plugin.getStorageManager().updateClanPlayer(cp);
}
}
}
if (cmd.equalsIgnoreCase("tag")) {
if (!plugin.getPermissionsManager().has(player, "simpleclans.member.tag-toggle")) {
lang(ChatColor.RED + "insufficient.permissions",player);
return;
}
ClanPlayer cp = plugin.getClanManager().getClanPlayer(player);
if (cp != null) {
Clan clan = cp.getClan();
if (clan.isVerified()) {
if (cp.isTagEnabled()) {
ChatBlock.sendMessage(player, ChatColor.AQUA + lang("tagoff",player));
cp.setTagEnabled(false);
} else {
ChatBlock.sendMessage(player, ChatColor.AQUA + lang("tagon",player));
cp.setTagEnabled(true);
}
plugin.getStorageManager().updateClanPlayer(cp);
}
}
}
if (cmd.equalsIgnoreCase("deposit")) {
if (!plugin.getPermissionsManager().has(player, "simpleclans.leader.deposit-toggle")) {
lang(ChatColor.RED + "insufficient.permissions",player);
return;
}
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 + lang("depositoff",player));
clan.setAllowDeposit(false);
} else {
ChatBlock.sendMessage(player, ChatColor.AQUA + lang("depositon",player));
clan.setAllowDeposit(true);
}
}
} else {
ChatBlock.sendMessage(player, ChatColor.RED + lang("no.leader.permissions",player));
}
}
}
if (cmd.equalsIgnoreCase("fee") && plugin.getPermissionsManager().has(player, RankPermission.FEE_ENABLE,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 + lang("feeoff",player));
clan.setMemberFeeEnabled(false);
} else {
ChatBlock.sendMessage(player, ChatColor.AQUA + lang("feeon",player));
clan.setMemberFeeEnabled(true);
}
plugin.getStorageManager().updateClan(clan);
}
}
}
if (cmd.equalsIgnoreCase("withdraw")) {
if (!plugin.getPermissionsManager().has(player, "simpleclans.leader.withdraw-toggle")) {
lang(ChatColor.RED + "insufficient.permissions",player);
return;
}
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 + lang("withdrawoff",player));
clan.setAllowWithdraw(false);
} else {
ChatBlock.sendMessage(player, ChatColor.AQUA + lang("withdrawon",player));
clan.setAllowWithdraw(true);
}
} else {
ChatBlock.sendMessage(player, ChatColor.RED + lang("no.leader.permissions",player));
}
}
}
}
}
}
@@ -1,97 +0,0 @@
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 static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
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
*/
public class TrustCommand {
public TrustCommand() {
}
/**
* 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.settrust")) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("insufficient.permissions",player));
return;
}
ClanPlayer cp = plugin.getClanManager().getClanPlayer(player);
if (cp == null) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("not.a.member.of.any.clan",player));
return;
}
Clan clan = cp.getClan();
if (!clan.isLeader(player)) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("no.leader.permissions",player));
return;
}
if (arg.length != 1) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(lang("usage.0.trust.player",player), plugin.getSettingsManager().getCommandClan()));
return;
}
UUID trusted = UUIDMigration.getForcedPlayerUUID(arg[0]);
if (trusted == null) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("no.player.matched",player));
return;
}
if (trusted.equals(player.getUniqueId())) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("you.cannot.trust.yourself",player));
return;
}
if (!clan.isMember(trusted)) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("the.player.is.not.a.member.of.your.clan",player));
return;
}
if (clan.isLeader(trusted)) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("leaders.are.already.trusted",player));
return;
}
ClanPlayer tcp = plugin.getClanManager().getClanPlayer(trusted);
if (tcp == null) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("no.player.matched",player));
return;
}
if (tcp.isTrusted()) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("this.player.is.already.trusted",player));
return;
}
clan.addBb(player.getName(), ChatColor.AQUA + MessageFormat.format(lang("has.been.given.trusted.status.by"), arg[0], player.getName()));
tcp.setTrusted(true);
plugin.getStorageManager().updateClanPlayer(tcp);
}
}
@@ -1,62 +0,0 @@
package net.sacredlabyrinth.phaed.simpleclans.commands;
import java.text.MessageFormat;
import java.util.UUID;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import net.sacredlabyrinth.phaed.simpleclans.ChatBlock;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
import net.sacredlabyrinth.phaed.simpleclans.uuid.UUIDMigration;
/**
* @author phaed
*/
public class UnbanCommand {
public UnbanCommand() {
}
/**
* Execute the command
*
* @param player
* @param arg
*/
public void execute(Player player, String[] arg) {
SimpleClans plugin = SimpleClans.getInstance();
if (!plugin.getPermissionsManager().has(player, "simpleclans.mod.ban")) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("insufficient.permissions",player));
return;
}
if (arg.length != 1) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(lang("usage.ban.unban",player), plugin.getSettingsManager().getCommandClan()));
return;
}
UUID uuid = UUIDMigration.getForcedPlayerUUID(arg[0]);
if (uuid == null) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("no.player.matched",player));
return;
}
if (!plugin.getSettingsManager().isBanned(uuid)) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("this.player.is.not.banned",player));
return;
}
Player pl = Bukkit.getPlayer(uuid);
if (pl != null) {
ChatBlock.sendMessage(pl, ChatColor.AQUA + lang("you.have.been.unbanned.from.clan.commands",player));
}
plugin.getSettingsManager().removeBanned(uuid);
ChatBlock.sendMessage(player, ChatColor.AQUA + lang("player.removed.from.the.banned.list",player));
}
}
@@ -1,95 +0,0 @@
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 static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
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
*/
public class UntrustCommand {
public UntrustCommand() {
}
/**
* 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.settrust")) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("insufficient.permissions",player));
return;
}
ClanPlayer cp = plugin.getClanManager().getClanPlayer(player);
if (cp == null) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("not.a.member.of.any.clan",player));
return;
}
Clan clan = cp.getClan();
if (!clan.isLeader(player)) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("no.leader.permissions",player));
return;
}
if (arg.length != 1) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(lang("usage.0.untrust.player",player), plugin.getSettingsManager().getCommandClan()));
return;
}
UUID trustedId = UUIDMigration.getForcedPlayerUUID(arg[0]);
if (trustedId == null) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("no.player.matched",player));
return;
}
if (trustedId.equals(player.getUniqueId())) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("you.cannot.untrust.yourself",player));
return;
}
if (!clan.isMember(trustedId)) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("the.player.is.not.a.member.of.your.clan",player));
return;
}
if (clan.isLeader(trustedId)) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("leaders.cannot.be.untrusted",player));
return;
}
ClanPlayer tcp = plugin.getClanManager().getClanPlayer(trustedId);
if (tcp == null) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("no.player.matched",player));
return;
}
if (!tcp.isTrusted()) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("this.player.is.already.untrusted",player));
return;
}
clan.addBb(player.getName(), ChatColor.AQUA + MessageFormat.format(lang("has.been.given.untrusted.status.by"), arg[0], player.getName()));
tcp.setTrusted(false);
plugin.getStorageManager().updateClanPlayer(tcp);
}
}
@@ -1,93 +0,0 @@
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 static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import java.text.MessageFormat;
/**
* @author phaed
*/
public class VerifyCommand {
public VerifyCommand() {
}
/**
* Execute the command
*
* @param sender
* @param arg
*/
public void execute(CommandSender sender, String[] arg) {
SimpleClans plugin = SimpleClans.getInstance();
if (sender instanceof Player) {
Player player = (Player) sender;
ClanPlayer cp = plugin.getClanManager().getClanPlayer(player);
Clan clan = cp == null ? null : cp.getClan();
boolean isNonVerified = clan != null && !clan.isVerified();
boolean isBuyer = isNonVerified && plugin.getSettingsManager().isRequireVerification() && plugin.getSettingsManager().isePurchaseVerification();
if (!plugin.getPermissionsManager().has(player, "simpleclans.mod.verify")) {
//if the player does specify a tag, but does not have mod permission to verify
//if the player does not specify a tag, but does not have leader permission to verify
if (arg.length != 0 || !plugin.getPermissionsManager().has(player, "simpleclans.leader.verify")) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("insufficient.permissions",player));
return;
}
if (isBuyer) {
int minToVerify = plugin.getSettingsManager().getMinToVerify();
if (minToVerify > clan.getAllMembers().size()) {
ChatBlock.sendMessage(player, lang("your.clan.must.have.members.to.verify", player, minToVerify));
return;
}
if (plugin.getClanManager().purchaseVerification(player)) {
clan.verifyClan();
clan.addBb(player.getName(), ChatColor.AQUA + MessageFormat.format(lang("clan.0.has.been.verified"), clan.getName()));
ChatBlock.sendMessage(player, ChatColor.AQUA + lang("the.clan.has.been.verified", player));
}
return;
}
ChatBlock.sendMessage(player, lang("staff.member.verify.clan", player));
} else {
if (arg.length != 1) {
ChatBlock.sendMessage(sender, ChatColor.RED + MessageFormat.format(lang("usage.0.verify.tag",player), plugin.getSettingsManager().getCommandClan()));
return;
}
verify(player, arg[0]);
}
} else {
if (arg.length != 1) {
ChatBlock.sendMessage(sender, ChatColor.RED + MessageFormat.format(lang("usage.0.verify.tag",sender), plugin.getSettingsManager().getCommandClan()));
return;
}
verify(sender, arg[0]);
}
}
private void verify(CommandSender player, String clanName) {
SimpleClans plugin = SimpleClans.getInstance();
Clan clan = plugin.getClanManager().getClan(clanName);
if (clan != null) {
if (!clan.isVerified()) {
clan.verifyClan();
clan.addBb(player.getName(), ChatColor.AQUA + MessageFormat.format(lang("clan.0.has.been.verified"), clan.getName()));
ChatBlock.sendMessage(player, ChatColor.AQUA + lang("the.clan.has.been.verified",player));
} else {
ChatBlock.sendMessage(player, ChatColor.RED + lang("the.clan.is.already.verified",player));
}
} else {
ChatBlock.sendMessage(player, ChatColor.RED + lang("the.clan.does.not.exist",player));
}
}
}
@@ -1,106 +0,0 @@
package net.sacredlabyrinth.phaed.simpleclans.commands;
import net.sacredlabyrinth.phaed.simpleclans.*;
import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import java.text.MessageFormat;
import java.util.Collection;
import java.util.List;
/**
* @author phaed
*/
public class VitalsCommand {
public VitalsCommand() {
}
/**
* 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.vitals")) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("insufficient.permissions",player));
return;
}
ClanPlayer cp = plugin.getClanManager().getClanPlayer(player);
if (cp == null) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("not.a.member.of.any.clan",player));
return;
}
Clan clan = cp.getClan();
if (!clan.isVerified()) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("clan.is.not.verified",player));
return;
}
if (!plugin.getPermissionsManager().has(player, RankPermission.VITALS, PermissionLevel.TRUSTED, true)) {
return;
}
if (arg.length != 0) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(lang("usage.0.vitals",player), plugin.getSettingsManager().getCommandClan()));
return;
}
ChatBlock chatBlock = new ChatBlock();
ChatBlock.sendBlank(player);
ChatBlock.saySingle(player, plugin.getSettingsManager().getPageClanNameColor() + clan.getName() + subColor + " " + lang("vitals",player) + " " + headColor + Helper.generatePageSeparator(plugin.getSettingsManager().getPageSep()));
ChatBlock.sendBlank(player);
ChatBlock.sendMessage(player, headColor + lang("weapons",player) + ": " + MessageFormat.format(lang("0.s.sword.1.2.b.bow.3.4.a.arrow",player), ChatColor.WHITE, ChatColor.DARK_GRAY, ChatColor.WHITE, ChatColor.DARK_GRAY, ChatColor.WHITE));
ChatBlock.sendMessage(player, headColor + lang("materials",player) + ": " + ChatColor.AQUA + lang("diamond",player) + ChatColor.DARK_GRAY + ", " + ChatColor.YELLOW + lang("gold",player) + ChatColor.DARK_GRAY + ", " + ChatColor.GRAY + lang("stone",player) + ChatColor.DARK_GRAY + ", " + ChatColor.WHITE + lang("iron",player) + ChatColor.DARK_GRAY + ", " + ChatColor.GOLD + lang("wood",player));
ChatBlock.sendBlank(player);
chatBlock.setFlexibility(true, false, false, false, false, false);
chatBlock.setAlignment("l", "l", "l", "c", "c", "c");
chatBlock.addRow(" " + headColor + lang("name",player), lang("health",player), lang("hunger",player), lang("food",player), lang("armor",player), lang("weapons",player));
List<ClanPlayer> members = Helper.stripOffLinePlayers(clan.getLeaders());
members.addAll(Helper.stripOffLinePlayers(clan.getNonLeaders()));
addRows(members, chatBlock);
chatBlock.addRow(" -- Allies -- ", "", "", "", "", "");
addRows(clan.getAllAllyMembers(), chatBlock);
boolean more = chatBlock.sendBlock(player, plugin.getSettingsManager().getPageSize());
if (more) {
plugin.getStorageManager().addChatBlock(player, chatBlock);
ChatBlock.sendBlank(player);
ChatBlock.sendMessage(player, headColor + MessageFormat.format(lang("view.next.page",player), plugin.getSettingsManager().getCommandMore()));
}
ChatBlock.sendBlank(player);
}
private void addRows(Collection<ClanPlayer> players, ChatBlock chatBlock){
SimpleClans plugin = SimpleClans.getInstance();
for (ClanPlayer cpm : players) {
Player p = cpm.toPlayer();
if (p != null) {
String name = (cpm.isLeader() ? plugin.getSettingsManager().getPageLeaderColor() : (cpm.isTrusted() ? plugin.getSettingsManager().getPageTrustedColor() : plugin.getSettingsManager().getPageUnTrustedColor())) + cpm.getName();
String health = plugin.getClanManager().getHealthString(p.getHealth());
String hunger = plugin.getClanManager().getHungerString(p.getFoodLevel());
String armor = plugin.getClanManager().getArmorString(p.getInventory());
String weapons = plugin.getClanManager().getWeaponString(p.getInventory());
String food = plugin.getClanManager().getFoodString(p.getInventory());
chatBlock.addRow(" " + name, ChatColor.RED + health, hunger, ChatColor.WHITE + food, armor, weapons);
}
}
}
}
@@ -1,97 +0,0 @@
package net.sacredlabyrinth.phaed.simpleclans.commands;
import net.sacredlabyrinth.phaed.simpleclans.*;
import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import java.text.MessageFormat;
import java.util.List;
/**
* @author phaed
*/
public class WarCommand {
public WarCommand() {
}
/**
* 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.war")) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("insufficient.permissions",player));
return;
}
ClanPlayer cp = plugin.getClanManager().getClanPlayer(player);
if (cp == null) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("not.a.member.of.any.clan",player));
return;
}
Clan clan = cp.getClan();
if (!clan.isVerified()) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("clan.is.not.verified",player));
return;
}
if (arg.length != 2) {
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(lang("usage.war",player), plugin.getSettingsManager().getCommandClan()));
return;
}
String action = arg[0];
Clan war = plugin.getClanManager().getClan(arg[1]);
if (war == null) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("no.clan.matched",player));
return;
}
if (!clan.isRival(war.getTag())) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("you.can.only.start.war.with.rivals",player));
return;
}
if (action.equals(lang("start",player))) {
if (!plugin.getPermissionsManager().has(player, RankPermission.WAR_START, PermissionLevel.LEADER, true)) {
return;
}
if (!clan.isWarring(war.getTag())) {
List<ClanPlayer> onlineLeaders = Helper.stripOffLinePlayers(clan.getLeaders());
if (!onlineLeaders.isEmpty()) {
plugin.getRequestManager().addWarStartRequest(cp, war, clan);
ChatBlock.sendMessage(player, ChatColor.AQUA + MessageFormat.format(lang("leaders.have.been.asked.to.accept.the.war.request",player), war.getName()));
} else {
ChatBlock.sendMessage(player, ChatColor.RED + lang("at.least.one.leader.accept.the.alliance",player));
}
} else {
ChatBlock.sendMessage(player, ChatColor.RED + lang("clans.already.at.war",player));
}
return;
}
if (action.equals(lang("end",player))) {
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(lang("leaders.asked.to.end.rivalry",player), war.getName()));
} else {
ChatBlock.sendMessage(player, ChatColor.RED + lang("clans.not.at.war",player));
}
return;
}
ChatBlock.sendMessage(player, ChatColor.RED + MessageFormat.format(lang("usage.war",player), plugin.getSettingsManager().getCommandClan()));
}
}
@@ -0,0 +1,30 @@
package net.sacredlabyrinth.phaed.simpleclans.commands.clan;
import co.aikar.commands.BaseCommand;
import co.aikar.commands.annotation.*;
import net.sacredlabyrinth.phaed.simpleclans.managers.ClanManager;
import net.sacredlabyrinth.phaed.simpleclans.managers.SettingsManager;
import org.bukkit.entity.Player;
@CommandAlias("%ally_chat")
@Description("{@@command.description.ally}")
@CommandPermission("simpleclans.member.ally")
@Conditions("%basic_conditions|clan_member|rank:name=ALLY_CHAT")
public class AllyChatCommand extends BaseCommand {
@Dependency
private ClanManager clanManager;
@Dependency
private SettingsManager settingsManager;
@Default
@HelpSearchTags("chat")
@CommandCompletion("@chat_subcommands")
public void sendMessage(Player player, @Name("message") String message) {
if (!settingsManager.isAllyChatEnable()) {
return;
}
clanManager.processAllyChat(player, message);
}
}
@@ -0,0 +1,82 @@
package net.sacredlabyrinth.phaed.simpleclans.commands.clan;
import co.aikar.commands.BaseCommand;
import co.aikar.commands.annotation.*;
import net.sacredlabyrinth.phaed.simpleclans.ChatBlock;
import net.sacredlabyrinth.phaed.simpleclans.Clan;
import net.sacredlabyrinth.phaed.simpleclans.managers.PermissionsManager;
import org.bukkit.entity.Player;
import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
import static org.bukkit.ChatColor.AQUA;
import static org.bukkit.ChatColor.RED;
@CommandAlias("%clan")
@Subcommand("%bank")
@Conditions("%basic_conditions|economy|verified")
public class BankCommand extends BaseCommand {
@Dependency
private PermissionsManager permissions;
@Subcommand("%status")
@CommandPermission("simpleclans.member.bank")
@Conditions("rank:name=BANK_BALANCE")
@Description("{@@command.description.bank.status}")
public void bankStatus(Player player, Clan clan) {
player.sendMessage(AQUA + lang("clan.balance", player, clan.getBalance()));
}
@Subcommand("%withdraw %all")
@CommandPermission("simpleclans.member.bank")
@Conditions("rank:name=BANK_WITHDRAW")
@Description("{@@command.description.bank.withdraw.all}")
public void bankWithdraw(Player player, Clan clan) {
processWithdraw(player, clan, clan.getBalance());
}
@Subcommand("%withdraw")
@CommandPermission("simpleclans.member.bank")
@Conditions("rank:name=BANK_WITHDRAW")
@Description("{@@command.description.bank.withdraw.amount}")
public void bankWithdraw(Player player, Clan clan, double amount) {
processWithdraw(player, clan, amount);
}
private void processWithdraw(Player player, Clan clan, double amount) {
if (!clan.isAllowWithdraw()) {
String message = getCurrentCommandManager().getCommandReplacements()
.replace(lang("withdraw.not.allowed", player));
ChatBlock.sendMessage(player, RED + message);
return;
}
amount = Math.abs(amount);
clan.withdraw(amount, player);
}
@Subcommand("%deposit %all")
@CommandPermission("simpleclans.member.bank")
@Conditions("rank:name=BANK_DEPOSIT")
@Description("{@@command.description.bank.deposit.all}")
public void bankDeposit(Player player, Clan clan) {
processDeposit(player, clan, permissions.playerGetMoney(player));
}
@Subcommand("%deposit")
@CommandPermission("simpleclans.member.bank")
@Conditions("rank:name=BANK_DEPOSIT")
@Description("{@@command.description.bank.deposit.amount}")
public void bankDeposit(Player player, Clan clan, double amount) {
processDeposit(player, clan, amount);
}
private void processDeposit(Player player, Clan clan, double amount) {
if (!clan.isAllowDeposit()) {
String message = getCurrentCommandManager().getCommandReplacements()
.replace(lang("deposit.not.allowed", player));
ChatBlock.sendMessage(player, RED + message);
return;
}
amount = Math.abs(amount);
clan.deposit(amount, player);
}
}
@@ -0,0 +1,52 @@
package net.sacredlabyrinth.phaed.simpleclans.commands.clan;
import co.aikar.commands.BaseCommand;
import co.aikar.commands.annotation.*;
import net.sacredlabyrinth.phaed.simpleclans.ChatBlock;
import net.sacredlabyrinth.phaed.simpleclans.Clan;
import net.sacredlabyrinth.phaed.simpleclans.managers.ClanManager;
import net.sacredlabyrinth.phaed.simpleclans.managers.StorageManager;
import org.bukkit.entity.Player;
import java.util.Objects;
import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
import static org.bukkit.ChatColor.*;
@CommandAlias("%clan")
@Conditions("%basic_conditions|verified")
public class BbCommand extends BaseCommand {
@Dependency
private ClanManager cm;
@Dependency
private StorageManager storage;
@Subcommand("%bb")
@CommandPermission("simpleclans.member.bb")
@Description("{@@command.description.bb.display}")
public void display(Player sender) {
Clan clan = Objects.requireNonNull(cm.getClanByPlayerUniqueId(sender.getUniqueId()));
clan.displayBb(sender);
}
@Subcommand("%bb %clear")
@CommandPermission("simpleclans.leader.bb-clear")
@Conditions("rank:name=BB_CLEAR")
@Description("{@@command.description.bb.clear}")
public void clear(Player player) {
Clan clan = Objects.requireNonNull(cm.getClanByPlayerUniqueId(player.getUniqueId()));
clan.clearBb();
ChatBlock.sendMessage(player, RED + lang("cleared.bb", player));
}
@Subcommand("%bb %add")
@CommandPermission("simpleclans.member.bb-add")
@Conditions("rank:name=BB_ADD")
@Description("{@@command.description.bb.post}")
public void postMessage(Player player, @Name("message") String msg) {
Clan clan = Objects.requireNonNull(cm.getClanByPlayerUniqueId(player.getUniqueId()));
clan.addBb(player.getName(), AQUA + player.getName() + ": " + WHITE + msg);
storage.updateClan(clan);
}
}
@@ -0,0 +1,30 @@
package net.sacredlabyrinth.phaed.simpleclans.commands.clan;
import co.aikar.commands.BaseCommand;
import co.aikar.commands.annotation.*;
import net.sacredlabyrinth.phaed.simpleclans.ClanPlayer;
import net.sacredlabyrinth.phaed.simpleclans.managers.ClanManager;
import net.sacredlabyrinth.phaed.simpleclans.managers.SettingsManager;
import org.bukkit.entity.Player;
@CommandAlias("%clan_chat")
@Conditions("%basic_conditions|clan_member")
@CommandPermission("simpleclans.member.chat")
@Description("{@@command.description.chat}")
public class ChatCommand extends BaseCommand {
@Dependency
private ClanManager clanManager;
@Dependency
private SettingsManager settingsManager;
@Default
@HelpSearchTags("chat")
@CommandCompletion("@chat_subcommands")
public void sendMessage(Player player, ClanPlayer cp, @Name("message") String message) {
if (!settingsManager.getClanChatEnable()) {
return;
}
clanManager.processClanChat(player, cp.getTag(), message);
}
}
@@ -0,0 +1,367 @@
package net.sacredlabyrinth.phaed.simpleclans.commands.clan;
import co.aikar.commands.BaseCommand;
import co.aikar.commands.annotation.*;
import net.sacredlabyrinth.phaed.simpleclans.*;
import net.sacredlabyrinth.phaed.simpleclans.commands.ClanInput;
import net.sacredlabyrinth.phaed.simpleclans.commands.ClanPlayerInput;
import net.sacredlabyrinth.phaed.simpleclans.conversation.ResignPrompt;
import net.sacredlabyrinth.phaed.simpleclans.events.TagChangeEvent;
import net.sacredlabyrinth.phaed.simpleclans.managers.*;
import net.sacredlabyrinth.phaed.simpleclans.utils.TagValidator;
import org.bukkit.conversations.ConversationFactory;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import java.util.List;
import java.util.Objects;
import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
import static org.bukkit.ChatColor.AQUA;
import static org.bukkit.ChatColor.RED;
@CommandAlias("%clan")
@Conditions("%basic_conditions")
public class ClanCommands extends BaseCommand {
@Dependency
private SimpleClans plugin;
@Dependency
private SettingsManager settings;
@Dependency
private ClanManager cm;
@Dependency
private StorageManager storage;
@Dependency
private PermissionsManager permissions;
@Dependency
private RequestManager requestManager;
@Subcommand("%war %start")
@CommandPermission("simpleclans.leader.war")
@Conditions("verified|rank:name=WAR_START")
@Description("{@@command.description.war.start}")
@CommandCompletion("@rivals")
public void startWar(Player player, ClanPlayer cp, Clan issuerClan, @Name("clan") ClanInput other) {
Clan war = other.getClan();
if (!issuerClan.isRival(war.getTag())) {
ChatBlock.sendMessage(player, RED + lang("you.can.only.start.war.with.rivals", player));
return;
}
if (!issuerClan.isWarring(war.getTag())) {
List<ClanPlayer> onlineLeaders = Helper.stripOffLinePlayers(issuerClan.getLeaders());
if (!onlineLeaders.isEmpty()) {
requestManager.addWarStartRequest(cp, war, issuerClan);
ChatBlock.sendMessage(player, AQUA + lang("leaders.have.been.asked.to.accept.the.war.request",
player, war.getName()));
} else {
ChatBlock.sendMessage(player, RED + lang("at.least.one.leader.accept.the.alliance", player));
}
} else {
ChatBlock.sendMessage(player, RED + lang("clans.already.at.war", player));
}
}
@Subcommand("%war %end")
@CommandPermission("simpleclans.leader.war")
@Conditions("verified|rank:name=WAR_END")
@Description("{@@command.description.war.end}")
@CommandCompletion("@warring_clans")
public void endWar(Player player, ClanPlayer cp, Clan issuerClan, @Name("clan") ClanInput other) {
Clan war = other.getClan();
if (issuerClan.isWarring(war.getTag())) {
requestManager.addWarEndRequest(cp, war, issuerClan);
ChatBlock.sendMessage(player, AQUA + lang("leaders.asked.to.end.rivalry", player, war.getName()));
} else {
ChatBlock.sendMessage(player, RED + lang("clans.not.at.war", player));
}
}
@Subcommand("%modtag")
@CommandPermission("simpleclans.leader.modtag")
@Conditions("verified|rank:name=MODTAG")
@Description("{@@command.description.modtag}")
public void modtag(Player player, Clan clan, @Single @Name("tag") String tag) {
TagChangeEvent event = new TagChangeEvent(player, clan, tag);
plugin.getServer().getPluginManager().callEvent(event);
if (event.isCancelled()) {
return;
}
tag = event.getNewTag();
String cleanTag = Helper.cleanTag(tag);
TagValidator validator = new TagValidator(plugin, player, tag);
if (validator.getErrorMessage() != null) {
ChatBlock.sendMessage(player, validator.getErrorMessage());
return;
}
if (!cleanTag.equals(clan.getTag())) {
ChatBlock.sendMessage(player, RED + lang("you.can.only.modify.the.color.and.case.of.the.tag",
player));
return;
}
clan.addBb(player.getName(), AQUA + lang("tag.changed.to.0", Helper.parseColors(tag)));
clan.changeClanTag(tag);
cm.updateDisplayName(player);
}
@Subcommand("%setbanner")
@CommandPermission("simpleclans.leader.setbanner")
@Conditions("verified|rank:name=SETBANNER")
@Description("{@@command.description.setbanner}")
public void setbanner(Player player, Clan clan) {
@SuppressWarnings("deprecation")
ItemStack hand = player.getItemInHand();
if (!hand.getType().toString().contains("BANNER")) {
ChatBlock.sendMessageKey(player, "you.must.hold.a.banner");
return;
}
clan.setBanner(hand);
storage.updateClan(clan);
ChatBlock.sendMessageKey(player, "you.changed.clan.banner");
}
@Subcommand("%invite")
@CommandPermission("simpleclans.leader.invite")
@CommandCompletion("@non_members")
@Conditions("rank:name=INVITE")
@Description("{@@command.description.invite}")
public void invite(Player sender, ClanPlayer cp, Clan clan,
@Conditions("not_banned|not_in_clan|online") @Name("player") ClanPlayerInput invited) {
Player invitedPlayer = invited.getClanPlayer().toPlayer();
if (invitedPlayer == null) return;
if (!permissions.has(invitedPlayer, "simpleclans.member.can-join")) {
ChatBlock.sendMessage(sender, RED +
lang("the.player.doesn.t.not.have.the.permissions.to.join.clans", sender));
return;
}
if (invitedPlayer.getUniqueId().equals(sender.getUniqueId())) {
ChatBlock.sendMessage(sender, RED + lang("you.cannot.invite.yourself", sender));
return;
}
long minutesBeforeRejoin = cm.getMinutesBeforeRejoin(invited.getClanPlayer(), clan);
if (minutesBeforeRejoin != 0) {
ChatBlock.sendMessage(sender, RED +
lang("the.player.must.wait.0.before.joining.your.clan.again", sender, minutesBeforeRejoin));
return;
}
if (clan.getSize() >= settings.getMaxMembers()) {
ChatBlock.sendMessage(sender, RED + lang("the.clan.members.reached.limit", sender));
return;
}
if (!cm.purchaseInvite(sender)) {
return;
}
requestManager.addInviteRequest(cp, invitedPlayer.getName(), clan);
ChatBlock.sendMessage(sender, AQUA + lang("has.been.asked.to.join",
sender, invitedPlayer.getName(), clan.getName()));
}
@Subcommand("%fee %check")
@Conditions("member_fee_enabled|verified")
@CommandPermission("simpleclans.member.fee-check")
@Description("{@@command.description.fee.check}")
public void checkFee(Player player, Clan clan) {
ChatBlock.sendMessage(player, AQUA
+ lang("the.fee.is.0.and.its.current.value.is.1", player, clan.isMemberFeeEnabled() ?
lang("fee.enabled", player) : lang("fee.disabled", player),
clan.getMemberFee()
));
}
@Subcommand("%fee %set")
@CommandPermission("simpleclans.leader.fee")
@Conditions("rank:name=FEE_SET|change_fee")
@Description("{@@command.description.fee.set}")
public void setFee(Player player, Clan clan, @Name("fee") double fee) {
fee = Math.abs(fee);
double maxFee = settings.getMaxMemberFee();
if (fee > maxFee) {
ChatBlock.sendMessage(player, RED
+ lang("max.fee.allowed.is.0", player, maxFee));
return;
}
if (cm.purchaseMemberFeeSet(player)) {
clan.setMemberFee(fee);
clan.addBb(player.getName(), AQUA + lang("bb.fee.set", fee));
ChatBlock.sendMessage(player, AQUA + lang("fee.set", player));
storage.updateClan(clan);
}
}
@Subcommand("%clanff %allow")
@CommandPermission("simpleclans.leader.ff")
@Conditions("rank:name=FRIENDLYFIRE")
@Description("{@@command.description.clanff.allow}")
public void allowClanFf(Player player, Clan clan) {
clan.addBb(player.getName(), AQUA + lang("clan.wide.friendly.fire.is.allowed"));
clan.setFriendlyFire(true);
storage.updateClan(clan);
}
@Subcommand("%clanff %block")
@CommandPermission("simpleclans.leader.ff")
@Description("{@@command.description.clanff.block}")
public void blockClanFf(Player player, Clan clan) {
clan.addBb(player.getName(), AQUA + lang("clan.wide.friendly.fire.blocked"));
clan.setFriendlyFire(false);
storage.updateClan(clan);
}
@Subcommand("%description")
@CommandPermission("simpleclans.leader.description")
@Conditions("verified|rank:name=DESCRIPTION")
@Description("{@@command.description.description}")
public void setDescription(Player player, Clan clan, @Name("description") String description) {
if (description.length() < settings.getClanMinDescriptionLength()) {
ChatBlock.sendMessage(player, RED + lang("your.clan.description.must.be.longer.than",
player, settings.getClanMinDescriptionLength()));
return;
}
if (description.length() > settings.getClanMaxDescriptionLength()) {
ChatBlock.sendMessage(player, RED + lang("your.clan.description.cannot.be.longer.than",
player, settings.getClanMaxDescriptionLength()));
return;
}
clan.setDescription(description);
ChatBlock.sendMessage(player, AQUA + lang("description.changed", player));
storage.updateClan(clan);
}
@Subcommand("%rival %add")
@CommandPermission("simpleclans.leader.rival")
@Conditions("verified|rivable|minimum_to_rival|rank:name=RIVAL_ADD")
@CommandCompletion("@clans")
@Description("{@@command.description.rival.add}")
public void addRival(Player player, Clan issuerClan, @Conditions("verified|different") @Name("clan") ClanInput rival) {
Clan rivalInput = rival.getClan();
if (settings.isUnrivable(rivalInput.getTag())) {
ChatBlock.sendMessage(player, RED + lang("the.clan.cannot.be.rivaled", player));
return;
}
if (!issuerClan.reachedRivalLimit()) {
if (!issuerClan.isRival(rivalInput.getTag())) {
issuerClan.addRival(rivalInput);
rivalInput.addBb(player.getName(), AQUA + lang("has.initiated.a.rivalry", issuerClan.getName(),
rivalInput.getName()), false);
issuerClan.addBb(player.getName(), AQUA + lang("has.initiated.a.rivalry", player.getName(),
rivalInput.getName()));
} else {
ChatBlock.sendMessage(player, RED + lang("your.clans.are.already.rivals", player));
}
} else {
ChatBlock.sendMessage(player, RED + lang("rival.limit.reached", player));
}
}
@Subcommand("%rival %remove")
@CommandPermission("simpleclans.leader.rival")
@Conditions("verified|rank:name=RIVAL_REMOVE")
@CommandCompletion("@rivals")
@Description("{@@command.description.rival.remove}")
public void removeRival(Player player,
ClanPlayer cp,
Clan issuerClan,
@Conditions("different") @Name("clan") ClanInput rival) {
Clan rivalInput = rival.getClan();
if (issuerClan.isRival(rivalInput.getTag())) {
requestManager.addRivalryBreakRequest(cp, rivalInput, issuerClan);
ChatBlock.sendMessage(player, AQUA + lang("leaders.asked.to.end.rivalry", player,
rivalInput.getName()));
} else {
ChatBlock.sendMessage(player, RED + lang("your.clans.are.not.rivals", player));
}
}
@Subcommand("%ally %add")
@CommandPermission("simpleclans.leader.ally")
@Conditions("verified|rank:name=ALLY_ADD|minimum_to_ally")
@CommandCompletion("@clans")
@Description("{@@command.description.ally.add}")
public void addAlly(Player player,
ClanPlayer cp,
Clan issuerClan,
@Conditions("verified|different") @Name("clan") ClanInput other) {
Clan input = other.getClan();
if (issuerClan.isAlly(input.getTag())) {
ChatBlock.sendMessage(player, RED + lang("your.clans.are.already.allies", player));
return;
}
int maxAlliances = settings.getClanMaxAlliances();
if (maxAlliances != -1) {
if (issuerClan.getAllies().size() >= maxAlliances) {
ChatBlock.sendMessage(player, lang("your.clan.reached.max.alliances", player));
return;
}
if (input.getAllies().size() >= maxAlliances) {
ChatBlock.sendMessage(player, lang("other.clan.reached.max.alliances", player));
return;
}
}
List<ClanPlayer> onlineLeaders = Helper.stripOffLinePlayers(issuerClan.getLeaders());
if (onlineLeaders.isEmpty()) {
ChatBlock.sendMessage(player, RED + lang("at.least.one.leader.accept.the.alliance",
player));
return;
}
requestManager.addAllyRequest(cp, input, issuerClan);
ChatBlock.sendMessage(player, AQUA + lang("leaders.have.been.asked.for.an.alliance",
player, input.getName()));
}
@Subcommand("%ally %remove")
@Conditions("verified|rank:name=ALLY_REMOVE")
@CommandPermission("simpleclans.leader.ally")
@Description("{@@command.description.ally.remove}")
@CommandCompletion("@allied_clans")
public void removeAlly(Player player, Clan issuerClan, @Conditions("different|allied_clan") @Name("clan") ClanInput ally) {
Clan allyInput = ally.getClan();
issuerClan.removeAlly(allyInput);
allyInput.addBb(player.getName(), AQUA + lang("has.broken.the.alliance", issuerClan.getName(),
allyInput.getName()), false);
issuerClan.addBb(player.getName(), AQUA + lang("has.broken.the.alliance", player.getName(),
allyInput.getName()));
}
@Subcommand("%kick")
@CommandPermission("simpleclans.leader.kick")
@CommandCompletion("@clan_members")
@Conditions("rank:name=KICK")
@Description("{@@command.description.kick}")
public void kick(@Conditions("clan_member") Player sender,
@Conditions("same_clan") @Name("member") ClanPlayerInput other) {
ClanPlayer clanPlayer = other.getClanPlayer();
if (sender.getUniqueId().equals(clanPlayer.getUniqueId())) {
ChatBlock.sendMessage(sender, RED + lang("you.cannot.kick.yourself", sender));
return;
}
Clan clan = cm.getClanByPlayerUniqueId(sender.getUniqueId());
if (Objects.requireNonNull(clan).isLeader(clanPlayer.getUniqueId())) {
ChatBlock.sendMessage(sender, RED + lang("you.cannot.kick.another.leader", sender));
return;
}
clan.addBb(sender.getName(), AQUA + lang("has.been.kicked.by", clanPlayer.getName(),
sender.getName(), sender));
clan.removePlayerFromClan(clanPlayer.getUniqueId());
}
@Subcommand("%resign")
@CommandPermission("simpleclans.member.resign")
@Description("{@@command.description.resign}")
public void resign(@Conditions("clan_member") Player player) {
new ConversationFactory(plugin)
.withFirstPrompt(new ResignPrompt())
.withLocalEcho(true)
.withTimeout(10)
.buildConversation(player).begin();
}
}
@@ -0,0 +1,69 @@
package net.sacredlabyrinth.phaed.simpleclans.commands.clan;
import co.aikar.commands.BaseCommand;
import co.aikar.commands.annotation.*;
import net.sacredlabyrinth.phaed.simpleclans.ChatBlock;
import net.sacredlabyrinth.phaed.simpleclans.Clan;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
import net.sacredlabyrinth.phaed.simpleclans.commands.data.*;
import net.sacredlabyrinth.phaed.simpleclans.utils.VanishUtils;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
import static org.bukkit.ChatColor.RED;
@CommandAlias("%clan")
@Conditions("%basic_conditions|verified")
public class DataCommands extends BaseCommand {
@Dependency
private SimpleClans plugin;
@Subcommand("%vitals")
@CommandPermission("simpleclans.member.vitals")
@Conditions("rank:name=VITALS")
@Description("{@@command.description.vitals}")
public void vitals(CommandSender sender, Clan clan) {
Vitals vitals = new Vitals(plugin, sender, clan);
vitals.send();
}
@Subcommand("%stats")
@CommandPermission("simpleclans.member.stats")
@Conditions("rank:name=STATS")
@Description("{@@command.description.stats}")
public void stats(Player player, Clan clan) {
ClanStats stats = new ClanStats(plugin, player, clan);
stats.send();
}
@Subcommand("%profile")
@CommandPermission("simpleclans.member.profile")
@Description("{@@command.description.profile}")
public void profile(CommandSender sender, Clan clan) {
ClanProfile p = new ClanProfile(plugin, sender, clan);
p.send();
}
@Subcommand("%roster")
@CommandPermission("simpleclans.member.roster")
@Description("{@@command.description.roster}")
public void roster(Player player, Clan clan) {
ClanRoster r = new ClanRoster(plugin, player, clan);
r.send();
}
@Subcommand("%coords")
@CommandPermission("simpleclans.member.coords")
@Conditions("rank:name=COORDS")
@HelpSearchTags("local location")
@Description("{@@command.description.coords}")
public void coords(Player player, Clan clan) {
if (VanishUtils.getNonVanished(player, clan).size() == 1) {
ChatBlock.sendMessage(player, RED + lang("you.are.the.only.member.online", player));
return;
}
ClanCoords c = new ClanCoords(plugin, player, clan);
c.send();
}
}
@@ -0,0 +1,123 @@
package net.sacredlabyrinth.phaed.simpleclans.commands.clan;
import co.aikar.commands.BaseCommand;
import co.aikar.commands.annotation.*;
import net.sacredlabyrinth.phaed.simpleclans.*;
import net.sacredlabyrinth.phaed.simpleclans.events.HomeRegroupEvent;
import net.sacredlabyrinth.phaed.simpleclans.events.PlayerHomeSetEvent;
import net.sacredlabyrinth.phaed.simpleclans.managers.*;
import net.sacredlabyrinth.phaed.simpleclans.utils.VanishUtils;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
import static org.bukkit.ChatColor.*;
@CommandAlias("%clan")
@Conditions("%basic_conditions|verified")
public class HomeCommands extends BaseCommand {
@Dependency
private SimpleClans plugin;
@Dependency
private PermissionsManager permissions;
@Dependency
private SettingsManager settings;
@Dependency
private ClanManager cm;
@Subcommand("%regroup %me")
@CommandPermission("simpleclans.leader.regroup.me")
@Conditions("rank:name=REGROUP_ME")
@Description("{@@command.description.regroup.me}")
public void regroupMe(Player player, ClanPlayer cp, Clan clan) {
if (!settings.getAllowReGroupCommand()) {
ChatBlock.sendMessage(player, RED + lang("insufficient.permissions", player));
return;
}
processTeleport(player, cp, clan, player.getLocation());
}
private void processTeleport(Player player, ClanPlayer cp, Clan clan, Location location) {
HomeRegroupEvent homeRegroupEvent = new HomeRegroupEvent(clan, cp, VanishUtils.getNonVanished(player, clan), location);
plugin.getServer().getPluginManager().callEvent(homeRegroupEvent);
if (homeRegroupEvent.isCancelled() || !cm.purchaseHomeRegroup(player)) {
return;
}
plugin.getTeleportManager().teleport(player, clan, location);
}
@Subcommand("%regroup %home")
@CommandPermission("simpleclans.leader.regroup.home")
@Conditions("rank:name=REGROUP_HOME")
@Description("{@@command.description.regroup.home}")
public void regroupHome(Player player, ClanPlayer cp, Clan clan) {
if (!settings.getAllowReGroupCommand()) {
ChatBlock.sendMessage(player, RED + lang("insufficient.permissions", player));
return;
}
Location location = clan.getHomeLocation();
if (location == null) {
ChatBlock.sendMessage(player, RED + lang("hombase.not.set", player));
return;
}
processTeleport(player, cp, clan, location);
}
@Subcommand("%home")
@CommandPermission("simpleclans.member.home")
@Conditions("rank:name=HOME_TP")
@Description("{@@command.description.home.tp}")
public void teleport(Player player, Clan clan, ClanPlayer cp) {
Location loc = clan.getHomeLocation();
if (loc == null) {
ChatBlock.sendMessage(player, RED + lang("hombase.not.set", player));
return;
}
if (cm.purchaseHomeTeleport(player)) {
plugin.getTeleportManager().addPlayer(player, clan.getHomeLocation(), clan.getName());
}
}
@Subcommand("%home %clear")
@CommandPermission("simpleclans.leader.home-set")
@Conditions("rank:name=HOME_SET")
@Description("{@@command.description.home.clear}")
public void clear(Player player, Clan clan) {
if (settings.isHomebaseSetOnce() && clan.getHomeLocation() != null &&
!permissions.has(player, "simpleclans.mod.home")) {
ChatBlock.sendMessage(player, RED + lang("home.base.only.once", player));
return;
}
clan.setHomeLocation(null);
ChatBlock.sendMessage(player, AQUA + lang("hombase.cleared", player));
}
@Subcommand("%home %set")
@Conditions("rank:name=HOME_SET")
@CommandPermission("simpleclans.leader.home-set")
@Description("{@@command.description.home.set}")
public void set(Player player, ClanPlayer cp, Clan clan) {
if (settings.isHomebaseSetOnce() && clan.getHomeLocation() != null &&
!permissions.has(player, "simpleclans.mod.home")) {
ChatBlock.sendMessage(player, RED + lang("home.base.only.once", player));
return;
}
PlayerHomeSetEvent homeSetEvent = new PlayerHomeSetEvent(clan, cp, player.getLocation());
plugin.getServer().getPluginManager().callEvent(homeSetEvent);
if (homeSetEvent.isCancelled() || !cm.purchaseHomeTeleportSet(player)) {
return;
}
clan.setHomeLocation(player.getLocation());
ChatBlock.sendMessage(player, AQUA + lang("hombase.set", player, YELLOW +
Helper.toLocationString(player.getLocation())));
}
}
@@ -0,0 +1,181 @@
package net.sacredlabyrinth.phaed.simpleclans.commands.clan;
import co.aikar.commands.BaseCommand;
import co.aikar.commands.annotation.*;
import net.sacredlabyrinth.phaed.simpleclans.ChatBlock;
import net.sacredlabyrinth.phaed.simpleclans.Clan;
import net.sacredlabyrinth.phaed.simpleclans.ClanPlayer;
import net.sacredlabyrinth.phaed.simpleclans.commands.ClanPlayerInput;
import net.sacredlabyrinth.phaed.simpleclans.managers.*;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import java.util.Objects;
import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
import static org.bukkit.ChatColor.AQUA;
import static org.bukkit.ChatColor.RED;
@CommandAlias("%clan")
@Conditions("%basic_conditions|leader")
public class LeaderCommands extends BaseCommand {
@Dependency
private StorageManager storage;
@Dependency
private PermissionsManager permissions;
@Dependency
private SettingsManager settings;
@Dependency
private RequestManager requestManager;
@Dependency
private ClanManager cm;
@Subcommand("%demote")
@CommandCompletion("@clan_leaders")
@CommandPermission("simpleclans.leader.demote")
@Description("{@@command.description.demote}")
public void demote(Player player,
ClanPlayer cp,
Clan clan,
@Conditions("same_clan") @Name("leader") ClanPlayerInput other) {
ClanPlayer otherCp = other.getClanPlayer();
if (!clan.enoughLeadersOnlineToDemote(otherCp)) {
ChatBlock.sendMessage(player, RED + lang("not.enough.leaders.online.to.vote.on.demotion", player));
return;
}
if (!clan.isLeader(otherCp.getUniqueId())) {
ChatBlock.sendMessage(player, RED + lang("player.is.not.a.leader.of.your.clan", player));
return;
}
if (clan.getLeaders().size() > 2 && settings.isConfirmationForDemote()) {
requestManager.addDemoteRequest(cp, otherCp.getName(), clan);
ChatBlock.sendMessage(player, AQUA + lang("demotion.vote.has.been.requested.from.all.leaders",
player));
return;
}
clan.addBb(player.getName(), AQUA + lang("demoted.back.to.member", otherCp.getName()));
clan.demote(otherCp.getUniqueId());
}
@Subcommand("%promote")
@CommandPermission("simpleclans.leader.promote")
@CommandCompletion("@clan_non_leaders")
@Description("{@@command.description.promote}")
public void promote(Player player,
Clan clan,
ClanPlayer cp,
@Conditions("online|same_clan") @Name("member") ClanPlayerInput other) {
Player otherPl = Objects.requireNonNull(other.getClanPlayer().toPlayer());
if (!permissions.has(otherPl, "simpleclans.leader.promotable")) {
ChatBlock.sendMessage(player, RED + lang("the.player.does.not.have.the.permissions.to.lead.a.clan",
player));
return;
}
if (otherPl.getUniqueId().equals(player.getUniqueId())) {
ChatBlock.sendMessage(player, RED + lang("you.cannot.promote.yourself", player));
return;
}
if (clan.isLeader(otherPl.getUniqueId())) {
ChatBlock.sendMessage(player, RED + lang("the.player.is.already.a.leader", player));
return;
}
if (settings.isConfirmationForPromote() && clan.getLeaders().size() > 1) {
requestManager.addPromoteRequest(cp, otherPl.getName(), clan);
ChatBlock.sendMessage(player, AQUA + lang("promotion.vote.has.been.requested.from.all.leaders",
player));
return;
}
clan.addBb(player.getName(), AQUA + lang("promoted.to.leader", otherPl.getName()));
clan.promote(otherPl.getUniqueId());
}
@Subcommand("%disband")
@CommandPermission("simpleclans.leader.disband")
@Description("{@@command.description.disband}")
public void disband(Player player, ClanPlayer cp, Clan clan) {
if (clan.getLeaders().size() != 1) {
requestManager.addDisbandRequest(cp, clan);
ChatBlock.sendMessage(player, AQUA +
lang("clan.disband.vote.has.been.requested.from.all.leaders", player));
return;
}
clan.clanAnnounce(player.getName(), AQUA + lang("clan.has.been.disbanded", clan.getName()));
clan.disband();
}
@Subcommand("%verify")
@CommandPermission("simpleclans.leader.verify")
@Description("{@@command.description.verify}")
public void verify(Player player, Clan clan) {
if (clan.isVerified()) {
ChatBlock.sendMessageKey(player, "your.clan.already.verified");
return;
}
if (!settings.isePurchaseVerification()) {
ChatBlock.sendMessageKey(player, "staff.member.verify.clan");
return;
}
int minToVerify = settings.getMinToVerify();
if (minToVerify > clan.getAllMembers().size()) {
ChatBlock.sendMessage(player, lang("your.clan.must.have.members.to.verify", player, minToVerify));
return;
}
if (cm.purchaseVerification(player)) {
clan.verifyClan();
clan.addBb(player.getName(), AQUA + lang("clan.0.has.been.verified", clan.getName()));
ChatBlock.sendMessage(player, AQUA + lang("the.clan.has.been.verified", player));
}
}
@Subcommand("%trust")
@CommandPermission("simpleclans.leader.settrust")
@CommandCompletion("@clan_members")
@Description("{@@command.description.trust}")
public void trust(Player player, Clan clan, @Conditions("same_clan") @Name("member") ClanPlayerInput trusted) {
ClanPlayer trustedInput = trusted.getClanPlayer();
if (player.getUniqueId().equals(trustedInput.getUniqueId())) {
ChatBlock.sendMessage(player, RED + lang("you.cannot.trust.yourself", player));
return;
}
if (clan.isLeader(trustedInput.getUniqueId())) {
ChatBlock.sendMessage(player, RED + lang("leaders.are.already.trusted", player));
return;
}
if (trustedInput.isTrusted()) {
ChatBlock.sendMessage(player, ChatColor.RED + lang("this.player.is.already.trusted", player));
return;
}
clan.addBb(player.getName(), AQUA + lang("has.been.given.trusted.status.by", trustedInput.getName(),
player.getName()));
trustedInput.setTrusted(true);
storage.updateClanPlayer(trustedInput);
}
@Subcommand("%untrust")
@CommandPermission("simpleclans.leader.settrust")
@CommandCompletion("@clan_members")
@Description("{@@command.description.untrust}")
public void untrust(Player player, Clan clan, @Conditions("same_clan") @Name("member") ClanPlayerInput trusted) {
ClanPlayer trustedInput = trusted.getClanPlayer();
if (trustedInput.getUniqueId().equals(player.getUniqueId())) {
ChatBlock.sendMessage(player, RED + lang("you.cannot.untrust.yourself", player));
return;
}
if (clan.isLeader(trustedInput.getUniqueId())) {
ChatBlock.sendMessage(player, RED + lang("leaders.cannot.be.untrusted", player));
return;
}
if (!trustedInput.isTrusted()) {
ChatBlock.sendMessage(player, RED + lang("this.player.is.already.untrusted", player));
return;
}
clan.addBb(player.getName(), AQUA + lang("has.been.given.untrusted.status.by", trustedInput.getName(),
player.getName()));
trustedInput.setTrusted(false);
storage.updateClanPlayer(trustedInput);
}
}
@@ -0,0 +1,176 @@
package net.sacredlabyrinth.phaed.simpleclans.commands.clan;
import co.aikar.commands.BaseCommand;
import co.aikar.commands.annotation.*;
import net.sacredlabyrinth.phaed.simpleclans.*;
import net.sacredlabyrinth.phaed.simpleclans.commands.ClanPlayerInput;
import net.sacredlabyrinth.phaed.simpleclans.conversation.CreateRankNamePrompt;
import net.sacredlabyrinth.phaed.simpleclans.managers.PermissionsManager;
import net.sacredlabyrinth.phaed.simpleclans.managers.StorageManager;
import org.bukkit.ChatColor;
import org.bukkit.conversations.Conversation;
import org.bukkit.conversations.ConversationFactory;
import org.bukkit.entity.Player;
import java.util.Comparator;
import java.util.List;
import java.util.Set;
import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
import static org.bukkit.ChatColor.AQUA;
import static org.bukkit.ChatColor.RED;
@CommandAlias("%clan")
@Subcommand("%rank")
@Conditions("%basic_conditions|verified|leader")
public class RankCommand extends BaseCommand {
@Dependency
private SimpleClans plugin;
@Dependency
private StorageManager storage;
@Dependency
private PermissionsManager permissions;
@Subcommand("%assign")
@CommandPermission("simpleclans.leader.rank.assign")
@CommandCompletion("@clan_members @ranks")
@Description("{@@command.description.rank.assign}")
public void assign(Player player,
Clan clan,
@Name("member") @Conditions("same_clan") ClanPlayerInput member,
@Name("rank") Rank rank) {
ClanPlayer memberInput = member.getClanPlayer();
if (memberInput.getRankId().equals(rank.getName())) {
ChatBlock.sendMessage(player, lang("player.already.has.that.rank", player));
return;
}
memberInput.setRank(rank.getName());
storage.updateClanPlayer(memberInput);
ChatBlock.sendMessage(player, AQUA + lang("player.rank.changed", player));
}
@Subcommand("%unassign")
@CommandPermission("simpleclans.leader.rank.unassign")
@CommandCompletion("@clan_members")
@Description("{@@command.description.rank.unassign}")
public void unassign(Player player, @Conditions("same_clan") @Name("member") ClanPlayerInput cp) {
ClanPlayer cpInput = cp.getClanPlayer();
cpInput.setRank(null);
storage.updateClanPlayer(cpInput);
ChatBlock.sendMessage(player, AQUA + lang("player.unassigned.from.rank", player));
}
@Subcommand("%create")
@CommandPermission("simpleclans.leader.rank.create")
@Description("{@@command.description.rank.create}")
public void create(Player player, Clan clan) {
Conversation conversation = new ConversationFactory(plugin).withFirstPrompt(new CreateRankNamePrompt())
.withLocalEcho(true).buildConversation(player);
conversation.getContext().setSessionData("clan", clan);
conversation.begin();
}
@Subcommand("%delete")
@CommandPermission("simpleclans.leader.rank.delete")
@CommandCompletion("@ranks")
@Description("{@@command.description.rank.delete}")
public void delete(Player player, Clan clan, @Name("rank") Rank rank) {
clan.deleteRank(rank.getName());
storage.updateClan(clan, true);
ChatBlock.sendMessage(player, AQUA + lang("rank.0.deleted", player, rank.getDisplayName()));
}
@Subcommand("%list")
@CommandPermission("simpleclans.leader.rank.list")
@Description("{@@command.description.rank.list}")
public void list(Player player, Clan clan) {
List<Rank> ranks = clan.getRanks();
if (ranks.isEmpty()) {
ChatBlock.sendMessage(player, RED + lang("no.ranks", player));
return;
}
ranks.sort(Comparator.reverseOrder());
ChatBlock.sendMessage(player, AQUA + lang("clans.ranks", player));
int count = 1;
for (Rank rank : ranks) {
ChatBlock.sendMessage(player, AQUA + lang("ranks.list.item", player, count,
Helper.parseColors(rank.getDisplayName()) + AQUA, rank.getName()));
count++;
}
}
@Subcommand("%setdisplayname")
@CommandPermission("simpleclans.leader.rank.setdisplayname")
@CommandCompletion("@ranks @nothing")
@Description("{@@command.description.rank.setdisplayname}")
public void setDisplayName(Player player, Clan clan, @Name("rank") Rank rank, @Name("displayname") String displayName) {
if (displayName.contains("&") && !permissions.has(player, "simpleclans.leader.coloredrank")) {
ChatBlock.sendMessage(player, RED + lang("you.cannot.set.colored.ranks", player));
return;
}
rank.setDisplayName(displayName);
storage.updateClan(clan, true);
ChatBlock.sendMessage(player, ChatColor.AQUA + lang("rank.displayname.updated", player));
}
@Subcommand("%permissions")
public class PermissionsCommand extends BaseCommand {
private final String validPermissionsToMessage = Helper.toMessage(Helper.fromPermissionArray(), ",");
@Default
@CommandPermission("simpleclans.leader.rank.permissions.available")
@Description("{@@command.description.rank.permissions.available}")
public void availablePermissions(Player player) {
ChatBlock.sendMessage(player, AQUA + lang("available.rank.permissions", player));
ChatBlock.sendMessage(player, AQUA + validPermissionsToMessage);
}
@Default
@CommandPermission("simpleclans.leader.rank.permissions.list")
@CommandCompletion("@ranks")
@Description("{@@command.description.rank.permissions.rank}")
public void list(Player player, @Name("rank") Rank rank) {
Set<String> permissions = rank.getPermissions();
if (permissions.isEmpty()) {
ChatBlock.sendMessage(player, RED + lang("rank.no.permissions", player));
return;
}
ChatBlock.sendMessage(player, AQUA + lang("rank.0.permissions", player, rank.getDisplayName()));
ChatBlock.sendMessage(player, AQUA + Helper.toMessage(permissions.toArray(new String[0]), ","));
}
@Subcommand("%add")
@CommandPermission("simpleclans.leader.rank.permissions.add")
@CommandCompletion("@ranks @rank_permissions")
@Description("{@@command.description.rank.permissions.add}")
public void add(Player player,
Clan clan,
@Name("rank") Rank rank,
@Values("@rank_permissions") @Name("permission") String permission) {
Set<String> permissions = rank.getPermissions();
permissions.add(permission);
ChatBlock.sendMessage(player, AQUA + lang("permission.0.added.to.rank.1", player, permission,
rank.getDisplayName()));
storage.updateClan(clan, true);
}
@Subcommand("%remove")
@CommandCompletion("@ranks @rank_permissions")
@CommandPermission("simpleclans.leader.rank.permissions.remove")
@Description("{@@command.description.rank.permissions.remove}")
public void remove(Player player,
Clan clan,
@Name("rank") Rank rank,
@Values("@rank_permissions") @Name("permission") String permission) {
Set<String> permissions = rank.getPermissions();
permissions.remove(permission);
ChatBlock.sendMessage(player, AQUA + lang("permission.0.removed.from.rank.1", player,
permission, rank.getDisplayName()));
storage.updateClan(clan, true);
}
}
}
@@ -0,0 +1,84 @@
package net.sacredlabyrinth.phaed.simpleclans.commands.clan;
import co.aikar.commands.BaseCommand;
import co.aikar.commands.annotation.*;
import net.sacredlabyrinth.phaed.simpleclans.ChatBlock;
import net.sacredlabyrinth.phaed.simpleclans.Clan;
import net.sacredlabyrinth.phaed.simpleclans.ClanPlayer;
import net.sacredlabyrinth.phaed.simpleclans.managers.StorageManager;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import java.util.function.Consumer;
import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
import static org.bukkit.ChatColor.AQUA;
@CommandAlias("%clan")
@Subcommand("%toggle")
@Conditions("%basic_conditions|verified")
public class ToggleCommand extends BaseCommand {
@Dependency
private StorageManager storage;
@Subcommand("%bb")
@CommandPermission("simpleclans.member.bb-toggle")
@Description("{@@command.description.toggle.bb}")
public void bb(Player player, ClanPlayer cp) {
toggle(player, "bbon", "bboff", cp.isBbEnabled(), cp::setBbEnabled);
storage.updateClanPlayer(cp);
}
@Subcommand("%tag")
@CommandPermission("simpleclans.member.tag-toggle")
@Description("{@@command.description.toggle.tag}")
public void tag(Player player, ClanPlayer cp) {
toggle(player, "tagon", "tagoff", cp.isTagEnabled(), cp::setTagEnabled);
storage.updateClanPlayer(cp);
}
@Subcommand("%deposit")
@CommandPermission("simpleclans.leader.deposit-toggle")
@Conditions("leader")
@Description("{@@command.description.toggle.deposit}")
public void deposit(Player player, Clan clan) {
toggle(player, "depositon", "depositoff", clan.isAllowDeposit(),
clan::setAllowDeposit);
storage.updateClan(clan);
}
@Subcommand("%fee")
@CommandPermission("simpleclans.leader.fee")
@Conditions("rank:name=FEE_ENABLE|change_fee")
@Description("{@@command.description.toggle.fee}")
public void fee(Player player, Clan clan) {
toggle(player, "feeon", "feeoff", clan.isMemberFeeEnabled(),
clan::setMemberFeeEnabled);
storage.updateClan(clan);
}
@Subcommand("%withdraw")
@CommandPermission("simpleclans.leader.withdraw-toggle")
@Conditions("leader")
@Description("{@@command.description.toggle.withdraw}")
public void withdraw(Player player, Clan clan) {
toggle(player, "withdrawon", "withdrawoff", clan.isAllowWithdraw(),
clan::setAllowWithdraw);
storage.updateClan(clan);
}
private void toggle(CommandSender sender, String onMessageKey, String offMessageKey, boolean status,
Consumer<Boolean> consumer) {
String messageOn = AQUA + lang(onMessageKey, sender);
String messageOff = AQUA + lang(offMessageKey, sender);
ChatBlock.sendMessage(sender, status ? messageOff : messageOn);
consumer.accept(!status);
}
}
@@ -0,0 +1,13 @@
package net.sacredlabyrinth.phaed.simpleclans.commands.completions;
import co.aikar.commands.BukkitCommandCompletionContext;
import co.aikar.commands.CommandCompletions.AsyncCommandCompletionHandler;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
import org.jetbrains.annotations.NotNull;
public abstract class AbstractAsyncCompletion extends AbstractCompletion
implements AsyncCommandCompletionHandler<BukkitCommandCompletionContext> {
public AbstractAsyncCompletion(@NotNull SimpleClans plugin) {
super(plugin);
}
}
@@ -0,0 +1,16 @@
package net.sacredlabyrinth.phaed.simpleclans.commands.completions;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
import net.sacredlabyrinth.phaed.simpleclans.managers.ClanManager;
import org.jetbrains.annotations.NotNull;
public abstract class AbstractCompletion implements IdentifiableCompletion {
protected final SimpleClans plugin;
protected final ClanManager clanManager;
public AbstractCompletion(@NotNull SimpleClans plugin) {
this.plugin = plugin;
this.clanManager = plugin.getClanManager();
}
}
@@ -0,0 +1,17 @@
package net.sacredlabyrinth.phaed.simpleclans.commands.completions;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
import org.jetbrains.annotations.NotNull;
import java.util.Collection;
public abstract class AbstractStaticCompletion extends AbstractCompletion {
public AbstractStaticCompletion(@NotNull SimpleClans plugin) {
super(plugin);
}
@NotNull
public abstract Collection<String> getCompletions();
}
@@ -0,0 +1,13 @@
package net.sacredlabyrinth.phaed.simpleclans.commands.completions;
import co.aikar.commands.BukkitCommandCompletionContext;
import co.aikar.commands.CommandCompletions.CommandCompletionHandler;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
import org.jetbrains.annotations.NotNull;
public abstract class AbstractSyncCompletion extends AbstractCompletion
implements CommandCompletionHandler<BukkitCommandCompletionContext> {
public AbstractSyncCompletion(@NotNull SimpleClans plugin) {
super(plugin);
}
}
@@ -0,0 +1,29 @@
package net.sacredlabyrinth.phaed.simpleclans.commands.completions;
import co.aikar.commands.BukkitCommandCompletionContext;
import co.aikar.commands.InvalidCommandArgument;
import net.sacredlabyrinth.phaed.simpleclans.ClanPlayer;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
import org.jetbrains.annotations.NotNull;
import java.util.Collection;
import java.util.stream.Collectors;
@SuppressWarnings("unused")
public class AllLeadersCompletion extends AbstractSyncCompletion {
public AllLeadersCompletion(@NotNull SimpleClans plugin) {
super(plugin);
}
@Override
public Collection<String> getCompletions(BukkitCommandCompletionContext context) throws InvalidCommandArgument {
return clanManager
.getAllClanPlayers().stream().filter(ClanPlayer::isLeader).map(ClanPlayer::getName)
.collect(Collectors.toList());
}
@Override
public @NotNull String getId() {
return "all_leaders";
}
}
@@ -0,0 +1,29 @@
package net.sacredlabyrinth.phaed.simpleclans.commands.completions;
import co.aikar.commands.BukkitCommandCompletionContext;
import co.aikar.commands.InvalidCommandArgument;
import net.sacredlabyrinth.phaed.simpleclans.ClanPlayer;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
import org.jetbrains.annotations.NotNull;
import java.util.Collection;
import java.util.stream.Collectors;
@SuppressWarnings("unused")
public class AllNonLeadersCompletion extends AbstractSyncCompletion {
public AllNonLeadersCompletion(@NotNull SimpleClans plugin) {
super(plugin);
}
@Override
public Collection<String> getCompletions(BukkitCommandCompletionContext context) throws InvalidCommandArgument {
return clanManager
.getAllClanPlayers().stream().filter(cp -> !cp.isLeader() && cp.getClan() != null)
.map(ClanPlayer::getName).collect(Collectors.toList());
}
@Override
public @NotNull String getId() {
return "all_non_leaders";
}
}
@@ -0,0 +1,35 @@
package net.sacredlabyrinth.phaed.simpleclans.commands.completions;
import co.aikar.commands.BukkitCommandCompletionContext;
import co.aikar.commands.InvalidCommandArgument;
import net.sacredlabyrinth.phaed.simpleclans.Clan;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
import java.util.Collection;
import java.util.Collections;
@SuppressWarnings("unused")
public class AlliedClansCompletion extends AbstractSyncCompletion {
public AlliedClansCompletion(@NotNull SimpleClans plugin) {
super(plugin);
}
@Override
public Collection<String> getCompletions(BukkitCommandCompletionContext context) throws InvalidCommandArgument {
Player player = context.getPlayer();
if (player != null) {
Clan clan = clanManager.getClanByPlayerUniqueId(player.getUniqueId());
if (clan != null) {
return clan.getAllies();
}
}
return Collections.emptyList();
}
@Override
public @NotNull String getId() {
return "allied_clans";
}
}
@@ -0,0 +1,44 @@
package net.sacredlabyrinth.phaed.simpleclans.commands.completions;
import co.aikar.commands.BukkitCommandCompletionContext;
import co.aikar.commands.InvalidCommandArgument;
import net.sacredlabyrinth.phaed.simpleclans.ClanPlayer;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
import java.util.*;
import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
@SuppressWarnings("unused")
public class ChatSubcommandsCompletion extends AbstractSyncCompletion {
public ChatSubcommandsCompletion(@NotNull SimpleClans plugin) {
super(plugin);
}
@Override
public @NotNull String getId() {
return "chat_subcommands";
}
@Override
public Collection<String> getCompletions(BukkitCommandCompletionContext context) throws InvalidCommandArgument {
Player player = context.getPlayer();
if (player == null) {
return Collections.emptyList();
}
String leave = lang("leave", player);
List<String> subcommands = new ArrayList<>(Arrays.asList(lang("join", player), leave, lang("mute",
player)));
ClanPlayer cp = clanManager.getAnyClanPlayer(player.getUniqueId());
if (cp != null) {
if (cp.getChannel() == ClanPlayer.Channel.NONE) {
subcommands.remove(leave);
}
}
return subcommands;
}
}
@@ -0,0 +1,36 @@
package net.sacredlabyrinth.phaed.simpleclans.commands.completions;
import co.aikar.commands.BukkitCommandCompletionContext;
import co.aikar.commands.InvalidCommandArgument;
import net.sacredlabyrinth.phaed.simpleclans.Clan;
import net.sacredlabyrinth.phaed.simpleclans.ClanPlayer;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
import java.util.Collection;
import java.util.Collections;
import java.util.stream.Collectors;
public class ClanLeadersCompletion extends AbstractSyncCompletion {
public ClanLeadersCompletion(@NotNull SimpleClans plugin) {
super(plugin);
}
@Override
public Collection<String> getCompletions(BukkitCommandCompletionContext c) throws InvalidCommandArgument {
Player player = c.getPlayer();
if (player != null) {
Clan clan = clanManager.getClanByPlayerUniqueId(player.getUniqueId());
if (clan != null) {
return clan.getLeaders().stream().map(ClanPlayer::getName).collect(Collectors.toList());
}
}
return Collections.emptyList();
}
@Override
public @NotNull String getId() {
return "clan_leaders";
}
}
@@ -0,0 +1,36 @@
package net.sacredlabyrinth.phaed.simpleclans.commands.completions;
import co.aikar.commands.BukkitCommandCompletionContext;
import co.aikar.commands.InvalidCommandArgument;
import net.sacredlabyrinth.phaed.simpleclans.Clan;
import net.sacredlabyrinth.phaed.simpleclans.ClanPlayer;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
import java.util.Collection;
import java.util.Collections;
import java.util.stream.Collectors;
public class ClanMembersCompletion extends AbstractSyncCompletion {
public ClanMembersCompletion(@NotNull SimpleClans plugin) {
super(plugin);
}
@Override
public Collection<String> getCompletions(BukkitCommandCompletionContext c) throws InvalidCommandArgument {
Player player = c.getPlayer();
if (player != null) {
Clan clan = clanManager.getClanByPlayerUniqueId(player.getUniqueId());
if (clan != null) {
return clan.getAllMembers().stream().map(ClanPlayer::getName).collect(Collectors.toList());
}
}
return Collections.emptyList();
}
@Override
public @NotNull String getId() {
return "clan_members";
}
}
@@ -0,0 +1,36 @@
package net.sacredlabyrinth.phaed.simpleclans.commands.completions;
import co.aikar.commands.BukkitCommandCompletionContext;
import co.aikar.commands.InvalidCommandArgument;
import net.sacredlabyrinth.phaed.simpleclans.Clan;
import net.sacredlabyrinth.phaed.simpleclans.ClanPlayer;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
import java.util.Collection;
import java.util.Collections;
import java.util.stream.Collectors;
@SuppressWarnings("unused")
public class ClanNonLeadersCompletion extends AbstractSyncCompletion {
public ClanNonLeadersCompletion(@NotNull SimpleClans plugin) {
super(plugin);
}
@Override
public Collection<String> getCompletions(BukkitCommandCompletionContext c) throws InvalidCommandArgument {
Player player = c.getPlayer();
if (player != null) {
Clan clan = clanManager.getClanByPlayerUniqueId(player.getUniqueId());
if (clan != null) {
return clan.getNonLeaders().stream().map(ClanPlayer::getName).collect(Collectors.toList());
}
}
return Collections.emptyList(); }
@Override
public @NotNull String getId() {
return "clan_non_leaders";
}
}
@@ -0,0 +1,34 @@
package net.sacredlabyrinth.phaed.simpleclans.commands.completions;
import co.aikar.commands.BukkitCommandCompletionContext;
import co.aikar.commands.InvalidCommandArgument;
import net.sacredlabyrinth.phaed.simpleclans.Clan;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
import org.jetbrains.annotations.NotNull;
import java.util.Collection;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class ClansCompletion extends AbstractSyncCompletion {
public ClansCompletion(@NotNull SimpleClans plugin) {
super(plugin);
}
@Override
public Collection<String> getCompletions(BukkitCommandCompletionContext c) throws InvalidCommandArgument {
Stream<Clan> clans = clanManager.getClans().stream();
if (c.hasConfig("has_home")) {
clans = clans.filter(clan -> clan.getHomeLocation() != null);
}
if (c.hasConfig("unverified")) {
clans = clans.filter(clan -> !clan.isVerified());
}
return clans.map(Clan::getTag).collect(Collectors.toList());
}
@Override
public @NotNull String getId() {
return "clans";
}
}
@@ -0,0 +1,9 @@
package net.sacredlabyrinth.phaed.simpleclans.commands.completions;
import org.jetbrains.annotations.NotNull;
public interface IdentifiableCompletion {
@NotNull
String getId();
}
@@ -0,0 +1,28 @@
package net.sacredlabyrinth.phaed.simpleclans.commands.completions;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
import org.jetbrains.annotations.NotNull;
import java.util.Arrays;
import java.util.Collection;
import static net.sacredlabyrinth.phaed.simpleclans.SimpleClans.lang;
@SuppressWarnings("unused")
public class ListTypeCompletion extends AbstractStaticCompletion {
public ListTypeCompletion(@NotNull SimpleClans plugin) {
super(plugin);
}
@Override
public @NotNull Collection<String> getCompletions() {
return Arrays.asList(
lang("list.type.size"), lang("list.type.kdr"), lang("list.type.name"),
lang("list.type.founded"), lang("list.type.active"));
}
@Override
public @NotNull String getId() {
return "clan_list_type";
}
}
@@ -0,0 +1,32 @@
package net.sacredlabyrinth.phaed.simpleclans.commands.completions;
import co.aikar.commands.BukkitCommandCompletionContext;
import co.aikar.commands.InvalidCommandArgument;
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
import java.util.Collection;
import java.util.stream.Collectors;
@SuppressWarnings("unused")
public class NonMembersCompletion extends AbstractSyncCompletion {
public NonMembersCompletion(@NotNull SimpleClans plugin) {
super(plugin);
}
@Override
public @NotNull String getId() {
return "non_members";
}
@Override
public Collection<String> getCompletions(BukkitCommandCompletionContext c) throws InvalidCommandArgument {
Player player = c.getPlayer();
return Bukkit.getOnlinePlayers().stream()
.filter(p -> clanManager.getClanByPlayerUniqueId(p.getUniqueId()) == null
&& (player == null || player.canSee(p)))
.map(Player::getName).collect(Collectors.toList());
}
}
Loaded 100 of 273 files, more files were not shown because too many files have changed in this diff. Show more