Merge changes

This commit is contained in:
Telesphoreo 2021-09-29 14:58:12 -05:00
commit ac56845aa1
96 changed files with 3629 additions and 3086 deletions

7
.gitignore vendored
View file

@ -1,7 +1,4 @@
/.idea/artifacts /.idea/
/.idea/libraries
/.idea/workspace.xml
/.idea/modules.xml
/.idea/uiDesigner.xml
target/ target/
out/ out/
TFGuilds.iml

View file

@ -1,5 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4"> <module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
<component name="CheckStyle-IDEA-Module">
<option name="configuration">
<map />
</option>
</component>
<component name="FacetManager">
<facet type="minecraft" name="Minecraft">
<configuration>
<autoDetectTypes>
<platformType>SPIGOT</platformType>
</autoDetectTypes>
</configuration>
</facet>
</component>
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8"> <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
<output url="file://$MODULE_DIR$/target/classes" /> <output url="file://$MODULE_DIR$/target/classes" />
<output-test url="file://$MODULE_DIR$/target/test-classes" /> <output-test url="file://$MODULE_DIR$/target/test-classes" />
@ -16,16 +30,7 @@
<orderEntry type="library" scope="PROVIDED" name="Maven: com.google.code.gson:gson:2.8.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.16-R0.3" level="project" /> <orderEntry type="library" scope="PROVIDED" name="Maven: net.md-5:bungeecord-chat:1.16-R0.3" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.yaml:snakeyaml:1.26" level="project" /> <orderEntry type="library" scope="PROVIDED" name="Maven: org.yaml:snakeyaml:1.26" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: me.totalfreedom:TotalFreedomMod:2020.11.5" level="project" /> <orderEntry type="library" scope="PROVIDED" name="Maven: com.github.AtlasMediaGroup:TotalFreedomMod:development-0be2aa718f-1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: commons-io:commons-io:2.8.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.commons:commons-lang3:3.11" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: commons-codec:commons-codec:1.15" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: me.telesphoreo:mojangson:1.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.bstats:bstats-bukkit:1.7" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: io.papermc:paperlib:1.0.5" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: me.rayzr522:jsonmessage:1.0.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.reflections:reflections:0.9.12" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.javassist:javassist:3.27.0-GA" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.maven.plugins:maven-checkstyle-plugin:3.1.1" level="project" /> <orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.maven.plugins:maven-checkstyle-plugin:3.1.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.maven:maven-artifact:3.0" level="project" /> <orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.maven:maven-artifact:3.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.maven:maven-core:3.0" level="project" /> <orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.maven:maven-core:3.0" level="project" />
@ -55,6 +60,7 @@
<orderEntry type="library" scope="PROVIDED" name="Maven: xml-apis:xml-apis:1.3.04" level="project" /> <orderEntry type="library" scope="PROVIDED" name="Maven: xml-apis:xml-apis:1.3.04" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.httpcomponents:httpclient:4.0.2" level="project" /> <orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.httpcomponents:httpclient:4.0.2" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.httpcomponents:httpcore:4.0.1" level="project" /> <orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.httpcomponents:httpcore:4.0.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: commons-codec:commons-codec:1.3" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: commons-validator:commons-validator:1.3.1" level="project" /> <orderEntry type="library" scope="PROVIDED" name="Maven: commons-validator:commons-validator:1.3.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: commons-digester:commons-digester:1.6" level="project" /> <orderEntry type="library" scope="PROVIDED" name="Maven: commons-digester:commons-digester:1.6" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: commons-logging:commons-logging:1.0.4" level="project" /> <orderEntry type="library" scope="PROVIDED" name="Maven: commons-logging:commons-logging:1.0.4" level="project" />
@ -74,6 +80,7 @@
<orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.struts:struts-taglib:1.3.8" level="project" /> <orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.struts:struts-taglib:1.3.8" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.struts:struts-tiles:1.3.8" level="project" /> <orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.struts:struts-tiles:1.3.8" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.maven.doxia:doxia-integration-tools:1.6" level="project" /> <orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.maven.doxia:doxia-integration-tools:1.6" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: commons-io:commons-io:1.4" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.codehaus.plexus:plexus-container-default:1.0-alpha-9" level="project" /> <orderEntry type="library" scope="PROVIDED" name="Maven: org.codehaus.plexus:plexus-container-default:1.0-alpha-9" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: junit:junit:3.8.1" level="project" /> <orderEntry type="library" scope="PROVIDED" name="Maven: junit:junit:3.8.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: classworlds:classworlds:1.1-alpha-2" level="project" /> <orderEntry type="library" scope="PROVIDED" name="Maven: classworlds:classworlds:1.1-alpha-2" level="project" />

16
.idea/checkstyle-idea.xml Normal file
View file

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CheckStyle-IDEA">
<option name="configuration">
<map>
<entry key="checkstyle-version" value="8.39" />
<entry key="copy-libs" value="true" />
<entry key="location-0" value="BUNDLED:(bundled):Sun Checks" />
<entry key="location-1" value="BUNDLED:(bundled):Google Checks" />
<entry key="scan-before-checkin" value="false" />
<entry key="scanscope" value="JavaOnly" />
<entry key="suppress-errors" value="false" />
</map>
</option>
</component>
</project>

View file

@ -9,24 +9,6 @@
</value> </value>
</option> </option>
</JavaCodeStyleSettings> </JavaCodeStyleSettings>
<JetCodeStyleSettings>
<option name="PACKAGES_TO_USE_STAR_IMPORTS">
<value>
<package name="java.util" alias="false" withSubpackages="false" />
<package name="kotlinx.android.synthetic" alias="false" withSubpackages="true" />
<package name="io.ktor" alias="false" withSubpackages="true" />
</value>
</option>
<option name="PACKAGES_IMPORT_LAYOUT">
<value>
<package name="" alias="false" withSubpackages="true" />
<package name="java" alias="false" withSubpackages="true" />
<package name="javax" alias="false" withSubpackages="true" />
<package name="kotlin" alias="false" withSubpackages="true" />
<package name="" alias="true" withSubpackages="true" />
</value>
</option>
</JetCodeStyleSettings>
<codeStyleSettings language="JAVA"> <codeStyleSettings language="JAVA">
<option name="BRACE_STYLE" value="2" /> <option name="BRACE_STYLE" value="2" />
<option name="CLASS_BRACE_STYLE" value="2" /> <option name="CLASS_BRACE_STYLE" value="2" />

View file

@ -10,7 +10,7 @@
</profile> </profile>
</annotationProcessing> </annotationProcessing>
<bytecodeTargetLevel> <bytecodeTargetLevel>
<module name="TFGuilds" target="1.8" /> <module name="TFGuilds" target="11" />
</bytecodeTargetLevel> </bytecodeTargetLevel>
</component> </component>
</project> </project>

6
.idea/discord.xml Normal file
View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="DiscordProjectSettings">
<option name="show" value="PROJECT_FILES" />
</component>
</project>

View file

@ -1,5 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="ASMPluginConfiguration">
<asm skipDebug="false" skipFrames="false" skipCode="false" expandFrames="false" />
<groovy codeStyle="LEGACY" />
</component>
<component name="EntryPointsManager"> <component name="EntryPointsManager">
<list size="1"> <list size="1">
<item index="0" class="java.lang.String" itemvalue="org.bukkit.event.EventHandler" /> <item index="0" class="java.lang.String" itemvalue="org.bukkit.event.EventHandler" />

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="VcsDirectoryMappings"> <component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" /> <mapping directory="" vcs="Git" />
</component> </component>
</project> </project>

View file

@ -1 +0,0 @@
language: java

View file

@ -1,110 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
<component name="FacetManager">
<facet type="minecraft" name="Minecraft">
<configuration>
<autoDetectTypes>
<platformType>SPIGOT</platformType>
</autoDetectTypes>
</configuration>
</facet>
</component>
<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" />
<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.16.4-R0.1-SNAPSHOT" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: commons-lang:commons-lang:2.6" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.google.guava:guava:21.0" level="project" />
<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.16-R0.3" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.yaml:snakeyaml:1.26" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: me.totalfreedom:TotalFreedomMod:2020.9" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: commons-io:commons-io:2.7" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.commons:commons-lang3:3.11" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: commons-codec:commons-codec:1.9" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.github.TFPatches:TF-LibsDisguises:0cfa32159a" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.ow2.asm:asm:7.3.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.comphenix.protocol:ProtocolLib:4.5.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: cglib:cglib-nodep:3.2.5" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.comphenix.executors:BukkitExecutors:1.1-SNAPSHOT" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.spigotmc:spigot:1.16.1-R0.1-SNAPSHOT" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: me.rayzr522:jsonmessage:1.0.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.reflections:reflections:0.9.11" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.javassist:javassist:3.21.0-GA" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: javassist:javassist:3.12.1.GA" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.maven.plugins:maven-checkstyle-plugin:3.1.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.maven:maven-artifact:3.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.maven:maven-core:3.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.maven:maven-settings:3.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.maven:maven-settings-builder:3.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.maven:maven-repository-metadata:3.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.maven:maven-model-builder:3.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.maven:maven-aether-provider:3.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.sonatype.aether:aether-impl:1.7" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.sonatype.aether:aether-spi:1.7" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.sonatype.aether:aether-api:1.7" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.sonatype.aether:aether-util:1.7" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.sonatype.sisu:sisu-inject-plexus:1.4.2" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.sonatype.sisu:sisu-inject-bean:1.4.2" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.sonatype.sisu:sisu-guice:noaop:2.1.7" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.codehaus.plexus:plexus-classworlds:2.2.3" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.sonatype.plexus:plexus-sec-dispatcher:1.3" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.sonatype.plexus:plexus-cipher:1.4" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.maven:maven-model:3.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.maven:maven-plugin-api:3.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.maven.reporting:maven-reporting-api:3.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.maven.reporting:maven-reporting-impl:2.3" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.maven.shared:maven-shared-utils:0.6" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.google.code.findbugs:jsr305:2.0.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.maven.doxia:doxia-core:1.2" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: xerces:xercesImpl:2.9.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: xml-apis:xml-apis:1.3.04" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.httpcomponents:httpclient:4.0.2" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.httpcomponents:httpcore:4.0.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: commons-validator:commons-validator:1.3.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: commons-digester:commons-digester:1.6" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: commons-logging:commons-logging:1.0.4" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.maven.doxia:doxia-sink-api:1.4" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.maven.doxia:doxia-logging-api:1.4" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.maven.doxia:doxia-decoration-model:1.4" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.maven.doxia:doxia-site-renderer:1.4" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.maven.doxia:doxia-module-xhtml:1.4" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.maven.doxia:doxia-module-fml:1.4" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.codehaus.plexus:plexus-i18n:1.0-beta-7" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.velocity:velocity-tools:2.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: commons-chain:commons-chain:1.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: dom4j:dom4j:1.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: oro:oro:2.0.8" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: sslext:sslext:1.2-0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.struts:struts-core:1.3.8" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.struts:struts-taglib:1.3.8" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.struts:struts-tiles:1.3.8" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.maven.doxia:doxia-integration-tools:1.6" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.codehaus.plexus:plexus-container-default:1.0-alpha-9" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: junit:junit:3.8.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: classworlds:classworlds:1.1-alpha-2" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.codehaus.plexus:plexus-component-annotations:2.0.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.codehaus.plexus:plexus-resources:1.1.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.codehaus.plexus:plexus-utils:3.3.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.codehaus.plexus:plexus-interpolation:1.26" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.codehaus.plexus:plexus-velocity:1.2" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: com.puppycrawl.tools:checkstyle:8.29" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: info.picocli:picocli:4.1.4" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: antlr:antlr:2.7.7" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.antlr:antlr4-runtime:4.8-1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: commons-beanutils:commons-beanutils:1.9.4" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: net.sf.saxon:Saxon-HE:9.9.1-6" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.apache.velocity:velocity:1.7" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: commons-collections:commons-collections:3.2.2" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: javax.xml.bind:jaxb-api:2.3.1" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: javax.activation:javax.activation-api:1.2.0" level="project" />
<orderEntry type="library" scope="PROVIDED" name="Maven: org.projectlombok:lombok:1.18.14" level="project" />
</component>
</module>

19
nb-configuration.xml Normal file
View file

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<project-shared-configuration>
<!--
This file contains additional configuration written by modules in the NetBeans IDE.
The configuration is intended to be shared among all the users of project and
therefore it is assumed to be part of version control checkout.
Without this configuration present, some functionality in the IDE may be limited or fail altogether.
-->
<properties xmlns="http://www.netbeans.org/ns/maven-properties-data/1">
<!--
Properties that influence various parts of the IDE, especially code formatting and the like.
You can copy and paste the single properties, into the pom.xml file and the IDE will pick them up.
That way multiple projects can share the same settings (useful for formatting rules for example).
Any value defined here will override the pom.xml file value but is only applicable to the current project.
-->
<netbeans.hint.jdkPlatform>JDK_11</netbeans.hint.jdkPlatform>
<org-netbeans-modules-javascript2-requirejs.enabled>true</org-netbeans-modules-javascript2-requirejs.enabled>
</properties>
</project-shared-configuration>

28
pom.xml
View file

@ -6,7 +6,7 @@
<groupId>me.totalfreedom</groupId> <groupId>me.totalfreedom</groupId>
<artifactId>TFGuilds</artifactId> <artifactId>TFGuilds</artifactId>
<version>0.2.17</version> <version>2021.06-RC3</version>
<packaging>jar</packaging> <packaging>jar</packaging>
<name>TFGuilds</name> <name>TFGuilds</name>
@ -25,8 +25,8 @@
<artifactId>maven-compiler-plugin</artifactId> <artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version> <version>3.8.1</version>
<configuration> <configuration>
<source>1.8</source> <source>11</source>
<target>1.8</target> <target>11</target>
</configuration> </configuration>
</plugin> </plugin>
<plugin> <plugin>
@ -63,33 +63,13 @@
<id>spigotmc-repo</id> <id>spigotmc-repo</id>
<url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url> <url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url>
</repository> </repository>
<repository>
<id>sonatype</id>
<url>https://oss.sonatype.org/content/groups/public/</url>
</repository>
<repository>
<id>telesphoreo-repo</id>
<url>https://telesphoreo.me/repo/maven</url>
</repository>
</repositories> </repositories>
<dependencies> <dependencies>
<dependency> <dependency>
<groupId>org.spigotmc</groupId> <groupId>org.spigotmc</groupId>
<artifactId>spigot-api</artifactId> <artifactId>spigot-api</artifactId>
<version>1.16.4-R0.1-SNAPSHOT</version> <version>1.16.5-R0.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>me.totalfreedom</groupId>
<artifactId>TotalFreedomMod</artifactId>
<version>2020.11.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.16</version>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
</dependencies> </dependencies>

View file

@ -1,36 +1,23 @@
package me.totalfreedom.tfguilds; package me.totalfreedom.tfguilds;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import me.totalfreedom.tfguilds.config.ConfigEntry;
import me.totalfreedom.tfguilds.guild.Guild;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
public class Common public class Common
{ {
protected static TFGuilds plugin = TFGuilds.getPlugin();
public static final ChatColor PRIMARY = ConfigEntry.SCHEME_PRIMARY.getChatColor(); public static final String PREFIX = ChatColor.AQUA + "TFGuilds " + ChatColor.DARK_GRAY + "\u00BB " + ChatColor.GRAY;
public static final ChatColor SECONDARY = ConfigEntry.SCHEME_SECONDARY.getChatColor(); public static final String NOT_IN_GUILD = PREFIX + "You are not in a guild.";
public static final String NO_PERMS = ChatColor.RED + "No permission."; public static final String IN_GUILD = PREFIX + "You are already in a guild.";
public static final String PREFIX = "%s%[%p%TFGuilds%s%] %p%"; public static final String PLAYER_NOT_FOUND = PREFIX + "That player is not online.";
public static final String PNF = ChatColor.RED + "Player not found."; public static final String PLAYER_NOT_IN_GUILD = PREFIX + "That player is not in your guild.";
public static final String IN_GAME_ONLY = PREFIX + "You must be in-game to interact with guilds";
public static final String USAGE = PREFIX + "Correct usage: " + ChatColor.GOLD;
public static Map<Player, Guild> INVITES = new HashMap<>(); public static final TFMBridge tfmBridge = TFGuilds.getPlugin().getTfmBridge();
public static List<Player> IN_GUILD_CHAT = new ArrayList<>();
public static List<Player> CHAT_SPY = new ArrayList<>();
public static String tl(String in) public static List<Player> GUILD_CHAT = new ArrayList<>();
{ public static List<Player> GUILD_CHAT_SPY = new ArrayList<>();
return in.replaceAll("%p%", PRIMARY + "").replaceAll("%s%", SECONDARY + "");
}
public static void broadcast(String msg)
{
Bukkit.broadcastMessage(msg);
}
} }

View file

@ -1,66 +1,125 @@
package me.totalfreedom.tfguilds; package me.totalfreedom.tfguilds;
import me.totalfreedom.tfguilds.bridge.TFMBridge; import java.sql.SQLException;
import me.totalfreedom.tfguilds.command.GuildChatCommand; import java.util.ArrayList;
import me.totalfreedom.tfguilds.command.GuildChatSpyCommand; import java.util.Collections;
import me.totalfreedom.tfguilds.command.GuildCommand; import java.util.HashMap;
import me.totalfreedom.tfguilds.command.TFGuildsCommand; import java.util.List;
import java.util.Map;
import me.totalfreedom.tfguilds.command.*;
import me.totalfreedom.tfguilds.config.Config; import me.totalfreedom.tfguilds.config.Config;
import me.totalfreedom.tfguilds.guild.Guild;
import me.totalfreedom.tfguilds.guild.User;
import me.totalfreedom.tfguilds.listener.ChatListener; import me.totalfreedom.tfguilds.listener.ChatListener;
import me.totalfreedom.tfguilds.listener.JoinListener; import me.totalfreedom.tfguilds.listener.JoinListener;
import me.totalfreedom.tfguilds.util.GLog; import me.totalfreedom.tfguilds.sql.SQLDatabase;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.plugin.java.JavaPlugin;
public final class TFGuilds extends JavaPlugin public class TFGuilds extends JavaPlugin
{ {
private static TFGuilds plugin; private static TFGuilds plugin;
private Config config;
private SQLDatabase sqlDatabase;
private TFMBridge tfmBridge;
private Map<String, SubCommand> subCommands = new HashMap<>();
public static TFGuilds getPlugin() public static TFGuilds getPlugin()
{ {
return plugin; return plugin;
} }
public Config config;
public Config guilds;
public Config players;
public TFMBridge bridge;
@Override @Override
public void onEnable() public void onEnable()
{ {
plugin = this; this.plugin = this;
config = new Config("config.yml"); config = new Config("config.yml");
guilds = new Config("guilds.yml"); sqlDatabase = new SQLDatabase(this);
players = new Config("players.yml"); User.loadAll();
bridge = new TFMBridge(); Guild.loadAll();
loadCommands(); tfmBridge = new TFMBridge();
loadListeners(); tfmBridge.getTfm();
GLog.info("Enabled " + this.getDescription().getFullName()); new JoinListener(this);
new ChatListener(this);
loadSubCommands();
getCommand("tfguilds").setExecutor(new TFGuildsCommand());
getCommand("guild").setExecutor(new GuildCommand());
getCommand("guildchatspy").setExecutor(new GuildChatSpyCommand());
} }
@Override @Override
public void onDisable() public void onDisable()
{ {
plugin = null; try
{
getSQL().getConnection().close();
}
catch (SQLException throwables)
{
}
config.save(); config.save();
guilds.save();
players.save();
GLog.info("Disabled " + this.getDescription().getFullName());
} }
private void loadCommands() public Config getConfig()
{ {
this.getCommand("guild").setExecutor(new GuildCommand()); return config;
this.getCommand("guildchat").setExecutor(new GuildChatCommand());
this.getCommand("tfguilds").setExecutor(new TFGuildsCommand());
this.getCommand("guildchatspy").setExecutor(new GuildChatSpyCommand());
} }
private void loadListeners() public SQLDatabase getSQL()
{ {
PluginManager manager = this.getServer().getPluginManager(); return sqlDatabase;
manager.registerEvents(new ChatListener(), this); }
manager.registerEvents(new JoinListener(), this);
public TFMBridge getTfmBridge()
{
return tfmBridge;
}
public SubCommand getSubCommand(String name)
{
return subCommands.get(name);
}
public List<String> getSubCommands()
{
List<String> commands = new ArrayList<>(subCommands.keySet());
Collections.sort(commands);
return commands;
}
private void loadSubCommands()
{
subCommands.put("create", new CreateSubCommand());
subCommands.put("info", new InfoSubCommand());
subCommands.put("disband", new DisbandSubCommand());
subCommands.put("invite", new InviteSubCommand());
subCommands.put("join", new JoinSubCommand());
subCommands.put("leave", new LeaveSubCommand());
subCommands.put("warps", new WarpsSubCommand());
subCommands.put("setwarp", new SetWarpSubCommand());
subCommands.put("addmod", new AddModSubCommand());
subCommands.put("removemod", new RemoveModSubCommand());
subCommands.put("createrank", new CreateRankSubCommand());
subCommands.put("deleterank", new DeleteRankSubCommand());
subCommands.put("warp", new WarpSubCommand());
subCommands.put("setrank", new SetRankSubCommand());
subCommands.put("deletewarp", new DeleteWarpSubCommand());
subCommands.put("kick", new KickSubCommand());
subCommands.put("setowner", new SetOwnerSubCommand());
subCommands.put("setstate", new SetStateSubCommand());
subCommands.put("setdefaultrank", new SetDefaultRankSubCommand());
subCommands.put("home", new HomeSubCommand());
subCommands.put("tp", new TpSubCommand());
subCommands.put("roster", new RosterSubCommand());
subCommands.put("toggletag", new ToggleTagSubCommand());
subCommands.put("chat", new ChatSubCommand());
subCommands.put("motd", new MotdSubCommand());
subCommands.put("toggletags", new ToggleTagsSubCommand());
subCommands.put("tag", new TagSubCommand());
subCommands.put("list", new ListSubCommand());
subCommands.put("help", new HelpSubCommand());
subCommands.put("mchat", new ModChatSubCommand());
subCommands.put("notag", new NoTagSubCommand());
subCommands.put("togglechat", new ToggleChatSubCommand());
} }
} }

View file

@ -0,0 +1,142 @@
package me.totalfreedom.tfguilds;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import me.totalfreedom.tfguilds.util.ReflectionsHelper;
import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin;
public class TFMBridge
{
private final TFGuilds plugin = TFGuilds.getPlugin();
private /*TotalFreedomMod*/ Plugin tfm = null;
public /*TotalFreedomMod*/ Plugin getTfm()
{
if (tfm == null)
{
try
{
final Plugin tfmPlugin = plugin.getServer().getPluginManager().getPlugin("TotalFreedomMod");
if (tfmPlugin != null && tfmPlugin.isEnabled())
{
tfm = /*(TotalFreedomMod)*/tfmPlugin;
}
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
return tfm;
}
public boolean isAdmin(Player player)
{
if (getTfm() == null)
{
Bukkit.getLogger().warning("TotalFreedomMod not detected, checking operator status instead.");
return player.isOp();
}
Object al = ReflectionsHelper.getField(getTfm(), "al");
Method isAdmin = ReflectionsHelper.getMethod(al, "isAdmin", Player.class);
try
{
return (boolean)isAdmin.invoke(al, player) /*getTfm().al.isAdmin(player)*/;
}
catch (IllegalAccessException | InvocationTargetException e)
{
e.printStackTrace();
}
return false;
}
public boolean isAdmin(CommandSender sender)
{
if (getTfm() == null)
{
Bukkit.getLogger().warning("TotalFreedomMod not detected, checking operator status instead.");
return sender.isOp();
}
Object al = ReflectionsHelper.getField(getTfm(), "al");
Method isAdmin = ReflectionsHelper.getMethod(al, "isAdmin", CommandSender.class);
try
{
return (boolean)isAdmin.invoke(al, sender) /*getTfm().al.isAdmin(player)*/;
}
catch (IllegalAccessException | InvocationTargetException e)
{
e.printStackTrace();
}
return false;
}
public boolean isVanished(Player player)
{
if (getTfm() == null)
{
Bukkit.getLogger().warning("TotalFreedomMod not detected, vanish will return false.");
return false;
}
Object al = ReflectionsHelper.getField(getTfm(), "al");
Method isVanished = ReflectionsHelper.getMethod(al, "isVanished", String.class);
try
{
return (boolean)isVanished.invoke(al, player.getName()) /*getTfm().al.isVanished(player.getName)*/;
}
catch (IllegalAccessException | InvocationTargetException e)
{
e.printStackTrace();
}
return false;
}
public String getTag(Player player)
{
if (getTfm() == null)
{
return null;
}
Object pl = ReflectionsHelper.getField(getTfm(), "pl");
Method getPlayer = ReflectionsHelper.getMethod(pl, "getPlayer", Player.class);
try
{
Object fPlayer = getPlayer.invoke(pl, player);
Method getTag = ReflectionsHelper.getMethod(fPlayer, "getTag");
return (String)getTag.invoke(fPlayer);
}
catch (IllegalAccessException | InvocationTargetException e)
{
e.printStackTrace();
}
return "" /*ChatColor.stripColor(getTfm().pl.getPlayer(player).getTag())*/;
}
public void clearTag(Player player)
{
if (getTfm() == null)
{
return;
}
// getTfm().pl.getPlayer(player).setTag(null);
Object pl = ReflectionsHelper.getField(getTfm(), "pl");
Method getPlayer = ReflectionsHelper.getMethod(pl, "getPlayer", Player.class);
try
{
Object fPlayer = getPlayer.invoke(pl, player);
Method setTag = ReflectionsHelper.getMethod(fPlayer, "setTag", String.class);
setTag.invoke(fPlayer, (Object)null);
}
catch (IllegalAccessException | InvocationTargetException e)
{
e.printStackTrace();
}
}
}

View file

@ -1,67 +0,0 @@
package me.totalfreedom.tfguilds.bridge;
import me.totalfreedom.tfguilds.TFGuilds;
import me.totalfreedom.tfguilds.util.GLog;
import me.totalfreedom.totalfreedommod.TotalFreedomMod;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin;
public class TFMBridge
{
private final TFGuilds plugin;
private TotalFreedomMod tfmPlugin;
public TFMBridge()
{
this.plugin = TFGuilds.getPlugin();
this.tfmPlugin = null;
}
public TotalFreedomMod getTFM()
{
if (tfmPlugin == null)
{
try
{
final Plugin tfm = plugin.getServer().getPluginManager().getPlugin("TotalFreedomMod");
if (tfm != null && tfm instanceof TotalFreedomMod)
{
tfmPlugin = (TotalFreedomMod)tfm;
}
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
return tfmPlugin;
}
public boolean isAdmin(Player player)
{
if (getTFM() == null)
{
GLog.warn("TFM not detected on the server. Checking if player is OP...");
return player.isOp();
}
return getTFM().al.isAdmin(player);
}
public boolean isAdmin(CommandSender sender)
{
if (getTFM() == null)
{
GLog.warn("TFM not detected on the server. Checking if sender is OP...");
return sender.isOp();
}
return getTFM().al.isAdmin(sender);
}
public boolean isVanished(Player player)
{
return getTFM().al.isVanished(player.getName());
}
}

View file

@ -0,0 +1,70 @@
package me.totalfreedom.tfguilds.command;
import me.totalfreedom.tfguilds.Common;
import me.totalfreedom.tfguilds.guild.Guild;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class AddModSubCommand extends Common implements SubCommand
{
@Override
public void execute(CommandSender sender, Player playerSender, String[] args)
{
if (!(sender instanceof Player))
{
sender.sendMessage(IN_GAME_ONLY);
return;
}
if (args.length != 2)
{
sender.sendMessage(USAGE + "/g addmod <player>");
return;
}
Guild guild = Guild.getGuild(playerSender);
if (guild == null)
{
sender.sendMessage(NOT_IN_GUILD);
return;
}
Player player = Bukkit.getPlayer(args[1]);
if (player == null || tfmBridge.isVanished(player))
{
sender.sendMessage(PLAYER_NOT_FOUND);
return;
}
if (!guild.getOwner().equals(playerSender.getUniqueId()))
{
sender.sendMessage(PREFIX + "You must be the guild owner to add moderators!");
return;
}
if (playerSender.equals(player))
{
sender.sendMessage(PREFIX + "You are the owner of your guild, you are already a moderator.");
return;
}
if (!guild.isMember(player))
{
sender.sendMessage(PLAYER_NOT_IN_GUILD);
return;
}
if (guild.isModerator(player))
{
sender.sendMessage(PREFIX + "That player is already a moderator!");
return;
}
guild.addModerator(player);
sender.sendMessage(PREFIX + "Successfully added " + ChatColor.GOLD + player.getName() + ChatColor.GRAY + " as a moderator.");
player.sendMessage(PREFIX + "You are now a guild moderator for your guild!");
}
}

View file

@ -1,123 +0,0 @@
package me.totalfreedom.tfguilds.command;
import me.totalfreedom.tfguilds.Common;
import me.totalfreedom.tfguilds.guild.Guild;
import me.totalfreedom.tfguilds.util.GUtil;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.entity.Player;
public class AddModSubcommand extends Common implements CommandExecutor
{
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args)
{
if (args.length == 1 || args.length > 3)
{
sender.sendMessage(tl(PREFIX + "Proper usage: /g addmod <guild <player> | player>"));
return true;
}
if (args.length == 3)
{
if (!plugin.bridge.isAdmin(sender))
{
sender.sendMessage(NO_PERMS);
return true;
}
Guild guild = Guild.getGuild(args[1]);
if (guild == null)
{
sender.sendMessage(ChatColor.RED + "That guild doesn't exist!");
return true;
}
Player player = Bukkit.getPlayer(args[2]);
if (player == null)
{
sender.sendMessage(PNF);
return true;
}
if (!guild.hasMember(player.getName()))
{
sender.sendMessage(ChatColor.RED + "This player is not in the specified guild!");
return true;
}
if (guild.getOwner().equals(player.getName()))
{
sender.sendMessage(ChatColor.RED + "No need to make the owner a moderator!");
return true;
}
if (guild.hasModerator(player.getName()))
{
sender.sendMessage(ChatColor.RED + "This member is already a moderator for this guild!");
return true;
}
guild.addModerator(player.getName());
sender.sendMessage(tl(PREFIX + "Added %s%" + player.getName() + "%p% as a moderator for %s%" + GUtil.colorize(guild.getName()) + "%p%."));
guild.broadcast(tl("%s%" + player.getName() + " %p%has been made a moderator of your guild."));
guild.save();
return true;
}
if (sender instanceof ConsoleCommandSender)
{
sender.sendMessage(NO_PERMS);
return true;
}
Player player = (Player)sender;
Guild guild = Guild.getGuild(player);
if (guild == null)
{
sender.sendMessage(ChatColor.RED + "You aren't in a guild!");
return true;
}
if (!guild.getOwner().equals(player.getName()))
{
sender.sendMessage(ChatColor.RED + "You can't change who is a moderator in your guild!");
return true;
}
Player n = Bukkit.getPlayer(args[1]);
if (n == null)
{
sender.sendMessage(PNF);
return true;
}
if (guild.getOwner().equals(n.getName()))
{
sender.sendMessage(ChatColor.RED + "No need to make yourself a moderator!");
return true;
}
if (!guild.hasMember(n.getName()))
{
sender.sendMessage(ChatColor.RED + "This player is not in your guild!");
return true;
}
if (guild.hasModerator(n.getName()))
{
sender.sendMessage(ChatColor.RED + "This member is already a moderator for your guild!");
return true;
}
guild.addModerator(n.getName());
sender.sendMessage(tl(PREFIX + "Added %s%" + n.getName() + "%p% as a moderator for your guild."));
guild.broadcast(tl("%s%" + n.getName() + " %p%has been made a moderator of your guild."));
guild.save();
return true;
}
}

View file

@ -0,0 +1,46 @@
package me.totalfreedom.tfguilds.command;
import me.totalfreedom.tfguilds.Common;
import me.totalfreedom.tfguilds.guild.Guild;
import org.apache.commons.lang.StringUtils;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class ChatSubCommand extends Common implements SubCommand
{
@Override
public void execute(CommandSender sender, Player playerSender, String[] args)
{
if (!(sender instanceof Player))
{
sender.sendMessage(IN_GAME_ONLY);
return;
}
Guild guild = Guild.getGuild(playerSender);
if (guild == null)
{
sender.sendMessage(NOT_IN_GUILD);
return;
}
if (args.length >= 2)
{
String message = StringUtils.join(args, " ", 1, args.length);
guild.chat(playerSender, message, false);
return;
}
if (GUILD_CHAT.contains(playerSender))
{
GUILD_CHAT.remove(playerSender);
sender.sendMessage(PREFIX + "Guild chat " + ChatColor.GOLD + "disabled");
return;
}
GUILD_CHAT.add(playerSender);
sender.sendMessage(PREFIX + "Guild chat " + ChatColor.GOLD + "enabled");
}
}

View file

@ -1,50 +0,0 @@
package me.totalfreedom.tfguilds.command;
import me.totalfreedom.tfguilds.Common;
import me.totalfreedom.tfguilds.guild.Guild;
import org.apache.commons.lang.StringUtils;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.entity.Player;
public class ChatSubcommand extends Common implements CommandExecutor
{
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args)
{
if (sender instanceof ConsoleCommandSender)
{
sender.sendMessage(NO_PERMS);
return true;
}
Player player = (Player)sender;
Guild guild = Guild.getGuild(player);
if (guild == null)
{
sender.sendMessage(ChatColor.RED + "You aren't in a guild!");
return true;
}
if (args.length >= 2)
{
String message = StringUtils.join(args, " ", 1, args.length);
guild.chat(player.getName(), message);
return true;
}
if (IN_GUILD_CHAT.contains(player))
{
IN_GUILD_CHAT.remove(player);
sender.sendMessage(tl("%p%Guild chat toggled off."));
return true;
}
IN_GUILD_CHAT.add(player);
sender.sendMessage(tl("%p%Guild chat toggled on."));
return true;
}
}

View file

@ -0,0 +1,70 @@
package me.totalfreedom.tfguilds.command;
import me.totalfreedom.tfguilds.Common;
import me.totalfreedom.tfguilds.guild.Guild;
import me.totalfreedom.tfguilds.util.GUtil;
import org.apache.commons.lang.StringUtils;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class CreateRankSubCommand extends Common implements SubCommand
{
@Override
public void execute(CommandSender sender, Player playerSender, String[] args)
{
if (!(sender instanceof Player))
{
sender.sendMessage(IN_GAME_ONLY);
return;
}
if (args.length < 2)
{
sender.sendMessage(USAGE + " /g createrank <name>");
return;
}
Guild guild = Guild.getGuild(playerSender);
if (guild == null)
{
sender.sendMessage(NOT_IN_GUILD);
return;
}
if (!guild.getOwner().equals(playerSender.getUniqueId()))
{
sender.sendMessage(PREFIX + "Only the guild owner can create ranks for the guild!");
return;
}
String name = StringUtils.join(args, " ", 1, args.length);
if (!StringUtils.isAlphanumericSpace(name) || name.isBlank())
{
sender.sendMessage(PREFIX + "The rank name must be alphanumeric!");
return;
}
if (name.length() > 15)
{
sender.sendMessage(PREFIX + "The rank name cannot go over 15 characters limit.");
return;
}
if (GUtil.containsBlacklistedWord(name))
{
sender.sendMessage(PREFIX + "The guild name contains a blacklisted word.");
return;
}
if (guild.hasRank(name))
{
sender.sendMessage(PREFIX + "That rank already exists!");
return;
}
guild.createRank(name);
sender.sendMessage(PREFIX + "Successfully created a new rank " + ChatColor.GOLD + name);
}
}

View file

@ -1,87 +0,0 @@
package me.totalfreedom.tfguilds.command;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import me.totalfreedom.tfguilds.Common;
import me.totalfreedom.tfguilds.guild.Guild;
import me.totalfreedom.tfguilds.util.GUtil;
import org.apache.commons.lang.StringUtils;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.entity.Player;
public class CreateRankSubcommand extends Common implements CommandExecutor
{
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args)
{
if (sender instanceof ConsoleCommandSender)
{
sender.sendMessage(NO_PERMS);
return true;
}
if (args.length < 2)
{
sender.sendMessage(tl(PREFIX + "Proper usage: /g createrank <name>"));
return true;
}
Player player = (Player)sender;
Guild guild = Guild.getGuild(player);
if (guild == null)
{
sender.sendMessage(ChatColor.RED + "You aren't in a guild!");
return true;
}
if (!guild.getOwner().equals(player.getName()))
{
sender.sendMessage(ChatColor.RED + "You can't create ranks for your guild!");
return true;
}
String rank = StringUtils.join(args, " ", 1, args.length);
for (String blacklisted : GUtil.BLACKLISTED_NAMES_AND_TAGS)
{
if (rank.equalsIgnoreCase(blacklisted))
{
if (!plugin.bridge.isAdmin(player))
{
player.sendMessage(ChatColor.RED + "You may not use that name.");
return true;
}
}
}
Pattern pattern = Pattern.compile("^[A-Za-z0-9? ,_-]+$");
Matcher matcher = pattern.matcher(rank);
if (!matcher.matches())
{
sender.sendMessage(ChatColor.RED + "Guild rank names must be alphanumeric.");
return true;
}
if (rank.length() > 15)
{
sender.sendMessage(ChatColor.RED + "Guild rank names may not be over 15 characters.");
return true;
}
if (guild.hasRank(rank))
{
sender.sendMessage(ChatColor.RED + "A rank of that name already exists in the guild!");
return true;
}
guild.addRank(rank);
sender.sendMessage(tl(PREFIX + "Created a new rank named %s%" + rank + "%p% for your guild."));
guild.save();
return true;
}
}

View file

@ -0,0 +1,65 @@
package me.totalfreedom.tfguilds.command;
import me.totalfreedom.tfguilds.Common;
import me.totalfreedom.tfguilds.guild.Guild;
import me.totalfreedom.tfguilds.util.GUtil;
import org.apache.commons.lang.StringUtils;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class CreateSubCommand extends Common implements SubCommand
{
@Override
public void execute(CommandSender sender, Player playerSender, String[] args)
{
if (!(sender instanceof Player))
{
sender.sendMessage(IN_GAME_ONLY);
return;
}
if (args.length < 2)
{
sender.sendMessage(USAGE + "/g create <name>");
return;
}
if (Guild.isAlreadyMember(playerSender))
{
sender.sendMessage(IN_GUILD);
return;
}
String name = StringUtils.join(args, " ", 1, args.length);
if (!StringUtils.isAlphanumericSpace(name) || name.isBlank())
{
sender.sendMessage(PREFIX + "The guild name must be alphanumeric.");
return;
}
if (name.length() > 30)
{
sender.sendMessage(PREFIX + "The guild name cannot go over 30 characters limit.");
return;
}
if (Guild.hasGuild(name))
{
sender.sendMessage(PREFIX + "The guild name is already taken.");
return;
}
if (GUtil.containsBlacklistedWord(name))
{
sender.sendMessage(PREFIX + "The guild name contains a blacklisted word.");
return;
}
Guild.create(playerSender, name);
sender.sendMessage(PREFIX + "The guild " + ChatColor.GOLD + name + ChatColor.GRAY + " has been created.");
Bukkit.broadcastMessage(PREFIX + ChatColor.GOLD + sender.getName() + ChatColor.GRAY + " has created a guild " + ChatColor.GOLD + name);
}
}

View file

@ -1,84 +0,0 @@
package me.totalfreedom.tfguilds.command;
import me.totalfreedom.tfguilds.Common;
import me.totalfreedom.tfguilds.guild.Guild;
import me.totalfreedom.tfguilds.util.GUtil;
import org.apache.commons.lang.StringUtils;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.entity.Player;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class CreateSubcommand extends Common implements CommandExecutor
{
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args)
{
if (sender instanceof ConsoleCommandSender)
{
sender.sendMessage(NO_PERMS);
return true;
}
if (args.length < 2)
{
sender.sendMessage(tl(PREFIX + "Proper usage: /g create <name>"));
return true;
}
Player player = (Player)sender;
String name = StringUtils.join(args, " ", 1, args.length);
String identifier = GUtil.flatten(name);
if (Guild.isInGuild(player))
{
sender.sendMessage(ChatColor.RED + "You are already in a guild!");
return true;
}
Pattern pattern = Pattern.compile("^[A-Za-z0-9? ,_-]+$");
Matcher matcher = pattern.matcher(name);
if (!matcher.matches())
{
sender.sendMessage(ChatColor.RED + "Guild names must be alphanumeric.");
return true;
}
if (name.length() > 30)
{
sender.sendMessage(ChatColor.RED + "Your guild name may not be over 30 characters.");
return true;
}
if (Guild.guildExists(identifier))
{
sender.sendMessage(ChatColor.RED + "A guild with a name similar to yours already exists!");
return true;
}
for (String blacklisted : GUtil.BLACKLISTED_NAMES_AND_TAGS)
{
if (name.equalsIgnoreCase(blacklisted))
{
if (!plugin.bridge.isAdmin(player))
{
player.sendMessage(ChatColor.RED + "You may not use that name.");
return true;
}
}
}
Guild.createGuild(identifier, name, player);
plugin.players.set(player.getName() + ".tag", true);
sender.sendMessage(tl(PREFIX + "Created a guild named \"" + GUtil.colorize(name) + "%p%\"!"));
broadcast(GUtil.colorize(tl("%p%" + sender.getName() + " has created guild %p%&l" + name)));
return true;
}
}

View file

@ -0,0 +1,51 @@
package me.totalfreedom.tfguilds.command;
import me.totalfreedom.tfguilds.Common;
import me.totalfreedom.tfguilds.guild.Guild;
import org.apache.commons.lang.StringUtils;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class DeleteRankSubCommand extends Common implements SubCommand
{
@Override
public void execute(CommandSender sender, Player playerSender, String[] args)
{
if (!(sender instanceof Player))
{
sender.sendMessage(IN_GAME_ONLY);
return;
}
if (args.length < 2)
{
sender.sendMessage(USAGE + "/g deleterank <name>");
return;
}
Guild guild = Guild.getGuild(playerSender);
if (guild == null)
{
sender.sendMessage(PREFIX + "You are not in a guild!");
return;
}
if (!guild.getOwner().equals(playerSender.getUniqueId()))
{
sender.sendMessage(PREFIX + "Only the guild owner can delete ranks for the guild!");
return;
}
String name = StringUtils.join(args, " ", 1, args.length);
if (!guild.hasRank(name))
{
sender.sendMessage(PREFIX + "That rank does not exist!");
return;
}
guild.deleteRank(name);
sender.sendMessage(PREFIX + "Successfully deleted a rank " + ChatColor.GOLD + name);
}
}

View file

@ -1,63 +0,0 @@
package me.totalfreedom.tfguilds.command;
import me.totalfreedom.tfguilds.Common;
import me.totalfreedom.tfguilds.guild.Guild;
import org.apache.commons.lang.StringUtils;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.entity.Player;
public class DeleteRankSubcommand extends Common implements CommandExecutor
{
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args)
{
if (sender instanceof ConsoleCommandSender)
{
sender.sendMessage(NO_PERMS);
return true;
}
if (args.length < 2)
{
sender.sendMessage(tl(PREFIX + "Proper usage: /g deleterank <rank>"));
return true;
}
Player player = (Player)sender;
Guild guild = Guild.getGuild(player);
if (guild == null)
{
sender.sendMessage(ChatColor.RED + "You aren't in a guild!");
return true;
}
if (!guild.getOwner().equals(player.getName()))
{
sender.sendMessage(ChatColor.RED + "You can't delete ranks from your guild!");
return true;
}
String rank = StringUtils.join(args, " ", 1, args.length);
if (!guild.hasRank(rank))
{
sender.sendMessage(ChatColor.RED + "A rank of that name does not exist in the guild!");
return true;
}
guild.removeRank(rank);
if (guild.hasDefaultRank() && rank.equals(guild.getDefaultRank()))
{
guild.setDefaultRank(null);
guild.save();
}
sender.sendMessage(tl(PREFIX + "Deleted the rank named %s%" + rank + "%p% in your guild."));
guild.save();
return true;
}
}

View file

@ -0,0 +1,51 @@
package me.totalfreedom.tfguilds.command;
import me.totalfreedom.tfguilds.Common;
import me.totalfreedom.tfguilds.guild.Guild;
import org.apache.commons.lang.StringUtils;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class DeleteWarpSubCommand extends Common implements SubCommand
{
@Override
public void execute(CommandSender sender, Player playerSender, String[] args)
{
if (!(sender instanceof Player))
{
sender.sendMessage(IN_GAME_ONLY);
return;
}
if (args.length < 2)
{
sender.sendMessage(USAGE + "/g deletewarp <name>");
return;
}
Guild guild = Guild.getGuild(playerSender);
if (guild == null)
{
sender.sendMessage(NOT_IN_GUILD);
return;
}
if (!guild.isModerator(playerSender))
{
sender.sendMessage(PREFIX + "You must be a guild moderator or owner to create a warp for the guild.");
return;
}
String name = StringUtils.join(args, " ", 1, args.length);
if (!guild.hasWarp(name))
{
sender.sendMessage(PREFIX + "That warp does not exist.");
return;
}
guild.removeWarp(name);
sender.sendMessage(PREFIX + "Successfully removed a warp " + ChatColor.GOLD + name);
}
}

View file

@ -0,0 +1,61 @@
package me.totalfreedom.tfguilds.command;
import me.totalfreedom.tfguilds.Common;
import me.totalfreedom.tfguilds.guild.Guild;
import org.apache.commons.lang.StringUtils;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class DisbandSubCommand extends Common implements SubCommand
{
@Override
public void execute(CommandSender sender, Player playerSender, String[] args)
{
if (!(sender instanceof Player))
{
sender.sendMessage(IN_GAME_ONLY);
return;
}
if (args.length >= 2)
{
if (!tfmBridge.isAdmin(sender))
{
sender.sendMessage(PREFIX + "You do not have permission.");
return;
}
Guild guild = Guild.getGuild(StringUtils.join(args, " ", 1, args.length));
if (guild == null)
{
sender.sendMessage(PREFIX + "That guild does not exist.");
return;
}
guild.disband();
sender.sendMessage(PREFIX + "The guild " + ChatColor.GOLD + guild.getName() + ChatColor.GRAY + " has been disbanded.");
Bukkit.broadcastMessage(PREFIX + ChatColor.GOLD + sender.getName() + ChatColor.GRAY + " has disbanded the guild " + ChatColor.GOLD + guild.getName());
return;
}
Guild guild = Guild.getGuild(playerSender);
if (guild == null)
{
sender.sendMessage(NOT_IN_GUILD);
return;
}
if (!guild.getOwner().equals(playerSender.getUniqueId()))
{
sender.sendMessage(PREFIX + "You are not the guild owner!");
return;
}
sender.sendMessage(PREFIX + "The guild " + ChatColor.GOLD + guild.getName() + ChatColor.GRAY + " has been disbanded.");
Bukkit.broadcastMessage(PREFIX + ChatColor.GOLD + sender.getName() + ChatColor.GRAY + " has disbanded the guild " + ChatColor.GOLD + guild.getName());
guild.disband();
}
}

View file

@ -1,78 +0,0 @@
package me.totalfreedom.tfguilds.command;
import me.totalfreedom.tfguilds.Common;
import me.totalfreedom.tfguilds.guild.Guild;
import me.totalfreedom.tfguilds.util.GLog;
import me.totalfreedom.tfguilds.util.GUtil;
import org.apache.commons.lang.StringUtils;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.entity.Player;
public class DisbandSubcommand extends Common implements CommandExecutor
{
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args)
{
if (args.length > 2)
{
sender.sendMessage(tl(PREFIX + "Proper usage: /g disband [name]"));
return true;
}
if (args.length == 2)
{
if (!plugin.bridge.isAdmin(sender))
{
sender.sendMessage(NO_PERMS);
return true;
}
Guild guild = Guild.getGuild(GUtil.flatten(StringUtils.join(args, " ", 1, args.length)));
if (guild == null)
{
sender.sendMessage(ChatColor.RED + "That guild doesn't exist!");
return true;
}
String n = guild.getName();
GLog.info("Removing guilds.yml data for " + n);
guild.disband();
GLog.info(sender.getName() + " deleted guild " + guild.getName());
sender.sendMessage(tl(PREFIX + "Disbanded \"" + GUtil.colorize(n) + "%p%\"."));
broadcast(GUtil.colorize(tl("%p%" + sender.getName() + " has disbanded guild %p%&l" + guild.getName())));
return true;
}
if (sender instanceof ConsoleCommandSender)
{
sender.sendMessage(NO_PERMS);
return true;
}
Player player = (Player)sender;
if (!Guild.isInGuild(player))
{
sender.sendMessage(ChatColor.RED + "You aren't in a guild!");
return true;
}
Guild guild = Guild.getGuild(player);
if (!guild.getOwner().equals(player.getName()))
{
sender.sendMessage(ChatColor.RED + "You are not the owner of this guild!");
return true;
}
GLog.info("Removing guilds.yml data for " + guild.getName());
guild.disband();
GLog.info(player.getName() + " deleted guild " + guild.getName());
sender.sendMessage(tl(PREFIX + "You have disbanded your guild!"));
broadcast(GUtil.colorize(tl("%p%&l" + guild.getName() + "%p% has been disbanded")));
return true;
}
}

View file

@ -1,50 +0,0 @@
package me.totalfreedom.tfguilds.command;
import me.totalfreedom.tfguilds.Common;
import me.totalfreedom.tfguilds.guild.Guild;
import org.apache.commons.lang.StringUtils;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.entity.Player;
public class GuildChatCommand extends Common implements CommandExecutor
{
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args)
{
if (sender instanceof ConsoleCommandSender)
{
sender.sendMessage(NO_PERMS);
return true;
}
Player player = (Player)sender;
Guild guild = Guild.getGuild(player);
if (guild == null)
{
sender.sendMessage(ChatColor.RED + "You aren't in a guild!");
return true;
}
if (args.length >= 1)
{
String message = StringUtils.join(args, " ", 0, args.length);
guild.chat(player.getName(), message);
return true;
}
if (IN_GUILD_CHAT.contains(player))
{
IN_GUILD_CHAT.remove(player);
sender.sendMessage(tl("%p%Guild chat toggled off."));
return true;
}
IN_GUILD_CHAT.add(player);
sender.sendMessage(tl("%p%Guild chat toggled on."));
return true;
}
}

View file

@ -1,39 +1,40 @@
package me.totalfreedom.tfguilds.command; package me.totalfreedom.tfguilds.command;
import me.totalfreedom.tfguilds.Common; import me.totalfreedom.tfguilds.Common;
import org.bukkit.ChatColor;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
public class GuildChatSpyCommand extends Common implements CommandExecutor public class GuildChatSpyCommand extends Common implements CommandExecutor
{ {
@Override @Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args)
{ {
if (sender instanceof ConsoleCommandSender) if (!(sender instanceof Player))
{ {
sender.sendMessage(NO_PERMS); sender.sendMessage(PREFIX + "Console can already view guild chat.");
return true; return true;
} }
if (!plugin.bridge.isAdmin(sender)) if (!tfmBridge.isAdmin(sender))
{ {
sender.sendMessage(NO_PERMS); sender.sendMessage(PREFIX + "You do not have the permission.");
return true; return true;
} }
Player player = (Player)sender; Player player = (Player)sender;
if (CHAT_SPY.contains(player)) if (GUILD_CHAT_SPY.contains(player))
{ {
CHAT_SPY.remove(player); GUILD_CHAT_SPY.remove(player);
sender.sendMessage(tl(PREFIX + "%p%Global guild chat spy disabled.")); sender.sendMessage(PREFIX + ChatColor.GOLD + "Disabled " + ChatColor.GRAY + "guild chat spy.");
return true; return true;
} }
CHAT_SPY.add(player); GUILD_CHAT_SPY.add(player);
sender.sendMessage(tl(PREFIX + "%p%Global guild chat spy enabled.")); sender.sendMessage(PREFIX + ChatColor.GOLD + "Enabled " + ChatColor.GRAY + "guild chat spy.");
return true; return true;
} }
} }

View file

@ -4,92 +4,56 @@ import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import me.totalfreedom.tfguilds.Common; import me.totalfreedom.tfguilds.Common;
import me.totalfreedom.tfguilds.TFGuilds;
import me.totalfreedom.tfguilds.guild.Guild; import me.totalfreedom.tfguilds.guild.Guild;
import me.totalfreedom.tfguilds.util.GUtil; import me.totalfreedom.tfguilds.util.GUtil;
import org.bukkit.ChatColor;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.command.TabCompleter; import org.bukkit.command.TabCompleter;
import org.bukkit.entity.Player;
public class GuildCommand extends Common implements CommandExecutor, TabCompleter public class GuildCommand extends Common implements CommandExecutor, TabCompleter
{ {
@Override @Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args)
{ {
Player playerSender = null;
if (sender instanceof Player)
{
playerSender = (Player)sender;
}
if (args.length >= 1) if (args.length >= 1)
{ {
switch (args[0].toLowerCase()) String name = args[0].toLowerCase();
SubCommand command = TFGuilds.getPlugin().getSubCommand(name);
if (command != null)
{ {
case "list": command.execute(sender, playerSender, args);
return new ListSubcommand().onCommand(sender, command, label, args); }
case "help": else
return new HelpSubcommand().onCommand(sender, command, label, args); {
case "create": sender.sendMessage(PREFIX + "Unknown subcommand, do " + ChatColor.GOLD + "/g help" + ChatColor.GRAY + " for help.");
return new CreateSubcommand().onCommand(sender, command, label, args);
case "disband":
return new DisbandSubcommand().onCommand(sender, command, label, args);
case "invite":
return new InviteSubcommand().onCommand(sender, command, label, args);
case "addmod":
return new AddModSubcommand().onCommand(sender, command, label, args);
case "removemod":
return new RemoveModSubcommand().onCommand(sender, command, label, args);
case "setowner":
return new SetOwnerSubcommand().onCommand(sender, command, label, args);
case "setstate":
return new SetStateSubcommand().onCommand(sender, command, label, args);
case "kick":
return new KickSubcommand().onCommand(sender, command, label, args);
case "leave":
return new LeaveSubcommand().onCommand(sender, command, label, args);
case "tp":
return new TPSubcommand().onCommand(sender, command, label, args);
case "info":
return new InfoSubcommand().onCommand(sender, command, label, args);
case "tag":
return new TagSubcommand().onCommand(sender, command, label, args);
case "chat":
return new ChatSubcommand().onCommand(sender, command, label, args);
case "join":
return new JoinSubcommand().onCommand(sender, command, label, args);
case "rename":
return new RenameSubcommand().onCommand(sender, command, label, args);
case "createrank":
return new CreateRankSubcommand().onCommand(sender, command, label, args);
case "deleterank":
return new DeleteRankSubcommand().onCommand(sender, command, label, args);
case "setrank":
return new SetRankSubcommand().onCommand(sender, command, label, args);
case "motd":
return new MOTDSubcommand().onCommand(sender, command, label, args);
case "home":
return new HomeSubcommand().onCommand(sender, command, label, args);
case "roster":
return new RosterSubcommand().onCommand(sender, command, label, args);
case "setdefaultrank":
return new SetDefaultRankSubcommand().onCommand(sender, command, label, args);
case "toggletags":
return new ToggleTagsSubcommand().onCommand(sender, command, label, args);
case "toggletag":
return new ToggleTagSubcommand().onCommand(sender, command, label, args);
} }
sender.sendMessage(tl(PREFIX + "Unknown command - Run /g help if you need help"));
return true; return true;
} }
return new HelpSubcommand().onCommand(sender, command, label, args); return true;
} }
@Override @Override
public List<String> onTabComplete(CommandSender sender, Command command, String label, String[] args) public List<String> onTabComplete(CommandSender sender, Command cmd, String label, String[] args)
{ {
Guild guild = Guild.getGuild(sender); Guild guild = null;
if (sender instanceof Player)
{
guild = Guild.getGuild((Player)sender);
}
if (args.length == 1) if (args.length == 1)
{ {
return Arrays.asList("addmod", "chat", "createrank", "create", return TFGuilds.getPlugin().getSubCommands();
"deleterank", "disband", "help", "home", "info", "invite",
"join", "kick", "leave", "list", "motd", "removemod", "rename",
"roster", "setowner", "setrank", "setstate", "tag", "tp", "setdefaultrank",
"toggletags", "toggletag");
} }
else if (args.length == 2) else if (args.length == 2)
{ {
@ -97,24 +61,24 @@ public class GuildCommand extends Common implements CommandExecutor, TabComplete
{ {
case "home": case "home":
{ {
return Arrays.asList("set"); return Collections.singletonList("set");
} }
case "info": case "info":
case "join": case "join":
case "roster": case "roster":
{ {
return Guild.getGuildList(); return Guild.getGuildNames();
} }
case "toggletag": case "toggletag":
{ {
if (!plugin.bridge.isAdmin(sender)) if (!tfmBridge.isAdmin(sender))
{ {
return Collections.emptyList(); return Collections.emptyList();
} }
return GUtil.getPlayerList(); return GUtil.getPlayerNames();
} }
case "motd": case "motd":
@ -125,18 +89,18 @@ public class GuildCommand extends Common implements CommandExecutor, TabComplete
case "setstate": case "setstate":
{ {
return Arrays.asList("OPEN", "INVITE", "CLOSED"); return Arrays.asList("OPEN", "CLOSED", "INVITE_ONLY");
} }
case "invite": case "invite":
{ {
return GUtil.getPlayerList(); return GUtil.getPlayerNames();
} }
case "deleterank": case "deleterank":
case "setdefaultrank": case "setdefaultrank":
{ {
if (guild.getOwner().equals(sender.getName())) if (guild != null && guild.getOwner().equals(((Player)sender).getUniqueId()))
{ {
return guild.getRankNames(); return guild.getRankNames();
} }
@ -144,24 +108,24 @@ public class GuildCommand extends Common implements CommandExecutor, TabComplete
case "tp": case "tp":
{ {
return guild.getMembers(); return guild != null ? guild.getMemberNames() : Collections.emptyList();
} }
case "disband": case "disband":
{ {
if (!plugin.bridge.isAdmin(sender)) if (!tfmBridge.isAdmin(sender))
{ {
return Collections.emptyList(); return Collections.emptyList();
} }
return Guild.getGuildList(); return Guild.getGuildNames();
} }
case "kick": case "kick":
{ {
if (guild.hasModerator(sender.getName())) if (guild != null && guild.isModerator((Player)sender))
{ {
return guild.getOnlyMembers(); return guild.getMemberOnlyNames();
} }
} }
@ -169,11 +133,16 @@ public class GuildCommand extends Common implements CommandExecutor, TabComplete
case "addmod": case "addmod":
case "setowner": case "setowner":
{ {
if (guild.getOwner().equals(sender.getName())) if (guild != null && guild.getOwner().equals(((Player)sender).getUniqueId()))
{ {
return guild.getMembers(); return guild.getMemberNames();
} }
} }
default:
{
return Collections.emptyList();
}
} }
} }
return Collections.emptyList(); return Collections.emptyList();

View file

@ -0,0 +1,22 @@
package me.totalfreedom.tfguilds.command;
import me.totalfreedom.tfguilds.Common;
import me.totalfreedom.tfguilds.TFGuilds;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class HelpSubCommand extends Common implements SubCommand
{
@Override
public void execute(CommandSender sender, Player playerSender, String[] args)
{
sender.sendMessage(PREFIX + "Command List");
for (String command : TFGuilds.getPlugin().getSubCommands())
{
sender.sendMessage(ChatColor.GRAY + " - " + ChatColor.GOLD + command);
}
}
}

View file

@ -1,42 +0,0 @@
package me.totalfreedom.tfguilds.command;
import me.totalfreedom.tfguilds.Common;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
public class HelpSubcommand extends Common implements CommandExecutor
{
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args)
{
sender.sendMessage(tl("%s%[%p%TFGuilds%s%] %p%Command List"));
sender.sendMessage(tl("%s% - %p%list"));
sender.sendMessage(tl("%s% - %p%help"));
sender.sendMessage(tl("%s% - %p%create <name>"));
sender.sendMessage(tl("%s% - %p%join <guild>"));
sender.sendMessage(tl("%s% - %p%disband [name]"));
sender.sendMessage(tl("%s% - %p%invite <player>"));
sender.sendMessage(tl("%s% - %p%addmod <guild <player> | player>"));
sender.sendMessage(tl("%s% - %p%removemod <guild <name> | name>"));
sender.sendMessage(tl("%s% - %p%setowner <guild <player> | player>"));
sender.sendMessage(tl("%s% - %p%kick <guild <player> | player>"));
sender.sendMessage(tl("%s% - %p%leave"));
sender.sendMessage(tl("%s% - %p%tp <player>"));
sender.sendMessage(tl("%s% - %p%info [guild | player]"));
sender.sendMessage(tl("%s% - %p%tag <set <tag> | clear>"));
sender.sendMessage(tl("%s% - %p%rename <name>"));
sender.sendMessage(tl("%s% - %p%createrank <name>"));
sender.sendMessage(tl("%s% - %p%deleterank <rank>"));
sender.sendMessage(tl("%s% - %p%setrank <player> <rank | none>"));
sender.sendMessage(tl("%s% - %p%motd <set <motd> | clear>"));
sender.sendMessage(tl("%s% - %p%home [set]"));
sender.sendMessage(tl("%s% - %p%chat [message]"));
sender.sendMessage(tl("%s% - %p%roster [guild | player]"));
sender.sendMessage(tl("%s% - %p%setstate <open | invite | closed>"));
sender.sendMessage(tl("%s% - %p%setdefaultrank <rank | none>"));
sender.sendMessage(tl("%s% - %p%toggletags"));
sender.sendMessage(tl("%s% - %p%toggletag [player]"));
return true;
}
}

View file

@ -0,0 +1,56 @@
package me.totalfreedom.tfguilds.command;
import me.totalfreedom.tfguilds.Common;
import me.totalfreedom.tfguilds.guild.Guild;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class HomeSubCommand extends Common implements SubCommand
{
@Override
public void execute(CommandSender sender, Player playerSender, String[] args)
{
if (!(sender instanceof Player))
{
sender.sendMessage(IN_GAME_ONLY);
return;
}
if (args.length > 2)
{
sender.sendMessage(USAGE + "/g home [set]");
return;
}
Guild guild = Guild.getGuild(playerSender);
if (guild == null)
{
sender.sendMessage(NOT_IN_GUILD);
return;
}
if (args.length == 2)
{
if (args[1].equalsIgnoreCase("set"))
{
if (!guild.isModerator(playerSender))
{
sender.sendMessage(PREFIX + "Only guild moderators can set guild's home location");
return;
}
guild.setHome(playerSender.getLocation());
sender.sendMessage(PREFIX + "Successfully set guild's home to your location");
}
else
{
sender.sendMessage(USAGE + "/g home [set]");
}
return;
}
playerSender.teleport(guild.getHome());
sender.sendMessage(PREFIX + "Teleported to your guild's home!");
}
}

View file

@ -1,65 +0,0 @@
package me.totalfreedom.tfguilds.command;
import me.totalfreedom.tfguilds.Common;
import me.totalfreedom.tfguilds.guild.Guild;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.entity.Player;
public class HomeSubcommand extends Common implements CommandExecutor
{
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args)
{
if (args.length > 2)
{
sender.sendMessage(tl(PREFIX + "Proper usage: /g home [set]"));
return true;
}
if (sender instanceof ConsoleCommandSender)
{
sender.sendMessage(NO_PERMS);
return true;
}
Player player = (Player)sender;
Guild guild = Guild.getGuild(player);
if (guild == null)
{
sender.sendMessage(ChatColor.RED + "You aren't in a guild!");
return true;
}
if (args.length == 2)
{
if (args[1].equalsIgnoreCase("set"))
{
if (!guild.hasModerator(player.getName()))
{
sender.sendMessage(ChatColor.RED + "You can't modify your guild's home!");
return true;
}
guild.setHome(player.getLocation());
guild.save();
sender.sendMessage(tl(PREFIX + "Set your current location as the new home of your guild%p%."));
return true;
}
return false;
}
if (!guild.hasHome())
{
sender.sendMessage(ChatColor.RED + "Your guild doesn't have a home!");
return true;
}
player.teleport(guild.getHome());
sender.sendMessage(tl("%p%Teleported you to your guild's home!"));
return true;
}
}

View file

@ -0,0 +1,55 @@
package me.totalfreedom.tfguilds.command;
import me.totalfreedom.tfguilds.Common;
import me.totalfreedom.tfguilds.guild.Guild;
import org.apache.commons.lang.StringUtils;
import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class InfoSubCommand extends Common implements SubCommand
{
@Override
public void execute(CommandSender sender, Player playerSender, String[] args)
{
if (args.length >= 2)
{
Player player = Bukkit.getPlayer(args[1]);
if (player != null && !tfmBridge.isVanished(player))
{
Guild guild = Guild.getGuild(player);
if (guild != null)
{
sender.sendMessage(guild.toString());
return;
}
}
Guild guild = Guild.getGuild(StringUtils.join(args, " ", 1, args.length));
if (guild == null)
{
sender.sendMessage(PREFIX + "That guild does not exist.");
return;
}
sender.sendMessage(guild.toString());
return;
}
if (!(sender instanceof Player))
{
sender.sendMessage(USAGE + "/g info <name>");
return;
}
Guild guild = Guild.getGuild(playerSender);
if (guild == null)
{
sender.sendMessage(NOT_IN_GUILD);
return;
}
sender.sendMessage(guild.toString());
}
}

View file

@ -1,60 +0,0 @@
package me.totalfreedom.tfguilds.command;
import me.totalfreedom.tfguilds.Common;
import me.totalfreedom.tfguilds.guild.Guild;
import me.totalfreedom.tfguilds.util.GUtil;
import org.apache.commons.lang.StringUtils;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.entity.Player;
public class InfoSubcommand extends Common implements CommandExecutor
{
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args)
{
if (args.length >= 2)
{
Player player = Bukkit.getPlayer(args[1]);
if (player != null)
{
Guild guild = Guild.getGuild(player);
if (guild != null)
{
sender.sendMessage(guild.getInformation());
return true;
}
}
Guild guild = Guild.getGuild(GUtil.flatten(StringUtils.join(args, " ", 1, args.length)));
if (guild == null)
{
sender.sendMessage(ChatColor.RED + "That guild doesn't exist!");
return true;
}
sender.sendMessage(guild.getInformation());
return true;
}
if (sender instanceof ConsoleCommandSender)
{
sender.sendMessage(NO_PERMS);
return true;
}
Guild guild = Guild.getGuild((Player)sender);
if (guild == null)
{
sender.sendMessage(ChatColor.RED + "You aren't in a guild!");
return true;
}
sender.sendMessage(guild.getInformation());
return true;
}
}

View file

@ -0,0 +1,100 @@
package me.totalfreedom.tfguilds.command;
import me.totalfreedom.tfguilds.Common;
import me.totalfreedom.tfguilds.TFGuilds;
import me.totalfreedom.tfguilds.guild.Guild;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitRunnable;
public class InviteSubCommand extends Common implements SubCommand
{
@Override
public void execute(CommandSender sender, Player playerSender, String[] args)
{
if (!(sender instanceof Player))
{
sender.sendMessage(IN_GAME_ONLY);
return;
}
if (args.length != 2)
{
sender.sendMessage(USAGE + "/g invite <player>");
return;
}
Guild guild = Guild.getGuild(playerSender);
if (guild == null)
{
sender.sendMessage(NOT_IN_GUILD);
return;
}
if (guild.getState() == Guild.State.CLOSED)
{
sender.sendMessage(PREFIX + "The guild is closed.");
return;
}
if (guild.getState() == Guild.State.OPEN)
{
sender.sendMessage(PREFIX + "The guild is open to public, tell your friends to join by " + ChatColor.GOLD + "/g join " + guild.getName());
return;
}
Player player = Bukkit.getPlayer(args[1]);
if (player == null || tfmBridge.isVanished(player))
{
sender.sendMessage(PLAYER_NOT_FOUND);
return;
}
if (player.equals(playerSender))
{
sender.sendMessage(PREFIX + "You cannot invite yourself.");
return;
}
if (Guild.getGuild(player) != null)
{
sender.sendMessage(PREFIX + "That player is already in a guild.");
return;
}
if (guild.isInvited(player))
{
sender.sendMessage(PREFIX + "That player is already been invited.");
return;
}
guild.invite(player);
player.sendMessage(PREFIX + ChatColor.GOLD + sender.getName() + ChatColor.GRAY + " has sent you an invite to join " + ChatColor.GOLD + guild.getName());
player.sendMessage(PREFIX + "Do " + ChatColor.GOLD + "/g join " + guild.getName() + ChatColor.GRAY + " to join!");
player.sendMessage(PREFIX + "The invite will expire in 90 seconds.");
sender.sendMessage(PREFIX + "The invite has been sent to " + ChatColor.GOLD + player.getName());
new BukkitRunnable()
{
@Override
public void run()
{
if (!guild.isInvited(player))
{
return;
}
guild.removeInvite(player);
if (player.isOnline())
{
player.sendMessage(PREFIX + "The invite to " + ChatColor.GOLD + guild.getName() + ChatColor.GRAY + " has expired!");
sender.sendMessage(PREFIX + ChatColor.GOLD + player.getName() + ChatColor.GRAY + " has not accepted your invite.");
}
}
}.runTaskLater(TFGuilds.getPlugin(), 20 * 90);
}
}

View file

@ -1,92 +0,0 @@
package me.totalfreedom.tfguilds.command;
import me.totalfreedom.tfguilds.Common;
import me.totalfreedom.tfguilds.guild.Guild;
import me.totalfreedom.tfguilds.guild.GuildState;
import me.totalfreedom.tfguilds.util.GUtil;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitRunnable;
public class InviteSubcommand extends Common implements CommandExecutor
{
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args)
{
if (sender instanceof ConsoleCommandSender)
{
sender.sendMessage(NO_PERMS);
return true;
}
if (args.length != 2)
{
sender.sendMessage(tl(PREFIX + "Proper usage: /g invite <player>"));
return true;
}
Player player = (Player)sender;
Guild guild = Guild.getGuild(player);
Player invitee = Bukkit.getPlayer(args[1]);
if (invitee == null || plugin.bridge.isVanished(invitee))
{
sender.sendMessage(PNF);
return true;
}
if (Guild.getGuild(invitee) != null)
{
sender.sendMessage(ChatColor.RED + "This player is already in another guild!");
return true;
}
if (guild == null)
{
sender.sendMessage(ChatColor.RED + "You aren't in a guild!");
return true;
}
if (guild.getState() == GuildState.CLOSED)
{
sender.sendMessage(ChatColor.RED + "The guild is currently closed!");
return true;
}
if (guild.getState() == GuildState.OPEN)
{
sender.sendMessage(ChatColor.RED + "The guild is open! Tell your friend to join using \"/g join\"!");
return true;
}
if (INVITES.containsKey(invitee))
{
sender.sendMessage(ChatColor.RED + "They have already been invited to your guild!");
return true;
}
INVITES.put(invitee, guild);
invitee.sendMessage(tl("%p%You have been invited to join %s%" + GUtil.colorize(guild.getName()) + "%p% through %s%" + player.getName() + "%p%'s invite!"));
invitee.sendMessage(tl("%p%Do %s%/g join " + ChatColor.stripColor(GUtil.colorize(guild.getName())) + "%p% to join!"));
invitee.sendMessage(tl("%p%This invite will expire in 90 seconds."));
sender.sendMessage(tl("%p%Invite sent!"));
new BukkitRunnable()
{
public void run()
{
if (!INVITES.containsKey(invitee))
{
return;
}
INVITES.remove(player);
invitee.sendMessage(ChatColor.RED + "Invite expired.");
sender.sendMessage(ChatColor.RED + "It has been 90 seconds and " + invitee.getName() + " did not accept your invitation.");
}
}.runTaskLater(plugin, 20 * 90);
return true;
}
}

View file

@ -0,0 +1,60 @@
package me.totalfreedom.tfguilds.command;
import me.totalfreedom.tfguilds.Common;
import me.totalfreedom.tfguilds.guild.Guild;
import org.apache.commons.lang.StringUtils;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class JoinSubCommand extends Common implements SubCommand
{
@Override
public void execute(CommandSender sender, Player playerSender, String[] args)
{
if (!(sender instanceof Player))
{
sender.sendMessage(IN_GAME_ONLY);
return;
}
if (args.length < 2)
{
sender.sendMessage(USAGE + "/g join <name>");
return;
}
if (Guild.getGuild(playerSender) != null)
{
sender.sendMessage(IN_GUILD);
return;
}
Guild guild = Guild.getGuild(StringUtils.join(args, " ", 1, args.length));
if (guild == null)
{
sender.sendMessage(PREFIX + "That guild does not exist.");
return;
}
if (guild.getState() == Guild.State.CLOSED)
{
sender.sendMessage(PREFIX + "That guild is currently closed.");
return;
}
if (guild.getState() == Guild.State.INVITE_ONLY)
{
if (!guild.isInvited(playerSender))
{
sender.sendMessage(PREFIX + "You must be invited to join the guild.");
return;
}
guild.removeInvite(playerSender);
}
guild.addMember(playerSender);
guild.broadcast(PREFIX + ChatColor.GOLD + sender.getName() + ChatColor.GRAY + " has joined the guild.");
}
}

View file

@ -1,67 +0,0 @@
package me.totalfreedom.tfguilds.command;
import me.totalfreedom.tfguilds.Common;
import me.totalfreedom.tfguilds.guild.Guild;
import me.totalfreedom.tfguilds.guild.GuildState;
import me.totalfreedom.tfguilds.util.GUtil;
import org.apache.commons.lang.StringUtils;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.entity.Player;
public class JoinSubcommand extends Common implements CommandExecutor
{
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args)
{
if (sender instanceof ConsoleCommandSender)
{
sender.sendMessage(NO_PERMS);
return true;
}
if (args.length < 2)
{
sender.sendMessage(tl(PREFIX + "Proper usage: /g join <guild>"));
return true;
}
Player player = (Player)sender;
if (Guild.getGuild(player) != null)
{
sender.sendMessage(ChatColor.RED + "You are already in a guild!");
return true;
}
Guild guild = Guild.getGuild(GUtil.flatten(StringUtils.join(args, " ", 1, args.length)));
if (guild == null)
{
sender.sendMessage(ChatColor.RED + "That guild doesn't exist!");
return true;
}
if (guild.getState() == GuildState.CLOSED)
{
sender.sendMessage(ChatColor.RED + "That guild is currently closed!");
return true;
}
if (guild.getState() == GuildState.INVITE_ONLY)
{
if (!INVITES.containsKey(player))
{
sender.sendMessage(ChatColor.RED + "You have not been invited to this guild!");
return true;
}
INVITES.remove(player);
}
guild.addMember(player.getName());
guild.broadcast(tl("%s%" + player.getName() + " %p%has joined the guild."));
guild.save();
return true;
}
}

View file

@ -0,0 +1,70 @@
package me.totalfreedom.tfguilds.command;
import me.totalfreedom.tfguilds.Common;
import me.totalfreedom.tfguilds.guild.Guild;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class KickSubCommand extends Common implements SubCommand
{
@Override
public void execute(CommandSender sender, Player playerSender, String[] args)
{
if (!(sender instanceof Player))
{
sender.sendMessage(IN_GAME_ONLY);
return;
}
if (args.length < 2)
{
sender.sendMessage(USAGE + "/g kick <player>");
return;
}
Guild guild = Guild.getGuild(playerSender);
if (guild == null)
{
sender.sendMessage(NOT_IN_GUILD);
return;
}
if (!guild.isModerator(playerSender))
{
sender.sendMessage(PREFIX + "Only the guild owner and moderators can kick members.");
return;
}
Player player = Bukkit.getPlayer(args[1]);
if (player == null || tfmBridge.isVanished(player))
{
sender.sendMessage(PLAYER_NOT_FOUND);
return;
}
if (playerSender.equals(player))
{
sender.sendMessage(PREFIX + "You cannot kick yourself.");
return;
}
if (guild.getOwner().equals(player.getUniqueId()) || guild.isModerator(player) && !guild.getOwner().equals(playerSender.getUniqueId()))
{
sender.sendMessage(PREFIX + "You may not kick the guild owner or moderators from your guild.");
return;
}
if (!guild.isMember(player))
{
sender.sendMessage(PLAYER_NOT_IN_GUILD);
return;
}
guild.removeMember(player);
sender.sendMessage(PREFIX + "Successfully kicked " + ChatColor.GOLD + player.getName() + ChatColor.GRAY + " from your guild.");
player.sendMessage(PREFIX + ChatColor.GOLD + sender.getName() + ChatColor.GRAY + " has kicked you from " + ChatColor.GOLD + guild.getName());
}
}

View file

@ -1,113 +0,0 @@
package me.totalfreedom.tfguilds.command;
import me.totalfreedom.tfguilds.Common;
import me.totalfreedom.tfguilds.guild.Guild;
import me.totalfreedom.tfguilds.util.GUtil;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.entity.Player;
public class KickSubcommand extends Common implements CommandExecutor
{
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args)
{
if (args.length > 3)
{
sender.sendMessage(tl(PREFIX + "Proper usage: /g kick <guild <player> | player>"));
return true;
}
if (args.length == 3)
{
if (!plugin.bridge.isAdmin(sender))
{
sender.sendMessage(NO_PERMS);
return true;
}
Guild guild = Guild.getGuild(args[1]);
if (guild == null)
{
sender.sendMessage(ChatColor.RED + "That guild doesn't exist!");
return true;
}
Player player = Bukkit.getPlayer(args[2]);
if (player == null)
{
sender.sendMessage(PNF);
return true;
}
if (!guild.hasMember(player.getName()))
{
sender.sendMessage(ChatColor.RED + "This player is not in the specified guild!");
return true;
}
if (guild.getOwner().equals(player.getName()) || guild.hasModerator(player.getName()))
{
sender.sendMessage(ChatColor.RED + "You cannot kick the owner/moderator(s) of a guild!");
return true;
}
guild.removeMember(player.getName());
sender.sendMessage(tl(PREFIX + "Kicked %s%" + player.getName() + "%p% from %s%" + GUtil.colorize(guild.getName()) + "%p%."));
player.sendMessage(tl("%s%You have been kicked from your guild."));
guild.broadcast(tl("%s%" + player.getName() + " %p%has been kicked from your guild."));
guild.save();
return true;
}
if (sender instanceof ConsoleCommandSender)
{
sender.sendMessage(NO_PERMS);
return true;
}
Player player = (Player)sender;
Guild guild = Guild.getGuild(player);
if (guild == null)
{
sender.sendMessage(ChatColor.RED + "You aren't in a guild!");
return true;
}
if (!guild.hasModerator(player.getName()))
{
sender.sendMessage(ChatColor.RED + "You can't kick people from your guild!");
return true;
}
Player n = Bukkit.getPlayer(args[1]);
if (n == null)
{
sender.sendMessage(PNF);
return true;
}
if (!guild.hasMember(n.getName()))
{
sender.sendMessage(ChatColor.RED + "This player is not in your guild!");
return true;
}
if (guild.getOwner().equals(n.getName()) || guild.hasModerator(n.getName()) && !guild.getOwner().equals(player.getName()))
{
sender.sendMessage(ChatColor.RED + "You cannot kick the owner/moderator(s) of a guild!");
return true;
}
guild.removeMember(n.getName());
sender.sendMessage(tl(PREFIX + "Kicked %s%" + n.getName() + "%p% from your guild."));
n.sendMessage(tl("%s%You have been kicked from your guild."));
guild.broadcast(tl("%s%" + n.getName() + " %p%has been kicked from your guild."));
guild.save();
return true;
}
}

View file

@ -0,0 +1,38 @@
package me.totalfreedom.tfguilds.command;
import me.totalfreedom.tfguilds.Common;
import me.totalfreedom.tfguilds.guild.Guild;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class LeaveSubCommand extends Common implements SubCommand
{
@Override
public void execute(CommandSender sender, Player playerSender, String[] args)
{
if (!(sender instanceof Player))
{
sender.sendMessage(IN_GAME_ONLY);
return;
}
Guild guild = Guild.getGuild(playerSender);
if (guild == null)
{
sender.sendMessage(NOT_IN_GUILD);
return;
}
if (guild.getOwner().equals(playerSender.getUniqueId()))
{
sender.sendMessage(PREFIX + "You may not leave your guild as the owner, please disband the guild instead.");
return;
}
guild.removeMember(playerSender);
guild.broadcast(PREFIX + ChatColor.GOLD + sender.getName() + ChatColor.GRAY + " has left the guild.");
sender.sendMessage(PREFIX + "You have left the guild.");
}
}

View file

@ -1,50 +0,0 @@
package me.totalfreedom.tfguilds.command;
import me.totalfreedom.tfguilds.Common;
import me.totalfreedom.tfguilds.guild.Guild;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.entity.Player;
public class LeaveSubcommand extends Common implements CommandExecutor
{
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args)
{
if (args.length > 1)
{
sender.sendMessage(tl(PREFIX + "Proper usage: /g leave"));
return true;
}
if (sender instanceof ConsoleCommandSender)
{
sender.sendMessage(NO_PERMS);
return true;
}
Player player = (Player)sender;
Guild guild = Guild.getGuild(player);
if (guild == null)
{
sender.sendMessage(ChatColor.RED + "You aren't in a guild!");
return true;
}
if (guild.getOwner().equals(player.getName()))
{
sender.sendMessage(ChatColor.RED + "You cannot leave as you are the owner!");
return true;
}
guild.removeModerator(player.getName());
guild.removeMember(player.getName());
guild.save();
sender.sendMessage(tl("%p%You left your guild."));
guild.broadcast(tl("%s%" + sender.getName() + " %p%left the guild."));
return true;
}
}

View file

@ -0,0 +1,60 @@
package me.totalfreedom.tfguilds.command;
import java.util.List;
import me.totalfreedom.tfguilds.Common;
import me.totalfreedom.tfguilds.guild.Guild;
import me.totalfreedom.tfguilds.util.PaginationList;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class ListSubCommand extends Common implements SubCommand
{
@Override
public void execute(CommandSender sender, Player playerSender, String[] args)
{
if (args.length > 2)
{
sender.sendMessage(USAGE + "/g list [page]");
return;
}
List<String> guilds = Guild.getGuildNames();
if (guilds.isEmpty())
{
sender.sendMessage(PREFIX + "There are no guilds.");
return;
}
PaginationList<String> pagination = new PaginationList<>(10);
pagination.addAll(guilds);
int index = 1;
if (args.length == 2)
{
try
{
index = Integer.parseInt(args[1]);
}
catch (NumberFormatException ex)
{
sender.sendMessage(PREFIX + ChatColor.GOLD + args[1] + ChatColor.GRAY + " is not a valid number.");
return;
}
}
if (index < 1 || index > pagination.getPageCount())
{
sender.sendMessage(PREFIX + "Please pick a number between 1 and " + pagination.getPageCount());
return;
}
List<String> page = pagination.getPage(index);
sender.sendMessage(PREFIX + "Guild list (" + ChatColor.GOLD + index + "/" + pagination.getPageCount() + ChatColor.GRAY + ")");
for (String guild : page)
{
sender.sendMessage(ChatColor.GRAY + " - " + ChatColor.GOLD + guild);
}
}
}

View file

@ -1,29 +0,0 @@
package me.totalfreedom.tfguilds.command;
import java.util.List;
import me.totalfreedom.tfguilds.Common;
import me.totalfreedom.tfguilds.guild.Guild;
import org.apache.commons.lang.StringUtils;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
public class ListSubcommand extends Common implements CommandExecutor
{
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args)
{
List<String> guilds = Guild.getGuildList();
if (guilds.isEmpty())
{
sender.sendMessage(ChatColor.RED + "Nobody has made a guild yet.");
return true;
}
sender.sendMessage(tl(PREFIX + "%s%Guild List (%p%" + guilds.size() + " total%s%)"));
sender.sendMessage(tl("%s%- %p%" + StringUtils.join(guilds, "\n%s%- %p%")));
return true;
}
}

View file

@ -1,68 +0,0 @@
package me.totalfreedom.tfguilds.command;
import me.totalfreedom.tfguilds.Common;
import me.totalfreedom.tfguilds.guild.Guild;
import me.totalfreedom.tfguilds.util.GUtil;
import org.apache.commons.lang.StringUtils;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.entity.Player;
public class MOTDSubcommand extends Common implements CommandExecutor
{
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args)
{
if (args.length == 1)
{
sender.sendMessage(tl(PREFIX + "Proper usage: /g motd <set <motd> | clear>"));
return true;
}
if (sender instanceof ConsoleCommandSender)
{
sender.sendMessage(NO_PERMS);
return true;
}
Player player = (Player)sender;
Guild guild = Guild.getGuild(player);
if (guild == null)
{
sender.sendMessage(ChatColor.RED + "You aren't in a guild!");
return true;
}
if (!guild.hasModerator(player.getName()))
{
sender.sendMessage(ChatColor.RED + "You can't modify your guild's MOTD!");
return true;
}
if (args.length >= 3)
{
if (args[1].equalsIgnoreCase("set"))
{
String motd = StringUtils.join(args, " ", 2, args.length);
guild.setMotd(motd);
guild.save();
sender.sendMessage(tl(PREFIX + "Set %s%" + GUtil.colorize(motd) + "%p% as the new MOTD of your guild%p%."));
return true;
}
return false;
}
if (!args[1].equalsIgnoreCase("clear"))
{
return false;
}
guild.setMotd(null);
guild.save();
sender.sendMessage(tl(PREFIX + "Cleared your guild's MOTD."));
return true;
}
}

View file

@ -0,0 +1,43 @@
package me.totalfreedom.tfguilds.command;
import me.totalfreedom.tfguilds.Common;
import me.totalfreedom.tfguilds.guild.Guild;
import org.apache.commons.lang.StringUtils;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class ModChatSubCommand extends Common implements SubCommand
{
@Override
public void execute(CommandSender sender, Player playerSender, String[] args)
{
if (!(sender instanceof Player))
{
sender.sendMessage(IN_GAME_ONLY);
return;
}
Guild guild = Guild.getGuild(playerSender);
if (guild == null)
{
sender.sendMessage(NOT_IN_GUILD);
return;
}
if (!guild.isModerator(playerSender))
{
sender.sendMessage(PREFIX + "You must be a guild moderator to set player's rank for your guild.");
return;
}
if (args.length == 1)
{
sender.sendMessage(USAGE + "/g mchat <message>");
return;
}
String message = StringUtils.join(args, " ", 1, args.length);
guild.chat(playerSender, message, true);
}
}

View file

@ -0,0 +1,66 @@
package me.totalfreedom.tfguilds.command;
import me.totalfreedom.tfguilds.Common;
import me.totalfreedom.tfguilds.guild.Guild;
import me.totalfreedom.tfguilds.util.GUtil;
import org.apache.commons.lang.StringUtils;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class MotdSubCommand extends Common implements SubCommand
{
@Override
public void execute(CommandSender sender, Player playerSender, String[] args)
{
if (!(sender instanceof Player))
{
sender.sendMessage(IN_GAME_ONLY);
return;
}
if (args.length == 1)
{
sender.sendMessage(USAGE + "/g motd <set <message> | clear>");
return;
}
Guild guild = Guild.getGuild(playerSender);
if (guild == null)
{
sender.sendMessage(NOT_IN_GUILD);
return;
}
if (!guild.isModerator(playerSender))
{
sender.sendMessage(PREFIX + "Only guild moderators can modify the guild's MOTD");
return;
}
if (args.length >= 3)
{
if (args[1].equalsIgnoreCase("set"))
{
String message = StringUtils.join(args, " ", 2, args.length);
guild.setMotd(message);
sender.sendMessage(PREFIX + "Set the guild's MOTD to " + ChatColor.GOLD + GUtil.colorize(message));
}
else
{
sender.sendMessage(USAGE + "/g motd <set <message> | clear>");
}
return;
}
if (!args[1].equalsIgnoreCase("clear"))
{
sender.sendMessage(USAGE + "/g motd <set <message> | clear>");
return;
}
guild.setMotd(null);
sender.sendMessage(PREFIX + "Successfully cleared the guild's MOTD");
}
}

View file

@ -0,0 +1,49 @@
package me.totalfreedom.tfguilds.command;
import me.totalfreedom.tfguilds.Common;
import me.totalfreedom.tfguilds.guild.Guild;
import org.apache.commons.lang.StringUtils;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class NoTagSubCommand extends Common implements SubCommand
{
@Override
public void execute(CommandSender sender, Player playerSender, String[] args)
{
if (!tfmBridge.isAdmin(sender))
{
sender.sendMessage(PREFIX + "You do not have the permission.");
return;
}
if (args.length == 1)
{
sender.sendMessage(USAGE + "/g edittag <guild>");
return;
}
Guild guild = Guild.getGuild(StringUtils.join(args, " ", 1, args.length));
if (guild == null)
{
sender.sendMessage(PREFIX + "That guild does not exist.");
return;
}
boolean enabled = guild.canUseTag();
if (enabled)
{
guild.setUseTag(false);
sender.sendMessage(PREFIX + ChatColor.GOLD + "Disabled " + ChatColor.GRAY + "guild tags for " + ChatColor.GOLD + guild.getName());
guild.broadcast(PREFIX + ChatColor.GOLD + sender.getName() + ChatColor.GRAY + " has disabled guild tags for your guild.");
}
else
{
guild.setUseTag(true);
sender.sendMessage(PREFIX + ChatColor.GOLD + "Enabled " + ChatColor.GRAY + "guild tags for " + ChatColor.GOLD + guild.getName());
guild.broadcast(PREFIX + ChatColor.GOLD + sender.getName() + ChatColor.GRAY + " has enabled guild tags for your guild.");
}
}
}

View file

@ -0,0 +1,70 @@
package me.totalfreedom.tfguilds.command;
import me.totalfreedom.tfguilds.Common;
import me.totalfreedom.tfguilds.guild.Guild;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class RemoveModSubCommand extends Common implements SubCommand
{
@Override
public void execute(CommandSender sender, Player playerSender, String[] args)
{
if (!(sender instanceof Player))
{
sender.sendMessage(IN_GAME_ONLY);
return;
}
if (args.length != 2)
{
sender.sendMessage(USAGE + "/g removemod <player>");
return;
}
Guild guild = Guild.getGuild(playerSender);
if (guild == null)
{
sender.sendMessage(NOT_IN_GUILD);
return;
}
Player player = Bukkit.getPlayer(args[1]);
if (player == null || tfmBridge.isVanished(player))
{
sender.sendMessage(PLAYER_NOT_FOUND);
return;
}
if (!guild.getOwner().equals(playerSender.getUniqueId()))
{
sender.sendMessage(PREFIX + "You must be the guild owner to remove moderators.");
return;
}
if (guild.getOwner().equals(player.getUniqueId()))
{
sender.sendMessage(PREFIX + "You are the owner of your guild, you cannot remove yourself.");
return;
}
if (!guild.isMember(player))
{
sender.sendMessage(NOT_IN_GUILD);
return;
}
if (!guild.isModerator(player))
{
sender.sendMessage(PREFIX + "That player is not a moderator.");
return;
}
guild.removeModerator(player);
sender.sendMessage(PREFIX + "Successfully removed " + ChatColor.GOLD + player.getName() + ChatColor.GRAY + " as a moderator.");
player.sendMessage(PREFIX + "You are no longer a guild moderator for your guild.");
}
}

View file

@ -1,123 +0,0 @@
package me.totalfreedom.tfguilds.command;
import me.totalfreedom.tfguilds.Common;
import me.totalfreedom.tfguilds.guild.Guild;
import me.totalfreedom.tfguilds.util.GUtil;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.entity.Player;
public class RemoveModSubcommand extends Common implements CommandExecutor
{
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args)
{
if (args.length == 1 || args.length > 3)
{
sender.sendMessage(tl(PREFIX + "Proper usage: /g removemod <guild <name> | name>>"));
return true;
}
if (args.length == 3)
{
if (!plugin.bridge.isAdmin(sender))
{
sender.sendMessage(NO_PERMS);
return true;
}
Guild guild = Guild.getGuild(args[1]);
if (guild == null)
{
sender.sendMessage(ChatColor.RED + "That guild doesn't exist!");
return true;
}
Player player = Bukkit.getPlayer(args[2]);
if (player == null)
{
sender.sendMessage(PNF);
return true;
}
if (guild.getModerators().contains(sender.getName()))
{
sender.sendMessage(ChatColor.RED + "You may not demote yourself.");
return true;
}
if (!guild.hasMember(player.getName()))
{
sender.sendMessage(ChatColor.RED + "This player is not in the specified guild!");
return true;
}
if (!guild.hasModerator(player.getName()))
{
sender.sendMessage(ChatColor.RED + "This member is not a moderator for this guild!");
return true;
}
guild.removeModerator(player.getName());
sender.sendMessage(tl(PREFIX + "Removed %s%" + player.getName() + "%p% as a moderator for %s%" + GUtil.colorize(guild.getName()) + "%p%."));
guild.broadcast(tl("%s%" + player.getName() + " %p%has been made a member of your guild."));
guild.save();
return true;
}
if (sender instanceof ConsoleCommandSender)
{
sender.sendMessage(NO_PERMS);
return true;
}
Player player = (Player)sender;
Guild guild = Guild.getGuild(player);
if (guild == null)
{
sender.sendMessage(ChatColor.RED + "You aren't in a guild!");
return true;
}
if (!guild.getOwner().equals(player.getName()))
{
sender.sendMessage(ChatColor.RED + "You can't change who is a moderator in your guild!");
return true;
}
Player n = Bukkit.getPlayer(args[1]);
if (n == null)
{
sender.sendMessage(PNF);
return true;
}
if (n == player)
{
sender.sendMessage(ChatColor.RED + "You may not demote yourself.");
return true;
}
if (!guild.hasMember(n.getName()))
{
sender.sendMessage(ChatColor.RED + "This player is not in your guild!");
return true;
}
if (!guild.hasModerator(n.getName()))
{
sender.sendMessage(ChatColor.RED + "This member is not a moderator for your guild!");
return true;
}
guild.removeModerator(n.getName());
sender.sendMessage(tl(PREFIX + "Removed %s%" + n.getName() + "%p% as a moderator for your guild."));
guild.broadcast(tl("%s%" + n.getName() + " %p%has been made a member of your guild."));
guild.save();
return true;
}
}

View file

@ -1,93 +0,0 @@
package me.totalfreedom.tfguilds.command;
import me.totalfreedom.tfguilds.Common;
import me.totalfreedom.tfguilds.guild.Guild;
import me.totalfreedom.tfguilds.util.GUtil;
import org.apache.commons.lang.StringUtils;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.entity.Player;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RenameSubcommand extends Common implements CommandExecutor
{
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args)
{
if (args.length < 2)
{
sender.sendMessage(tl(PREFIX + "Proper usage: /g rename <name>"));
return true;
}
if (sender instanceof ConsoleCommandSender)
{
sender.sendMessage(NO_PERMS);
return true;
}
Player player = (Player)sender;
Guild guild = Guild.getGuild(player);
String newName = StringUtils.join(args, " ", 1, args.length);
String identifier = GUtil.flatten(newName);
if (guild == null)
{
sender.sendMessage(ChatColor.RED + "You aren't in a guild!");
return true;
}
if (!guild.getOwner().equals(player.getName()))
{
sender.sendMessage(ChatColor.RED + "You can't change the name of your guild!");
return true;
}
Pattern pattern = Pattern.compile("^[A-Za-z0-9? ,_-]+$");
Matcher matcher = pattern.matcher(newName);
if (!matcher.matches())
{
sender.sendMessage(ChatColor.RED + "Guild names must be alphanumeric.");
return true;
}
if (identifier.length() > 30)
{
sender.sendMessage(ChatColor.RED + "Your new guild name may not be over 30 characters.");
return true;
}
if (Guild.guildExists(identifier))
{
sender.sendMessage(ChatColor.RED + "A guild with a name similar to yours already exists!");
return true;
}
for (String blacklisted : GUtil.BLACKLISTED_NAMES_AND_TAGS)
{
if (args[0].equalsIgnoreCase(blacklisted))
{
if (!plugin.bridge.isAdmin(player))
{
player.sendMessage(ChatColor.RED + "You may not use that name.");
return true;
}
}
}
guild.disband();
guild.setIdentifier(GUtil.flatten(newName));
guild.setName(newName);
guild.updateRankIdentifiers();
guild.setTag(GUtil.colorize("&8[&7" + newName + "&8]"));
sender.sendMessage(tl(PREFIX + "Set %s%" + GUtil.colorize(newName) + "%p% as the new name of your guild%p%."));
guild.broadcast(tl("%p%Your guild has been renamed to " + GUtil.colorize(newName) + "%p%."));
guild.save();
return true;
}
}

View file

@ -0,0 +1,59 @@
package me.totalfreedom.tfguilds.command;
import me.totalfreedom.tfguilds.Common;
import me.totalfreedom.tfguilds.guild.Guild;
import org.apache.commons.lang.StringUtils;
import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class RosterSubCommand extends Common implements SubCommand
{
@Override
public void execute(CommandSender sender, Player playerSender, String[] args)
{
Guild guild;
if (args.length >= 2)
{
Player player = Bukkit.getPlayer(args[1]);
if (player != null && !tfmBridge.isVanished(player))
{
guild = Guild.getGuild(player);
if (guild == null)
{
sender.sendMessage(PLAYER_NOT_IN_GUILD);
return;
}
sender.sendMessage(guild.getRoster());
return;
}
guild = Guild.getGuild(StringUtils.join(args, " ", 1, args.length));
if (guild == null)
{
sender.sendMessage(PREFIX + "That guild does not exist.");
return;
}
sender.sendMessage(guild.getRoster());
return;
}
if (!(sender instanceof Player))
{
sender.sendMessage(USAGE + "/g roster <name>");
return;
}
guild = Guild.getGuild(playerSender);
if (guild == null)
{
sender.sendMessage(NOT_IN_GUILD);
return;
}
sender.sendMessage(guild.getRoster());
}
}

View file

@ -1,60 +0,0 @@
package me.totalfreedom.tfguilds.command;
import me.totalfreedom.tfguilds.Common;
import me.totalfreedom.tfguilds.guild.Guild;
import me.totalfreedom.tfguilds.util.GUtil;
import org.apache.commons.lang.StringUtils;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.entity.Player;
public class RosterSubcommand extends Common implements CommandExecutor
{
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args)
{
if (args.length >= 2)
{
Player player = Bukkit.getPlayer(args[1]);
if (player != null)
{
Guild guild = Guild.getGuild(player);
if (guild != null)
{
sender.sendMessage(guild.getRoster());
return true;
}
}
Guild guild = Guild.getGuild(GUtil.flatten(StringUtils.join(args, " ", 1, args.length)));
if (guild == null)
{
sender.sendMessage(ChatColor.RED + "That guild doesn't exist!");
return true;
}
sender.sendMessage(guild.getRoster());
return true;
}
if (sender instanceof ConsoleCommandSender)
{
sender.sendMessage(NO_PERMS);
return true;
}
Guild guild = Guild.getGuild((Player)sender);
if (guild == null)
{
sender.sendMessage(ChatColor.RED + "You aren't in a guild!");
return true;
}
sender.sendMessage(guild.getRoster());
return true;
}
}

View file

@ -0,0 +1,71 @@
package me.totalfreedom.tfguilds.command;
import me.totalfreedom.tfguilds.Common;
import me.totalfreedom.tfguilds.guild.Guild;
import me.totalfreedom.tfguilds.util.GUtil;
import org.apache.commons.lang.StringUtils;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class SetDefaultRankSubCommand extends Common implements SubCommand
{
@Override
public void execute(CommandSender sender, Player playerSender, String[] args)
{
if (!(sender instanceof Player))
{
sender.sendMessage(IN_GAME_ONLY);
return;
}
if (args.length < 2)
{
sender.sendMessage(USAGE + "/g setdefaultrank <name>");
return;
}
Guild guild = Guild.getGuild(playerSender);
if (guild == null)
{
sender.sendMessage(NOT_IN_GUILD);
return;
}
if (!guild.getOwner().equals(playerSender.getUniqueId()))
{
sender.sendMessage(PREFIX + "Only the guild owner can set default rank.");
return;
}
String name = StringUtils.join(args, " ", 1, args.length);
if (name.equalsIgnoreCase("none"))
{
guild.setDefaultRank(null);
sender.sendMessage(PREFIX + "Removed default rank.");
return;
}
if (!StringUtils.isAlphanumericSpace(name) || name.isBlank())
{
sender.sendMessage(PREFIX + "The name must be alphanumeric.");
return;
}
if (name.length() > 15)
{
sender.sendMessage(PREFIX + "The rank name cannot go over 15 characters limit.");
return;
}
if (GUtil.containsBlacklistedWord(name))
{
sender.sendMessage(PREFIX + "The guild name contains a blacklisted word.");
return;
}
guild.setDefaultRank(name);
sender.sendMessage(PREFIX + "Successfully set " + ChatColor.GOLD + name + ChatColor.GRAY + " as the default rank of your guild.");
}
}

View file

@ -1,64 +0,0 @@
package me.totalfreedom.tfguilds.command;
import me.totalfreedom.tfguilds.Common;
import me.totalfreedom.tfguilds.guild.Guild;
import org.apache.commons.lang.StringUtils;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.entity.Player;
public class SetDefaultRankSubcommand extends Common implements CommandExecutor
{
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args)
{
if (sender instanceof ConsoleCommandSender)
{
sender.sendMessage(NO_PERMS);
return true;
}
if (args.length == 0)
{
sender.sendMessage(tl(PREFIX + "Proper usage: /g setdefaultrank <rank | none>"));
return true;
}
Player player = (Player)sender;
Guild guild = Guild.getGuild(player);
if (guild == null)
{
sender.sendMessage(ChatColor.RED + "You aren't in a guild!");
return true;
}
if (!guild.getOwner().equals(player.getName()))
{
sender.sendMessage(ChatColor.RED + "You do not have permissions to manage ranks in your guild!");
return true;
}
String rank = StringUtils.join(args, " ", 1, args.length);
if (rank.equalsIgnoreCase("none"))
{
guild.setDefaultRank(null);
guild.save();
sender.sendMessage(tl(PREFIX + "Removed the default guild rank."));
return true;
}
if (!guild.hasRank(rank))
{
sender.sendMessage(ChatColor.RED + "A rank of that name does not exist in the guild!");
return true;
}
guild.setDefaultRank(rank);
guild.save();
sender.sendMessage(tl(PREFIX + "Set %s%\"" + rank + "\"%p% as the default rank for your guild."));
return true;
}
}

View file

@ -0,0 +1,65 @@
package me.totalfreedom.tfguilds.command;
import me.totalfreedom.tfguilds.Common;
import me.totalfreedom.tfguilds.guild.Guild;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class SetOwnerSubCommand extends Common implements SubCommand
{
@Override
public void execute(CommandSender sender, Player playerSender, String[] args)
{
if (!(sender instanceof Player))
{
sender.sendMessage(IN_GAME_ONLY);
return;
}
if (args.length < 2)
{
sender.sendMessage(USAGE + "/g setowner <player>");
return;
}
Guild guild = Guild.getGuild(playerSender);
if (guild == null)
{
sender.sendMessage(NOT_IN_GUILD);
return;
}
if (!guild.getOwner().equals(playerSender.getUniqueId()))
{
sender.sendMessage(PREFIX + "Only the guild owner can set the owner of the guild.");
return;
}
Player player = Bukkit.getPlayer(args[1]);
if (player == null || tfmBridge.isVanished(player))
{
sender.sendMessage(PLAYER_NOT_FOUND);
return;
}
if (playerSender.equals(player))
{
sender.sendMessage(PREFIX + "You are already the owner of the guild.");
return;
}
if (!guild.isMember(player))
{
sender.sendMessage(PREFIX + "That player is not in your guild.");
return;
}
guild.setOwner(player);
sender.sendMessage(PREFIX + "Successfully set " + ChatColor.GOLD + player.getName() + ChatColor.GRAY + " as the new owner of the guild.");
guild.broadcast(PREFIX + ChatColor.GOLD + sender.getName() + ChatColor.GRAY + " has set " + ChatColor.GOLD + player.getName() + ChatColor.GRAY + " as the new owner of the guild.");
player.sendMessage(PREFIX + ChatColor.GOLD + sender.getName() + ChatColor.GRAY + " has set you as the owner of " + ChatColor.GOLD + guild.getName());
}
}

View file

@ -1,113 +0,0 @@
package me.totalfreedom.tfguilds.command;
import me.totalfreedom.tfguilds.Common;
import me.totalfreedom.tfguilds.guild.Guild;
import me.totalfreedom.tfguilds.util.GUtil;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.entity.Player;
public class SetOwnerSubcommand extends Common implements CommandExecutor
{
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args)
{
if (args.length == 1 || args.length > 3)
{
sender.sendMessage(tl(PREFIX + "Proper usage: /g setowner <guild <player> | player>"));
return true;
}
if (args.length == 3)
{
if (!plugin.bridge.isAdmin(sender))
{
sender.sendMessage(NO_PERMS);
return true;
}
Guild guild = Guild.getGuild(args[1]);
if (guild == null)
{
sender.sendMessage(ChatColor.RED + "That guild doesn't exist!");
return true;
}
Player player = Bukkit.getPlayer(args[2]);
if (player == null)
{
sender.sendMessage(PNF);
return true;
}
if (guild.getOwner().contains(player.getName()))
{
sender.sendMessage(ChatColor.RED + "This player is already the owner of that guild!");
return true;
}
if (!guild.hasMember(player.getName()))
{
sender.sendMessage(ChatColor.RED + "This player is not in the specified guild!");
return true;
}
guild.removeModerator(player.getName());
guild.setOwner(player.getName());
sender.sendMessage(tl(PREFIX + "Ownership has been transferred to %s%" + player.getName() + "%p% in %s%" + GUtil.colorize(guild.getName()) + "%p%."));
guild.broadcast(tl("%s%" + player.getName() + " %p%has been made the owner of your guild."));
guild.save();
return true;
}
if (sender instanceof ConsoleCommandSender)
{
sender.sendMessage(NO_PERMS);
return true;
}
Player player = (Player)sender;
Guild guild = Guild.getGuild(player);
if (guild == null)
{
sender.sendMessage(ChatColor.RED + "You aren't in a guild!");
return true;
}
if (!guild.getOwner().equals(player.getName()))
{
sender.sendMessage(ChatColor.RED + "You can't change who is the owner of your guild!");
return true;
}
Player n = Bukkit.getPlayer(args[1]);
if (n == null)
{
sender.sendMessage(PNF);
return true;
}
if (n == player)
{
sender.sendMessage(ChatColor.RED + "You are already the owner of your guild.");
return true;
}
if (!guild.hasMember(n.getName()))
{
sender.sendMessage(ChatColor.RED + "This player is not in your guild!");
return true;
}
guild.removeModerator(n.getName());
guild.setOwner(n.getName());
sender.sendMessage(tl(PREFIX + "Ownership has been transferred to %s%" + n.getName() + "%p% in your guild."));
guild.broadcast(tl("%s%" + n.getName() + " %p%has been made the owner of your guild."));
guild.save();
return true;
}
}

View file

@ -0,0 +1,66 @@
package me.totalfreedom.tfguilds.command;
import me.totalfreedom.tfguilds.Common;
import me.totalfreedom.tfguilds.guild.Guild;
import org.apache.commons.lang.StringUtils;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class SetRankSubCommand extends Common implements SubCommand
{
@Override
public void execute(CommandSender sender, Player playerSender, String[] args)
{
if (!(sender instanceof Player))
{
sender.sendMessage(IN_GAME_ONLY);
return;
}
if (args.length < 3)
{
sender.sendMessage(USAGE + "/g setrank <player> <name>");
return;
}
Guild guild = Guild.getGuild(playerSender);
if (guild == null)
{
sender.sendMessage(NOT_IN_GUILD);
return;
}
if (!guild.isModerator(playerSender))
{
sender.sendMessage(PREFIX + "You must be a guild moderator to set player's rank for your guild.");
return;
}
Player player = Bukkit.getPlayer(args[1]);
if (player == null || tfmBridge.isVanished(player))
{
sender.sendMessage(PLAYER_NOT_FOUND);
return;
}
if (!guild.isMember(player))
{
sender.sendMessage(PLAYER_NOT_IN_GUILD);
return;
}
String name = StringUtils.join(args, " ", 2, args.length);
if (!guild.hasRank(name))
{
sender.sendMessage(PREFIX + "That rank does not exist.");
return;
}
guild.setPlayerRank(player, name);
sender.sendMessage(PREFIX + "Successfully set " + ChatColor.GOLD + player.getName() + ChatColor.GRAY + "'s guild rank to " + ChatColor.GOLD + name);
player.sendMessage(PREFIX + ChatColor.GOLD + sender.getName() + ChatColor.GRAY + " has set your guild rank to " + ChatColor.GOLD + name);
}
}

View file

@ -1,91 +0,0 @@
package me.totalfreedom.tfguilds.command;
import me.totalfreedom.tfguilds.Common;
import me.totalfreedom.tfguilds.guild.Guild;
import me.totalfreedom.tfguilds.guild.GuildRank;
import org.apache.commons.lang.StringUtils;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.entity.Player;
public class SetRankSubcommand extends Common implements CommandExecutor
{
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args)
{
if (args.length == 1)
{
sender.sendMessage(tl(PREFIX + "Proper usage: /g setrank <player> <rank | none>"));
return true;
}
if (sender instanceof ConsoleCommandSender)
{
sender.sendMessage(NO_PERMS);
return true;
}
Player player = (Player)sender;
Guild guild = Guild.getGuild(player);
if (guild == null)
{
sender.sendMessage(ChatColor.RED + "You aren't in a guild!");
return true;
}
if (!guild.hasModerator(player.getName()))
{
sender.sendMessage(ChatColor.RED + "You can't change the ranks of your guild members!");
return true;
}
Player r = Bukkit.getPlayer(args[1]);
if (r == null)
{
sender.sendMessage(PNF);
return true;
}
if (!guild.hasMember(r.getName()))
{
sender.sendMessage(ChatColor.RED + "This player is not in your guild!");
return true;
}
String name = StringUtils.join(args, " ", 2, args.length);
if (name.toLowerCase().equals("none"))
{
for (GuildRank gr : guild.getRanks())
{
gr.getMembers().remove(r.getName());
}
sender.sendMessage(tl(PREFIX + "Removed the rank of %s%" + r.getName() + "%p% in your guild."));
r.sendMessage(tl("%p%Your rank in your guild has been removed."));
guild.save();
return true;
}
GuildRank rank = guild.getRank(name);
if (rank == null)
{
sender.sendMessage(ChatColor.RED + "A rank of that name does not exist in the guild!");
return true;
}
for (GuildRank gr : guild.getRanks())
{
gr.getMembers().remove(r.getName());
}
rank.getMembers().add(r.getName());
sender.sendMessage(tl(PREFIX + "Set the rank of %s%" + r.getName() + "%p% in your guild to %s%" + rank.getName() + "%p%."));
r.sendMessage(tl("%p%Your rank in your guild has been set to %s%" + rank.getName() + "%p%."));
guild.save();
return true;
}
}

View file

@ -0,0 +1,53 @@
package me.totalfreedom.tfguilds.command;
import me.totalfreedom.tfguilds.Common;
import me.totalfreedom.tfguilds.guild.Guild;
import org.apache.commons.lang.StringUtils;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class SetStateSubCommand extends Common implements SubCommand
{
@Override
public void execute(CommandSender sender, Player playerSender, String[] args)
{
if (!(sender instanceof Player))
{
sender.sendMessage(IN_GAME_ONLY);
return;
}
if (args.length != 2)
{
sender.sendMessage(USAGE + "/g setstate <state>");
return;
}
Guild guild = Guild.getGuild(playerSender);
if (guild == null)
{
sender.sendMessage(NOT_IN_GUILD);
return;
}
if (!guild.isModerator(playerSender))
{
sender.sendMessage(PREFIX + "Only guild moderators can change the state.");
return;
}
Guild.State state = Guild.State.fromString(args[1]);
if (state == null)
{
sender.sendMessage(PREFIX + ChatColor.GOLD + args[1] + ChatColor.GRAY + " is not a valid state. Available options: "
+ ChatColor.GOLD + StringUtils.join(Guild.State.values(), ", "));
return;
}
guild.setState(state);
sender.sendMessage(PREFIX + "Successfully set the guild state to " + ChatColor.GOLD + state.name());
guild.broadcast(PREFIX + ChatColor.GOLD + sender.getName() + ChatColor.GRAY + " has set the guild state to " + ChatColor.GOLD + state.name());
}
}

View file

@ -1,87 +0,0 @@
package me.totalfreedom.tfguilds.command;
import me.totalfreedom.tfguilds.Common;
import me.totalfreedom.tfguilds.guild.Guild;
import me.totalfreedom.tfguilds.guild.GuildState;
import me.totalfreedom.tfguilds.util.GUtil;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.entity.Player;
public class SetStateSubcommand extends Common implements CommandExecutor
{
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args)
{
if (args.length == 1)
{
sender.sendMessage(tl(PREFIX + "Proper usage: /g setstate <open | invite | closed>"));
return true;
}
if (args.length == 3)
{
if (!plugin.bridge.isAdmin(sender))
{
sender.sendMessage(NO_PERMS);
return true;
}
Guild guild = Guild.getGuild(args[1]);
if (guild == null)
{
sender.sendMessage(ChatColor.RED + "That guild doesn't exist!");
return true;
}
GuildState state = GuildState.findState(args[2]);
if (state == null)
{
sender.sendMessage(ChatColor.RED + "That is not a valid state!");
return true;
}
guild.setState(state);
sender.sendMessage(tl(PREFIX + "Set the guild state to %s%" + state.getDisplay().toLowerCase() + "%p% in %s%" + GUtil.colorize(guild.getName()) + "%p%."));
guild.broadcast(tl("%p%The guild is now %s%" + state.getDisplay().toLowerCase() + "%p%."));
guild.save();
return true;
}
if (sender instanceof ConsoleCommandSender)
{
sender.sendMessage(NO_PERMS);
return true;
}
Player player = (Player)sender;
Guild guild = Guild.getGuild(player);
if (guild == null)
{
sender.sendMessage(ChatColor.RED + "You aren't in a guild!");
return true;
}
if (!guild.hasModerator(player.getName()))
{
sender.sendMessage(ChatColor.RED + "You can't change the state of the guild!");
return true;
}
GuildState state = GuildState.findState(args[1]);
if (state == null)
{
sender.sendMessage(ChatColor.RED + "That is not a valid state!");
return true;
}
guild.setState(state);
sender.sendMessage(tl(PREFIX + "Set the guild state to %s%" + state.getDisplay().toLowerCase() + "%p% in your guild."));
guild.broadcast(tl("%p%The guild is now %s%" + state.getDisplay().toLowerCase() + "%p%."));
guild.save();
return true;
}
}

View file

@ -0,0 +1,57 @@
package me.totalfreedom.tfguilds.command;
import me.totalfreedom.tfguilds.Common;
import me.totalfreedom.tfguilds.guild.Guild;
import org.apache.commons.lang.StringUtils;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class SetWarpSubCommand extends Common implements SubCommand
{
@Override
public void execute(CommandSender sender, Player playerSender, String[] args)
{
if (!(sender instanceof Player))
{
sender.sendMessage(IN_GAME_ONLY);
return;
}
if (args.length < 2)
{
sender.sendMessage(USAGE + "/g setwarp <name>");
return;
}
Guild guild = Guild.getGuild(playerSender);
if (guild == null)
{
sender.sendMessage(NOT_IN_GUILD);
return;
}
if (!guild.isModerator(playerSender))
{
sender.sendMessage(PREFIX + "You must be a guild moderator or owner to create a warp for the guild.");
return;
}
String name = StringUtils.join(args, " ", 1, args.length);
if (!StringUtils.isAlphanumericSpace(name))
{
sender.sendMessage(PREFIX + "The name must be alphanumeric.");
return;
}
if (guild.hasWarp(name))
{
sender.sendMessage(PREFIX + "A warp with that name already exist.");
return;
}
guild.addWarp(name, playerSender.getLocation());
sender.sendMessage(PREFIX + "A warp with the name " + ChatColor.GOLD + name + ChatColor.GRAY + " has been successfully created.");
}
}

View file

@ -0,0 +1,10 @@
package me.totalfreedom.tfguilds.command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public interface SubCommand
{
void execute(CommandSender sender, Player playerSender, String[] args);
}

View file

@ -1,57 +1,50 @@
package me.totalfreedom.tfguilds.command; package me.totalfreedom.tfguilds.command;
import java.util.UUID;
import me.totalfreedom.tfguilds.Common; import me.totalfreedom.tfguilds.Common;
import me.totalfreedom.tfguilds.util.GLog; import me.totalfreedom.tfguilds.TFGuilds;
import org.bukkit.Bukkit; import org.bukkit.ChatColor;
import org.bukkit.OfflinePlayer;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
public class TFGuildsCommand extends Common implements CommandExecutor public class TFGuildsCommand extends Common implements CommandExecutor
{ {
@Override @Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args)
{ {
if (args.length > 1) if (args.length > 1)
{ {
return false; return false;
} }
if (args.length == 1) if (args.length == 1 && args[0].equalsIgnoreCase("reload"))
{ {
if (args[0].toLowerCase().equals("reload")) if (!tfmBridge.isAdmin(sender))
{ {
if (!plugin.bridge.isAdmin(sender)) sender.sendMessage(PREFIX + "You do not have the permission.");
{
sender.sendMessage(NO_PERMS);
return true;
}
try
{
plugin.config.load();
plugin.guilds.load();
plugin.players.load();
GLog.info("All configs reloaded successfully");
sender.sendMessage(tl(PREFIX + "All configuration files have been reloaded successfully."));
return true;
}
catch (Exception ex)
{
ex.printStackTrace();
}
return true; return true;
} }
try
{
TFGuilds.getPlugin().getConfig().load();
TFGuilds.getPlugin().getLogger().info("Successfully reload the configuration file.");
sender.sendMessage(PREFIX + "The configuration file have been reloaded successfully.");
return true;
}
catch (Exception ex)
{
ex.printStackTrace();
}
return true;
} }
sender.sendMessage(tl("%p%TFGuilds %s%is a plugin which allows for players to make their own guilds, providing guild chat, guild teleportation, and more.")); sender.sendMessage(ChatColor.AQUA + "TFGuilds " + ChatColor.GRAY + "is a plugin which allows players to create their own guilds, provide guild chat, guild teleportation and many more.");
sender.sendMessage(tl("%s%Version %p%v" + plugin.getDescription().getVersion())); sender.sendMessage(ChatColor.GRAY + "Version " + ChatColor.GOLD + TFGuilds.getPlugin().getDescription().getVersion());
OfflinePlayer sp = Bukkit.getOfflinePlayer(UUID.fromString("d018f2b8-ce60-4672-a45f-e580e0331299")); sender.sendMessage(ChatColor.GRAY + "Originally created by " + ChatColor.GOLD + "speednt " + ChatColor.GRAY + "and " + ChatColor.GOLD + "supernt");
OfflinePlayer su = Bukkit.getOfflinePlayer(UUID.fromString("53b1512e-3481-4702-9f4f-63cb9c8be6a1")); sender.sendMessage(ChatColor.GRAY + "Developed by " + ChatColor.GOLD + "NotInSync");
sender.sendMessage(tl("%s%Developed by %p%" + sp.getName() + " & " + su.getName())); sender.sendMessage(ChatColor.GRAY + "Source code " + ChatColor.GOLD + "https://github.com/AtlasMediaGroup/TFGuilds");
sender.sendMessage(tl("%s%https://github.com/TFPatches/TFGuilds"));
return true; return true;
} }
} }

View file

@ -1,56 +0,0 @@
package me.totalfreedom.tfguilds.command;
import me.totalfreedom.tfguilds.Common;
import me.totalfreedom.tfguilds.guild.Guild;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.entity.Player;
public class TPSubcommand extends Common implements CommandExecutor
{
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args)
{
if (sender instanceof ConsoleCommandSender)
{
sender.sendMessage(NO_PERMS);
return true;
}
if (args.length != 2)
{
sender.sendMessage(tl(PREFIX + "Proper usage: /g tp <player>"));
return true;
}
Player player = (Player)sender;
Guild guild = Guild.getGuild(player);
if (guild == null)
{
sender.sendMessage(ChatColor.RED + "You aren't in a guild!");
return true;
}
Player to = Bukkit.getPlayer(args[1]);
if (to == null)
{
sender.sendMessage(PNF);
return true;
}
if (!guild.getMembers().contains(to.getName()))
{
sender.sendMessage(ChatColor.RED + "That player is not in your guild.");
return true;
}
player.teleport(to.getLocation());
sender.sendMessage(tl("%p%Teleported to %s%" + to.getName() + "%p%."));
to.sendMessage(tl("%s%" + sender.getName() + " %p%has teleported to you."));
return true;
}
}

View file

@ -0,0 +1,107 @@
package me.totalfreedom.tfguilds.command;
import me.totalfreedom.tfguilds.Common;
import me.totalfreedom.tfguilds.config.ConfigEntry;
import me.totalfreedom.tfguilds.guild.Guild;
import me.totalfreedom.tfguilds.util.GUtil;
import org.apache.commons.lang.StringUtils;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class TagSubCommand extends Common implements SubCommand
{
@Override
public void execute(CommandSender sender, Player playerSender, String[] args)
{
if (!(sender instanceof Player))
{
sender.sendMessage(IN_GAME_ONLY);
return;
}
if (args.length < 2)
{
sender.sendMessage(USAGE + "/g tag <set <tag> | clear [guild]>");
return;
}
Guild guild = Guild.getGuild(playerSender);
if (guild == null)
{
sender.sendMessage(NOT_IN_GUILD);
return;
}
if (!guild.getOwner().equals(playerSender.getUniqueId()))
{
sender.sendMessage(PREFIX + "Only the guild owner can edit the guild's tag.");
return;
}
if (!guild.canUseTag())
{
sender.sendMessage(PREFIX + "You may not edit or clear your guild tag, please contact an admin if this is an error.");
return;
}
if (args.length >= 3)
{
if (args[1].equalsIgnoreCase("set"))
{
int length = ConfigEntry.GUILD_TAG_MAX_LENGTH.getInteger();
String tag = StringUtils.join(args, " ", 2, args.length);
tag = tag.replace("%tag%", guild.getName());
if (GUtil.removeColorCodes(tag).length() > length && length > 0)
{
sender.sendMessage(PREFIX + "The guild tag cannot go over " + length + " characters limit.");
return;
}
if (GUtil.containsBlacklistedWord(tag) && tfmBridge.isAdmin(sender))
{
sender.sendMessage(PREFIX + "The guild tag contains forbidden word(s).");
return;
}
guild.setTag(tag);
sender.sendMessage(PREFIX + "The guild tag has been changed to " + ChatColor.GOLD + GUtil.colorize(tag).replace("%rank%", "Guild Owner"));
}
else if (args[1].equalsIgnoreCase("clear"))
{
if (!tfmBridge.isAdmin(sender))
{
sender.sendMessage(PREFIX + "You do not have the permission to use this command.");
return;
}
guild = Guild.getGuild(StringUtils.join(args, " ", 2, args.length));
if (guild == null)
{
sender.sendMessage(PREFIX + "That guild does not exist.");
return;
}
guild.setTag(null);
sender.sendMessage(PREFIX + "Successfully cleared the guild tag for " + ChatColor.GOLD + guild.getName());
return;
}
else
{
sender.sendMessage(USAGE + "/g tag <set <tag> | clear [guild]>");
}
return;
}
if (args[1].equalsIgnoreCase("clear"))
{
guild.setTag(null);
sender.sendMessage(PREFIX + "Successfully cleared the guild tag.");
}
else
{
sender.sendMessage(USAGE + "/g tag <set <tag> | clear [guild]>");
}
}
}

View file

@ -1,107 +0,0 @@
package me.totalfreedom.tfguilds.command;
import me.totalfreedom.tfguilds.Common;
import me.totalfreedom.tfguilds.guild.Guild;
import me.totalfreedom.tfguilds.util.GUtil;
import org.apache.commons.lang.StringUtils;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.entity.Player;
public class TagSubcommand extends Common implements CommandExecutor
{
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args)
{
if (sender instanceof ConsoleCommandSender)
{
sender.sendMessage(NO_PERMS);
return true;
}
if (args.length < 2)
{
sender.sendMessage(tl(PREFIX + "Proper usage: /g tag <set <tag> | clear [guild]>>"));
return true;
}
Player player = (Player)sender;
Guild guild = Guild.getGuild(player);
if (guild == null)
{
sender.sendMessage(ChatColor.RED + "You aren't in a guild!");
return true;
}
if (!guild.getOwner().equals(player.getName()))
{
sender.sendMessage(ChatColor.RED + "You can't modify your guild's tag!");
return true;
}
if (args.length >= 3)
{
if (args[1].equalsIgnoreCase("set"))
{
String tag = StringUtils.join(args, " ", 2, args.length);
tag = tag.replace("%tag%", guild.getName());
if (tag.length() > 30)
{
player.sendMessage(ChatColor.RED + "Your guild tag must not be over 30 characters.");
return true;
}
for (String blacklisted : GUtil.BLACKLISTED_NAMES_AND_TAGS)
{
if (tag.equalsIgnoreCase(blacklisted))
{
if (!plugin.bridge.isAdmin(player))
{
player.sendMessage(ChatColor.RED + "You may not use that name.");
return true;
}
}
}
guild.setTag(tag);
guild.save();
sender.sendMessage(tl("%p%Your guild tag has been changed to be \"" + GUtil.colorize(tag).replace("%rank%", "Guild Owner") + "%p%\"."));
return true;
}
}
if (args[1].equalsIgnoreCase("clear"))
{
if (args.length >= 3)
{
if (!plugin.bridge.isAdmin(sender))
{
sender.sendMessage(NO_PERMS);
return true;
}
Guild g = Guild.getGuild(GUtil.flatten(StringUtils.join(args, " ", 2, args.length)));
if (g == null)
{
sender.sendMessage(ChatColor.RED + "That guild doesn't exist!");
return true;
}
g.setTag(null);
g.save();
sender.sendMessage(tl("%p%Cleared guild tag for " + g.getName() + "."));
return true;
}
guild.setTag(null);
guild.save();
sender.sendMessage(tl("%p%Your guild tag has been cleared."));
}
return true;
}
}

View file

@ -0,0 +1,46 @@
package me.totalfreedom.tfguilds.command;
import me.totalfreedom.tfguilds.Common;
import me.totalfreedom.tfguilds.guild.User;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class ToggleChatSubCommand extends Common implements SubCommand
{
@Override
public void execute(CommandSender sender, Player playerSender, String[] args)
{
if (!(sender instanceof Player))
{
sender.sendMessage(NOT_IN_GUILD);
return;
}
if (args.length > 1)
{
sender.sendMessage(USAGE + "/g togglechat");
return;
}
User user = User.getUserFromPlayer(playerSender);
if (user == null)
{
user = User.create(playerSender);
}
// Must use this otherwise the subcommand will not work properly, unlike ToggleTagSubCommand.java
boolean enabled = user.displayChat();
if (enabled)
{
user.setDisplayChat(false);
sender.sendMessage(PREFIX + ChatColor.GOLD + "Disabled" + ChatColor.GRAY + " personal guild chat.");
}
else
{
user.setDisplayChat(true);
sender.sendMessage(PREFIX + ChatColor.GOLD + "Enabled" + ChatColor.GRAY + " personal guild chat.");
}
}
}

View file

@ -0,0 +1,36 @@
package me.totalfreedom.tfguilds.command;
import me.totalfreedom.tfguilds.Common;
import me.totalfreedom.tfguilds.guild.User;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class ToggleTagSubCommand extends Common implements SubCommand
{
@Override
public void execute(CommandSender sender, Player playerSender, String[] args)
{
if (!(sender instanceof Player))
{
sender.sendMessage(NOT_IN_GUILD);
return;
}
if (args.length > 1)
{
sender.sendMessage(USAGE + "/g toggletag");
return;
}
User user = User.getUserFromPlayer(playerSender);
if (user == null)
{
user = User.create(playerSender);
}
user.setDisplayTag(!user.displayTag());
sender.sendMessage(PREFIX + ChatColor.GOLD + (user.displayTag() ? "Enabled" : "Disabled") + ChatColor.GRAY + " personal guild tag.");
}
}

View file

@ -1,83 +0,0 @@
package me.totalfreedom.tfguilds.command;
import me.totalfreedom.tfguilds.Common;
import me.totalfreedom.tfguilds.guild.Guild;
import me.totalfreedom.tfguilds.util.GUtil;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.entity.Player;
public class ToggleTagSubcommand extends Common implements CommandExecutor
{
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args)
{
if (args.length > 2)
{
sender.sendMessage(tl(PREFIX + "Proper usage: /g toggletag [player]"));
return true;
}
if (args.length == 2)
{
if (!plugin.bridge.isAdmin(sender))
{
sender.sendMessage(NO_PERMS);
return true;
}
Player player = Bukkit.getPlayer(args[1]);
if (player == null)
{
sender.sendMessage(PNF);
return true;
}
boolean enabled = plugin.players.getBoolean(player.getName() + ".tag");
if (!plugin.players.contains(player.getName()) || enabled)
{
plugin.players.set(player.getName() + ".tag", false);
plugin.players.save();
sender.sendMessage(tl(PREFIX + "Disabled personal guild tag for " + player.getName() + "."));
return true;
}
plugin.players.set(player.getName() + ".tag", true);
plugin.players.save();
sender.sendMessage(tl(PREFIX + "Enabled personal guild tag for " + player.getName() + "."));
return true;
}
if (sender instanceof ConsoleCommandSender)
{
sender.sendMessage(NO_PERMS);
return true;
}
Player player = (Player)sender;
Guild guild = Guild.getGuild(player);
if (guild == null)
{
sender.sendMessage(ChatColor.RED + "You aren't in a guild!");
return true;
}
boolean enabled = plugin.players.getBoolean(player.getName() + ".tag");
if (!plugin.players.contains(player.getName()) || enabled)
{
plugin.players.set(player.getName() + ".tag", false);
plugin.players.save();
sender.sendMessage(tl(PREFIX + "Disabled personal guild tag."));
return true;
}
plugin.players.set(player.getName() + ".tag", true);
plugin.players.save();
sender.sendMessage(tl(PREFIX + "Enabled personal guild tag."));
return true;
}
}

View file

@ -0,0 +1,36 @@
package me.totalfreedom.tfguilds.command;
import me.totalfreedom.tfguilds.Common;
import me.totalfreedom.tfguilds.config.ConfigEntry;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class ToggleTagsSubCommand extends Common implements SubCommand
{
@Override
public void execute(CommandSender sender, Player playerSender, String[] args)
{
if (!tfmBridge.isAdmin(sender))
{
sender.sendMessage(PREFIX + "You do not have the permission.");
return;
}
boolean enabled = ConfigEntry.GUILD_TAGS.getBoolean();
if (enabled)
{
ConfigEntry.GUILD_TAGS.setBoolean(false);
sender.sendMessage(PREFIX + ChatColor.GOLD + "Disabled " + ChatColor.GRAY + "global guild tags.");
Bukkit.broadcastMessage(PREFIX + ChatColor.GOLD + sender.getName() + ChatColor.GRAY + " has globally disabled guild tags.");
}
else
{
ConfigEntry.GUILD_TAGS.setBoolean(true);
sender.sendMessage(PREFIX + ChatColor.GOLD + "Enabled " + ChatColor.GRAY + " global guild tags.");
Bukkit.broadcastMessage(PREFIX + ChatColor.GOLD + sender.getName() + ChatColor.GRAY + " has globally enabled guild tags.");
}
}
}

View file

@ -1,36 +0,0 @@
package me.totalfreedom.tfguilds.command;
import me.totalfreedom.tfguilds.Common;
import me.totalfreedom.tfguilds.config.ConfigEntry;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
public class ToggleTagsSubcommand extends Common implements CommandExecutor
{
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args)
{
if (!plugin.bridge.isAdmin(sender))
{
sender.sendMessage(NO_PERMS);
return true;
}
boolean enabled = ConfigEntry.GUILD_TAGS_ENABLED.getBoolean();
if (enabled)
{
ConfigEntry.GUILD_TAGS_ENABLED.setBoolean(false);
sender.sendMessage(tl(PREFIX + "Globally disabled guild tags."));
broadcast(ChatColor.RED + sender.getName() + " - Globally disabling guild tags");
}
else
{
ConfigEntry.GUILD_TAGS_ENABLED.setBoolean(true);
sender.sendMessage(tl(PREFIX + "Globally enabled guild tags."));
broadcast(ChatColor.RED + sender.getName() + " - Globally enabling guild tags");
}
return true;
}
}

View file

@ -0,0 +1,51 @@
package me.totalfreedom.tfguilds.command;
import me.totalfreedom.tfguilds.Common;
import me.totalfreedom.tfguilds.guild.Guild;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class TpSubCommand extends Common implements SubCommand
{
@Override
public void execute(CommandSender sender, Player playerSender, String[] args)
{
if (!(sender instanceof Player))
{
sender.sendMessage(IN_GAME_ONLY);
return;
}
if (args.length != 2)
{
sender.sendMessage(USAGE + "/g tp <player>");
return;
}
Guild guild = Guild.getGuild(playerSender);
if (guild == null)
{
sender.sendMessage(NOT_IN_GUILD);
return;
}
Player player = Bukkit.getPlayer(args[1]);
if (player == null || tfmBridge.isVanished(player))
{
sender.sendMessage(PLAYER_NOT_FOUND);
return;
}
if (!guild.isMember(player))
{
sender.sendMessage(PLAYER_NOT_IN_GUILD);
return;
}
playerSender.teleport(player);
sender.sendMessage(PREFIX + "Successfully teleported to " + ChatColor.GOLD + player.getName());
}
}

View file

@ -0,0 +1,47 @@
package me.totalfreedom.tfguilds.command;
import me.totalfreedom.tfguilds.Common;
import me.totalfreedom.tfguilds.guild.Guild;
import org.apache.commons.lang.StringUtils;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class WarpSubCommand extends Common implements SubCommand
{
@Override
public void execute(CommandSender sender, Player playerSender, String[] args)
{
if (!(sender instanceof Player))
{
sender.sendMessage(IN_GAME_ONLY);
return;
}
if (args.length < 2)
{
sender.sendMessage(USAGE + "/g warp <name>");
return;
}
Guild guild = Guild.getGuild(playerSender);
if (guild == null)
{
sender.sendMessage(NOT_IN_GUILD);
return;
}
String name = StringUtils.join(args, " ", 1, args.length);
if (!guild.hasWarp(name))
{
sender.sendMessage(PREFIX + "The guild does not have the warp named " + ChatColor.GOLD + name);
return;
}
Location location = guild.getWarp(name);
playerSender.teleport(location);
sender.sendMessage(PREFIX + "Successfully warped to " + ChatColor.GOLD + name);
}
}

View file

@ -0,0 +1,37 @@
package me.totalfreedom.tfguilds.command;
import me.totalfreedom.tfguilds.Common;
import me.totalfreedom.tfguilds.guild.Guild;
import org.apache.commons.lang.StringUtils;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class WarpsSubCommand extends Common implements SubCommand
{
@Override
public void execute(CommandSender sender, Player playerSender, String[] args)
{
if (!(sender instanceof Player))
{
sender.sendMessage(IN_GAME_ONLY);
return;
}
Guild guild = Guild.getGuild(playerSender);
if (guild == null)
{
sender.sendMessage(NOT_IN_GUILD);
return;
}
if (guild.getWarps().isEmpty())
{
sender.sendMessage(PREFIX + "There are no warps.");
return;
}
sender.sendMessage(PREFIX + "Warps (" + guild.getWarps().size() + "): " + ChatColor.GOLD + StringUtils.join(guild.getWarpNames(), ", "));
}
}

View file

@ -1,38 +1,28 @@
package me.totalfreedom.tfguilds.config; package me.totalfreedom.tfguilds.config;
import me.totalfreedom.tfguilds.TFGuilds;
import org.bukkit.configuration.file.YamlConfiguration;
import java.io.File; import java.io.File;
import java.io.IOException;
import me.totalfreedom.tfguilds.TFGuilds;
import org.bukkit.configuration.InvalidConfigurationException;
import org.bukkit.configuration.file.YamlConfiguration;
public class Config extends YamlConfiguration public class Config extends YamlConfiguration
{ {
private final TFGuilds plugin; private final TFGuilds plugin;
private final File file; private final File file;
public Config(String name) public Config(String fileName)
{ {
this.plugin = TFGuilds.getPlugin(); this.plugin = TFGuilds.getPlugin();
this.file = new File(plugin.getDataFolder(), name); this.file = new File(plugin.getDataFolder(), fileName);
if (!file.exists()) if (!file.exists())
{ {
options().copyDefaults(true); plugin.saveResource(fileName, false);
plugin.saveResource(name, false);
} }
load();
}
public void load() load();
{
try
{
super.load(file);
}
catch (Exception e)
{
e.printStackTrace();
}
} }
public void save() public void save()
@ -41,9 +31,21 @@ public class Config extends YamlConfiguration
{ {
super.save(file); super.save(file);
} }
catch (Exception e) catch (IOException ex)
{ {
e.printStackTrace(); ex.printStackTrace();
}
}
public void load()
{
try
{
super.load(file);
}
catch (IOException | InvalidConfigurationException ex)
{
ex.printStackTrace();
} }
} }
} }

View file

@ -1,25 +1,30 @@
package me.totalfreedom.tfguilds.config; package me.totalfreedom.tfguilds.config;
import me.totalfreedom.tfguilds.TFGuilds; import me.totalfreedom.tfguilds.TFGuilds;
import org.bukkit.ChatColor;
public enum ConfigEntry public enum ConfigEntry
{ {
SCHEME_PRIMARY("scheme.primary"),
SCHEME_SECONDARY("scheme.secondary"), GUILD_CHAT_LOGGING("server.guild_chat_logging"),
// Server GUILD_TAGS("server.guild_tags"),
GUILD_CHAT_LOGGING_ENABLED("server.guild_chat_logging.enabled"), GUILD_TAG_MAX_LENGTH("server.guild_tag_max_length"),
GUILD_TAGS_ENABLED("server.guild_tags.enabled"); GLOBAL_TAG_MAX_LENGTH("server.global_tag_max_length"),
CONNECTION_TYPE("settings.connection"),
MYSQL_HOST("mysql.host"),
MYSQL_PORT("mysql.port"),
MYSQL_USERNAME("mysql.username"),
MYSQL_PASSWORD("mysql.password"),
MYSQL_DATABASE("mysql.database");
private final String path; private final String path;
private final Config config;
ConfigEntry(String path) ConfigEntry(String path)
{ {
this.path = path; this.path = path;
this.config = TFGuilds.getPlugin().getConfig();
} }
private static final Config config = TFGuilds.getPlugin().config;
public boolean getBoolean() public boolean getBoolean()
{ {
return config.getBoolean(path); return config.getBoolean(path);
@ -31,8 +36,13 @@ public enum ConfigEntry
config.save(); config.save();
} }
public ChatColor getChatColor() public int getInteger()
{ {
return ChatColor.valueOf(config.getString(path).toUpperCase()); return config.getInt(path);
}
public String getString()
{
return config.getString(path);
} }
} }

File diff suppressed because it is too large Load diff

View file

@ -1,46 +0,0 @@
package me.totalfreedom.tfguilds.guild;
import java.util.List;
import lombok.Getter;
import lombok.Setter;
import me.totalfreedom.tfguilds.TFGuilds;
public class GuildRank
{
private static TFGuilds plugin = TFGuilds.getPlugin();
// owning guild's identifier
@Setter
private String iguild;
// identifier
@Getter
private String identifier;
// name
@Getter
private String name;
// members of this rank
@Getter
private List<String> members;
public GuildRank(String iguild, String identifier, String name, List<String> members)
{
this.identifier = identifier;
this.iguild = iguild;
this.name = name;
this.members = members;
}
public void set()
{
plugin.guilds.set(iguild + ".ranks." + identifier + ".name", name);
plugin.guilds.set(iguild + ".ranks." + identifier + ".members", members);
}
public void delete()
{
plugin.guilds.set(iguild + ".ranks." + identifier, null);
}
}

View file

@ -1,41 +0,0 @@
package me.totalfreedom.tfguilds.guild;
import lombok.Getter;
public enum GuildState
{
OPEN("Open"),
INVITE_ONLY("Invite-only"),
CLOSED("Closed");
@Getter
private final String display;
GuildState(String display)
{
this.display = display;
}
public static GuildState findState(String string)
{
if (string == null)
{
return null;
}
switch (string.toLowerCase())
{
case "open":
case "opened":
return OPEN;
case "invite":
case "inviteonly":
case "invite_only":
return INVITE_ONLY;
case "closed":
case "close":
return CLOSED;
}
return null;
}
}

View file

@ -0,0 +1,156 @@
package me.totalfreedom.tfguilds.guild;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
import me.totalfreedom.tfguilds.TFGuilds;
import org.bukkit.entity.Player;
public class User
{
private static Map<Integer, User> users = new HashMap<>();
//
private final int id;
private final UUID uuid;
private boolean tag;
private boolean chat;
public User(int id, UUID uuid, boolean tag, boolean chat)
{
this.id = id;
this.uuid = uuid;
this.tag = tag;
this.chat = chat;
}
public static User create(Player player)
{
int id = users.size() + 1;
User user = new User(id, player.getUniqueId(), true, true);
users.put(id, user);
user.save(true);
return user;
}
public static void loadAll()
{
Connection connection = TFGuilds.getPlugin().getSQL().getConnection();
try
{
ResultSet set = connection.prepareStatement("SELECT * FROM users").executeQuery();
while (set.next())
{
int id = set.getInt("rowid");
UUID uuid = UUID.fromString(set.getString("uuid"));
boolean tag = set.getBoolean("tag");
boolean chat = set.getBoolean("chat");
users.put(id, new User(id, uuid, tag, chat));
}
TFGuilds.getPlugin().getLogger().info(users.size() + " users loaded!");
}
catch (SQLException ex)
{
ex.printStackTrace();
}
}
public static boolean hasUser(int id)
{
return users.get(id) != null;
}
public static User getUserFromId(int id)
{
if (hasUser(id))
{
return users.get(id);
}
return null;
}
public static User getUserFromUuid(UUID uuid)
{
for (User user : users.values())
{
if (user.getUuid().equals(uuid))
{
return user;
}
}
return null;
}
public static User getUserFromPlayer(Player player)
{
return getUserFromUuid(player.getUniqueId());
}
public int getId()
{
return id;
}
public UUID getUuid()
{
return uuid;
}
public boolean displayTag()
{
return tag;
}
public void setDisplayTag(boolean tag)
{
this.tag = tag;
save();
}
public boolean displayChat()
{
return chat;
}
public void setDisplayChat(boolean chat)
{
this.chat = chat;
save();
}
public void save(boolean newSave)
{
Connection connection = TFGuilds.getPlugin().getSQL().getConnection();
try
{
PreparedStatement statement = newSave ? connection.prepareStatement("INSERT INTO users (`uuid`, `tag`, `chat`) VALUES (?, ?, ?)")
: connection.prepareStatement("UPDATE users SET tag=?, chat=? WHERE rowid=?");
if (newSave)
{
statement.setString(1, uuid.toString());
statement.setBoolean(2, tag);
statement.setBoolean(3, chat);
}
else
{
statement.setBoolean(1, tag);
statement.setBoolean(2, chat);
statement.setInt(3, id);
}
statement.execute();
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
public void save()
{
save(false);
}
}

View file

@ -4,7 +4,7 @@ import me.totalfreedom.tfguilds.Common;
import me.totalfreedom.tfguilds.TFGuilds; import me.totalfreedom.tfguilds.TFGuilds;
import me.totalfreedom.tfguilds.config.ConfigEntry; import me.totalfreedom.tfguilds.config.ConfigEntry;
import me.totalfreedom.tfguilds.guild.Guild; import me.totalfreedom.tfguilds.guild.Guild;
import me.totalfreedom.tfguilds.guild.GuildRank; import me.totalfreedom.tfguilds.guild.User;
import me.totalfreedom.tfguilds.util.GUtil; import me.totalfreedom.tfguilds.util.GUtil;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@ -15,71 +15,48 @@ import org.bukkit.event.player.AsyncPlayerChatEvent;
public class ChatListener implements Listener public class ChatListener implements Listener
{ {
private static final TFGuilds plugin = TFGuilds.getPlugin();
public ChatListener(TFGuilds plugin)
{
plugin.getServer().getPluginManager().registerEvents(this, plugin);
}
@EventHandler(priority = EventPriority.HIGHEST) @EventHandler(priority = EventPriority.HIGHEST)
public void onPlayerChat(AsyncPlayerChatEvent e) public void onPlayerChat(AsyncPlayerChatEvent event)
{ {
Player player = e.getPlayer(); Player player = event.getPlayer();
Guild guild = Guild.getGuild(player); Guild guild = Guild.getGuild(player);
if (guild == null) if (guild == null)
{ {
return; return;
} }
if (Common.IN_GUILD_CHAT.contains(player)) if (Common.GUILD_CHAT.contains(player))
{ {
guild.chat(player.getName(), e.getMessage()); event.setCancelled(true);
e.setCancelled(true); guild.chat(player, event.getMessage(), false);
return; return;
} }
GuildRank rank = null; if (!ConfigEntry.GUILD_TAGS.getBoolean())
for (GuildRank r : guild.getRanks())
{
if (r.getMembers().contains(player.getName()))
{
rank = r;
}
}
String display;
if (rank == null)
{
if (guild.getOwner().equals(player.getName()))
{
display = "Guild Owner";
}
else if (guild.hasModerator(player.getName()))
{
display = "Guild Moderator";
}
else
{
display = "Guild Member";
}
}
else
{
display = rank.getName();
}
if (!ConfigEntry.GUILD_TAGS_ENABLED.getBoolean())
{ {
return; return;
} }
if (plugin.players.contains(player.getName())) User user = User.getUserFromPlayer(player);
if (guild.getTag() != null && user.displayTag())
{ {
if (!plugin.players.getBoolean(player.getName() + ".tag")) int maxLength = ConfigEntry.GLOBAL_TAG_MAX_LENGTH.getInteger();
String tfmTag = TFGuilds.getPlugin().getTfmBridge().getTag(player);
if (tfmTag != null && maxLength > 0)
{ {
return; int length = GUtil.removeColorCodes(tfmTag).length() + GUtil.removeColorCodes(guild.getTag()).length();
if (length > maxLength)
{
TFGuilds.getPlugin().getTfmBridge().clearTag(player);
}
} }
} event.setFormat(GUtil.colorize(guild.getTag().replace("%rank%", guild.getPlayerRank(player))) + ChatColor.RESET + " " + event.getFormat());
if (guild.hasTag())
{
e.setFormat(GUtil.colorize(guild.getTag().replace("%rank%", display)) + ChatColor.RESET + " " + e.getFormat());
} }
} }
} }

View file

@ -1,27 +1,55 @@
package me.totalfreedom.tfguilds.listener; package me.totalfreedom.tfguilds.listener;
import me.totalfreedom.tfguilds.TFGuilds;
import me.totalfreedom.tfguilds.config.ConfigEntry;
import me.totalfreedom.tfguilds.guild.Guild; import me.totalfreedom.tfguilds.guild.Guild;
import me.totalfreedom.tfguilds.guild.User;
import me.totalfreedom.tfguilds.util.GUtil; import me.totalfreedom.tfguilds.util.GUtil;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerJoinEvent;
public class JoinListener implements Listener public class JoinListener implements Listener
{ {
@EventHandler
public void onPlayerJoin(PlayerJoinEvent e) public JoinListener(TFGuilds plugin)
{ {
Player player = e.getPlayer(); plugin.getServer().getPluginManager().registerEvents(this, plugin);
}
@EventHandler(priority = EventPriority.MONITOR)
public void onPlayerJoin(PlayerJoinEvent event)
{
Player player = event.getPlayer();
User user = User.getUserFromPlayer(player);
if (user == null)
{
User.create(player);
}
Guild guild = Guild.getGuild(player); Guild guild = Guild.getGuild(player);
if (guild == null) if (guild == null)
{ {
return; return;
} }
if (guild.hasMOTD()) if (guild.getMotd() != null && !guild.getMotd().isEmpty())
{ {
player.sendMessage(GUtil.colorize(guild.getMotd())); player.sendMessage(guild.getMotd());
}
int maxLength = ConfigEntry.GLOBAL_TAG_MAX_LENGTH.getInteger();
String tfmTag = TFGuilds.getPlugin().getTfmBridge().getTag(player);
if (user.displayTag() && tfmTag != null && guild.getTag() != null && maxLength > 0)
{
int length = GUtil.removeColorCodes(tfmTag).length() + GUtil.removeColorCodes(guild.getTag()).length();
if (length > maxLength)
{
TFGuilds.getPlugin().getTfmBridge().clearTag(player);
}
} }
} }
} }

View file

@ -0,0 +1,116 @@
package me.totalfreedom.tfguilds.sql;
import java.io.File;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import me.totalfreedom.tfguilds.TFGuilds;
import me.totalfreedom.tfguilds.config.ConfigEntry;
public class SQLDatabase
{
private Connection connection;
public SQLDatabase(TFGuilds plugin)
{
String password = ConfigEntry.MYSQL_PASSWORD.getString();
if (password == null)
{
password = "";
}
try
{
switch (ConfigEntry.CONNECTION_TYPE.getString().toLowerCase())
{
case "sqlite":
connection = DriverManager.getConnection("jdbc:sqlite:" + createDBFile(plugin).getAbsolutePath().replace("%20", " "));
break;
case "mysql":
connection = DriverManager.getConnection(String.format("jdbc:mysql://%s:%d/%s",
ConfigEntry.MYSQL_HOST.getString(),
ConfigEntry.MYSQL_PORT.getInteger(),
ConfigEntry.MYSQL_DATABASE.getString()),
ConfigEntry.MYSQL_USERNAME.getString(),
password);
break;
default:
connection = DriverManager.getConnection("jdbc:sqlite:" + createDBFile(plugin).getAbsolutePath().replace("%20", " "));
}
createTables();
plugin.getLogger().info("Connection to the MySQL server established!");
}
catch (SQLException ex)
{
plugin.getLogger().severe("Could not connect to MySQL server!");
}
}
public Connection getConnection()
{
return connection;
}
private void createTables() throws SQLException
{
connection.prepareStatement("CREATE TABLE IF NOT EXISTS `users` (" +
"`uuid` TEXT," +
"`tag` BOOLEAN," +
"`chat` BOOLEAN," +
"`rowid` INTEGER AUTO_INCREMENT PRIMARY KEY)")
.execute();
connection.prepareStatement("CREATE TABLE IF NOT EXISTS `warps` (" +
"`guild_id` TEXT," +
"`name` TEXT," +
"`x` DOUBLE," +
"`y` DOUBLE," +
"`z` DOUBLE," +
"`world` TEXT," +
"`rowid` INTEGER AUTO_INCREMENT PRIMARY KEY)")
.execute();
connection.prepareStatement("CREATE TABLE IF NOT EXISTS `guilds` (" +
"`id` TEXT," +
"`name` TEXT," +
"`owner` TEXT," +
"`moderators` TEXT," +
"`members` TEXT," +
"`tag` TEXT," +
"`default_rank` TEXT," +
"`state` INT," +
"`motd` TEXT," +
"`x` DOUBLE," +
"`y` DOUBLE," +
"`z` DOUBLE," +
"`world` TEXT," +
"`creation` LONG," +
"`usetag` BOOLEAN," +
"`rowid` INTEGER AUTO_INCREMENT PRIMARY KEY)")
.execute();
connection.prepareStatement("CREATE TABLE IF NOT EXISTS `ranks` (" +
"`guild_id` TEXT," +
"`name` TEXT," +
"`members` TEXT," +
"`rowid` INTEGER AUTO_INCREMENT PRIMARY KEY)")
.execute();
}
private File createDBFile(TFGuilds plugin)
{
File file = new File(plugin.getDataFolder(), "database.db");
if (!file.exists())
{
try
{
file.createNewFile();
plugin.getLogger().info("Creating database.db file");
}
catch (IOException e)
{
e.printStackTrace();
}
}
return file;
}
}

View file

@ -1,30 +0,0 @@
package me.totalfreedom.tfguilds.util;
import java.util.logging.Level;
import java.util.logging.Logger;
public class GLog
{
private static final Logger LOGGER = Logger.getLogger("Minecraft");
private static final String PREFIX = "[TFGuilds]";
private static void log(Object o, Level l)
{
LOGGER.log(l, PREFIX + " " + o);
}
public static void info(Object o)
{
log(o, Level.INFO);
}
public static void warn(Object o)
{
log(o, Level.WARNING);
}
public static void severe(Object o)
{
log(o, Level.SEVERE);
}
}

View file

@ -8,60 +8,78 @@ import java.util.List;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import me.totalfreedom.tfguilds.TFGuilds; import me.totalfreedom.tfguilds.TFGuilds;
import org.apache.commons.lang.StringUtils; import net.md_5.bungee.api.ChatColor;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
public class GUtil public class GUtil
{ {
private static final SimpleDateFormat STANDARD = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss");
private static final TFGuilds plugin = TFGuilds.getPlugin();
public static String flatten(String s) private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("EEE d MMM yyyy HH:mm:ss");
{ private static final List<String> BLACKLISTED_NAMES_AND_TAGS = Arrays.asList(
String[] split = s.split(" ");
for (int i = 0; i < split.length; i++)
{
split[i] = ChatColor.stripColor(colorize(split[i].toLowerCase()));
}
return StringUtils.join(split, "_");
}
public static String colorize(String string)
{
Matcher matcher = Pattern.compile("&#[a-f0-9A-F]{6}").matcher(string);
while (matcher.find())
{
String code = matcher.group().replace("&", "");
string = string.replace("&" + code, net.md_5.bungee.api.ChatColor.of(code) + "");
}
string = ChatColor.translateAlternateColorCodes('&', string);
return string;
}
public static String format(long time)
{
Date date = new Date(time);
return STANDARD.format(date);
}
public static List<String> BLACKLISTED_NAMES_AND_TAGS = Arrays.asList(
"admin", "owner", "moderator", "developer", "console", "dev", "staff", "admin", "owner", "moderator", "developer", "console", "dev", "staff",
"mod", "sra", "sta", "sa", "super admin", "telnet admin", "senior admin", "mod", "sra", "sta", "sa", "super admin", "telnet admin", "senior admin",
"trial mod", "trial moderator", "trialmod", "trialmoderator"); "trial mod", "trial moderator", "trialmod", "trialmoderator");
private static final Pattern CHAT_COLOR_FORMAT = Pattern.compile("&([a-fk-or0-9]|#[a-f0-9]{6})", Pattern.CASE_INSENSITIVE);
public static List<String> getPlayerList() public static String colorize(String string)
{ {
List<String> players = new ArrayList<>(); if (string != null)
for (Player player : Bukkit.getOnlinePlayers())
{ {
if (!plugin.bridge.isVanished(player)) Matcher matcher = Pattern.compile("&#[a-f0-9A-F]{6}").matcher(string);
while (matcher.find())
{ {
players.add(player.getName()); String code = matcher.group().replace("&", "");
string = string.replace("&" + code, ChatColor.of(code) + "");
}
string = ChatColor.translateAlternateColorCodes('&', string);
}
return string;
}
public static String removeColorCodes(String string)
{
/*String s = null;
if (string != null)
{
Matcher matcher = CHAT_COLOR_FORMAT.matcher(string);
while (matcher.find())
{
s = string.replaceAll(matcher.group(), "");
}
}*/
return ChatColor.stripColor(string);
}
public static boolean containsBlacklistedWord(String string)
{
for (String blacklist : BLACKLISTED_NAMES_AND_TAGS)
{
if (string.contains(blacklist))
{
return true;
} }
} }
return players; return false;
}
public static List<String> getPlayerNames()
{
List<String> names = new ArrayList<>();
for (Player player : Bukkit.getOnlinePlayers())
{
if (!TFGuilds.getPlugin().getTfmBridge().isVanished(player))
{
names.add(player.getName());
}
}
return names;
}
public static String formatTime(long time)
{
Date date = new Date(time);
return DATE_FORMAT.format(date);
} }
} }

View file

@ -0,0 +1,73 @@
package me.totalfreedom.tfguilds.util;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class PaginationList<T> extends ArrayList<T>
{
private final int epp;
/**
* Defines a new Pagination List.
*
* @param epp Elements per page - how many elements will be included on a page of the list.
*/
public PaginationList(int epp)
{
super();
this.epp = epp;
}
/**
* Defines a new Pagination List.
*
* @param epp Elements per page - how many elements will be included on a page of the list.
* @param elements Elements to add to the list immediately.
*/
@SafeVarargs
public PaginationList(int epp, T... elements)
{
super(Arrays.asList(elements));
this.epp = epp;
}
/**
* @return The number of pages this list holds.
*/
public int getPageCount()
{
return (int)Math.ceil((double)size() / (double)epp);
}
/**
* Get a page from the list.
*
* @param page Page you want to access.
* @return A sublist of only the elements from that page.
*/
public List<T> getPage(int page)
{
if (page < 1 || page > getPageCount())
{
return null;
}
int startIndex = (page - 1) * epp;
int endIndex = Math.min(startIndex + (epp - 1), this.size() - 1);
return subList(startIndex, endIndex + 1);
}
/*@Override
public String toString()
{
StringBuilder res = new StringBuilder();
for (int i = 1; i <= getPageCount(); i++)
{
res.append("Page ").append(i).append(": ").append("\n");
for (T element : getPage(i))
res.append(" - ").append(element).append("\n");
}
return res.toString();
}*/
}

View file

@ -0,0 +1,38 @@
package me.totalfreedom.tfguilds.util;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
public class ReflectionsHelper
{
public static <T> Object getField(T instance, String name) {
try
{
Field f = instance.getClass().getDeclaredField(name);
f.setAccessible(true);
return f.get(instance);
}
catch (NoSuchFieldException | IllegalAccessException e)
{
e.printStackTrace();
}
return null;
}
public static <T> Method getMethod(T instance, String name, Class<?>... parameterTypes) {
try
{
Method f = instance.getClass().getDeclaredMethod(name, parameterTypes);
f.setAccessible(true);
return f;
}
catch (NoSuchMethodException e)
{
e.printStackTrace();
}
return null;
}
}

View file

@ -2,21 +2,30 @@
# TFGuilds - Configuration # TFGuilds - Configuration
# #
server: settings:
# Types: mysql, sqlite
connection: sqlite
server:
# Log guild chat to console? # Log guild chat to console?
guild_chat_logging: guild_chat_logging: true
enabled: true
# Enable guild tags globally? # Enable guild tags globally?
guild_tags_enabled: guild_tags_enabled: true
enabled: true
# Color scheme used for TFGuilds # Maximum guild tag length - 0 for unlimited.
scheme: # Note: chat colors are ignored
guild_tag_max_length: 20
# Primary color # Maximum overall tag length - requires TotalFreedomMod.
primary: GREEN # If the player's tag and guild tag combined exceeds the maximum overall length, guild tag will take priority. 0 for unlimited.
# Note: chat colors are ignored
global_tag_max_length: 30
# Secondary color # MySQL configuration
secondary: DARK_GREEN mysql:
host: localhost
port: 3306
username: root
password: password
database: TFGuilds

View file

@ -1,3 +0,0 @@
#
# Guild data for TFGuilds
#

View file

@ -1,3 +0,0 @@
#
# Player data for TFGuilds
#

View file

@ -2,22 +2,20 @@ name: TFGuilds
version: ${project.version} version: ${project.version}
main: me.totalfreedom.tfguilds.TFGuilds main: me.totalfreedom.tfguilds.TFGuilds
api-version: 1.16 api-version: 1.16
authors: [speed, super] authors: [ Fleek, super, speed ]
description: A guilds plugin for the TotalFreedom server. description: A guilds plugin for the TotalFreedom server.
softdepend:
- TotalFreedomMod
commands: commands:
guild: guild:
description: The main command of TFGuilds. description: A command to manage guilds
usage: /<command> <help> usage: /<command> help
aliases: [g] aliases: [ g ]
guildchat:
description: Talk in chat with your guild.
usage: /<command> [message]
aliases: [gchat]
tfguilds: tfguilds:
description: Information about the plugin. description: An information of TFGuilds plugin
usage: /<command> usage: /<command> [reload]
aliases: [tfg] aliases: [ tfg ]
guildchatspy: guildchatspy:
description: An admin only command which allows for spying on guild chat. description: Spy on guild chat
usage: /<command> usage: /<command>
aliases: [gchatspy, gcs] aliases: [ gchatspy, gcs ]